You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2006/05/08 20:03:37 UTC

svn commit: r405109 - in /incubator/cayenne/main/trunk/cayenne/cayenne-java/src/modeler/java/org/objectstyle/cayenne: modeler/ modeler/action/ modeler/util/ swing/control/

Author: aadamchik
Date: Mon May  8 11:03:36 2006
New Revision: 405109

URL: http://svn.apache.org/viewcvs?rev=405109&view=rev
Log:
fixing another long standing problem - recent file menu not refreshing when a project is opened

Added:
    incubator/cayenne/main/trunk/cayenne/cayenne-java/src/modeler/java/org/objectstyle/cayenne/swing/control/FileMenuItem.java
Removed:
    incubator/cayenne/main/trunk/cayenne/cayenne-java/src/modeler/java/org/objectstyle/cayenne/modeler/util/RecentFileMenuItem.java
Modified:
    incubator/cayenne/main/trunk/cayenne/cayenne-java/src/modeler/java/org/objectstyle/cayenne/modeler/CayenneModelerController.java
    incubator/cayenne/main/trunk/cayenne/cayenne-java/src/modeler/java/org/objectstyle/cayenne/modeler/action/OpenProjectAction.java
    incubator/cayenne/main/trunk/cayenne/cayenne-java/src/modeler/java/org/objectstyle/cayenne/modeler/util/RecentFileMenu.java

Modified: incubator/cayenne/main/trunk/cayenne/cayenne-java/src/modeler/java/org/objectstyle/cayenne/modeler/CayenneModelerController.java
URL: http://svn.apache.org/viewcvs/incubator/cayenne/main/trunk/cayenne/cayenne-java/src/modeler/java/org/objectstyle/cayenne/modeler/CayenneModelerController.java?rev=405109&r1=405108&r2=405109&view=diff
==============================================================================
--- incubator/cayenne/main/trunk/cayenne/cayenne-java/src/modeler/java/org/objectstyle/cayenne/modeler/CayenneModelerController.java (original)
+++ incubator/cayenne/main/trunk/cayenne/cayenne-java/src/modeler/java/org/objectstyle/cayenne/modeler/CayenneModelerController.java Mon May  8 11:03:36 2006
@@ -167,10 +167,6 @@
      */
     public void projectClosedAction() {
         // --- update view
-        RecentFileMenu recentFileMenu = frame.getRecentFileMenu();
-        recentFileMenu.rebuildFromPreferences();
-        recentFileMenu.setEnabled(recentFileMenu.getMenuComponentCount() > 0);
-
         frame.setView(null);
 
         // repaint is needed, since sometimes there is a
@@ -214,6 +210,9 @@
         // update preferences
         if (!project.isLocationUndefined()) {
             getLastDirectory().setDirectory(project.getProjectDirectory());
+            RecentFileMenu recentFileMenu = frame.getRecentFileMenu();
+            recentFileMenu.rebuildFromPreferences();
+            recentFileMenu.setEnabled(recentFileMenu.getMenuComponentCount() > 0);
         }
 
         // --- check for load errors

Modified: incubator/cayenne/main/trunk/cayenne/cayenne-java/src/modeler/java/org/objectstyle/cayenne/modeler/action/OpenProjectAction.java
URL: http://svn.apache.org/viewcvs/incubator/cayenne/main/trunk/cayenne/cayenne-java/src/modeler/java/org/objectstyle/cayenne/modeler/action/OpenProjectAction.java?rev=405109&r1=405108&r2=405109&view=diff
==============================================================================
--- incubator/cayenne/main/trunk/cayenne/cayenne-java/src/modeler/java/org/objectstyle/cayenne/modeler/action/OpenProjectAction.java (original)
+++ incubator/cayenne/main/trunk/cayenne/cayenne-java/src/modeler/java/org/objectstyle/cayenne/modeler/action/OpenProjectAction.java Mon May  8 11:03:36 2006
@@ -67,10 +67,10 @@
 import org.objectstyle.cayenne.conf.Configuration;
 import org.objectstyle.cayenne.modeler.Application;
 import org.objectstyle.cayenne.modeler.dialog.ErrorDebugDialog;
-import org.objectstyle.cayenne.modeler.util.RecentFileMenuItem;
 import org.objectstyle.cayenne.project.ApplicationProject;
 import org.objectstyle.cayenne.project.Project;
 import org.objectstyle.cayenne.project.ProjectException;
+import org.objectstyle.cayenne.swing.control.FileMenuItem;
 
 /**
  * @author Andrei Adamchik
@@ -111,8 +111,8 @@
         }
 
         File f = null;
-        if (e.getSource() instanceof RecentFileMenuItem) {
-            RecentFileMenuItem menu = (RecentFileMenuItem) e.getSource();
+        if (e.getSource() instanceof FileMenuItem) {
+            FileMenuItem menu = (FileMenuItem) e.getSource();
             f = menu.getFile();
         }
 

Modified: incubator/cayenne/main/trunk/cayenne/cayenne-java/src/modeler/java/org/objectstyle/cayenne/modeler/util/RecentFileMenu.java
URL: http://svn.apache.org/viewcvs/incubator/cayenne/main/trunk/cayenne/cayenne-java/src/modeler/java/org/objectstyle/cayenne/modeler/util/RecentFileMenu.java?rev=405109&r1=405108&r2=405109&view=diff
==============================================================================
--- incubator/cayenne/main/trunk/cayenne/cayenne-java/src/modeler/java/org/objectstyle/cayenne/modeler/util/RecentFileMenu.java (original)
+++ incubator/cayenne/main/trunk/cayenne/cayenne-java/src/modeler/java/org/objectstyle/cayenne/modeler/util/RecentFileMenu.java Mon May  8 11:03:36 2006
@@ -65,6 +65,7 @@
 import org.objectstyle.cayenne.modeler.Application;
 import org.objectstyle.cayenne.modeler.ModelerPreferences;
 import org.objectstyle.cayenne.modeler.action.OpenProjectAction;
+import org.objectstyle.cayenne.swing.control.FileMenuItem;
 
 /**
  * Menu that contains a list of previously used files. It is built from CayenneModeler
@@ -84,8 +85,8 @@
     /**
      * @see javax.swing.JMenu#add(JMenuItem)
      */
-    public RecentFileMenuItem add(RecentFileMenuItem menuItem) {
-        return (RecentFileMenuItem) super.add(menuItem);
+    public FileMenuItem add(FileMenuItem menuItem) {
+        return (FileMenuItem) super.add(menuItem);
     }
 
     /**
@@ -109,12 +110,12 @@
 
             if (i < curSize) {
                 // update existing one
-                RecentFileMenuItem item = (RecentFileMenuItem) comps[i];
+                FileMenuItem item = (FileMenuItem) comps[i];
                 item.setText(name);
             }
             else {
                 // add a new one
-                RecentFileMenuItem item = new RecentFileMenuItem(name);
+                FileMenuItem item = new FileMenuItem(name);
                 item.setAction(findAction());
                 add(item);
             }

Added: incubator/cayenne/main/trunk/cayenne/cayenne-java/src/modeler/java/org/objectstyle/cayenne/swing/control/FileMenuItem.java
URL: http://svn.apache.org/viewcvs/incubator/cayenne/main/trunk/cayenne/cayenne-java/src/modeler/java/org/objectstyle/cayenne/swing/control/FileMenuItem.java?rev=405109&view=auto
==============================================================================
--- incubator/cayenne/main/trunk/cayenne/cayenne-java/src/modeler/java/org/objectstyle/cayenne/swing/control/FileMenuItem.java (added)
+++ incubator/cayenne/main/trunk/cayenne/cayenne-java/src/modeler/java/org/objectstyle/cayenne/swing/control/FileMenuItem.java Mon May  8 11:03:36 2006
@@ -0,0 +1,97 @@
+/* ====================================================================
+ * 
+ * The ObjectStyle Group Software License, version 1.1
+ * ObjectStyle Group - http://objectstyle.org/
+ * 
+ * Copyright (c) 2002-2005, Andrei (Andrus) Adamchik and individual authors
+ * of the software. All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ * 
+ * 3. The end-user documentation included with the redistribution, if any,
+ *    must include the following acknowlegement:
+ *    "This product includes software developed by independent contributors
+ *    and hosted on ObjectStyle Group web site (http://objectstyle.org/)."
+ *    Alternately, this acknowlegement may appear in the software itself,
+ *    if and wherever such third-party acknowlegements normally appear.
+ * 
+ * 4. The names "ObjectStyle Group" and "Cayenne" must not be used to endorse
+ *    or promote products derived from this software without prior written
+ *    permission. For written permission, email
+ *    "andrus at objectstyle dot org".
+ * 
+ * 5. Products derived from this software may not be called "ObjectStyle"
+ *    or "Cayenne", nor may "ObjectStyle" or "Cayenne" appear in their
+ *    names without prior written permission.
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE OBJECTSTYLE GROUP OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ * 
+ * This software consists of voluntary contributions made by many
+ * individuals and hosted on ObjectStyle Group web site.  For more
+ * information on the ObjectStyle Group, please see
+ * <http://objectstyle.org/>.
+ */
+package org.objectstyle.cayenne.swing.control;
+
+import java.io.File;
+
+import javax.swing.Action;
+import javax.swing.Icon;
+import javax.swing.JMenuItem;
+
+/**
+ * A menu item that points to a file.
+ * 
+ * @author Andrus Adamchik
+ */
+public class FileMenuItem extends JMenuItem {
+
+    /**
+     * Creates a new instance with the specified fileName.
+     */
+    public FileMenuItem(String fileName) {
+        setText(fileName);
+    }
+
+    protected void configurePropertiesFromAction(Action a) {
+        // excludes most generic action keys that are not applicable here...
+        setIcon(a != null ? (Icon) a.getValue(Action.SMALL_ICON) : null);
+        setEnabled(a != null ? a.isEnabled() : true);
+    }
+
+    /**
+     * Returns a file if this menu item points to a readable file or directory, or null
+     * otherwise.
+     */
+    public File getFile() {
+        if (getText() == null) {
+            return null;
+        }
+
+        File f = new File(getText());
+        return f.canRead() ? f : null;
+    }
+
+}