01: package org.zilonis.tool.ui;
02:
03: import java.io.PrintStream;
04: import java.util.HashMap;
05: import java.util.LinkedList;
06:
07: import javax.swing.JTabbedPane;
08:
09: import org.zilonis.network.Condition;
10: import org.zilonis.network.Rete;
11: import org.zilonis.parser.gen.ZilonisParser;
12: import org.zilonis.scope.Scope;
13: import org.zilonis.shell.GenericEventHandler;
14: import org.zilonis.shell.util.Entity;
15: import org.zilonis.symbol.Triplet;
16:
17: import antlr.collections.AST;
18:
19: public class AnalysisToolParserEventHandler extends GenericEventHandler {
20: private JTabbedPane rulesPanel;
21: private WMEPanel wmePanel;
22:
23: private boolean linked = true;
24:
25: public AnalysisToolParserEventHandler(Rete rete) {
26: super (rete);
27: }
28:
29: public void setWMEPanel(WMEPanel wmePanel) {
30: this .wmePanel = wmePanel;
31: }
32:
33: public void setRulesPanel(JTabbedPane rulesPanel) {
34: this .rulesPanel = rulesPanel;
35: }
36:
37: public Scope getScope() {
38: return scope;
39: }
40:
41: @Override
42: public void setScope(Scope scope) {
43: Scope oldScope = this .scope;
44: super .setScope(scope);
45: console.println("\nScope changed from: " + oldScope);
46: console.println("to:" + scope);
47: console.print("$ ");
48: }
49:
50: @Override
51: public Condition defineRule(String name, int salience,
52: AST conditionList, AST actionList) {
53: Condition condition = super .defineRule(name, salience,
54: conditionList, actionList);
55: if (linked) {
56: RulesGraphPanel rulesGraphPanel = new RulesGraphPanel(this );
57: rulesGraphPanel.add(condition);
58: rulesPanel.addTab(name, rulesGraphPanel);
59: rulesPanel.revalidate();
60: rulesPanel.repaint();
61: }
62: return condition;
63: }
64:
65: @Override
66: protected Condition getConditionTemplate(String id,
67: AST conditionTemplate) {
68: if (conditionTemplate.getType() != ZilonisParser.TEST) {
69: AST child = conditionTemplate.getFirstChild();
70: String clazz = child.getText();
71: child = child.getNextSibling();
72: if (child.getType() == ZilonisParser.CONDITION_ATTRIBUTES) {
73: Condition condition = conditionTemplateForClass(id,
74: clazz, child.getFirstChild());
75: LinkedList<String> attributes = new LinkedList<String>();
76: for (Condition c = condition.getNext(); c != null; c = c
77: .getNext()) {
78: attributes.add(c.getTriplet()
79: .get(Triplet.ATTRIBUTE));
80: }
81: WMEMetaData wmeTemplate = new WMEMetaData(clazz,
82: (String[]) attributes.toArray(new String[0]));
83: wmePanel.addWMETemplate(wmeTemplate);
84: }
85: }
86: return super .getConditionTemplate(id, conditionTemplate);
87: }
88:
89: @Override
90: public void unlink() {
91: linked = false;
92: }
93:
94: @Override
95: public void link() {
96: linked = true;
97: }
98: // create a unlink method to not create a graph of the rules
99: }
|