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 2019/09/11 10:29:09 UTC
[cayenne] 03/03: CAY-2592 Modeler: make all datamaps selected in
global cgen tab
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 90d1dfe864521d6e2670d8ffb77c38bd4ffaa8f5
Author: Nikita Timofeev <st...@gmail.com>
AuthorDate: Wed Sep 11 11:28:21 2019 +0300
CAY-2592 Modeler: make all datamaps selected in global cgen tab
---
.../cayenne/modeler/editor/GeneratorsPanel.java | 24 ++++-----
.../cayenne/modeler/editor/GeneratorsTab.java | 4 +-
.../modeler/editor/GeneratorsTabController.java | 57 ++++++++++++++++------
.../modeler/editor/cgen/domain/CgenTab.java | 3 +-
.../editor/cgen/domain/CgenTabController.java | 20 +++-----
.../editor/dbimport/domain/DbImportTab.java | 3 +-
.../dbimport/domain/DbImportTabController.java | 7 +--
7 files changed, 71 insertions(+), 47 deletions(-)
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/GeneratorsPanel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/GeneratorsPanel.java
index 4ec5ba9..6902772 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/GeneratorsPanel.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/GeneratorsPanel.java
@@ -35,30 +35,30 @@ import java.awt.BorderLayout;
/**
* @since 4.1
*/
-public class GeneratorsPanel extends JPanel {
+class GeneratorsPanel extends JPanel {
+
+ private final DataMap dataMap;
+ private final Class<?> type;
+ private final String icon;
private JCheckBox checkConfig;
- private JLabel dataMapLabel;
private JButton toConfigButton;
- private DataMap dataMap;
- private Class type;
- private String icon;
- public GeneratorsPanel(DataMap dataMap, String icon, Class type) {
+ GeneratorsPanel(DataMap dataMap, String icon, Class<?> type) {
this.type = type;
this.icon = icon;
this.dataMap = dataMap;
initView();
}
- public void initView(){
+ private void initView(){
setLayout(new BorderLayout());
FormLayout layout = new FormLayout(
"left:pref, 4dlu, fill:70dlu, 3dlu, fill:120, 3dlu, fill:120", "");
DefaultFormBuilder builder = new DefaultFormBuilder(layout);
this.checkConfig = new JCheckBox();
- this.dataMapLabel = new JLabel(dataMap.getName());
- this.dataMapLabel.setToolTipText(dataMap.getName());
+ JLabel dataMapLabel = new JLabel(dataMap.getName());
+ dataMapLabel.setToolTipText(dataMap.getName());
DataChannelMetaData metaData = Application.getInstance().getMetaData();
this.toConfigButton = new JButton("Edit Config");
if(metaData.get(dataMap, type) == null) {
@@ -71,15 +71,15 @@ public class GeneratorsPanel extends JPanel {
this.add(builder.getPanel(), BorderLayout.CENTER);
}
- public JCheckBox getCheckConfig() {
+ JCheckBox getCheckConfig() {
return checkConfig;
}
- public JButton getToConfigButton() {
+ JButton getToConfigButton() {
return toConfigButton;
}
- public DataMap getDataMap() {
+ DataMap getDataMap() {
return dataMap;
}
}
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/GeneratorsTab.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/GeneratorsTab.java
index 39a9458..f9ea641 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/GeneratorsTab.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/GeneratorsTab.java
@@ -40,11 +40,11 @@ import java.util.concurrent.ConcurrentMap;
public class GeneratorsTab extends JPanel {
protected ProjectController projectController;
- private GeneratorsTabController additionalTabController;
+ private GeneratorsTabController<?> additionalTabController;
private TopGeneratorPanel generationPanel;
- public GeneratorsTab(ProjectController projectController, GeneratorsTabController additionalTabController, String icon, String text) {
+ public GeneratorsTab(ProjectController projectController, GeneratorsTabController<?> additionalTabController, String icon, String text) {
this.projectController = projectController;
this.additionalTabController = additionalTabController;
this.generationPanel = new TopGeneratorPanel(icon);
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/GeneratorsTabController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/GeneratorsTabController.java
index d3665cd..deea65d 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/GeneratorsTabController.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/GeneratorsTabController.java
@@ -27,10 +27,10 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import org.apache.cayenne.configuration.DataChannelDescriptor;
-import org.apache.cayenne.gen.CgenConfiguration;
+import org.apache.cayenne.configuration.event.DataMapEvent;
+import org.apache.cayenne.configuration.event.DataMapListener;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.modeler.ProjectController;
-import org.apache.cayenne.modeler.dialog.ErrorDebugDialog;
import org.apache.cayenne.project.Project;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -38,28 +38,34 @@ import org.slf4j.LoggerFactory;
/**
* @since 4.1
*/
-public abstract class GeneratorsTabController {
+public abstract class GeneratorsTabController<T> implements DataMapListener {
- public static Logger logObj = LoggerFactory.getLogger(ErrorDebugDialog.class);
- public ProjectController projectController;
- public GeneratorsTab view;
- private Class type;
+ protected final static Logger LOGGER = LoggerFactory.getLogger(GeneratorsTabController.class);
- public ConcurrentMap<DataMap, GeneratorsPanel> generatorsPanels;
- public Set<DataMap> selectedDataMaps;
+ private final ProjectController projectController;
+ private final ConcurrentMap<DataMap, GeneratorsPanel> generatorsPanels;
+ private final Set<DataMap> selectedDataMaps;
+ private final Class<T> type;
+ private final boolean selectAllByDefault;
- public GeneratorsTabController(Class type, ProjectController projectController) {
- this.type = type;
+ protected GeneratorsTab view;
+
+ public GeneratorsTabController(ProjectController projectController, Class<T> type, boolean selectAllByDefault) {
this.generatorsPanels = new ConcurrentHashMap<>();
this.selectedDataMaps = new HashSet<>();
+ this.type = type;
+ this.selectAllByDefault = selectAllByDefault;
this.projectController = projectController;
+ this.projectController.addDataMapListener(this);
}
- public String icon;
+ private boolean isSelectAllChecked() {
+ return view.getGenerationPanel().getSelectAll().isSelected();
+ }
public abstract void runGenerators(Set<DataMap> dataMaps);
- public void createPanels(){
+ void createPanels(){
Collection<DataMap> dataMaps = getDataMaps();
refreshSelectedMaps(dataMaps);
generatorsPanels.clear();
@@ -74,7 +80,7 @@ public abstract class GeneratorsTabController {
currPanel.getCheckConfig().setSelected(true);
}
});
- if(selectedDataMaps.isEmpty() && type == CgenConfiguration.class) {
+ if(selectedDataMaps.isEmpty() && selectAllByDefault) {
GeneratorsTab.TopGeneratorPanel topGeneratorPanel = view.getGenerationPanel();
topGeneratorPanel.getSelectAll().setSelected(true);
topGeneratorPanel.getGenerateAll().setEnabled(true);
@@ -122,7 +128,7 @@ public abstract class GeneratorsTabController {
public abstract void showConfig(DataMap dataMap);
private void setGenerateButtonDisabled() {
- if(selectedDataMaps.size() == 0) {
+ if(selectedDataMaps.isEmpty()) {
view.getGenerationPanel().getGenerateAll().setEnabled(false);
} else {
view.getGenerationPanel().getGenerateAll().setEnabled(true);
@@ -153,4 +159,25 @@ public abstract class GeneratorsTabController {
private void refreshSelectedMaps(Collection<DataMap> dataMaps) {
selectedDataMaps.removeIf(dataMap -> !dataMaps.contains(dataMap));
}
+
+ @Override
+ public void dataMapAdded(DataMapEvent e) {
+ GeneratorsPanel generatorPanel = new GeneratorsPanel(e.getDataMap(), "icon-datamap.png", type);
+ initListenersForPanel(generatorPanel);
+ generatorsPanels.put(e.getDataMap(), generatorPanel);
+ if(isSelectAllChecked()) {
+ generatorPanel.getCheckConfig().setSelected(true);
+ selectedDataMaps.add(e.getDataMap());
+ }
+ }
+
+ @Override
+ public void dataMapRemoved(DataMapEvent e) {
+ selectedDataMaps.remove(e.getDataMap());
+ generatorsPanels.remove(e.getDataMap());
+ }
+
+ @Override
+ public void dataMapChanged(DataMapEvent e) {
+ }
}
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/domain/CgenTab.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/domain/CgenTab.java
index f7d7dc4..7d185d3 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/domain/CgenTab.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/domain/CgenTab.java
@@ -19,6 +19,7 @@
package org.apache.cayenne.modeler.editor.cgen.domain;
+import org.apache.cayenne.gen.CgenConfiguration;
import org.apache.cayenne.modeler.ProjectController;
import org.apache.cayenne.modeler.editor.GeneratorsTab;
import org.apache.cayenne.modeler.editor.GeneratorsTabController;
@@ -30,7 +31,7 @@ import javax.swing.JOptionPane;
*/
public class CgenTab extends GeneratorsTab {
- public CgenTab(ProjectController projectController, GeneratorsTabController additionalTabController) {
+ public CgenTab(ProjectController projectController, GeneratorsTabController<CgenConfiguration> additionalTabController) {
super(projectController, additionalTabController, "icon-gen_java.png", "Run class generation on selected datamaps.");
}
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/domain/CgenTabController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/domain/CgenTabController.java
index 4fe28e0..f8dcaa3 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/domain/CgenTabController.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/domain/CgenTabController.java
@@ -45,10 +45,10 @@ import org.apache.cayenne.tools.CayenneToolsModuleProvider;
/**
* @since 4.1
*/
-public class CgenTabController extends GeneratorsTabController {
+public class CgenTabController extends GeneratorsTabController<CgenConfiguration> {
public CgenTabController(ProjectController projectController) {
- super(CgenConfiguration.class, projectController);
+ super(projectController, CgenConfiguration.class, true);
this.view = new CgenTab(projectController, this);
}
@@ -73,7 +73,7 @@ public class CgenTabController extends GeneratorsTabController {
classGenerationAction.prepareArtifacts();
classGenerationAction.execute();
} catch (Exception e) {
- logObj.error("Error generating classes", e);
+ LOGGER.error("Error generating classes", e);
generationFail = true;
((CgenTab)view).showErrorMessage(e.getMessage());
}
@@ -89,26 +89,19 @@ public class CgenTabController extends GeneratorsTabController {
cgenConfiguration.setDataMap(dataMap);
Path basePath = Paths.get(ModelerUtil.initOutputFolder());
- // no destination folder
- if (basePath == null) {
- JOptionPane.showMessageDialog(this.getView(), "Select directory for source files.");
- return null;
- }
-
// no such folder
if (!Files.exists(basePath)) {
try {
Files.createDirectories(basePath);
} catch (IOException e) {
- JOptionPane.showMessageDialog(this.getView(), "Can't create directory. " +
- ". Select a different one.");
+ JOptionPane.showMessageDialog(getView(), "Can't create directory. Select a different one.");
return null;
}
}
// not a directory
if (!Files.isDirectory(basePath)) {
- JOptionPane.showMessageDialog(this.getView(), basePath + " is not a valid directory.");
+ JOptionPane.showMessageDialog(getView(), basePath + " is not a valid directory.");
return null;
}
@@ -124,7 +117,8 @@ public class CgenTabController extends GeneratorsTabController {
public void showConfig(DataMap dataMap) {
if (dataMap != null) {
- projectController.fireDataMapDisplayEvent(new DataMapDisplayEvent(this.getView(), dataMap, dataMap.getDataChannelDescriptor()));
+ DataMapDisplayEvent event = new DataMapDisplayEvent(getView(), dataMap, dataMap.getDataChannelDescriptor());
+ getProjectController().fireDataMapDisplayEvent(event);
}
}
}
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/domain/DbImportTab.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/domain/DbImportTab.java
index 3b86719..40f6aff 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/domain/DbImportTab.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/domain/DbImportTab.java
@@ -18,6 +18,7 @@
****************************************************************/
package org.apache.cayenne.modeler.editor.dbimport.domain;
+import org.apache.cayenne.dbsync.reverse.dbimport.ReverseEngineering;
import org.apache.cayenne.modeler.ProjectController;
import org.apache.cayenne.modeler.editor.GeneratorsTab;
import org.apache.cayenne.modeler.editor.GeneratorsTabController;
@@ -27,7 +28,7 @@ import org.apache.cayenne.modeler.editor.GeneratorsTabController;
*/
public class DbImportTab extends GeneratorsTab {
- public DbImportTab(ProjectController projectController, GeneratorsTabController additionalTabController) {
+ public DbImportTab(ProjectController projectController, GeneratorsTabController<ReverseEngineering> additionalTabController) {
super(projectController, additionalTabController, "icon-dbi-runImport.png", "Run reverse engineering on selected datamaps.");
}
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/domain/DbImportTabController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/domain/DbImportTabController.java
index b5b9530..a45ef70 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/domain/DbImportTabController.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/domain/DbImportTabController.java
@@ -31,10 +31,10 @@ import org.apache.cayenne.modeler.event.DataMapDisplayEvent;
/**
* @since 4.1
*/
-public class DbImportTabController extends GeneratorsTabController {
+public class DbImportTabController extends GeneratorsTabController<ReverseEngineering> {
public DbImportTabController(ProjectController projectController) {
- super(ReverseEngineering.class, projectController);
+ super(projectController, ReverseEngineering.class, false);
this.view = new DbImportTab(projectController, this);
}
@@ -52,7 +52,8 @@ public class DbImportTabController extends GeneratorsTabController {
@Override
public void showConfig(DataMap dataMap) {
if (dataMap != null) {
- projectController.fireDataMapDisplayEvent(new DataMapDisplayEvent(this.getView(), dataMap, dataMap.getDataChannelDescriptor()));
+ DataMapDisplayEvent event = new DataMapDisplayEvent(getView(), dataMap, dataMap.getDataChannelDescriptor());
+ getProjectController().fireDataMapDisplayEvent(event);
}
}
}