Author: DartPeng
Date: 2009-07-16 03:42:47 -0400 (Thu, 16 Jul 2009)
New Revision: 16591
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/uitls/SmooksUIUtils.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/edimap/actions/DeleteEDIModelCommand.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/edimap/editor/EDIMapFormPage.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/edimap/editor/EDITreeNodeEditPart.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/edimap/editor/GEFAdapterCommand.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/common/SmooksGraphicalMenuContextProvider.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/tree/model/TreeNodeModel.java
Log:
JBIDE-4626
fix a bug of undo delete segment.
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/uitls/SmooksUIUtils.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/uitls/SmooksUIUtils.java 2009-07-16
04:31:43 UTC (rev 16590)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/uitls/SmooksUIUtils.java 2009-07-16
07:42:47 UTC (rev 16591)
@@ -1317,9 +1317,9 @@
if (currentSelect != -1) {
combo.select(currentSelect);
} else {
-
+
}
- if (editValue instanceof String) {
+ if (valueIsSet && (editValue instanceof String)) {
combo.setText(editValue.toString());
}
final Object fm = model;
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/edimap/actions/DeleteEDIModelCommand.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/edimap/actions/DeleteEDIModelCommand.java 2009-07-16
04:31:43 UTC (rev 16590)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/edimap/actions/DeleteEDIModelCommand.java 2009-07-16
07:42:47 UTC (rev 16591)
@@ -10,16 +10,23 @@
******************************************************************************/
package org.jboss.tools.smooks.edimap.actions;
+import java.util.List;
+
import org.eclipse.emf.common.command.Command;
import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.gef.DefaultEditDomain;
import org.eclipse.gef.EditPart;
+import org.eclipse.ui.IEditorPart;
+import org.jboss.tools.smooks.configuration.editors.uitls.SmooksUIUtils;
+import org.jboss.tools.smooks.edimap.editor.EDIMapFormPage;
import org.jboss.tools.smooks.gef.tree.editparts.TreeNodeEditPart;
+import org.jboss.tools.smooks.gef.tree.model.TreeNodeModel;
/**
* @author Dart (dpeng(a)redhat.com)
- *
+ *
*/
-public class DeleteEDIModelCommand extends EDIGEFAdpaterCommand{
+public class DeleteEDIModelCommand extends EDIGEFAdpaterCommand {
private EditPart parentPart;
@@ -27,23 +34,53 @@
super(editPart, domain, emfCommand);
}
- /* (non-Javadoc)
- * @see
org.jboss.tools.smooks.edimap.actions.AddOrDeleteEDIMappingModelCommand#refreshEditPart()
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.jboss.tools.smooks.edimap.actions.AddOrDeleteEDIMappingModelCommand
+ * #refreshEditPart()
*/
@Override
protected void refreshEditPart() {
- if(parentPart != null && parentPart instanceof TreeNodeEditPart){
- ((TreeNodeEditPart)parentPart).childrenModelChanged();
- ((TreeNodeEditPart)parentPart).getFigure().repaint();
+
+ if (parentPart != null && parentPart instanceof TreeNodeEditPart) {
+ ((TreeNodeEditPart) parentPart).childrenModelChanged();
+ ((TreeNodeEditPart) parentPart).getFigure().repaint();
}
}
- /* (non-Javadoc)
- * @see
org.jboss.tools.smooks.edimap.actions.AddOrDeleteEDIMappingModelCommand#execute()
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.jboss.tools.smooks.edimap.actions.AddOrDeleteEDIMappingModelCommand
+ * #execute()
*/
@Override
public void execute() {
- parentPart = this.editPart.getParent();
+ if (parentPart == null) {
+ parentPart = this.editPart.getParent();
+ }
super.execute();
}
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.jboss.tools.smooks.edimap.actions.EDIGEFAdpaterCommand#undo()
+ */
+ @Override
+ public void undo() {
+ super.undo();
+ if (parentPart != null && parentPart instanceof TreeNodeEditPart) {
+ DefaultEditDomain editDomain = (DefaultEditDomain)
parentPart.getViewer().getEditDomain();
+ IEditorPart editorPart = editDomain.getEditorPart();
+ if (editorPart instanceof EDIMapFormPage) {
+ List<TreeNodeModel> linkedNodes = ((EDIMapFormPage)
editorPart).createLinkModel();
+ SmooksUIUtils.expandGraphTree(linkedNodes, (TreeNodeEditPart) parentPart);
+ }
+ }
+ }
+
}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/edimap/editor/EDIMapFormPage.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/edimap/editor/EDIMapFormPage.java 2009-07-16
04:31:43 UTC (rev 16590)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/edimap/editor/EDIMapFormPage.java 2009-07-16
07:42:47 UTC (rev 16591)
@@ -30,6 +30,7 @@
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.draw2d.ColorConstants;
+import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.geometry.Point;
import org.eclipse.emf.common.command.Command;
import org.eclipse.emf.common.command.CommandWrapper;
@@ -43,13 +44,13 @@
import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
import org.eclipse.gef.DefaultEditDomain;
import org.eclipse.gef.EditPart;
+import org.eclipse.gef.GraphicalEditPart;
import org.eclipse.gef.GraphicalViewer;
import org.eclipse.gef.commands.CommandStack;
import org.eclipse.gef.commands.CommandStackListener;
import org.eclipse.gef.editparts.FreeformGraphicalRootEditPart;
import org.eclipse.gef.ui.actions.ActionRegistry;
import org.eclipse.gef.ui.actions.DeleteAction;
-import org.eclipse.gef.ui.actions.PrintAction;
import org.eclipse.gef.ui.actions.RedoAction;
import org.eclipse.gef.ui.actions.SaveAction;
import org.eclipse.gef.ui.actions.SelectAllAction;
@@ -349,7 +350,7 @@
action = new AddSubComponentAction(this, modelProvider);
registry.registerAction(action);
- registry.registerAction(new PrintAction(this));
+ // registry.registerAction(new PrintAction(this));
Iterator<?> it = registry.getActions();
while (it.hasNext()) {
IAction a = (IAction) it.next();
@@ -508,6 +509,14 @@
return editDomain.getCommandStack();
}
}
+ if (type == GraphicalViewer.class)
+ return getGraphicalViewer();
+ if (type == ActionRegistry.class)
+ return getActionRegistry();
+ if (type == EditPart.class && getGraphicalViewer() != null)
+ return getGraphicalViewer().getRootEditPart();
+ if (type == IFigure.class && getGraphicalViewer() != null)
+ return ((GraphicalEditPart) getGraphicalViewer().getRootEditPart()).getFigure();
return super.getAdapter(type);
}
@@ -532,6 +541,7 @@
* (java.util.EventObject)
*/
public void commandStackChanged(EventObject event) {
+ updateSelectionActions();
getEditor().editorDirtyStateChanged();
}
@@ -801,7 +811,7 @@
});
- Section ediModelViewerSection = toolkit.createSection(form.getBody(), Section.TITLE_BAR
);
+ Section ediModelViewerSection = toolkit.createSection(form.getBody(),
Section.TITLE_BAR);
gd = new GridData(GridData.FILL_BOTH);
gd.horizontalSpan = 2;
ediModelViewerSection.setLayoutData(gd);
@@ -815,7 +825,7 @@
vgl.numColumns = 2;
viewerComposite.setLayout(vgl);
-
+
Hyperlink showTransformResultLink = toolkit.createHyperlink(viewerComposite, "Test
EDI to XML transform",
SWT.NONE);
// showTransformResultLink.setVisible(false);
@@ -1018,7 +1028,7 @@
}
}
- private List<TreeNodeModel> createLinkModel() {
+ public List<TreeNodeModel> createLinkModel() {
if (graphicalRootModel != null && segments != null) {
List<Segment> segmentList = segments.getSegment();
return linkNode(segmentList);
@@ -1026,15 +1036,21 @@
return Collections.emptyList();
}
- private List<TreeNodeModel> linkNode(List<Segment> segmentList) {
+ protected List<TreeNodeModel> linkNode(Collection<?> segmentList) {
List<TreeNodeModel> sourceLinkedModel = new ArrayList<TreeNodeModel>();
for (Iterator<?> iterator = segmentList.iterator(); iterator.hasNext();) {
- Segment segment = (Segment) iterator.next();
+ Object obj = iterator.next();
+ if (!(obj instanceof Segment)) {
+ continue;
+ }
+ Segment segment = (Segment) obj;
TreeNodeModel segmentGraphicalModel = findEDIGraphicalModel(segment);
String code = segment.getSegcode();
TreeNodeModel model = findEDIDataGraphicalModel(code);
if (segmentGraphicalModel != null && model != null) {
- new TreeNodeConnection(segmentGraphicalModel, model).connect();
+ if (!isLinked(segmentGraphicalModel, model)) {
+ new TreeNodeConnection(segmentGraphicalModel, model).connect();
+ }
}
sourceLinkedModel.add(segmentGraphicalModel);
List<TreeNodeModel> linkedModel = linkNode(segment.getSegment());
@@ -1045,6 +1061,17 @@
return sourceLinkedModel;
}
+ private boolean isLinked(TreeNodeModel source, TreeNodeModel target) {
+ List<TreeNodeConnection> connections = source.getSourceConnections();
+ for (Iterator<?> iterator = connections.iterator(); iterator.hasNext();) {
+ TreeNodeConnection treeNodeConnection = (TreeNodeConnection) iterator.next();
+ if(treeNodeConnection.getTargetNode() == target){
+ return true;
+ }
+ }
+ return false;
+ }
+
// private TreeNodeModel findEDIGraphModel(Object model){
// if (graphicalRootModel != null) {
// List<TreeNodeModel> treeNodeList = graphicalRootModel.getChildren();
@@ -1300,20 +1327,4 @@
List<TreeNodeModel> sourceLinkedModel = this.createLinkModel();
expandSegmentNode(sourceLinkedModel);
}
-
- private class DelimiterModifyListener implements ModifyListener {
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.swt.events.ModifyListener#modifyText(org.eclipse.swt.
- * events.ModifyEvent)
- */
- public void modifyText(ModifyEvent e) {
- rebuildEDIGraph();
-
- }
-
- }
}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/edimap/editor/EDITreeNodeEditPart.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/edimap/editor/EDITreeNodeEditPart.java 2009-07-16
04:31:43 UTC (rev 16590)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/edimap/editor/EDITreeNodeEditPart.java 2009-07-16
07:42:47 UTC (rev 16591)
@@ -10,6 +10,7 @@
******************************************************************************/
package org.jboss.tools.smooks.edimap.editor;
+import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.edit.command.DeleteCommand;
import org.eclipse.emf.edit.domain.EditingDomain;
import org.eclipse.gef.DefaultEditDomain;
@@ -81,6 +82,9 @@
@Override
protected Command createDeleteCommand(GroupRequest deleteRequest) {
TreeNodeModel node = (TreeNodeModel) getHost().getModel();
+ if(!(node.getData() instanceof EObject)){
+ return null;
+ }
GraphicalViewer viewer = (GraphicalViewer) ((AbstractGraphicalEditPart)
getHost()).getViewer();
DefaultEditDomain domain = (DefaultEditDomain) viewer.getEditDomain();
IEditorPart part = domain.getEditorPart();
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/edimap/editor/GEFAdapterCommand.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/edimap/editor/GEFAdapterCommand.java 2009-07-16
04:31:43 UTC (rev 16590)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/edimap/editor/GEFAdapterCommand.java 2009-07-16
07:42:47 UTC (rev 16591)
@@ -19,9 +19,9 @@
*/
public class GEFAdapterCommand extends Command {
- private org.eclipse.emf.common.command.Command emfCommand;
+ protected org.eclipse.emf.common.command.Command emfCommand;
- private EditingDomain domain;
+ protected EditingDomain domain;
public GEFAdapterCommand(EditingDomain domain, org.eclipse.emf.common.command.Command
emfCommand) {
this.emfCommand = emfCommand;
@@ -119,7 +119,6 @@
domain.getCommandStack().redo();
}
}
- super.redo();
}
/*
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/common/SmooksGraphicalMenuContextProvider.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/common/SmooksGraphicalMenuContextProvider.java 2009-07-16
04:31:43 UTC (rev 16590)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/common/SmooksGraphicalMenuContextProvider.java 2009-07-16
07:42:47 UTC (rev 16591)
@@ -56,10 +56,10 @@
menu.add(new Separator(GROUP_CUSTOME));
GEFActionConstants.addStandardActionGroups(menu);
IAction action;
-// action = getActionRegistry().getAction(ActionFactory.UNDO.getId());
-// menu.appendToGroup(GEFActionConstants.GROUP_UNDO, action);
-// action = getActionRegistry().getAction(ActionFactory.REDO.getId());
-// menu.appendToGroup(GEFActionConstants.GROUP_UNDO, action);
+ action = getActionRegistry().getAction(ActionFactory.UNDO.getId());
+ menu.appendToGroup(GEFActionConstants.GROUP_UNDO, action);
+ action = getActionRegistry().getAction(ActionFactory.REDO.getId());
+ menu.appendToGroup(GEFActionConstants.GROUP_UNDO, action);
action = getActionRegistry().getAction(ActionFactory.DELETE.getId());
if (action.isEnabled())
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/tree/model/TreeNodeModel.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/tree/model/TreeNodeModel.java 2009-07-16
04:31:43 UTC (rev 16590)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/tree/model/TreeNodeModel.java 2009-07-16
07:42:47 UTC (rev 16591)
@@ -150,12 +150,12 @@
for (Iterator<?> iterator2 = tempTargetConnections.iterator();
iterator2.hasNext();) {
TreeNodeConnection treeNodeConnection = (TreeNodeConnection) iterator2.next();
- treeNodeConnection.disconnect();
+ treeNodeConnection.disconnectSource();
}
for (Iterator<?> iterator2 = tempSourceConnections.iterator();
iterator2.hasNext();) {
TreeNodeConnection treeNodeConnection = (TreeNodeConnection) iterator2.next();
- treeNodeConnection.disconnect();
+ treeNodeConnection.disconnectTarget();
}
tempSourceConnections.clear();