View Javadoc
1 package net.sourceforge.pmd.swingui; 2 3 import net.sourceforge.pmd.swingui.event.RulesEditingEvent; 4 5 import javax.swing.JPanel; 6 import javax.swing.JTabbedPane; 7 import javax.swing.SwingUtilities; 8 import javax.swing.UIManager; 9 import javax.swing.event.ChangeEvent; 10 import javax.swing.event.ChangeListener; 11 import javax.swing.event.TreeSelectionEvent; 12 import javax.swing.event.TreeSelectionListener; 13 import javax.swing.tree.TreePath; 14 15 /*** 16 * 17 * @author Donald A. Leckie 18 * @since August 29, 2002 19 * @version $Revision: 1.14 $, $Date: 2003/05/28 18:08:34 $ 20 */ 21 class RuleEditingTabbedPane extends JTabbedPane { 22 23 private RulesTree m_rulesTree; 24 private RuleAllEditingPanel m_ruleAllPanel; 25 private RuleSetEditingPanel m_ruleSetPanel; 26 private RuleEditingPanel m_rulePanel; 27 private RulePropertyEditingPanel m_rulePropertyPanel; 28 private RulesTreeNode m_currentTreeNode; 29 30 /*** 31 ******************************************************************************* 32 * 33 * @return 34 */ 35 protected RuleEditingTabbedPane(RulesTree rulesTree) { 36 super(JTabbedPane.TOP); 37 38 m_rulesTree = rulesTree; 39 m_ruleAllPanel = new RuleAllEditingPanel(); 40 m_ruleSetPanel = new RuleSetEditingPanel(); 41 m_rulePanel = new RuleEditingPanel(); 42 m_rulePropertyPanel = new RulePropertyEditingPanel(); 43 44 addTab("All", m_ruleAllPanel); 45 addTab("Rule Set", m_ruleSetPanel); 46 addTab("Rule", m_rulePanel); 47 addTab("Property", m_rulePropertyPanel); 48 setFont(UIManager.getFont("tabFont")); 49 50 m_ruleAllPanel.setIsEditing(true); 51 52 rulesTree.addTreeSelectionListener(new RulesTreeSelectionListener()); 53 addChangeListener(new TabChangeListener()); 54 } 55 56 /*** 57 ******************************************************************************* 58 * 59 * @return 60 */ 61 protected RulesTreeNode getSelectedTreeNode() { 62 return m_rulesTree.getSelectedNode(); 63 } 64 65 /*** 66 ******************************************************************************* 67 * 68 */ 69 protected void saveData() { 70 if (m_currentTreeNode != null) { 71 RulesEditingEvent.notifySaveData(this, m_currentTreeNode); 72 } 73 } 74 75 /*** 76 ******************************************************************************* 77 * 78 */ 79 private void loadData(RulesTreeNode treeNode) { 80 JPanel editingTab = (JPanel) getSelectedComponent(); 81 82 if (editingTab == m_ruleAllPanel) { 83 m_ruleAllPanel.setIsEditing(true); 84 m_rulePanel.setIsEditing(false); 85 m_rulePropertyPanel.setIsEditing(false); 86 } else if (editingTab == m_rulePanel) { 87 m_ruleAllPanel.setIsEditing(false); 88 m_rulePanel.setIsEditing(true); 89 m_rulePropertyPanel.setIsEditing(false); 90 } else { 91 m_ruleAllPanel.setIsEditing(false); 92 m_rulePanel.setIsEditing(false); 93 m_rulePropertyPanel.setIsEditing(true); 94 } 95 96 m_currentTreeNode = treeNode; 97 RulesEditingEvent.notifyLoadData(this, treeNode); 98 } 99 100 /*** 101 ******************************************************************************* 102 ******************************************************************************* 103 ******************************************************************************* 104 */ 105 private class TabChangeListener implements ChangeListener { 106 107 /*** 108 ******************************************************************************* 109 * 110 * @param event 111 */ 112 public void stateChanged(ChangeEvent event) { 113 RulesTreeNode selectedTreeNode = getSelectedTreeNode(); 114 saveData(); 115 loadData(selectedTreeNode); 116 SwingUtilities.invokeLater(new SortChildren(selectedTreeNode)); 117 } 118 } 119 120 /*** 121 ******************************************************************************* 122 ******************************************************************************* 123 ******************************************************************************* 124 */ 125 private class RulesTreeSelectionListener implements TreeSelectionListener { 126 127 /*** 128 ******************************************************************************* 129 * 130 * @param event 131 */ 132 public void valueChanged(TreeSelectionEvent event) { 133 TreePath treePath = event.getPath(); 134 Object component = treePath.getLastPathComponent(); 135 136 if (component instanceof RulesTreeNode) { 137 saveData(); 138 139 RulesTreeNode treeNode = (RulesTreeNode) component; 140 141 if (getSelectedComponent() != m_ruleAllPanel) { 142 if (treeNode.isRuleSet()) { 143 setSelectedComponent(m_ruleSetPanel); 144 } else if (treeNode.isRule()) { 145 setSelectedComponent(m_rulePanel); 146 } else if (treeNode.isProperty()) { 147 setSelectedComponent(m_rulePropertyPanel); 148 } 149 } 150 151 if (treeNode.getParent() == null) { 152 // Get next to last tree node in tree path. 153 int pathIndex = treePath.getPathCount() - 2; 154 155 if (pathIndex >= 0) { 156 treeNode = (RulesTreeNode) treePath.getPathComponent(pathIndex); 157 } 158 } 159 160 loadData(treeNode); 161 SwingUtilities.invokeLater(new SortChildren(treeNode)); 162 } 163 } 164 } 165 166 /*** 167 ******************************************************************************* 168 ******************************************************************************* 169 ******************************************************************************* 170 */ 171 private class SortChildren implements Runnable { 172 173 private RulesTreeNode m_parentNode; 174 175 /*** 176 *************************************************************************** 177 * 178 * @param parentNode 179 */ 180 private SortChildren(RulesTreeNode parentNode) { 181 m_parentNode = parentNode; 182 } 183 184 /*** 185 *************************************************************************** 186 * 187 */ 188 public void run() { 189 if (m_parentNode != null) { 190 m_parentNode.sortChildren(); 191 } 192 } 193 } 194 }

This page was automatically generated by Maven