01: package org.drools.eclipse.rulebuilder.ui;
02:
03: import org.drools.brms.client.modeldriven.SuggestionCompletionEngine;
04: import org.drools.brms.client.modeldriven.brl.ActionInsertFact;
05: import org.drools.brms.client.modeldriven.brl.ActionFieldValue;
06: import org.eclipse.swt.SWT;
07: import org.eclipse.swt.widgets.Combo;
08: import org.eclipse.swt.widgets.Composite;
09: import org.eclipse.swt.widgets.Control;
10: import org.eclipse.swt.widgets.Event;
11: import org.eclipse.swt.widgets.Listener;
12: import org.eclipse.swt.widgets.Shell;
13:
14: /**
15: *
16: * @author Anton Arhipov
17: * @author Ahti Kitsik
18: *
19: */
20: public class AddNewInsertedFactFieldDialog extends RuleDialog {
21:
22: private RuleModeller modeller;
23:
24: private final ActionInsertFact fact;
25:
26: public AddNewInsertedFactFieldDialog(Shell parent,
27: RuleModeller modeller, ActionInsertFact fact) {
28: super (parent, "Add new condition to the rule",
29: "Pick the values from combos and confirm the selection.");
30: this .modeller = modeller;
31: this .fact = fact;
32: }
33:
34: protected Control createDialogArea(final Composite parent) {
35:
36: Composite composite = (Composite) super
37: .createDialogArea(parent);
38:
39: createLabel(composite, "Field:");
40:
41: final Combo factsCombo = new Combo(composite, SWT.READ_ONLY);
42:
43: String[] fields = getCompletion().getFieldCompletions(
44: fact.factType);
45: factsCombo.add("...");
46: for (int i = 0; i < fields.length; i++) {
47: factsCombo.add(fields[i]);
48: }
49: factsCombo.select(0);
50:
51: factsCombo.addListener(SWT.Selection, new Listener() {
52: public void handleEvent(Event event) {
53:
54: if (factsCombo.getSelectionIndex() == 0) {
55: return;
56: }
57:
58: String fieldType = modeller
59: .getSuggestionCompletionEngine().getFieldType(
60: fact.factType, factsCombo.getText());
61: fact.addFieldValue(new ActionFieldValue(factsCombo
62: .getText(), "", fieldType));
63:
64: modeller.setDirty(true);
65: modeller.reloadRhs();
66: close();
67: }
68: });
69:
70: return composite;
71: }
72:
73: public SuggestionCompletionEngine getCompletion() {
74: return modeller.getSuggestionCompletionEngine();
75: }
76:
77: }
|