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/24 23:11:58 UTC
(cayenne) 01/04: Modeler refactoring
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 fddcc5d17f0b2ad8a1d7589c9882110291755849
Author: Andrus Adamchik <an...@objectstyle.com>
AuthorDate: Fri Apr 24 12:56:39 2026 -0400
Modeler refactoring
---
.../org/apache/cayenne/modeler/osx/OSXPanelUI.java | 6 +-
.../org/apache/cayenne/modeler/Application.java | 40 +++++--
.../main/java/org/apache/cayenne/modeler/Main.java | 39 +------
...ayenneModelerModule.java => ModelerModule.java} | 5 +-
.../apache/cayenne/modeler/ModelerPreferences.java | 37 ++-----
.../apache/cayenne/modeler/action/FindAction.java | 4 +-
.../cayenne/modeler/action/NewProjectAction.java | 4 +-
.../cayenne/modeler/action/OpenProjectAction.java | 6 +-
.../cayenne/modeler/action/ProjectAction.java | 4 +-
.../cayenne/modeler/action/RevertAction.java | 4 +-
.../org/apache/cayenne/modeler/ui/MainToolBar.java | 89 +++++++++++++++
...delerController.java => ModelerController.java} | 8 +-
...{CayenneModelerFrame.java => ModelerFrame.java} | 121 +--------------------
.../org/apache/cayenne/modeler/ui/SearchPanel.java | 66 +++++++++++
.../cayenne/modeler/ui/errors/ErrorDialog.java | 4 +-
.../cayenne/modeler/ui/errors/WarningDialog.java | 4 +-
.../modeler/ui/project/ProjectController.java | 6 +-
.../graph/action/ShowGraphEntityAction.java | 4 +-
.../jdbc/JDBCDataSourceEditorController.java | 4 +-
.../duplicates/DuplicatedAttributesDialog.java | 8 +-
.../modeler/undo/JComboBoxUndoListener.java | 30 ++---
.../modeler/undo/JTextFieldUndoListener.java | 23 ++--
.../modeler/undo/JUndoableCheckBoxEdit.java | 8 +-
.../modeler/undo/RelationshipUndoableEdit.java | 16 ++-
.../undo/RemoveCallbackMethodUndoableEdit.java | 10 +-
.../cayenne/modeler/undo/TextCompoundEdit.java | 55 +++++-----
.../apache/cayenne/modeler/util/CayenneAction.java | 4 +-
.../apache/cayenne/modeler/util/CayenneDialog.java | 8 +-
.../apache/cayenne/modeler/util/CayenneTable.java | 12 +-
.../cayenne/modeler/util/ComboBoxAdapter.java | 72 ------------
.../cayenne/modeler/util/DefaultWidgetFactory.java | 19 ++--
.../cayenne/pref/UpgradeCayennePreference.java | 19 +---
.../cayenne/swing/components/MainToolBar.java | 50 ---------
.../modeler/CayenneModelerValidationIT.java | 3 +-
34 files changed, 318 insertions(+), 474 deletions(-)
diff --git a/modeler/cayenne-modeler-mac-ext/src/main/java/org/apache/cayenne/modeler/osx/OSXPanelUI.java b/modeler/cayenne-modeler-mac-ext/src/main/java/org/apache/cayenne/modeler/osx/OSXPanelUI.java
index 244a9e65f..bbf00473d 100644
--- a/modeler/cayenne-modeler-mac-ext/src/main/java/org/apache/cayenne/modeler/osx/OSXPanelUI.java
+++ b/modeler/cayenne-modeler-mac-ext/src/main/java/org/apache/cayenne/modeler/osx/OSXPanelUI.java
@@ -27,7 +27,7 @@ import javax.swing.SwingUtilities;
import javax.swing.plaf.ComponentUI;
import javax.swing.plaf.basic.BasicPanelUI;
-import org.apache.cayenne.modeler.ui.CayenneModelerFrame;
+import org.apache.cayenne.modeler.ui.SearchPanel;
/**
* @since 4.0
@@ -65,8 +65,8 @@ public class OSXPanelUI extends BasicPanelUI {
@Override
protected void installDefaults(final JPanel p) {
super.installDefaults(p);
- if(p instanceof CayenneModelerFrame.SearchPanel) {
- SwingUtilities.invokeLater(((CayenneModelerFrame.SearchPanel) p)::hideSearchLabel);
+ if(p instanceof SearchPanel) {
+ SwingUtilities.invokeLater(((SearchPanel) p)::hideSearchLabel);
} else {
p.setBackground(BACKGROUND);
}
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Application.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Application.java
index 192ac00ab..0fefbfe62 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Application.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Application.java
@@ -24,10 +24,12 @@ import org.apache.cayenne.configuration.xml.DataChannelMetaData;
import org.apache.cayenne.di.Inject;
import org.apache.cayenne.di.Injector;
import org.apache.cayenne.modeler.action.ActionManager;
+import org.apache.cayenne.modeler.action.OpenProjectAction;
+import org.apache.cayenne.modeler.ui.ModelerController;
+import org.apache.cayenne.modeler.ui.ModelerFrame;
import org.apache.cayenne.modeler.ui.logconsole.LogConsoleController;
import org.apache.cayenne.modeler.ui.preferences.classpath.ClasspathPreferencesController;
-import org.apache.cayenne.modeler.ui.CayenneModelerController;
-import org.apache.cayenne.modeler.ui.CayenneModelerFrame;
+import org.apache.cayenne.modeler.ui.preferences.general.GeneralPreferencesController;
import org.apache.cayenne.modeler.undo.CayenneUndoManager;
import org.apache.cayenne.modeler.util.AdapterMapping;
import org.apache.cayenne.modeler.util.WidgetFactory;
@@ -40,6 +42,7 @@ import javax.swing.*;
import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.List;
import java.util.prefs.BackingStoreException;
import java.util.prefs.Preferences;
import java.util.stream.Collectors;
@@ -63,7 +66,7 @@ public class Application {
protected FileClassLoadingService modelerClassLoader;
protected LogConsoleController logConsoleController;
- protected CayenneModelerController frameController;
+ protected ModelerController frameController;
protected String name;
protected AdapterMapping adapterMapping;
protected CayenneUndoManager undoManager;
@@ -90,8 +93,8 @@ public class Application {
}
// static methods that should probably go away eventually...
- public static CayenneModelerFrame getFrame() {
- return (CayenneModelerFrame) getInstance().getFrameController().getView();
+ public static ModelerFrame getFrame() {
+ return (ModelerFrame) getInstance().getFrameController().getView();
}
public Application() {
@@ -147,7 +150,7 @@ public class Application {
return undoManager;
}
- public CayenneModelerController getFrameController() {
+ public ModelerController getFrameController() {
return frameController;
}
@@ -155,7 +158,7 @@ public class Application {
return logConsoleController;
}
- public void startup() {
+ public void startup(File initialProject) {
this.logConsoleController = new LogConsoleController(this);
// init subsystems
@@ -164,7 +167,7 @@ public class Application {
this.adapterMapping = new AdapterMapping();
this.undoManager = new CayenneUndoManager(this);
- this.frameController = new CayenneModelerController(this);
+ this.frameController = new ModelerController(this);
// open up
frameController.onStartup();
@@ -172,6 +175,14 @@ public class Application {
// After prefs have been loaded, we can now show the console if needed
logConsoleController.showConsoleIfNeeded();
getFrame().setVisible(true);
+
+ if (initialProject == null) {
+ initialProject = initialProjectFromPreferences();
+ }
+
+ if (initialProject != null) {
+ getActionManager().getAction(OpenProjectAction.class).openProject(initialProject);
+ }
}
public CayenneProjectPreferences getCayenneProjectPreferences() {
@@ -244,4 +255,17 @@ public class Application {
protected void initPreferences() {
this.cayenneProjectPreferences = new CayenneProjectPreferences();
}
+
+ private File initialProjectFromPreferences() {
+
+ Preferences autoLoadLastProject = getPreferencesNode(GeneralPreferencesController.class, "");
+ if ((autoLoadLastProject != null) && autoLoadLastProject.getBoolean(GeneralPreferencesController.AUTO_LOAD_PROJECT_PREFERENCE, false)) {
+ List<File> lastFiles = ModelerPreferences.getLastProjFiles();
+ if (!lastFiles.isEmpty()) {
+ return lastFiles.get(0);
+ }
+ }
+
+ return null;
+ }
}
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 c404b619e..43d8e0a3e 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
@@ -24,20 +24,15 @@ import org.apache.cayenne.dbsync.DbSyncModule;
import org.apache.cayenne.di.DIBootstrap;
import org.apache.cayenne.di.Injector;
import org.apache.cayenne.di.Module;
-import org.apache.cayenne.modeler.action.OpenProjectAction;
-import org.apache.cayenne.modeler.ui.preferences.general.GeneralPreferencesController;
-import org.apache.cayenne.modeler.init.CayenneModelerModule;
import org.apache.cayenne.modeler.init.platform.PlatformInitializer;
import org.apache.cayenne.project.ProjectModule;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.swing.SwingUtilities;
+import javax.swing.*;
import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.List;
-import java.util.prefs.Preferences;
/**
* Main class responsible for starting CayenneModeler.
@@ -78,52 +73,26 @@ public class Main {
LOGGER.info("JRE v." + System.getProperty("java.version") + " at " + System.getProperty("java.home"));
SwingUtilities.invokeLater(() -> {
-
Application application = injector.getInstance(Application.class);
Application.setInstance(application);
- application.startup();
-
- // start initial project AFTER the app startup, as we need Application
- // preferences to be bootstrapped.
-
- File project = initialProjectFromArgs();
- if (project == null) {
- project = initialProjectFromPreferences();
- }
-
- if (project != null) {
- new OpenProjectAction(application).openProject(project);
- }
+ application.startup(initialProjectFromArgs());
});
}
protected Collection<Module> appendModules(Collection<Module> modules) {
+
// TODO: this is dirty... CoreModule is out of place inside the Modeler...
// If we need CayenneRuntime for certain operations, those should start their own stack...
modules.add(new CoreModule());
modules.add(new ProjectModule());
modules.add(new DbSyncModule());
- modules.add(new CayenneModelerModule());
+ modules.add(new ModelerModule());
return modules;
}
- protected File initialProjectFromPreferences() {
-
- Preferences autoLoadLastProject = Application.getInstance().getPreferencesNode(GeneralPreferencesController.class, "");
- if ((autoLoadLastProject != null)
- && autoLoadLastProject.getBoolean(GeneralPreferencesController.AUTO_LOAD_PROJECT_PREFERENCE, false)) {
- List<File> lastFiles = ModelerPreferences.getLastProjFiles();
- if (!lastFiles.isEmpty()) {
- return lastFiles.get(0);
- }
- }
-
- return null;
- }
-
protected File initialProjectFromArgs() {
if (args != null && args.length == 1) {
File f = new File(args[0]);
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/init/CayenneModelerModule.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ModelerModule.java
similarity index 95%
rename from modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/init/CayenneModelerModule.java
rename to modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ModelerModule.java
index 0e9e9f68e..3b8f2148b 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/init/CayenneModelerModule.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ModelerModule.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
****************************************************************/
-package org.apache.cayenne.modeler.init;
+package org.apache.cayenne.modeler;
import org.apache.cayenne.configuration.xml.DataChannelMetaData;
import org.apache.cayenne.configuration.xml.DefaultDataChannelMetaData;
@@ -26,7 +26,6 @@ import org.apache.cayenne.dbsync.xml.DbImportExtension;
import org.apache.cayenne.di.Binder;
import org.apache.cayenne.di.Module;
import org.apache.cayenne.gen.xml.CgenExtension;
-import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.action.ActionManager;
import org.apache.cayenne.modeler.action.DefaultActionManager;
import org.apache.cayenne.modeler.graph.extension.GraphExtension;
@@ -45,7 +44,7 @@ import org.xml.sax.XMLReader;
/**
* A DI module for bootstrapping CayenneModeler services.
*/
-public class CayenneModelerModule implements Module {
+public class ModelerModule implements Module {
public void configure(Binder binder) {
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 ce8b85b98..705835ab9 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
@@ -29,37 +29,18 @@ import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.prefs.BackingStoreException;
-import java.util.prefs.PreferenceChangeEvent;
-import java.util.prefs.PreferenceChangeListener;
import java.util.prefs.Preferences;
-/**
- * ModelerPreferences class supports persistent user preferences. Preferences are saved in
- * the user home directory in "<code>$HOME/.cayenne/modeler.preferences</code>" file.
- * <p>
- * <i>This class is obsolete; its users will be migrated to use preference service. </i>
- * </p>
- */
-public class ModelerPreferences implements PreferenceChangeListener {
-
- private static Preferences cayennePrefs;
+public class ModelerPreferences {
private static final Logger LOGGER = LoggerFactory.getLogger(ModelerPreferences.class);
- /** Name of the log file. */
- public static final String LOGFILE_NAME = "modeler.log";
-
- /** List of the last 12 opened project files. */
- public static final int LAST_PROJ_FILES_SIZE = 12;
-
- /** Log file */
- public static final String EDITOR_LOGFILE_ENABLED = "logfileEnabled";
- public static final String EDITOR_LOGFILE = "logfile";
-
/**
- * Number of items in combobox visible without scrolling
+ * List of the last 12 opened project files.
*/
- public static final int COMBOBOX_MAX_VISIBLE_SIZE = 12;
+ public static final int LAST_PROJ_FILES_SIZE = 12;
+
+ private static Preferences cayennePrefs;
/**
* Returns Cayenne preferences singleton.
@@ -68,7 +49,6 @@ public class ModelerPreferences implements PreferenceChangeListener {
if (cayennePrefs == null) {
Preference decoratedPref = new UpgradeCayennePreference(new CayennePreference());
cayennePrefs = decoratedPref.getCayennePreference();
- cayennePrefs.addPreferenceChangeListener(new ModelerPreferences());
}
return cayennePrefs;
}
@@ -95,9 +75,9 @@ public class ModelerPreferences implements PreferenceChangeListener {
List<File> lastProjectsFiles = new ArrayList<>(len);
for (int i = 0; i < len; i++) {
String fileName = filesPrefs.get(Integer.toString(i), "");
- if(!fileName.isEmpty()) {
+ if (!fileName.isEmpty()) {
File file = new File(fileName);
- if(!lastProjectsFiles.contains(file) && file.exists()) {
+ if (!lastProjectsFiles.contains(file) && file.exists()) {
lastProjectsFiles.add(file);
}
}
@@ -105,7 +85,4 @@ public class ModelerPreferences implements PreferenceChangeListener {
return lastProjectsFiles;
}
- public void preferenceChange(PreferenceChangeEvent evt) {
- evt.getNode().put(evt.getKey(), evt.getNewValue());
- }
}
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 db5ea2508..1d6a4336c 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
@@ -40,7 +40,7 @@ import org.apache.cayenne.map.Relationship;
import org.apache.cayenne.map.SQLTemplateDescriptor;
import org.apache.cayenne.map.SelectQueryDescriptor;
import org.apache.cayenne.modeler.Application;
-import org.apache.cayenne.modeler.ui.CayenneModelerFrame;
+import org.apache.cayenne.modeler.ui.ModelerFrame;
import org.apache.cayenne.modeler.ui.project.ProjectController;
import org.apache.cayenne.modeler.ui.project.tree.ProjectTreeModel;
import org.apache.cayenne.modeler.ui.project.tree.ProjectTreeView;
@@ -138,7 +138,7 @@ public class FindAction extends CayenneAction {
* Navigate to search result
*/
public static void jumpToResult(FindAction.SearchResultEntry searchResultEntry) {
- ProjectView projectView = ((CayenneModelerFrame) Application.getInstance().getFrameController().getView()).getEditorPanel();
+ ProjectView projectView = ((ModelerFrame) Application.getInstance().getFrameController().getView()).getEditorPanel();
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/NewProjectAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/NewProjectAction.java
index 81f73fc61..2c466395d 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/NewProjectAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/NewProjectAction.java
@@ -23,7 +23,7 @@ import org.apache.cayenne.configuration.ConfigurationTree;
import org.apache.cayenne.configuration.DataChannelDescriptor;
import org.apache.cayenne.dbsync.naming.NameBuilder;
import org.apache.cayenne.modeler.Application;
-import org.apache.cayenne.modeler.ui.CayenneModelerController;
+import org.apache.cayenne.modeler.ui.ModelerController;
import org.apache.cayenne.modeler.event.display.DomainDisplayEvent;
import org.apache.cayenne.project.Project;
@@ -51,7 +51,7 @@ public class NewProjectAction extends ProjectAction {
@Override
public void performAction(ActionEvent e) {
- CayenneModelerController controller = Application
+ ModelerController controller = Application
.getInstance()
.getFrameController();
// Save and close (if needed) currently open project.
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 7b11698e7..3f3a190c8 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
@@ -20,7 +20,7 @@
package org.apache.cayenne.modeler.action;
import org.apache.cayenne.modeler.Application;
-import org.apache.cayenne.modeler.ui.CayenneModelerController;
+import org.apache.cayenne.modeler.ui.ModelerController;
import org.apache.cayenne.modeler.ui.errors.ErrorsController;
import org.apache.cayenne.project.Project;
import org.apache.cayenne.project.ProjectLoader;
@@ -134,7 +134,7 @@ public class OpenProjectAction extends ProjectAction {
return;
}
- CayenneModelerController controller = Application.getInstance().getFrameController();
+ ModelerController controller = Application.getInstance().getFrameController();
controller.addToLastProjListAction(file);
URL url = file.toURI().toURL();
@@ -179,7 +179,7 @@ public class OpenProjectAction extends ProjectAction {
}
}
- private Project openProjectResourse(Resource resource, CayenneModelerController controller) {
+ private Project openProjectResourse(Resource resource, ModelerController controller) {
Project project = getApplication().getInjector().getInstance(ProjectLoader.class).loadProject(resource);
controller.onProjectOpened(project);
return project;
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ProjectAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ProjectAction.java
index 9d26917d7..d2cf9ee57 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ProjectAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ProjectAction.java
@@ -22,7 +22,7 @@ package org.apache.cayenne.modeler.action;
import java.awt.event.ActionEvent;
import org.apache.cayenne.modeler.Application;
-import org.apache.cayenne.modeler.ui.CayenneModelerController;
+import org.apache.cayenne.modeler.ui.ModelerController;
import org.apache.cayenne.modeler.ui.project.ProjectController;
import org.apache.cayenne.modeler.ui.unsavedchanges.UnsavedChangesDialog;
import org.apache.cayenne.modeler.util.CayenneAction;
@@ -65,7 +65,7 @@ public class ProjectAction extends CayenneAction {
return false;
}
- CayenneModelerController controller = Application
+ ModelerController controller = Application
.getInstance()
.getFrameController();
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 4ed77ac39..fb2fd7d1e 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
@@ -20,7 +20,7 @@
package org.apache.cayenne.modeler.action;
import org.apache.cayenne.modeler.Application;
-import org.apache.cayenne.modeler.ui.CayenneModelerController;
+import org.apache.cayenne.modeler.ui.ModelerController;
import org.apache.cayenne.modeler.util.CayenneAction;
import org.apache.cayenne.project.Project;
@@ -43,7 +43,7 @@ public class RevertAction extends CayenneAction {
boolean isNew = project.getConfigurationResource() == null;
- CayenneModelerController controller = getApplication().getFrameController();
+ ModelerController controller = getApplication().getFrameController();
// close ... don't use OpenProjectAction close method as it will ask for save, we don't want that here
controller.onProjectClosed();
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/MainToolBar.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/MainToolBar.java
new file mode 100644
index 000000000..5e61dd09b
--- /dev/null
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/MainToolBar.java
@@ -0,0 +1,89 @@
+package org.apache.cayenne.modeler.ui;
+
+import org.apache.cayenne.modeler.action.*;
+
+import javax.swing.*;
+import javax.swing.border.Border;
+import java.awt.*;
+
+class MainToolBar extends JToolBar {
+
+ private final JButton backButton;
+ private final JButton removeButton;
+
+ public MainToolBar(ActionManager actionManager) {
+ setFloatable(false);
+
+ Dimension smallBtnDim = new Dimension(30, 30);
+ backButton = actionManager.getAction(NavigateBackwardAction.class).buildButton(1);
+ backButton.setMinimumSize(smallBtnDim);
+ backButton.setPreferredSize(smallBtnDim);
+ add(backButton);
+
+ JButton forwardButton = actionManager.getAction(NavigateForwardAction.class).buildButton(3);
+ forwardButton.setMinimumSize(smallBtnDim);
+ forwardButton.setPreferredSize(smallBtnDim);
+ add(forwardButton);
+
+ addSeparator(new Dimension(30, 0));
+
+ add(actionManager.getAction(NewProjectAction.class).buildButton(1));
+ add(actionManager.getAction(OpenProjectAction.class).buildButton(2));
+ add(actionManager.getAction(SaveAction.class).buildButton(3));
+
+ addSeparator();
+
+ removeButton = actionManager.getAction(RemoveAction.class).buildButton();
+ add(removeButton);
+
+ addSeparator();
+
+ add(actionManager.getAction(CutAction.class).buildButton(1));
+ add(actionManager.getAction(CopyAction.class).buildButton(2));
+ add(actionManager.getAction(PasteAction.class).buildButton(3));
+
+ addSeparator();
+
+ add(actionManager.getAction(UndoAction.class).buildButton(1));
+ add(actionManager.getAction(RedoAction.class).buildButton(3));
+
+ addSeparator();
+
+ add(actionManager.getAction(CreateNodeAction.class).buildButton(1));
+ add(actionManager.getAction(CreateDataMapAction.class).buildButton(3));
+
+ addSeparator();
+
+ add(actionManager.getAction(CreateDbEntityAction.class).buildButton(1));
+ add(actionManager.getAction(CreateProcedureAction.class).buildButton(3));
+
+ addSeparator();
+
+ add(actionManager.getAction(CreateObjEntityAction.class).buildButton(1));
+ add(actionManager.getAction(CreateEmbeddableAction.class).buildButton(2));
+ add(actionManager.getAction(CreateQueryAction.class).buildButton(3));
+
+ // is used to place search feature components the most right on a toolbar
+ add(new SearchPanel(actionManager.getAction(FindAction.class)));
+ }
+
+ int getDefaultButtonWidth() {
+ return removeButton.getUI().getPreferredSize(backButton).width;
+ }
+
+ @Override
+ public void setBorder(Border b) {
+ Object border = UIManager.get("MainToolBar.border");
+ if (border instanceof Border) {
+ super.setBorder((Border) border);
+ }
+ }
+
+ @Override
+ public void setBackground(Color bg) {
+ Object background = UIManager.get("MainToolBar.background");
+ if (background instanceof Color) {
+ super.setBackground((Color) background);
+ }
+ }
+}
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/CayenneModelerController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/ModelerController.java
similarity index 97%
rename from modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/CayenneModelerController.java
rename to modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/ModelerController.java
index 199332fcf..edbb1cb0f 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/CayenneModelerController.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/ModelerController.java
@@ -59,16 +59,16 @@ import java.util.prefs.Preferences;
/**
* Controller of the main application frame.
*/
-public class CayenneModelerController extends RootController {
+public class ModelerController extends RootController {
private final ProjectController projectController;
- private final CayenneModelerFrame view;
+ private final ModelerFrame view;
private final DbImportController dbImportController;
- public CayenneModelerController(Application application) {
+ public ModelerController(Application application) {
super(application);
- this.view = new CayenneModelerFrame(application.getActionManager(), application.getLogConsoleController());
+ this.view = new ModelerFrame(application.getActionManager(), application.getLogConsoleController());
application.getInjector().getInstance(PlatformInitializer.class).setupMenus(view);
this.projectController = new ProjectController(this);
this.dbImportController = new DbImportController();
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/CayenneModelerFrame.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/ModelerFrame.java
similarity index 70%
rename from modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/CayenneModelerFrame.java
rename to modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/ModelerFrame.java
index 2d49c091e..38dc59070 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/CayenneModelerFrame.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/ModelerFrame.java
@@ -27,7 +27,6 @@ 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.swing.components.MainToolBar;
import org.apache.cayenne.swing.components.TopBorder;
import org.slf4j.LoggerFactory;
@@ -36,14 +35,13 @@ import java.awt.*;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.awt.event.KeyEvent;
-import java.awt.event.KeyListener;
import java.util.ArrayList;
import java.util.List;
/**
* Main frame of CayenneModeler GUI
*/
-public class CayenneModelerFrame extends JFrame {
+public class ModelerFrame extends JFrame {
private final LogConsoleController logConsoleController;
private final ActionManager actionManager;
@@ -57,7 +55,7 @@ public class CayenneModelerFrame extends JFrame {
private JCheckBoxMenuItem logMenu;
private Component dockComponent;
- public CayenneModelerFrame(ActionManager actionManager, LogConsoleController logConsoleController) {
+ public ModelerFrame(ActionManager actionManager, LogConsoleController logConsoleController) {
this.actionManager = actionManager;
this.logConsoleController = logConsoleController;
this.recentFileListeners = new ArrayList<>();
@@ -225,64 +223,11 @@ public class CayenneModelerFrame extends JFrame {
protected void initToolbar() {
- final JToolBar toolBar = new MainToolBar();
-
- Dimension smallBtnDim = new Dimension(30, 30);
- JButton backButton = actionManager.getAction(NavigateBackwardAction.class).buildButton(1);
- backButton.setMinimumSize(smallBtnDim);
- backButton.setPreferredSize(smallBtnDim);
- toolBar.add(backButton);
-
- JButton forwardButton = actionManager.getAction(NavigateForwardAction.class).buildButton(3);
- forwardButton.setMinimumSize(smallBtnDim);
- forwardButton.setPreferredSize(smallBtnDim);
- toolBar.add(forwardButton);
-
- toolBar.addSeparator(new Dimension(30, 0));
-
- toolBar.add(actionManager.getAction(NewProjectAction.class).buildButton(1));
- toolBar.add(actionManager.getAction(OpenProjectAction.class).buildButton(2));
- toolBar.add(actionManager.getAction(SaveAction.class).buildButton(3));
-
- toolBar.addSeparator();
-
- JButton removeButton = actionManager.getAction(RemoveAction.class).buildButton();
- toolBar.add(removeButton);
-
- toolBar.addSeparator();
-
- toolBar.add(actionManager.getAction(CutAction.class).buildButton(1));
- toolBar.add(actionManager.getAction(CopyAction.class).buildButton(2));
- toolBar.add(actionManager.getAction(PasteAction.class).buildButton(3));
-
- toolBar.addSeparator();
-
- toolBar.add(actionManager.getAction(UndoAction.class).buildButton(1));
- toolBar.add(actionManager.getAction(RedoAction.class).buildButton(3));
-
- toolBar.addSeparator();
-
- toolBar.add(actionManager.getAction(CreateNodeAction.class).buildButton(1));
- toolBar.add(actionManager.getAction(CreateDataMapAction.class).buildButton(3));
-
- toolBar.addSeparator();
-
- toolBar.add(actionManager.getAction(CreateDbEntityAction.class).buildButton(1));
- toolBar.add(actionManager.getAction(CreateProcedureAction.class).buildButton(3));
-
- toolBar.addSeparator();
-
- toolBar.add(actionManager.getAction(CreateObjEntityAction.class).buildButton(1));
- toolBar.add(actionManager.getAction(CreateEmbeddableAction.class).buildButton(2));
- toolBar.add(actionManager.getAction(CreateQueryAction.class).buildButton(3));
-
- // is used to place search feature components the most right on a toolbar
- toolBar.add(new SearchPanel());
-
+ MainToolBar toolBar = new MainToolBar(actionManager);
getContentPane().add(toolBar, BorderLayout.NORTH);
// Hide some buttons when frame is too small
- final int defaultBtnWidth = removeButton.getUI().getPreferredSize(backButton).width;
+ int defaultBtnWidth = toolBar.getDefaultButtonWidth();
addComponentListener(new ComponentAdapter() {
private final int[] empty = {};
private final int[] all = {6, 7, 8, 9, 10, 11, 12, 13, 14};
@@ -350,62 +295,4 @@ public class CayenneModelerFrame extends JFrame {
}
}
- public class SearchPanel extends JPanel {
-
- private final JLabel searchLabel;
- private final JPanel box;
- private final JTextField findField;
-
- SearchPanel() {
- super(new BorderLayout());
- searchLabel = new JLabel("Search: ");
- box = new JPanel();
-
- findField = new JTextField(10);
- findField.putClientProperty("JTextField.variant", "search");
- findField.setMaximumSize(new Dimension(100, 22));
- findField.setPreferredSize(new Dimension(100, 22));
- findField.addKeyListener(new KeyListener() {
- public void keyPressed(KeyEvent e) {
- if (e.getKeyCode() != KeyEvent.VK_ENTER) {
- findField.setBackground(Color.white);
- }
- }
-
- public void keyReleased(KeyEvent e) {
- }
-
- public void keyTyped(KeyEvent e) {
- }
- });
- findField.setAction(actionManager.getAction(FindAction.class));
-
- Toolkit.getDefaultToolkit().addAWTEventListener(event -> {
- if (event instanceof KeyEvent) {
- if (((KeyEvent) event).getModifiersEx() == Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx()
- && ((KeyEvent) event).getKeyCode() == KeyEvent.VK_F) {
- findField.requestFocus();
- }
- }
- }, AWTEvent.KEY_EVENT_MASK);
-
- searchLabel.setLabelFor(findField);
- // is used to place label and text field one after another
- box.setLayout(new BoxLayout(box, BoxLayout.X_AXIS));
- box.add(searchLabel);
- box.add(findField);
-
- add(box, BorderLayout.EAST);
- }
-
- public void hideSearchLabel() {
- searchLabel.setVisible(false);
- findField.setMaximumSize(null);
- findField.setPreferredSize(new Dimension(100, 40));
- findField.setToolTipText("Search");
- box.setOpaque(false);
- box.setBackground(null);
- }
- }
-
}
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/SearchPanel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/SearchPanel.java
new file mode 100644
index 000000000..421f3d85b
--- /dev/null
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/SearchPanel.java
@@ -0,0 +1,66 @@
+package org.apache.cayenne.modeler.ui;
+
+import org.apache.cayenne.modeler.action.FindAction;
+
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
+
+class SearchPanel extends JPanel {
+
+ private final JLabel searchLabel;
+ private final JPanel box;
+ private final JTextField findField;
+
+ public SearchPanel(FindAction findAction) {
+ super(new BorderLayout());
+ searchLabel = new JLabel("Search: ");
+ box = new JPanel();
+
+ findField = new JTextField(10);
+ findField.putClientProperty("JTextField.variant", "search");
+ findField.setMaximumSize(new Dimension(100, 22));
+ findField.setPreferredSize(new Dimension(100, 22));
+ findField.addKeyListener(new KeyListener() {
+ public void keyPressed(KeyEvent e) {
+ if (e.getKeyCode() != KeyEvent.VK_ENTER) {
+ findField.setBackground(Color.white);
+ }
+ }
+
+ public void keyReleased(KeyEvent e) {
+ }
+
+ public void keyTyped(KeyEvent e) {
+ }
+ });
+ findField.setAction(findAction);
+
+ Toolkit.getDefaultToolkit().addAWTEventListener(event -> {
+ if (event instanceof KeyEvent) {
+ if (((KeyEvent) event).getModifiersEx() == Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx()
+ && ((KeyEvent) event).getKeyCode() == KeyEvent.VK_F) {
+ findField.requestFocus();
+ }
+ }
+ }, AWTEvent.KEY_EVENT_MASK);
+
+ searchLabel.setLabelFor(findField);
+ // is used to place label and text field one after another
+ box.setLayout(new BoxLayout(box, BoxLayout.X_AXIS));
+ box.add(searchLabel);
+ box.add(findField);
+
+ add(box, BorderLayout.EAST);
+ }
+
+ public void hideSearchLabel() {
+ searchLabel.setVisible(false);
+ findField.setMaximumSize(null);
+ findField.setPreferredSize(new Dimension(100, 40));
+ findField.setToolTipText("Search");
+ box.setOpaque(false);
+ box.setBackground(null);
+ }
+}
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/errors/ErrorDialog.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/errors/ErrorDialog.java
index c23305860..fb590e28e 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/errors/ErrorDialog.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/errors/ErrorDialog.java
@@ -20,7 +20,7 @@
package org.apache.cayenne.modeler.ui.errors;
-import org.apache.cayenne.modeler.ui.CayenneModelerFrame;
+import org.apache.cayenne.modeler.ui.ModelerFrame;
import org.apache.cayenne.modeler.util.CayenneDialog;
import org.apache.cayenne.modeler.util.ModelerUtil;
import org.apache.cayenne.modeler.util.PanelFactory;
@@ -45,7 +45,7 @@ class ErrorDialog extends CayenneDialog implements ActionListener {
protected boolean detailed;
public ErrorDialog(
- CayenneModelerFrame owner,
+ ModelerFrame owner,
String title,
Throwable throwable,
boolean detailed,
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/errors/WarningDialog.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/errors/WarningDialog.java
index 6c5d47353..24747914e 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/errors/WarningDialog.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/errors/WarningDialog.java
@@ -19,13 +19,13 @@
package org.apache.cayenne.modeler.ui.errors;
-import org.apache.cayenne.modeler.ui.CayenneModelerFrame;
+import org.apache.cayenne.modeler.ui.ModelerFrame;
import java.awt.*;
class WarningDialog extends ErrorDialog {
- public WarningDialog(CayenneModelerFrame owner, String title, Throwable throwable, boolean detailed, boolean modal) throws HeadlessException {
+ public WarningDialog(ModelerFrame owner, String title, Throwable throwable, boolean detailed, boolean modal) throws HeadlessException {
super(owner, title, throwable, detailed, modal);
}
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/ProjectController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/ProjectController.java
index 000a2c3f0..ba8cf6353 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/ProjectController.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/ProjectController.java
@@ -66,7 +66,7 @@ import org.apache.cayenne.modeler.mvc.ChildController;
import org.apache.cayenne.modeler.pref.DataMapDefaults;
import org.apache.cayenne.modeler.pref.DataNodeDefaults;
import org.apache.cayenne.modeler.pref.ProjectStatePreferences;
-import org.apache.cayenne.modeler.ui.CayenneModelerController;
+import org.apache.cayenne.modeler.ui.ModelerController;
import org.apache.cayenne.modeler.util.Comparators;
import org.apache.cayenne.modeler.util.state.DisplayEventTypes;
import org.apache.cayenne.modeler.util.state.MultipleObjectsDisplayEventType;
@@ -92,7 +92,7 @@ import java.util.prefs.Preferences;
/**
* A controller that works with the project tree, tracking selection and dispatching project events.
*/
-public class ProjectController extends ChildController<CayenneModelerController> {
+public class ProjectController extends ChildController<ModelerController> {
private static final Logger LOGGER = LoggerFactory.getLogger(ProjectController.class);
@@ -106,7 +106,7 @@ public class ProjectController extends ChildController<CayenneModelerController>
private EntityResolver entityResolver;
private ProjectFileChangeTracker fileChangeTracker;
- public ProjectController(CayenneModelerController parent) {
+ public ProjectController(ModelerController parent) {
super(parent);
this.listeners = new EventListenerList();
this.state = new ControllerState();
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 0bcfe5c0c..e1774dd6e 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
@@ -24,7 +24,7 @@ import org.apache.cayenne.configuration.ConfigurationNode;
import org.apache.cayenne.configuration.DataChannelDescriptor;
import org.apache.cayenne.map.Entity;
import org.apache.cayenne.modeler.Application;
-import org.apache.cayenne.modeler.ui.CayenneModelerFrame;
+import org.apache.cayenne.modeler.ui.ModelerFrame;
import org.apache.cayenne.modeler.ui.project.ProjectController;
import org.apache.cayenne.modeler.ui.project.ProjectView;
import org.apache.cayenne.modeler.event.display.DomainDisplayEvent;
@@ -73,7 +73,7 @@ public class ShowGraphEntityAction extends CayenneAction {
void showEntity(Entity<?,?,?> entity) {
// we're always in same domain
- ProjectView editor = ((CayenneModelerFrame) Application
+ ProjectView editor = ((ModelerFrame) Application
.getInstance()
.getFrameController()
.getView()).getEditorPanel();
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datanode/jdbc/JDBCDataSourceEditorController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datanode/jdbc/JDBCDataSourceEditorController.java
index 9b432d5cc..0c3b44188 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datanode/jdbc/JDBCDataSourceEditorController.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datanode/jdbc/JDBCDataSourceEditorController.java
@@ -21,7 +21,7 @@ package org.apache.cayenne.modeler.ui.project.editor.datanode.jdbc;
import org.apache.cayenne.configuration.DataNodeDescriptor;
import org.apache.cayenne.configuration.DataSourceDescriptor;
-import org.apache.cayenne.modeler.ui.CayenneModelerController;
+import org.apache.cayenne.modeler.ui.ModelerController;
import org.apache.cayenne.modeler.ui.project.ProjectController;
import org.apache.cayenne.modeler.ui.project.editor.datanode.DataSourceEditorController;
import org.apache.cayenne.modeler.pref.DBConnectionInfo;
@@ -106,7 +106,7 @@ public class JDBCDataSourceEditorController extends DataSourceEditorController {
}
public void syncDataSourceAction() {
- CayenneModelerController mainController = getApplication().getFrameController();
+ ModelerController mainController = getApplication().getFrameController();
if (getNode() == null || getNode().getDataSourceDescriptor() == null) {
return;
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/objentity/duplicates/DuplicatedAttributesDialog.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/objentity/duplicates/DuplicatedAttributesDialog.java
index 355ae73d4..f6d851504 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/objentity/duplicates/DuplicatedAttributesDialog.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/objentity/duplicates/DuplicatedAttributesDialog.java
@@ -24,7 +24,7 @@ import com.jgoodies.forms.layout.FormLayout;
import org.apache.cayenne.map.ObjAttribute;
import org.apache.cayenne.map.ObjEntity;
import org.apache.cayenne.modeler.Application;
-import org.apache.cayenne.modeler.ui.CayenneModelerFrame;
+import org.apache.cayenne.modeler.ui.ModelerFrame;
import org.apache.cayenne.modeler.ui.project.ProjectController;
import org.apache.cayenne.modeler.util.CayenneDialog;
import org.apache.cayenne.modeler.util.CayenneTableModel;
@@ -66,8 +66,8 @@ public class DuplicatedAttributesDialog extends CayenneDialog {
protected JButton cancelButton;
protected JButton proceedButton;
- public static void showDialog(CayenneModelerFrame editor, List<ObjAttribute> duplicatedAttributes,
- ObjEntity superEntity, ObjEntity entity) {
+ public static void showDialog(ModelerFrame editor, List<ObjAttribute> duplicatedAttributes,
+ ObjEntity superEntity, ObjEntity entity) {
if (instance == null) {
instance = new DuplicatedAttributesDialog(editor);
@@ -81,7 +81,7 @@ public class DuplicatedAttributesDialog extends CayenneDialog {
instance.setVisible(true);
}
- protected DuplicatedAttributesDialog(CayenneModelerFrame editor) {
+ protected DuplicatedAttributesDialog(ModelerFrame editor) {
super(editor, "Duplicated Attributes", true);
result = CANCEL_RESULT;
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/JComboBoxUndoListener.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/JComboBoxUndoListener.java
index e41455816..444db109b 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/JComboBoxUndoListener.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/JComboBoxUndoListener.java
@@ -18,19 +18,18 @@
****************************************************************/
package org.apache.cayenne.modeler.undo;
-import java.awt.event.ItemEvent;
-import java.awt.event.ItemListener;
+import org.apache.cayenne.modeler.Application;
-import javax.swing.JComboBox;
+import javax.swing.*;
import javax.swing.undo.UndoManager;
-
-import org.apache.cayenne.modeler.Application;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
public class JComboBoxUndoListener implements ItemListener {
private Object deselectedItem;
- private boolean isUserAction = true;
+ @Override
public void itemStateChanged(ItemEvent e) {
int stateChange = e.getStateChange();
@@ -39,22 +38,11 @@ public class JComboBoxUndoListener implements ItemListener {
deselectedItem = e.getItem();
break;
case ItemEvent.SELECTED:
- // don't add event to undo list, if it was just the default setting
- if (isUserAction) {
- UndoManager undoManager = Application.getInstance().getUndoManager();
- undoManager.addEdit(new JComboBoxUndoableEdit((JComboBox) e
- .getSource(), deselectedItem, e.getItem(), this));
-
- }
- //set back to default value after the selecting new option
- isUserAction = true;
+ // TODO: don't add event to undo list, if it was just the default setting?
+ UndoManager undoManager = Application.getInstance().getUndoManager();
+ undoManager.addEdit(new JComboBoxUndoableEdit((JComboBox) e
+ .getSource(), deselectedItem, e.getItem(), this));
break;
-
}
-
- }
-
- public void setIsUserAction(boolean isUserAction) {
- this.isUserAction = isUserAction;
}
}
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/JTextFieldUndoListener.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/JTextFieldUndoListener.java
index 0df193fb7..08a9b3c6d 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/JTextFieldUndoListener.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/JTextFieldUndoListener.java
@@ -18,28 +18,24 @@
****************************************************************/
package org.apache.cayenne.modeler.undo;
-import java.awt.event.FocusAdapter;
-import java.awt.event.FocusEvent;
-import java.awt.event.KeyAdapter;
-import java.awt.event.KeyEvent;
+import org.apache.cayenne.modeler.Application;
+import org.apache.cayenne.modeler.util.TextAdapter;
-import javax.swing.event.DocumentEvent;
import javax.swing.event.UndoableEditEvent;
import javax.swing.event.UndoableEditListener;
-import javax.swing.text.AbstractDocument;
import javax.swing.text.JTextComponent;
import javax.swing.undo.CompoundEdit;
import javax.swing.undo.UndoableEdit;
-
-import org.apache.cayenne.modeler.Application;
-import org.apache.cayenne.modeler.util.TextAdapter;
+import java.awt.event.FocusAdapter;
+import java.awt.event.FocusEvent;
+import java.awt.event.KeyAdapter;
+import java.awt.event.KeyEvent;
public class JTextFieldUndoListener implements UndoableEditListener {
- public CompoundEdit compoundEdit;
-
+ private final JTextComponent editor;
+ private CompoundEdit compoundEdit;
private TextAdapter adapter;
- private JTextComponent editor;
private int lastOffset;
private int lastLength;
@@ -53,7 +49,6 @@ public class JTextFieldUndoListener implements UndoableEditListener {
public JTextFieldUndoListener(JTextComponent editor) {
this.editor = editor;
-
this.editor.addFocusListener(new FocusAdapter() {
@Override
@@ -61,7 +56,6 @@ public class JTextFieldUndoListener implements UndoableEditListener {
finishCurrentEdit();
}
});
-
this.editor.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
@@ -70,6 +64,7 @@ public class JTextFieldUndoListener implements UndoableEditListener {
});
}
+ @Override
public void undoableEditHappened(UndoableEditEvent e) {
if (compoundEdit == null || !compoundEdit.canUndo()) {
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 84c0b70b8..1c8b306a6 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
@@ -23,7 +23,7 @@ import org.apache.cayenne.configuration.DataChannelDescriptor;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.map.ObjEntity;
import org.apache.cayenne.modeler.Application;
-import org.apache.cayenne.modeler.ui.CayenneModelerFrame;
+import org.apache.cayenne.modeler.ui.ModelerFrame;
import org.apache.cayenne.modeler.ui.project.ProjectView;
import org.apache.cayenne.modeler.ui.project.editor.EditorPanelView;
import org.apache.cayenne.query.SQLTemplate;
@@ -38,8 +38,8 @@ import java.awt.event.ActionListener;
public class JUndoableCheckBoxEdit extends AbstractUndoableEdit {
- private JCheckBox checkBox;
- private ActionListener actionListener;
+ private final JCheckBox checkBox;
+ private final ActionListener actionListener;
private JTabbedPane tabbedPane;
private TreePath treePath;
private Object targetObject;
@@ -56,7 +56,7 @@ public class JUndoableCheckBoxEdit extends AbstractUndoableEdit {
this.actionListener = actionListener;
this.isSelected = checkBox.isSelected();
- projectView = ((CayenneModelerFrame) Application.getInstance().getFrameController().getView()).getEditorPanel();
+ projectView = ((ModelerFrame) Application.getInstance().getFrameController().getView()).getEditorPanel();
treePath = projectView.getProjectTreeView().getSelectionPath();
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/RelationshipUndoableEdit.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/RelationshipUndoableEdit.java
index d28f93f27..c97b200fb 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/RelationshipUndoableEdit.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/RelationshipUndoableEdit.java
@@ -18,9 +18,6 @@
****************************************************************/
package org.apache.cayenne.modeler.undo;
-import javax.swing.undo.CannotRedoException;
-import javax.swing.undo.CannotUndoException;
-
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.DbRelationship;
import org.apache.cayenne.map.ObjEntity;
@@ -31,14 +28,15 @@ import org.apache.cayenne.map.event.RelationshipEvent;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.ui.project.ProjectController;
-public class RelationshipUndoableEdit extends CayenneUndoableEdit {
+import javax.swing.undo.CannotRedoException;
+import javax.swing.undo.CannotUndoException;
- private static final long serialVersionUID = -1864303176024098961L;
+public class RelationshipUndoableEdit extends CayenneUndoableEdit {
- private Relationship<?,?,?> relationship;
- private Relationship<?,?,?> prevRelationship;
- private ProjectController projectController;
- private boolean useDb;
+ private final Relationship<?,?,?> relationship;
+ private final Relationship<?,?,?> prevRelationship;
+ private final ProjectController projectController;
+ private final boolean useDb;
public RelationshipUndoableEdit(Relationship<?,?,?> relationship) {
this.projectController = Application.getInstance().getFrameController().getProjectController();
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/RemoveCallbackMethodUndoableEdit.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/RemoveCallbackMethodUndoableEdit.java
index 0add4717c..e64fbb25f 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/RemoveCallbackMethodUndoableEdit.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/RemoveCallbackMethodUndoableEdit.java
@@ -18,18 +18,18 @@
****************************************************************/
package org.apache.cayenne.modeler.undo;
-import javax.swing.undo.CannotRedoException;
-import javax.swing.undo.CannotUndoException;
-
import org.apache.cayenne.modeler.action.CreateCallbackMethodAction;
import org.apache.cayenne.modeler.action.RemoveCallbackMethodAction;
import org.apache.cayenne.modeler.ui.project.editor.objentity.CallbackType;
import org.apache.cayenne.modeler.ui.project.editor.objentity.ObjCallbackMethod;
+import javax.swing.undo.CannotRedoException;
+import javax.swing.undo.CannotUndoException;
+
public class RemoveCallbackMethodUndoableEdit extends CayenneUndoableEdit {
- private CallbackType callbackType;
- private ObjCallbackMethod[] methods;
+ private final CallbackType callbackType;
+ private final ObjCallbackMethod[] methods;
public RemoveCallbackMethodUndoableEdit(CallbackType callbackType,
ObjCallbackMethod[] methods) {
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 0532a496b..0b21fc144 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
@@ -18,24 +18,13 @@
****************************************************************/
package org.apache.cayenne.modeler.undo;
-import javax.swing.JTabbedPane;
-import javax.swing.SwingUtilities;
-import javax.swing.event.DocumentEvent;
-import javax.swing.event.DocumentListener;
-import javax.swing.text.JTextComponent;
-import javax.swing.tree.DefaultMutableTreeNode;
-import javax.swing.tree.TreePath;
-import javax.swing.undo.CannotRedoException;
-import javax.swing.undo.CannotUndoException;
-import javax.swing.undo.CompoundEdit;
-
import org.apache.cayenne.configuration.DataChannelDescriptor;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.Embeddable;
import org.apache.cayenne.map.ObjEntity;
import org.apache.cayenne.modeler.Application;
-import org.apache.cayenne.modeler.ui.CayenneModelerFrame;
+import org.apache.cayenne.modeler.ui.ModelerFrame;
import org.apache.cayenne.modeler.ui.project.ProjectView;
import org.apache.cayenne.modeler.ui.project.editor.EditorPanelView;
import org.apache.cayenne.modeler.ui.project.editor.query.sqltemplate.SQLTemplateTabbedView;
@@ -43,23 +32,29 @@ import org.apache.cayenne.modeler.util.TextAdapter;
import org.apache.cayenne.query.EJBQLQuery;
import org.apache.cayenne.query.SQLTemplate;
+import javax.swing.*;
+import javax.swing.event.DocumentEvent;
+import javax.swing.event.DocumentListener;
+import javax.swing.text.JTextComponent;
+import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.tree.TreePath;
+import javax.swing.undo.CannotRedoException;
+import javax.swing.undo.CannotUndoException;
+import javax.swing.undo.CompoundEdit;
+
public class TextCompoundEdit extends CompoundEdit implements DocumentListener {
private TextAdapter adapter;
- private JTextComponent editor;
+ private final JTextComponent editor;
- private TreePath treePath;
+ private final TreePath treePath;
private int selectedTabIndex;
private int selectedItem;
private JTabbedPane tabbedPane;
private Object targetObject;
- private JTextFieldUndoListener listener;
-
- public Object getTargetObject() {
- return targetObject;
- }
+ private final JTextFieldUndoListener listener;
public TextCompoundEdit(TextAdapter adapter, JTextFieldUndoListener listener) {
this(adapter.getComponent(), listener);
@@ -71,12 +66,12 @@ public class TextCompoundEdit extends CompoundEdit implements DocumentListener {
this.editor = editor;
this.listener = listener;
- ProjectView projectView = ((CayenneModelerFrame) Application.getInstance().getFrameController().getView())
+ ProjectView projectView = ((ModelerFrame) Application.getInstance().getFrameController().getView())
.getEditorPanel();
treePath = projectView.getProjectTreeView().getSelectionPath();
- if(treePath != null) {
+ if (treePath != null) {
DefaultMutableTreeNode newPath = (DefaultMutableTreeNode) treePath.getLastPathComponent();
targetObject = newPath.getUserObject();
}
@@ -122,7 +117,7 @@ public class TextCompoundEdit extends CompoundEdit implements DocumentListener {
private void restoreSelections() {
- ProjectView projectView = ((CayenneModelerFrame) Application.getInstance().getFrameController().getView())
+ ProjectView projectView = ((ModelerFrame) Application.getInstance().getFrameController().getView())
.getEditorPanel();
projectView.getProjectTreeView().getSelectionModel().setSelectionPath(treePath);
@@ -137,23 +132,24 @@ public class TextCompoundEdit extends CompoundEdit implements DocumentListener {
}
public void insertUpdate(final DocumentEvent e) {
- SwingUtilities.invokeLater(new Runnable() {
-
- public void run() {
- int offset = e.getOffset() + e.getLength();
- offset = Math.min(offset, editor.getDocument().getLength());
- editor.setCaretPosition(offset);
- }
+ SwingUtilities.invokeLater(() -> {
+ int offset = e.getOffset() + e.getLength();
+ offset = Math.min(offset, editor.getDocument().getLength());
+ editor.setCaretPosition(offset);
});
}
+
+ @Override
public void removeUpdate(DocumentEvent e) {
editor.setCaretPosition(e.getOffset());
}
+ @Override
public void changedUpdate(DocumentEvent e) {
}
+ @Override
public boolean isInProgress() {
return false;
}
@@ -171,6 +167,7 @@ public class TextCompoundEdit extends CompoundEdit implements DocumentListener {
editor.requestFocusInWindow();
}
+ @Override
public void undo() throws CannotUndoException {
restoreSelections();
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneAction.java
index f612096d3..4633bccf5 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneAction.java
@@ -22,7 +22,7 @@ package org.apache.cayenne.modeler.util;
import org.apache.cayenne.configuration.ConfigurationNode;
import org.apache.cayenne.modeler.Application;
-import org.apache.cayenne.modeler.ui.CayenneModelerFrame;
+import org.apache.cayenne.modeler.ui.ModelerFrame;
import org.apache.cayenne.modeler.ui.errors.ErrorsController;
import org.apache.cayenne.modeler.ui.project.ProjectController;
import org.apache.cayenne.modeler.ui.project.ProjectView;
@@ -255,7 +255,7 @@ public abstract class CayenneAction extends AbstractAction {
}
protected static ProjectView editor() {
- return ((CayenneModelerFrame) Application
+ return ((ModelerFrame) Application
.getInstance()
.getFrameController()
.getView()).getEditorPanel();
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneDialog.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneDialog.java
index 0f0a8567c..3ed2e5b23 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneDialog.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneDialog.java
@@ -20,7 +20,7 @@
package org.apache.cayenne.modeler.util;
import org.apache.cayenne.modeler.Application;
-import org.apache.cayenne.modeler.ui.CayenneModelerFrame;
+import org.apache.cayenne.modeler.ui.ModelerFrame;
import org.apache.cayenne.modeler.ui.project.ProjectController;
import javax.swing.*;
@@ -57,7 +57,7 @@ public class CayenneDialog extends JDialog implements HyperlinkListener {
super(owner, title, modal);
}
- public CayenneDialog(CayenneModelerFrame frame, String title, boolean modal) {
+ public CayenneDialog(ModelerFrame frame, String title, boolean modal) {
super(frame, title, modal);
}
@@ -97,8 +97,8 @@ public class CayenneDialog extends JDialog implements HyperlinkListener {
ModelerUtil.centerWindow(getParentEditor(), this);
}
- public CayenneModelerFrame getParentEditor() {
- return (CayenneModelerFrame) super.getParent();
+ public ModelerFrame getParentEditor() {
+ return (ModelerFrame) super.getParent();
}
/**
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneTable.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneTable.java
index 4d9fc2e8c..f72fc9e48 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneTable.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneTable.java
@@ -22,24 +22,16 @@ package org.apache.cayenne.modeler.util;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.pref.TableColumnPreferences;
-import javax.swing.BorderFactory;
-import javax.swing.DefaultCellEditor;
-import javax.swing.DefaultListSelectionModel;
-import javax.swing.JTable;
-import javax.swing.JTextField;
-import javax.swing.UIManager;
+import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.TableModelEvent;
-import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableCellEditor;
-import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;
import javax.swing.table.TableModel;
import javax.swing.text.JTextComponent;
-import java.awt.Color;
-import java.awt.Component;
+import java.awt.*;
import java.util.EventObject;
/**
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/ComboBoxAdapter.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/ComboBoxAdapter.java
deleted file mode 100644
index 7b0a8bd5a..000000000
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/ComboBoxAdapter.java
+++ /dev/null
@@ -1,72 +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.undo.JComboBoxUndoListener;
-import org.apache.cayenne.validation.ValidationException;
-
-import javax.swing.JComboBox;
-import java.awt.event.ActionListener;
-
-/**
- * @since 4.1
- */
-public abstract class ComboBoxAdapter<T> {
-
- private JComboBox<T> comboBox;
- private ActionListener listener;
-
- private JComboBoxUndoListener undoListener;
-
- protected ComboBoxAdapter(JComboBox<T> comboBox) {
- this.comboBox = comboBox;
- listener = e -> updateModel();
-
- undoListener = new JComboBoxUndoListener();
-
- comboBox.addActionListener(listener);
- comboBox.addItemListener(undoListener);
- }
-
- public void setItem(Object item) {
- comboBox.removeActionListener(listener);
- comboBox.removeItemListener(undoListener);
-
- try{
- comboBox.setSelectedItem(item);
- }
- finally {
- comboBox.addActionListener(listener);
- comboBox.addItemListener(undoListener);
- }
- }
-
- public JComboBox<T> getComboBox() {
- return comboBox;
- }
-
- /**
- * Updates bound model with document text.
- */
- protected abstract void updateModel(T item) throws ValidationException;
-
- public void updateModel() {
- updateModel((T)comboBox.getSelectedItem());
- }
-}
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DefaultWidgetFactory.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DefaultWidgetFactory.java
index 9e2bd0bc5..2c304c249 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DefaultWidgetFactory.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DefaultWidgetFactory.java
@@ -18,24 +18,23 @@
****************************************************************/
package org.apache.cayenne.modeler.util;
-import org.apache.cayenne.modeler.ModelerPreferences;
import org.apache.cayenne.modeler.undo.JComboBoxUndoListener;
import org.apache.cayenne.modeler.util.combo.AutoCompletion;
import org.apache.cayenne.modeler.util.combo.ComboBoxCellEditor;
-import javax.swing.BorderFactory;
-import javax.swing.DefaultCellEditor;
-import javax.swing.DefaultComboBoxModel;
-import javax.swing.JComboBox;
-import javax.swing.JTextField;
-import javax.swing.UIManager;
+import javax.swing.*;
import javax.swing.table.TableCellEditor;
-import java.awt.Color;
+import java.awt.*;
import java.util.Arrays;
import java.util.Collection;
public class DefaultWidgetFactory implements WidgetFactory {
+ /**
+ * Number of items in combobox visible without scrolling
+ */
+ private static final int COMBOBOX_MAX_VISIBLE_SIZE = 12;
+
/**
* Creates a new JComboBox with a collection of model objects.
*/
@@ -64,7 +63,7 @@ public class DefaultWidgetFactory implements WidgetFactory {
JComboBox<T> comboBox = new JComboBox<>();
comboBox.setFont(UIManager.getFont("Label.font"));
comboBox.setBackground(Color.WHITE);
- comboBox.setMaximumRowCount(ModelerPreferences.COMBOBOX_MAX_VISIBLE_SIZE);
+ comboBox.setMaximumRowCount(COMBOBOX_MAX_VISIBLE_SIZE);
return comboBox;
}
@@ -76,7 +75,7 @@ public class DefaultWidgetFactory implements WidgetFactory {
JComboBox<T> comboBox = new JComboBox<>();
comboBox.addItemListener(new JComboBoxUndoListener());
comboBox.setBackground(Color.WHITE);
- comboBox.setMaximumRowCount(ModelerPreferences.COMBOBOX_MAX_VISIBLE_SIZE);
+ comboBox.setMaximumRowCount(COMBOBOX_MAX_VISIBLE_SIZE);
return comboBox;
}
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/pref/UpgradeCayennePreference.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/pref/UpgradeCayennePreference.java
index 834f9621d..4b3bae0f4 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/pref/UpgradeCayennePreference.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/pref/UpgradeCayennePreference.java
@@ -18,6 +18,9 @@
****************************************************************/
package org.apache.cayenne.pref;
+import org.apache.cayenne.modeler.ModelerPreferences;
+import org.apache.cayenne.modeler.util.CayenneUserDir;
+
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
@@ -27,9 +30,6 @@ import java.util.Properties;
import java.util.prefs.BackingStoreException;
import java.util.prefs.Preferences;
-import org.apache.cayenne.modeler.ModelerPreferences;
-import org.apache.cayenne.modeler.util.CayenneUserDir;
-
public class UpgradeCayennePreference extends PreferenceDecorator {
/** Name of the preferences file. */
@@ -37,14 +37,6 @@ public class UpgradeCayennePreference extends PreferenceDecorator {
public static final String LAST_PROJ_FILES_OLD = "Editor.lastSeveralProjectFiles";
- /** GUI layout */
- public static final String EDITOR_LAFNAME_OLD = "Editor.lookAndFeel";
- public static final String EDITOR_THEMENAME_OLD = "Editor.theme";
-
- /** Log file */
- public static final String EDITOR_LOGFILE_ENABLED_OLD = "Editor.logfileEnabled";
- public static final String EDITOR_LOGFILE_OLD = "Editor.logfile";
-
public static final String DELIMITER = ",";
public UpgradeCayennePreference(Preference delegate) {
@@ -64,11 +56,6 @@ public class UpgradeCayennePreference extends PreferenceDecorator {
Preferences prefEditor = Preferences.userRoot().node(CAYENNE_PREFERENCES_PATH).node(EDITOR);
- prefEditor.putBoolean(ModelerPreferences.EDITOR_LOGFILE_ENABLED,
- Boolean.valueOf(ep.getProperty(EDITOR_LOGFILE_ENABLED_OLD)));
- prefEditor.put(ModelerPreferences.EDITOR_LOGFILE,
- ep.getProperty(EDITOR_LOGFILE_OLD));
-
Preferences frefLastProjFiles = prefEditor.node(LAST_PROJ_FILES);
List<String> arr = getVector(ep.getProperty(LAST_PROJ_FILES_OLD));
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/components/MainToolBar.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/components/MainToolBar.java
deleted file mode 100644
index 200bc130d..000000000
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/components/MainToolBar.java
+++ /dev/null
@@ -1,50 +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.swing.components;
-
-import java.awt.Color;
-import javax.swing.JToolBar;
-import javax.swing.UIManager;
-import javax.swing.border.Border;
-
-/**
- * @since 4.0
- */
-public class MainToolBar extends JToolBar {
- public MainToolBar() {
- setFloatable(false);
- }
-
- @Override
- public void setBorder(Border b) {
- Object border = UIManager.get("MainToolBar.border");
- if (border instanceof Border) {
- super.setBorder((Border) border);
- }
- }
-
- @Override
- public void setBackground(Color bg) {
- Object background = UIManager.get("MainToolBar.background");
- if (background instanceof Color) {
- super.setBackground((Color) background);
- }
- }
-}
diff --git a/modeler/cayenne-modeler/src/test/java/org/apache/cayenne/modeler/CayenneModelerValidationIT.java b/modeler/cayenne-modeler/src/test/java/org/apache/cayenne/modeler/CayenneModelerValidationIT.java
index e7aaad638..39952d02a 100644
--- a/modeler/cayenne-modeler/src/test/java/org/apache/cayenne/modeler/CayenneModelerValidationIT.java
+++ b/modeler/cayenne-modeler/src/test/java/org/apache/cayenne/modeler/CayenneModelerValidationIT.java
@@ -22,7 +22,6 @@ import org.apache.cayenne.configuration.DataChannelDescriptor;
import org.apache.cayenne.dbsync.reverse.configuration.ToolsModule;
import org.apache.cayenne.di.DIBootstrap;
import org.apache.cayenne.di.Injector;
-import org.apache.cayenne.modeler.init.CayenneModelerModule;
import org.apache.cayenne.modeler.validation.ConfigurableProjectValidator;
import org.apache.cayenne.project.Project;
import org.apache.cayenne.project.ProjectLoader;
@@ -55,7 +54,7 @@ public class CayenneModelerValidationIT {
injector = DIBootstrap.createInjector(List.of(
new ToolsModule(LOGGER),
new ProjectModule(),
- new CayenneModelerModule()
+ new ModelerModule()
));
}