You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by ol...@apache.org on 2009/12/11 15:30:08 UTC

svn commit: r889634 - in /cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne: modeler/ modeler/dialog/ modeler/editor/ modeler/pref/ pref/

Author: oltka
Date: Fri Dec 11 14:30:07 2009
New Revision: 889634

URL: http://svn.apache.org/viewvc?rev=889634&view=rev
Log:
CAY-1327

* ComponentGeometry switched to Java preferences API

Added:
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/pref/UpgradeCayennePreference.java
      - copied, changed from r889607, cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/pref/UpgradeCayennePreferenceDecorator.java
Removed:
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/_ComponentGeometry.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/pref/UpgradeCayennePreferenceDecorator.java
Modified:
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Application.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerController.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerFrame.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ModelerPreferences.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/LogConsole.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/EditorView.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/ComponentGeometry.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/pref/CayennePreference.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/pref/Preference.java

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Application.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Application.java?rev=889634&r1=889633&r2=889634&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Application.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Application.java Fri Dec 11 14:30:07 2009
@@ -24,18 +24,19 @@
 import java.awt.Window;
 import java.io.File;
 import java.util.Collection;
+import java.util.prefs.Preferences;
 
 import javax.swing.JFrame;
 import javax.swing.JOptionPane;
 import javax.swing.JRootPane;
 import javax.swing.SwingUtilities;
-import javax.swing.undo.UndoManager;
 
 import org.apache.cayenne.modeler.dialog.LogConsole;
 import org.apache.cayenne.modeler.undo.CayenneUndoManager;
 import org.apache.cayenne.modeler.util.AdapterMapping;
 import org.apache.cayenne.modeler.util.CayenneAction;
 import org.apache.cayenne.modeler.util.CayenneDialog;
+import org.apache.cayenne.pref.CayennePreference;
 import org.apache.cayenne.pref.Domain;
 import org.apache.cayenne.pref.DomainPreference;
 import org.apache.cayenne.pref.HSQLEmbeddedPreferenceEditor;
@@ -86,12 +87,14 @@
     protected String preferencesDB;
     protected BindingFactory bindingFactory;
     protected AdapterMapping adapterMapping;
-    
+
     protected CayenneUndoManager undoManager;
 
     // This is for OS X support
     private boolean isQuittingApplication = false;
 
+    protected CayennePreference cayennePreference;
+
     public static Application getInstance() {
         return instance;
     }
@@ -122,9 +125,15 @@
         File dbDir = new File(CayenneUserDir.getInstance().resolveFile(
                 PREFERENCES_DB_SUBDIRECTORY), subdir);
         dbDir.mkdirs();
+        this.cayennePreference = new CayennePreference();
+
         this.preferencesDB = new File(dbDir, "db").getAbsolutePath();
     }
 
+    public Preferences getPreferencesNode(Class className, String path) {
+        return cayennePreference.getNode(className, path);
+    }
+
     public String getName() {
         return name;
     }
@@ -150,7 +159,7 @@
     public ActionManager getActionManager() {
         return actionManager;
     }
-    
+
     /**
      * Returns undo-edits controller.
      */
@@ -196,7 +205,7 @@
 
         // open up
         frameController.startupAction();
-        
+
         /**
          * After prefs have been loaded, we can now show the console if needed
          */
@@ -221,7 +230,7 @@
     public Domain getPreferenceDomain() {
         return getPreferenceService().getDomain(getName(), true);
     }
-    
+
     /**
      * Returns a new instance of CodeTemplateManager.
      */
@@ -382,12 +391,10 @@
         }
     }
 
-    
     public boolean isQuittingApplication() {
         return isQuittingApplication;
     }
 
-    
     public void setQuittingApplication(boolean isQuittingApplication) {
         this.isQuittingApplication = isQuittingApplication;
     }

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerController.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerController.java?rev=889634&r1=889633&r2=889634&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerController.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerController.java Fri Dec 11 14:30:07 2009
@@ -43,7 +43,6 @@
 import org.apache.cayenne.modeler.pref.ComponentGeometry;
 import org.apache.cayenne.modeler.pref.FSPath;
 import org.apache.cayenne.modeler.util.CayenneController;
-import org.apache.cayenne.pref.Domain;
 import org.apache.cayenne.project.ApplicationProject;
 import org.apache.cayenne.project.validator.Validator;
 
@@ -107,9 +106,7 @@
             }
         });
 
-        Domain prefDomain = application.getPreferenceDomain().getSubdomain(
-                frame.getClass());
-        ComponentGeometry geometry = ComponentGeometry.getPreference(prefDomain);
+        ComponentGeometry geometry = new ComponentGeometry(frame.getClass(), null);
         geometry.bind(frame, 650, 550, 0);
     }
 

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerFrame.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerFrame.java?rev=889634&r1=889633&r2=889634&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerFrame.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerFrame.java Fri Dec 11 14:30:07 2009
@@ -17,7 +17,6 @@
  *  under the License.
  ****************************************************************/
 
-
 package org.apache.cayenne.modeler;
 
 import java.awt.AWTEvent;
@@ -114,44 +113,44 @@
  */
 public class CayenneModelerFrame extends JFrame implements DataNodeDisplayListener,
         DataMapDisplayListener, ObjEntityDisplayListener, DbEntityDisplayListener,
-        QueryDisplayListener, ProcedureDisplayListener, MultipleObjectsDisplayListener, 
-        EmbeddableDisplayListener{
+        QueryDisplayListener, ProcedureDisplayListener, MultipleObjectsDisplayListener,
+        EmbeddableDisplayListener {
 
     protected EditorView view;
     protected RecentFileMenu recentFileMenu;
     protected ActionManager actionManager;
     protected JLabel status;
-    
+
     /**
      * Menu which shows/hides log console
      */
     protected JCheckBoxMenuItem logMenu;
-    
+
     /**
-     * Split panel, where main project editor and external component, like log console, 
-     * are located 
+     * Split panel, where main project editor and external component, like log console,
+     * are located
      */
     protected JSplitPane splitPane;
-    
+
     /**
      * Component, plugged into this frame
      */
     protected Component dockComponent;
-    
+
     /**
      * Listeners for changes in recent file menu
      */
     protected List<RecentFileListListener> recentFileListeners;
-    
+
     /**
      * Welcome screen, shown when no project is open
      */
     protected WelcomeScreen welcomeScreen;
-    
+
     public CayenneModelerFrame(ActionManager actionManager) {
         super(ModelerConstants.TITLE);
         this.actionManager = actionManager;
-        
+
         recentFileListeners = new Vector<RecentFileListListener>();
 
         setIconImage(ModelerUtil.buildIcon("CayenneModeler.jpg").getImage());
@@ -159,9 +158,9 @@
         initToolbar();
         initStatusBar();
         initWelcome();
-        
-        fireRecentFileListChanged(); //start filling list in welcome screen and in menu
-        
+
+        fireRecentFileListChanged(); // start filling list in welcome screen and in menu
+
         setView(null);
     }
 
@@ -198,7 +197,7 @@
         fileMenu.add(getAction(SaveAsAction.getActionName()).buildMenu());
         fileMenu.add(getAction(RevertAction.getActionName()).buildMenu());
         fileMenu.addSeparator();
-        
+
         editMenu.add(getAction(UndoAction.getActionName()).buildMenu());
         editMenu.add(getAction(RedoAction.getActionName()).buildMenu());
         editMenu.add(getAction(CutAction.getActionName()).buildMenu());
@@ -224,10 +223,10 @@
         projectMenu.add(getAction(CreateObjEntityAction.getActionName()).buildMenu());
         projectMenu.add(getAction(CreateEmbeddableAction.getActionName()).buildMenu());
         projectMenu.add(getAction(CreateDbEntityAction.getActionName()).buildMenu());
-        
+
         projectMenu.add(getAction(CreateProcedureAction.getActionName()).buildMenu());
         projectMenu.add(getAction(CreateQueryAction.getActionName()).buildMenu());
-        
+
         projectMenu.addSeparator();
         projectMenu.add(getAction(ObjEntitySyncAction.getActionName()).buildMenu());
         projectMenu.addSeparator();
@@ -240,27 +239,38 @@
         toolMenu.add(getAction(GenerateCodeAction.getActionName()).buildMenu());
         toolMenu.add(getAction(GenerateDBAction.getActionName()).buildMenu());
         toolMenu.add(getAction(MigrateAction.getActionName()).buildMenu());
-        
+
         /**
          * Menu for opening Log console
          */
         toolMenu.addSeparator();
-        
+
         logMenu = getAction(ShowLogConsoleAction.getActionName()).buildCheckBoxMenu();
+
+        if (!LogConsole.getInstance().getConsoleProperty(LogConsole.DOCKED_PROPERTY)
+                && LogConsole.getInstance().getConsoleProperty(
+                        LogConsole.SHOW_CONSOLE_PROPERTY)) {
+            LogConsole.getInstance().setConsoleProperty(
+                    LogConsole.SHOW_CONSOLE_PROPERTY,
+                    false);
+        }
+
         updateLogConsoleMenu();
         toolMenu.add(logMenu);
-        
+
         // Mac OS X has it's own Preferences menu item under the application menu
         if (OperatingSystem.getOS() != OperatingSystem.MAC_OS_X) {
             toolMenu.addSeparator();
-            toolMenu.add(getAction(ConfigurePreferencesAction.getActionName()).buildMenu());
+            toolMenu.add(getAction(ConfigurePreferencesAction.getActionName())
+                    .buildMenu());
         }
 
-        // Mac OS X "About CayenneModeler" appears under the application menu, per Apple GUI standards
+        // Mac OS X "About CayenneModeler" appears under the application menu, per Apple
+        // GUI standards
         if (OperatingSystem.getOS() != OperatingSystem.MAC_OS_X)
             helpMenu.add(getAction(AboutAction.getActionName()).buildMenu());
         helpMenu.add(getAction(DocumentationAction.getActionName()).buildMenu());
-        
+
         JMenuBar menuBar = new JMenuBar();
 
         menuBar.add(fileMenu);
@@ -271,9 +281,9 @@
 
         setJMenuBar(menuBar);
     }
-    
+
     /**
-     * Selects/deselects menu item, depending on status of log console 
+     * Selects/deselects menu item, depending on status of log console
      */
     public void updateLogConsoleMenu() {
         logMenu.setSelected(LogConsole.getInstance().getConsoleProperty(
@@ -283,25 +293,22 @@
     protected void initStatusBar() {
         status = new JLabel();
         status.setFont(status.getFont().deriveFont(Font.PLAIN, 10));
-        
+
         splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
         splitPane.getInsets().left = 5;
         splitPane.getInsets().right = 5;
-        
+
         splitPane.setResizeWeight(0.7);
-        
+
         /**
-         * Moving this to try-catch block per CAY-940.
-         * Exception will be stack-traced  
+         * Moving this to try-catch block per CAY-940. Exception will be stack-traced
          */
         try {
-            Domain domain = Application.getInstance().getPreferenceDomain().getSubdomain(
-                this.getClass());
-            ComponentGeometry geometry = (ComponentGeometry) domain.getDetail(
-                "splitPane.divider",
-                ComponentGeometry.class,
-                true);
-            geometry.bindIntProperty(splitPane, JSplitPane.DIVIDER_LOCATION_PROPERTY, 400);
+            ComponentGeometry geometry = new ComponentGeometry(
+                    this.getClass(),
+                    "splitPane/divider");
+            geometry
+                    .bindIntProperty(splitPane, JSplitPane.DIVIDER_LOCATION_PROPERTY, 400);
         }
         catch (Exception ex) {
             LogFactory.getLog(getClass()).error("Cannot bind divider property", ex);
@@ -315,7 +322,7 @@
         getContentPane().add(splitPane, BorderLayout.CENTER);
         getContentPane().add(statusBar, BorderLayout.SOUTH);
     }
-    
+
     /**
      * Initializes welcome screen
      */
@@ -323,7 +330,7 @@
         welcomeScreen = new WelcomeScreen();
         addRecentFileListListener(welcomeScreen);
     }
-    
+
     /**
      * Plugs a component in the frame, between main area and status bar
      */
@@ -331,20 +338,20 @@
         if (dockComponent == c) {
             return;
         }
-        
+
         if (dockComponent != null) {
             splitPane.setBottomComponent(null);
         }
-        
+
         dockComponent = c;
-        
+
         if (dockComponent != null) {
             splitPane.setBottomComponent(dockComponent);
         }
-        
+
         splitPane.validate();
     }
-    
+
     /**
      * @return Dock component
      */
@@ -359,21 +366,21 @@
         toolBar.add(getAction(NewProjectAction.getActionName()).buildButton());
         toolBar.add(getAction(OpenProjectAction.getActionName()).buildButton());
         toolBar.add(getAction(SaveAction.getActionName()).buildButton());
-        
+
         toolBar.addSeparator();
         toolBar.add(getAction(RemoveAction.getActionName()).buildButton());
-        
+
         toolBar.addSeparator();
-        
+
         toolBar.add(getAction(CutAction.getActionName()).buildButton());
         toolBar.add(getAction(CopyAction.getActionName()).buildButton());
         toolBar.add(getAction(PasteAction.getActionName()).buildButton());
 
         toolBar.addSeparator();
-        
+
         toolBar.add(getAction(UndoAction.getActionName()).buildButton());
         toolBar.add(getAction(RedoAction.getActionName()).buildButton());
-        
+
         toolBar.addSeparator();
 
         toolBar.add(getAction(CreateDomainAction.getActionName()).buildButton());
@@ -387,23 +394,24 @@
 
         toolBar.addSeparator();
 
-        
         toolBar.add(getAction(CreateObjEntityAction.getActionName()).buildButton());
         toolBar.add(getAction(CreateEmbeddableAction.getActionName()).buildButton());
         toolBar.add(getAction(CreateQueryAction.getActionName()).buildButton());
- 
+
         toolBar.addSeparator();
 
         toolBar.add(getAction(NavigateBackwardAction.getActionName()).buildButton());
         toolBar.add(getAction(NavigateForwardAction.getActionName()).buildButton());
 
-        JPanel east = new JPanel(new BorderLayout());   // is used to place search feature components the most right on a toolbar  
+        JPanel east = new JPanel(new BorderLayout()); // is used to place search feature
+        // components the most right on a
+        // toolbar
         final JTextField findField = new JTextField(10);
-        findField.addKeyListener(new KeyListener(){
+        findField.addKeyListener(new KeyListener() {
 
             public void keyPressed(KeyEvent e) {
-                if (e.getKeyCode() != KeyEvent.VK_ENTER){
-                     findField.setBackground(Color.white);
+                if (e.getKeyCode() != KeyEvent.VK_ENTER) {
+                    findField.setBackground(Color.white);
                 }
             }
 
@@ -412,28 +420,30 @@
 
             public void keyTyped(KeyEvent e) {
             }
-            
+
         });
         findField.setAction(getAction(FindAction.getActionName()));
         JLabel findLabel = new JLabel("Search:");
         findLabel.setLabelFor(findField);
         Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener() {
+
             public void eventDispatched(AWTEvent event) {
-               
-                
+
                 if (event instanceof KeyEvent) {
-                   
-                   if (((KeyEvent) event).getModifiers() == Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()
-                            && ((KeyEvent) event).getKeyCode() == KeyEvent.VK_F){                               
-                               findField.requestFocus();                               
-                   }                    
-                }                      
-            }    
-            
-        }, AWTEvent.KEY_EVENT_MASK);
-        
-        
-        JPanel box = new JPanel();  // is used to place label and text field one after another
+
+                    if (((KeyEvent) event).getModifiers() == Toolkit
+                            .getDefaultToolkit()
+                            .getMenuShortcutKeyMask()
+                            && ((KeyEvent) event).getKeyCode() == KeyEvent.VK_F) {
+                        findField.requestFocus();
+                    }
+                }
+            }
+
+        },
+                AWTEvent.KEY_EVENT_MASK);
+
+        JPanel box = new JPanel(); // is used to place label and text field one after another
         box.setLayout(new BoxLayout(box, BoxLayout.X_AXIS));
         box.add(findLabel);
         box.add(findField);
@@ -466,11 +476,11 @@
     public void currentProcedureChanged(ProcedureDisplayEvent e) {
         actionManager.procedureSelected();
     }
-    
+
     public void currentObjectsChanged(MultipleObjectsDisplayEvent e) {
         actionManager.multipleObjectsSelected(e.getPaths());
     }
-    
+
     public void currentEmbeddableChanged(EmbeddableDisplayEvent e) {
         actionManager.embeddableSelected();
     }
@@ -502,7 +512,7 @@
      */
     public void setView(EditorView view) {
         int oldLocation = splitPane.getDividerLocation();
-        
+
         this.view = view;
 
         if (view != null) {
@@ -515,14 +525,14 @@
         validate();
         splitPane.setDividerLocation(oldLocation);
     }
-    
+
     /**
      * Adds listener for recent menu changes
      */
     public void addRecentFileListListener(RecentFileListListener listener) {
         recentFileListeners.add(listener);
     }
-    
+
     /**
      * Notifies all listeners that recent file list has changed
      */

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ModelerPreferences.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ModelerPreferences.java?rev=889634&r1=889633&r2=889634&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ModelerPreferences.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ModelerPreferences.java Fri Dec 11 14:30:07 2009
@@ -28,7 +28,7 @@
 
 import org.apache.cayenne.pref.CayennePreference;
 import org.apache.cayenne.pref.Preference;
-import org.apache.cayenne.pref.UpgradeCayennePreferenceDecorator;
+import org.apache.cayenne.pref.UpgradeCayennePreference;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -69,8 +69,8 @@
      */
     public static Preferences getPreferences() {
         if(cayennePrefs==null){
-            Preference decoratedPref = new UpgradeCayennePreferenceDecorator(new CayennePreference());
-            cayennePrefs = decoratedPref.getRootPreference();
+            Preference decoratedPref = new UpgradeCayennePreference(new CayennePreference());
+            cayennePrefs = decoratedPref.getCayennePreference();
             cayennePrefs.addPreferenceChangeListener(new ModelerPreferences());
         }
         return cayennePrefs;

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/LogConsole.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/LogConsole.java?rev=889634&r1=889633&r2=889634&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/LogConsole.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/LogConsole.java Fri Dec 11 14:30:07 2009
@@ -21,7 +21,6 @@
 import org.apache.cayenne.modeler.Application;
 import org.apache.cayenne.modeler.pref.ComponentGeometry;
 import org.apache.cayenne.modeler.util.CayenneController;
-import org.apache.cayenne.pref.Domain;
 import org.apache.cayenne.util.Util;
 
 import javax.swing.text.*;
@@ -181,8 +180,7 @@
             if (logWindow == null) {
                 logWindow = new LogConsoleWindow(this);
             
-                Domain prefDomain = getDomain();
-                ComponentGeometry geometry = ComponentGeometry.getPreference(prefDomain);
+                ComponentGeometry geometry = new ComponentGeometry(getClass(), null);
                 geometry.bind(logWindow, 600, 300, 0);
             }
             
@@ -264,15 +262,14 @@
      * Sets the property, depending on last user's choice
      */
     public void setConsoleProperty(String prop, boolean b) {
-        getDomain().getDetail(prop, true).
-            setBooleanProperty(prop, b);
+        Application.getInstance().getPreferencesNode(getClass(), null).putBoolean(prop, b);
     }
     
     /**
      * @return a boolean property
      */
     public boolean getConsoleProperty(String prop) {
-        return getDomain().getDetail(prop, true).getBooleanProperty(prop);
+        return Application.getInstance().getPreferencesNode(getClass(), null).getBoolean(prop, false);
     }
     
     /**
@@ -346,14 +343,13 @@
         return view;
     }
     
-    protected Domain getDomain() {
-        return Application.getInstance().getPreferenceDomain().getSubdomain(getClass());
-    }
-    
     /**
      * Stop logging and don't print any more messages to text area
      */
     public void stopLogging() {
+        if(!getConsoleProperty(DOCKED_PROPERTY)){
+            setConsoleProperty(SHOW_CONSOLE_PROPERTY, false);
+        }
         loggingStopped = true;
     }
     

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/EditorView.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/EditorView.java?rev=889634&r1=889633&r2=889634&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/EditorView.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/EditorView.java Fri Dec 11 14:30:07 2009
@@ -52,7 +52,6 @@
 import org.apache.cayenne.modeler.event.QueryDisplayEvent;
 import org.apache.cayenne.modeler.event.QueryDisplayListener;
 import org.apache.cayenne.modeler.pref.ComponentGeometry;
-import org.apache.cayenne.pref.Domain;
 import org.apache.cayenne.query.EJBQLQuery;
 import org.apache.cayenne.query.ProcedureQuery;
 import org.apache.cayenne.query.Query;
@@ -229,13 +228,7 @@
          * Moving this to try-catch block per CAY-940. Exception will be stack-traced
          */
         try {
-            Domain domain = eventController
-                    .getApplicationPreferenceDomain()
-                    .getSubdomain(this.getClass());
-            ComponentGeometry geometry = (ComponentGeometry) domain.getDetail(
-                    "splitPane.divider",
-                    ComponentGeometry.class,
-                    true);
+            ComponentGeometry geometry = new ComponentGeometry(this.getClass(), "splitPane/divider");
 
             geometry
                     .bindIntProperty(splitPane, JSplitPane.DIVIDER_LOCATION_PROPERTY, 150);

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/ComponentGeometry.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/ComponentGeometry.java?rev=889634&r1=889633&r2=889634&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/ComponentGeometry.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/ComponentGeometry.java Fri Dec 11 14:30:07 2009
@@ -19,7 +19,7 @@
 
 package org.apache.cayenne.modeler.pref;
 
-import org.apache.cayenne.pref.Domain;
+import org.apache.cayenne.pref.CayennePreference;
 import org.apache.cayenne.pref.PreferenceException;
 import org.apache.cayenne.reflect.PropertyUtils;
 
@@ -28,16 +28,26 @@
 import java.awt.event.ComponentEvent;
 import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeListener;
+import java.util.prefs.Preferences;
 
-public class ComponentGeometry extends _ComponentGeometry {
+public class ComponentGeometry extends CayennePreference {
 
     public static final String GEOMETRY_PREF_KEY = "geometry";
-
-    public static ComponentGeometry getPreference(Domain domain) {
-        return (ComponentGeometry) domain.getDetail(
-                ComponentGeometry.GEOMETRY_PREF_KEY,
-                ComponentGeometry.class,
-                true);
+    
+    public static final String HEIGHT_PROPERTY = "height";
+    public static final String WIDTH_PROPERTY = "width";
+    public static final String X_PROPERTY = "x";
+    public static final String Y_PROPERTY = "y";
+    
+    public ComponentGeometry(Class className, String path) {
+        setCurrentNodeForPreference(className, path);
+    };
+    
+    public Preferences getPreference() {
+        if (currentPreference == null) {
+            setCurrentNodeForPreference(this.getClass(), GEOMETRY_PREF_KEY);
+        }
+        return currentPreference;
     }
 
     /**
@@ -101,13 +111,13 @@
 
             public void propertyChange(PropertyChangeEvent e) {
                 Object value = e.getNewValue();
-                setProperty(property, value != null ? value.toString() : null);
+                getPreference().put(property, value != null ? value.toString() : null);
             }
         });
     }
 
     void updateIntProperty(Component c, String property, int defaultValue) {
-        int i = getIntProperty(property, defaultValue);
+        int i = getPreference().getInt(property, defaultValue);
         try {
             PropertyUtils.setProperty(c, property, new Integer(i));
         }
@@ -117,9 +127,9 @@
     }
 
     void updateSize(Component c, int initialWidth, int initialHeight) {
-        int w = getIntWidth(initialWidth);
-        int h = getIntHeight(initialHeight);
-
+        int w = getWidth(initialWidth);
+        int h = getHeight(initialHeight);
+        
         if (w > 0 && h > 0) {
             c.setSize(w, h);
         }
@@ -133,8 +143,8 @@
             changeY(yOffset);
         }
 
-        int x = getIntX(-1);
-        int y = getIntY(-1);
+        int x = getX(-1);
+        int y = getY(-1);
 
         if (x > 0 && y > 0) {
             c.setLocation(x, y);
@@ -143,30 +153,47 @@
 
     public void changeX(int xOffset) {
         if (xOffset != 0) {
-            setX(new Integer(getIntX(0) + xOffset));
+            setX(new Integer(getX(0) + xOffset));
         }
     }
 
     public void changeY(int yOffset) {
         if (yOffset != 0) {
-            setY(new Integer(getIntY(0) + yOffset));
+            setY(new Integer(getY(0) + yOffset));
         }
     }
 
-    public int getIntWidth(int defaultValue) {
-        return (getWidth() != null) ? getWidth().intValue() : defaultValue;
+    private void setY(Integer y) {
+            getPreference().putInt(Y_PROPERTY, y);
     }
-
-    public int getIntHeight(int defaultValue) {
-        return (getHeight() != null) ? getHeight().intValue() : defaultValue;
+    
+    private void setX(Integer x) {
+        getPreference().putInt(X_PROPERTY, x);
     }
-
-    public int getIntX(int defaultValue) {
-        return (getX() != null) ? getX().intValue() : defaultValue;
+    
+    private void setHeight(Integer height) {
+        getPreference().putInt(HEIGHT_PROPERTY, height);
+    }
+         
+  
+    private void setWidth(Integer width) {
+        getPreference().putInt(WIDTH_PROPERTY, width);
+    }
+    
+    public int getWidth(int defaultValue) {
+        return getPreference().getInt(WIDTH_PROPERTY, defaultValue);
+    }
+         
+    public int getHeight(int defaultValue) {
+        return getPreference().getInt(HEIGHT_PROPERTY, defaultValue);
     }
 
-    public int getIntY(int defaultValue) {
-        return (getY() != null) ? getY().intValue() : defaultValue;
+    public int getX(int defaultValue) {
+        return getPreference().getInt(X_PROPERTY, defaultValue);
+    }
+ 
+    public int getY(int defaultValue) {
+        return getPreference().getInt(Y_PROPERTY, defaultValue);
     }
 }
 

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/pref/CayennePreference.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/pref/CayennePreference.java?rev=889634&r1=889633&r2=889634&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/pref/CayennePreference.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/pref/CayennePreference.java Fri Dec 11 14:30:07 2009
@@ -20,10 +20,35 @@
 
 import java.util.prefs.Preferences;
 
-
 public class CayennePreference implements Preference {
 
+    private Preferences rootPreference;
+    private Preferences cayennePreference;
+
+    protected Preferences currentPreference;
+
     public Preferences getRootPreference() {
-        return  Preferences.userRoot().node(CAYENNE_PREFERENCES);
+        if (rootPreference == null) {
+            rootPreference = Preferences.userRoot();
+        }
+        return rootPreference;
+    }
+
+    public Preferences getCayennePreference() {
+        if (cayennePreference == null) {
+            cayennePreference = getRootPreference().node(CAYENNE_PREFERENCE);
+        }
+        return cayennePreference;
+    }
+
+    public Preferences getNode(Class className, String path) {
+        if (path == null || path.length() == 0) {
+            return Preferences.userNodeForPackage(className);
+        }
+        return Preferences.userNodeForPackage(className).node(path);
+    }
+
+    public void setCurrentNodeForPreference(Class className, String path) {
+        currentPreference = getNode(className, path);
     }
 }

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/pref/Preference.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/pref/Preference.java?rev=889634&r1=889633&r2=889634&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/pref/Preference.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/pref/Preference.java Fri Dec 11 14:30:07 2009
@@ -24,7 +24,7 @@
 public interface Preference {
 
     /** Key for preferences. */
-    public static final String CAYENNE_PREFERENCES = "org/apache/cayenne";
+    public static final String CAYENNE_PREFERENCE = "org/apache/cayenne";
     
     /**  node name for editor */ 
     public static final String EDITOR = "editor";
@@ -33,4 +33,6 @@
     public static final String LAST_PROJ_FILES = "lastSeveralProjectFiles";
     
     public Preferences getRootPreference();
+    
+    public Preferences getCayennePreference();
 }

Copied: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/pref/UpgradeCayennePreference.java (from r889607, cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/pref/UpgradeCayennePreferenceDecorator.java)
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/pref/UpgradeCayennePreference.java?p2=cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/pref/UpgradeCayennePreference.java&p1=cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/pref/UpgradeCayennePreferenceDecorator.java&r1=889607&r2=889634&rev=889634&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/pref/UpgradeCayennePreferenceDecorator.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/pref/UpgradeCayennePreference.java Fri Dec 11 14:30:07 2009
@@ -30,7 +30,7 @@
 import org.apache.cayenne.project.CayenneUserDir;
 import org.apache.commons.collections.ExtendedProperties;
 
-public class UpgradeCayennePreferenceDecorator extends CayennePreferenceDecorator {
+public class UpgradeCayennePreference extends CayennePreferenceDecorator {
 
     /** Name of the preferences file. */
     public static final String PREFERENCES_NAME_OLD = "modeler.preferences";
@@ -45,14 +45,14 @@
     public static final String EDITOR_LOGFILE_ENABLED_OLD = "Editor.logfileEnabled";
     public static final String EDITOR_LOGFILE_OLD = "Editor.logfile";
 
-    public UpgradeCayennePreferenceDecorator(Preference decoratedPreference) {
+    public UpgradeCayennePreference(Preference decoratedPreference) {
         super(decoratedPreference);
     }
 
     public void upgrade() {
         try {
 
-            if (!Preferences.userRoot().nodeExists(CAYENNE_PREFERENCES)) {
+            if (!Preferences.userRoot().nodeExists(CAYENNE_PREFERENCE)) {
 
                 File prefsFile = new File(preferencesDirectory(), PREFERENCES_NAME_OLD);
                 if (prefsFile.exists()) {
@@ -61,7 +61,7 @@
                         ep.load(new FileInputStream(prefsFile));
 
                         Preferences prefEditor = Preferences.userRoot().node(
-                                CAYENNE_PREFERENCES).node(EDITOR);
+                                CAYENNE_PREFERENCE).node(EDITOR);
 
                         prefEditor.putBoolean(ModelerPreferences.EDITOR_LOGFILE_ENABLED, ep.getBoolean(EDITOR_LOGFILE_ENABLED_OLD));
                         prefEditor.put(ModelerPreferences.EDITOR_LOGFILE, ep.getString(EDITOR_LOGFILE_OLD));
@@ -110,4 +110,9 @@
         return decoratedPreference.getRootPreference();
     }
 
+    public Preferences getCayennePreference() {
+        upgrade();
+        return decoratedPreference.getCayennePreference();
+    }
+
 }