KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > sapia > regis > gui > Controller


1 package org.sapia.regis.gui;
2
3
4 import javax.swing.JLabel JavaDoc;
5 import javax.swing.JTabbedPane JavaDoc;
6 import javax.swing.JTextField JavaDoc;
7 import javax.swing.JTree JavaDoc;
8 import javax.swing.tree.DefaultMutableTreeNode JavaDoc;
9 import javax.swing.tree.DefaultTreeModel JavaDoc;
10 import javax.swing.tree.MutableTreeNode JavaDoc;
11 import javax.swing.tree.TreePath JavaDoc;
12
13 import org.sapia.gumby.event.EventListener;
14 import org.sapia.gumby.event.EventManager;
15 import org.sapia.regis.Node;
16 import org.sapia.regis.Property;
17 import org.sapia.regis.gui.event.NewNodePropertyCreationEvent;
18 import org.sapia.regis.gui.event.NewNodeSelectionEvent;
19 import org.sapia.regis.gui.event.NodeChangeEvent;
20 import org.sapia.regis.gui.event.NodeCreatedEvent;
21 import org.sapia.regis.gui.event.NodeUpdatedEvent;
22 import org.sapia.regis.gui.event.PropertyCreationEvent;
23 import org.sapia.regis.gui.event.TaskEvent;
24 import org.sapia.regis.gui.model.ModelUtils;
25 import org.sapia.regis.gui.model.NodeModel;
26 import org.sapia.regis.gui.widgets.NewNodePanel;
27 import org.sapia.regis.gui.widgets.NodePanel;
28
29 public class Controller implements EventListener, GuiConsts{
30   
31   public Controller(){
32     EventManager.getInstance().register(TaskEvent.class, this);
33     EventManager.getInstance().register(NodeChangeEvent.class, this);
34     EventManager.getInstance().register(NewNodeSelectionEvent.class, this);
35     EventManager.getInstance().register(PropertyCreationEvent.class, this);
36     EventManager.getInstance().register(NewNodePropertyCreationEvent.class, this);
37     EventManager.getInstance().register(NodeCreatedEvent.class, this);
38   }
39   public void onEvent(Object JavaDoc event) {
40     if(event instanceof TaskEvent){
41       ((TaskEvent)event).execute();
42     }
43     else if(event instanceof NodeChangeEvent){
44       refreshCurrentNodePane(((NodeChangeEvent)event).getNode(), true);
45     }
46     else if(event instanceof NodeUpdatedEvent){
47       refreshCurrentNodePane(((NodeUpdatedEvent)event).getNode(), true);
48     }
49     else if(event instanceof NewNodeSelectionEvent){
50       refreshNewNodePane(true);
51     }
52     else if(event instanceof NewNodePropertyCreationEvent){
53       Property prop = ((NewNodePropertyCreationEvent)event).getProperty();
54       GlobalContext.getInstance().getModelManager().getNewNodeModel().addProperty(prop);
55       refreshNewNodePane(false);
56     }
57     else if(event instanceof PropertyCreationEvent){
58       Property prop = ((PropertyCreationEvent)event).getProperty();
59       GlobalContext.getInstance().getModelManager().getNodeModel().addProperty(prop);
60       refreshCurrentNodePane(
61           GlobalContext.getInstance().getModelManager().getNodeModel().getNode(),
62           false);
63     }
64     else if(event instanceof NodeCreatedEvent){
65       handleNodeCreation(((NodeCreatedEvent)event).getNode());
66     }
67   }
68   
69   private void refreshCurrentNodePane(Node JavaDoc node, boolean clear){
70     if(clear){
71       GlobalContext.getInstance().getModelManager().getNodeModel().setNode(node);
72     }
73     NodePanel panel = (NodePanel)GlobalContext.getInstance().getWidget(NODE_PANE);
74     panel.fireCurrentNodeChange();
75     
76     JLabel JavaDoc title = (JLabel JavaDoc)GlobalContext.getInstance().getWidget(NODE_PANE_TITLE);
77     title.setText("/"+node.getAbsolutePath().toString());
78     
79     JTabbedPane JavaDoc pane = (JTabbedPane JavaDoc)GlobalContext.getInstance().getWidget(TABBED_PANE);
80     pane.setSelectedIndex(0);
81   }
82   
83   private void refreshNewNodePane(boolean clear){
84     NodeModel currentModel = GlobalContext.getInstance().getModelManager().getNodeModel();
85     
86     NewNodePanel panel = (NewNodePanel)GlobalContext.getInstance().getRenderContext().getEnv().get(GuiConsts.NEW_NODE_PANE);
87     if(clear){
88       panel.fireCreateNewNodeForm();
89     }
90     else{
91       panel.fireUpdateNewNodeForm();
92     }
93         
94     JLabel JavaDoc title = (JLabel JavaDoc)GlobalContext.getInstance().getRenderContext().getEnv().get(GuiConsts.NEW_NODE_PANE_TITLE);
95     
96     if(currentModel.getNode() == null){
97       title.setText("/ ");
98     }
99     else{
100       title.setText(currentModel.getNode().getAbsolutePath().toString() + "/ ");
101     }
102   }
103   
104   private void handleNodeCreation(Node JavaDoc node){
105     JTree JavaDoc tree = (JTree JavaDoc)GlobalContext.getInstance().getWidget(TREE);
106
107     synchronized(tree.getTreeLock()){
108       DefaultTreeModel JavaDoc model = (DefaultTreeModel JavaDoc)tree.getModel();
109       TreePath JavaDoc path = tree.getSelectionPath();
110       MutableTreeNode JavaDoc parent = null;
111       if(path == null){
112         parent = (MutableTreeNode JavaDoc)model.getRoot();
113       }
114       else{
115         parent = (MutableTreeNode JavaDoc)path.getLastPathComponent();
116       }
117       DefaultMutableTreeNode JavaDoc child = ModelUtils.buildTreeNodeFrom(node);
118       
119       model.insertNodeInto(
120           child,
121           parent,
122           parent.getChildCount());
123       
124       
125       tree.scrollPathToVisible(new TreePath JavaDoc(child.getPath()));
126       JTabbedPane JavaDoc pane = (JTabbedPane JavaDoc)GlobalContext.getInstance().getWidget(TABBED_PANE);
127       refreshCurrentNodePane(node, true);
128       pane.setSelectedIndex(0);
129       JTextField JavaDoc newNodeName = (JTextField JavaDoc)GlobalContext.getInstance().getWidget(NEW_NODE_PANE_NAME);
130       newNodeName.setText("");
131     }
132   }
133
134 }
135
Popular Tags