Guest User

Untitled

a guest
Jan 19th, 2019
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.11 KB | None | 0 0
  1. import java.beans.PropertyChangeListener;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4.  
  5. import javax.swing.JFrame;
  6. import javax.swing.JScrollPane;
  7. import javax.swing.JTree;
  8. import javax.swing.SwingUtilities;
  9. import javax.swing.event.TreeSelectionListener;
  10. import javax.swing.tree.DefaultMutableTreeNode;
  11. import javax.swing.tree.DefaultTreeModel;
  12. import javax.swing.tree.DefaultTreeSelectionModel;
  13. import javax.swing.tree.RowMapper;
  14. import javax.swing.tree.TreePath;
  15. import javax.swing.tree.TreeSelectionModel;
  16.  
  17. public class TestTreeSelection {
  18.  
  19. private class MyTreeSelectionModel implements TreeSelectionModel {
  20.  
  21. TreeSelectionModel selectionModel = new DefaultTreeSelectionModel();
  22.  
  23. private boolean canPathBeAdded(TreePath treePath) {
  24. return treePath.getPathCount() > 2;
  25. }
  26.  
  27. private TreePath[] getFilteredPaths(TreePath[] paths) {
  28. List<TreePath> returnedPaths = new ArrayList<TreePath>(paths.length);
  29. for (TreePath treePath : paths) {
  30. if (canPathBeAdded(treePath)) {
  31. returnedPaths.add(treePath);
  32. }
  33. }
  34. return returnedPaths.toArray(new TreePath[returnedPaths.size()]);
  35. }
  36.  
  37. @Override
  38. public void setSelectionMode(int mode) {
  39. selectionModel.setSelectionMode(mode);
  40. }
  41.  
  42. @Override
  43. public int getSelectionMode() {
  44. return selectionModel.getSelectionMode();
  45. }
  46.  
  47. @Override
  48. public void setSelectionPath(TreePath path) {
  49. if (canPathBeAdded(path)) {
  50. selectionModel.setSelectionPath(path);
  51. }
  52. }
  53.  
  54. @Override
  55. public void setSelectionPaths(TreePath[] paths) {
  56. paths = getFilteredPaths(paths);
  57. selectionModel.setSelectionPaths(paths);
  58. }
  59.  
  60. @Override
  61. public void addSelectionPath(TreePath path) {
  62. if (canPathBeAdded(path)) {
  63. selectionModel.addSelectionPath(path);
  64. }
  65. }
  66.  
  67. @Override
  68. public void addSelectionPaths(TreePath[] paths) {
  69. paths = getFilteredPaths(paths);
  70. selectionModel.addSelectionPaths(paths);
  71. }
  72.  
  73. @Override
  74. public void removeSelectionPath(TreePath path) {
  75. selectionModel.removeSelectionPath(path);
  76. }
  77.  
  78. @Override
  79. public void removeSelectionPaths(TreePath[] paths) {
  80. selectionModel.removeSelectionPaths(paths);
  81. }
  82.  
  83. @Override
  84. public TreePath getSelectionPath() {
  85. return selectionModel.getSelectionPath();
  86. }
  87.  
  88. @Override
  89. public TreePath[] getSelectionPaths() {
  90. return selectionModel.getSelectionPaths();
  91. }
  92.  
  93. @Override
  94. public int getSelectionCount() {
  95. return selectionModel.getSelectionCount();
  96. }
  97.  
  98. @Override
  99. public boolean isPathSelected(TreePath path) {
  100. return selectionModel.isPathSelected(path);
  101. }
  102.  
  103. @Override
  104. public boolean isSelectionEmpty() {
  105. return selectionModel.isSelectionEmpty();
  106. }
  107.  
  108. @Override
  109. public void clearSelection() {
  110. selectionModel.clearSelection();
  111. }
  112.  
  113. @Override
  114. public void setRowMapper(RowMapper newMapper) {
  115. selectionModel.setRowMapper(newMapper);
  116. }
  117.  
  118. @Override
  119. public RowMapper getRowMapper() {
  120. return selectionModel.getRowMapper();
  121. }
  122.  
  123. @Override
  124. public int[] getSelectionRows() {
  125. return selectionModel.getSelectionRows();
  126. }
  127.  
  128. @Override
  129. public int getMinSelectionRow() {
  130. return selectionModel.getMinSelectionRow();
  131. }
  132.  
  133. @Override
  134. public int getMaxSelectionRow() {
  135. return selectionModel.getMaxSelectionRow();
  136. }
  137.  
  138. @Override
  139. public boolean isRowSelected(int row) {
  140. return selectionModel.isRowSelected(row);
  141. }
  142.  
  143. @Override
  144. public void resetRowSelection() {
  145. selectionModel.resetRowSelection();
  146. }
  147.  
  148. @Override
  149. public int getLeadSelectionRow() {
  150. return selectionModel.getLeadSelectionRow();
  151. }
  152.  
  153. @Override
  154. public TreePath getLeadSelectionPath() {
  155. return selectionModel.getLeadSelectionPath();
  156. }
  157.  
  158. @Override
  159. public void addPropertyChangeListener(PropertyChangeListener listener) {
  160. selectionModel.addPropertyChangeListener(listener);
  161. }
  162.  
  163. @Override
  164. public void removePropertyChangeListener(PropertyChangeListener listener) {
  165. selectionModel.removePropertyChangeListener(listener);
  166. }
  167.  
  168. @Override
  169. public void addTreeSelectionListener(TreeSelectionListener x) {
  170. selectionModel.addTreeSelectionListener(x);
  171. }
  172.  
  173. @Override
  174. public void removeTreeSelectionListener(TreeSelectionListener x) {
  175. selectionModel.removeTreeSelectionListener(x);
  176. }
  177.  
  178. }
  179.  
  180. protected void initUI() {
  181. final DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");
  182. fillTree(root, 5, "Some tree label");
  183. final DefaultTreeModel model = new DefaultTreeModel(root);
  184. JTree tree = new JTree(model);
  185. tree.setSelectionModel(new MyTreeSelectionModel());
  186. JFrame f = new JFrame();
  187. f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  188. f.add(new JScrollPane(tree));
  189. f.setSize(400, 600);
  190. f.setLocationRelativeTo(null);
  191. f.setVisible(true);
  192. }
  193.  
  194. private void fillTree(DefaultMutableTreeNode parent, int level, String label) {
  195. for (int i = 0; i < 5; i++) {
  196. DefaultMutableTreeNode node = new DefaultMutableTreeNode(label + " " + i);
  197. parent.add(node);
  198. if (level > 0) {
  199. fillTree(node, level - 1, label);
  200. }
  201. }
  202.  
  203. }
  204.  
  205. public static void main(String[] args) {
  206.  
  207. SwingUtilities.invokeLater(new Runnable() {
  208.  
  209. @Override
  210. public void run() {
  211. new TestTreeSelection().initUI();
  212. }
  213. });
  214. }
  215.  
  216. }
Add Comment
Please, Sign In to add comment