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

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


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

commit eab63dfa6ffa5e902ab39ad9cf982aaa8548aabc
Author: Andrus Adamchik <[email protected]>
AuthorDate: Wed May 20 10:19:02 2026 -0400

    Modeler cleanup
---
 .../cayenne/modeler/toolkit/text/CMTextPane.java   |  4 +--
 .../modeler/toolkit/text/CMUndoableTextPane.java   |  2 +-
 .../modeler/ui/dbmerge/MergerTokenSelector.java    |  3 +-
 .../dbimport/ReverseEngineeringTreePanel.java      | 27 ++++++++-------
 .../editor/dbentity/main/PKGeneratorPanel.java     | 15 ++++----
 .../dbentity/properties/DbAttributePanel.java      | 20 +++++------
 .../dbentity/properties/DbRelationshipPanel.java   | 18 +++++-----
 .../objentity/properties/ObjAttributePanel.java    | 40 +++++++++-------------
 .../objentity/properties/ObjRelationshipPanel.java | 22 ++++++------
 9 files changed, 70 insertions(+), 81 deletions(-)

diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/text/CMTextPane.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/text/CMTextPane.java
index 975f3b273..3180920a6 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/text/CMTextPane.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/text/CMTextPane.java
@@ -37,8 +37,8 @@ import java.awt.geom.Rectangle2D;
 public class CMTextPane extends JPanel {
 
     protected Highlighter.HighlightPainter painter;
-    private JTextPaneScrollable pane;
-    private JScrollPane scrollPane;
+    private final JTextPaneScrollable pane;
+    private final JScrollPane scrollPane;
 
     private boolean imageError;
     private String tooltipTextError;
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/text/CMUndoableTextPane.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/text/CMUndoableTextPane.java
index 94a79775c..c3d8ceb37 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/text/CMUndoableTextPane.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/text/CMUndoableTextPane.java
@@ -25,7 +25,7 @@ import javax.swing.event.UndoableEditListener;
 
 public class CMUndoableTextPane extends CMTextPane {
 
-    private UndoableEditListener undoListener;
+    private final UndoableEditListener undoListener;
 
     public CMUndoableTextPane(CayenneUndoManager undoManager, TextSyntax 
syntax) {
         super(syntax);
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/dbmerge/MergerTokenSelector.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/dbmerge/MergerTokenSelector.java
index 8327e6556..bbedafe6b 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/dbmerge/MergerTokenSelector.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/dbmerge/MergerTokenSelector.java
@@ -69,7 +69,6 @@ public class MergerTokenSelector extends JPanel {
     private final List<MergerToken> selectableTokensList;
 
     private MergerToken token;
-    private int permanentlyExcludedCount;
     private MergerTokenFactory mergerTokenFactory;
     private boolean isReverse;
 
@@ -140,7 +139,7 @@ public class MergerTokenSelector extends JPanel {
      * A callback action that updates the state of Select All checkbox.
      */
     public void tableSelectedAction() {
-        int unselectedCount = excludedTokens.size() - permanentlyExcludedCount;
+        int unselectedCount = excludedTokens.size();
 
         if (unselectedCount == selectableTokensList.size()) {
             checkAll.setSelected(false);
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/ReverseEngineeringTreePanel.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/ReverseEngineeringTreePanel.java
index dad48130a..355caf716 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/ReverseEngineeringTreePanel.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/ReverseEngineeringTreePanel.java
@@ -30,36 +30,37 @@ import 
org.apache.cayenne.dbsync.reverse.dbimport.ReverseEngineering;
 import org.apache.cayenne.dbsync.reverse.dbimport.Schema;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.modeler.project.ProjectSession;
+import org.apache.cayenne.modeler.toolkit.ProjectPanel;
 import 
org.apache.cayenne.modeler.ui.project.editor.datamap.dbimport.action.DbImportActions;
 import 
org.apache.cayenne.modeler.ui.project.editor.datamap.dbimport.tree.DbImportTreeNode;
 
-import javax.swing.JPanel;
-import javax.swing.JScrollPane;
-import javax.swing.JTree;
-import javax.swing.SwingUtilities;
+import javax.swing.*;
 import javax.swing.tree.DefaultTreeCellRenderer;
 import javax.swing.tree.TreePath;
-import java.awt.BorderLayout;
+import java.awt.*;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
 import java.util.HashMap;
 import java.util.Map;
 
-class ReverseEngineeringTreePanel extends JPanel {
+class ReverseEngineeringTreePanel extends ProjectPanel {
 
     private final DbImportTree reverseEngineeringTree;
     private final DbImportTree dbSchemaTree;
 
-    private final ProjectSession session;
     private final DbImportActions actions;
     private final DBSchemaPanel dbSchemaPanel;
     private ConfigToolbar treeToolbar;
     private final Map<Class<?>, DefaultPopUpMenu> popups;
 
-    ReverseEngineeringTreePanel(ProjectSession session, DbImportTree 
reverseEngineeringTree,
-                                DbImportTree dbSchemaTree, DBSchemaPanel 
dbSchemaPanel,
-                                DbImportActions actions) {
-        this.session = session;
+    ReverseEngineeringTreePanel(
+            ProjectSession session,
+            DbImportTree reverseEngineeringTree,
+            DbImportTree dbSchemaTree,
+            DBSchemaPanel dbSchemaPanel,
+            DbImportActions actions) {
+
+        super(session);
         this.reverseEngineeringTree = reverseEngineeringTree;
         this.dbSchemaTree = dbSchemaTree;
         this.dbSchemaPanel = dbSchemaPanel;
@@ -126,7 +127,7 @@ class ReverseEngineeringTreePanel extends JPanel {
                 } else if (reverseEngineeringTree.getSelectionPath() != null) {
                     DbImportTreeNode selectedNode = 
reverseEngineeringTree.getSelectedNode();
 
-                    if( selectedNode.isExcludeColumn() || 
selectedNode.isIncludeColumn()) {
+                    if (selectedNode.isExcludeColumn() || 
selectedNode.isIncludeColumn()) {
                         DbImportTreeNode expandNode = selectedNode.getParent();
 
                         DbImportTreeNode parentPath = dbSchemaTree.findNode(
@@ -163,7 +164,7 @@ class ReverseEngineeringTreePanel extends JPanel {
 
     private ReverseEngineering getReverseEngineeringBySelectedMap() {
         DataMap dataMap = session.getSelectedDataMap();
-        return session.app().getMetaData().get(dataMap, 
ReverseEngineering.class);
+        return app.getMetaData().get(dataMap, ReverseEngineering.class);
     }
 
     private void changeIcons() {
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/dbentity/main/PKGeneratorPanel.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/dbentity/main/PKGeneratorPanel.java
index 96969b553..4c86d1511 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/dbentity/main/PKGeneratorPanel.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/dbentity/main/PKGeneratorPanel.java
@@ -19,20 +19,17 @@
 
 package org.apache.cayenne.modeler.ui.project.editor.dbentity.main;
 
-import org.apache.cayenne.modeler.event.model.DbEntityEvent;
-import javax.swing.JPanel;
-
 import org.apache.cayenne.map.DbAttribute;
 import org.apache.cayenne.map.DbEntity;
+import org.apache.cayenne.modeler.event.model.DbEntityEvent;
 import org.apache.cayenne.modeler.project.ProjectSession;
+import org.apache.cayenne.modeler.toolkit.ProjectPanel;
 import org.apache.cayenne.modeler.undo.ChangePKGeneratorUndoableEdit;
 
-public abstract class PKGeneratorPanel extends JPanel {
-
-    protected ProjectSession session;
+public abstract class PKGeneratorPanel extends ProjectPanel {
 
     public PKGeneratorPanel(ProjectSession session) {
-        this.session = session;
+        super(session);
     }
 
     /**
@@ -52,8 +49,8 @@ public abstract class PKGeneratorPanel extends JPanel {
         onInitInternal(entity);
 
         edit.captureNewState();
-        if(edit.hasRealChange()) {
-            session.app().getUndoManager().addEdit(edit);
+        if (edit.hasRealChange()) {
+            app.getUndoManager().addEdit(edit);
         }
     }
 
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/dbentity/properties/DbAttributePanel.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/dbentity/properties/DbAttributePanel.java
index 5e051a3a1..f07866ead 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/dbentity/properties/DbAttributePanel.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/dbentity/properties/DbAttributePanel.java
@@ -29,6 +29,7 @@ import 
org.apache.cayenne.modeler.event.model.DbAttributeEvent;
 import org.apache.cayenne.modeler.event.model.DbAttributeListener;
 import org.apache.cayenne.modeler.project.ProjectSession;
 import org.apache.cayenne.modeler.service.action.GlobalActions;
+import org.apache.cayenne.modeler.toolkit.ProjectPanel;
 import org.apache.cayenne.modeler.toolkit.combobox.AutoCompletion;
 import org.apache.cayenne.modeler.toolkit.combobox.CMComboBox;
 import org.apache.cayenne.modeler.toolkit.table.BoardTableCellRenderer;
@@ -52,14 +53,13 @@ import java.util.List;
 /**
  * Detail view of the DbEntity attributes.
  */
-public class DbAttributePanel extends JPanel implements 
DbEntityDisplayListener, DbAttributeListener {
+public class DbAttributePanel extends ProjectPanel implements 
DbEntityDisplayListener, DbAttributeListener {
 
-    private final ProjectSession session;
     private final CMTable table;
     private final DbEntityPropertiesView parentPanel;
 
     public DbAttributePanel(ProjectSession session, DbEntityPropertiesView 
parentPanel) {
-        this.session = session;
+        super(session);
         this.parentPanel = parentPanel;
         this.table = new CMTable();
         initLayout();
@@ -69,7 +69,7 @@ public class DbAttributePanel extends JPanel implements 
DbEntityDisplayListener,
     private void initLayout() {
         setLayout(new BorderLayout());
 
-        GlobalActions globalActions = session.app().getActionManager();
+        GlobalActions globalActions = app.getActionManager();
 
         table.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
         table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
@@ -92,7 +92,7 @@ public class DbAttributePanel extends JPanel implements 
DbEntityDisplayListener,
 
         table.getSelectionModel().addListSelectionListener(this::valueChanged);
 
-        session.app().getActionManager().setupCutCopyPaste(
+        app.getActionManager().setupCutCopyPaste(
                 table,
                 CutAttributeRelationshipAction.class,
                 CopyAttributeRelationshipAction.class);
@@ -108,13 +108,13 @@ public class DbAttributePanel extends JPanel implements 
DbEntityDisplayListener,
         List<?> listAttrs = model.getObjectList();
         int[] newSel = new int[attrs.length];
 
-        session.app().getActionManager()
+        app.getActionManager()
                 .getAction(RemoveAttributeRelationshipAction.class)
                 .setCurrentSelectedPanel(parentPanel.getAttributePanel());
-        session.app().getActionManager()
+        app.getActionManager()
                 .getAction(CutAttributeRelationshipAction.class)
                 .setCurrentSelectedPanel(parentPanel.getAttributePanel());
-        session.app().getActionManager()
+        app.getActionManager()
                 .getAction(CopyAttributeRelationshipAction.class)
                 .setCurrentSelectedPanel(parentPanel.getAttributePanel());
 
@@ -185,7 +185,7 @@ public class DbAttributePanel extends JPanel implements 
DbEntityDisplayListener,
         TableColumn typeColumn = 
table.getColumnModel().getColumn(DbAttributeTableModel.DB_ATTRIBUTE_TYPE);
         typeColumn.setCellEditor(new CMComboBoxCellEditor(comboBox));
 
-        new 
CMTablePrefs(session.app().getPrefsManager().uiNode("dbEntity/attributeTable"))
+        new 
CMTablePrefs(app.getPrefsManager().uiNode("dbEntity/attributeTable"))
                 .bind(table, null, DbAttributeTableModel.DB_ATTRIBUTE_NAME);
     }
 
@@ -204,7 +204,7 @@ public class DbAttributePanel extends JPanel implements 
DbEntityDisplayListener,
                 
parentPanel.getRelationshipPanel().getTable().getCellEditor().stopCellEditing();
             }
 
-            GlobalActions globalActions = session.app().getActionManager();
+            GlobalActions globalActions = app.getActionManager();
 
             
globalActions.getAction(RemoveAttributeRelationshipAction.class).setCurrentSelectedPanel(this);
             
globalActions.getAction(CutAttributeRelationshipAction.class).setCurrentSelectedPanel(this);
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/dbentity/properties/DbRelationshipPanel.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/dbentity/properties/DbRelationshipPanel.java
index 3b2f89101..db9f0d02a 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/dbentity/properties/DbRelationshipPanel.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/dbentity/properties/DbRelationshipPanel.java
@@ -25,6 +25,7 @@ import 
org.apache.cayenne.modeler.event.model.DbRelationshipEvent;
 import org.apache.cayenne.modeler.event.model.DbEntityEvent;
 import org.apache.cayenne.modeler.event.model.DbEntityListener;
 import org.apache.cayenne.modeler.event.model.DbRelationshipListener;
+import org.apache.cayenne.modeler.toolkit.ProjectPanel;
 import org.apache.cayenne.modeler.toolkit.icon.IconFactory;
 import org.apache.cayenne.modeler.project.ProjectSession;
 import org.apache.cayenne.modeler.service.action.GlobalActions;
@@ -59,17 +60,16 @@ import java.util.List;
 /**
  * Displays DbRelationships for the current DbEntity.
  */
-public class DbRelationshipPanel extends JPanel implements 
DbEntityDisplayListener,
+public class DbRelationshipPanel extends ProjectPanel implements 
DbEntityDisplayListener,
         DbEntityListener, DbRelationshipListener, TableModelListener {
 
-    private final ProjectSession session;
     private final CMTable table;
     private final DbEntityPropertiesView parentPanel;
     private final JMenuItem editMenu;
     private JComboBox<DbEntity> targetCombo;
 
     public DbRelationshipPanel(ProjectSession session, DbEntityPropertiesView 
parentPanel) {
-        this.session = session;
+        super(session);
         this.parentPanel = parentPanel;
         this.table = new CMTable();
         this.editMenu = new JMenuItem("Edit Relationship", 
IconFactory.buildIcon("icon-edit.png"));
@@ -80,7 +80,7 @@ public class DbRelationshipPanel extends JPanel implements 
DbEntityDisplayListen
     private void initLayout() {
         setLayout(new BorderLayout());
 
-        GlobalActions globalActions = session.app().getActionManager();
+        GlobalActions globalActions = app.getActionManager();
 
         table.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
         table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
@@ -108,7 +108,7 @@ public class DbRelationshipPanel extends JPanel implements 
DbEntityDisplayListen
 
         table.getSelectionModel().addListSelectionListener(this::valueChanged);
 
-        session.app().getActionManager().setupCutCopyPaste(
+        app.getActionManager().setupCutCopyPaste(
                 table,
                 CutAttributeRelationshipAction.class,
                 CopyAttributeRelationshipAction.class);
@@ -136,7 +136,7 @@ public class DbRelationshipPanel extends JPanel implements 
DbEntityDisplayListen
         List<DbRelationship> listRels = model.getObjectList();
         int[] newSel = new int[rels.length];
 
-        GlobalActions globalActions = session.app().getActionManager();
+        GlobalActions globalActions = app.getActionManager();
         
globalActions.getAction(RemoveAttributeRelationshipAction.class).setCurrentSelectedPanel(this);
         
globalActions.getAction(CutAttributeRelationshipAction.class).setCurrentSelectedPanel(this);
         
globalActions.getAction(CopyAttributeRelationshipAction.class).setCurrentSelectedPanel(this);
@@ -193,7 +193,7 @@ public class DbRelationshipPanel extends JPanel implements 
DbEntityDisplayListen
         TableColumn toDepPkColumn = 
table.getColumnModel().getColumn(DbRelationshipTableModel.TO_DEPENDENT_KEY);
         toDepPkColumn.setCellRenderer(new CheckBoxCellRenderer());
 
-        new 
CMTablePrefs(session.app().getPrefsManager().uiNode("dbEntity/relationshipTable"))
+        new 
CMTablePrefs(app.getPrefsManager().uiNode("dbEntity/relationshipTable"))
                 .bind(table, null, DbRelationshipTableModel.NAME);
     }
 
@@ -267,7 +267,7 @@ public class DbRelationshipPanel extends JPanel implements 
DbEntityDisplayListen
 
         DbRelationshipTableModel model = (DbRelationshipTableModel) 
table.getModel();
         DbRelationship rel = model.getRelationship(row);
-        new DbRelationshipDialog(session, session.app().getFrame())
+        new DbRelationshipDialog(session, app.getFrame())
                 .modifyRelationship(rel)
                 .open();
     }
@@ -287,7 +287,7 @@ public class DbRelationshipPanel extends JPanel implements 
DbEntityDisplayListen
                 
parentPanel.getAttributePanel().getTable().getCellEditor().stopCellEditing();
             }
 
-            GlobalActions globalActions = session.app().getActionManager();
+            GlobalActions globalActions = app.getActionManager();
             
globalActions.getAction(RemoveAttributeRelationshipAction.class).setCurrentSelectedPanel(this);
             
globalActions.getAction(CutAttributeRelationshipAction.class).setCurrentSelectedPanel(this);
             
globalActions.getAction(CopyAttributeRelationshipAction.class).setCurrentSelectedPanel(this);
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/objentity/properties/ObjAttributePanel.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/objentity/properties/ObjAttributePanel.java
index 3e0ef0cc2..d194fe63e 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/objentity/properties/ObjAttributePanel.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/objentity/properties/ObjAttributePanel.java
@@ -33,6 +33,7 @@ import org.apache.cayenne.modeler.event.model.ObjEntityEvent;
 import org.apache.cayenne.modeler.event.model.ObjEntityListener;
 import org.apache.cayenne.modeler.event.model.ProjectBeforeSaveEvent;
 import org.apache.cayenne.modeler.event.model.ProjectBeforeSaveListener;
+import org.apache.cayenne.modeler.toolkit.ProjectPanel;
 import org.apache.cayenne.modeler.toolkit.table.CMTablePrefs;
 import org.apache.cayenne.modeler.project.ObjEntityOps;
 import org.apache.cayenne.modeler.service.action.GlobalActions;
@@ -73,18 +74,16 @@ import java.util.Map;
 /**
  * Detail view of the ObjEntity attributes.
  */
-public class ObjAttributePanel extends JPanel implements 
ObjEntityDisplayListener, ObjEntityListener, ObjAttributeListener, 
ProjectBeforeSaveListener {
+public class ObjAttributePanel extends ProjectPanel implements 
ObjEntityDisplayListener, ObjEntityListener, ObjAttributeListener, 
ProjectBeforeSaveListener {
 
     private static final ImageIcon INHERITANCE_ICON = 
IconFactory.buildIcon("icon-inheritance.png");
 
-    private final ProjectSession session;
     private final ObjEntityPropertiesView parentPanel;
-
     private final CMTable table;
     private final JMenuItem editMenu;
 
     public ObjAttributePanel(ProjectSession session, ObjEntityPropertiesView 
parentPanel) {
-        this.session = session;
+        super(session);
         this.parentPanel = parentPanel;
         this.table = new CMTable();
         this.editMenu = new JMenuItem("Edit Attribute", 
IconFactory.buildIcon("icon-edit.png"));
@@ -95,11 +94,11 @@ public class ObjAttributePanel extends JPanel implements 
ObjEntityDisplayListene
     private void initLayout() {
         setLayout(new BorderLayout());
 
-        GlobalActions globalActions = session.app().getActionManager();
+        GlobalActions globalActions = app.getActionManager();
 
         table.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
         table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
-        table.setDefaultRenderer(String.class, new CellRenderer(session));
+        table.setDefaultRenderer(String.class, new CellRenderer());
 
         JPopupMenu popup = new JPopupMenu();
         popup.add(editMenu);
@@ -139,7 +138,7 @@ public class ObjAttributePanel extends JPanel implements 
ObjEntityDisplayListene
 
         table.getSelectionModel().addListSelectionListener(this::valueChanged);
 
-        session.app().getActionManager().setupCutCopyPaste(
+        app.getActionManager().setupCutCopyPaste(
                 table,
                 CutAttributeRelationshipAction.class,
                 CopyAttributeRelationshipAction.class);
@@ -218,7 +217,7 @@ public class ObjAttributePanel extends JPanel implements 
ObjEntityDisplayListene
     public void objAttributeAdded(ObjAttributeEvent e) {
         ObjAttributeTableModel model = (ObjAttributeTableModel) 
table.getModel();
 
-        model.addRow((ObjAttribute) e.getAttribute());
+        model.addRow(e.getAttribute());
         model.fireTableDataChanged();
 
         int ind = -1;
@@ -263,7 +262,7 @@ public class ObjAttributePanel extends JPanel implements 
ObjEntityDisplayListene
                         JOptionPane.QUESTION_MESSAGE,
                         JOptionPane.YES_NO_OPTION);
 
-                JDialog dialog = pane.createDialog(session.app().getFrame(), 
"Confirm Remove");
+                JDialog dialog = pane.createDialog(app.getFrame(), "Confirm 
Remove");
                 dialog.setVisible(true);
 
                 boolean shouldDelete;
@@ -318,7 +317,7 @@ public class ObjAttributePanel extends JPanel implements 
ObjEntityDisplayListene
         
table.getColumnModel().getColumn(ObjAttributeTableModel.DB_ATTRIBUTE).setCellRenderer(new
 DbAttributePathComboBoxRenderer());
         
table.getColumnModel().getColumn(ObjAttributeTableModel.DB_ATTRIBUTE).setCellEditor(new
 DbAttributePathComboBoxEditor(session::getSelectedDataMap));
 
-        new 
CMTablePrefs(session.app().getPrefsManager().uiNode("objEntity/attributeTable"))
+        new 
CMTablePrefs(app.getPrefsManager().uiNode("objEntity/attributeTable"))
                 .bind(table, minSizes, ObjAttributeTableModel.OBJ_ATTRIBUTE);
     }
 
@@ -330,13 +329,12 @@ public class ObjAttributePanel extends JPanel implements 
ObjEntityDisplayListene
             return;
         }
 
-        if (!(table.getModel() instanceof ObjAttributeTableModel)) {
+        if (!(table.getModel() instanceof ObjAttributeTableModel model)) {
             // probably means this panel hasn't been loaded yet...
             return;
         }
 
-        ObjAttributeTableModel model = (ObjAttributeTableModel) 
table.getModel();
-        if (model.getDbEntity() != ((ObjEntity) e.getEntity()).getDbEntity()) {
+        if (model.getDbEntity() != e.getEntity().getDbEntity()) {
             model.resetDbEntity();
             setUpTableStructure();
         }
@@ -347,20 +345,14 @@ public class ObjAttributePanel extends JPanel implements 
ObjEntityDisplayListene
             return;
         }
 
-        this.rebuildTable((ObjEntity) e.getEntity());
+        this.rebuildTable(e.getEntity());
     }
 
     public void objEntityRemoved(ObjEntityEvent e) {
     }
 
     // custom renderer used for inherited attributes highlighting
-    static final class CellRenderer extends DefaultTableCellRenderer {
-
-        private final ProjectSession session;
-
-        CellRenderer(ProjectSession session) {
-            this.session = session;
-        }
+    final class CellRenderer extends DefaultTableCellRenderer {
 
         @Override
         public Component getTableCellRendererComponent(
@@ -403,7 +395,7 @@ public class ObjAttributePanel extends JPanel implements 
ObjEntityDisplayListene
         public void mouseClicked(MouseEvent event, int x) {
             Point point = event.getPoint();
             if (point.x - x <= INHERITANCE_ICON.getIconWidth()) {
-                GlobalActions globalActions = session.app().getActionManager();
+                GlobalActions globalActions = app.getActionManager();
                 
globalActions.getAction(ObjEntityToSuperEntityAction.class).performAction(null);
             }
         }
@@ -433,7 +425,7 @@ public class ObjAttributePanel extends JPanel implements 
ObjEntityDisplayListene
         // ... show dialog...
         new ObjAttributeInfoDialog(
                 session,
-                session.app().getFrame(),
+                app.getFrame(),
                 row, model).open();
 
         // This is required for a table to be updated properly
@@ -459,7 +451,7 @@ public class ObjAttributePanel extends JPanel implements 
ObjEntityDisplayListene
                 
parentPanel.getRelationshipPanel().getTable().getCellEditor().stopCellEditing();
             }
 
-            GlobalActions globalActions = session.app().getActionManager();
+            GlobalActions globalActions = app.getActionManager();
             
globalActions.getAction(RemoveAttributeRelationshipAction.class).setCurrentSelectedPanel(this);
             
globalActions.getAction(CutAttributeRelationshipAction.class).setCurrentSelectedPanel(this);
             
globalActions.getAction(CopyAttributeRelationshipAction.class).setCurrentSelectedPanel(this);
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/objentity/properties/ObjRelationshipPanel.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/objentity/properties/ObjRelationshipPanel.java
index 5b1b1ff12..ab61cd1f7 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/objentity/properties/ObjRelationshipPanel.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/objentity/properties/ObjRelationshipPanel.java
@@ -25,6 +25,7 @@ import 
org.apache.cayenne.modeler.event.model.ObjRelationshipEvent;
 import org.apache.cayenne.modeler.event.model.ObjEntityEvent;
 import org.apache.cayenne.modeler.event.model.ObjEntityListener;
 import org.apache.cayenne.modeler.event.model.ObjRelationshipListener;
+import org.apache.cayenne.modeler.toolkit.ProjectPanel;
 import org.apache.cayenne.modeler.toolkit.combobox.CMComboBox;
 import org.apache.cayenne.modeler.toolkit.table.CMComboBoxCellEditor;
 import org.apache.cayenne.modeler.toolkit.icon.IconFactory;
@@ -59,7 +60,7 @@ import java.util.List;
 /**
  * Displays ObjRelationships for the edited ObjEntity.
  */
-public class ObjRelationshipPanel extends JPanel implements 
ObjEntityDisplayListener, ObjEntityListener, ObjRelationshipListener {
+public class ObjRelationshipPanel extends ProjectPanel implements 
ObjEntityDisplayListener, ObjEntityListener, ObjRelationshipListener {
 
     private static final ImageIcon INHERITANCE_ICON = 
IconFactory.buildIcon("icon-inheritance.png");
 
@@ -70,13 +71,12 @@ public class ObjRelationshipPanel extends JPanel implements 
ObjEntityDisplayList
             DeleteRule.deleteRuleName(DeleteRule.DENY),
     };
 
-    private final ProjectSession session;
     private final CMTable table;
     private final ObjEntityPropertiesView parentPanel;
     private final JMenuItem editMenu;
 
     public ObjRelationshipPanel(ProjectSession session, 
ObjEntityPropertiesView parentPanel) {
-        this.session = session;
+        super(session);
         this.parentPanel = parentPanel;
         this.table = new CMTable();
         this.editMenu = new JMenuItem("Edit Relationship", 
IconFactory.buildIcon("icon-edit.png"));
@@ -87,7 +87,7 @@ public class ObjRelationshipPanel extends JPanel implements 
ObjEntityDisplayList
     private void initLayout() {
         setLayout(new BorderLayout());
 
-        GlobalActions globalActions = session.app().getActionManager();
+        GlobalActions globalActions = app.getActionManager();
 
         table.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
         table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
@@ -133,7 +133,7 @@ public class ObjRelationshipPanel extends JPanel implements 
ObjEntityDisplayList
 
         table.getSelectionModel().addListSelectionListener(this::valueChanged);
 
-        session.app().getActionManager().setupCutCopyPaste(
+        app.getActionManager().setupCutCopyPaste(
                 table,
                 CutAttributeRelationshipAction.class,
                 CopyAttributeRelationshipAction.class);
@@ -232,7 +232,7 @@ public class ObjRelationshipPanel extends JPanel implements 
ObjEntityDisplayList
                 ObjRelationshipTableModel.REL_TARGET);
         DefaultCellEditor editor = (DefaultCellEditor) col.getCellEditor();
 
-        JComboBox combo = (JComboBox) editor.getComponent();
+        JComboBox<?> combo = (JComboBox<?>) editor.getComponent();
         
combo.setRenderer(Renderers.entityListRendererWithIcons(entity.getDataMap()));
 
         ObjRelationshipTableModel model = (ObjRelationshipTableModel) 
table.getModel();
@@ -268,7 +268,7 @@ public class ObjRelationshipPanel extends JPanel implements 
ObjEntityDisplayList
         });
 
         col = 
table.getColumnModel().getColumn(ObjRelationshipTableModel.REL_DELETE_RULE);
-        JComboBox deleteRulesCombo = new CMComboBox<>(DELETE_RULES);
+        JComboBox<?> deleteRulesCombo = new CMComboBox<>(DELETE_RULES);
         deleteRulesCombo.setFocusable(false);
         deleteRulesCombo.setEditable(true);
         ((JComponent) 
deleteRulesCombo.getEditor().getEditorComponent()).setBorder(null);
@@ -276,7 +276,7 @@ public class ObjRelationshipPanel extends JPanel implements 
ObjEntityDisplayList
         deleteRulesCombo.setSelectedIndex(0); // Default to the first value
         col.setCellEditor(new CMComboBoxCellEditor(deleteRulesCombo));
 
-        new 
CMTablePrefs(session.app().getPrefsManager().uiNode("objEntity/relationshipTable"))
+        new 
CMTablePrefs(app.getPrefsManager().uiNode("objEntity/relationshipTable"))
                 .bind(table, null, ObjRelationshipTableModel.REL_NAME);
     }
 
@@ -364,7 +364,7 @@ public class ObjRelationshipPanel extends JPanel implements 
ObjEntityDisplayList
         public void mouseClicked(MouseEvent event, int x) {
             Point point = event.getPoint();
             if (point.x - x <= INHERITANCE_ICON.getIconWidth()) {
-                GlobalActions globalActions = session.app().getActionManager();
+                GlobalActions globalActions = app.getActionManager();
                 
globalActions.getAction(ObjEntityToSuperEntityAction.class).performAction(null);
             }
         }
@@ -377,7 +377,7 @@ public class ObjRelationshipPanel extends JPanel implements 
ObjEntityDisplayList
         }
 
         ObjRelationshipTableModel model = (ObjRelationshipTableModel) 
table.getModel();
-        new ObjRelationshipInfoDialog(session, session.app().getFrame())
+        new ObjRelationshipInfoDialog(session, app.getFrame())
                 .modifyRelationship(model.getRelationship(row))
                 .open();
 
@@ -404,7 +404,7 @@ public class ObjRelationshipPanel extends JPanel implements 
ObjEntityDisplayList
                 
parentPanel.getAttributePanel().getTable().getCellEditor().stopCellEditing();
             }
 
-            GlobalActions globalActions = session.app().getActionManager();
+            GlobalActions globalActions = app.getActionManager();
             
globalActions.getAction(RemoveAttributeRelationshipAction.class).setCurrentSelectedPanel(this);
             
globalActions.getAction(CutAttributeRelationshipAction.class).setCurrentSelectedPanel(this);
             
globalActions.getAction(CopyAttributeRelationshipAction.class).setCurrentSelectedPanel(this);

Reply via email to