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() {