/** * Copyright 2010 JBoss Inc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.drools.eclipse.rulebuilder.ui; import java.util.Iterator; import java.util.List; import org.drools.ide.common.client.modeldriven.brl.RuleAttribute; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Shell; public class RuleAttributesDialog extends RuleDialog { private RuleModeller modeller; public RuleAttributesDialog(Shell parent, RuleModeller modeller) { super( parent, "Add new option to the rule", "Pick the value from combo." ); this.modeller = modeller; } protected Control createDialogArea(final Composite parent) { Composite composite = (Composite) super.createDialogArea( parent ); GridLayout l = new GridLayout(); l.numColumns = 3; l.marginBottom = 0; l.marginHeight = 0; l.marginLeft = 0; l.marginRight = 0; l.marginTop = 0; l.marginWidth = 0; composite.setLayout( l ); GridData gd = new GridData( GridData.FILL_HORIZONTAL ); gd.horizontalSpan = 2; createAtributesSelectionCombo( composite, gd ); return composite; } private void createAtributesSelectionCombo(Composite composite, GridData gd) { createLabel( composite, "Attributes" ); final Combo combo = new Combo( composite, SWT.READ_ONLY ); combo.setLayoutData( gd ); List attributes = RuleAttributeWidget.getAttributeList(); for ( Iterator iterator = attributes.iterator(); iterator.hasNext(); ) { String attr = (String) iterator.next(); combo.add( attr ); } combo.select( 0 ); combo.addListener( SWT.Selection, new Listener() { public void handleEvent(Event event) { if ( combo.getSelectionIndex() == 0 ) { return; } modeller.getModel().addAttribute( new RuleAttribute( combo.getText(), "" ) ); modeller.setDirty( true ); modeller.reloadOptions(); close(); } } ); } }