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 4eec71d1ae5db7285e64e6828a7c481345cbedb2
Author: Andrus Adamchik <[email protected]>
AuthorDate: Tue May 5 16:13:36 2026 -0400

    Modeler cleanup
    
    don't inherit from JScrollPane, use it via composition
---
 .../editor/datamap/dbimport/DbImportView.java      |  29 +++---
 .../dbimport/ReverseEngineeringTreePanel.java      |  15 ++-
 ...ggableTreePanel.java => SourceTargetPanel.java} | 116 ++++++++++++---------
 .../dbimport/action/LoadDbSchemaAction.java        |  30 +++---
 .../dbimport/action/MoveImportNodeAction.java      |   4 +-
 .../cayenne/modeler/ui/welcome/WelcomeScreen.java  |  16 +--
 6 files changed, 114 insertions(+), 96 deletions(-)

diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/DbImportView.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/DbImportView.java
index d98cb0ddc..ede1b0c4c 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/DbImportView.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/DbImportView.java
@@ -26,7 +26,6 @@ import org.apache.cayenne.modeler.toolkit.icon.IconFactory;
 import org.apache.cayenne.modeler.toolkit.ProjectPanel;
 import org.apache.cayenne.modeler.project.ProjectSession;
 import 
org.apache.cayenne.modeler.ui.project.editor.datamap.dbimport.action.DbImportActions;
-import 
org.apache.cayenne.modeler.ui.project.editor.datamap.dbimport.action.LoadDbSchemaAction;
 import 
org.apache.cayenne.modeler.ui.project.editor.datamap.dbimport.action.ModelerDbImportAction;
 import 
org.apache.cayenne.modeler.ui.project.editor.datamap.dbimport.tree.ColorTreeRenderer;
 import 
org.apache.cayenne.modeler.ui.project.editor.datamap.dbimport.tree.DbImportTreeNode;
@@ -47,7 +46,7 @@ public class DbImportView extends ProjectPanel {
     private final TreeToolbarPanel treeToolbar;
     private final ReverseEngineeringTreePanel treePanel;
     private final ReverseEngineeringConfigPanel configPanel;
-    private final DraggableTreePanel draggableTreePanel;
+    private final SourceTargetPanel sourceTargetPanel;
     private final JProgressBar loadDbSchemaProgress;
     private final JProgressBar reverseEngineeringProgress;
     private final ModelerAbstractAction.CayenneToolbarButton 
loadDbSchemaButton;
@@ -73,14 +72,14 @@ public class DbImportView extends ProjectPanel {
         reverseEngineeringTree.setShowsRootHandles(true);
 
         DbImportActions actions = new DbImportActions(app(), this, 
reverseEngineeringTree, draggableTree);
-        this.draggableTreePanel = new DraggableTreePanel(draggableTree, 
reverseEngineeringTree, actions);
+        this.sourceTargetPanel = new SourceTargetPanel(draggableTree, 
reverseEngineeringTree, actions);
         draggableTree.setLoadDbSchemaAction(actions.getLoadDbSchemaAction());
         this.treeToolbar = new TreeToolbarPanel(reverseEngineeringTree, 
actions);
-        this.treePanel = new ReverseEngineeringTreePanel(session, 
reverseEngineeringTree, draggableTree, actions);
+        this.treePanel = new ReverseEngineeringTreePanel(session, 
reverseEngineeringTree, draggableTree, this.sourceTargetPanel, actions);
         treePanel.setTreeToolbar(treeToolbar);
         model.setDbSchemaTree(draggableTree);
         draggableTreeModel.setDbSchemaTree(draggableTree);
-        ((ColorTreeRenderer) 
draggableTreePanel.getSourceTree().getCellRenderer())
+        ((ColorTreeRenderer) 
sourceTargetPanel.getSourceTree().getCellRenderer())
                 .setReverseEngineeringTree(reverseEngineeringTree);
         this.configPanel = new ReverseEngineeringConfigPanel(session, this);
         this.loadDbSchemaProgress = new JProgressBar();
@@ -98,8 +97,8 @@ public class DbImportView extends ProjectPanel {
 
         FormLayout buttonPanelLayout = new FormLayout("fill:50dlu");
         DefaultFormBuilder buttonBuilder = new 
DefaultFormBuilder(buttonPanelLayout);
-        buttonBuilder.append(draggableTreePanel.getMoveButton());
-        buttonBuilder.append(draggableTreePanel.getMoveInvertButton());
+        buttonBuilder.append(sourceTargetPanel.getMoveButton());
+        buttonBuilder.append(sourceTargetPanel.getMoveInvertButton());
 
         FormLayout layout = new FormLayout("fill:160dlu:grow, 5dlu, 
fill:50dlu, 5dlu, fill:160dlu:grow");
         DefaultFormBuilder builder = new DefaultFormBuilder(layout);
@@ -136,7 +135,7 @@ public class DbImportView extends ProjectPanel {
         builder.append(databaseHeaderBuilder.getPanel());
         builder.append(treePanel);
         builder.append(buttonBuilder.getPanel());
-        builder.append(draggableTreePanel);
+        builder.append(sourceTargetPanel);
 
         loadDbSchemaProgress.setIndeterminate(true);
         loadDbSchemaProgress.setVisible(false);
@@ -153,7 +152,7 @@ public class DbImportView extends ProjectPanel {
         builder.append(configPanel, ALL_LINE_SPAN);
         setLayout(new BorderLayout());
         add(builder.getPanel(), BorderLayout.CENTER);
-        draggableTreePanel.getSourceTree().repaint();
+        sourceTargetPanel.getSourceTree().repaint();
     }
 
     private void initBindings() {
@@ -206,11 +205,11 @@ public class DbImportView extends ProjectPanel {
                 configPanel.applyTableTypes("TABLE, VIEW");
             }
             treePanel.updateTree();
-            DbImportTreeNode root = 
draggableTreePanel.getSourceTree().getRootNode();
+            DbImportTreeNode root = 
sourceTargetPanel.getSourceTree().getRootNode();
             root.removeAllChildren();
-            draggableTreePanel.updateTree(session().getSelectedDataMap());
-            draggableTreePanel.getMoveButton().setEnabled(false);
-            draggableTreePanel.getMoveInvertButton().setEnabled(false);
+            sourceTargetPanel.updateTree(session().getSelectedDataMap());
+            sourceTargetPanel.getMoveButton().setEnabled(false);
+            sourceTargetPanel.getMoveInvertButton().setEnabled(false);
         }
         initFromModel = false;
     }
@@ -235,8 +234,8 @@ public class DbImportView extends ProjectPanel {
         return loadDbSchemaButton;
     }
 
-    public DraggableTreePanel getDraggableTreePanel() {
-        return draggableTreePanel;
+    public SourceTargetPanel getDraggableTreePanel() {
+        return sourceTargetPanel;
     }
 
     public boolean isInitFromModel() {
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 50a10ce9c..0e55693c1 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
@@ -33,32 +33,36 @@ import org.apache.cayenne.modeler.project.ProjectSession;
 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.tree.DefaultTreeCellRenderer;
 import javax.swing.tree.TreePath;
+import java.awt.BorderLayout;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
 import java.util.HashMap;
 import java.util.Map;
 
-class ReverseEngineeringTreePanel extends JScrollPane {
+class ReverseEngineeringTreePanel extends JPanel {
 
     private final DbImportTree reverseEngineeringTree;
     private final DbImportTree dbSchemaTree;
 
     private final ProjectSession session;
     private final DbImportActions actions;
+    private final SourceTargetPanel sourceTargetPanel;
     private TreeToolbarPanel treeToolbar;
     private final Map<Class<?>, DefaultPopUpMenu> popups;
 
     ReverseEngineeringTreePanel(ProjectSession session, DbImportTree 
reverseEngineeringTree,
-                                DbImportTree dbSchemaTree, DbImportActions 
actions) {
-        super(reverseEngineeringTree);
+                                DbImportTree dbSchemaTree, SourceTargetPanel 
sourceTargetPanel,
+                                DbImportActions actions) {
         this.session = session;
         this.reverseEngineeringTree = reverseEngineeringTree;
         this.dbSchemaTree = dbSchemaTree;
+        this.sourceTargetPanel = sourceTargetPanel;
         this.actions = actions;
         this.popups = new HashMap<>();
         initLayout();
@@ -86,6 +90,8 @@ class ReverseEngineeringTreePanel extends JScrollPane {
         popups.put(IncludeProcedure.class, new DefaultPopUpMenu(actions));
         popups.put(ExcludeProcedure.class, new DefaultPopUpMenu(actions));
         changeIcons();
+        setLayout(new BorderLayout());
+        add(new JScrollPane(reverseEngineeringTree), BorderLayout.CENTER);
     }
 
     private void initBindings() {
@@ -153,8 +159,7 @@ class ReverseEngineeringTreePanel extends JScrollPane {
     private void scrollToNode(JTree tree, DbImportTreeNode node) {
         TreePath path = new TreePath(node.getPath());
         tree.scrollPathToVisible(path);
-        DraggableTreePanel parentPanel = ((DraggableTreePanel) 
dbSchemaTree.getParent().getParent());
-        parentPanel.getHorizontalScrollBar().setValue(0);
+        sourceTargetPanel.resetHorizontalScroll();
     }
 
     private ReverseEngineering getReverseEngineeringBySelectedMap() {
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/DraggableTreePanel.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/SourceTargetPanel.java
similarity index 95%
rename from 
modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/DraggableTreePanel.java
rename to 
modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/SourceTargetPanel.java
index 2f210d4de..355a21749 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/DraggableTreePanel.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/SourceTargetPanel.java
@@ -41,6 +41,7 @@ import javax.swing.*;
 import javax.swing.event.TreeSelectionEvent;
 import javax.swing.event.TreeSelectionListener;
 import javax.swing.tree.TreePath;
+import java.awt.BorderLayout;
 import java.awt.datatransfer.DataFlavor;
 import java.awt.datatransfer.Transferable;
 import java.awt.datatransfer.UnsupportedFlavorException;
@@ -54,7 +55,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-public class DraggableTreePanel extends JScrollPane {
+public class SourceTargetPanel extends JPanel {
 
     private static final int ROOT_LEVEL = 14;
     private static final int FIRST_LEVEL = 11;
@@ -74,10 +75,11 @@ public class DraggableTreePanel extends JScrollPane {
 
     private final ModelerAbstractAction.CayenneToolbarButton moveButton;
     private final ModelerAbstractAction.CayenneToolbarButton moveInvertButton;
+    private final JScrollPane scrollPane;
+    
     private ImportSourceTree importSourceTree;
 
-    public DraggableTreePanel(DbImportTree sourceTree, DbImportTree 
targetTree, DbImportActions actions) {
-        super(sourceTree);
+    public SourceTargetPanel(DbImportTree sourceTree, DbImportTree targetTree, 
DbImportActions actions) {
         this.targetTree = targetTree;
         this.sourceTree = sourceTree;
         this.actions = actions;
@@ -86,55 +88,13 @@ public class DraggableTreePanel extends JScrollPane {
         this.insertableLevels = new HashMap<>();
         this.moveButton = (ModelerAbstractAction.CayenneToolbarButton) 
actions.getMoveImportNodeAction().buildButton();
         this.moveInvertButton = (ModelerAbstractAction.CayenneToolbarButton) 
actions.getMoveInvertNodeAction().buildButton();
+        this.scrollPane = new JScrollPane(sourceTree);
+
         initLayout();
         initBindings();
     }
 
-    public void updateTree(DataMap dataMap) {
-        DbImportModel model = (DbImportModel) sourceTree.getModel();
-        model.reload();
-        if (databaseStructures.get(dataMap) != null) {
-            sourceTree.setReverseEngineering(databaseStructures.get(dataMap));
-            
sourceTree.translateReverseEngineeringToTree(databaseStructures.get(dataMap), 
true);
-            sourceTree.setEnabled(true);
-        } else {
-            sourceTree.setEnabled(false);
-        }
-    }
-
-    private void initBindings() {
-        sourceTree.addKeyListener(new SourceTreeKeyListener());
-        sourceTree.setTransferHandler(new SourceTreeTransferHandler());
-        sourceTree.addTreeSelectionListener(new SourceTreeSelectionListener());
-        sourceTree.addMouseListener(new ResetFocusMouseAdapter());
-
-        targetTree.addKeyListener(new TargetTreeKeyListener());
-        targetTree.setTransferHandler(new TargetTreeTransferHandler());
-        targetTree.addTreeSelectionListener(new TargetTreeSelectionListener());
-        targetTree.setDragEnabled(true);
-        targetTree.setDropMode(DropMode.INSERT);
-    }
-
-    private boolean canBeInverted() {
-        DbImportTreeNode selectedElement = sourceTree.getSelectedNode();
-        if (selectedElement == null) {
-            return false;
-        }
-        return levels.get(selectedElement.getUserObject().getClass()) < 
SECOND_LEVEL;
-    }
-
     private void initLayout() {
-        initLevels();
-        sourceTree.setDragEnabled(true);
-        sourceTree.setCellRenderer(new ColorTreeRenderer());
-        sourceTree.setDropMode(DropMode.INSERT);
-        moveButton.setShowingText(true);
-        moveButton.setText(MOVE_BUTTON_LABEL);
-        moveInvertButton.setShowingText(true);
-        moveInvertButton.setText(MOVE_INV_BUTTON_LABEL);
-    }
-
-    private void initLevels() {
         levels.put(ReverseEngineering.class, ROOT_LEVEL);
         levels.put(Catalog.class, FIRST_LEVEL);
         levels.put(Schema.class, SECOND_LEVEL);
@@ -168,6 +128,54 @@ public class DraggableTreePanel extends JScrollPane {
         insertableLevels.put(IncludeTable.class, Arrays.asList(
                 IncludeColumn.class, ExcludeColumn.class
         ));
+
+        sourceTree.setDragEnabled(true);
+        sourceTree.setCellRenderer(new ColorTreeRenderer());
+        sourceTree.setDropMode(DropMode.INSERT);
+        moveButton.setShowingText(true);
+        moveButton.setText(MOVE_BUTTON_LABEL);
+        moveInvertButton.setShowingText(true);
+        moveInvertButton.setText(MOVE_INV_BUTTON_LABEL);
+
+        setLayout(new BorderLayout());
+        add(scrollPane, BorderLayout.CENTER);
+    }
+
+    private void initBindings() {
+        sourceTree.addKeyListener(new SourceTreeKeyListener());
+        sourceTree.setTransferHandler(new SourceTreeTransferHandler());
+        sourceTree.addTreeSelectionListener(new SourceTreeSelectionListener());
+        sourceTree.addMouseListener(new ResetFocusMouseAdapter());
+
+        targetTree.addKeyListener(new TargetTreeKeyListener());
+        targetTree.setTransferHandler(new TargetTreeTransferHandler());
+        targetTree.addTreeSelectionListener(new TargetTreeSelectionListener());
+        targetTree.setDragEnabled(true);
+        targetTree.setDropMode(DropMode.INSERT);
+    }
+
+    public void updateTree(DataMap dataMap) {
+        DbImportModel model = (DbImportModel) sourceTree.getModel();
+        model.reload();
+        if (databaseStructures.get(dataMap) != null) {
+            sourceTree.setReverseEngineering(databaseStructures.get(dataMap));
+            
sourceTree.translateReverseEngineeringToTree(databaseStructures.get(dataMap), 
true);
+            sourceTree.setEnabled(true);
+        } else {
+            sourceTree.setEnabled(false);
+        }
+    }
+
+    private boolean canBeInverted() {
+        DbImportTreeNode selectedElement = sourceTree.getSelectedNode();
+        if (selectedElement == null) {
+            return false;
+        }
+        return levels.get(selectedElement.getUserObject().getClass()) < 
SECOND_LEVEL;
+    }
+
+    public void resetHorizontalScroll() {
+        scrollPane.getHorizontalScrollBar().setValue(0);
     }
 
     private boolean canBeMoved() {
@@ -259,7 +267,8 @@ public class DraggableTreePanel extends JScrollPane {
 
     private class SourceTreeKeyListener implements KeyListener {
         @Override
-        public void keyTyped(KeyEvent e) {}
+        public void keyTyped(KeyEvent e) {
+        }
 
         @Override
         public void keyPressed(KeyEvent e) {
@@ -271,12 +280,14 @@ public class DraggableTreePanel extends JScrollPane {
         }
 
         @Override
-        public void keyReleased(KeyEvent e) {}
+        public void keyReleased(KeyEvent e) {
+        }
     }
 
     private class TargetTreeKeyListener implements KeyListener {
         @Override
-        public void keyTyped(KeyEvent e) {}
+        public void keyTyped(KeyEvent e) {
+        }
 
         @Override
         public void keyPressed(KeyEvent e) {
@@ -286,7 +297,8 @@ public class DraggableTreePanel extends JScrollPane {
         }
 
         @Override
-        public void keyReleased(KeyEvent e) {}
+        public void keyReleased(KeyEvent e) {
+        }
     }
 
     private class TargetTreeSelectionListener implements TreeSelectionListener 
{
@@ -432,7 +444,7 @@ public class DraggableTreePanel extends JScrollPane {
     private class ResetFocusMouseAdapter extends MouseAdapter {
         @Override
         public void mouseClicked(MouseEvent e) {
-            if (sourceTree.getRowForLocation(e.getX(),e.getY()) == -1) {
+            if (sourceTree.getRowForLocation(e.getX(), e.getY()) == -1) {
                 sourceTree.setSelectionRow(-1);
                 moveInvertButton.setEnabled(false);
                 moveButton.setEnabled(false);
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/action/LoadDbSchemaAction.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/action/LoadDbSchemaAction.java
index 47698d910..477b03f48 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/action/LoadDbSchemaAction.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/action/LoadDbSchemaAction.java
@@ -29,7 +29,7 @@ import 
org.apache.cayenne.modeler.ui.project.editor.datamap.dbimport.tree.DbImpo
 import 
org.apache.cayenne.modeler.ui.project.editor.datamap.dbimport.DatabaseSchemaLoader;
 import 
org.apache.cayenne.modeler.ui.project.editor.datamap.dbimport.DbImportModel;
 import 
org.apache.cayenne.modeler.ui.project.editor.datamap.dbimport.DbImportView;
-import 
org.apache.cayenne.modeler.ui.project.editor.datamap.dbimport.DraggableTreePanel;
+import 
org.apache.cayenne.modeler.ui.project.editor.datamap.dbimport.SourceTargetPanel;
 import 
org.apache.cayenne.modeler.ui.project.editor.datamap.dbimport.PrintColumnsBiFunction;
 import 
org.apache.cayenne.modeler.ui.project.editor.datamap.dbimport.PrintTablesBiFunction;
 import org.apache.cayenne.modeler.dbconnector.DBConnector;
@@ -65,14 +65,14 @@ public class LoadDbSchemaAction extends 
DBConnectionAwareAction {
     }
 
     public void loadDbSchema(TreePath tablePath) {
-        DraggableTreePanel draggableTreePanel = view.getDraggableTreePanel();
+        SourceTargetPanel sourceTargetPanel = view.getDraggableTreePanel();
         view.getLoadDbSchemaProgress().setVisible(true);
         view.getLoadDbSchemaButton().setEnabled(false);
         Thread thread = new Thread(() -> {
             LoadDbSchemaAction.this.setEnabled(false);
             view.lockToolbarButtons();
-            draggableTreePanel.getMoveButton().setEnabled(false);
-            draggableTreePanel.getMoveInvertButton().setEnabled(false);
+            sourceTargetPanel.getMoveButton().setEnabled(false);
+            sourceTargetPanel.getMoveInvertButton().setEnabled(false);
             try {
 
                 DBConnector connectionInfo = getConnector(
@@ -117,36 +117,36 @@ public class LoadDbSchemaAction extends 
DBConnectionAwareAction {
     }
 
     private void loadDataBase(DBConnector connectionInfo) throws Exception {
-        DraggableTreePanel draggableTreePanel = view.getDraggableTreePanel();
+        SourceTargetPanel sourceTargetPanel = view.getDraggableTreePanel();
         ReverseEngineering databaseReverseEngineering = new 
DatabaseSchemaLoader(application.getDbAdapterFactory())
                 .load(connectionInfo, application.getClassLoader());
-        draggableTreePanel.getSourceTree()
+        sourceTargetPanel.getSourceTree()
                 .setEnabled(true);
-        draggableTreePanel.getSourceTree()
+        sourceTargetPanel.getSourceTree()
                 .translateReverseEngineeringToTree(databaseReverseEngineering, 
true);
-        draggableTreePanel
+        sourceTargetPanel
                 
.bindReverseEngineeringToDatamap(getProjectSession().getSelectedDataMap(), 
databaseReverseEngineering);
-        ((DbImportModel) 
draggableTreePanel.getSourceTree().getModel()).reload();
+        ((DbImportModel) 
sourceTargetPanel.getSourceTree().getModel()).reload();
     }
 
     private void loadTables(DBConnector connectionInfo, TreePath tablePath) 
throws Exception {
-        DraggableTreePanel draggableTreePanel = view.getDraggableTreePanel();
+        SourceTargetPanel sourceTargetPanel = view.getDraggableTreePanel();
         ReverseEngineering databaseReverseEngineering = new 
DatabaseSchemaLoader(application.getDbAdapterFactory())
                 .loadTables(connectionInfo,
                         application.getClassLoader(),
                         tablePath,
                         view.getTableTypes());
-        draggableTreePanel.getSourceTree()
+        sourceTargetPanel.getSourceTree()
                 .update(databaseReverseEngineering,
-                        new 
PrintTablesBiFunction(draggableTreePanel.getSourceTree()));
+                        new 
PrintTablesBiFunction(sourceTargetPanel.getSourceTree()));
     }
 
     private void loadColumns(DBConnector connectionInfo, TreePath tablePath) 
throws SQLException {
-        DraggableTreePanel draggableTreePanel = view.getDraggableTreePanel();
+        SourceTargetPanel sourceTargetPanel = view.getDraggableTreePanel();
         ReverseEngineering databaseReverseEngineering = new 
DatabaseSchemaLoader(application.getDbAdapterFactory())
                 .loadColumns(connectionInfo, application.getClassLoader(), 
tablePath);
-        draggableTreePanel.getSourceTree()
+        sourceTargetPanel.getSourceTree()
                 .update(databaseReverseEngineering,
-                        new 
PrintColumnsBiFunction(draggableTreePanel.getSourceTree()));
+                        new 
PrintColumnsBiFunction(sourceTargetPanel.getSourceTree()));
     }
 }
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/action/MoveImportNodeAction.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/action/MoveImportNodeAction.java
index 44f1e7bca..7e8e289d1 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/action/MoveImportNodeAction.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/action/MoveImportNodeAction.java
@@ -33,7 +33,7 @@ import 
org.apache.cayenne.modeler.ui.project.editor.datamap.dbimport.tree.DbImpo
 import 
org.apache.cayenne.modeler.ui.project.editor.datamap.dbimport.DbImportSorter;
 import 
org.apache.cayenne.modeler.ui.project.editor.datamap.dbimport.DbImportTree;
 import 
org.apache.cayenne.modeler.ui.project.editor.datamap.dbimport.DbImportView;
-import 
org.apache.cayenne.modeler.ui.project.editor.datamap.dbimport.DraggableTreePanel;
+import 
org.apache.cayenne.modeler.ui.project.editor.datamap.dbimport.SourceTargetPanel;
 import org.apache.cayenne.modeler.undo.DbImportTreeUndoableEdit;
 import org.apache.cayenne.modeler.ui.action.ModelerAbstractAction;
 
@@ -124,7 +124,7 @@ public class MoveImportNodeAction extends 
ModelerAbstractAction {
         TreeManipulationAction action = null;
         DbImportTreeNode foundNode = null;
         String insertableName = EMPTY_NAME;
-        DraggableTreePanel panel = view.getDraggableTreePanel();
+        SourceTargetPanel panel = view.getDraggableTreePanel();
         view.getReverseEngineeringProgress().setVisible(true);
         if (paths != null) {
             boolean isChanged = false;
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/welcome/WelcomeScreen.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/welcome/WelcomeScreen.java
index f90d346c0..16b3ba5ee 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/welcome/WelcomeScreen.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/welcome/WelcomeScreen.java
@@ -22,6 +22,7 @@ package org.apache.cayenne.modeler.ui.welcome;
 import org.apache.cayenne.modeler.Application;
 import org.apache.cayenne.modeler.pref.RecentProjectsPrefs;
 import org.apache.cayenne.modeler.service.action.GlobalActions;
+import org.apache.cayenne.modeler.toolkit.AppPanel;
 import org.apache.cayenne.modeler.toolkit.icon.IconFactory;
 import org.apache.cayenne.modeler.ui.action.NewProjectAction;
 import org.apache.cayenne.modeler.ui.action.OpenProjectAction;
@@ -36,9 +37,8 @@ import java.util.List;
 /**
  * A panel shown when no project is open. User can quickly create new project 
or open an existing one.
  */
-public class WelcomeScreen extends JScrollPane implements 
RecentFileListListener, RecentFileListRenderer.OnFileClickListener {
+public class WelcomeScreen extends AppPanel implements RecentFileListListener, 
RecentFileListRenderer.OnFileClickListener {
 
-    private final Application application;
     private final GlobalActions actionManager;
 
     private final JList<String> recentProjectsList;
@@ -46,8 +46,8 @@ public class WelcomeScreen extends JScrollPane implements 
RecentFileListListener
     private final JPanel mainPanel;
 
     public WelcomeScreen(Application application) {
-        this.application = application;
-        this.actionManager = application.getActionManager();
+        super(application);
+        this.actionManager = app().getActionManager();
         this.mainPanel = new WelcomeScreenMainPanel();
         this.buttonsPanel = new 
BackgroundPanel("welcome/welcome-screen-left-bg.jpg");
         this.recentProjectsList = new JList<>();
@@ -56,10 +56,12 @@ public class WelcomeScreen extends JScrollPane implements 
RecentFileListListener
     }
 
     private void initLayout() {
-        setBorder(BorderFactory.createEmptyBorder());
         initButtonsPane();
         initFileListPane();
-        setViewportView(mainPanel);
+        JScrollPane scrollPane = new JScrollPane(mainPanel);
+        scrollPane.setBorder(BorderFactory.createEmptyBorder());
+        setLayout(new BorderLayout());
+        add(scrollPane, BorderLayout.CENTER);
     }
 
     private void initFileListPane() {
@@ -124,7 +126,7 @@ public class WelcomeScreen extends JScrollPane implements 
RecentFileListListener
 
     @Override
     public void recentFileListChanged() {
-        List<File> arr = 
RecentProjectsPrefs.of(application.getPreferencesRepository()).getFiles();
+        List<File> arr = 
RecentProjectsPrefs.of(app().getPreferencesRepository()).getFiles();
         recentProjectsList.setModel(new RecentFileListModel(arr));
     }
 }

Reply via email to