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