You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2026/04/25 21:38:00 UTC
(cayenne) 03/15: Modeler cleanup
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
commit 3f576adc980ed402b4cfe9dd695531cdd73ca9e2
Author: Andrus Adamchik <an...@objectstyle.com>
AuthorDate: Sat Apr 25 08:01:13 2026 -0400
Modeler cleanup
decomposing MainFrame
---
.../apache/cayenne/modeler/action/FindAction.java | 2 +-
.../modeler/action/ModelerAbstractAction.java | 2 +-
.../cayenne/modeler/ui/ModelerController.java | 5 +-
.../apache/cayenne/modeler/ui/ModelerFrame.java | 131 ++-----------
.../ui/{ModelerFrame.java => ModelerMenuBar.java} | 216 ++++++---------------
.../ui/dbloadresult/DbLoadResultDialog.java | 2 +-
.../graph/action/ShowGraphEntityAction.java | 2 +-
.../modeler/undo/JUndoableCheckBoxEdit.java | 2 +-
.../cayenne/modeler/undo/TextCompoundEdit.java | 4 +-
.../cayenne/modeler/util/RecentFileMenu.java | 87 ---------
10 files changed, 82 insertions(+), 371 deletions(-)
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/FindAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/FindAction.java
index 957bf0ae3..c2af85e86 100755
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/FindAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/FindAction.java
@@ -137,7 +137,7 @@ public class FindAction extends ModelerAbstractAction {
* Navigate to search result
*/
public static void jumpToResult(FindAction.SearchResultEntry searchResultEntry) {
- ProjectView projectView = ((ModelerFrame) Application.getInstance().getFrameController().getView()).getEditorPanel();
+ ProjectView projectView = ((ModelerFrame) Application.getInstance().getFrameController().getView()).getProjectView();
DataChannelDescriptor domain = (DataChannelDescriptor) Application.getInstance().getProject().getRootNode();
ProjectController controller = Application.getInstance().getFrameController().getProjectController();
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ModelerAbstractAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ModelerAbstractAction.java
index 421167e91..31fc46339 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ModelerAbstractAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ModelerAbstractAction.java
@@ -255,6 +255,6 @@ public abstract class ModelerAbstractAction extends AbstractAction {
return ((ModelerFrame) Application
.getInstance()
.getFrameController()
- .getView()).getEditorPanel();
+ .getView()).getProjectView();
}
}
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 58bd425bf..062fe35ef 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
@@ -38,7 +38,6 @@ import org.apache.cayenne.validation.ValidationResult;
import javax.swing.*;
import javax.swing.filechooser.FileFilter;
-import java.awt.*;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.dnd.DropTarget;
@@ -162,7 +161,7 @@ public class ModelerController extends RootController {
projectController.saveSelectionToPrefs();
// --- update view
- view.setEditorPanel(null);
+ view.setProjectView(null);
// repaint is needed, since sometimes there is a
// trace from menu left on the screen
@@ -182,7 +181,7 @@ public class ModelerController extends RootController {
projectController.projectOpened(project);
view.setTitle(getProjectLocationString());
- view.setEditorPanel(projectController.getView());
+ view.setProjectView(projectController.getView());
projectController.restoreSelectionFromPrefs();
application.getActionManager().projectOpened();
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/ModelerFrame.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/ModelerFrame.java
index c5ff4c796..5482286b6 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/ModelerFrame.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/ModelerFrame.java
@@ -20,13 +20,11 @@
package org.apache.cayenne.modeler.ui;
import org.apache.cayenne.modeler.ui.project.ProjectView;
-import org.apache.cayenne.modeler.action.*;
+import org.apache.cayenne.modeler.action.ActionManager;
import org.apache.cayenne.modeler.ui.logconsole.LogConsoleController;
import org.apache.cayenne.modeler.ui.welcome.WelcomeScreen;
-import org.apache.cayenne.modeler.event.model.RecentFileListListener;
import org.apache.cayenne.modeler.pref.ComponentGeometry;
import org.apache.cayenne.modeler.util.ModelerUtil;
-import org.apache.cayenne.modeler.util.RecentFileMenu;
import org.apache.cayenne.modeler.swing.border.TopBorder;
import org.slf4j.LoggerFactory;
@@ -34,34 +32,29 @@ import javax.swing.*;
import java.awt.*;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
-import java.awt.event.KeyEvent;
-import java.util.ArrayList;
-import java.util.List;
/**
* Main frame of CayenneModeler GUI
*/
public class ModelerFrame extends JFrame {
- private final LogConsoleController logConsoleController;
private final ActionManager actionManager;
- private final List<RecentFileListListener> recentFileListeners;
private final JSplitPane splitPane;
private final JLabel status;
private final WelcomeScreen welcomePanel;
+ private final ModelerMenuBar menuBar;
private ProjectView projectView;
- private JCheckBoxMenuItem logMenu;
private Component dockComponent;
public ModelerFrame(ActionManager actionManager, LogConsoleController logConsoleController) {
this.actionManager = actionManager;
- this.logConsoleController = logConsoleController;
- this.recentFileListeners = new ArrayList<>();
setIconImage(ModelerUtil.buildIcon("CayenneModeler.png").getImage());
- initMenus();
+ getContentPane().setLayout(new BorderLayout());
+ this.menuBar = new ModelerMenuBar(actionManager, logConsoleController);
+ setJMenuBar(menuBar);
initToolbar();
status = new JLabel();
@@ -93,111 +86,18 @@ public class ModelerFrame extends JFrame {
getContentPane().add(statusBar, BorderLayout.SOUTH);
this.welcomePanel = new WelcomeScreen();
- recentFileListeners.add(welcomePanel);
+ this.menuBar.addRecentFileListener(welcomePanel);
fireRecentFileListChanged(); // start filling list in welcome screen and in menu
- setEditorPanel(null);
- }
-
- protected void initMenus() {
- getContentPane().setLayout(new BorderLayout());
-
- JMenu fileMenu = new JMenu("File");
- JMenu editMenu = new JMenu("Edit");
- JMenu projectMenu = new JMenu("Project");
- JMenu toolMenu = new JMenu("Tools");
- JMenu helpMenu = new JMenu("Help");
-
- fileMenu.setMnemonic(KeyEvent.VK_F);
- editMenu.setMnemonic(KeyEvent.VK_E);
- projectMenu.setMnemonic(KeyEvent.VK_P);
- toolMenu.setMnemonic(KeyEvent.VK_T);
- helpMenu.setMnemonic(KeyEvent.VK_H);
-
- fileMenu.add(actionManager.getAction(NewProjectAction.class).buildMenu());
- fileMenu.add(actionManager.getAction(OpenProjectAction.class).buildMenu());
- fileMenu.add(actionManager.getAction(ProjectAction.class).buildMenu());
- fileMenu.add(actionManager.getAction(ImportDataMapAction.class).buildMenu());
- fileMenu.addSeparator();
- fileMenu.add(actionManager.getAction(SaveAction.class).buildMenu());
- fileMenu.add(actionManager.getAction(SaveAsAction.class).buildMenu());
- fileMenu.add(actionManager.getAction(RevertAction.class).buildMenu());
- fileMenu.addSeparator();
-
- editMenu.add(actionManager.getAction(UndoAction.class).buildMenu());
- editMenu.add(actionManager.getAction(RedoAction.class).buildMenu());
- editMenu.add(actionManager.getAction(CutAction.class).buildMenu());
- editMenu.add(actionManager.getAction(CopyAction.class).buildMenu());
- editMenu.add(actionManager.getAction(PasteAction.class).buildMenu());
-
- RecentFileMenu recentFileMenu = new RecentFileMenu("Recent Projects");
- recentFileListeners.add(recentFileMenu);
- fileMenu.add(recentFileMenu);
-
- fileMenu.addSeparator();
- fileMenu.add(actionManager.getAction(ExitAction.class).buildMenu());
-
- projectMenu.add(actionManager.getAction(ValidateAction.class).buildMenu());
- projectMenu.add(actionManager.getAction(ShowValidationConfigAction.class).buildMenu());
- projectMenu.addSeparator();
- projectMenu.add(actionManager.getAction(CreateNodeAction.class).buildMenu());
- projectMenu.add(actionManager.getAction(CreateDataMapAction.class).buildMenu());
-
- projectMenu.add(actionManager.getAction(CreateObjEntityAction.class).buildMenu());
- projectMenu.add(actionManager.getAction(CreateEmbeddableAction.class).buildMenu());
- projectMenu.add(actionManager.getAction(CreateDbEntityAction.class).buildMenu());
-
- projectMenu.add(actionManager.getAction(CreateProcedureAction.class).buildMenu());
- projectMenu.add(actionManager.getAction(CreateQueryAction.class).buildMenu());
-
- projectMenu.addSeparator();
- projectMenu.add(actionManager.getAction(ObjEntitySyncAction.class).buildMenu());
- projectMenu.add(actionManager.getAction(DbEntitySyncAction.class).buildMenu());
- projectMenu.addSeparator();
- projectMenu.add(actionManager.getAction(RemoveAction.class).buildMenu());
-
- toolMenu.add(actionManager.getAction(InferRelationshipsAction.class).buildMenu());
- toolMenu.add(actionManager.getAction(ImportEOModelAction.class).buildMenu());
- toolMenu.addSeparator();
- toolMenu.add(actionManager.getAction(GenerateCodeAction.class).buildMenu());
- toolMenu.add(actionManager.getAction(GenerateDBAction.class).buildMenu());
- toolMenu.add(actionManager.getAction(MigrateAction.class).buildMenu());
-
- // Menu for opening Log console
- toolMenu.addSeparator();
- logMenu = actionManager.getAction(ShowLogConsoleAction.class).buildCheckBoxMenu();
-
- if (!logConsoleController.getConsoleProperty(LogConsoleController.DOCKED_PROPERTY)
- && logConsoleController.getConsoleProperty(LogConsoleController.SHOW_CONSOLE_PROPERTY)) {
- logConsoleController.setConsoleProperty(LogConsoleController.SHOW_CONSOLE_PROPERTY, false);
- }
-
- updateLogConsoleMenu();
- toolMenu.add(logMenu);
-
- toolMenu.addSeparator();
- toolMenu.add(actionManager.getAction(ConfigurePreferencesAction.class).buildMenu());
-
- helpMenu.add(actionManager.getAction(AboutAction.class).buildMenu());
- helpMenu.add(actionManager.getAction(DocumentationAction.class).buildMenu());
-
- JMenuBar menuBar = new JMenuBar();
-
- menuBar.add(fileMenu);
- menuBar.add(editMenu);
- menuBar.add(projectMenu);
- menuBar.add(toolMenu);
- menuBar.add(helpMenu);
-
- setJMenuBar(menuBar);
+ setProjectView(null);
}
/**
* Selects/deselects menu item, depending on status of log console
*/
public void updateLogConsoleMenu() {
- logMenu.setSelected(logConsoleController.getConsoleProperty(LogConsoleController.SHOW_CONSOLE_PROPERTY));
+ menuBar.updateLogConsoleMenu();
}
/**
@@ -263,15 +163,15 @@ public class ModelerFrame extends JFrame {
});
}
- public ProjectView getEditorPanel() {
- return projectView;
- }
-
public JLabel getStatus() {
return status;
}
- public void setEditorPanel(ProjectView projectView) {
+ public ProjectView getProjectView() {
+ return projectView;
+ }
+
+ public void setProjectView(ProjectView projectView) {
int oldLocation = splitPane.getDividerLocation();
this.projectView = projectView;
@@ -290,9 +190,6 @@ public class ModelerFrame extends JFrame {
* Notifies all listeners that recent file list has changed
*/
public void fireRecentFileListChanged() {
- for (RecentFileListListener recentFileListener : recentFileListeners) {
- recentFileListener.recentFileListChanged();
- }
+ menuBar.fireRecentFileListChanged();
}
-
}
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/ModelerFrame.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/ModelerMenuBar.java
similarity index 51%
copy from modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/ModelerFrame.java
copy to modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/ModelerMenuBar.java
index c5ff4c796..09a83c4d2 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/ModelerFrame.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/ModelerMenuBar.java
@@ -19,90 +19,29 @@
package org.apache.cayenne.modeler.ui;
-import org.apache.cayenne.modeler.ui.project.ProjectView;
+import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.action.*;
-import org.apache.cayenne.modeler.ui.logconsole.LogConsoleController;
-import org.apache.cayenne.modeler.ui.welcome.WelcomeScreen;
import org.apache.cayenne.modeler.event.model.RecentFileListListener;
-import org.apache.cayenne.modeler.pref.ComponentGeometry;
-import org.apache.cayenne.modeler.util.ModelerUtil;
-import org.apache.cayenne.modeler.util.RecentFileMenu;
-import org.apache.cayenne.modeler.swing.border.TopBorder;
-import org.slf4j.LoggerFactory;
+import org.apache.cayenne.modeler.pref.LastProjectsPreferences;
+import org.apache.cayenne.modeler.ui.logconsole.LogConsoleController;
import javax.swing.*;
import java.awt.*;
-import java.awt.event.ComponentAdapter;
-import java.awt.event.ComponentEvent;
import java.awt.event.KeyEvent;
+import java.io.File;
import java.util.ArrayList;
import java.util.List;
-/**
- * Main frame of CayenneModeler GUI
- */
-public class ModelerFrame extends JFrame {
+class ModelerMenuBar extends JMenuBar {
private final LogConsoleController logConsoleController;
- private final ActionManager actionManager;
+ private final JCheckBoxMenuItem logMenu;
private final List<RecentFileListListener> recentFileListeners;
- private final JSplitPane splitPane;
- private final JLabel status;
- private final WelcomeScreen welcomePanel;
-
- private ProjectView projectView;
- private JCheckBoxMenuItem logMenu;
- private Component dockComponent;
-
- public ModelerFrame(ActionManager actionManager, LogConsoleController logConsoleController) {
- this.actionManager = actionManager;
+ ModelerMenuBar(ActionManager actionManager, LogConsoleController logConsoleController) {
this.logConsoleController = logConsoleController;
this.recentFileListeners = new ArrayList<>();
- setIconImage(ModelerUtil.buildIcon("CayenneModeler.png").getImage());
- initMenus();
- initToolbar();
-
- status = new JLabel();
- status.setFont(status.getFont().deriveFont(Font.PLAIN, 10));
-
- splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
- splitPane.setBorder(TopBorder.create());
- splitPane.getInsets().left = 5;
- splitPane.getInsets().right = 5;
- splitPane.setResizeWeight(0.7);
-
- try {
- ComponentGeometry geometry = new ComponentGeometry(this.getClass(), getClass().getSimpleName() + "/splitPane/divider");
- geometry.bindIntProperty(splitPane, JSplitPane.DIVIDER_LOCATION_PROPERTY, 400);
- } catch (Exception ex) {
- LoggerFactory.getLogger(getClass()).error("Cannot bind divider property", ex);
- }
-
- JPanel statusBar = new JPanel(new FlowLayout(FlowLayout.LEFT, 3, 1));
- statusBar.setBorder(TopBorder.create());
- // add placeholder
- statusBar.add(Box.createVerticalStrut(16));
- statusBar.add(status);
-
- if (getContentPane() instanceof JPanel) {
- ((JPanel) getContentPane()).setBorder(BorderFactory.createEmptyBorder());
- }
- getContentPane().add(splitPane, BorderLayout.CENTER);
- getContentPane().add(statusBar, BorderLayout.SOUTH);
-
- this.welcomePanel = new WelcomeScreen();
- recentFileListeners.add(welcomePanel);
-
- fireRecentFileListChanged(); // start filling list in welcome screen and in menu
-
- setEditorPanel(null);
- }
-
- protected void initMenus() {
- getContentPane().setLayout(new BorderLayout());
-
JMenu fileMenu = new JMenu("File");
JMenu editMenu = new JMenu("Edit");
JMenu projectMenu = new JMenu("Project");
@@ -182,117 +121,80 @@ public class ModelerFrame extends JFrame {
helpMenu.add(actionManager.getAction(AboutAction.class).buildMenu());
helpMenu.add(actionManager.getAction(DocumentationAction.class).buildMenu());
- JMenuBar menuBar = new JMenuBar();
-
- menuBar.add(fileMenu);
- menuBar.add(editMenu);
- menuBar.add(projectMenu);
- menuBar.add(toolMenu);
- menuBar.add(helpMenu);
-
- setJMenuBar(menuBar);
+ add(fileMenu);
+ add(editMenu);
+ add(projectMenu);
+ add(toolMenu);
+ add(helpMenu);
}
/**
* Selects/deselects menu item, depending on status of log console
*/
- public void updateLogConsoleMenu() {
+ void updateLogConsoleMenu() {
logMenu.setSelected(logConsoleController.getConsoleProperty(LogConsoleController.SHOW_CONSOLE_PROPERTY));
}
- /**
- * Plugs a component in the frame, between main area and status bar
- */
- public void setDockComponent(Component c) {
- if (dockComponent == c) {
- return;
- }
+ void addRecentFileListener(RecentFileListListener listener) {
+ recentFileListeners.add(listener);
+ }
- if (dockComponent != null) {
- splitPane.setBottomComponent(null);
+ void fireRecentFileListChanged() {
+ for (RecentFileListListener listener : recentFileListeners) {
+ listener.recentFileListChanged();
}
+ }
- dockComponent = c;
+ static class RecentFileMenu extends JMenu implements RecentFileListListener {
- if (dockComponent != null) {
- splitPane.setBottomComponent(dockComponent);
+ public RecentFileMenu(String s) {
+ super(s);
}
- splitPane.validate();
- }
+ /**
+ * Rebuilds internal menu items list with the files stored in CayenneModeler preferences.
+ */
+ public void rebuildFromPreferences() {
- protected void initToolbar() {
-
- MainToolBar toolBar = new MainToolBar(actionManager);
- getContentPane().add(toolBar, BorderLayout.NORTH);
-
- // Hide some buttons when frame is too small
- int defaultBtnWidth = toolBar.getDefaultButtonWidth();
- addComponentListener(new ComponentAdapter() {
- private final int[] empty = {};
- private final int[] all = {6, 7, 8, 9, 10, 11, 12, 13, 14};
- private final int[] remove = {6, 7};
- private final int[] removeAndCopy = {6, 7, 8, 9, 10, 11};
- private final int[] undo = {12, 13, 14};
- private final int[] undoAndCopy = {8, 9, 10, 11, 12, 13, 14};
-
- @Override
- public void componentResized(ComponentEvent e) {
- int[] hidden, shown;
- if (getSize().width < (13 * defaultBtnWidth + 300)) {
- hidden = all;
- shown = empty;
- } else if (getSize().width < (16 * defaultBtnWidth + 300)) {
- hidden = removeAndCopy;
- shown = undo;
- } else if (getSize().width < (18 * defaultBtnWidth + 300)) {
- hidden = remove;
- shown = undoAndCopy;
- } else {
- hidden = empty;
- shown = all;
- }
+ List<File> files = LastProjectsPreferences.getFiles();
- for (int i : hidden) {
- toolBar.getComponentAtIndex(i).setVisible(false);
- }
- for (int i : shown) {
- toolBar.getComponentAtIndex(i).setVisible(true);
- }
- }
- });
- }
+ // read menus
+ Component[] comps = getMenuComponents();
+ int curSize = comps.length;
+ int prefSize = files.size();
- public ProjectView getEditorPanel() {
- return projectView;
- }
+ OpenProjectAction action = Application.getInstance().getActionManager().getAction(OpenProjectAction.class);
- public JLabel getStatus() {
- return status;
- }
-
- public void setEditorPanel(ProjectView projectView) {
- int oldLocation = splitPane.getDividerLocation();
+ for (int i = 0; i < prefSize; i++) {
+ String name = files.get(i).getAbsolutePath();
+ if (i < curSize) {
+ ((JMenuItem) comps[i]).setText(name);
+ } else {
- this.projectView = projectView;
+ 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);
+ }
+ }
- if (projectView != null) {
- splitPane.setTopComponent(projectView);
- } else {
- splitPane.setTopComponent(welcomePanel);
+ // remove any hanging items
+ for (int i = curSize - 1; i >= prefSize; i--) {
+ remove(i);
+ }
}
- validate();
- splitPane.setDividerLocation(oldLocation);
- }
-
- /**
- * Notifies all listeners that recent file list has changed
- */
- public void fireRecentFileListChanged() {
- for (RecentFileListListener recentFileListener : recentFileListeners) {
- recentFileListener.recentFileListChanged();
+ @Override
+ public void recentFileListChanged() {
+ rebuildFromPreferences();
+ setEnabled(getMenuComponentCount() > 0);
}
}
-
}
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/dbloadresult/DbLoadResultDialog.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/dbloadresult/DbLoadResultDialog.java
index 0a9cff1a1..4685eb2b1 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/dbloadresult/DbLoadResultDialog.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/dbloadresult/DbLoadResultDialog.java
@@ -73,7 +73,7 @@ public class DbLoadResultDialog extends JDialog {
this.setModal(false);
this.setPreferredSize(new Dimension(400, 400));
this.pack();
- this.setLocationRelativeTo(Application.getInstance().getFrameController().getView().getEditorPanel());
+ this.setLocationRelativeTo(Application.getInstance().getFrameController().getView().getProjectView());
}
private void initElements() {
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datadomain/graph/action/ShowGraphEntityAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datadomain/graph/action/ShowGraphEntityAction.java
index 262dfd3f1..494a2dd3f 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datadomain/graph/action/ShowGraphEntityAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datadomain/graph/action/ShowGraphEntityAction.java
@@ -76,7 +76,7 @@ public class ShowGraphEntityAction extends ModelerAbstractAction {
ProjectView editor = ((ModelerFrame) Application
.getInstance()
.getFrameController()
- .getView()).getEditorPanel();
+ .getView()).getProjectView();
editor.getProjectTreeView().getSelectionModel().setSelectionPath(
editor
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/JUndoableCheckBoxEdit.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/JUndoableCheckBoxEdit.java
index 1c8b306a6..0e7ee40a9 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/JUndoableCheckBoxEdit.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/JUndoableCheckBoxEdit.java
@@ -56,7 +56,7 @@ public class JUndoableCheckBoxEdit extends AbstractUndoableEdit {
this.actionListener = actionListener;
this.isSelected = checkBox.isSelected();
- projectView = ((ModelerFrame) Application.getInstance().getFrameController().getView()).getEditorPanel();
+ projectView = ((ModelerFrame) Application.getInstance().getFrameController().getView()).getProjectView();
treePath = projectView.getProjectTreeView().getSelectionPath();
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/TextCompoundEdit.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/TextCompoundEdit.java
index 0b21fc144..62b8ea9b4 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/TextCompoundEdit.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/TextCompoundEdit.java
@@ -67,7 +67,7 @@ public class TextCompoundEdit extends CompoundEdit implements DocumentListener {
this.listener = listener;
ProjectView projectView = ((ModelerFrame) Application.getInstance().getFrameController().getView())
- .getEditorPanel();
+ .getProjectView();
treePath = projectView.getProjectTreeView().getSelectionPath();
@@ -118,7 +118,7 @@ public class TextCompoundEdit extends CompoundEdit implements DocumentListener {
private void restoreSelections() {
ProjectView projectView = ((ModelerFrame) Application.getInstance().getFrameController().getView())
- .getEditorPanel();
+ .getProjectView();
projectView.getProjectTreeView().getSelectionModel().setSelectionPath(treePath);
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
deleted file mode 100644
index 77d2a768d..000000000
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/RecentFileMenu.java
+++ /dev/null
@@ -1,87 +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 org.apache.cayenne.modeler.Application;
-import org.apache.cayenne.modeler.pref.LastProjectsPreferences;
-import org.apache.cayenne.modeler.action.OpenProjectAction;
-import org.apache.cayenne.modeler.event.model.RecentFileListListener;
-
-import javax.swing.*;
-import java.awt.*;
-import java.io.File;
-import java.util.List;
-
-/**
- * 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 {
-
- public RecentFileMenu(String s) {
- super(s);
- }
-
- /**
- * Rebuilds internal menu items list with the files stored in CayenneModeler preferences.
- */
- public void rebuildFromPreferences() {
-
- List<File> files = LastProjectsPreferences.getFiles();
-
- // read menus
- Component[] comps = getMenuComponents();
- 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) {
- ((JMenuItem) comps[i]).setText(name);
- } else {
-
- 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);
- }
- }
-
- // remove any hanging items
- for (int i = curSize - 1; i >= prefSize; i--) {
- remove(i);
- }
- }
-
- @Override
- public void recentFileListChanged() {
- rebuildFromPreferences();
- setEnabled(getMenuComponentCount() > 0);
- }
-}