KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > openharmonise > him > serverconfig > permissions > tree > PermissionsTreeSelectionListener


1 /*
2  * The contents of this file are subject to the
3  * Mozilla Public License Version 1.1 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at http://www.mozilla.org/MPL/
6  *
7  * Software distributed under the License is distributed on an "AS IS"
8  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.
9  * See the License for the specific language governing rights and
10  * limitations under the License.
11  *
12  * The Initial Developer of the Original Code is Simulacra Media Ltd.
13  * Portions created by Simulacra Media Ltd are Copyright (C) Simulacra Media Ltd, 2004.
14  *
15  * All Rights Reserved.
16  *
17  * Contributor(s):
18  */

19 package org.openharmonise.him.serverconfig.permissions.tree;
20
21 import java.awt.event.MouseAdapter JavaDoc;
22 import org.w3c.dom.events.MouseEvent JavaDoc;
23
24 import javax.swing.JTree JavaDoc;
25 import javax.swing.event.TreeSelectionEvent JavaDoc;
26 import javax.swing.event.TreeSelectionListener JavaDoc;
27 import javax.swing.tree.DefaultTreeModel JavaDoc;
28 import javax.swing.tree.TreePath JavaDoc;
29
30 /**
31  * Listener for receiving permission tree selected events.
32  *
33  * @author Matthew Large
34  * @version $Revision: 1.1 $
35  *
36  */

37 public class PermissionsTreeSelectionListener extends MouseAdapter JavaDoc implements TreeSelectionListener JavaDoc {
38
39     /**
40      * Re-entry check.
41      */

42     private boolean m_bReentrant=false;
43
44     /**
45      * Tree to listen to.
46      */

47     private JTree JavaDoc m_tree;
48
49     /**
50      * Constructs a new permissions tree listener.
51      *
52      * @param tree tree to listen to.
53      */

54     public PermissionsTreeSelectionListener(JTree JavaDoc tree) {
55         super();
56         this.m_tree = tree;
57     }
58
59     /* (non-Javadoc)
60      * @see javax.swing.event.TreeSelectionListener#valueChanged(javax.swing.event.TreeSelectionEvent)
61      */

62     public void valueChanged(TreeSelectionEvent JavaDoc tse) {
63         if(!this.m_bReentrant) {
64             this.m_bReentrant = true;
65             Object JavaDoc obj = tse.getPath().getLastPathComponent();
66             if(obj instanceof PermissionsTreeNode && ((PermissionsTreeNode)obj).getEnabled() && ((PermissionsTreeNode)obj).isLeaf()) {
67                 PermissionsTreeNode node = (PermissionsTreeNode)obj;
68                 if(node.isSelected()) {
69                     node.setSelected(false);
70                 } else {
71                     node.setSelected(true);
72                 }
73                 this.m_tree.revalidate();
74                 this.m_tree.repaint();
75                 this.m_tree.removeSelectionPath( this.m_tree.getSelectionPath() );
76             }
77             this.m_bReentrant = false;
78         }
79     }
80     
81     /* (non-Javadoc)
82      * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
83      */

84     public void mouseClicked(MouseEvent JavaDoc e) {
85       int x = e.getClientX();
86       int y = e.getClientY();
87       int row = m_tree.getRowForLocation(x, y);
88       TreePath JavaDoc path = m_tree.getPathForRow(row);
89       if (path != null) {
90         PermissionsTreeNode node = (PermissionsTreeNode)path.getLastPathComponent();
91         if(node.getEnabled()) {
92             boolean isSelected = ! (node.isSelected());
93             node.setSelected(isSelected);
94             ((DefaultTreeModel JavaDoc)m_tree.getModel()).nodeChanged(node);
95             // I need revalidate if node is root. but why?
96
if (row == 0) {
97                 m_tree.revalidate();
98                 m_tree.repaint();
99             }
100         }
101       }
102     }
103
104 }
105
Popular Tags