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:42 UTC
[cayenne] 02/02: Update code generation UI
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;
}
}