01: package org.zilonis.tool.ui;
02:
03: import java.awt.BorderLayout;
04: import java.awt.Color;
05: import java.awt.FlowLayout;
06: import java.awt.event.ActionEvent;
07: import java.awt.event.ActionListener;
08:
09: import javax.swing.JPanel;
10: import javax.swing.event.TreeSelectionEvent;
11: import javax.swing.event.TreeSelectionListener;
12: import javax.swing.tree.TreePath;
13: import javax.swing.tree.TreeSelectionModel;
14:
15: import org.zilonis.network.Token;
16: import org.zilonis.scope.Scope;
17: import org.zilonis.tool.ext.aerith.ui.BackgroundTitle;
18: import org.zilonis.tool.ext.aerith.ui.ScrollableShadowPanel;
19: import org.zilonis.tool.ext.mailman.ui.MailBoxTree;
20: import org.zilonis.tool.ext.mailman.ui.image.ShadowFactory;
21:
22: public class ScopesPanel extends JPanel {
23:
24: private final AnalysisToolParserEventHandler analysisToolParserEventHandler;
25:
26: public ScopesPanel(AnalysisToolParserEventHandler ruleAnalysisPanel) {
27: this .analysisToolParserEventHandler = ruleAnalysisPanel;
28: initComponents();
29: }
30:
31: public void initComponents() {
32: setOpaque(false);
33: setBorder(javax.swing.BorderFactory.createEmptyBorder(2, 2, 2,
34: 2));
35: setLayout(new BorderLayout());
36: JPanel buttonPanel = new JPanel();
37: buttonPanel.setOpaque(false);
38: buttonPanel.setLayout(new FlowLayout());
39: final MailBoxTree m = new MailBoxTree();
40: m.setModel(new ScopeTreeModel());
41: m.setOpaque(false);
42: m.switchExtremeLevel();
43: m.switchExtremeLevel();
44: m.getSelectionModel().setSelectionMode(
45: TreeSelectionModel.SINGLE_TREE_SELECTION);
46: ActionButton addRuleButton = new ActionButton("Add Child");
47: addRuleButton.addActionListener(new ActionListener() {
48: public void actionPerformed(ActionEvent event) {
49: TreePath[] paths = m.getSelectionPaths();
50: if ((paths == null) || (paths.length == 0))
51: return;
52: Scope s = (Scope) paths[0].getLastPathComponent();
53: Scope childScope = s.createChild();
54: analysisToolParserEventHandler.getRete()
55: .getRootBetaMemory().addToken(childScope,
56: new Token());
57: m.setModel(new ScopeTreeModel());
58: }
59: });
60: m.addTreeSelectionListener(new TreeSelectionListener() {
61: public void valueChanged(TreeSelectionEvent e) {
62: Scope scope = (Scope) m.getLastSelectedPathComponent();
63: if (scope == null)
64: return;
65: analysisToolParserEventHandler.setScope(scope);
66: }
67: });
68: addRuleButton.setMain(true);
69: buttonPanel.add(addRuleButton);
70: add(BorderLayout.SOUTH, buttonPanel);
71: JPanel p1 = new JPanel();
72: p1.setOpaque(false);
73: add(BorderLayout.NORTH, new BackgroundTitle("Scopes Tree"));
74: add(BorderLayout.CENTER, p1);
75: ScrollableShadowPanel sp = new ScrollableShadowPanel(m);
76: ShadowFactory factory2 = new ShadowFactory(5, 0.2f, Color.BLACK);
77: //factory.setRenderingHint(ShadowFactory.KEY_BLUR_QUALITY, ShadowFactory.VALUE_BLUR_QUALITY_HIGH);
78: sp.setLayout(new BorderLayout());
79: sp.setShadowFactory(factory2);
80: sp.setDistance(5);
81: sp.setAngle(90f);
82: sp.add(m);
83: p1.add(sp);
84: }
85: }
|