Repository: cayenne
Updated Branches:
  refs/heads/master 1fcb8cd89 -> eb863c9ae


CAY-2473 Modeler: cleanup attributes and relationship editors


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/eb863c9a
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/eb863c9a
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/eb863c9a

Branch: refs/heads/master
Commit: eb863c9aeb5b7376e9ed831171f2ecd3f4ac4d44
Parents: 1fcb8cd
Author: Nikita Timofeev <stari...@gmail.com>
Authored: Mon Sep 10 16:16:05 2018 +0300
Committer: Nikita Timofeev <stari...@gmail.com>
Committed: Mon Sep 10 16:16:05 2018 +0300

----------------------------------------------------------------------
 RELEASE-NOTES.txt                               |   1 +
 .../dialog/ResolveDbRelationshipDialog.java     | 175 +++++++++----------
 .../dialog/objentity/DbRelationshipTarget.java  |  65 ++-----
 .../objentity/DbRelationshipTargetView.java     |   9 +-
 .../objentity/ObjAttributeInfoDialogView.java   |  56 +++---
 .../dialog/objentity/ObjRelationshipInfo.java   | 129 ++++----------
 .../objentity/ObjRelationshipInfoView.java      |  31 ++--
 .../modeler/editor/ObjEntityAttributePanel.java |   2 +-
 .../editor/ObjEntityRelationshipPanel.java      |  35 ++--
 .../DbEntityAttributeRelationshipTab.java       |   2 +-
 .../dbentity/DbEntityRelationshipPanel.java     |  25 ++-
 11 files changed, 210 insertions(+), 320 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/eb863c9a/RELEASE-NOTES.txt
----------------------------------------------------------------------
diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index f3233e5..ab0495d 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -16,6 +16,7 @@ Changes/New Features:
 CAY-2446 Run Disjoint By Id queries outside of synchronized block
 CAY-2447 Crypto support for LocalDateTime
 CAY-2471 Support multiple XML project versions
+CAY-2473 Modeler: cleanup attributes and relationship editors
 
 Bug Fixes:
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/eb863c9a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/ResolveDbRelationshipDialog.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/ResolveDbRelationshipDialog.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/ResolveDbRelationshipDialog.java
index 1927ed4..c3a8dac 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/ResolveDbRelationshipDialog.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/ResolveDbRelationshipDialog.java
@@ -24,7 +24,6 @@ import com.jgoodies.forms.layout.CellConstraints;
 import com.jgoodies.forms.layout.FormLayout;
 import org.apache.cayenne.CayenneRuntimeException;
 import org.apache.cayenne.dbsync.naming.NameBuilder;
-import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.map.DbJoin;
 import org.apache.cayenne.map.DbRelationship;
 import org.apache.cayenne.map.event.MapEvent;
@@ -39,11 +38,18 @@ import org.apache.cayenne.modeler.util.PanelFactory;
 import org.apache.cayenne.modeler.util.combo.AutoCompletion;
 import org.apache.cayenne.util.Util;
 
-import javax.swing.*;
+import javax.swing.JButton;
+import javax.swing.JComboBox;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTextField;
+import javax.swing.ListSelectionModel;
 import javax.swing.table.TableColumn;
-import java.awt.*;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -57,6 +63,8 @@ public class ResolveDbRelationshipDialog extends 
CayenneDialog {
     protected DbRelationship relationship;
     protected DbRelationship reverseRelationship;
 
+    protected JLabel sourceName;
+    protected JLabel targetName;
     protected JTextField name;
     protected JTextField reverseName;
     protected CayenneTable table;
@@ -70,23 +78,25 @@ public class ResolveDbRelationshipDialog extends 
CayenneDialog {
 
     private RelationshipUndoableEdit undo;
 
-    private boolean editable = true;
+    private boolean editable;
 
     public ResolveDbRelationshipDialog(DbRelationship relationship) {
         this(relationship, true);
     }
 
     public ResolveDbRelationshipDialog(DbRelationship relationship, boolean 
editable) {
-        super(Application.getFrame(), "", true);
+        super(Application.getFrame(), "DbRelationship Inspector", true);
         this.editable = editable;
 
-        initView();
-        initController();
-        if(!initWithModel(relationship)){
-            cancelPressed = true;
+        if(!validateAndSetRelationship(relationship)) {
+            this.cancelPressed = true;
             return;
         }
 
+        initView();
+        initController();
+        initWithModel();
+
         this.undo = new RelationshipUndoableEdit(relationship);
 
         this.pack();
@@ -108,6 +118,8 @@ public class ResolveDbRelationshipDialog extends 
CayenneDialog {
     private void initView() {
 
         // create widgets
+        sourceName = new JLabel();
+        targetName = new JLabel();
         name = new JTextField(25);
         reverseName = new JTextField(25);
 
@@ -134,42 +146,50 @@ public class ResolveDbRelationshipDialog extends 
CayenneDialog {
         PanelBuilder builder = new PanelBuilder(
                 new FormLayout(
                         "right:max(50dlu;pref), 3dlu, fill:min(150dlu;pref), 
3dlu, fill:min(50dlu;pref)",
-                        "p, 3dlu, p, 3dlu, p, 9dlu, p, 3dlu, top:14dlu, 3dlu, 
top:p:grow"));
+                        "p, 3dlu, p, 3dlu, p, 3dlu, p, 3dlu, p, 9dlu, p, 3dlu, 
top:14dlu, 3dlu, top:p:grow"));
         builder.setDefaultDialogBorder();
 
         builder.addSeparator("DbRelationship Information", cc.xywh(1, 1, 5, 
1));
-        builder.addLabel("Relationship:", cc.xy(1, 3));
-        builder.add(name, cc.xywh(3, 3, 1, 1));
-        builder.addLabel("Reverse Relationship", cc.xy(1, 5));
-        builder.add(reverseName, cc.xywh(3, 5, 1, 1));
 
-        builder.addSeparator("Joins", cc.xywh(1, 7, 5, 1));
-        builder.add(new JScrollPane(table), cc.xywh(1, 9, 3, 3, "fill, fill"));
+        builder.addLabel("Source Entity:", cc.xy(1, 3));
+        builder.add(sourceName, cc.xywh(3, 3, 1, 1));
+
+        builder.addLabel("Target Entity:", cc.xy(1, 5));
+        builder.add(targetName, cc.xywh(3, 5, 1, 1));
+
+        builder.addLabel("Relationship Name:", cc.xy(1, 7));
+        builder.add(name, cc.xywh(3, 7, 1, 1));
+
+        builder.addLabel("Reverse Relationship Name:", cc.xy(1, 9));
+        builder.add(reverseName, cc.xywh(3, 9, 1, 1));
 
-        JPanel buttons = new JPanel(new FlowLayout(FlowLayout.LEADING));
+        builder.addSeparator("Joins", cc.xywh(1, 11, 5, 1));
+        builder.add(new JScrollPane(table), cc.xywh(1, 13, 3, 3, "fill, 
fill"));
 
-        buttons.add(addButton);
-        buttons.add(removeButton);
+        JPanel joinButtons = new JPanel(new FlowLayout(FlowLayout.LEADING));
+        joinButtons.add(addButton);
+        joinButtons.add(removeButton);
 
-        builder.add(buttons, cc.xywh(5, 9, 1, 3));
+        builder.add(joinButtons, cc.xywh(5, 13, 1, 3));
 
         getContentPane().add(builder.getPanel(), BorderLayout.CENTER);
-        getContentPane().add(PanelFactory.createButtonPanel(new JButton[]{
-                saveButton, cancelButton
-        }), BorderLayout.SOUTH);
+        JButton[] buttons = {cancelButton, saveButton};
+        getContentPane().add(PanelFactory.createButtonPanel(buttons), 
BorderLayout.SOUTH);
     }
 
-    private boolean initWithModel(DbRelationship aRelationship) {
+    private boolean validateAndSetRelationship(DbRelationship relationship) {
+        this.relationship = relationship;
+        this.reverseRelationship = relationship.getReverseRelationship();
         // sanity check
-        if (aRelationship.getSourceEntity() == null) {
-            throw new CayenneRuntimeException("Null source entity: %s", 
aRelationship);
+        if (relationship.getSourceEntity() == null) {
+            throw new CayenneRuntimeException("Null source entity: %s", 
relationship);
         }
-
-        if (aRelationship.getSourceEntity().getDataMap() == null) {
-            throw new CayenneRuntimeException("Null DataMap: %s", 
aRelationship.getSourceEntity());
+        if (relationship.getSourceEntity().getDataMap() == null) {
+            throw new CayenneRuntimeException("Null DataMap: %s", 
relationship.getSourceEntity());
         }
 
-        if (aRelationship.getTargetEntity() == null) {
+        // warn if no target entity
+        if (relationship.getTargetEntity() == null) {
             JOptionPane.showMessageDialog(
                     this,
                     "Please select target DbEntity first",
@@ -178,93 +198,72 @@ public class ResolveDbRelationshipDialog extends 
CayenneDialog {
             return false;
         }
 
-        // Once assigned, can reference relationship directly. Would it be
-        // OK to assign relationship at the very top of this method?
-        relationship = aRelationship;
-        reverseRelationship = relationship.getReverseRelationship();
+        return true;
+    }
 
+    private void initWithModel() {
         // init UI components
-        setTitle("DbRelationship Info: "
-                + relationship.getSourceEntity().getName()
-                + " to "
-                + relationship.getTargetEntityName());
+        sourceName.setText(relationship.getSourceEntityName());
+        targetName.setText(relationship.getTargetEntityName());
+        name.setText(relationship.getName());
+        if (reverseRelationship != null) {
+            reverseName.setText(reverseRelationship.getName());
+        }
 
         table.setModel(new DbJoinTableModel(relationship, getMediator(), this, 
true));
-        TableColumn sourceColumn = table.getColumnModel().getColumn(
-                DbJoinTableModel.SOURCE);
+        TableColumn sourceColumn = 
table.getColumnModel().getColumn(DbJoinTableModel.SOURCE);
         JComboBox comboBox = Application.getWidgetFactory().createComboBox(
                 ModelerUtil.getDbAttributeNames(getMediator(), 
relationship.getSourceEntity()), true);
 
         AutoCompletion.enable(comboBox);
-        
sourceColumn.setCellEditor(Application.getWidgetFactory().createCellEditor(
-                comboBox));
+        
sourceColumn.setCellEditor(Application.getWidgetFactory().createCellEditor(comboBox));
 
-        TableColumn targetColumn = table.getColumnModel().getColumn(
-                DbJoinTableModel.TARGET);
+        TableColumn targetColumn = 
table.getColumnModel().getColumn(DbJoinTableModel.TARGET);
         comboBox = Application.getWidgetFactory().createComboBox(
                 ModelerUtil.getDbAttributeNames(getMediator(), 
relationship.getTargetEntity()), true);
         AutoCompletion.enable(comboBox);
 
-        
targetColumn.setCellEditor(Application.getWidgetFactory().createCellEditor(
-                comboBox));
+        
targetColumn.setCellEditor(Application.getWidgetFactory().createCellEditor(comboBox));
 
-        if (reverseRelationship != null) {
-            reverseName.setText(reverseRelationship.getName());
-        }
-
-        name.setText(relationship.getName());
         tablePreferences.bind(table, null, null, null, 
DbJoinTableModel.SOURCE, true);
-        return true;
     }
 
     private void initController() {
-        addButton.addActionListener(new ActionListener() {
-
-            public void actionPerformed(ActionEvent e) {
-                DbJoinTableModel model = (DbJoinTableModel) table.getModel();
+        addButton.addActionListener(e -> {
+            DbJoinTableModel model = (DbJoinTableModel) table.getModel();
 
-                DbJoin join = new DbJoin(relationship);
-                model.addRow(join);
+            DbJoin join = new DbJoin(relationship);
+            model.addRow(join);
 
-                undo.addDbJoinAddUndo(join);
+            undo.addDbJoinAddUndo(join);
 
-                table.select(model.getRowCount() - 1);
-            }
+            table.select(model.getRowCount() - 1);
         });
 
-        removeButton.addActionListener(new ActionListener() {
-
-            public void actionPerformed(ActionEvent e) {
-                DbJoinTableModel model = (DbJoinTableModel) table.getModel();
-                stopEditing();
-                int row = table.getSelectedRow();
+        removeButton.addActionListener(e -> {
+            DbJoinTableModel model = (DbJoinTableModel) table.getModel();
+            stopEditing();
+            int row = table.getSelectedRow();
 
-                DbJoin join = model.getJoin(row);
-                undo.addDbJoinRemoveUndo(join);
+            DbJoin join = model.getJoin(row);
+            undo.addDbJoinRemoveUndo(join);
 
-                model.removeRow(join);
-            }
+            model.removeRow(join);
         });
 
-        saveButton.addActionListener(new ActionListener() {
-
-            public void actionPerformed(ActionEvent e) {
-                cancelPressed = false;
-
-                if (editable) {
-                    save();
-                }
+        saveButton.addActionListener(e -> {
+            cancelPressed = false;
 
-                dispose();
+            if (editable) {
+                save();
             }
-        });
 
-        cancelButton.addActionListener(new ActionListener() {
+            dispose();
+        });
 
-            public void actionPerformed(ActionEvent e) {
-                cancelPressed = true;
-                setVisible(false);
-            }
+        cancelButton.addActionListener(e -> {
+            cancelPressed = true;
+            setVisible(false);
         });
     }
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/eb863c9a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/DbRelationshipTarget.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/DbRelationshipTarget.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/DbRelationshipTarget.java
index 20949aa..edf8169 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/DbRelationshipTarget.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/DbRelationshipTarget.java
@@ -19,38 +19,32 @@
 package org.apache.cayenne.modeler.dialog.objentity;
 
 import java.awt.Component;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
 
 import javax.swing.JOptionPane;
 import javax.swing.WindowConstants;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
 
 import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.modeler.ProjectController;
 import org.apache.cayenne.modeler.util.CayenneController;
 import org.apache.cayenne.modeler.util.Comparators;
 
-public class DbRelationshipTarget extends CayenneController{
-    
+public class DbRelationshipTarget extends CayenneController {
+
     private DbEntity source1;
     private DbEntity source2;
     protected DbEntity relTarget;
     protected List<DbEntity> relTargets;
-    
+
     protected DbEntity source;
     protected ProjectController mediator;
     protected boolean source1Selected;
     protected DbRelationshipTargetView view;
     protected boolean toMany;
     protected boolean savePressed;
-    
-    @SuppressWarnings("unchecked")
-    public DbRelationshipTarget(ProjectController mediator,DbEntity source1, 
DbEntity source2) {
+
+    public DbRelationshipTarget(ProjectController mediator, DbEntity source1, 
DbEntity source2) {
         super(mediator);
         view = new DbRelationshipTargetView(source1, source2);
         initController();
@@ -60,8 +54,8 @@ public class DbRelationshipTarget extends CayenneController{
         this.mediator = mediator;
         this.source1 = source1;
         this.source2 = source2;
-        this.relTargets = new 
ArrayList<DbEntity>(source1.getDataMap().getDbEntities());
-        Collections.sort(relTargets, Comparators.getNamedObjectComparator());
+        this.relTargets = new 
ArrayList<>(source1.getDataMap().getDbEntities());
+        relTargets.sort(Comparators.getNamedObjectComparator());
         view.targetCombo.removeAllItems();
         for (DbEntity d : relTargets) {
             view.targetCombo.addItem(d.getName());
@@ -69,39 +63,11 @@ public class DbRelationshipTarget extends CayenneController{
     }
         
     private void initController() {
-        view.getCancelButton().addActionListener(new ActionListener() {
-
-            public void actionPerformed(ActionEvent e) {
-                view.dispose();
-            }
-        });
-        view.getSaveButton().addActionListener(new ActionListener() {
-
-            public void actionPerformed(ActionEvent e) {
-                save();
-            }
-        });
-        view.getSource1Button().addActionListener(new ActionListener() {
-            public void actionPerformed(ActionEvent e) {
-                setSource(source1, true);
-            }
-        });     
-        view.getSource2Button().addActionListener(new ActionListener() {
-            public void actionPerformed(ActionEvent e) {
-                setSource(source2, false);
-            }
-        });   
-        view.getToManyCheckBox().addChangeListener(new ChangeListener() {
-            
-            public void stateChanged(ChangeEvent e) {
-                if (view.getToManyCheckBox().isSelected()) {
-                    toMany = true;
-                }
-                else {
-                    toMany = false;
-                }
-            }
-        });
+        view.getCancelButton().addActionListener(e -> view.dispose());
+        view.getSaveButton().addActionListener(e -> save());
+        view.getSource1Button().addActionListener(e -> setSource(source1, 
true));
+        view.getSource2Button().addActionListener(e -> setSource(source2, 
false));
+        view.getToManyCheckBox().addChangeListener(e -> toMany = 
view.getToManyCheckBox().isSelected());
     }
     
     @Override
@@ -110,12 +76,11 @@ public class DbRelationshipTarget extends 
CayenneController{
     }
     
     protected void save() {
-             
-        this.relTarget = relTargets.get(view.targetCombo.getSelectedIndex());  
 
+        this.relTarget = relTargets.get(view.targetCombo.getSelectedIndex());
         DbEntity target = getTarget();
-             
+
         if (target == null) {
-            JOptionPane.showMessageDialog((Component) getView(), "Please 
select target entity first.",
+            JOptionPane.showMessageDialog(getView(), "Please select target 
entity first.",
                     "Warning", JOptionPane.WARNING_MESSAGE);
             return;
         }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/eb863c9a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/DbRelationshipTargetView.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/DbRelationshipTargetView.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/DbRelationshipTargetView.java
index 7b4bf3f..7f9c302 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/DbRelationshipTargetView.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/DbRelationshipTargetView.java
@@ -41,10 +41,10 @@ public class DbRelationshipTargetView extends JDialog {
     protected WidgetFactory widgetFactory;
     protected JCheckBox toManyCheckBox ;
     protected JButton saveButton;
-    protected JButton cancelButton ;
+    protected JButton cancelButton;
     protected JRadioButton source1Button;
     protected JRadioButton source2Button;
-    protected JComboBox targetCombo;
+    protected JComboBox<String> targetCombo;
     
     public DbRelationshipTargetView(DbEntity source1, DbEntity source2) {
         
@@ -93,9 +93,8 @@ public class DbRelationshipTargetView extends JDialog {
         builder.add(toManyCheckBox, cc.xywh(3, 7, 1, 1));
         
         add(builder.getPanel(), BorderLayout.CENTER);
-        add(PanelFactory.createButtonPanel(new JButton[] {
-                saveButton, cancelButton
-            }), BorderLayout.SOUTH);
+        JButton[] buttons = {cancelButton, saveButton};
+        add(PanelFactory.createButtonPanel(buttons), BorderLayout.SOUTH);
     }
     
     public JRadioButton getSource1Button() {

http://git-wip-us.apache.org/repos/asf/cayenne/blob/eb863c9a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjAttributeInfoDialogView.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjAttributeInfoDialogView.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjAttributeInfoDialogView.java
index 4170bfd..8a11d70 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjAttributeInfoDialogView.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjAttributeInfoDialogView.java
@@ -42,8 +42,6 @@ import java.awt.BorderLayout;
 import java.awt.CardLayout;
 import java.awt.Dimension;
 import java.awt.FlowLayout;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
 import java.awt.event.ComponentEvent;
 import java.awt.event.ComponentListener;
 
@@ -62,7 +60,7 @@ public class ObjAttributeInfoDialogView extends JDialog {
     protected JLabel currentPathLabel;
     protected JLabel sourceEntityLabel;
 
-    protected JComboBox typeComboBox;
+    protected JComboBox<String> typeComboBox;
     protected JPanel typeManagerPane;
 
     protected CayenneTable overrideAttributeTable;
@@ -88,8 +86,7 @@ public class ObjAttributeInfoDialogView extends JDialog {
         this.currentPathLabel = new JLabel();
         this.sourceEntityLabel = new JLabel();
 
-        this.typeComboBox = 
Application.getWidgetFactory().createComboBox(ModelerUtil
-                .getRegisteredTypeNames(), false);
+        this.typeComboBox = 
Application.getWidgetFactory().createComboBox(ModelerUtil.getRegisteredTypeNames(),
 false);
         AutoCompletion.enable(typeComboBox, false, true);
         typeComboBox.getRenderer();
 
@@ -111,19 +108,19 @@ public class ObjAttributeInfoDialogView extends JDialog {
         builder.setDefaultDialogBorder();
         builder.addSeparator("ObjAttribute Information", cc.xywh(1, 1, 7, 1));
 
-        builder.addLabel("Attribute:", cc.xy(1, 3));
-        builder.add(attributeName, cc.xywh(3, 3, 1, 1));
+        builder.addLabel("Entity:", cc.xy(1, 3));
+        builder.add(sourceEntityLabel, cc.xywh(3, 3, 1, 1));
 
-        builder.addLabel("Current Db Path:", cc.xy(1, 5));
-        builder.add(currentPathLabel, cc.xywh(3, 5, 5, 1));
+        builder.addLabel("Attribute Name:", cc.xy(1, 5));
+        builder.add(attributeName, cc.xywh(3, 5, 1, 1));
 
-        builder.addLabel("Source:", cc.xy(1, 7));
-        builder.add(sourceEntityLabel, cc.xywh(3, 7, 1, 1));
+        builder.addLabel("Current Db Path:", cc.xy(1, 7));
+        builder.add(currentPathLabel, cc.xywh(3, 7, 5, 1));
 
         builder.addLabel("Type:", cc.xy(1, 9));
         builder.add(typeComboBox, cc.xywh(3, 9, 1, 1));
 
-        builder.addSeparator("Mapping to Attributes", cc.xywh(1, 11, 7, 1));
+        builder.addSeparator("Mapping to DbAttributes", cc.xywh(1, 11, 7, 1));
 
         typeManagerPane = new JPanel();
         typeManagerPane.setLayout(new CardLayout());
@@ -189,29 +186,24 @@ public class ObjAttributeInfoDialogView extends JDialog {
             }
         });
 
-        add(PanelFactory.createButtonPanel(new JButton[] {
-                saveButton, cancelButton
-        }), BorderLayout.SOUTH);
+        JButton[] buttons = {cancelButton, saveButton};
+        add(PanelFactory.createButtonPanel(buttons), BorderLayout.SOUTH);
 
-        typeComboBox.addActionListener(new ActionListener() {
-
-            public void actionPerformed(ActionEvent e) {
-                boolean isType = false;
-                String[] typeNames = ModelerUtil.getRegisteredTypeNames();
-                for (String typeName : typeNames) {
-                    if (typeComboBox.getSelectedItem() == null || 
typeName.equals(typeComboBox.getSelectedItem().toString())) {
-                        isType = true;
-                    }
-                }
-
-                if (isType || 
!mediator.getEmbeddableNamesInCurrentDataDomain().contains(typeComboBox.getSelectedItem()))
 {
-                    ((CardLayout) 
typeManagerPane.getLayout()).show(typeManagerPane, FLATTENED_PANEL);
-                } else {
-                    ((CardLayout) 
typeManagerPane.getLayout()).show(typeManagerPane, EMBEDDABLE_PANEL);
-                    getCurrentPathLabel().setText("");
+        typeComboBox.addActionListener(e -> {
+            boolean isType = false;
+            String[] typeNames = ModelerUtil.getRegisteredTypeNames();
+            for (String typeName : typeNames) {
+                if (typeComboBox.getSelectedItem() == null || 
typeName.equals(typeComboBox.getSelectedItem().toString())) {
+                    isType = true;
                 }
             }
 
+            if (isType || 
!mediator.getEmbeddableNamesInCurrentDataDomain().contains((String)typeComboBox.getSelectedItem()))
 {
+                ((CardLayout) 
typeManagerPane.getLayout()).show(typeManagerPane, FLATTENED_PANEL);
+            } else {
+                ((CardLayout) 
typeManagerPane.getLayout()).show(typeManagerPane, EMBEDDABLE_PANEL);
+                getCurrentPathLabel().setText("");
+            }
         });
     }
 
@@ -223,7 +215,7 @@ public class ObjAttributeInfoDialogView extends JDialog {
         return tablePreferences;
     }
 
-    public JComboBox getTypeComboBox() {
+    public JComboBox<String> getTypeComboBox() {
         return typeComboBox;
     }
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/eb863c9a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjRelationshipInfo.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjRelationshipInfo.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjRelationshipInfo.java
index b312f87..d381f82 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjRelationshipInfo.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjRelationshipInfo.java
@@ -47,16 +47,11 @@ import javax.swing.event.TreeSelectionEvent;
 import javax.swing.event.TreeSelectionListener;
 import javax.swing.tree.TreePath;
 import java.awt.Component;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
 import java.awt.event.ItemEvent;
-import java.awt.event.ItemListener;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.List;
 import java.util.Objects;
-import java.util.Vector;
 
 public class ObjRelationshipInfo extends CayenneController implements 
TreeSelectionListener {
 
@@ -106,7 +101,7 @@ public class ObjRelationshipInfo extends CayenneController 
implements TreeSelect
             targetCollection = ObjRelationship.DEFAULT_COLLECTION_TYPE;
         }
 
-        this.objectTarget = (ObjEntity) relationship.getTargetEntity();
+        this.objectTarget = relationship.getTargetEntity();
         if (objectTarget != null) {
             updateTargetCombo(objectTarget.getDbEntity());
             view.targetCombo.setSelectedItem(objectTarget.getName());
@@ -117,7 +112,7 @@ public class ObjRelationshipInfo extends CayenneController 
implements TreeSelect
         // and target entities present, with DbEntities chosen.
         validateCanMap();
 
-        this.targetCollections = new ArrayList<String>(4);
+        this.targetCollections = new ArrayList<>(4);
         targetCollections.add(COLLECTION_TYPE_COLLECTION);
         targetCollections.add(ObjRelationship.DEFAULT_COLLECTION_TYPE);
         targetCollections.add(COLLECTION_TYPE_MAP);
@@ -127,11 +122,11 @@ public class ObjRelationshipInfo extends 
CayenneController implements TreeSelect
             view.collectionTypeCombo.addItem(s);
         }
 
-        this.mapKeys = new ArrayList<String>();
+        this.mapKeys = new ArrayList<>();
         initMapKeys();
 
         // setup path
-        dbRelationships = new 
ArrayList<DbRelationship>(relationship.getDbRelationships());
+        dbRelationships = new ArrayList<>(relationship.getDbRelationships());
         selectPath();
         updateCollectionChoosers();
 
@@ -142,52 +137,19 @@ public class ObjRelationshipInfo extends 
CayenneController implements TreeSelect
     }
 
     private void initController() {
-        view.getCancelButton().addActionListener(new ActionListener() {
-
-            public void actionPerformed(ActionEvent e) {
-                view.dispose();
-            }
-        });
-        view.getSaveButton().addActionListener(new ActionListener() {
-
-            public void actionPerformed(ActionEvent e) {
-                saveMapping();
-            }
-        });
-        view.getNewRelButton().addActionListener(new ActionListener() {
-
-            public void actionPerformed(ActionEvent e) {
-                createRelationship();
-            }
-        });
-        view.getSelectPathButton().addActionListener(new ActionListener() {
-
-            public void actionPerformed(ActionEvent e) {
-                selectPath();
-            }
-        });
-        view.getCollectionTypeCombo().addActionListener(new ActionListener() {
-
-            public void actionPerformed(ActionEvent e) {
-                setCollectionType();
-            }
-        });
-        view.getMapKeysCombo().addActionListener(new ActionListener() {
-
-            public void actionPerformed(ActionEvent e) {
-                setMapKey();
-            }
-        });
-        view.getTargetCombo().addItemListener(new ItemListener() {
-            @Override
-            public void itemStateChanged(ItemEvent e) {
-                if (e.getStateChange() == ItemEvent.SELECTED) {
-                    Object targetName = e.getItem();
-                    for (ObjEntity target : objectTargets) {
-                        if (Objects.equals(target.getName(), targetName)) {
-                            setObjectTarget(target);
-                            return;
-                        }
+        view.getCancelButton().addActionListener(e -> view.dispose());
+        view.getSaveButton().addActionListener(e -> saveMapping());
+        view.getNewRelButton().addActionListener(e -> createRelationship());
+        view.getSelectPathButton().addActionListener(e -> selectPath());
+        view.getCollectionTypeCombo().addActionListener(e -> 
setCollectionType());
+        view.getMapKeysCombo().addActionListener(e -> setMapKey());
+        view.getTargetCombo().addItemListener(e -> {
+            if (e.getStateChange() == ItemEvent.SELECTED) {
+                Object targetName = e.getItem();
+                for (ObjEntity target : objectTargets) {
+                    if (Objects.equals(target.getName(), targetName)) {
+                        setObjectTarget(target);
+                        return;
                     }
                 }
             }
@@ -257,7 +219,7 @@ public class ObjRelationshipInfo extends CayenneController 
implements TreeSelect
     }
 
     public void selectPath() {
-        setSavedDbRelationships(new 
ArrayList<DbRelationship>(dbRelationships));
+        setSavedDbRelationships(new ArrayList<>(dbRelationships));
     }
 
     /**
@@ -293,12 +255,12 @@ public class ObjRelationshipInfo extends 
CayenneController implements TreeSelect
      */
     protected void clearPath() {
         getPathBrowser().clearSelection();
-        setDbRelationships(new ArrayList<DbRelationship>());
+        setDbRelationships(new ArrayList<>());
     }
 
     protected void saveMapping() {
         if (!getDbRelationships().equals(getSavedDbRelationships())) {
-            if (JOptionPane.showConfirmDialog((Component) getView(),
+            if (JOptionPane.showConfirmDialog(getView(),
                     "You have changed Db Relationship path. Do you want it to 
be saved?", "Save ObjRelationship",
                     JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
                 selectPath();
@@ -358,12 +320,11 @@ public class ObjRelationshipInfo extends 
CayenneController implements TreeSelect
             
targetModel.getSource().removeRelationship(dbRelationship.getName());
         } else {
             MultiColumnBrowser pathBrowser = getPathBrowser();
-            Object[] oldPath = targetModel.isSource1Selected() ? new Object[] 
{ getStartEntity() } : pathBrowser
-                    .getSelectionPath().getPath();
+            Object[] oldPath = targetModel.isSource1Selected()
+                    ? new Object[] { getStartEntity() }
+                    : pathBrowser.getSelectionPath().getPath();
 
-            /**
-             * Update the view
-             */
+            // Update the view
             EntityTreeModel treeModel = (EntityTreeModel) 
pathBrowser.getModel();
             treeModel.invalidate();
 
@@ -383,10 +344,8 @@ public class ObjRelationshipInfo extends CayenneController 
implements TreeSelect
     public ObjectNameGenerator createNamingStrategy(String strategyClass) {
         try {
             ClassLoadingService classLoader = 
application.getClassLoadingService();
-
             return classLoader.loadClass(ObjectNameGenerator.class, 
strategyClass).newInstance();
-        }
-        catch (Throwable th) {
+        } catch (Throwable th) {
             JOptionPane.showMessageDialog(
                     view,
                     "Naming Strategy Initialization Error: " + th.getMessage(),
@@ -408,14 +367,7 @@ public class ObjRelationshipInfo extends CayenneController 
implements TreeSelect
             return;
         }
 
-        Relationship rel = (Relationship) selectedPath.getLastPathComponent();
-        DbEntity target = (DbEntity) rel.getTargetEntity();
-        /**
-         * Initialize root with one of mapped ObjEntities.
-         */
-        Collection<ObjEntity> objEntities = 
target.getDataMap().getMappedEntities(target);
-
-        List<DbRelationship> relPath = new 
Vector<DbRelationship>(selectedPath.getPathCount() - 1);
+        List<DbRelationship> relPath = new 
ArrayList<>(selectedPath.getPathCount() - 1);
         for (int i = 1; i < selectedPath.getPathCount(); i++) {
             relPath.add((DbRelationship) selectedPath.getPathComponent(i));
         }
@@ -438,10 +390,7 @@ public class ObjRelationshipInfo extends CayenneController 
implements TreeSelect
 
         mapKeys.add(DEFAULT_MAP_KEY);
 
-        /**
-         * Object target can be null when selected target DbEntity has no
-         * ObjEntities
-         */
+        // Object target can be null when selected target DbEntity has no 
ObjEntities
         if (objectTarget == null) {
             return;
         }
@@ -466,11 +415,11 @@ public class ObjRelationshipInfo extends 
CayenneController implements TreeSelect
     protected void updateTargetCombo(DbEntity dbTarget) {
         // copy those that have DbEntities mapped to dbTarget, and then sort
 
-        this.objectTargets = new ArrayList<ObjEntity>();
+        this.objectTargets = new ArrayList<>();
 
         if (dbTarget != null) {
             
objectTargets.addAll(dbTarget.getDataMap().getMappedEntities(dbTarget));
-            Collections.sort(objectTargets, 
Comparators.getNamedObjectComparator());
+            objectTargets.sort(Comparators.getNamedObjectComparator());
         }
         view.targetCombo.removeAllItems();
         for (ObjEntity s : objectTargets) {
@@ -510,8 +459,7 @@ public class ObjRelationshipInfo extends CayenneController 
implements TreeSelect
     public void setDbRelationships(List<DbRelationship> rels) {
         this.dbRelationships = rels;
 
-        updateTargetCombo(rels.size() > 0 ? (DbEntity) rels.get(rels.size() - 
1).getTargetEntity() : null);
-
+        updateTargetCombo(rels.size() > 0 ? rels.get(rels.size() - 
1).getTargetEntity() : null);
         updateCollectionChoosers();
     }
 
@@ -577,11 +525,10 @@ public class ObjRelationshipInfo extends 
CayenneController implements TreeSelect
         }
 
         if (savedDbRelationships.size() > 0) {
-            DbEntity lastEntity = (DbEntity) 
savedDbRelationships.get(savedDbRelationships.size() - 1)
-                    .getTargetEntity();
+            DbEntity lastEntity = 
savedDbRelationships.get(savedDbRelationships.size() - 1).getTargetEntity();
 
             if (objectTarget == null || objectTarget.getDbEntity() != 
lastEntity) {
-                /**
+                /*
                  * Entities in combobox and path browser do not match. In this
                  * case, we rely on the browser and automatically select one of
                  * lastEntity's ObjEntities
@@ -632,7 +579,7 @@ public class ObjRelationshipInfo extends CayenneController 
implements TreeSelect
             relationship.setMapKey(mapKey);
         }
 
-        /**
+        /*
          * As of CAY-436 here we check if to-many property has changed during
          * the editing, and if so, delete rule must be reset to default value
          */
@@ -657,7 +604,6 @@ public class ObjRelationshipInfo extends CayenneController 
implements TreeSelect
 
     private void breakChain(int index) {
         // strip everything starting from the index
-
         while (dbRelationships.size() > (index + 1)) {
             // remove last
             dbRelationships.remove(dbRelationships.size() - 1);
@@ -678,12 +624,9 @@ public class ObjRelationshipInfo extends CayenneController 
implements TreeSelect
 
         if (target != null && (last == null || last.getTargetEntity() != 
target)) {
             // try to connect automatically, if we can't use dummy connector
-
             Entity source = (last == null) ? getStartEntity() : 
last.getTargetEntity();
             if (source != null) {
-
-                Relationship anyConnector = source != null ? 
source.getAnyRelationship(target) : null;
-
+                Relationship anyConnector = source.getAnyRelationship(target);
                 if (anyConnector != null) {
                     dbRelationships.add((DbRelationship) anyConnector);
                 }
@@ -708,11 +651,11 @@ public class ObjRelationshipInfo extends 
CayenneController implements TreeSelect
     }
 
     public DbEntity getStartEntity() {
-        return ((ObjEntity) relationship.getSourceEntity()).getDbEntity();
+        return relationship.getSourceEntity().getDbEntity();
     }
 
     public DbEntity getEndEntity() {
-        /**
+        /*
          * Object target can be null when selected target DbEntity has no
          * ObjEntities
          */

http://git-wip-us.apache.org/repos/asf/cayenne/blob/eb863c9a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjRelationshipInfoView.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjRelationshipInfoView.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjRelationshipInfoView.java
index cf90b41..54fefce 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjRelationshipInfoView.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjRelationshipInfoView.java
@@ -48,9 +48,9 @@ public class ObjRelationshipInfoView extends JDialog{
     protected WidgetFactory widgetFactory;
 
     protected Component collectionTypeLabel;
-    protected JComboBox collectionTypeCombo;
+    protected JComboBox<String> collectionTypeCombo;
     protected Component mapKeysLabel;
-    protected JComboBox mapKeysCombo;
+    protected JComboBox<String> mapKeysCombo;
 
     protected JButton saveButton;
     protected JButton cancelButton;
@@ -60,7 +60,7 @@ public class ObjRelationshipInfoView extends JDialog{
     protected JTextField relationshipName;
     protected JLabel currentPathLabel;
     protected JLabel sourceEntityLabel;
-    protected JComboBox targetCombo;
+    protected JComboBox<String> targetCombo;
     
     ProjectController mediator;
     
@@ -104,18 +104,22 @@ public class ObjRelationshipInfoView extends JDialog{
         builder.setDefaultDialogBorder();
 
         builder.addSeparator("ObjRelationship Information", cc.xywh(1, 1, 5, 
1));
-        builder.addLabel("Relationship:", cc.xy(1, 3));
-        builder.add(relationshipName, cc.xywh(3, 3, 1, 1));
 
-        builder.addLabel("Current Db Path:", cc.xy(1, 5));
-        builder.add(currentPathLabel, cc.xywh(3, 5, 5, 1));
+        builder.addLabel("Source Entity:", cc.xy(1, 3));
+        builder.add(sourceEntityLabel, cc.xywh(3, 3, 1, 1));
+
+        builder.addLabel("Target Entity:", cc.xy(1, 5));
+        builder.add(targetCombo, cc.xywh(3, 5, 1, 1));
+
+        builder.addLabel("Relationship Name:", cc.xy(1, 7));
+        builder.add(relationshipName, cc.xywh(3, 7, 1, 1));
+
+        builder.addLabel("Current Db Path:", cc.xy(1, 9));
+        builder.add(currentPathLabel, cc.xywh(3, 9, 5, 1));
 
-        builder.addLabel("Source:", cc.xy(1, 7));
-        builder.add(sourceEntityLabel, cc.xywh(3, 7, 1, 1));
-        builder.addLabel("Target:", cc.xy(1, 9));
-        builder.add(targetCombo, cc.xywh(3, 9, 1, 1));
         collectionTypeLabel = builder.addLabel("Collection Type:", cc.xy(1, 
11));
         builder.add(collectionTypeCombo, cc.xywh(3, 11, 1, 1));
+
         mapKeysLabel = builder.addLabel("Map Key:", cc.xy(1, 13));
         builder.add(mapKeysCombo, cc.xywh(3, 13, 1, 1));
 
@@ -132,9 +136,8 @@ public class ObjRelationshipInfoView extends JDialog{
                 JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED), cc.xywh(1, 19, 5, 
3));
 
         add(builder.getPanel(), BorderLayout.CENTER);
-        add(PanelFactory.createButtonPanel(new JButton[] {
-                saveButton, cancelButton
-            }), BorderLayout.SOUTH);        
+        JButton[] buttons = {cancelButton, saveButton};
+        add(PanelFactory.createButtonPanel(buttons), BorderLayout.SOUTH);
     }
 
     public JButton getSaveButton()

http://git-wip-us.apache.org/repos/asf/cayenne/blob/eb863c9a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityAttributePanel.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityAttributePanel.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityAttributePanel.java
index 527acc2..13aab58 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityAttributePanel.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityAttributePanel.java
@@ -153,7 +153,7 @@ public class ObjEntityAttributePanel extends JPanel 
implements ObjEntityDisplayL
 
         // Create and install a popup
         Icon ico = ModelerUtil.buildIcon("icon-edit.png");
-        resolveMenu = new CayenneAction.CayenneMenuItem("Database Mapping", 
ico);
+        resolveMenu = new CayenneAction.CayenneMenuItem("Edit Attribute", ico);
 
         JPopupMenu popup = new JPopupMenu();
         popup.add(resolveMenu);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/eb863c9a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityRelationshipPanel.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityRelationshipPanel.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityRelationshipPanel.java
index aa3ff2f..4b53d8e 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityRelationshipPanel.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityRelationshipPanel.java
@@ -46,7 +46,6 @@ import 
org.apache.cayenne.modeler.util.DbRelationshipPathComboBoxEditor;
 import org.apache.cayenne.modeler.util.ModelerUtil;
 import org.apache.cayenne.modeler.util.PanelFactory;
 import org.apache.cayenne.modeler.util.UIUtil;
-import org.apache.cayenne.swing.components.image.FilteredIconFactory;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -69,7 +68,6 @@ import javax.swing.table.TableColumn;
 import java.awt.BorderLayout;
 import java.awt.Color;
 import java.awt.Component;
-import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.util.List;
 
@@ -151,29 +149,22 @@ public class ObjEntityRelationshipPanel extends JPanel 
implements ObjEntityDispl
         mediator.addObjEntityListener(this);
         mediator.addObjRelationshipListener(this);
 
-        resolver = new ActionListener() {
-
-            public void actionPerformed(ActionEvent e) {
-                int row = table.getSelectedRow();
-                if (row < 0) {
-                    return;
-                }
+        resolver = e -> {
+            int row = table.getSelectedRow();
+            if (row < 0) {
+                return;
+            }
 
-                ObjRelationshipTableModel model = (ObjRelationshipTableModel) 
table
-                        .getModel();
-                new ObjRelationshipInfo(mediator, 
model.getRelationship(row)).startupAction();
+            ObjRelationshipTableModel model = (ObjRelationshipTableModel) 
table.getModel();
+            new ObjRelationshipInfo(mediator, 
model.getRelationship(row)).startupAction();
 
-                /**
-                 * This is required for a table to be updated properly
-                 */
-                table.cancelEditing();
+            // This is required for a table to be updated properly
+            table.cancelEditing();
 
-                // need to refresh selected row... do this by 
unselecting/selecting the
-                // row
-                table.getSelectionModel().clearSelection();
-                table.select(row);
-                enabledResolve = false;
-            }
+            // need to refresh selected row... do this by 
unselecting/selecting the row
+            table.getSelectionModel().clearSelection();
+            table.select(row);
+            enabledResolve = false;
         };
         resolveMenu.addActionListener(resolver);
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/eb863c9a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbEntityAttributeRelationshipTab.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbEntityAttributeRelationshipTab.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbEntityAttributeRelationshipTab.java
index 792e19f..74eac88 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbEntityAttributeRelationshipTab.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbEntityAttributeRelationshipTab.java
@@ -113,7 +113,7 @@ public class DbEntityAttributeRelationshipTab extends 
JPanel implements DbEntity
         toolBar.addSeparator();
 
         Icon ico = ModelerUtil.buildIcon("icon-edit.png");
-        resolve.setToolTipText("Database Mapping");
+        resolve.setToolTipText("Edit Relationship");
         resolve.setIcon(ico);
         resolve.setDisabledIcon(FilteredIconFactory.createDisabledIcon(ico));
         toolBar.add(resolve).setEnabled(false);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/eb863c9a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbEntityRelationshipPanel.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbEntityRelationshipPanel.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbEntityRelationshipPanel.java
index a68bd93..2307ef9 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbEntityRelationshipPanel.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbEntityRelationshipPanel.java
@@ -138,21 +138,18 @@ public class DbEntityRelationshipPanel extends JPanel 
implements DbEntityDisplay
         this.mediator.addDbEntityListener(this);
         this.mediator.addDbRelationshipListener(this);
 
-        resolver = new ActionListener() {
-
-            public void actionPerformed(ActionEvent e) {
-                int row = table.getSelectedRow();
-                if (row < 0) {
-                    return;
-                }
-
-                // Get DbRelationship
-                DbRelationshipTableModel model = (DbRelationshipTableModel) 
table.getModel();
-                DbRelationship rel = model.getRelationship(row);
-                ResolveDbRelationshipDialog dialog = new 
ResolveDbRelationshipDialog(rel);
-                dialog.setVisible(true);
-                dialog.dispose();
+        resolver = e -> {
+            int row = table.getSelectedRow();
+            if (row < 0) {
+                return;
             }
+
+            // Get DbRelationship
+            DbRelationshipTableModel model = (DbRelationshipTableModel) 
table.getModel();
+            DbRelationship rel = model.getRelationship(row);
+            ResolveDbRelationshipDialog dialog = new 
ResolveDbRelationshipDialog(rel);
+            dialog.setVisible(true);
+            dialog.dispose();
         };
         resolveMenu.addActionListener(resolver);
 

Reply via email to