You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by nt...@apache.org on 2017/02/06 08:14:05 UTC

cayenne git commit: CAY-2199 Modeler on Windows: The same project is displayed twice in "Recent Projects" - remove duplicated projects

Repository: cayenne
Updated Branches:
  refs/heads/master 15308e5dd -> 323771a2e


CAY-2199 Modeler on Windows: The same project is displayed twice in "Recent Projects"
 - remove duplicated projects


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/323771a2
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/323771a2
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/323771a2

Branch: refs/heads/master
Commit: 323771a2ef8acb95b14800d42f278a04aa63ea9e
Parents: 15308e5
Author: Nikita Timofeev <st...@gmail.com>
Authored: Mon Feb 6 11:13:56 2017 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Mon Feb 6 11:13:56 2017 +0300

----------------------------------------------------------------------
 docs/doc/src/main/resources/RELEASE-NOTES.txt   |  1 +
 .../modeler/CayenneModelerController.java       | 41 +++++++-------------
 .../java/org/apache/cayenne/modeler/Main.java   | 14 ++-----
 .../cayenne/modeler/ModelerPreferences.java     | 29 +++++++-------
 .../dialog/welcome/RecentFileListModel.java     | 11 +++---
 .../dialog/welcome/RecentFileListRenderer.java  |  9 +++--
 .../modeler/dialog/welcome/WelcomeScreen.java   |  5 +--
 .../cayenne/modeler/util/RecentFileMenu.java    |  9 ++---
 8 files changed, 51 insertions(+), 68 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/323771a2/docs/doc/src/main/resources/RELEASE-NOTES.txt
----------------------------------------------------------------------
diff --git a/docs/doc/src/main/resources/RELEASE-NOTES.txt b/docs/doc/src/main/resources/RELEASE-NOTES.txt
index 733956d..b3291a0 100644
--- a/docs/doc/src/main/resources/RELEASE-NOTES.txt
+++ b/docs/doc/src/main/resources/RELEASE-NOTES.txt
@@ -36,6 +36,7 @@ CAY-2137 When generating SQL from EJBQL, use "AND" to separate multiple join con
 CAY-2174 Change FK attribute name cause ObjAttribute appear after Reverse Engineering
 CAY-2175 AliasName used in EJBQLQuery is not working if it contains mixed case
 CAY-2183 Newly created DbRelationship is unexpectedly renamed by the Modeler
+CAY-2199 Modeler on Windows: The same project is displayed twice in "Recent Projects"
 
 ----------------------------------
 Release: 4.0.M4

http://git-wip-us.apache.org/repos/asf/cayenne/blob/323771a2/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerController.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerController.java
index ae90f12..ee6abf7 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerController.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerController.java
@@ -263,29 +263,28 @@ public class CayenneModelerController extends CayenneController {
 	/** Adds path to the list of last opened projects in preferences. */
     public void addToLastProjListAction(File file) {
 
-        String path = file.getAbsolutePath();
-        Preferences frefLastProjFiles = ModelerPreferences.getLastProjFilesPref();
-        List<String> arr = ModelerPreferences.getLastProjFiles();
+        Preferences prefLastProjFiles = ModelerPreferences.getLastProjFilesPref();
+        List<File> arr = ModelerPreferences.getLastProjFiles();
         // Add proj path to the preferences
         // Prevent duplicate entries.
-        if (arr.contains(path)) {
-            arr.remove(path);
+        if (arr.contains(file)) {
+            arr.remove(file);
         }
 
-        arr.add(0, path);
+        arr.add(0, file);
         while (arr.size() > ModelerPreferences.LAST_PROJ_FILES_SIZE) {
             arr.remove(arr.size() - 1);
         }
 
         try {
-            frefLastProjFiles.clear();
+            prefLastProjFiles.clear();
         } catch (BackingStoreException ignored) {
             // ignore exception
         }
-        int size = arr.size();
 
+        int size = arr.size();
         for (int i = 0; i < size; i++) {
-            frefLastProjFiles.put(String.valueOf(i), arr.get(i));
+            prefLastProjFiles.put(String.valueOf(i), arr.get(i).getAbsolutePath());
         }
     }
 
@@ -328,21 +327,12 @@ public class CayenneModelerController extends CayenneController {
 
     public void changePathInLastProjListAction(File oldFile, File newFile) {
         Preferences frefLastProjFiles = ModelerPreferences.getLastProjFilesPref();
-        List<String> arr = ModelerPreferences.getLastProjFiles();
-        // Add proj path to the preferences
-        // Prevent duplicate entries.
-        String oldPath = oldFile.getAbsolutePath();
-        String newPath = newFile.getAbsolutePath();
+        List<File> arr = ModelerPreferences.getLastProjFiles();
 
-        if (arr.contains(oldPath)) {
-            arr.remove(oldPath);
-        }
-
-        if (arr.contains(newPath)) {
-            arr.remove(newPath);
-        }
-
-        arr.add(0, newPath);
+        // Add proj path to the preferences
+        arr.remove(oldFile);
+        arr.remove(newFile);
+        arr.add(0, newFile);
         while (arr.size() > ModelerPreferences.LAST_PROJ_FILES_SIZE) {
             arr.remove(arr.size() - 1);
         }
@@ -355,12 +345,11 @@ public class CayenneModelerController extends CayenneController {
 
         int size = arr.size();
         for (int i = 0; i < size; i++) {
-            frefLastProjFiles.put(String.valueOf(i), arr.get(i));
+            frefLastProjFiles.put(String.valueOf(i), arr.get(i).getAbsolutePath());
         }
 
-        getLastDirectory().setDirectory(new File(newPath));
+        getLastDirectory().setDirectory(newFile);
         frame.fireRecentFileListChanged();
     }
-
 	
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/323771a2/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Main.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Main.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Main.java
index d290ca6..ce70c10 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Main.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Main.java
@@ -117,18 +117,12 @@ public class Main {
 
     protected File initialProjectFromPreferences() {
 
-        Preferences autoLoadLastProject = Application.getInstance().getPreferencesNode(
-                GeneralPreferences.class,
-                "");
-
+        Preferences autoLoadLastProject = Application.getInstance().getPreferencesNode(GeneralPreferences.class, "");
         if ((autoLoadLastProject != null)
-                && autoLoadLastProject.getBoolean(
-                        GeneralPreferences.AUTO_LOAD_PROJECT_PREFERENCE,
-                        false)) {
-
-            List<String> lastFiles = ModelerPreferences.getLastProjFiles();
+                && autoLoadLastProject.getBoolean(GeneralPreferences.AUTO_LOAD_PROJECT_PREFERENCE, false)) {
+            List<File> lastFiles = ModelerPreferences.getLastProjFiles();
             if (!lastFiles.isEmpty()) {
-                return new File(lastFiles.get(0));
+                return lastFiles.get(0);
             }
         }
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/323771a2/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ModelerPreferences.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ModelerPreferences.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ModelerPreferences.java
index 1535d85..4d94f11 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ModelerPreferences.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ModelerPreferences.java
@@ -25,8 +25,8 @@ import org.apache.cayenne.pref.UpgradeCayennePreference;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
+import java.io.File;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
 import java.util.prefs.BackingStoreException;
 import java.util.prefs.PreferenceChangeEvent;
@@ -81,29 +81,28 @@ public class ModelerPreferences implements PreferenceChangeListener {
         return getEditorPreferences().node(CayennePreference.LAST_PROJ_FILES);
     }
 
-    public static List<String> getLastProjFiles() {
+    public static List<File> getLastProjFiles() {
         Preferences filesPrefs = getLastProjFilesPref();
-        ArrayList<String> arrayLastProjFiles = new ArrayList<>();
-        String[] keys = null;
+        String[] keys;
         try {
             keys = filesPrefs.keys();
         } catch (BackingStoreException e) {
             logObj.warn("Error reading preferences file.", e);
+            return new ArrayList<>();
         }
 
-        if (keys != null) {
-            int len = keys.length;
-            ArrayList<Integer> keysInteger = new ArrayList<>();
-            for (int i = 0; i < len; i++) {
-                keysInteger.add(i);
-            }
-            Collections.sort(keysInteger);
-            
-            for (int i = 0; i < len; i++) {
-                arrayLastProjFiles.add(filesPrefs.get(keysInteger.get(i).toString(), ""));
+        int len = keys.length;
+        List<File> lastProjectsFiles = new ArrayList<>(len);
+        for (int i = 0; i < len; i++) {
+            String fileName = filesPrefs.get(Integer.toString(i), "");
+            if(!fileName.isEmpty()) {
+                File file = new File(fileName);
+                if(!lastProjectsFiles.contains(file)) {
+                    lastProjectsFiles.add(file);
+                }
             }
         }
-        return arrayLastProjFiles;
+        return lastProjectsFiles;
     }
 
     public void preferenceChange(PreferenceChangeEvent evt) {

http://git-wip-us.apache.org/repos/asf/cayenne/blob/323771a2/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/welcome/RecentFileListModel.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/welcome/RecentFileListModel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/welcome/RecentFileListModel.java
index dc68259..ccea5c7 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/welcome/RecentFileListModel.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/welcome/RecentFileListModel.java
@@ -19,6 +19,7 @@
 
 package org.apache.cayenne.modeler.dialog.welcome;
 
+import java.io.File;
 import java.util.ArrayList;
 import java.util.List;
 import javax.swing.AbstractListModel;
@@ -28,15 +29,15 @@ import org.apache.cayenne.modeler.util.path.PathTrimmer;
 
 class RecentFileListModel extends AbstractListModel<String> {
 
-    private List<String> fileListFull;
+    private List<File> fileListFull;
     private List<String> fileList;
     private static PathTrimmer pathTrimmer = new DefaultPathTrimmer();
 
-    RecentFileListModel(List<String> fileList) {
+    RecentFileListModel(List<File> fileList) {
         this.fileListFull = fileList;
         this.fileList = new ArrayList<>(fileList.size());
-        for(String next : fileList) {
-            this.fileList.add(pathTrimmer.trim(next));
+        for(File next : fileList) {
+            this.fileList.add(pathTrimmer.trim(next.getAbsolutePath()));
         }
     }
 
@@ -50,7 +51,7 @@ class RecentFileListModel extends AbstractListModel<String> {
         return fileList.get(index);
     }
 
-    String getFullElementAt(int index) {
+    File getFullElementAt(int index) {
         return fileListFull.get(index);
     }
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/323771a2/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/welcome/RecentFileListRenderer.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/welcome/RecentFileListRenderer.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/welcome/RecentFileListRenderer.java
index 9b6e1a1..82fe603 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/welcome/RecentFileListRenderer.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/welcome/RecentFileListRenderer.java
@@ -23,6 +23,7 @@ import java.awt.Color;
 import java.awt.Component;
 import java.awt.Rectangle;
 import java.awt.event.MouseEvent;
+import java.io.File;
 import javax.swing.DefaultListCellRenderer;
 import javax.swing.JList;
 import javax.swing.SwingConstants;
@@ -37,7 +38,7 @@ import javax.swing.event.MouseInputListener;
 class RecentFileListRenderer extends DefaultListCellRenderer implements MouseInputListener {
 
     interface OnFileClickListener {
-        void onFileSelect(String fileName);
+        void onFileSelect(File file);
     }
 
     /**
@@ -78,7 +79,7 @@ class RecentFileListRenderer extends DefaultListCellRenderer implements MouseInp
         if (rolloverRow == index) {
             setOpaque(true);
             setBackground(ROLLOVER_BACKGROUND);
-            setToolTipText(getFullText());
+            setToolTipText(getSelectedFile().getAbsolutePath());
         } else {
             setOpaque(false);
         }
@@ -104,7 +105,7 @@ class RecentFileListRenderer extends DefaultListCellRenderer implements MouseInp
     public void mousePressed(MouseEvent e) {
     }
 
-    private String getFullText() {
+    private File getSelectedFile() {
         if(rolloverRow == -1) {
             return null;
         }
@@ -115,7 +116,7 @@ class RecentFileListRenderer extends DefaultListCellRenderer implements MouseInp
         if (!SwingUtilities.isLeftMouseButton(e) || rolloverRow == -1) {
             return;
         }
-        listener.onFileSelect(getFullText());
+        listener.onFileSelect(getSelectedFile());
         rolloverRow = -1; // clear selection
     }
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/323771a2/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/welcome/WelcomeScreen.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/welcome/WelcomeScreen.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/welcome/WelcomeScreen.java
index b9598b7..e1b641d 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/welcome/WelcomeScreen.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/welcome/WelcomeScreen.java
@@ -137,8 +137,7 @@ public class WelcomeScreen extends JScrollPane implements RecentFileListListener
     }
 
     @Override
-    public void onFileSelect(String fileName) {
-        File file = new File(fileName);
+    public void onFileSelect(File file) {
         ActionEvent event = new ActionEvent(file, 0, null);
         // Fire an action with the file as source
         Application.getInstance()
@@ -170,7 +169,7 @@ public class WelcomeScreen extends JScrollPane implements RecentFileListListener
 
     @Override
     public void recentFileListChanged() {
-        List<String> arr = ModelerPreferences.getLastProjFiles();
+        List<File> arr = ModelerPreferences.getLastProjFiles();
         recentProjectsList.setModel(new RecentFileListModel(arr));
     }
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/323771a2/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/RecentFileMenu.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/RecentFileMenu.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/RecentFileMenu.java
index 7a3d59d..8bd9302 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/RecentFileMenu.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/RecentFileMenu.java
@@ -20,6 +20,7 @@
 package org.apache.cayenne.modeler.util;
 
 import java.awt.Component;
+import java.io.File;
 import java.util.List;
 
 import javax.swing.Action;
@@ -59,7 +60,7 @@ public class RecentFileMenu extends JMenu implements RecentFileListListener {
      */
     public void rebuildFromPreferences() {
 
-        List<String> arr = ModelerPreferences.getLastProjFiles();
+        List<File> arr = ModelerPreferences.getLastProjFiles();
         while (arr.size() > ModelerPreferences.LAST_PROJ_FILES_SIZE) {
             arr.remove(arr.size() - 1);
         }
@@ -70,14 +71,12 @@ public class RecentFileMenu extends JMenu implements RecentFileListListener {
         int prefSize = arr.size();
 
         for (int i = 0; i < prefSize; i++) {
-            String name = (String) arr.get(i);
-
+            String name = arr.get(i).getAbsolutePath();
             if (i < curSize) {
                 // update existing one
                 FileMenuItem item = (FileMenuItem) comps[i];
                 item.setText(name);
-            }
-            else {
+            } else {
                 // add a new one
                 FileMenuItem item = new FileMenuItem(name);
                 item.setAction(findAction());