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 2020/01/29 11:00:40 UTC

[cayenne] branch master updated (af1a42d -> 0ff24bf)

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

ntimofeev pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git.


    from af1a42d  CAY-2646 Wrong target path selection logic in cgen config   - fix test
     new cb3ae2e  minor code cleanup
     new 0ff24bf  Update code generation UI

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../modeler/editor/cgen/ClassesTabController.java  | 33 ++++----
 .../modeler/editor/cgen/ClassesTabPanel.java       |  2 +-
 .../editor/cgen/CodeGeneratorController.java       |  4 +-
 .../editor/cgen/CodeGeneratorControllerBase.java   | 90 ++++++++++++----------
 .../cayenne/modeler/util/CayenneController.java    |  2 +-
 .../org/apache/cayenne/swing/ActionBinding.java    | 32 +-------
 .../java/org/apache/cayenne/swing/BindingBase.java | 22 ++----
 .../apache/cayenne/swing/ImageRendererColumn.java  |  7 +-
 8 files changed, 83 insertions(+), 109 deletions(-)


[cayenne] 02/02: Update code generation UI

Posted by nt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 0ff24bf8703902d0df6e60f2389e79c1653f111f
Author: Nikita Timofeev <st...@gmail.com>
AuthorDate: Wed Jan 29 13:59:27 2020 +0300

    Update code generation UI
---
 .../modeler/editor/cgen/ClassesTabController.java  | 33 ++++----
 .../modeler/editor/cgen/ClassesTabPanel.java       |  2 +-
 .../editor/cgen/CodeGeneratorController.java       |  4 +-
 .../editor/cgen/CodeGeneratorControllerBase.java   | 90 ++++++++++++----------
 .../apache/cayenne/swing/ImageRendererColumn.java  |  7 +-
 5 files changed, 72 insertions(+), 64 deletions(-)

diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/ClassesTabController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/ClassesTabController.java
index e8730f6..0739a69 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/ClassesTabController.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/ClassesTabController.java
@@ -26,6 +26,7 @@ import org.apache.cayenne.swing.ObjectBinding;
 import org.apache.cayenne.swing.TableBindingBuilder;
 
 import javax.swing.JLabel;
+import javax.swing.table.TableColumnModel;
 import java.awt.Component;
 
 /**
@@ -38,11 +39,11 @@ public class ClassesTabController extends CayenneController {
 
     private BindingBuilder builder;
 
-    public ClassesTabController(CodeGeneratorControllerBase parent) {
+    public ClassesTabController(CodeGeneratorController parent) {
         super(parent);
 
         this.view = new ClassesTabPanel();
-        builder = new BindingBuilder(getApplication().getBindingFactory(), this);
+        this.builder = new BindingBuilder(getApplication().getBindingFactory(), this);
     }
 
     public void startup(){
@@ -50,8 +51,8 @@ public class ClassesTabController extends CayenneController {
         classSelectedAction();
     }
 
-    protected CodeGeneratorControllerBase getParentController() {
-        return (CodeGeneratorControllerBase) getParent();
+    protected CodeGeneratorController getParentController() {
+        return (CodeGeneratorController) getParent();
     }
 
     public Component getView() {
@@ -77,14 +78,16 @@ public class ClassesTabController extends CayenneController {
                 "XXXXXXXXXXXXXXXXXXXXXXXXXX");
 
         tableBuilder.addColumn(
-                "Comments, Warnings",
+                "",
                 "parent.getProblem(#item)",
                 String.class,
                 false,
-                "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
+                "XX");
 
         this.tableBinding = tableBuilder.bindToTable(view.getTable(), "parent.classes");
-        view.getTable().getColumnModel().getColumn(1).setCellRenderer(new ImageRendererColumn());
+        TableColumnModel columnModel = view.getTable().getColumnModel();
+        columnModel.getColumn(1).setCellRenderer(new ImageRendererColumn());
+        columnModel.getColumn(2).setCellRenderer(new ImageRendererColumn());
     }
 
     public boolean isSelected() {
@@ -103,17 +106,10 @@ public class ClassesTabController extends CayenneController {
         int selectedCount = getParentController().getSelectedEntitiesSize()
                 + getParentController().getSelectedEmbeddablesSize()
                 + (getParentController().isDataMapSelected() ? 1 : 0);
-        if(selectedCount == 0) {
-            getParentController().enableGenerateButton(false);
-        } else {
-            getParentController().enableGenerateButton(true);
-        }
-        if (selectedCount < getParentController().getClasses().size()) {
-            ((CodeGeneratorPane)parent.getView()).getCheckAll().setSelected(false);
-        }
-        else if (selectedCount == getParentController().getClasses().size()) {
-            ((CodeGeneratorPane)parent.getView()).getCheckAll().setSelected(true);
-        }
+        int totalClasses = getParentController().getClasses().size();
+
+        getParentController().enableGenerateButton(selectedCount != 0);
+        getParentController().getView().getCheckAll().setSelected(selectedCount >= totalClasses);
         getParentController().updateSelectedEntities();
     }
 
@@ -121,6 +117,7 @@ public class ClassesTabController extends CayenneController {
      * An action that updates entity check boxes in response to the Select All state
      * change.
      */
+    @SuppressWarnings("unused")
     public void checkAllAction() {
         if (getParentController().updateSelection(((CodeGeneratorPane)parent.getView()).getCheckAll().isSelected() ? o -> true : o -> false)) {
             tableBinding.updateView();
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/ClassesTabPanel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/ClassesTabPanel.java
index a4a76f7..c00ce4b 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/ClassesTabPanel.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/ClassesTabPanel.java
@@ -44,7 +44,7 @@ public class ClassesTabPanel extends JPanel {
 
         // set some minimal preferred size, so that it is smaller than other forms used in
         // the dialog... this way we get the right automated overall size
-        tablePanel.setPreferredSize(new Dimension(530, 200));
+        tablePanel.setPreferredSize(new Dimension(300, 200));
 
         setLayout(new BorderLayout());
         add(tablePanel, BorderLayout.CENTER);
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CodeGeneratorController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CodeGeneratorController.java
index fe03397..03caae6 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CodeGeneratorController.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CodeGeneratorController.java
@@ -68,7 +68,7 @@ public class CodeGeneratorController extends CodeGeneratorControllerBase impleme
         super(parent, projectController);
         this.classesSelector = new ClassesTabController(this);
         this.generatorSelector = new GeneratorTabController(this);
-        view = new CodeGeneratorPane(generatorSelector.getView(), classesSelector.getView());
+        this.view = new CodeGeneratorPane(generatorSelector.getView(), classesSelector.getView());
         this.prevGeneratorController = new ConcurrentHashMap<>();
         initBindings();
         initListeners();
@@ -110,7 +110,7 @@ public class CodeGeneratorController extends CodeGeneratorControllerBase impleme
     }
 
     @Override
-    public Component getView() {
+    public CodeGeneratorPane getView() {
         return view;
     }
 
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CodeGeneratorControllerBase.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CodeGeneratorControllerBase.java
index 5b3d081..7d137a8 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CodeGeneratorControllerBase.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CodeGeneratorControllerBase.java
@@ -59,6 +59,7 @@ import org.apache.cayenne.validation.ValidationResult;
  */
 public abstract class CodeGeneratorControllerBase extends CayenneController {
 
+    protected static Icon errorIcon = ModelerUtil.buildIcon("icon-error.png");
     public static final String SELECTED_PROPERTY = "selected";
 
     protected DataMap dataMap;
@@ -272,34 +273,21 @@ public abstract class CodeGeneratorControllerBase extends CayenneController {
         return selected;
     }
 
-    /**
-     * Returns the first encountered validation problem for an antity matching the name or
-     * null if the entity is valid or the entity is not present.
-     */
-    public String getProblem(Object obj) {
-
-        String name = null;
-
-        if (obj instanceof ObjEntity) {
-            name = ((ObjEntity) obj).getName();
-        }
-        else if (obj instanceof Embeddable) {
-            name = ((Embeddable) obj).getClassName();
-        }
-
-        if (validation == null) {
-            return null;
-        }
-
-        List failures = validation.getFailures(name);
-        if (failures.isEmpty()) {
-            return null;
+    private void updateArtifactGenerationMode(Object classObj, boolean selected) {
+        DataMap dataMap = (DataMap) classObj;
+        CgenConfiguration cgenConfiguration = projectController.getApplication().getMetaData().get(dataMap, CgenConfiguration.class);
+        if(selected) {
+            cgenConfiguration.setArtifactsGenerationMode("all");
+        } else {
+            cgenConfiguration.setArtifactsGenerationMode("entity");
         }
-
-        return ((ValidationFailure) failures.get(0)).getDescription();
     }
 
     public boolean isSelected() {
+        return isSelected(currentClass);
+    }
+
+    public boolean isSelected(Object currentClass) {
         if (currentClass instanceof ObjEntity) {
             return selectedEntities
                     .contains(((ObjEntity) currentClass).getName());
@@ -316,6 +304,10 @@ public abstract class CodeGeneratorControllerBase extends CayenneController {
     }
 
     public void setSelected(boolean selectedFlag) {
+        setSelected(currentClass, selectedFlag);
+    }
+
+    public void setSelected(Object currentClass, boolean selectedFlag) {
         if (currentClass == null) {
             return;
         }
@@ -357,14 +349,33 @@ public abstract class CodeGeneratorControllerBase extends CayenneController {
         }
     }
 
-    private void updateArtifactGenerationMode(Object classObj, boolean selected) {
-        DataMap dataMap = (DataMap) classObj;
-        CgenConfiguration cgenConfiguration = projectController.getApplication().getMetaData().get(dataMap, CgenConfiguration.class);
-        if(selected) {
-            cgenConfiguration.setArtifactsGenerationMode("all");
-        } else {
-            cgenConfiguration.setArtifactsGenerationMode("entity");
+    /**
+     * Returns the first encountered validation problem for an antity matching the name or
+     * null if the entity is valid or the entity is not present.
+     */
+    public JLabel getProblem(Object obj) {
+        String name = null;
+        if (obj instanceof ObjEntity) {
+            name = ((ObjEntity) obj).getName();
+        } else if (obj instanceof Embeddable) {
+            name = ((Embeddable) obj).getClassName();
         }
+
+        ValidationFailure validationFailure = null;
+        if (validation != null) {
+            List<ValidationFailure> failures = validation.getFailures(name);
+            if (!failures.isEmpty()) {
+                validationFailure = failures.get(0);
+            }
+        }
+
+        JLabel labelIcon = new JLabel();
+        labelIcon.setVisible(true);
+        if(validationFailure != null) {
+            labelIcon.setIcon(errorIcon);
+            labelIcon.setToolTipText(validationFailure.getDescription());
+        }
+        return labelIcon;
     }
 
     public JLabel getItemName(Object obj) {
@@ -387,6 +398,14 @@ public abstract class CodeGeneratorControllerBase extends CayenneController {
         return labelIcon;
     }
 
+    public Object getCurrentClass() {
+        return currentClass;
+    }
+
+    public void setCurrentClass(Object currentClass) {
+        this.currentClass = currentClass;
+    }
+
     public void updateSelectedEntities(){
         updateEntities();
         updateEmbeddables();
@@ -465,14 +484,6 @@ public abstract class CodeGeneratorControllerBase extends CayenneController {
         return projectController;
     }
 
-    public Object getCurrentClass() {
-        return currentClass;
-    }
-
-    public void setCurrentClass(Object currentClass) {
-        this.currentClass = currentClass;
-    }
-
     public boolean isInitFromModel() {
         return initFromModel;
     }
@@ -481,7 +492,6 @@ public abstract class CodeGeneratorControllerBase extends CayenneController {
         this.initFromModel = initFromModel;
     }
 
-
     public abstract void enableGenerateButton(boolean enabled);
 
     void removeFromSelectedEntities(ObjEntity objEntity) {
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/ImageRendererColumn.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/ImageRendererColumn.java
index 01ed924..11ea7ed 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/ImageRendererColumn.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/ImageRendererColumn.java
@@ -37,10 +37,11 @@ public class ImageRendererColumn extends DefaultTableCellRenderer {
     public Component getTableCellRendererComponent(JTable table, Object value,
             boolean isSelected, boolean hasFocus, int row, int column) {
         super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
-        setText(((JLabel) value).getText());
+        JLabel label = (JLabel) value;
+        setText(label.getText());
+        setIcon(label.getIcon());
+        setToolTipText(label.getToolTipText());
         setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 0));
-        Icon icon = ((JLabel) value).getIcon();
-        setIcon(icon);
         return this;
     }
 }


[cayenne] 01/02: minor code cleanup

Posted by nt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit cb3ae2e92f310110e7c47c6b19d2fa765413d64b
Author: Nikita Timofeev <st...@gmail.com>
AuthorDate: Wed Jan 29 13:45:51 2020 +0300

    minor code cleanup
---
 .../cayenne/modeler/util/CayenneController.java    |  2 +-
 .../org/apache/cayenne/swing/ActionBinding.java    | 32 ++--------------------
 .../java/org/apache/cayenne/swing/BindingBase.java | 22 +++++----------
 3 files changed, 11 insertions(+), 45 deletions(-)

diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneController.java
index 7a7b01e..861e106 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneController.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneController.java
@@ -74,7 +74,7 @@ public abstract class CayenneController implements BoundComponent {
     }
 
     /**
-     * Returns the vie wassociated with this Controller.
+     * Returns the view associated with this Controller.
      */
     public abstract Component getView();
 
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/ActionBinding.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/ActionBinding.java
index 06a0100..35651c1 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/ActionBinding.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/ActionBinding.java
@@ -20,46 +20,22 @@
 package org.apache.cayenne.swing;
 
 import java.awt.Component;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
 
 import javax.swing.AbstractButton;
 
-/**
- */
 public class ActionBinding extends BindingBase {
 
     protected Component view;
 
     public ActionBinding(AbstractButton button, String propertyExpression) {
         super(propertyExpression);
-
-        button.addActionListener(new ActionListener() {
-
-            public void actionPerformed(ActionEvent e) {
-                fireAction();
-            }
-        });
-
+        button.addActionListener(e -> fireAction());
         this.view = button;
     }
 
-    public ActionBinding(BoundComponent component, String propertyExpression,
-            String boundExpression) {
+    public ActionBinding(BoundComponent component, String propertyExpression, String boundExpression) {
         super(propertyExpression);
-
-        component.addPropertyChangeListener(
-                boundExpression,
-                new PropertyChangeListener() {
-
-                    public void propertyChange(PropertyChangeEvent event) {
-                        fireAction();
-                    }
-
-                });
-
+        component.addPropertyChangeListener(boundExpression, event -> fireAction());
         this.view = component.getView();
     }
 
@@ -67,7 +43,6 @@ public class ActionBinding extends BindingBase {
         if (view == null) {
             throw new BindingException("headless action");
         }
-
         return view;
     }
 
@@ -76,7 +51,6 @@ public class ActionBinding extends BindingBase {
     }
 
     protected void fireAction() {
-        // TODO: catch exceptions...
         getValue();
     }
 }
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/BindingBase.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/BindingBase.java
index e97d86b..29dc826 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/BindingBase.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/BindingBase.java
@@ -28,7 +28,6 @@ import org.apache.cayenne.validation.ValidationException;
 
 /**
  */
-// TODO: extend BindingExpression, unless we decide to make it a composition...
 public abstract class BindingBase implements ObjectBinding {
 
     private Object compiled;
@@ -46,8 +45,7 @@ public abstract class BindingBase implements ObjectBinding {
         if (th instanceof OgnlException) {
             Throwable reason = ((OgnlException) th).getReason();
             return (reason != null) ? unwind(reason) : th;
-        }
-        else {
+        } else {
             return Util.unwindException(th);
         }
     }
@@ -56,8 +54,7 @@ public abstract class BindingBase implements ObjectBinding {
 
         try {
             this.compiled = Ognl.parseExpression(propertyExpression);
-        }
-        catch (OgnlException ex) {
+        } catch (OgnlException ex) {
             throw new CayenneRuntimeException("Invalid expression - "
                     + propertyExpression, BindingBase.unwind(ex));
         }
@@ -142,16 +139,14 @@ public abstract class BindingBase implements ObjectBinding {
                 }
 
                 Ognl.setValue(compiled, context, value);
-            }
-            finally {
+            } finally {
                 modelUpdateDisabled = false;
             }
 
             if (delegate != null) {
                 delegate.modelUpdated(this, oldValue, value);
             }
-        }
-        catch (OgnlException ex) {
+        } catch (OgnlException ex) {
             processException(ex);
         }
     }
@@ -166,20 +161,17 @@ public abstract class BindingBase implements ObjectBinding {
 
         try {
             return Ognl.getValue(compiled, context);
-        }
-        catch (OgnlException ex) {
+        } catch (OgnlException ex) {
             processException(ex);
             return null;
         }
     }
 
-    protected void processException(Throwable th) throws ValidationException,
-            BindingException {
+    protected void processException(Throwable th) throws ValidationException, BindingException {
         Throwable root = BindingBase.unwind(th);
         if (root instanceof ValidationException) {
             throw (ValidationException) root;
-        }
-        else if (root instanceof NumberFormatException) {
+        } else if (root instanceof NumberFormatException) {
             throw new ValidationException("Invalid numeric string");
         }