01: package org.drools.eclipse.rulebuilder.ui;
02:
03: import org.drools.brms.client.modeldriven.SuggestionCompletionEngine;
04: import org.drools.brms.client.modeldriven.brl.CompositeFactPattern;
05: import org.drools.brms.client.modeldriven.brl.FactPattern;
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: * Adds new fact pattern to a composite fact
16: *
17: * @author Anton Arhipov
18: * @author Ahti Kitsik
19: */
20: public class AddNewFactConstraintDialog extends RuleDialog {
21:
22: private RuleModeller modeller;
23:
24: private CompositeFactPattern pattern;
25:
26: public AddNewFactConstraintDialog(Shell parent,
27: RuleModeller modeller, CompositeFactPattern pattern) {
28: super (parent, "New fact pattern",
29: "Pick the value from combobox.");
30: this .modeller = modeller;
31: this .pattern = pattern;
32: }
33:
34: protected Control createDialogArea(final Composite parent) {
35: Composite composite = (Composite) super
36: .createDialogArea(parent);
37:
38: createLabel(composite, "Choose fact type");
39:
40: String[] fieldCompletitions = getCompletion().getFactTypes();
41: final Combo factsCombo = new Combo(composite, SWT.READ_ONLY);
42: factsCombo.add("Choose fact type...");
43: for (int i = 0; i < fieldCompletitions.length; i++) {
44: factsCombo.add(fieldCompletitions[i]);
45: }
46: factsCombo.select(0);
47:
48: factsCombo.addListener(SWT.Selection, new Listener() {
49: public void handleEvent(Event event) {
50:
51: if (factsCombo.getSelectionIndex() == 0) {
52: return;
53: }
54:
55: FactPattern factPattern = new FactPattern();
56: factPattern.factType = factsCombo.getText();
57: pattern.addFactPattern(factPattern);
58:
59: modeller.setDirty(true);
60: modeller.reloadLhs();
61: close();
62: }
63: });
64:
65: return composite;
66: }
67:
68: private SuggestionCompletionEngine getCompletion() {
69: return modeller.getSuggestionCompletionEngine();
70: }
71:
72: }
|