This is an automated email from the ASF dual-hosted git repository.

asf-gitbox-commits pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git


The following commit(s) were added to refs/heads/master by this push:
     new 6baf331e7 Modeler Cleanup
6baf331e7 is described below

commit 6baf331e75d604eedf72271b83e23ced808c4905
Author: Andrus Adamchik <[email protected]>
AuthorDate: Fri Apr 24 19:09:40 2026 -0400

    Modeler Cleanup
---
 .../cayenne/modeler/action/OpenProjectAction.java  | 45 ++++++++-------
 .../cayenne/modeler/action/RevertAction.java       |  5 +-
 .../cayenne/modeler/ui/ModelerController.java      |  8 +--
 .../{util => ui/welcome}/BackgroundPanel.java      |  8 ++-
 .../modeler/ui/welcome/RecentFileListModel.java    | 16 +++---
 .../cayenne/modeler/ui/welcome/WelcomeScreen.java  |  1 -
 .../welcome}/path/CompoundPathTrimmer.java         | 17 ++----
 .../{util => ui/welcome}/path/HomePathTrimmer.java | 13 ++---
 .../welcome}/path/MaxLengthTrimmer.java            | 10 +---
 .../{util => ui/welcome}/path/PathTrimmer.java     |  9 ++-
 .../apache/cayenne/modeler/util/FileMenuItem.java  | 54 ------------------
 .../cayenne/modeler/util/RecentFileMenu.java       | 46 +++++++--------
 .../modeler/util/path/DefaultPathTrimmer.java      | 31 ----------
 .../modeler/util/path/DefaultResourceTrimmer.java  | 40 -------------
 .../cayenne/modeler/util/path/LongPathTrimmer.java | 66 ----------------------
 15 files changed, 85 insertions(+), 284 deletions(-)

diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/OpenProjectAction.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/OpenProjectAction.java
index 3f3a190c8..0e79afec4 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/OpenProjectAction.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/OpenProjectAction.java
@@ -28,13 +28,11 @@ import org.apache.cayenne.project.upgrade.UpgradeMetaData;
 import org.apache.cayenne.project.upgrade.UpgradeService;
 import org.apache.cayenne.resource.Resource;
 import org.apache.cayenne.resource.URLResource;
-import org.apache.cayenne.modeler.util.FileMenuItem;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.swing.JOptionPane;
-import javax.swing.KeyStroke;
-import java.awt.Toolkit;
+import javax.swing.*;
+import java.awt.*;
 import java.awt.datatransfer.DataFlavor;
 import java.awt.datatransfer.Transferable;
 import java.awt.datatransfer.UnsupportedFlavorException;
@@ -51,19 +49,20 @@ public class OpenProjectAction extends ProjectAction {
     private static final Logger LOGGER = 
LoggerFactory.getLogger(OpenProjectAction.class);
 
     private static final Map<String, String> PROJECT_TO_MODELER_VERSION;
+
     static {
         // Correspondence between project version and latest Modeler version 
that can upgrade it.
         // Modeler v4.1 can handle versions from 3.1 and 4.0 (including 
intermediate versions) modeler.
         Map<String, String> map = new HashMap<>();
-        map.put("1.0",      "v3.0");
-        map.put("1.1",      "v3.0");
-        map.put("1.2",      "v3.0");
-        map.put("2.0",      "v3.0");
-        map.put("3.0.0.1",  "v3.1");
+        map.put("1.0", "v3.0");
+        map.put("1.1", "v3.0");
+        map.put("1.2", "v3.0");
+        map.put("2.0", "v3.0");
+        map.put("3.0.0.1", "v3.1");
         PROJECT_TO_MODELER_VERSION = Collections.unmodifiableMap(map);
     }
 
-    private ProjectOpener fileChooser;
+    private final ProjectOpener fileChooser;
 
     public static String getActionName() {
         return "Open Project";
@@ -94,9 +93,13 @@ public class OpenProjectAction extends ProjectAction {
         }
 
         File f = null;
-        if (e.getSource() instanceof FileMenuItem) {
-            FileMenuItem menu = (FileMenuItem) e.getSource();
-            f = menu.getFile();
+        if (e.getSource() instanceof JMenuItem) {
+            JMenuItem menu = (JMenuItem) e.getSource();
+
+            if (menu.getText() != null) {
+                f = new File(menu.getText());
+            }
+
         } else if (e.getSource() instanceof File) {
             f = (File) e.getSource();
         }
@@ -122,7 +125,9 @@ public class OpenProjectAction extends ProjectAction {
         application.getUndoManager().discardAllEdits();
     }
 
-    /** Opens specified project file. File must already exist. */
+    /**
+     * Opens specified project file. File must already exist.
+     */
     public void openProject(File file) {
         try {
             if (!file.exists()) {
@@ -145,20 +150,20 @@ public class OpenProjectAction extends ProjectAction {
             switch (metaData.getUpgradeType()) {
                 case INTERMEDIATE_UPGRADE_NEEDED:
                     String modelerVersion = 
PROJECT_TO_MODELER_VERSION.get(metaData.getProjectVersion());
-                    if(modelerVersion == null) {
+                    if (modelerVersion == null) {
                         modelerVersion = "";
                     }
                     JOptionPane.showMessageDialog(Application.getFrame(),
-                                    "Open the project in the older Modeler " + 
modelerVersion
-                                            + " to do an intermediate 
upgrade\nbefore you can upgrade to latest version.",
-                                    "Can't Upgrade Project", 
JOptionPane.ERROR_MESSAGE);
+                            "Open the project in the older Modeler " + 
modelerVersion
+                                    + " to do an intermediate upgrade\nbefore 
you can upgrade to latest version.",
+                            "Can't Upgrade Project", 
JOptionPane.ERROR_MESSAGE);
                     closeProject(false);
                     return;
 
                 case DOWNGRADE_NEEDED:
                     JOptionPane.showMessageDialog(Application.getFrame(),
-                                    "Can't open project - it was created using 
a newer version of the Modeler",
-                                    "Can't Open Project", 
JOptionPane.ERROR_MESSAGE);
+                            "Can't open project - it was created using a newer 
version of the Modeler",
+                            "Can't Open Project", JOptionPane.ERROR_MESSAGE);
                     closeProject(false);
                     return;
 
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RevertAction.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RevertAction.java
index fb2fd7d1e..4ef5d68f5 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RevertAction.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RevertAction.java
@@ -55,11 +55,10 @@ public class RevertAction extends CayenneAction {
 
         // reopen existing
         if (!isNew && fileDirectory.isFile()) {
-            OpenProjectAction openAction = controller
+            controller
                     .getApplication()
                     .getActionManager()
-                    .getAction(OpenProjectAction.class);
-            openAction.openProject(fileDirectory);
+                    
.getAction(OpenProjectAction.class).openProject(fileDirectory);
         }
 
         // create new
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/ModelerController.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/ModelerController.java
index 6a4097e1d..e02f51614 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/ModelerController.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/ModelerController.java
@@ -21,13 +21,13 @@ package org.apache.cayenne.modeler.ui;
 
 import org.apache.cayenne.CayenneRuntimeException;
 import org.apache.cayenne.modeler.Application;
-import org.apache.cayenne.modeler.pref.LastProjectsPreferences;
 import org.apache.cayenne.modeler.action.ExitAction;
 import org.apache.cayenne.modeler.action.OpenProjectAction;
-import org.apache.cayenne.modeler.platform.PlatformInitializer;
 import org.apache.cayenne.modeler.mvc.RootController;
+import org.apache.cayenne.modeler.platform.PlatformInitializer;
 import org.apache.cayenne.modeler.pref.ComponentGeometry;
 import org.apache.cayenne.modeler.pref.FSPath;
+import org.apache.cayenne.modeler.pref.LastProjectsPreferences;
 import org.apache.cayenne.modeler.ui.project.ProjectController;
 import 
org.apache.cayenne.modeler.ui.project.editor.datamap.dbimport.DbImportController;
 import 
org.apache.cayenne.modeler.ui.project.validator.ProjectValidatorDialogController;
@@ -45,7 +45,6 @@ import java.awt.datatransfer.Transferable;
 import java.awt.dnd.DropTarget;
 import java.awt.dnd.DropTargetAdapter;
 import java.awt.dnd.DropTargetDropEvent;
-import java.awt.event.ActionEvent;
 import java.awt.event.WindowAdapter;
 import java.awt.event.WindowEvent;
 import java.io.File;
@@ -110,8 +109,7 @@ public class ModelerController extends RootController {
         if (transferFile.isFile()) {
             FileFilter filter = FileFilters.getApplicationFilter();
             if (filter.accept(transferFile)) {
-                ActionEvent e = new ActionEvent(transferFile, 
ActionEvent.ACTION_PERFORMED, "OpenProject");
-                
Application.getInstance().getActionManager().getAction(OpenProjectAction.class).actionPerformed(e);
+                
Application.getInstance().getActionManager().getAction(OpenProjectAction.class).openProject(transferFile);
                 return true;
             }
         }
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/BackgroundPanel.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/welcome/BackgroundPanel.java
similarity index 89%
rename from 
modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/BackgroundPanel.java
rename to 
modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/welcome/BackgroundPanel.java
index c368e5144..903fda024 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/BackgroundPanel.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/welcome/BackgroundPanel.java
@@ -17,7 +17,9 @@
  *  under the License.
  ****************************************************************/
 
-package org.apache.cayenne.modeler.util;
+package org.apache.cayenne.modeler.ui.welcome;
+
+import org.apache.cayenne.modeler.util.ModelerUtil;
 
 import javax.swing.ImageIcon;
 import javax.swing.JPanel;
@@ -25,9 +27,9 @@ import java.awt.Dimension;
 import java.awt.Graphics;
 import java.awt.Image;
 
-public class BackgroundPanel extends JPanel {
+class BackgroundPanel extends JPanel {
 
-    private Image backgroundImage;
+    private final Image backgroundImage;
 
     public BackgroundPanel(String imagePath) {
         super(null);
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/welcome/RecentFileListModel.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/welcome/RecentFileListModel.java
index 638f86fb4..ff90fee30 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/welcome/RecentFileListModel.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/welcome/RecentFileListModel.java
@@ -19,24 +19,24 @@
 
 package org.apache.cayenne.modeler.ui.welcome;
 
+import org.apache.cayenne.modeler.ui.welcome.path.PathTrimmer;
+
+import javax.swing.*;
 import java.io.File;
 import java.util.ArrayList;
 import java.util.List;
-import javax.swing.AbstractListModel;
-
-import org.apache.cayenne.modeler.util.path.DefaultPathTrimmer;
-import org.apache.cayenne.modeler.util.path.PathTrimmer;
 
 class RecentFileListModel extends AbstractListModel<String> {
 
-    private List<File> fileListFull;
-    private List<String> fileList;
-    private static PathTrimmer pathTrimmer = new DefaultPathTrimmer();
+    private final List<File> fileListFull;
+    private final List<String> fileList;
+
+    private static final PathTrimmer pathTrimmer = PathTrimmer.getInstance();
 
     RecentFileListModel(List<File> fileList) {
         this.fileListFull = fileList;
         this.fileList = new ArrayList<>(fileList.size());
-        for(File next : fileList) {
+        for (File next : fileList) {
             this.fileList.add(pathTrimmer.trim(next.getAbsolutePath()));
         }
     }
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/welcome/WelcomeScreen.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/welcome/WelcomeScreen.java
index 744e75cf8..c861d1d4d 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/welcome/WelcomeScreen.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/welcome/WelcomeScreen.java
@@ -24,7 +24,6 @@ import 
org.apache.cayenne.modeler.pref.LastProjectsPreferences;
 import org.apache.cayenne.modeler.action.NewProjectAction;
 import org.apache.cayenne.modeler.action.OpenProjectAction;
 import org.apache.cayenne.modeler.event.model.RecentFileListListener;
-import org.apache.cayenne.modeler.util.BackgroundPanel;
 import org.apache.cayenne.modeler.util.ModelerUtil;
 
 import javax.swing.*;
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/path/CompoundPathTrimmer.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/welcome/path/CompoundPathTrimmer.java
similarity index 77%
rename from 
modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/path/CompoundPathTrimmer.java
rename to 
modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/welcome/path/CompoundPathTrimmer.java
index 40b14d930..2c38107d2 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/path/CompoundPathTrimmer.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/welcome/path/CompoundPathTrimmer.java
@@ -17,28 +17,23 @@
  *  under the License.
  ****************************************************************/
 
-package org.apache.cayenne.modeler.util.path;
+package org.apache.cayenne.modeler.ui.welcome.path;
 
-public class CompoundPathTrimmer implements PathTrimmer {
+class CompoundPathTrimmer implements PathTrimmer {
 
-    protected int maxLength;
-
-    private PathTrimmer[] decorators;
+    private final int maxLength;
+    private final PathTrimmer[] decorators;
 
     public CompoundPathTrimmer(int maxLength, PathTrimmer... decorators) {
         this.maxLength = maxLength;
         this.decorators = decorators;
     }
 
-    public CompoundPathTrimmer(PathTrimmer... decorators) {
-        this(DEFAULT_MAX_LENGTH, decorators);
-    }
-
     @Override
     public String trim(String path) {
-        for(PathTrimmer decorator : decorators) {
+        for (PathTrimmer decorator : decorators) {
             path = decorator.trim(path);
-            if(path.length() <= maxLength) {
+            if (path.length() <= maxLength) {
                 return path;
             }
         }
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/path/HomePathTrimmer.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/welcome/path/HomePathTrimmer.java
similarity index 77%
rename from 
modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/path/HomePathTrimmer.java
rename to 
modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/welcome/path/HomePathTrimmer.java
index bf77df208..cf5cdc0c2 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/path/HomePathTrimmer.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/welcome/path/HomePathTrimmer.java
@@ -17,18 +17,17 @@
  *  under the License.
  ****************************************************************/
 
-package org.apache.cayenne.modeler.util.path;
+package org.apache.cayenne.modeler.ui.welcome.path;
 
 import java.io.File;
 
-public class HomePathTrimmer implements PathTrimmer {
+class HomePathTrimmer implements PathTrimmer {
+
+    private static final String homeDir = System.getProperty("user.home");
+    private final static String replacement;
 
-    private static String homeDir = System.getProperty("user.home");
-    private static String replacement = "~";
     static {
-        if(homeDir.endsWith(File.separator)) {
-            replacement = "~" + File.separator;
-        }
+        replacement = homeDir.endsWith(File.separator) ? "~" + File.separator 
: "~";
     }
 
     @Override
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/path/MaxLengthTrimmer.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/welcome/path/MaxLengthTrimmer.java
similarity index 87%
rename from 
modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/path/MaxLengthTrimmer.java
rename to 
modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/welcome/path/MaxLengthTrimmer.java
index ea6be2921..049cab791 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/path/MaxLengthTrimmer.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/welcome/path/MaxLengthTrimmer.java
@@ -17,15 +17,11 @@
  *  under the License.
  ****************************************************************/
 
-package org.apache.cayenne.modeler.util.path;
+package org.apache.cayenne.modeler.ui.welcome.path;
 
 public class MaxLengthTrimmer implements PathTrimmer {
 
-    private int maxLength;
-
-    public MaxLengthTrimmer() {
-        this(DEFAULT_MAX_LENGTH);
-    }
+    private final int maxLength;
 
     public MaxLengthTrimmer(int maxLength) {
         this.maxLength = maxLength;
@@ -33,7 +29,7 @@ public class MaxLengthTrimmer implements PathTrimmer {
 
     @Override
     public String trim(String path) {
-        if(path.length() <= maxLength) {
+        if (path.length() <= maxLength) {
             return path;
         }
         return "..." + path.substring(path.length() - maxLength);
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/path/PathTrimmer.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/welcome/path/PathTrimmer.java
similarity index 79%
rename from 
modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/path/PathTrimmer.java
rename to 
modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/welcome/path/PathTrimmer.java
index 1f80b1f45..701172c5c 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/path/PathTrimmer.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/welcome/path/PathTrimmer.java
@@ -17,10 +17,17 @@
  *  under the License.
  ****************************************************************/
 
-package org.apache.cayenne.modeler.util.path;
+package org.apache.cayenne.modeler.ui.welcome.path;
 
 public interface PathTrimmer {
     int DEFAULT_MAX_LENGTH = 120;
 
     String trim(String path);
+
+    static PathTrimmer getInstance() {
+        return new CompoundPathTrimmer(
+                DEFAULT_MAX_LENGTH,
+                new HomePathTrimmer(),
+                new MaxLengthTrimmer(DEFAULT_MAX_LENGTH));
+    }
 }
\ No newline at end of file
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/FileMenuItem.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/FileMenuItem.java
deleted file mode 100644
index 7eb918f86..000000000
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/FileMenuItem.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*****************************************************************
- *   Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    https://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- ****************************************************************/
-
-package org.apache.cayenne.modeler.util;
-
-import javax.swing.*;
-import java.io.File;
-
-/**
- * A menu item that points to a file.
- */
-public class FileMenuItem extends JMenuItem {
-
-    public FileMenuItem(String fileName) {
-        super(fileName);
-    }
-
-    @Override
-    protected void configurePropertiesFromAction(Action a) {
-        // excludes most generic action keys that are not applicable here...
-        setIcon(a != null ? (Icon) a.getValue(Action.SMALL_ICON) : null);
-        setEnabled(a == null || a.isEnabled());
-    }
-
-    /**
-     * Returns a file if this menu item points to a readable file or 
directory, or null
-     * otherwise.
-     */
-    public File getFile() {
-        if (getText() == null) {
-            return null;
-        }
-
-        File f = new File(getText());
-        return f.canRead() ? f : null;
-    }
-
-}
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 03877b717..e2c5eb574 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
@@ -30,29 +30,17 @@ import java.io.File;
 import java.util.List;
 
 /**
- * Menu that contains a list of previously used files. It is built from 
CayenneModeler
- * preferences by calling <code>rebuildFromPreferences</code>.
- * 
+ * Menu that contains a list of previously used files. It is built from 
CayenneModeler preferences via
+ * {@link #rebuildFromPreferences()}
  */
 public class RecentFileMenu extends JMenu implements RecentFileListListener {
-
-    /**
-     * Constructor for RecentFileMenu.
-     */
+    
     public RecentFileMenu(String s) {
         super(s);
     }
 
     /**
-     * @see javax.swing.JMenu#add(JMenuItem)
-     */
-    public FileMenuItem add(FileMenuItem menuItem) {
-        return (FileMenuItem) super.add(menuItem);
-    }
-
-    /**
-     * Rebuilds internal menu items list with the files stored in 
CayenneModeler
-     * preferences.
+     * Rebuilds internal menu items list with the files stored in 
CayenneModeler preferences.
      */
     public void rebuildFromPreferences() {
 
@@ -63,16 +51,24 @@ public class RecentFileMenu extends JMenu implements 
RecentFileListListener {
         int curSize = comps.length;
         int prefSize = files.size();
 
+        OpenProjectAction action = 
Application.getInstance().getActionManager().getAction(OpenProjectAction.class);
+
         for (int i = 0; i < prefSize; i++) {
             String name = files.get(i).getAbsolutePath();
             if (i < curSize) {
-                // update existing one
-                FileMenuItem item = (FileMenuItem) comps[i];
-                item.setText(name);
+                ((JMenuItem) comps[i]).setText(name);
             } else {
-                // add a new one
-                FileMenuItem item = new FileMenuItem(name);
-                item.setAction(findAction());
+
+                JMenuItem item = new JMenuItem(name) {
+                    @Override
+                    protected void configurePropertiesFromAction(Action a) {
+                        // exclude most generic action keys that are not 
applicable here
+                        setIcon((Icon) a.getValue(Action.SMALL_ICON));
+                        setEnabled(a.isEnabled());
+                    }
+                };
+
+                item.setAction(action);
                 add(item);
             }
         }
@@ -83,11 +79,7 @@ public class RecentFileMenu extends JMenu implements 
RecentFileListListener {
         }
     }
 
-    protected Action findAction() {
-        return Application.getInstance().getActionManager().getAction(
-                OpenProjectAction.class);
-    }
-
+    @Override
     public void recentFileListChanged() {
         rebuildFromPreferences();
         setEnabled(getMenuComponentCount() > 0);
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/path/DefaultPathTrimmer.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/path/DefaultPathTrimmer.java
deleted file mode 100644
index 77155ae8e..000000000
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/path/DefaultPathTrimmer.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*****************************************************************
- *   Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    https://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- ****************************************************************/
-
-package org.apache.cayenne.modeler.util.path;
-
-public class DefaultPathTrimmer extends CompoundPathTrimmer {
-    public DefaultPathTrimmer() {
-        super(
-                new HomePathTrimmer(),
-//                new DefaultResourceTrimmer(),
-//                new LongPathTrimmer(),
-                new MaxLengthTrimmer(DEFAULT_MAX_LENGTH)
-        );
-    }
-}
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/path/DefaultResourceTrimmer.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/path/DefaultResourceTrimmer.java
deleted file mode 100644
index 475fe4ffb..000000000
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/path/DefaultResourceTrimmer.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*****************************************************************
- *   Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    https://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- ****************************************************************/
-
-package org.apache.cayenne.modeler.util.path;
-
-import java.io.File;
-
-public class DefaultResourceTrimmer implements PathTrimmer {
-
-    private static String DEFAULT_RESOURCE_PATH;
-    private static String DEFAULT_TEST_RESOURCE_PATH;
-    static {
-        String separator = File.separator;
-        DEFAULT_RESOURCE_PATH = "src" + separator + "main" + separator + 
"resources";
-        DEFAULT_TEST_RESOURCE_PATH = "src" + separator + "test" + separator + 
"resources";
-    }
-
-    @Override
-    public String trim(String path) {
-        path = path.replace(DEFAULT_TEST_RESOURCE_PATH, "..test..");
-        path = path.replace(DEFAULT_RESOURCE_PATH, "..main..");
-        return path;
-    }
-}
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/path/LongPathTrimmer.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/path/LongPathTrimmer.java
deleted file mode 100644
index b2033fb1a..000000000
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/path/LongPathTrimmer.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*****************************************************************
- *   Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    https://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- ****************************************************************/
-
-package org.apache.cayenne.modeler.util.path;
-
-import java.io.File;
-
-public class LongPathTrimmer implements PathTrimmer {
-
-    private static final String PATH_SEPARATOR = File.separator;
-    private static final int PATH_LENGTH_THRESHOLD = 8;
-
-    private String[] splitPath(String path) {
-        return path.split(PATH_SEPARATOR);
-    }
-
-    private String joinPath(String[] components) {
-        if(components.length == 0) {
-            return "";
-        }
-        StringBuilder sb = new StringBuilder(components[0]);
-        for(int i=1; i<components.length; i++) {
-            sb.append(PATH_SEPARATOR);
-            sb.append(components[i]);
-        }
-        return sb.toString();
-    }
-
-    @Override
-    public String trim(String path) {
-        String[] components = splitPath(path);
-        if(components.length <= PATH_LENGTH_THRESHOLD + 1) {
-            return path;
-        }
-        String[] strippedComponents = new String[PATH_LENGTH_THRESHOLD + 1];
-        int half = PATH_LENGTH_THRESHOLD / 2;
-        int end = components.length - half;
-        int idx = 0;
-        boolean trimAdded = false;
-        for(int i=0; i<components.length; i++) {
-            if(i < half || i >= end) {
-                strippedComponents[idx++] = components[i];
-            } else if(!trimAdded) {
-                strippedComponents[idx++] = "...";
-                trimAdded = true;
-            }
-        }
-        return joinPath(strippedComponents);
-    }
-}

Reply via email to