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 2017/12/07 13:37:13 UTC
cayenne git commit: CAY-2388 Backport fix from master
Repository: cayenne
Updated Branches:
refs/heads/STABLE-4.0 6a6cd0bfb -> d0b88ba35
CAY-2388 Backport fix from master
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/d0b88ba3
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/d0b88ba3
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/d0b88ba3
Branch: refs/heads/STABLE-4.0
Commit: d0b88ba3564a798af5a1dae1af41707737fa9bac
Parents: 6a6cd0b
Author: Nikita Timofeev <st...@gmail.com>
Authored: Thu Dec 7 16:34:27 2017 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Thu Dec 7 16:34:27 2017 +0300
----------------------------------------------------------------------
docs/doc/src/main/resources/RELEASE-NOTES.txt | 3 +-
.../modeler/action/BaseViewEntityAction.java | 41 ++-
.../action/DbEntityCounterpartAction.java | 85 +-----
.../action/ObjEntityCounterpartAction.java | 6 +
.../action/ObjEntityToSuperEntityAction.java | 7 +-
.../cayenne/modeler/action/RemoveAction.java | 277 ++++++-------------
.../modeler/action/RemoveAttributeAction.java | 33 +--
.../undo/BaseRemovePropertyUndoableEdit.java | 54 ++++
.../modeler/undo/CayenneUndoableEdit.java | 1 +
.../modeler/undo/DbEntitySyncUndoableEdit.java | 12 +-
.../undo/RemoveAttributeUndoableEdit.java | 85 ++----
.../undo/RemoveRelationshipUndoableEdit.java | 31 +--
.../cayenne/modeler/util/CayenneAction.java | 44 +++
13 files changed, 260 insertions(+), 419 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/d0b88ba3/docs/doc/src/main/resources/RELEASE-NOTES.txt
----------------------------------------------------------------------
diff --git a/docs/doc/src/main/resources/RELEASE-NOTES.txt b/docs/doc/src/main/resources/RELEASE-NOTES.txt
index dfa0524..f933cf2 100644
--- a/docs/doc/src/main/resources/RELEASE-NOTES.txt
+++ b/docs/doc/src/main/resources/RELEASE-NOTES.txt
@@ -20,10 +20,9 @@ CAY-2365 SQLExec query tries to convert (unexpected) result set into objects
CAY-2367 ClassCastException reading object with an attribute of type 'char'
CAY-2368 ColumnSelect: Property.self() translates into wrong SQL code
CAY-2370 ValueObjectType for byte[] fails lookup
-CAY-2379 Modeler: Visualization issue after an undo action for a deleted ObjAttribute
CAY-2382 Lack of synchronization in DataContext serialization
-CAY-2384 Modeler: Visualization issue after an undo action for a deleted ObjRelationship
CAY-2387 Can't select byte[] property with ColumnSelect
+CAY-2388 Modeler: Visualization issues with undo/redo actions for attributes and relationships
----------------------------------
Release: 4.0.B2
http://git-wip-us.apache.org/repos/asf/cayenne/blob/d0b88ba3/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/BaseViewEntityAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/BaseViewEntityAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/BaseViewEntityAction.java
index be4f26b..091c6dc 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/BaseViewEntityAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/BaseViewEntityAction.java
@@ -24,7 +24,6 @@ import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.Entity;
import org.apache.cayenne.map.ObjEntity;
import org.apache.cayenne.modeler.Application;
-import org.apache.cayenne.modeler.ProjectController;
import org.apache.cayenne.modeler.event.EntityDisplayEvent;
import org.apache.cayenne.modeler.util.CayenneAction;
@@ -34,9 +33,7 @@ import java.awt.event.ActionEvent;
/**
* @since 4.0
*/
-public abstract class BaseViewEntityAction extends CayenneAction{
-
- protected ObjEntity objEntity;
+public abstract class BaseViewEntityAction extends CayenneAction {
abstract protected Entity getEntity();
@@ -53,31 +50,25 @@ public abstract class BaseViewEntityAction extends CayenneAction{
}
protected void viewEntity() {
- ProjectController mediator = getProjectController();
-
- objEntity = mediator.getCurrentObjEntity();
-
- if (objEntity == null) {
- return;
- }
-
Entity entity = getEntity();
-
if(entity != null) {
- TreePath path = DbEntityCounterpartAction.buildTreePath(entity);
- DbEntityCounterpartAction.editor().getProjectTreeView().getSelectionModel().setSelectionPath(path);
+ navigateToEntity(entity);
+ }
+ }
- EntityDisplayEvent event = new EntityDisplayEvent(
- DbEntityCounterpartAction.editor().getProjectTreeView(),
- entity,
- entity.getDataMap(),
- (DataChannelDescriptor) getProjectController().getProject().getRootNode());
+ public void navigateToEntity(Entity entity) {
+ TreePath path = buildTreePath(entity);
+ editor().getProjectTreeView().getSelectionModel().setSelectionPath(path);
- if (entity instanceof DbEntity) {
- mediator.fireDbEntityDisplayEvent(event);
- } else if (entity instanceof ObjEntity){
- mediator.fireObjEntityDisplayEvent(event);
- }
+ EntityDisplayEvent event = new EntityDisplayEvent(
+ editor().getProjectTreeView(),
+ entity,
+ entity.getDataMap(),
+ (DataChannelDescriptor) getProjectController().getProject().getRootNode());
+ if (entity instanceof DbEntity) {
+ getProjectController().fireDbEntityDisplayEvent(event);
+ } else if (entity instanceof ObjEntity){
+ getProjectController().fireObjEntityDisplayEvent(event);
}
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/d0b88ba3/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DbEntityCounterpartAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DbEntityCounterpartAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DbEntityCounterpartAction.java
index 35cf7f5..700b951 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DbEntityCounterpartAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DbEntityCounterpartAction.java
@@ -19,24 +19,14 @@
package org.apache.cayenne.modeler.action;
-import java.awt.event.ActionEvent;
import java.util.Iterator;
-import javax.swing.tree.TreePath;
-
-import org.apache.cayenne.configuration.DataChannelDescriptor;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.Entity;
import org.apache.cayenne.map.ObjEntity;
import org.apache.cayenne.modeler.Application;
-import org.apache.cayenne.modeler.CayenneModelerFrame;
-import org.apache.cayenne.modeler.ProjectController;
-import org.apache.cayenne.modeler.ProjectTreeModel;
-import org.apache.cayenne.modeler.editor.EditorView;
-import org.apache.cayenne.modeler.event.EntityDisplayEvent;
-import org.apache.cayenne.modeler.util.CayenneAction;
-public class DbEntityCounterpartAction extends CayenneAction {
+public class DbEntityCounterpartAction extends BaseViewEntityAction {
public static String getActionName() {
return "View related ObjEntity";
@@ -50,78 +40,19 @@ public class DbEntityCounterpartAction extends CayenneAction {
return "icon-move_up.png";
}
- /**
- * @see org.apache.cayenne.modeler.util.CayenneAction#performAction(ActionEvent)
- */
- public void performAction(ActionEvent e) {
- viewCounterpartEntity();
- }
-
- protected void viewCounterpartEntity() {
- ProjectController mediator = getProjectController();
-
- DbEntity dbEntity = mediator.getCurrentDbEntity();
-
+ @Override
+ protected Entity getEntity() {
+ DbEntity dbEntity = getProjectController().getCurrentDbEntity();
if (dbEntity == null) {
- return;
+ return null;
}
-
+
Iterator<ObjEntity> it = dbEntity.getDataMap().getMappedEntities(dbEntity).iterator();
if (!it.hasNext()) {
- return;
+ return null;
}
- ObjEntity entity = it.next();
- viewCounterpartEntity(entity);
+ return it.next();
}
- public void viewCounterpartEntity(ObjEntity entity) {
- TreePath path = buildTreePath(entity);
- editor().getProjectTreeView().getSelectionModel().setSelectionPath(path);
-
- EntityDisplayEvent event = new EntityDisplayEvent(
- editor().getProjectTreeView(),
- entity,
- entity.getDataMap(),
- (DataChannelDescriptor) getProjectController().getProject().getRootNode());
- getProjectController().fireObjEntityDisplayEvent(event);
- }
-
- public static EditorView editor() {
- return ((CayenneModelerFrame) Application
- .getInstance()
- .getFrameController()
- .getView()).getView();
- }
-
- /**
- * Builds a tree path for a given entity. Urgent for later selection.
- *
- * @param entity to build path for
- * @return tree path
- */
- public static TreePath buildTreePath(Entity entity) {
- DataChannelDescriptor domain = (DataChannelDescriptor) Application
- .getInstance()
- .getProject()
- .getRootNode();
-
- Object[] path = new Object[] {domain, entity.getDataMap(), entity};
-
- Object[] mutableTreeNodes = new Object[path.length];
- mutableTreeNodes[0] = ((ProjectTreeModel) editor().getProjectTreeView().getModel())
- .getRootNode();
-
- Object[] helper;
- for (int i = 1; i < path.length; i++) {
- helper = new Object[i];
- for (int j = 0; j < i;) {
- helper[j] = path[++j];
- }
- mutableTreeNodes[i] = ((ProjectTreeModel) editor()
- .getProjectTreeView()
- .getModel()).getNodeForObjectPath(helper);
- }
- return new TreePath(mutableTreeNodes);
- }
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/d0b88ba3/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ObjEntityCounterpartAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ObjEntityCounterpartAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ObjEntityCounterpartAction.java
index 7126a0a..615ff93 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ObjEntityCounterpartAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ObjEntityCounterpartAction.java
@@ -20,6 +20,7 @@
package org.apache.cayenne.modeler.action;
import org.apache.cayenne.map.Entity;
+import org.apache.cayenne.map.ObjEntity;
import org.apache.cayenne.modeler.Application;
public class ObjEntityCounterpartAction extends BaseViewEntityAction {
@@ -38,6 +39,11 @@ public class ObjEntityCounterpartAction extends BaseViewEntityAction {
@Override
protected Entity getEntity() {
+ ObjEntity objEntity = getProjectController().getCurrentObjEntity();
+ if (objEntity == null) {
+ return null;
+ }
return objEntity.getDbEntity();
}
+
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/d0b88ba3/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ObjEntityToSuperEntityAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ObjEntityToSuperEntityAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ObjEntityToSuperEntityAction.java
index eb0b839..16550ee 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ObjEntityToSuperEntityAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ObjEntityToSuperEntityAction.java
@@ -20,6 +20,7 @@
package org.apache.cayenne.modeler.action;
import org.apache.cayenne.map.Entity;
+import org.apache.cayenne.map.ObjEntity;
import org.apache.cayenne.modeler.Application;
/**
@@ -37,6 +38,10 @@ public class ObjEntityToSuperEntityAction extends BaseViewEntityAction {
@Override
protected Entity getEntity() {
- return super.objEntity.getSuperEntity();
+ ObjEntity objEntity = getProjectController().getCurrentObjEntity();
+ if (objEntity == null) {
+ return null;
+ }
+ return objEntity.getSuperEntity();
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/d0b88ba3/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveAction.java
index 7c36701..c39bde1 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveAction.java
@@ -100,9 +100,7 @@ public class RemoveAction extends CayenneAction {
@Override
public KeyStroke getAcceleratorKey() {
- return KeyStroke.getKeyStroke(KeyEvent.VK_D, Toolkit
- .getDefaultToolkit()
- .getMenuShortcutKeyMask());
+ return KeyStroke.getKeyStroke(KeyEvent.VK_D, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask());
}
/**
@@ -127,172 +125,122 @@ public class RemoveAction extends CayenneAction {
public void performAction(ActionEvent e, boolean allowAsking) {
ProjectController mediator = getProjectController();
-
ConfirmRemoveDialog dialog = getConfirmDeleteDialog(allowAsking);
if (mediator.getCurrentObjEntity() != null) {
- if (dialog
- .shouldDelete("ObjEntity", mediator.getCurrentObjEntity().getName())) {
- application.getUndoManager().addEdit(
- new RemoveUndoableEdit(mediator.getCurrentDataMap(), mediator
- .getCurrentObjEntity()));
- removeObjEntity(mediator.getCurrentDataMap(), mediator
- .getCurrentObjEntity());
+ if (dialog.shouldDelete("ObjEntity", mediator.getCurrentObjEntity().getName())) {
+
+ application.getUndoManager()
+ .addEdit(new RemoveUndoableEdit(mediator.getCurrentDataMap(), mediator.getCurrentObjEntity()));
+ removeObjEntity(mediator.getCurrentDataMap(), mediator.getCurrentObjEntity());
}
- }
- else if (mediator.getCurrentDbEntity() != null) {
+ } else if (mediator.getCurrentDbEntity() != null) {
if (dialog.shouldDelete("DbEntity", mediator.getCurrentDbEntity().getName())) {
- application.getUndoManager().addEdit(
- new RemoveUndoableEdit(mediator.getCurrentDataMap(), mediator
- .getCurrentDbEntity()));
- removeDbEntity(mediator.getCurrentDataMap(), mediator
- .getCurrentDbEntity());
+
+ application.getUndoManager()
+ .addEdit(new RemoveUndoableEdit(mediator.getCurrentDataMap(), mediator.getCurrentDbEntity()));
+ removeDbEntity(mediator.getCurrentDataMap(), mediator.getCurrentDbEntity());
}
- }
- else if (mediator.getCurrentQuery() != null) {
+ } else if (mediator.getCurrentQuery() != null) {
if (dialog.shouldDelete("query", mediator.getCurrentQuery().getName())) {
- application.getUndoManager().addEdit(
- new RemoveUndoableEdit(mediator.getCurrentDataMap(), mediator
- .getCurrentQuery()));
+
+ application.getUndoManager()
+ .addEdit(new RemoveUndoableEdit(mediator.getCurrentDataMap(), mediator.getCurrentQuery()));
removeQuery(mediator.getCurrentDataMap(), mediator.getCurrentQuery());
}
- }
- else if (mediator.getCurrentProcedure() != null) {
- if (dialog
- .shouldDelete("procedure", mediator.getCurrentProcedure().getName())) {
-
- application.getUndoManager().addEdit(
- new RemoveUndoableEdit(mediator.getCurrentDataMap(), mediator
- .getCurrentProcedure()));
-
- removeProcedure(mediator.getCurrentDataMap(), mediator
- .getCurrentProcedure());
+ } else if (mediator.getCurrentProcedure() != null) {
+ if (dialog.shouldDelete("procedure", mediator.getCurrentProcedure().getName())) {
+ application.getUndoManager()
+ .addEdit(new RemoveUndoableEdit(mediator.getCurrentDataMap(), mediator.getCurrentProcedure()));
+ removeProcedure(mediator.getCurrentDataMap(), mediator.getCurrentProcedure());
}
- }
- else if (mediator.getCurrentEmbeddable() != null) {
- if (dialog.shouldDelete("embeddable", mediator
- .getCurrentEmbeddable()
- .getClassName())) {
-
- application.getUndoManager().addEdit(
- new RemoveUndoableEdit(mediator.getCurrentDataMap(), mediator
- .getCurrentEmbeddable()));
+ } else if (mediator.getCurrentEmbeddable() != null) {
+ if (dialog.shouldDelete("embeddable", mediator.getCurrentEmbeddable().getClassName())) {
- removeEmbeddable(mediator.getCurrentDataMap(), mediator
- .getCurrentEmbeddable());
+ application.getUndoManager()
+ .addEdit(new RemoveUndoableEdit(mediator.getCurrentDataMap(), mediator.getCurrentEmbeddable()));
+ removeEmbeddable(mediator.getCurrentDataMap(), mediator.getCurrentEmbeddable());
}
- }
- else if (mediator.getCurrentDataMap() != null) {
+ } else if (mediator.getCurrentDataMap() != null) {
if (dialog.shouldDelete("data map", mediator.getCurrentDataMap().getName())) {
// In context of Data node just remove from Data Node
if (mediator.getCurrentDataNode() != null) {
- application.getUndoManager().addEdit(
- new RemoveUndoableEdit(application, mediator
- .getCurrentDataNode(), mediator.getCurrentDataMap()));
-
- removeDataMapFromDataNode(mediator.getCurrentDataNode(), mediator
- .getCurrentDataMap());
-
- }
- else {
+ application.getUndoManager()
+ .addEdit(new RemoveUndoableEdit(application, mediator.getCurrentDataNode(),
+ mediator.getCurrentDataMap()));
+ removeDataMapFromDataNode(mediator.getCurrentDataNode(), mediator.getCurrentDataMap());
+ } else {
// Not under Data Node, remove completely
- application.getUndoManager().addEdit(
- new RemoveUndoableEdit(application, mediator
- .getCurrentDataMap()));
-
+ application.getUndoManager()
+ .addEdit(new RemoveUndoableEdit(application, mediator.getCurrentDataMap()));
removeDataMap(mediator.getCurrentDataMap());
-
}
}
- }
- else if (mediator.getCurrentDataNode() != null) {
+ } else if (mediator.getCurrentDataNode() != null) {
if (dialog.shouldDelete("data node", mediator.getCurrentDataNode().getName())) {
- application
- .getUndoManager()
- .addEdit(
- new RemoveUndoableEdit(application, mediator
- .getCurrentDataNode()));
+ application.getUndoManager()
+ .addEdit(new RemoveUndoableEdit(application, mediator.getCurrentDataNode()));
removeDataNode(mediator.getCurrentDataNode());
}
- }
-
- else if (mediator.getCurrentPaths() != null) { // multiple deletion
+ } else if (mediator.getCurrentPaths() != null) { // multiple deletion
if (dialog.shouldDelete("selected objects")) {
+
Object[] paths = mediator.getCurrentPaths();
Object parentPath = mediator.getCurrentParentPath();
CompoundEdit compoundEdit = new RemoveCompoundUndoableEdit();
-
for (Object path : paths) {
compoundEdit.addEdit(removeLastPathComponent(path, parentPath));
}
compoundEdit.end();
application.getUndoManager().addEdit(compoundEdit);
-
}
} else if(mediator.getCurrentCallbackMethods().length > 0) {
removeMethods(mediator, dialog, getProjectController().getCurrentCallbackMethods());
- }
- else if(mediator.getCurrentObjRelationships().length > 0) {
+ } else if(mediator.getCurrentObjRelationships().length > 0) {
removeObjRelationships(mediator, dialog, getProjectController().getCurrentObjRelationships());
- }
- else if(mediator.getCurrentDbRelationships().length > 0) {
+ } else if(mediator.getCurrentDbRelationships().length > 0) {
removeDBRelationships(mediator, dialog, getProjectController().getCurrentDbRelationships());
- }
- else if(mediator.getCurrentObjAttributes().length > 0) {
+ } else if(mediator.getCurrentObjAttributes().length > 0) {
removeObjAttributes(mediator, dialog, getProjectController().getCurrentObjAttributes());
- }
- else if(mediator.getCurrentEmbAttributes().length > 0) {
+ } else if(mediator.getCurrentEmbAttributes().length > 0) {
removeEmbAttributes(mediator, dialog, getProjectController().getCurrentEmbAttributes());
- }
- else if(mediator.getCurrentDbAttributes().length > 0) {
+ } else if(mediator.getCurrentDbAttributes().length > 0) {
removeDbAttributes(mediator, dialog, getProjectController().getCurrentDbAttributes());
- }
- else if(mediator.getCurrentProcedureParameters().length > 0) {
+ } else if(mediator.getCurrentProcedureParameters().length > 0) {
removeProcedureParameters(mediator.getCurrentProcedure(), mediator.getCurrentProcedureParameters());
}
}
- private void removeProcedureParameters(
- Procedure procedure,
- ProcedureParameter[] parameters) {
+ private void removeProcedureParameters(Procedure procedure, ProcedureParameter[] parameters) {
ProjectController mediator = getProjectController();
-
for (ProcedureParameter parameter : parameters) {
-
procedure.removeCallParameter(parameter.getName());
-
- ProcedureParameterEvent e = new ProcedureParameterEvent(Application
- .getFrame(), parameter, MapEvent.REMOVE);
-
+ ProcedureParameterEvent e = new ProcedureParameterEvent(Application.getFrame(), parameter, MapEvent.REMOVE);
mediator.fireProcedureParameterEvent(e);
}
}
- private void removeEmbAttributes(ProjectController mediator,
- ConfirmRemoveDialog dialog,
- EmbeddableAttribute[] embAttrs) {
+ private void removeEmbAttributes(ProjectController mediator, ConfirmRemoveDialog dialog,
+ EmbeddableAttribute[] embAttrs) {
if (embAttrs != null && embAttrs.length > 0) {
- if ((embAttrs.length == 1 && dialog.shouldDelete("DbAttribute", embAttrs[0]
- .getName()))
+ if ((embAttrs.length == 1 && dialog.shouldDelete("DbAttribute", embAttrs[0].getName()))
|| (embAttrs.length > 1 && dialog.shouldDelete("selected DbAttributes"))) {
Embeddable embeddable = mediator.getCurrentEmbeddable();
- application.getUndoManager().addEdit(
- new RemoveAttributeUndoableEdit(
- embeddable,
- embAttrs));
+ application.getUndoManager()
+ .addEdit(new RemoveAttributeUndoableEdit(embeddable, embAttrs));
for (EmbeddableAttribute attrib : embAttrs) {
embeddable.removeAttribute(attrib.getName());
- EmbeddableAttributeEvent e = new EmbeddableAttributeEvent(Application
- .getFrame(), attrib, embeddable, MapEvent.REMOVE);
+ EmbeddableAttributeEvent e = new EmbeddableAttributeEvent(Application.getFrame(),
+ attrib, embeddable, MapEvent.REMOVE);
mediator.fireEmbeddableAttributeEvent(e);
}
@@ -304,28 +252,17 @@ public class RemoveAction extends CayenneAction {
private void removeObjAttributes(ProjectController mediator,
ConfirmRemoveDialog dialog, ObjAttribute[] objAttrs) {
if (objAttrs != null && objAttrs.length > 0) {
- if ((objAttrs.length == 1 && dialog.shouldDelete("DbAttribute", objAttrs[0]
- .getName()))
+ if ((objAttrs.length == 1 && dialog.shouldDelete("DbAttribute", objAttrs[0].getName()))
|| (objAttrs.length > 1 && dialog.shouldDelete("selected DbAttributes"))) {
ObjEntity entity = mediator.getCurrentObjEntity();
- application.getUndoManager().addEdit(
- new RemoveAttributeUndoableEdit(
- (DataChannelDescriptor)mediator.getProject().getRootNode(),
- mediator.getCurrentDataMap(),
- entity,
- objAttrs));
+ application.getUndoManager()
+ .addEdit(new RemoveAttributeUndoableEdit(entity, objAttrs));
for (ObjAttribute attrib : objAttrs) {
entity.removeAttribute(attrib.getName());
-
- AttributeEvent e = new AttributeEvent(
- Application.getFrame(),
- attrib,
- entity,
- MapEvent.REMOVE);
-
+ AttributeEvent e = new AttributeEvent(Application.getFrame(), attrib, entity, MapEvent.REMOVE);
mediator.fireObjAttributeEvent(e);
}
@@ -334,32 +271,19 @@ public class RemoveAction extends CayenneAction {
}
}
- private void removeDbAttributes(ProjectController mediator,
- ConfirmRemoveDialog dialog,
- DbAttribute[] dbAttrs) {
+ private void removeDbAttributes(ProjectController mediator, ConfirmRemoveDialog dialog, DbAttribute[] dbAttrs) {
if (dbAttrs != null && dbAttrs.length > 0) {
- if ((dbAttrs.length == 1 && dialog.shouldDelete("DbAttribute", dbAttrs[0]
- .getName()))
+ if ((dbAttrs.length == 1 && dialog.shouldDelete("DbAttribute", dbAttrs[0].getName()))
|| (dbAttrs.length > 1 && dialog.shouldDelete("selected DbAttributes"))) {
DbEntity entity = mediator.getCurrentDbEntity();
- application.getUndoManager().addEdit(
- new RemoveAttributeUndoableEdit(
- (DataChannelDescriptor)mediator.getProject().getRootNode(),
- mediator.getCurrentDataMap(),
- entity,
- dbAttrs));
+ application.getUndoManager()
+ .addEdit(new RemoveAttributeUndoableEdit(entity, dbAttrs));
for (DbAttribute attrib : dbAttrs) {
entity.removeAttribute(attrib.getName());
-
- AttributeEvent e = new AttributeEvent(
- Application.getFrame(),
- attrib,
- entity,
- MapEvent.REMOVE);
-
+ AttributeEvent e = new AttributeEvent(Application.getFrame(), attrib, entity, MapEvent.REMOVE);
mediator.fireDbAttributeEvent(e);
}
@@ -368,53 +292,40 @@ public class RemoveAction extends CayenneAction {
}
}
- private void removeDBRelationships(ProjectController mediator,
- ConfirmRemoveDialog dialog,
- DbRelationship[] dbRels) {
+ private void removeDBRelationships(ProjectController mediator, ConfirmRemoveDialog dialog,
+ DbRelationship[] dbRels) {
if (dbRels != null && dbRels.length > 0) {
- if ((dbRels.length == 1 && dialog.shouldDelete(
- "DbRelationship", dbRels[0].getName()))
- || (dbRels.length > 1 && dialog
- .shouldDelete("selected DbRelationships"))) {
+ if ((dbRels.length == 1 && dialog.shouldDelete("DbRelationship", dbRels[0].getName()))
+ || (dbRels.length > 1 && dialog.shouldDelete("selected DbRelationships"))) {
DbEntity entity = mediator.getCurrentDbEntity();
for (DbRelationship rel : dbRels) {
entity.removeRelationship(rel.getName());
-
- RelationshipEvent e = new RelationshipEvent(Application.getFrame(),
- rel, entity, MapEvent.REMOVE);
+ RelationshipEvent e = new RelationshipEvent(Application.getFrame(), rel, entity, MapEvent.REMOVE);
mediator.fireDbRelationshipEvent(e);
}
ProjectUtil.cleanObjMappings(mediator.getCurrentDataMap());
-
- Application.getInstance().getUndoManager().addEdit(
- new RemoveRelationshipUndoableEdit(entity, dbRels));
+ Application.getInstance().getUndoManager().addEdit(new RemoveRelationshipUndoableEdit(entity, dbRels));
}
}
}
- private void removeObjRelationships(ProjectController mediator,
- ConfirmRemoveDialog dialog,
- ObjRelationship[] rels) {
- if ((rels.length == 1 && dialog.shouldDelete("ObjRelationship",
- rels[0].getName()))
- || (rels.length > 1 && dialog
- .shouldDelete("selected ObjRelationships"))) {
+ private void removeObjRelationships(ProjectController mediator, ConfirmRemoveDialog dialog,
+ ObjRelationship[] rels) {
+ if ((rels.length == 1 && dialog.shouldDelete("ObjRelationship", rels[0].getName()))
+ || (rels.length > 1 && dialog.shouldDelete("selected ObjRelationships"))) {
ObjEntity entity = mediator.getCurrentObjEntity();
for (ObjRelationship rel : rels) {
entity.removeRelationship(rel.getName());
- RelationshipEvent e = new RelationshipEvent(Application.getFrame(),
- rel, entity, MapEvent.REMOVE);
+ RelationshipEvent e = new RelationshipEvent(Application.getFrame(), rel, entity, MapEvent.REMOVE);
mediator.fireObjRelationshipEvent(e);
}
- Application.getInstance().getUndoManager().addEdit(
- new RemoveRelationshipUndoableEdit(entity, rels));
+ Application.getInstance().getUndoManager().addEdit(new RemoveRelationshipUndoableEdit(entity, rels));
}
}
- private void removeMethods(ProjectController mediator,
- ConfirmRemoveDialog dialog, ObjCallbackMethod[] methods) {
+ private void removeMethods(ProjectController mediator, ConfirmRemoveDialog dialog, ObjCallbackMethod[] methods) {
CallbackMap callbackMap = mediator.getCurrentObjEntity().getCallbackMap();
CallbackType callbackType = mediator.getCurrentCallbackType();
@@ -423,25 +334,21 @@ public class RemoveAction extends CayenneAction {
for (ObjCallbackMethod callbackMethod : methods) {
callbackMap.getCallbackDescriptor(callbackType.getType()).removeCallbackMethod(callbackMethod.getName());
- CallbackMethodEvent ce = new CallbackMethodEvent(
- this,
- null,
+ CallbackMethodEvent ce = new CallbackMethodEvent(this, null,
callbackMethod.getName(),
MapEvent.REMOVE);
mediator.fireCallbackMethodEvent(ce);
}
- Application.getInstance().getUndoManager().addEdit(
- new RemoveCallbackMethodUndoableEdit(callbackType, methods));
+ Application.getInstance().getUndoManager()
+ .addEdit(new RemoveCallbackMethodUndoableEdit(callbackType, methods));
}
}
public void removeDataMap(DataMap map) {
ProjectController mediator = getProjectController();
- DataChannelDescriptor domain = (DataChannelDescriptor) mediator
- .getProject()
- .getRootNode();
+ DataChannelDescriptor domain = (DataChannelDescriptor) mediator.getProject().getRootNode();
DataMapEvent e = new DataMapEvent(Application.getFrame(), map, MapEvent.REMOVE);
e.setDomain((DataChannelDescriptor) mediator.getProject().getRootNode());
@@ -451,11 +358,9 @@ public class RemoveAction extends CayenneAction {
Collection<URL> unusedResources = getCurrentProject().getUnusedResources();
unusedResources.add(mapURL);
}
-
- Iterator<DataNodeDescriptor> iterator = domain.getNodeDescriptors().iterator();
- while(iterator.hasNext()){
- DataNodeDescriptor node = iterator.next();
- if(node.getDataMapNames().contains(map.getName())){
+
+ for (DataNodeDescriptor node : domain.getNodeDescriptors()) {
+ if (node.getDataMapNames().contains(map.getName())) {
removeDataMapFromDataNode(node, map);
}
}
@@ -465,9 +370,7 @@ public class RemoveAction extends CayenneAction {
public void removeDataNode(DataNodeDescriptor node) {
ProjectController mediator = getProjectController();
- DataChannelDescriptor domain = (DataChannelDescriptor) mediator
- .getProject()
- .getRootNode();
+ DataChannelDescriptor domain = (DataChannelDescriptor) mediator.getProject().getRootNode();
DataNodeEvent e = new DataNodeEvent(Application.getFrame(), node, MapEvent.REMOVE);
e.setDomain((DataChannelDescriptor) mediator.getProject().getRootNode());
@@ -507,10 +410,7 @@ public class RemoveAction extends CayenneAction {
public void removeProcedure(DataMap map, Procedure procedure) {
ProjectController mediator = getProjectController();
- ProcedureEvent e = new ProcedureEvent(
- Application.getFrame(),
- procedure,
- MapEvent.REMOVE);
+ ProcedureEvent e = new ProcedureEvent(Application.getFrame(), procedure, MapEvent.REMOVE);
e.setDomain((DataChannelDescriptor) mediator.getProject().getRootNode());
map.removeProcedure(procedure.getName());
@@ -537,9 +437,7 @@ public class RemoveAction extends CayenneAction {
if (!QueryDescriptor.EJBQL_QUERY.equals(query.getType())) {
Object root = query.getRoot();
- if (root == entity
- || (root instanceof String && root.toString().equals(
- entity.getName()))) {
+ if (root == entity || (root instanceof String && root.toString().equals(entity.getName()))) {
removeQuery(map, query);
}
}
@@ -549,10 +447,7 @@ public class RemoveAction extends CayenneAction {
public void removeEmbeddable(DataMap map, Embeddable embeddable) {
ProjectController mediator = getProjectController();
- EmbeddableEvent e = new EmbeddableEvent(
- Application.getFrame(),
- embeddable,
- MapEvent.REMOVE);
+ EmbeddableEvent e = new EmbeddableEvent(Application.getFrame(), embeddable, MapEvent.REMOVE);
e.setDomain((DataChannelDescriptor) mediator.getProject().getRootNode());
map.removeEmbeddable(embeddable.getClassName());
http://git-wip-us.apache.org/repos/asf/cayenne/blob/d0b88ba3/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveAttributeAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveAttributeAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveAttributeAction.java
index 769b2a0..66cb396 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveAttributeAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveAttributeAction.java
@@ -44,12 +44,9 @@ import org.apache.cayenne.modeler.util.ProjectUtil;
/**
* Removes currently selected attribute from either the DbEntity or ObjEntity.
- *
*/
public class RemoveAttributeAction extends RemoveAction implements MultipleObjectsAction {
-
-
private final static String ACTION_NAME = "Remove Attribute";
/**
@@ -75,11 +72,7 @@ public class RemoveAttributeAction extends RemoveAction implements MultipleObjec
*/
@Override
public boolean enableForPath(ConfigurationNode object) {
- if (object == null) {
- return false;
- }
-
- return object instanceof Attribute;
+ return object != null && object instanceof Attribute;
}
@Override
@@ -107,37 +100,25 @@ public class RemoveAttributeAction extends RemoveAction implements MultipleObjec
removeEmbeddableAttributes(embeddable, embAttrs);
}
- }
- else if (objAttrs != null && objAttrs.length > 0) {
+ } else if (objAttrs != null && objAttrs.length > 0) {
if ((objAttrs.length == 1 && dialog.shouldDelete("ObjAttribute", objAttrs[0]
.getName()))
|| (objAttrs.length > 1 && dialog.shouldDelete("selected ObjAttributes"))) {
ObjEntity entity = mediator.getCurrentObjEntity();
- application.getUndoManager().addEdit(
- new RemoveAttributeUndoableEdit(
- (DataChannelDescriptor)mediator.getProject().getRootNode(),
- mediator.getCurrentDataMap(),
- entity,
- objAttrs));
+ application.getUndoManager().addEdit(new RemoveAttributeUndoableEdit(entity, objAttrs));
removeObjAttributes(entity, objAttrs);
}
- }
- else if (dbAttrs != null && dbAttrs.length > 0) {
+ } else if (dbAttrs != null && dbAttrs.length > 0) {
if ((dbAttrs.length == 1 && dialog.shouldDelete("DbAttribute", dbAttrs[0]
.getName()))
|| (dbAttrs.length > 1 && dialog.shouldDelete("selected DbAttributes"))) {
DbEntity entity = mediator.getCurrentDbEntity();
- application.getUndoManager().addEdit(
- new RemoveAttributeUndoableEdit(
- (DataChannelDescriptor)mediator.getProject().getRootNode(),
- mediator.getCurrentDataMap(),
- entity,
- dbAttrs));
+ application.getUndoManager().addEdit(new RemoveAttributeUndoableEdit(entity, dbAttrs));
removeDbAttributes(mediator.getCurrentDataMap(), entity, dbAttrs);
}
@@ -181,9 +162,7 @@ public class RemoveAttributeAction extends RemoveAction implements MultipleObjec
}
}
- public void removeEmbeddableAttributes(
- Embeddable embeddable,
- EmbeddableAttribute[] attrs) {
+ public void removeEmbeddableAttributes(Embeddable embeddable, EmbeddableAttribute[] attrs) {
ProjectController mediator = getProjectController();
for (EmbeddableAttribute attrib : attrs) {
http://git-wip-us.apache.org/repos/asf/cayenne/blob/d0b88ba3/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/BaseRemovePropertyUndoableEdit.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/BaseRemovePropertyUndoableEdit.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/BaseRemovePropertyUndoableEdit.java
new file mode 100644
index 0000000..30a9270
--- /dev/null
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/BaseRemovePropertyUndoableEdit.java
@@ -0,0 +1,54 @@
+/*****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ ****************************************************************/
+
+package org.apache.cayenne.modeler.undo;
+
+import org.apache.cayenne.configuration.DataChannelDescriptor;
+import org.apache.cayenne.map.DbEntity;
+import org.apache.cayenne.map.Embeddable;
+import org.apache.cayenne.map.ObjEntity;
+import org.apache.cayenne.modeler.action.ObjEntityCounterpartAction;
+import org.apache.cayenne.modeler.event.EmbeddableDisplayEvent;
+
+/**
+ * @since 4.1
+ */
+public abstract class BaseRemovePropertyUndoableEdit extends CayenneUndoableEdit {
+
+ protected ObjEntity objEntity;
+ protected DbEntity dbEntity;
+ protected Embeddable embeddable;
+
+ protected void focusObjEntity(){
+ actionManager.getAction(ObjEntityCounterpartAction.class).navigateToEntity(objEntity);
+ }
+
+ protected void focusDBEntity(){
+ actionManager.getAction(ObjEntityCounterpartAction.class).navigateToEntity(dbEntity);
+ }
+
+ protected void focusEmbeddable() {
+ controller.fireEmbeddableDisplayEvent(new EmbeddableDisplayEvent(
+ this,
+ embeddable,
+ embeddable.getDataMap(),
+ (DataChannelDescriptor) controller.getProject().getRootNode()));
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/d0b88ba3/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/CayenneUndoableEdit.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/CayenneUndoableEdit.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/CayenneUndoableEdit.java
index 6bd8527..659f236 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/CayenneUndoableEdit.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/CayenneUndoableEdit.java
@@ -43,4 +43,5 @@ public abstract class CayenneUndoableEdit extends AbstractUndoableEdit {
public boolean canUndo() {
return true;
}
+
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/d0b88ba3/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/DbEntitySyncUndoableEdit.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/DbEntitySyncUndoableEdit.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/DbEntitySyncUndoableEdit.java
index 20e1749..9d8d258 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/DbEntitySyncUndoableEdit.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/DbEntitySyncUndoableEdit.java
@@ -60,9 +60,7 @@ public class DbEntitySyncUndoableEdit extends CompoundEdit {
}
public void objRelationshipAdded(ObjRelationship rel) {
- addEdit(new CreateRelationshipUndoableEdit(entity, new ObjRelationship[] {
- rel
- }));
+ addEdit(new CreateRelationshipUndoableEdit(entity, new ObjRelationship[] {rel}));
}
public void objAttributeAdded(ObjAttribute attr) {
@@ -86,13 +84,7 @@ public class DbEntitySyncUndoableEdit extends CompoundEdit {
for (DbAttribute da : dbAttrs) {
ObjAttribute oa = entity.getAttributeForDbAttribute(da);
if (oa != null) {
- addEdit(new RemoveAttributeUndoableEdit(
- domain,
- map,
- entity,
- new ObjAttribute[] {
- oa
- }));
+ addEdit(new RemoveAttributeUndoableEdit(entity, new ObjAttribute[] {oa}));
}
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/d0b88ba3/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/RemoveAttributeUndoableEdit.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/RemoveAttributeUndoableEdit.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/RemoveAttributeUndoableEdit.java
index 5db0c52..5ef1497 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/RemoveAttributeUndoableEdit.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/RemoveAttributeUndoableEdit.java
@@ -21,8 +21,6 @@ package org.apache.cayenne.modeler.undo;
import javax.swing.undo.CannotRedoException;
import javax.swing.undo.CannotUndoException;
-import org.apache.cayenne.configuration.DataChannelDescriptor;
-import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.Embeddable;
@@ -30,131 +28,88 @@ import org.apache.cayenne.map.EmbeddableAttribute;
import org.apache.cayenne.map.ObjAttribute;
import org.apache.cayenne.map.ObjEntity;
import org.apache.cayenne.modeler.action.CreateAttributeAction;
-import org.apache.cayenne.modeler.action.DbEntityCounterpartAction;
import org.apache.cayenne.modeler.action.RemoveAttributeAction;
-import org.apache.cayenne.modeler.event.EmbeddableDisplayEvent;
-import org.apache.cayenne.modeler.event.EntityDisplayEvent;
-public class RemoveAttributeUndoableEdit extends CayenneUndoableEdit {
-
- private DataChannelDescriptor domain;
- private DataMap dataMap;
+public class RemoveAttributeUndoableEdit extends BaseRemovePropertyUndoableEdit {
private DbAttribute[] dbAttributes;
private ObjAttribute[] objAttributes;
-
- private ObjEntity objEntity;
- private DbEntity dbEntity;
-
- private Embeddable embeddable;
private EmbeddableAttribute[] embeddableAttrs;
- public RemoveAttributeUndoableEdit(Embeddable embeddable,
- EmbeddableAttribute[] embeddableAttrs) {
+ public RemoveAttributeUndoableEdit(Embeddable embeddable, EmbeddableAttribute[] embeddableAttributes) {
super();
this.embeddable = embeddable;
- this.embeddableAttrs = embeddableAttrs;
+ this.embeddableAttrs = embeddableAttributes;
}
- public RemoveAttributeUndoableEdit(DataChannelDescriptor domain, DataMap dataMap,
- ObjEntity entity, ObjAttribute[] attribs) {
+ public RemoveAttributeUndoableEdit(ObjEntity entity, ObjAttribute[] objAttributes) {
this.objEntity = entity;
- this.objAttributes = attribs;
- this.domain = domain;
- this.dataMap = dataMap;
+ this.objAttributes = objAttributes;
}
- public RemoveAttributeUndoableEdit(DataChannelDescriptor domain, DataMap dataMap,
- DbEntity entity, DbAttribute[] attribs) {
+ public RemoveAttributeUndoableEdit(DbEntity entity, DbAttribute[] dbAttributes) {
this.dbEntity = entity;
- this.dbAttributes = attribs;
- this.domain = domain;
- this.dataMap = dataMap;
+ this.dbAttributes = dbAttributes;
}
@Override
public void redo() throws CannotRedoException {
- RemoveAttributeAction action = actionManager
- .getAction(RemoveAttributeAction.class);
+ RemoveAttributeAction action = actionManager.getAction(RemoveAttributeAction.class);
if (objEntity != null) {
action.removeObjAttributes(objEntity, objAttributes);
- controller.fireObjEntityDisplayEvent(new EntityDisplayEvent(
- this,
- objEntity,
- dataMap,
- domain));
+ focusObjEntity();
}
if (dbEntity != null) {
action.removeDbAttributes(dbEntity.getDataMap(), dbEntity, dbAttributes);
- controller.fireDbEntityDisplayEvent(new EntityDisplayEvent(
- this,
- dbEntity,
- dataMap,
- domain));
+ focusDBEntity();
}
if (embeddable != null) {
action.removeEmbeddableAttributes(embeddable, embeddableAttrs);
- controller.fireEmbeddableDisplayEvent(new EmbeddableDisplayEvent(
- this,
- embeddable,
- dataMap,
- domain));
+ focusEmbeddable();
}
}
@Override
public void undo() throws CannotUndoException {
-
- CreateAttributeAction action = actionManager
- .getAction(CreateAttributeAction.class);
+ CreateAttributeAction action = actionManager.getAction(CreateAttributeAction.class);
if (objEntity != null) {
for (ObjAttribute attr : objAttributes) {
- action.createObjAttribute(dataMap, objEntity, attr);
+ action.createObjAttribute(objEntity.getDataMap(), objEntity, attr);
}
- focusObjEntity(objEntity);
+ focusObjEntity();
}
if (dbEntity != null) {
for (DbAttribute attr : dbAttributes) {
- action.createDbAttribute(dataMap, dbEntity, attr);
+ action.createDbAttribute(dbEntity.getDataMap(), dbEntity, attr);
}
+ focusDBEntity();
}
if (embeddable != null) {
for (EmbeddableAttribute attr : embeddableAttrs) {
action.createEmbAttribute(embeddable, attr);
}
+ focusEmbeddable();
}
-
- }
-
- private void focusObjEntity(ObjEntity objEntity){
- actionManager.getAction(DbEntityCounterpartAction.class)
- .viewCounterpartEntity(objEntity);
}
@Override
public String getPresentationName() {
if (objEntity != null) {
- return (objAttributes.length > 1)
- ? "Remove ObjAttributes"
- : "Remove ObjAttribute";
+ return (objAttributes.length > 1) ? "Remove ObjAttributes" : "Remove ObjAttribute";
}
if (dbEntity != null) {
- return (dbAttributes.length > 1)
- ? "Remove DbAttributes"
- : "Remove DbAttribute";
+ return (dbAttributes.length > 1) ? "Remove DbAttributes" : "Remove DbAttribute";
}
if (embeddableAttrs != null) {
- return (embeddableAttrs.length > 1)
- ? "Remove Embeddable Attributes"
- : "Remove Embeddable Attribute";
+ return (embeddableAttrs.length > 1) ? "Remove Embeddable Attributes" : "Remove Embeddable Attribute";
}
return super.getPresentationName();
http://git-wip-us.apache.org/repos/asf/cayenne/blob/d0b88ba3/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/RemoveRelationshipUndoableEdit.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/RemoveRelationshipUndoableEdit.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/RemoveRelationshipUndoableEdit.java
index d915f0b..611f55c 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/RemoveRelationshipUndoableEdit.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/RemoveRelationshipUndoableEdit.java
@@ -26,15 +26,11 @@ import org.apache.cayenne.map.DbRelationship;
import org.apache.cayenne.map.ObjEntity;
import org.apache.cayenne.map.ObjRelationship;
import org.apache.cayenne.modeler.action.CreateRelationshipAction;
-import org.apache.cayenne.modeler.action.DbEntityCounterpartAction;
import org.apache.cayenne.modeler.action.RemoveRelationshipAction;
-public class RemoveRelationshipUndoableEdit extends CayenneUndoableEdit {
+public class RemoveRelationshipUndoableEdit extends BaseRemovePropertyUndoableEdit {
- private ObjEntity objEntity;
private ObjRelationship[] rels;
-
- private DbEntity dbEntity;
private DbRelationship[] dbRels;
public RemoveRelationshipUndoableEdit(ObjEntity objEntity, ObjRelationship[] rels) {
@@ -53,43 +49,36 @@ public class RemoveRelationshipUndoableEdit extends CayenneUndoableEdit {
public String getPresentationName() {
if (objEntity != null) {
return "Remove Obj Relationship";
- }
- else {
+ } else {
return "Remove Db Relationship";
}
}
@Override
public void redo() throws CannotRedoException {
- RemoveRelationshipAction action = actionManager
- .getAction(RemoveRelationshipAction.class);
+ RemoveRelationshipAction action = actionManager.getAction(RemoveRelationshipAction.class);
if (objEntity != null) {
action.removeObjRelationships(objEntity, rels);
- }
- else {
+ focusObjEntity();
+ } else {
action.removeDbRelationships(dbEntity, dbRels);
+ focusDBEntity();
}
}
@Override
public void undo() throws CannotUndoException {
- CreateRelationshipAction action = actionManager
- .getAction(CreateRelationshipAction.class);
+ CreateRelationshipAction action = actionManager.getAction(CreateRelationshipAction.class);
if (objEntity != null) {
for (ObjRelationship r : rels) {
action.createObjRelationship(objEntity, r);
}
- focusObjEntity(objEntity);
- }
- else {
+ focusObjEntity();
+ } else {
for (DbRelationship dr : dbRels) {
action.createDbRelationship(dbEntity, dr);
}
+ focusDBEntity();
}
}
-
- private void focusObjEntity(ObjEntity objEntity){
- actionManager.getAction(DbEntityCounterpartAction.class)
- .viewCounterpartEntity(objEntity);
- }
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/d0b88ba3/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneAction.java
index 8b294ca..213b5f6 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneAction.java
@@ -31,11 +31,17 @@ import javax.swing.JButton;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JMenuItem;
import javax.swing.KeyStroke;
+import javax.swing.tree.TreePath;
import org.apache.cayenne.configuration.ConfigurationNode;
+import org.apache.cayenne.configuration.DataChannelDescriptor;
+import org.apache.cayenne.map.Entity;
import org.apache.cayenne.modeler.Application;
+import org.apache.cayenne.modeler.CayenneModelerFrame;
import org.apache.cayenne.modeler.ProjectController;
+import org.apache.cayenne.modeler.ProjectTreeModel;
import org.apache.cayenne.modeler.dialog.ErrorDebugDialog;
+import org.apache.cayenne.modeler.editor.EditorView;
import org.apache.cayenne.project.Project;
import org.apache.cayenne.swing.components.image.FilteredIconFactory;
import org.apache.cayenne.util.Util;
@@ -322,4 +328,42 @@ public abstract class CayenneAction extends AbstractAction {
}
}
}
+
+ protected static EditorView editor() {
+ return ((CayenneModelerFrame) Application
+ .getInstance()
+ .getFrameController()
+ .getView()).getView();
+ }
+
+ /**
+ * Builds a tree path for a given entity. Urgent for later selection.
+ *
+ * @param entity to build path for
+ * @return tree path
+ */
+ protected static TreePath buildTreePath(Entity entity) {
+ DataChannelDescriptor domain = (DataChannelDescriptor) Application
+ .getInstance()
+ .getProject()
+ .getRootNode();
+
+ Object[] path = new Object[] {domain, entity.getDataMap(), entity};
+
+ Object[] mutableTreeNodes = new Object[path.length];
+ mutableTreeNodes[0] = ((ProjectTreeModel) editor().getProjectTreeView().getModel())
+ .getRootNode();
+
+ Object[] helper;
+ for (int i = 1; i < path.length; i++) {
+ helper = new Object[i];
+ for (int j = 0; j < i;) {
+ helper[j] = path[++j];
+ }
+ mutableTreeNodes[i] = ((ProjectTreeModel) editor()
+ .getProjectTreeView()
+ .getModel()).getNodeForObjectPath(helper);
+ }
+ return new TreePath(mutableTreeNodes);
+ }
}