1818 ****************************************************************/
1919package org .apache .cayenne .modeler .dialog .datadomain ;
2020
21- import java .util .Enumeration ;
22- import java .util .HashMap ;
23- import java .util .Map ;
21+ import org .apache .cayenne .modeler .ProjectTreeModel ;
22+ import org .apache .cayenne .modeler .ProjectTreeView ;
2423
25- import javax .swing .JTree ;
24+ import javax .swing .* ;
2625import javax .swing .tree .TreeNode ;
2726import javax .swing .tree .TreePath ;
28-
29- import org .apache .cayenne .modeler .ProjectController ;
30- import org .apache .cayenne .modeler .ProjectTreeModel ;
31- import org .apache .cayenne .modeler .ProjectTreeView ;
27+ import java .util .Enumeration ;
3228
3329public class FilterController {
34-
35- private Map <String ,Boolean > filterMap = new HashMap <>();
36- private ProjectTreeView tree ;
37- private ProjectController eventController ;
38- private ProjectTreeModel treeModel ;
39-
40- public ProjectTreeView getTree () {
41- return tree ;
42- }
43-
44- public ProjectTreeModel getTreeModel () {
45- return treeModel ;
46- }
47-
48- public ProjectController getEventController () {
49- return eventController ;
50- }
51-
52- public Map <String , Boolean > getFilterMap () {
53- return filterMap ;
54- }
55-
56- public FilterController (ProjectController eventController , ProjectTreeView treePanel ) {
57-
58- this .eventController = eventController ;
59- this .tree = treePanel ;
60- this .treeModel = tree .getProjectModel ();
61-
62- filterMap .put ("dbEntity" , true );
63- filterMap .put ("objEntity" , true );
64- filterMap .put ("embeddable" , true );
65- filterMap .put ("procedure" , true );
66- filterMap .put ("query" , true );
67- }
68-
69-
70- public void treeExpOrCollPath (String action ) {
71- TreeNode root = (TreeNode ) treeModel .getRoot ();
72- expandAll (tree , new TreePath (root ),action );
73- }
74-
75- private void expandAll (JTree tree , TreePath parent , String action ) {
76- TreeNode node = (TreeNode ) parent .getLastPathComponent ();
77-
78- if (node .getChildCount () >= 0 ) {
79- for (Enumeration e = node .children (); e .hasMoreElements ();) {
80- TreeNode n = (TreeNode ) e .nextElement ();
81- TreePath path = parent .pathByAddingChild (n );
82- expandAll (tree , path , action );
83- }
84- }
85-
86- if ("expand" .equals (action )) {
87- tree .expandPath (parent );
88- } else if ("collapse" .equals (action )) {
89- treeModel .reload (treeModel .getRootNode ());
90- }
91- }
92-
93- }
30+
31+ private boolean showDbEntity ;
32+ private boolean showObjEntity ;
33+ private boolean showEmbeddable ;
34+ private boolean showProcedure ;
35+ private boolean showQuery ;
36+
37+ private final ProjectTreeView treeView ;
38+ private final ProjectTreeModel treeModel ;
39+ private final FilterDialog view ;
40+
41+ public FilterController (ProjectTreeView treeView ) {
42+
43+ this .view = new FilterDialog ();
44+ this .treeView = treeView ;
45+ this .treeModel = treeView .getProjectModel ();
46+
47+ selectAll ();
48+
49+ view .getDbEntity ().addActionListener (e -> {
50+ showDbEntity = view .getDbEntity ().isSelected ();
51+ applyFilter ();
52+ });
53+ view .getObjEntity ().addActionListener (e -> {
54+ showObjEntity = view .getObjEntity ().isSelected ();
55+ applyFilter ();
56+ });
57+ view .getEmbeddable ().addActionListener (e -> {
58+ showEmbeddable = view .getEmbeddable ().isSelected ();
59+ applyFilter ();
60+ });
61+ view .getProcedure ().addActionListener (e -> {
62+ showProcedure = view .getProcedure ().isSelected ();
63+ applyFilter ();
64+ });
65+ view .getQuery ().addActionListener (e -> {
66+ showQuery = view .getQuery ().isSelected ();
67+ applyFilter ();
68+ });
69+
70+ view .getAll ().addActionListener (e -> removeFilter ());
71+ }
72+
73+ private void selectAll () {
74+ showDbEntity = showObjEntity = showEmbeddable = showProcedure = showQuery = true ;
75+ view .getDbEntity ().setSelected (true );
76+ view .getObjEntity ().setSelected (true );
77+ view .getEmbeddable ().setSelected (true );
78+ view .getProcedure ().setSelected (true );
79+
80+ view .getQuery ().setSelected (true );
81+ view .getAll ().setEnabled (false );
82+ }
83+
84+ private void removeFilter () {
85+ selectAll ();
86+ treeModel .setFiltered (true , true , true , true , true );
87+ treeView .updateUI ();
88+ }
89+
90+ private void applyFilter () {
91+ treeModel .setFiltered (showDbEntity , showObjEntity , showEmbeddable , showProcedure , showQuery );
92+ treeView .updateUI ();
93+
94+ boolean all = showDbEntity && showObjEntity && showEmbeddable && showProcedure && showQuery ;
95+ view .getAll ().setSelected (all );
96+ view .getAll ().setEnabled (!all );
97+ }
98+
99+ public FilterDialog getView () {
100+ return view ;
101+ }
102+
103+ public void treeExpOrCollPath (String action ) {
104+ TreeNode root = (TreeNode ) treeModel .getRoot ();
105+ expandAll (treeView , new TreePath (root ), action );
106+ }
107+
108+ private void expandAll (JTree tree , TreePath parent , String action ) {
109+ TreeNode node = (TreeNode ) parent .getLastPathComponent ();
110+
111+ if (node .getChildCount () >= 0 ) {
112+ for (Enumeration <? extends TreeNode > e = node .children (); e .hasMoreElements (); ) {
113+ TreeNode n = e .nextElement ();
114+ TreePath path = parent .pathByAddingChild (n );
115+ expandAll (tree , path , action );
116+ }
117+ }
118+
119+ if ("expand" .equals (action )) {
120+ tree .expandPath (parent );
121+ } else if ("collapse" .equals (action )) {
122+ treeModel .reload (treeModel .getRootNode ());
123+ }
124+ }
125+ }
0 commit comments