/** * 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 org.drools.ide.common.client.modeldriven.SuggestionCompletionEngine; import org.drools.ide.common.client.modeldriven.brl.ActionFieldValue; import org.drools.ide.common.client.modeldriven.brl.ActionInsertFact; import org.eclipse.swt.SWT; 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; /** * * @author Anton Arhipov * @author Ahti Kitsik * */ public class AddNewInsertedFactFieldDialog extends RuleDialog { private RuleModeller modeller; private final ActionInsertFact fact; public AddNewInsertedFactFieldDialog(Shell parent, RuleModeller modeller, ActionInsertFact fact) { super(parent, "Add new condition to the rule", "Pick the values from combos and confirm the selection."); this.modeller = modeller; this.fact = fact; } protected Control createDialogArea(final Composite parent) { Composite composite = (Composite) super.createDialogArea(parent); createLabel(composite, "Field:"); final Combo factsCombo = new Combo(composite, SWT.READ_ONLY); String[] fields = getCompletion().getFieldCompletions(fact.factType); factsCombo.add("..."); for (int i = 0; i < fields.length; i++) { factsCombo.add(fields[i]); } factsCombo.select(0); factsCombo.addListener(SWT.Selection, new Listener() { public void handleEvent(Event event) { if (factsCombo.getSelectionIndex() == 0) { return; } String fieldType = modeller.getSuggestionCompletionEngine() .getFieldType(fact.factType, factsCombo.getText()); fact.addFieldValue(new ActionFieldValue(factsCombo.getText(), "", fieldType)); modeller.setDirty(true); modeller.reloadRhs(); close(); } }); return composite; } public SuggestionCompletionEngine getCompletion() { return modeller.getSuggestionCompletionEngine(); } }