Skip to content

Commit 93fff57

Browse files
committed
CAY-2918 Remove OGNL Binding Architecture from CayenneModeler
getting rid of "bindToComboSelection", "bindToStateChange"
1 parent 4cf4e2b commit 93fff57

17 files changed

Lines changed: 519 additions & 1018 deletions

modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectTreeModel.java

Lines changed: 32 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
import javax.swing.tree.TreeNode;
3636
import java.util.Comparator;
3737
import java.util.Enumeration;
38-
import java.util.Map;
3938

4039
/**
4140
* ProjectTreeModel is a model of Cayenne project tree.
@@ -170,8 +169,8 @@ public DefaultMutableTreeNode getNodeForObjectPath(Object[] path) {
170169
return currentNode;
171170
}
172171

173-
public void setFiltered(Map<String, Boolean> filterMap) {
174-
filter.setFilterMap(filterMap);
172+
public void setFiltered(boolean dbEntity, boolean objEntity, boolean embeddable, boolean procedure, boolean query) {
173+
filter.setFilter(dbEntity, objEntity, embeddable, procedure, query);
175174
}
176175

177176
public int getChildCount(Object parent) {
@@ -229,24 +228,43 @@ public void removeNodeFromParent(MutableTreeNode node) {
229228
}
230229

231230
static class Filter {
232-
private Map<String, Boolean> filterMap;
233-
boolean pass = true;
231+
private boolean dbEntity;
232+
private boolean objEntity;
233+
private boolean embeddable;
234+
private boolean procedure;
235+
private boolean query;
236+
private boolean pass;
237+
238+
Filter() {
239+
this.dbEntity = true;
240+
this.objEntity = true;
241+
this.embeddable = true;
242+
this.procedure = true;
243+
this.query = true;
244+
this.pass = true;
245+
}
234246

235-
public void setFilterMap(Map<String, Boolean> filterMap) {
236-
this.filterMap = filterMap;
237-
pass = false;
247+
public void setFilter(boolean dbEntity, boolean objEntity, boolean embeddable, boolean procedure, boolean query) {
248+
this.dbEntity = dbEntity;
249+
this.objEntity = objEntity;
250+
this.embeddable = embeddable;
251+
this.procedure = procedure;
252+
this.query = query;
253+
this.pass = false;
238254
}
239255

240256
public boolean pass(DefaultMutableTreeNode obj) {
241257
Object root = obj.getUserObject();
242258
Object firstLeaf = obj.getFirstLeaf().getUserObject();
243259

244-
return ((pass) || (root instanceof DataMap) || (root instanceof DataNodeDescriptor)
245-
|| (firstLeaf instanceof DbEntity && filterMap.get("dbEntity"))
246-
|| (firstLeaf instanceof ObjEntity && filterMap.get("objEntity"))
247-
|| (firstLeaf instanceof Embeddable && filterMap.get("embeddable"))
248-
|| (firstLeaf instanceof QueryDescriptor && filterMap.get("query"))
249-
|| (firstLeaf instanceof Procedure && filterMap.get("procedure")));
260+
return (pass
261+
|| (root instanceof DataMap)
262+
|| (root instanceof DataNodeDescriptor)
263+
|| (firstLeaf instanceof DbEntity && dbEntity)
264+
|| (firstLeaf instanceof ObjEntity && objEntity)
265+
|| (firstLeaf instanceof Embeddable && embeddable)
266+
|| (firstLeaf instanceof QueryDescriptor && query)
267+
|| (firstLeaf instanceof Procedure && procedure));
250268
}
251269
}
252270
}

modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/FilterAction.java

Lines changed: 18 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -18,42 +18,38 @@
1818
****************************************************************/
1919
package org.apache.cayenne.modeler.action;
2020

21-
import java.awt.event.ActionEvent;
22-
23-
import javax.swing.JButton;
2421
import org.apache.cayenne.modeler.Application;
25-
2622
import org.apache.cayenne.modeler.dialog.datadomain.FilterDialog;
2723
import org.apache.cayenne.modeler.util.CayenneAction;
2824

29-
public class FilterAction extends CayenneAction{
30-
31-
private FilterDialog filterDialog = null;
32-
25+
import javax.swing.*;
26+
import java.awt.event.ActionEvent;
27+
28+
public class FilterAction extends CayenneAction {
29+
3330
public static String getActionName() {
3431
return "Filter tree";
3532
}
3633

37-
public FilterAction(Application application) {
34+
public FilterAction(Application application) {
3835
super(getActionName(), application);
3936
}
40-
37+
4138
@Override
4239
public String getIconName() {
4340
return "icon-filter.png";
4441
}
4542

46-
@Override
47-
public void performAction(ActionEvent e) {
48-
JButton source = (JButton)e.getSource();
49-
if(filterDialog == null) {
50-
filterDialog = new FilterDialog(getApplication().getFrameController().getEditorView().getFilterController());
51-
}
52-
filterDialog.pack();
53-
filterDialog.show(source, 0, source.getHeight());
54-
}
55-
56-
public void resetDialog() {
57-
filterDialog = null;
43+
@Override
44+
public void performAction(ActionEvent e) {
45+
JButton source = (JButton) e.getSource();
46+
FilterDialog dialog = getApplication()
47+
.getFrameController()
48+
.getEditorView()
49+
.getFilterController()
50+
.getView();
51+
52+
dialog.pack();
53+
dialog.show(source, 0, source.getHeight());
5854
}
5955
}

modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/datadomain/FilterController.java

Lines changed: 100 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -18,76 +18,108 @@
1818
****************************************************************/
1919
package 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.*;
2625
import javax.swing.tree.TreeNode;
2726
import 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

3329
public 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

Comments
 (0)