1 19 package org.openharmonise.him.serverconfig.permissions.tree; 20 21 import java.awt.event.MouseAdapter ; 22 import org.w3c.dom.events.MouseEvent ; 23 24 import javax.swing.JTree ; 25 import javax.swing.event.TreeSelectionEvent ; 26 import javax.swing.event.TreeSelectionListener ; 27 import javax.swing.tree.DefaultTreeModel ; 28 import javax.swing.tree.TreePath ; 29 30 37 public class PermissionsTreeSelectionListener extends MouseAdapter implements TreeSelectionListener { 38 39 42 private boolean m_bReentrant=false; 43 44 47 private JTree m_tree; 48 49 54 public PermissionsTreeSelectionListener(JTree tree) { 55 super(); 56 this.m_tree = tree; 57 } 58 59 62 public void valueChanged(TreeSelectionEvent tse) { 63 if(!this.m_bReentrant) { 64 this.m_bReentrant = true; 65 Object 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 84 public void mouseClicked(MouseEvent e) { 85 int x = e.getClientX(); 86 int y = e.getClientY(); 87 int row = m_tree.getRowForLocation(x, y); 88 TreePath 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 )m_tree.getModel()).nodeChanged(node); 95 if (row == 0) { 97 m_tree.revalidate(); 98 m_tree.repaint(); 99 } 100 } 101 } 102 } 103 104 } 105 | Popular Tags |