You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by nt...@apache.org on 2018/10/01 15:03:56 UTC

[1/6] cayenne git commit: CAY-2475 Modeler: move inheritance icon to name column in objAttr table and objRel table

Repository: cayenne
Updated Branches:
  refs/heads/STABLE-4.0 15471c0a6 -> 20f9d3899


CAY-2475 Modeler: move inheritance icon to name column in objAttr table and objRel table


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

Branch: refs/heads/STABLE-4.0
Commit: 3285651e0c09f3ca60be8c771fc922c970150055
Parents: d3fa7b7
Author: Arseni Bulatski <an...@gmail.com>
Authored: Mon Sep 17 15:34:31 2018 +0300
Committer: Arseni Bulatski <an...@gmail.com>
Committed: Tue Sep 25 12:11:51 2018 +0300

----------------------------------------------------------------------
 RELEASE-NOTES.txt                               |   5 +
 .../modeler/editor/ObjAttributeTableModel.java  |  32 ++---
 .../modeler/editor/ObjEntityAttributePanel.java | 117 +++++++------------
 .../editor/ObjEntityRelationshipPanel.java      |  44 ++++++-
 4 files changed, 103 insertions(+), 95 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/3285651e/RELEASE-NOTES.txt
----------------------------------------------------------------------
diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index 3766f3b..e2e491c 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -12,6 +12,11 @@ Release: 4.0.1
 Date:
 ----------------------------------
 
+=======
+Changes/New Features:
+
+CAY-2475 Modeler: move inheritance icon to name column in objAttr table and objRel table
+
 Bug Fixes:
 
 CAY-2320 Modeler: Limit input into numeric fields to 10 digits

http://git-wip-us.apache.org/repos/asf/cayenne/blob/3285651e/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjAttributeTableModel.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjAttributeTableModel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjAttributeTableModel.java
index 41739ac..8918ea0 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjAttributeTableModel.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjAttributeTableModel.java
@@ -58,13 +58,12 @@ import java.util.List;
 public class ObjAttributeTableModel extends CayenneTableModel<ObjAttributeWrapper> {
 
     // Columns
-    public static final int INHERITED = 0;
-    public static final int OBJ_ATTRIBUTE = 1;
-    public static final int OBJ_ATTRIBUTE_TYPE = 2;
-    public static final int DB_ATTRIBUTE = 3;
-    public static final int DB_ATTRIBUTE_TYPE = 4;
-    public static final int LOCKING = 5;
-    public static final int COLUMN_COUNT = 6;
+    public static final int OBJ_ATTRIBUTE = 0;
+    public static final int OBJ_ATTRIBUTE_TYPE = 1;
+    public static final int DB_ATTRIBUTE = 2;
+    public static final int DB_ATTRIBUTE_TYPE = 3;
+    public static final int LOCKING = 4;
+    public static final int COLUMN_COUNT = 5;
 
     private ObjEntity entity;
     private DbEntity dbEntity;
@@ -151,8 +150,6 @@ public class ObjAttributeTableModel extends CayenneTableModel<ObjAttributeWrappe
 
     public String getColumnName(int column) {
         switch (column) {
-            case INHERITED:
-                return "In";
             case OBJ_ATTRIBUTE:
                 return "Name";
             case OBJ_ATTRIBUTE_TYPE:
@@ -170,10 +167,8 @@ public class ObjAttributeTableModel extends CayenneTableModel<ObjAttributeWrappe
 
     public Object getValueAt(int row, int column) {
         ObjAttributeWrapper attribute = getAttribute(row);
-        if (column == INHERITED) {
-            return attribute.isInherited();
-        }
-        else if (column == OBJ_ATTRIBUTE) {
+
+        if (column == OBJ_ATTRIBUTE) {
             return attribute.getName();
         }
         else if (column == OBJ_ATTRIBUTE_TYPE) {
@@ -186,11 +181,9 @@ public class ObjAttributeTableModel extends CayenneTableModel<ObjAttributeWrappe
             DbAttribute dbAttribute = attribute.getDbAttribute();
             if (column == DB_ATTRIBUTE) {
                 return getDBAttribute(attribute, dbAttribute);
-            }
-            else if (column == DB_ATTRIBUTE_TYPE) {
+            } else if(column == DB_ATTRIBUTE_TYPE) {
                 return getDBAttributeType(attribute, dbAttribute);
-            }
-            else {
+            } else {
                 return null;
             }
         }
@@ -390,7 +383,7 @@ public class ObjAttributeTableModel extends CayenneTableModel<ObjAttributeWrappe
             return col == DB_ATTRIBUTE;
         }
 
-        return col != DB_ATTRIBUTE_TYPE && col != INHERITED;
+        return col != DB_ATTRIBUTE_TYPE;
     }
 
     public ObjEntity getEntity() {
@@ -417,9 +410,6 @@ public class ObjAttributeTableModel extends CayenneTableModel<ObjAttributeWrappe
     @Override
     public void sortByColumn(final int sortCol, boolean isAscent) {
         switch (sortCol) {
-            case INHERITED:
-                sortByElementProperty("inherited", isAscent);
-                break;
             case OBJ_ATTRIBUTE:
                 sortByElementProperty("name", isAscent);
                 break;

http://git-wip-us.apache.org/repos/asf/cayenne/blob/3285651e/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 7cae33e..4df7ba3 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
@@ -29,63 +29,29 @@ import org.apache.cayenne.map.event.ObjAttributeListener;
 import org.apache.cayenne.map.event.ObjEntityListener;
 import org.apache.cayenne.modeler.Application;
 import org.apache.cayenne.modeler.ProjectController;
-import org.apache.cayenne.modeler.action.ActionManager;
-import org.apache.cayenne.modeler.action.CopyAttributeRelationshipAction;
-import org.apache.cayenne.modeler.action.CutAttributeRelationshipAction;
-import org.apache.cayenne.modeler.action.ObjEntityToSuperEntityAction;
-import org.apache.cayenne.modeler.action.PasteAction;
-import org.apache.cayenne.modeler.action.RemoveAttributeRelationshipAction;
+import org.apache.cayenne.modeler.action.*;
 import org.apache.cayenne.modeler.dialog.objentity.ObjAttributeInfoDialog;
 import org.apache.cayenne.modeler.editor.wrapper.ObjAttributeWrapper;
-import org.apache.cayenne.modeler.event.EntityDisplayEvent;
-import org.apache.cayenne.modeler.event.ObjEntityDisplayListener;
-import org.apache.cayenne.modeler.event.ProjectOnSaveEvent;
-import org.apache.cayenne.modeler.event.ProjectOnSaveListener;
-import org.apache.cayenne.modeler.event.TablePopupHandler;
+import org.apache.cayenne.modeler.event.*;
 import org.apache.cayenne.modeler.pref.TableColumnPreferences;
-import org.apache.cayenne.modeler.util.CayenneAction;
-import org.apache.cayenne.modeler.util.CayenneTable;
-import org.apache.cayenne.modeler.util.CayenneTableModel;
-import org.apache.cayenne.modeler.util.DbAttributePathComboBoxRenderer;
-import org.apache.cayenne.modeler.util.DbAttributePathComboBoxEditor;
-import org.apache.cayenne.modeler.util.ModelerUtil;
-import org.apache.cayenne.modeler.util.PanelFactory;
-import org.apache.cayenne.modeler.util.ProjectUtil;
-import org.apache.cayenne.modeler.util.UIUtil;
+import org.apache.cayenne.modeler.util.*;
 import org.apache.cayenne.modeler.util.combo.AutoCompletion;
-import org.apache.cayenne.swing.components.image.FilteredIconFactory;
-
-import javax.swing.BorderFactory;
-import javax.swing.Icon;
-import javax.swing.ImageIcon;
-import javax.swing.JComboBox;
-import javax.swing.JDialog;
-import javax.swing.JOptionPane;
-import javax.swing.JMenuItem;
-import javax.swing.JPanel;
-import javax.swing.JPopupMenu;
-import javax.swing.JTable;
-import javax.swing.ListSelectionModel;
-import javax.swing.UIManager;
+
+import javax.swing.*;
 import javax.swing.event.ListSelectionEvent;
 import javax.swing.event.ListSelectionListener;
 import javax.swing.table.DefaultTableCellRenderer;
 import javax.swing.table.TableCellEditor;
+import javax.swing.table.TableCellRenderer;
 import javax.swing.table.TableColumn;
-import java.awt.BorderLayout;
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Font;
+import java.awt.*;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Collection;
+import java.util.*;
 import java.util.List;
-import java.util.Map;
+
 
 /**
  * Detail view of the ObjEntity attributes.
@@ -93,8 +59,6 @@ import java.util.Map;
 public class ObjEntityAttributePanel extends JPanel implements ObjEntityDisplayListener,
         ObjEntityListener, ObjAttributeListener, ProjectOnSaveListener {
 
-    private static final int INHERITANCE_COLUMN_WIDTH = 35;
-
     private ProjectController mediator;
     private CayenneTable table;
     private TableColumnPreferences tablePreferences;
@@ -142,10 +106,13 @@ public class ObjEntityAttributePanel extends JPanel implements ObjEntityDisplayL
             public void mouseReleased(MouseEvent e) {
                 int row = table.rowAtPoint(e.getPoint());
                 int col = table.columnAtPoint(e.getPoint());
-                if (row >= 0 && col == ObjAttributeTableModel.INHERITED) {
-                    if (Boolean.TRUE.equals(table.getValueAt(row, col))) {
-                        ActionManager actionManager = Application.getInstance().getActionManager();
-                        actionManager.getAction(ObjEntityToSuperEntityAction.class).performAction(null);
+                ObjAttribute objAttribute = ((ObjAttributeTableModel)table.getModel()).getAttribute(row).getValue();
+                int columnFromModel = table.getColumnModel().getColumn(col).getModelIndex();
+                if (row >= 0 && columnFromModel == ObjAttributeTableModel.OBJ_ATTRIBUTE) {
+                    if(objAttribute.isInherited()) {
+                        TableCellRenderer renderer = table.getCellRenderer(row, col);
+                        Rectangle rectangle = table.getCellRect(row, col, false);
+                        ((CellRenderer) renderer).mouseClicked(e, rectangle.x);
                     }
                 }
             }
@@ -379,20 +346,17 @@ public class ObjEntityAttributePanel extends JPanel implements ObjEntityDisplayL
 
     protected void setUpTableStructure() {
         Map<Integer, Integer> minSizes = new HashMap<>();
-        Map<Integer, Integer> maxSizes = new HashMap<>();
-
-        minSizes.put(ObjAttributeTableModel.INHERITED, INHERITANCE_COLUMN_WIDTH);
-        maxSizes.put(ObjAttributeTableModel.INHERITED, INHERITANCE_COLUMN_WIDTH);
+        minSizes.put(ObjAttributeTableModel.OBJ_ATTRIBUTE, 150);
 
         initComboBoxes();
 
-        table.getColumnModel().getColumn(3).setCellRenderer(new DbAttributePathComboBoxRenderer());
-        table.getColumnModel().getColumn(3).setCellEditor(new DbAttributePathComboBoxEditor());
+        table.getColumnModel().getColumn(ObjAttributeTableModel.DB_ATTRIBUTE).setCellRenderer(new DbAttributePathComboBoxRenderer());
+        table.getColumnModel().getColumn(ObjAttributeTableModel.DB_ATTRIBUTE).setCellEditor(new DbAttributePathComboBoxEditor());
 
         tablePreferences.bind(
                 table,
                 minSizes,
-                maxSizes,
+                null,
                 null,
                 ObjAttributeTableModel.OBJ_ATTRIBUTE,
                 true);
@@ -446,32 +410,39 @@ public class ObjEntityAttributePanel extends JPanel implements ObjEntityDisplayL
             ObjAttributeTableModel model = (ObjAttributeTableModel) table.getModel();
             column = table.getColumnModel().getColumn(column).getModelIndex();
             ObjAttribute attribute = model.getAttribute(row).getValue();
-            if (column != ObjAttributeTableModel.INHERITED) {
-
-                if (!model.isCellEditable(row, column)) {
-                    setForeground(Color.GRAY);
-                } else {
-                    setForeground(isSelected && !hasFocus ? table.getSelectionForeground() : table.getForeground());
-                }
 
-                if (attribute.isInherited()) {
-                    Font font = getFont();
-                    Font newFont = font.deriveFont(Font.ITALIC);
-                    setFont(newFont);
-                }
-                setIcon(null);
+            if (!model.isCellEditable(row, column)) {
+                setForeground(isSelected ? new Color(0xCECECE) : Color.GRAY);
             } else {
-                if (attribute.isInherited()) {
-                    Icon objEntityIcon = ModelerUtil.buildIcon("icon-inheritance.png");
-                    setIcon(objEntityIcon);
+                setForeground(isSelected && !hasFocus ? table.getSelectionForeground() : table.getForeground());
+            }
+
+            setIcon(null);
+
+            if (attribute.isInherited()) {
+                Font font = getFont();
+                Font newFont = font.deriveFont(Font.ITALIC);
+                setFont(newFont);
+                if(column == ObjAttributeTableModel.OBJ_ATTRIBUTE) {
+                    ImageIcon icon = ModelerUtil.buildIcon("icon-inheritance.png");
+                    setIcon(icon);
                 }
-                setText("");
             }
+
             setFont(UIManager.getFont("Label.font"));
             setBorder(BorderFactory.createEmptyBorder(0,5,0,0));
 
             return this;
         }
+
+        public void mouseClicked(MouseEvent event, int x) {
+            Point point = event.getPoint();
+            ImageIcon icon = ModelerUtil.buildIcon("icon-inheritance.png");
+            if(point.x - x <= icon.getIconWidth()) {
+                ActionManager actionManager = Application.getInstance().getActionManager();
+                actionManager.getAction(ObjEntityToSuperEntityAction.class).performAction(null);
+            }
+        }
     }
 
     private void resetTableModel() {

http://git-wip-us.apache.org/repos/asf/cayenne/blob/3285651e/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 b48a68e..8dec1bf 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
@@ -31,6 +31,7 @@ import org.apache.cayenne.modeler.ProjectController;
 import org.apache.cayenne.modeler.action.ActionManager;
 import org.apache.cayenne.modeler.action.CopyAttributeRelationshipAction;
 import org.apache.cayenne.modeler.action.CutAttributeRelationshipAction;
+import org.apache.cayenne.modeler.action.ObjEntityToSuperEntityAction;
 import org.apache.cayenne.modeler.action.PasteAction;
 import org.apache.cayenne.modeler.action.RemoveAttributeRelationshipAction;
 import org.apache.cayenne.modeler.dialog.objentity.ObjRelationshipInfo;
@@ -51,6 +52,7 @@ import org.slf4j.LoggerFactory;
 import javax.swing.BorderFactory;
 import javax.swing.DefaultCellEditor;
 import javax.swing.Icon;
+import javax.swing.ImageIcon;
 import javax.swing.JComboBox;
 import javax.swing.JComponent;
 import javax.swing.JLabel;
@@ -65,12 +67,17 @@ import javax.swing.event.ListSelectionListener;
 import javax.swing.event.TableModelEvent;
 import javax.swing.event.TableModelListener;
 import javax.swing.table.DefaultTableCellRenderer;
+import javax.swing.table.TableCellRenderer;
 import javax.swing.table.TableColumn;
 import java.awt.BorderLayout;
 import java.awt.Color;
 import java.awt.Component;
+import java.awt.Point;
+import java.awt.Rectangle;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
 import java.util.Collection;
 import java.util.List;
 
@@ -130,6 +137,24 @@ public class ObjEntityRelationshipPanel extends JPanel implements ObjEntityDispl
                 ObjRelationshipTableModel.class,
                 "objEntity/relationshipTable");
 
+        table.addMouseListener(new MouseAdapter() {
+            @Override
+            public void mouseReleased(MouseEvent e) {
+                int row = table.rowAtPoint(e.getPoint());
+                int col = table.columnAtPoint(e.getPoint());
+                ObjRelationshipTableModel tableModel = ((ObjRelationshipTableModel) table.getModel());
+                ObjRelationship relationship = tableModel.getRelationship(row);
+                int columnFromModel = table.getColumnModel().getColumn(col).getModelIndex();
+                if (row >= 0 && columnFromModel == ObjRelationshipTableModel.REL_NAME) {
+                    if(relationship.getSourceEntity() != tableModel.getEntity()) {
+                        TableCellRenderer renderer = table.getCellRenderer(row, col);
+                        Rectangle rectangle = table.getCellRect(row, col, false);
+                        ((StringRenderer) renderer).mouseClicked(e, rectangle.x);
+                    }
+                }
+            }
+        });
+
         // Create and install a popup
         Icon ico = ModelerUtil.buildIcon("icon-edit.png");
         resolveMenu = new CayenneAction.CayenneMenuItem("Database Mapping", ico);
@@ -424,19 +449,36 @@ public class ObjEntityRelationshipPanel extends JPanel implements ObjEntityDispl
                     .getModel();
             ObjRelationship relationship = model.getRelationship(row);
 
+            setIcon(null);
+
+            column = table.getColumnModel().getColumn(column).getModelIndex();
             if (relationship != null
                     && relationship.getSourceEntity() != model.getEntity()) {
-                setForeground(Color.GRAY);
+                setForeground(isSelected ? new Color(0xCECECE) : Color.GRAY);
+                if(column == ObjRelationshipTableModel.REL_NAME) {
+                    ImageIcon icon = ModelerUtil.buildIcon("icon-inheritance.png");
+                    setIcon(icon);
+                }
             } else {
                 setForeground(isSelected && !hasFocus
                         ? table.getSelectionForeground()
                         : table.getForeground());
             }
+
             setBorder(BorderFactory.createEmptyBorder(0,5,0,0));
             setFont(UIManager.getFont("Label.font"));
 
             return this;
         }
+
+        public void mouseClicked(MouseEvent event, int x) {
+            Point point = event.getPoint();
+            ImageIcon icon = ModelerUtil.buildIcon("icon-inheritance.png");
+            if(point.x - x <= icon.getIconWidth()) {
+                ActionManager actionManager = Application.getInstance().getActionManager();
+                actionManager.getAction(ObjEntityToSuperEntityAction.class).performAction(null);
+            }
+        }
     }
 
     private class ObjRelationshipListSelectionListener implements ListSelectionListener {


[5/6] cayenne git commit: Fix NPE

Posted by nt...@apache.org.
Fix NPE


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

Branch: refs/heads/STABLE-4.0
Commit: 467371da96b0e2de1eff1bf97aad7c7fdd3ab0a3
Parents: 50668a4
Author: Nikita Timofeev <st...@gmail.com>
Authored: Thu Sep 20 17:08:08 2018 +0300
Committer: Arseni Bulatski <an...@gmail.com>
Committed: Tue Sep 25 12:41:24 2018 +0300

----------------------------------------------------------------------
 .../cayenne/modeler/util/DbRelationshipPathComboBoxEditor.java     | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/467371da/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DbRelationshipPathComboBoxEditor.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DbRelationshipPathComboBoxEditor.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DbRelationshipPathComboBoxEditor.java
index b79e68d..1ad5683 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DbRelationshipPathComboBoxEditor.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DbRelationshipPathComboBoxEditor.java
@@ -100,7 +100,7 @@ public class DbRelationshipPathComboBoxEditor extends PathChooserComboBoxCellEdi
 
                     //we need object target to save it in model
                     DbEntity lastEntity = ((DbRelationship) currentNode).getTargetEntity();
-                    if(lastEntity == null) {
+                    if(lastEntity != null) {
                         Collection<ObjEntity> objEntities = ((DbRelationship) currentNode).getTargetEntity().
                                 getDataMap().getMappedEntities(lastEntity);
                         ObjEntity objectTarget = objEntities.isEmpty() ? null : objEntities.iterator().next();


[6/6] cayenne git commit: Merge PR #324

Posted by nt...@apache.org.
Merge PR #324


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

Branch: refs/heads/STABLE-4.0
Commit: 20f9d38992e01e5319b02f0f6c50ebf6662a09f9
Parents: 15471c0 467371d
Author: Nikita Timofeev <st...@gmail.com>
Authored: Mon Oct 1 18:03:23 2018 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Mon Oct 1 18:03:23 2018 +0300

----------------------------------------------------------------------
 RELEASE-NOTES.txt                               |  1 +
 .../objentity/ObjAttributeInfoDialog.java       | 10 +--
 .../modeler/editor/ObjAttributeTableModel.java  | 32 +++------
 .../modeler/editor/ObjEntityAttributePanel.java | 75 +++++++++++---------
 .../editor/ObjEntityRelationshipPanel.java      | 44 +++++++++++-
 .../util/DbRelationshipPathComboBoxEditor.java  | 32 ++++++---
 6 files changed, 125 insertions(+), 69 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/20f9d389/RELEASE-NOTES.txt
----------------------------------------------------------------------
diff --cc RELEASE-NOTES.txt
index 2ec587f,e2e491c..7b5e681
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@@ -15,7 -15,7 +15,8 @@@ Date
  =======
  Changes/New Features:
  
 +CAY-2473 Modeler: cleanup attributes and relationship editors
+ CAY-2475 Modeler: move inheritance icon to name column in objAttr table and objRel table
  
  Bug Fixes:
  

http://git-wip-us.apache.org/repos/asf/cayenne/blob/20f9d389/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityAttributePanel.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cayenne/blob/20f9d389/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityRelationshipPanel.java
----------------------------------------------------------------------


[4/6] cayenne git commit: Fix NPE

Posted by nt...@apache.org.
Fix NPE


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

Branch: refs/heads/STABLE-4.0
Commit: 50668a4b85127f3199cfb16949b6980c10c1b092
Parents: 3645943
Author: Nikita Timofeev <st...@gmail.com>
Authored: Thu Sep 20 17:03:45 2018 +0300
Committer: Arseni Bulatski <an...@gmail.com>
Committed: Tue Sep 25 12:41:04 2018 +0300

----------------------------------------------------------------------
 .../util/DbRelationshipPathComboBoxEditor.java  | 32 ++++++++++++++------
 1 file changed, 23 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/50668a4b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DbRelationshipPathComboBoxEditor.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DbRelationshipPathComboBoxEditor.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DbRelationshipPathComboBoxEditor.java
index a3e6935..b79e68d 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DbRelationshipPathComboBoxEditor.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DbRelationshipPathComboBoxEditor.java
@@ -22,9 +22,11 @@ package org.apache.cayenne.modeler.util;
 import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.map.DbRelationship;
 import org.apache.cayenne.map.ObjEntity;
+import org.apache.cayenne.modeler.Application;
 import org.apache.cayenne.modeler.editor.ObjRelationshipTableModel;
 
 import javax.swing.JLabel;
+import javax.swing.JOptionPane;
 import javax.swing.JTable;
 import javax.swing.text.JTextComponent;
 import java.awt.Component;
@@ -98,12 +100,14 @@ public class DbRelationshipPathComboBoxEditor extends PathChooserComboBoxCellEdi
 
                     //we need object target to save it in model
                     DbEntity lastEntity = ((DbRelationship) currentNode).getTargetEntity();
-                    Collection<ObjEntity> objEntities = ((DbRelationship) currentNode).getTargetEntity().
-                            getDataMap().getMappedEntities(lastEntity);
-                    ObjEntity objectTarget = objEntities.isEmpty() ? null : objEntities.iterator().next();
-                    model.getRelationship(row).setTargetEntityName(objectTarget);
-                    model.setUpdatedValueAt(dbRelationshipPath, row, REL_TARGET_PATH_COLUMN);
-                    model.getRelationship(row).setDbRelationshipPath(dbRelationshipPath);
+                    if(lastEntity == null) {
+                        Collection<ObjEntity> objEntities = ((DbRelationship) currentNode).getTargetEntity().
+                                getDataMap().getMappedEntities(lastEntity);
+                        ObjEntity objectTarget = objEntities.isEmpty() ? null : objEntities.iterator().next();
+                        model.getRelationship(row).setTargetEntityName(objectTarget);
+                        model.setUpdatedValueAt(dbRelationshipPath, row, REL_TARGET_PATH_COLUMN);
+                        model.getRelationship(row).setDbRelationshipPath(dbRelationshipPath);
+                    }
                     model.getRelationship(row).setMapKey(null);
                 }
                 table.repaint();
@@ -154,17 +158,21 @@ public class DbRelationshipPathComboBoxEditor extends PathChooserComboBoxCellEdi
         return pathString.replaceAll(lastStringInPath + '$', "");
     }
 
-    private void changeObjEntity(String path){
+    private boolean changeObjEntity(String path){
         Object currentNode = getCurrentNode(path);
         if (currentNode instanceof DbEntity){
-            return;
+            return false;
         }
         DbEntity lastEntity = ((DbRelationship) currentNode).getTargetEntity();
+        if(lastEntity == null) {
+            return false;
+        }
         Collection<ObjEntity> objEntities = ((DbRelationship) currentNode).getTargetEntity().
                 getDataMap().getMappedEntities(lastEntity);
         ObjEntity objectTarget = objEntities.isEmpty() ? null : objEntities.iterator().next();
         model.getRelationship(row).setTargetEntityName(objectTarget);
         table.repaint();
+        return true;
     }
 
     @Override
@@ -174,6 +182,12 @@ public class DbRelationshipPathComboBoxEditor extends PathChooserComboBoxCellEdi
     @Override
     public void focusLost(FocusEvent focusEvent) {
         String path = model.getRelationship(row).getDbRelationshipPath();
-        changeObjEntity(path);
+        if(!changeObjEntity(path)) {
+            JOptionPane.showMessageDialog(
+                    Application.getFrame(),
+                    "Can't set dbAttribute path. At first set target entity in dbEntity.",
+                    "Error",
+                    JOptionPane.ERROR_MESSAGE);
+        }
     }
 }


[3/6] cayenne git commit: Fix NPE

Posted by nt...@apache.org.
Fix NPE


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

Branch: refs/heads/STABLE-4.0
Commit: 3645943bfb04e365929dba7949ef5cb2111d299c
Parents: 4be0bea
Author: Nikita Timofeev <st...@gmail.com>
Authored: Wed Sep 19 14:13:59 2018 +0300
Committer: Arseni Bulatski <an...@gmail.com>
Committed: Tue Sep 25 12:40:41 2018 +0300

----------------------------------------------------------------------
 .../modeler/dialog/objentity/ObjAttributeInfoDialog.java  | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/3645943b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjAttributeInfoDialog.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjAttributeInfoDialog.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjAttributeInfoDialog.java
index 8e4c5f8..ba078b4 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjAttributeInfoDialog.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjAttributeInfoDialog.java
@@ -63,6 +63,7 @@ import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 
 public class ObjAttributeInfoDialog extends CayenneController implements TreeSelectionListener {
 
@@ -422,11 +423,12 @@ public class ObjAttributeInfoDialog extends CayenneController implements TreeSel
 
 	public boolean isChange() {
 
-		boolean isOvverideTableChange = ((OverrideEmbeddableAttributeTableModel) view.getOverrideAttributeTable()
+		boolean isOverrideTableChange = ((OverrideEmbeddableAttributeTableModel) view.getOverrideAttributeTable()
 				.getModel()).isAttributeOverrideChange();
-		return isOvverideTableChange || !attribute.getName().equals(view.getAttributeName().getText())
-				|| (attribute.getType() == null && view.getTypeComboBox().getSelectedItem().toString() != null)
-				|| !attribute.getType().equals(view.getTypeComboBox().getSelectedItem().toString());
+		return isOverrideTableChange
+				|| !attribute.getName().equals(view.getAttributeName().getText())
+				|| (attribute.getType() == null && view.getTypeComboBox().getSelectedItem() != null)
+				|| !Objects.equals(attribute.getType(), view.getTypeComboBox().getSelectedItem());
 	}
 
 	public void saveMapping() {


[2/6] cayenne git commit: Modeler: Adjust disabled selection foreground color

Posted by nt...@apache.org.
Modeler: Adjust disabled selection foreground color


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

Branch: refs/heads/STABLE-4.0
Commit: 4be0bea1b26dfc0b08727eeb8e43fa54234eb8de
Parents: 3285651
Author: Nikita Timofeev <st...@gmail.com>
Authored: Wed Sep 19 10:29:59 2018 +0300
Committer: Arseni Bulatski <an...@gmail.com>
Committed: Tue Sep 25 12:14:53 2018 +0300

----------------------------------------------------------------------
 .../modeler/editor/ObjEntityAttributePanel.java | 52 +++++++++++++++++---
 .../editor/ObjEntityRelationshipPanel.java      |  2 +-
 2 files changed, 45 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/4be0bea1/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 4df7ba3..229b68c 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
@@ -29,29 +29,65 @@ import org.apache.cayenne.map.event.ObjAttributeListener;
 import org.apache.cayenne.map.event.ObjEntityListener;
 import org.apache.cayenne.modeler.Application;
 import org.apache.cayenne.modeler.ProjectController;
-import org.apache.cayenne.modeler.action.*;
+import org.apache.cayenne.modeler.action.ActionManager;
+import org.apache.cayenne.modeler.action.CopyAttributeRelationshipAction;
+import org.apache.cayenne.modeler.action.CutAttributeRelationshipAction;
+import org.apache.cayenne.modeler.action.ObjEntityToSuperEntityAction;
+import org.apache.cayenne.modeler.action.PasteAction;
+import org.apache.cayenne.modeler.action.RemoveAttributeRelationshipAction;
 import org.apache.cayenne.modeler.dialog.objentity.ObjAttributeInfoDialog;
 import org.apache.cayenne.modeler.editor.wrapper.ObjAttributeWrapper;
-import org.apache.cayenne.modeler.event.*;
+import org.apache.cayenne.modeler.event.EntityDisplayEvent;
+import org.apache.cayenne.modeler.event.ObjEntityDisplayListener;
+import org.apache.cayenne.modeler.event.ProjectOnSaveEvent;
+import org.apache.cayenne.modeler.event.ProjectOnSaveListener;
+import org.apache.cayenne.modeler.event.TablePopupHandler;
 import org.apache.cayenne.modeler.pref.TableColumnPreferences;
-import org.apache.cayenne.modeler.util.*;
+import org.apache.cayenne.modeler.util.CayenneAction;
+import org.apache.cayenne.modeler.util.CayenneTable;
+import org.apache.cayenne.modeler.util.CayenneTableModel;
+import org.apache.cayenne.modeler.util.DbAttributePathComboBoxEditor;
+import org.apache.cayenne.modeler.util.DbAttributePathComboBoxRenderer;
+import org.apache.cayenne.modeler.util.ModelerUtil;
+import org.apache.cayenne.modeler.util.PanelFactory;
+import org.apache.cayenne.modeler.util.ProjectUtil;
+import org.apache.cayenne.modeler.util.UIUtil;
 import org.apache.cayenne.modeler.util.combo.AutoCompletion;
 
-import javax.swing.*;
+import javax.swing.BorderFactory;
+import javax.swing.Icon;
+import javax.swing.ImageIcon;
+import javax.swing.JComboBox;
+import javax.swing.JDialog;
+import javax.swing.JMenuItem;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JPopupMenu;
+import javax.swing.JTable;
+import javax.swing.ListSelectionModel;
+import javax.swing.UIManager;
 import javax.swing.event.ListSelectionEvent;
 import javax.swing.event.ListSelectionListener;
 import javax.swing.table.DefaultTableCellRenderer;
 import javax.swing.table.TableCellEditor;
 import javax.swing.table.TableCellRenderer;
 import javax.swing.table.TableColumn;
-import java.awt.*;
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Font;
+import java.awt.Point;
+import java.awt.Rectangle;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
-
+import java.util.Map;
 
 /**
  * Detail view of the ObjEntity attributes.
@@ -412,7 +448,7 @@ public class ObjEntityAttributePanel extends JPanel implements ObjEntityDisplayL
             ObjAttribute attribute = model.getAttribute(row).getValue();
 
             if (!model.isCellEditable(row, column)) {
-                setForeground(isSelected ? new Color(0xCECECE) : Color.GRAY);
+                setForeground(isSelected ? new Color(0xEEEEEE) : Color.GRAY);
             } else {
                 setForeground(isSelected && !hasFocus ? table.getSelectionForeground() : table.getForeground());
             }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/4be0bea1/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 8dec1bf..b3102ce 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
@@ -454,7 +454,7 @@ public class ObjEntityRelationshipPanel extends JPanel implements ObjEntityDispl
             column = table.getColumnModel().getColumn(column).getModelIndex();
             if (relationship != null
                     && relationship.getSourceEntity() != model.getEntity()) {
-                setForeground(isSelected ? new Color(0xCECECE) : Color.GRAY);
+                setForeground(isSelected ? new Color(0xEEEEEE) : Color.GRAY);
                 if(column == ObjRelationshipTableModel.REL_NAME) {
                     ImageIcon icon = ModelerUtil.buildIcon("icon-inheritance.png");
                     setIcon(icon);