You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by km...@apache.org on 2008/03/23 16:45:43 UTC

svn commit: r640216 - in /cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler: Main.java dialog/pref/GeneralPreferences.java dialog/pref/GeneralPreferencesView.java

Author: kmenard
Date: Sun Mar 23 08:45:41 2008
New Revision: 640216

URL: http://svn.apache.org/viewvc?rev=640216&view=rev
Log:
Fixed CAY-893: CM Usability: Reopen Last Project on Startup.

Modified:
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Main.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/GeneralPreferences.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/GeneralPreferencesView.java

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Main.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Main.java?rev=640216&r1=640215&r2=640216&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Main.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Main.java Sun Mar 23 08:45:41 2008
@@ -24,6 +24,7 @@
 import java.io.IOException;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Vector;
 
 import javax.swing.JOptionPane;
 import javax.swing.SwingUtilities;
@@ -31,6 +32,9 @@
 
 import org.apache.cayenne.conf.Configuration;
 import org.apache.cayenne.project.CayenneUserDir;
+import org.apache.cayenne.pref.PreferenceDetail;
+import org.apache.cayenne.modeler.dialog.pref.GeneralPreferences;
+import org.apache.cayenne.modeler.action.OpenProjectAction;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -80,7 +84,22 @@
         return null;
     }
 
-    protected void runModeler(File projectFile) {
+    protected static File projectFileFromPrefs() {
+        // This must be run after the application has already been bootstrapped.  Otherwise, the returned
+        // app instance will be null.
+        PreferenceDetail autoLoadPref = Application.getInstance().getPreferenceDomain().getDetail(GeneralPreferences.AUTO_LOAD_PROJECT_PREFERENCE, true);
+        
+        if ((autoLoadPref != null) && (true == autoLoadPref.getBooleanProperty(GeneralPreferences.AUTO_LOAD_PROJECT_PREFERENCE))) {
+            ModelerPreferences modelerPreferences = ModelerPreferences.getPreferences();
+            Vector arr = modelerPreferences.getVector(ModelerPreferences.LAST_PROJ_FILES);
+
+            return new File((String) arr.get(0));
+        }
+
+        return null;
+    }
+
+    protected void runModeler(final File projectFile) {
         logObj.info("Starting CayenneModeler.");
 
         // set up UI
@@ -93,6 +112,16 @@
 
             public void run() {
                 Application.instance.startup();
+
+                if (null == projectFile) {
+                    File projectFileFromPrefs = projectFileFromPrefs();
+
+                    if (null != projectFileFromPrefs) {
+                        OpenProjectAction action = new OpenProjectAction(Application.instance);
+
+                        action.openProject(projectFileFromPrefs);
+                    }
+                }
             }
         };
 

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/GeneralPreferences.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/GeneralPreferences.java?rev=640216&r1=640215&r2=640216&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/GeneralPreferences.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/GeneralPreferences.java Sun Mar 23 08:45:41 2008
@@ -38,16 +38,19 @@
  */
 public class GeneralPreferences extends CayenneController {
 
+    public static final String AUTO_LOAD_PROJECT_PREFERENCE = "autoLoadProject";
     public static final String DELETE_PROMPT_PREFERENCE = "deletePrompt";
     public static final String ENCODING_PREFERENCE = "encoding";
 
     protected GeneralPreferencesView view;
     protected CayennePreferenceEditor editor;
+    protected PreferenceDetail autoLoadProjectPreference;
     protected PreferenceDetail classGeneratorPreferences;
     protected PreferenceDetail deletePromptPreference;
 
     protected ObjectBinding saveIntervalBinding;
     protected ObjectBinding encodingBinding;
+    protected ObjectBinding autoLoadProjectBinding;
     protected ObjectBinding deletePromptBinding;
 
     public GeneralPreferences(PreferenceDialog parentController) {
@@ -62,6 +65,7 @@
 
             saveIntervalBinding.updateView();
             encodingBinding.updateView();
+            autoLoadProjectBinding.updateView();
             deletePromptBinding.updateView();
         }
         else {
@@ -80,6 +84,9 @@
         this.classGeneratorPreferences = classGeneratorDomain
                 .getDetail(ENCODING_PREFERENCE, true);
 
+        this.autoLoadProjectPreference = editor.editableInstance(getApplication().getPreferenceDomain())
+                .getDetail(AUTO_LOAD_PROJECT_PREFERENCE, true);
+
         this.deletePromptPreference = editor.editableInstance(getApplication().getPreferenceDomain())
                 .getDetail(DELETE_PROMPT_PREFERENCE, true);
 
@@ -100,6 +107,9 @@
                 "classGeneratorPreferences.property[\"encoding\"]",
                 EncodingSelector.ENCODING_PROPERTY_BINDING);
 
+        this.autoLoadProjectBinding = builder.bindToCheckBox(view.getAutoLoadProject(),
+                "autoLoadProject");
+
         this.deletePromptBinding = builder.bindToCheckBox(view.getDeletePrompt(),
                 "deletePrompt");
     }
@@ -117,6 +127,14 @@
         }
 
         this.editor.setSaveInterval(ms);
+    }
+
+    public boolean getAutoLoadProject() {
+        return autoLoadProjectPreference.getBooleanProperty(GeneralPreferences.AUTO_LOAD_PROJECT_PREFERENCE);
+    }
+
+    public void setAutoLoadProject(boolean autoLoadProject) {
+        autoLoadProjectPreference.setBooleanProperty(GeneralPreferences.AUTO_LOAD_PROJECT_PREFERENCE, autoLoadProject);
     }
 
     public boolean getDeletePrompt() {

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/GeneralPreferencesView.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/GeneralPreferencesView.java?rev=640216&r1=640215&r2=640216&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/GeneralPreferencesView.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/GeneralPreferencesView.java Sun Mar 23 08:45:41 2008
@@ -36,6 +36,7 @@
     protected JLabel saveIntervalLabel;
     protected EncodingSelectorView encodingSelector;
     protected JLabel encodingSelectorLabel;
+    protected JCheckBox autoLoadProjectBox;
     protected JCheckBox deletePromptBox;
 
     public GeneralPreferencesView() {
@@ -43,11 +44,12 @@
         this.encodingSelector = new EncodingSelectorView();
         this.saveIntervalLabel = new JLabel("Preferences Save Interval (sec):");
         this.encodingSelectorLabel = new JLabel("File Encoding:");
+        this.autoLoadProjectBox = new JCheckBox("Automatically load last opened project.");
         this.deletePromptBox = new JCheckBox("Always delete items without prompt.");
 
         FormLayout layout = new FormLayout(
                 "right:pref, 3dlu, 30dlu, 3dlu, fill:70dlu",
-                "p, 3dlu, p, 12dlu, p, 40dlu, p, 3dlu, p, 3dlu, fill:40dlu:grow");
+                "p, 3dlu, p, 12dlu, p, 30dlu, p, 12dlu, p, 3dlu, p, 3dlu, fill:40dlu:grow");
 
         CellConstraints cc = new CellConstraints();
         PanelBuilder builder = new PanelBuilder(layout);
@@ -57,9 +59,10 @@
         builder.add(saveInterval, cc.xy(3, 3));
         builder.add(encodingSelectorLabel, cc.xy(1, 5));
         builder.add(encodingSelector, cc.xywh(3, 5, 3, 3));
+        builder.add(autoLoadProjectBox, cc.xy(1, 7));
 
-        builder.addSeparator("Editor Preferences", cc.xywh(1, 7, 5, 1));
-        builder.add(deletePromptBox, cc.xy(1, 9));
+        builder.addSeparator("Editor Preferences", cc.xywh(1, 9, 5, 1));
+        builder.add(deletePromptBox, cc.xy(1, 11));
 
         this.setLayout(new BorderLayout());
         this.add(builder.getPanel(), BorderLayout.CENTER);
@@ -71,6 +74,8 @@
         saveIntervalLabel.setEnabled(b);
         encodingSelector.setEnabled(b);
         encodingSelectorLabel.setEnabled(b);
+        autoLoadProjectBox.setEnabled(b);
+        deletePromptBox.setEnabled(b);
     }
 
     public JTextField getSaveInterval() {
@@ -79,6 +84,10 @@
 
     public EncodingSelectorView getEncodingSelector() {
         return encodingSelector;
+    }
+
+    public JCheckBox getAutoLoadProject() {
+        return autoLoadProjectBox;
     }
 
     public JCheckBox getDeletePrompt() {