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