You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by sk...@apache.org on 2015/04/25 15:13:33 UTC
cayenne git commit: prevent FilterDialog disappearing
Repository: cayenne
Updated Branches:
refs/heads/master 09c6da925 -> cad4e03f0
prevent FilterDialog disappearing
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/cad4e03f
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/cad4e03f
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/cad4e03f
Branch: refs/heads/master
Commit: cad4e03f0ff40059cb86425f04cfaf5e4c1645c7
Parents: 09c6da9
Author: Savva Kolbachev <s....@gmail.com>
Authored: Sat Apr 25 16:10:33 2015 +0300
Committer: Savva Kolbachev <s....@gmail.com>
Committed: Sat Apr 25 16:12:33 2015 +0300
----------------------------------------------------------------------
.../modeler/dialog/datadomain/FilterDialog.java | 31 +++++------
.../modeler/util/StayOpenJCheckBoxMenuItem.java | 56 ++++++++++++++++++++
2 files changed, 72 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/cad4e03f/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/datadomain/FilterDialog.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/datadomain/FilterDialog.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/datadomain/FilterDialog.java
index 3693580..cef6bee 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/datadomain/FilterDialog.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/datadomain/FilterDialog.java
@@ -19,9 +19,10 @@
package org.apache.cayenne.modeler.dialog.datadomain;
import org.apache.cayenne.modeler.ProjectController;
+import org.apache.cayenne.modeler.util.StayOpenJCheckBoxMenuItem;
import org.apache.cayenne.swing.BindingBuilder;
-import javax.swing.*;
+import javax.swing.JPopupMenu;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Set;
@@ -30,12 +31,12 @@ public class FilterDialog extends JPopupMenu {
private String SHOW_ALL = "Show all";
- private JCheckBoxMenuItem dbEntity;
- private JCheckBoxMenuItem objEntity;
- private JCheckBoxMenuItem embeddable;
- private JCheckBoxMenuItem procedure;
- private JCheckBoxMenuItem query;
- private JCheckBoxMenuItem all;
+ private StayOpenJCheckBoxMenuItem dbEntity;
+ private StayOpenJCheckBoxMenuItem objEntity;
+ private StayOpenJCheckBoxMenuItem embeddable;
+ private StayOpenJCheckBoxMenuItem procedure;
+ private StayOpenJCheckBoxMenuItem query;
+ private StayOpenJCheckBoxMenuItem all;
private ProjectController eventController;
private FilterController filterController;
@@ -102,13 +103,13 @@ public class FilterDialog extends JPopupMenu {
public void initView(){
- all = new JCheckBoxMenuItem(SHOW_ALL);
- dbEntity = new JCheckBoxMenuItem("DbEntity");
- objEntity = new JCheckBoxMenuItem("ObjEntity");
- embeddable = new JCheckBoxMenuItem("Embeddable");
- procedure = new JCheckBoxMenuItem("Procedure");
- query = new JCheckBoxMenuItem("Query");
-
+ all = new StayOpenJCheckBoxMenuItem(SHOW_ALL);
+ dbEntity = new StayOpenJCheckBoxMenuItem("DbEntity");
+ objEntity = new StayOpenJCheckBoxMenuItem("ObjEntity");
+ embeddable = new StayOpenJCheckBoxMenuItem("Embeddable");
+ procedure = new StayOpenJCheckBoxMenuItem("Procedure");
+ query = new StayOpenJCheckBoxMenuItem("Query");
+
add(all);
addSeparator();
add(dbEntity);
@@ -187,7 +188,7 @@ public class FilterDialog extends JPopupMenu {
@Override
public void actionPerformed(ActionEvent e) {
- filterController.getFilterMap().put(key, ((JCheckBoxMenuItem)e.getSource()).isSelected());
+ filterController.getFilterMap().put(key, ((StayOpenJCheckBoxMenuItem) e.getSource()).isSelected());
filterController.getTreeModel().setFiltered(filterController.getFilterMap());
filterController.getTree().updateUI();
checkAllStates();
http://git-wip-us.apache.org/repos/asf/cayenne/blob/cad4e03f/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/StayOpenJCheckBoxMenuItem.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/StayOpenJCheckBoxMenuItem.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/StayOpenJCheckBoxMenuItem.java
new file mode 100644
index 0000000..5abd75d
--- /dev/null
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/StayOpenJCheckBoxMenuItem.java
@@ -0,0 +1,56 @@
+/*****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ ****************************************************************/
+
+package org.apache.cayenne.modeler.util;
+
+import javax.swing.JCheckBoxMenuItem;
+import javax.swing.MenuElement;
+import javax.swing.MenuSelectionManager;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+public class StayOpenJCheckBoxMenuItem extends JCheckBoxMenuItem {
+
+ private static MenuElement[] path;
+
+ {
+ getModel().addChangeListener(new ChangeListener() {
+ @Override
+ public void stateChanged(ChangeEvent e) {
+ if (getModel().isArmed() && isShowing()) {
+ path = MenuSelectionManager.defaultManager().getSelectedPath();
+ }
+ }
+ });
+ }
+
+ public StayOpenJCheckBoxMenuItem(String text) {
+ super(text);
+ }
+
+ @Override
+ public void doClick(int pressTime) {
+ super.doClick(pressTime);
+ MenuSelectionManager.defaultManager().setSelectedPath(path);
+
+ if (!getParent().isVisible()) {
+ getParent().setVisible(true);
+ }
+ }
+}
\ No newline at end of file