Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: it/rabellino/toska/gui/KeysTree.java


1   package it.rabellino.toska.gui;
2   
3   import it.rabellino.toska.ConfigHandler;
4   import it.rabellino.toska.Host;
5   import it.rabellino.toska.Key;
6   import it.rabellino.toska.User;
7   import java.awt.event.MouseEvent;
8   import java.awt.event.MouseListener;
9   import java.util.HashMap;
10  import java.util.Iterator;
11  import java.util.Vector;
12  
13  import javax.swing.JPopupMenu;
14  import javax.swing.JTree;
15  import javax.swing.event.TreeSelectionEvent;
16  import javax.swing.event.TreeSelectionListener;
17  import javax.swing.tree.DefaultMutableTreeNode;
18  import javax.swing.tree.DefaultTreeModel;
19  import javax.swing.tree.TreePath;
20  import org.apache.avalon.framework.activity.Initializable;
21  import org.apache.avalon.framework.component.Component;
22  import org.apache.avalon.framework.component.ComponentException;
23  import org.apache.avalon.framework.component.ComponentManager;
24  import org.apache.avalon.framework.component.Composable;
25  import org.apache.avalon.framework.context.Context;
26  import org.apache.avalon.framework.context.ContextException;
27  import org.apache.avalon.framework.context.Contextualizable;
28  import org.apache.avalon.framework.context.DefaultContext;
29  import org.apache.avalon.framework.logger.LogEnabled;
30  import org.apache.avalon.framework.logger.Logger;
31  
32  /**
33   * @author <a href="gianugo@apache.org">Gianugo Rabellino</a>
34   *
35   */
36  public class KeysTree 
37    extends 
38      JTree 
39    implements
40      Component,
41      Composable,
42      Contextualizable,
43      Initializable, 
44      LogEnabled,
45      TreeSelectionListener, 
46      MouseListener {
47      
48    public static String ROLE = "it.rabellino.toska.gui.KeysTree";  
49  
50    private DefaultMutableTreeNode root;
51    private ConfigHandler handler;
52    private KeysAdmin admin;
53    private DefaultContext context;
54    private ComponentManager manager;
55    private Logger logger;
56    private PopupMenuManager popupFactory;
57  
58  
59    /**
60     * Empty constructor, as per Avalon specs
61     * 
62     */
63    public KeysTree() {
64     super(new DefaultMutableTreeNode("Toska"));
65  
66     this.putClientProperty("JTree.lineStyle", "Angled");
67     // Shameless hack
68     
69     this.root = (DefaultMutableTreeNode)getModel().getRoot();
70     this.addMouseListener(this);
71     
72    }
73  
74    
75    public void populateTree(ConfigHandler handler) {
76      this.handler = handler;
77      root.removeAllChildren();
78  
79      logger.debug("Adding \"Keys\" node to root");
80      DefaultMutableTreeNode keysNode = new DefaultMutableTreeNode("Keys"); 
81      keysNode.setUserObject(new String("Keys"));
82      logger.debug("Adding \"Hosts\" node to root");
83      DefaultMutableTreeNode hostsNode = new DefaultMutableTreeNode("Hosts");
84      hostsNode.setUserObject(new String("Hosts"));
85  
86      Iterator keysIterator;
87      if (handler.getKeys() != null) {
88        keysIterator = handler.getKeys().values().iterator();
89      } else { 
90        keysIterator = new Vector().iterator();
91      }
92        
93      while (keysIterator.hasNext()) {
94        Key userKey = (Key) keysIterator.next();
95        
96        DefaultMutableTreeNode userKeyNode = new DefaultMutableTreeNode(userKey);
97        keysNode.add(userKeyNode);
98      }
99      
100     Iterator hosts;
101     
102     if (handler.getHosts() != null) {
103       hosts = handler.getHosts().values().iterator();
104     } else {
105       hosts = new HashMap().values().iterator();
106     }
107     
108     while (hosts.hasNext()) {
109       Host host = (Host) hosts.next();
110       DefaultMutableTreeNode hostNode = 
111         new DefaultMutableTreeNode(host);
112 
113       Iterator users = host.getUsers().values().iterator();
114       while (users.hasNext()) {
115         User user = (User) users.next();
116         DefaultMutableTreeNode userNode = 
117           new DefaultMutableTreeNode(user);
118 
119         hostNode.add(userNode);
120             
121         Iterator keys = user.getKeys().values().iterator();
122         while (keys.hasNext()) {
123           Key key = (Key) keys.next();
124           if(!key.isDisabled()) {
125             DefaultMutableTreeNode keyNode = 
126               new DefaultMutableTreeNode(key);
127             userNode.add(keyNode);
128           }
129             
130         }
131       }
132       
133       hostsNode.add(hostNode);
134         
135     }
136     root.add(keysNode);
137     root.add(hostsNode);
138     
139     ((DefaultTreeModel)this.getModel()).nodeStructureChanged(root);
140 
141   }
142 
143   /**
144    * @see TreeSelectionListener#valueChanged(TreeSelectionEvent)
145    */
146   public void valueChanged(TreeSelectionEvent tse) {
147     DefaultMutableTreeNode node = (DefaultMutableTreeNode)this.getLastSelectedPathComponent();
148 
149     Object selected = node.getUserObject();
150     
151     if (selected instanceof Host) {
152       Host host = (Host) selected;
153       host.getName();
154     }
155 
156   }
157   
158   public void mouseReleased(MouseEvent evt) {
159     if (evt.isPopupTrigger()) {
160       int x = evt.getX();
161       int y = evt.getY();
162       TreePath path = getPathForLocation(x, y);
163       DefaultMutableTreeNode currentNode = 
164         (DefaultMutableTreeNode)path.getLastPathComponent();
165       //JPopupMenu menu = new JPopupMenu();
166      
167       
168       JPopupMenu menu = popupFactory.getMenu(currentNode);         
169       menu.show(this, x, y);
170 
171       
172     }
173   
174   
175   }
176   
177   public void mouseClicked(MouseEvent evt) {}
178   
179   public void mousePressed(MouseEvent evt) {
180     if (evt.isPopupTrigger()) {
181       int x = evt.getX();
182       int y = evt.getY();
183       TreePath path = getPathForLocation(x, y);
184       DefaultMutableTreeNode currentNode = 
185         (DefaultMutableTreeNode)path.getLastPathComponent();
186       //JPopupMenu menu = new JPopupMenu();
187      
188       
189       JPopupMenu menu = popupFactory.getMenu(currentNode);         
190       menu.show(this, x, y);
191 
192       
193     }
194   
195   
196   }
197 
198   public void mouseEntered(MouseEvent evt) {}
199     
200   public void mouseExited(MouseEvent evt) {}
201 
202   /**
203    * @see Contextualizable#contextualize(Context)
204    */
205   public void contextualize(Context context) throws ContextException {
206     this.context = (DefaultContext)context;
207     this.context.put(Constants.KEYS_TREE, this);
208   }
209 
210   /**
211    * @see Initializable#initialize()
212    */
213   public void initialize() throws Exception {
214     popupFactory = (PopupMenuManager)manager.lookup(PopupMenuManager.ROLE);
215     this.setCellRenderer(new KeysTreeCellRenderer());
216     this.populateTree((ConfigHandler)context.get(Constants.CONFIGHANDLER));
217   }
218 
219   /**
220    * @see LogEnabled#enableLogging(Logger)
221    */
222   public void enableLogging(Logger logger) {
223     this.logger = logger;
224   }
225 
226   /**
227    * @see Composable#compose(ComponentManager)
228    */
229   public void compose(ComponentManager manager) throws ComponentException {
230     this.manager = manager;
231   }
232 
233 }