Author: DartPeng
Date: 2009-08-17 04:04:36 -0400 (Mon, 17 Aug 2009)
New Revision: 17103
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SmooksMultiFormEditor.java
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/graphical/editors/SmooksGraphicalEditorPart.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/JavaBeanChildGraphModel.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/JavaBeanGraphModel.java
Log:
JBIDE-4648
1.Add feature to add/remove connection
2.Add menu on graphical viewer
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SmooksMultiFormEditor.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SmooksMultiFormEditor.java 2009-08-17
06:11:13 UTC (rev 17102)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SmooksMultiFormEditor.java 2009-08-17
08:04:36 UTC (rev 17103)
@@ -82,13 +82,13 @@
e.printStackTrace();
}
- // graphicalPage = new SmooksGraphicalEditorPart(this);
- // try {
- // int index = this.addPage(graphicalPage, getEditorInput());
- // setPageText(index, "Graph");
- // } catch (PartInitException e) {
- // e.printStackTrace();
- // }
+ graphicalPage = new SmooksGraphicalEditorPart(this);
+ try {
+ int index = this.addPage(graphicalPage, getEditorInput());
+ setPageText(index, "Graph");
+ } catch (PartInitException e) {
+ e.printStackTrace();
+ }
super.addPages();
}
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-08-17
06:11:13 UTC (rev 17102)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/uitls/SmooksUIUtils.java 2009-08-17
08:04:36 UTC (rev 17103)
@@ -21,6 +21,7 @@
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import java.util.Properties;
import org.eclipse.core.resources.IFile;
@@ -2074,7 +2075,7 @@
}
private static IXMLStructuredObject localXMLNodeWithNodeName(String name,
IXMLStructuredObject contextNode,
- HashMap usedNodeMap) {
+ Map<Object , Object> usedNodeMap) {
if (name == null || contextNode == null)
return null;
String nodeName = contextNode.getNodeName();
@@ -2095,9 +2096,9 @@
return contextNode;
}
usedNodeMap.put(contextNode.getID(), new Object());
- List children = contextNode.getChildren();
+ List<?> children = contextNode.getChildren();
IXMLStructuredObject result = null;
- for (Iterator iterator = children.iterator(); iterator.hasNext();) {
+ for (Iterator<?> iterator = children.iterator(); iterator.hasNext();) {
IXMLStructuredObject child = (IXMLStructuredObject) iterator.next();
if (isAttributeName) {
if (!child.isAttribute())
@@ -2109,7 +2110,7 @@
}
}
if (result == null) {
- for (Iterator iterator = children.iterator(); iterator.hasNext();) {
+ for (Iterator<?> iterator = children.iterator(); iterator.hasNext();) {
IXMLStructuredObject child = (IXMLStructuredObject) iterator.next();
// to avoid the "died loop"
if (usedNodeMap.get(child.getID()) != null) {
@@ -2129,7 +2130,7 @@
}
public static IXMLStructuredObject localXMLNodeWithNodeName(String name,
IXMLStructuredObject contextNode) {
- HashMap map = new HashMap();
+ HashMap<Object,Object> map = new HashMap<Object,Object>();
IXMLStructuredObject node = localXMLNodeWithNodeName(name, contextNode, map);
map.clear();
map = null;
@@ -2211,7 +2212,7 @@
List<IXMLStructuredObject> children = parent.getChildren();
if (children == null)
return null;
- for (Iterator iterator = children.iterator(); iterator.hasNext();) {
+ for (Iterator<?> iterator = children.iterator(); iterator.hasNext();) {
IXMLStructuredObject structuredObject = (IXMLStructuredObject) iterator.next();
if (isAttribute) {
if (!structuredObject.isAttribute())
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/SmooksGraphicalEditorPart.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/SmooksGraphicalEditorPart.java 2009-08-17
06:11:13 UTC (rev 17102)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/SmooksGraphicalEditorPart.java 2009-08-17
08:04:36 UTC (rev 17103)
@@ -33,12 +33,21 @@
import org.eclipse.gef.commands.CommandStackEvent;
import org.eclipse.gef.commands.CommandStackEventListener;
import org.eclipse.gef.editparts.FreeformGraphicalRootEditPart;
+import org.eclipse.gef.ui.actions.SelectionAction;
import org.eclipse.gef.ui.parts.GraphicalEditor;
+import org.eclipse.gef.ui.parts.GraphicalViewerKeyHandler;
+import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.swt.SWT;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.actions.ActionFactory;
import org.jboss.tools.smooks.configuration.editors.IXMLStructuredObject;
import org.jboss.tools.smooks.configuration.editors.SelectoreSelectionDialog;
import org.jboss.tools.smooks.configuration.editors.javabean.JavaBeanModel;
@@ -47,6 +56,7 @@
import org.jboss.tools.smooks.configuration.editors.uitls.SmooksUIUtils;
import
org.jboss.tools.smooks.configuration.editors.xml.XMLStructuredDataContentProvider;
import org.jboss.tools.smooks.configuration.editors.xml.XMLStructuredDataLabelProvider;
+import org.jboss.tools.smooks.edimap.editor.EDIMappingMenuContextProvider;
import org.jboss.tools.smooks.editor.ISmooksModelProvider;
import org.jboss.tools.smooks.gef.common.RootModel;
import org.jboss.tools.smooks.gef.model.AbstractSmooksGraphicalModel;
@@ -73,7 +83,7 @@
* @author Dart
*
*/
-public class SmooksGraphicalEditorPart extends GraphicalEditor {
+public class SmooksGraphicalEditorPart extends GraphicalEditor implements
ISelectionChangedListener {
private DefaultEditDomain editDomain = null;
@@ -97,7 +107,7 @@
this.smooksModelProvider = provider;
this.setEditDomain(editDomain);
}
-
+
private void handleCommandStack(org.eclipse.emf.common.command.CommandStack
commandStack) {
commandStack.addCommandStackListener(new
org.eclipse.emf.common.command.CommandStackListener() {
public void commandStackChanged(EventObject event) {
@@ -116,12 +126,19 @@
}
}
}
-
+
});
}
});
}
+
+
+ @Override
+ protected void createActions() {
+ super.createActions();
+ }
+
protected void refershRecentAffectedModel(Command command, Collection<?>
affectedObjects) {
for (Iterator<?> iterator = affectedObjects.iterator(); iterator.hasNext();) {
Object object = (Object) iterator.next();
@@ -153,8 +170,35 @@
getGraphicalViewer().setEditPartFactory(new SmooksEditFactory());
getGraphicalViewer().setRootEditPart(new FreeformGraphicalRootEditPart());
+
+ GraphicalViewerKeyHandler keyHandler = new
GraphicalViewerKeyHandler(getGraphicalViewer());
+ keyHandler.put(org.eclipse.gef.KeyStroke.getPressed(SWT.DEL, 0),
this.getActionRegistry().getAction(
+ ActionFactory.DELETE.getId()));
+
+ EDIMappingMenuContextProvider provider = new
EDIMappingMenuContextProvider(getGraphicalViewer(), this
+ .getActionRegistry());
+ getGraphicalViewer().setContextMenu(provider);
+
+ hookSelectionActions();
}
+
+ private void hookSelectionActions(){
+ Iterator<?> actions = getActionRegistry().getActions();
+ while(actions.hasNext()){
+ Object action = actions.next();
+ if(action instanceof SelectionAction){
+ ((SelectionAction)action).setSelectionProvider(getGraphicalViewer());
+ }
+ }
+ }
+ @Override
+ protected void hookGraphicalViewer() {
+ // super.hookGraphicalViewer();
+ getGraphicalViewer().addSelectionChangedListener(getSelectionSynchronizer());
+ getGraphicalViewer().addSelectionChangedListener(this);
+ }
+
protected void initGraphicalModel() {
if (root == null) {
root = new RootModel();
@@ -209,7 +253,8 @@
for (Iterator<?> iterator = arcList.iterator(); iterator.hasNext();) {
Object object = (Object) iterator.next();
if (object instanceof BindingsType) {
- JavaBeanGraphModel graphModel = new JavaBeanGraphModel(object, contentProvider,
labelProvider);
+ JavaBeanGraphModel graphModel = new JavaBeanGraphModel(object, contentProvider,
labelProvider,
+ this.smooksModelProvider);
graphModel.setHeaderVisable(true);
root.addTreeNode(graphModel);
}
@@ -278,7 +323,10 @@
selector, (IXMLStructuredObject) obj, root);
if (sourceGraphModel != null) {
TreeNodeConnection connection = new TreeNodeConnection(sourceGraphModel, model);
- connection.connect();
+ sourceGraphModel.getSourceConnections().add(connection);
+ sourceGraphModel.fireConnectionChanged();
+ model.getTargetConnections().add(connection);
+ model.fireConnectionChanged();
connections.add(connection);
}
}
@@ -344,7 +392,7 @@
public void init(IEditorSite site, IEditorInput input) throws PartInitException {
super.init(site, input);
initSmooksData();
- if(smooksModelProvider != null){
+ if (smooksModelProvider != null) {
this.handleCommandStack(smooksModelProvider.getEditingDomain().getCommandStack());
}
}
@@ -423,4 +471,12 @@
}
+ @Override
+ public void selectionChanged(IWorkbenchPart part, ISelection selection) {
+ super.selectionChanged(part, selection);
+ }
+
+ public void selectionChanged(SelectionChangedEvent event) {
+ updateActions(getSelectionActions());
+ }
}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/JavaBeanChildGraphModel.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/JavaBeanChildGraphModel.java 2009-08-17
06:11:13 UTC (rev 17102)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/JavaBeanChildGraphModel.java 2009-08-17
08:04:36 UTC (rev 17103)
@@ -10,9 +10,24 @@
******************************************************************************/
package org.jboss.tools.smooks.graphical.editors.model;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.command.SetCommand;
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.jboss.tools.smooks.configuration.editors.IXMLStructuredObject;
+import org.jboss.tools.smooks.configuration.editors.uitls.SmooksUIUtils;
+import org.jboss.tools.smooks.gef.model.AbstractSmooksGraphicalModel;
+import org.jboss.tools.smooks.gef.tree.model.TreeNodeConnection;
import org.jboss.tools.smooks.gef.tree.model.TreeNodeModel;
+import org.jboss.tools.smooks.model.javabean.ExpressionType;
+import org.jboss.tools.smooks.model.javabean.JavabeanPackage;
+import org.jboss.tools.smooks.model.javabean.ValueType;
+import org.jboss.tools.smooks.model.javabean.WiringType;
+import org.jboss.tools.smooks.model.javabean12.Javabean12Package;
/**
* @author Dart
@@ -20,8 +35,11 @@
*/
public class JavaBeanChildGraphModel extends TreeNodeModel {
- public JavaBeanChildGraphModel(Object data, ITreeContentProvider contentProvider,
ILabelProvider labelProvider) {
+ protected IEditingDomainProvider domainProvider = null;
+
+ public JavaBeanChildGraphModel(Object data, ITreeContentProvider contentProvider,
ILabelProvider labelProvider , IEditingDomainProvider domainProvider) {
super(data, contentProvider, labelProvider);
+ this.domainProvider = domainProvider;
}
@Override
@@ -29,5 +47,62 @@
return false;
}
+ @Override
+ public void addTargetConnection(TreeNodeConnection connection) {
+ super.addTargetConnection(connection);
+ Object model = getData();
+ model = AdapterFactoryEditingDomain.unwrap(model);
+ if (model instanceof EObject) {
+ EStructuralFeature feature = getFeature(model);
+ EObject owner = (EObject) model;
+ AbstractSmooksGraphicalModel targetGraphModel = connection.getSourceNode();
+ Object tm = targetGraphModel.getData();
+ if (tm instanceof IXMLStructuredObject) {
+ String selector = SmooksUIUtils.generateFullPath((IXMLStructuredObject) tm,
"/");
+ Command command = SetCommand.create(domainProvider.getEditingDomain(), owner,
feature, selector);
+ domainProvider.getEditingDomain().getCommandStack().execute(command);
+ }
+ }
+ }
+ protected EStructuralFeature getFeature(Object model){
+ EStructuralFeature feature = null;
+ if(model == null){
+ return null;
+ }
+ if (model instanceof WiringType) {
+ feature = JavabeanPackage.Literals.WIRING_TYPE__WIRE_ON_ELEMENT;
+ }
+ if (model instanceof org.jboss.tools.smooks.model.javabean12.WiringType) {
+ feature = Javabean12Package.Literals.WIRING_TYPE__WIRE_ON_ELEMENT;
+ }
+ if (model instanceof ValueType) {
+ feature = JavabeanPackage.Literals.VALUE_TYPE__DATA;
+ }
+ if (model instanceof org.jboss.tools.smooks.model.javabean12.ValueType) {
+ feature = Javabean12Package.Literals.VALUE_TYPE__DATA;
+ }
+ if (model instanceof ExpressionType) {
+ feature = JavabeanPackage.Literals.EXPRESSION_TYPE__EXEC_ON_ELEMENT;
+ }
+ if (model instanceof org.jboss.tools.smooks.model.javabean12.ExpressionType) {
+ feature = Javabean12Package.Literals.EXPRESSION_TYPE__EXEC_ON_ELEMENT;
+ }
+
+ return feature;
+ }
+
+ @Override
+ public void removeTargetConnection(TreeNodeConnection connection) {
+ super.removeTargetConnection(connection);
+ Object model = getData();
+ model = AdapterFactoryEditingDomain.unwrap(model);
+ if (model instanceof EObject) {
+ EStructuralFeature feature = getFeature(model);
+ EObject owner = (EObject) model;
+ Command command = SetCommand.create(domainProvider.getEditingDomain(), owner, feature,
null);
+ domainProvider.getEditingDomain().getCommandStack().execute(command);
+ }
+ }
+
}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/JavaBeanGraphModel.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/JavaBeanGraphModel.java 2009-08-17
06:11:13 UTC (rev 17102)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/JavaBeanGraphModel.java 2009-08-17
08:04:36 UTC (rev 17103)
@@ -10,25 +10,82 @@
******************************************************************************/
package org.jboss.tools.smooks.graphical.editors.model;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.command.SetCommand;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.jboss.tools.smooks.configuration.editors.IXMLStructuredObject;
+import org.jboss.tools.smooks.configuration.editors.uitls.SmooksUIUtils;
+import org.jboss.tools.smooks.gef.model.AbstractSmooksGraphicalModel;
import org.jboss.tools.smooks.gef.tree.model.TreeContainerModel;
+import org.jboss.tools.smooks.gef.tree.model.TreeNodeConnection;
import org.jboss.tools.smooks.gef.tree.model.TreeNodeModel;
+import org.jboss.tools.smooks.model.javabean.BindingsType;
+import org.jboss.tools.smooks.model.javabean.JavabeanPackage;
+import org.jboss.tools.smooks.model.javabean12.BeanType;
+import org.jboss.tools.smooks.model.javabean12.Javabean12Package;
/**
* @author Dart
- *
+ *
*/
public class JavaBeanGraphModel extends TreeContainerModel {
- public JavaBeanGraphModel(Object data, ITreeContentProvider contentProvider,
ILabelProvider labelProvider) {
+ protected IEditingDomainProvider domainProvider = null;
+
+ public JavaBeanGraphModel(Object data, ITreeContentProvider contentProvider,
ILabelProvider labelProvider,
+ IEditingDomainProvider domainProvider) {
super(data, contentProvider, labelProvider);
+ this.domainProvider = domainProvider;
}
@Override
protected TreeNodeModel createChildModel(Object model, ITreeContentProvider
contentProvider,
ILabelProvider labelProvider) {
- return new JavaBeanChildGraphModel(model, contentProvider, labelProvider);
+ return new JavaBeanChildGraphModel(model, contentProvider, labelProvider,
this.domainProvider);
}
+ @Override
+ public void addTargetConnection(TreeNodeConnection connection) {
+ super.addTargetConnection(connection);
+ Object model = getData();
+ if (model instanceof EObject) {
+ EStructuralFeature feature = null;
+ if (model instanceof BindingsType) {
+ feature = JavabeanPackage.Literals.BINDINGS_TYPE__CREATE_ON_ELEMENT;
+ }
+ if (model instanceof BeanType) {
+ feature = Javabean12Package.Literals.BEAN_TYPE__CREATE_ON_ELEMENT;
+ }
+ EObject owner = (EObject) model;
+ AbstractSmooksGraphicalModel targetGraphModel = connection.getSourceNode();
+ Object tm = targetGraphModel.getData();
+ if (tm instanceof IXMLStructuredObject) {
+ String selector = SmooksUIUtils.generateFullPath((IXMLStructuredObject) tm,
"/");
+ Command command = SetCommand.create(domainProvider.getEditingDomain(), owner,
feature, selector);
+ domainProvider.getEditingDomain().getCommandStack().execute(command);
+ }
+ }
+ }
+
+ @Override
+ public void removeTargetConnection(TreeNodeConnection connection) {
+ super.removeTargetConnection(connection);
+ Object model = getData();
+ if (model instanceof EObject) {
+ EStructuralFeature feature = null;
+ if (model instanceof BindingsType) {
+ feature = JavabeanPackage.Literals.BINDINGS_TYPE__CREATE_ON_ELEMENT;
+ }
+ if (model instanceof BeanType) {
+ feature = Javabean12Package.Literals.BEAN_TYPE__CREATE_ON_ELEMENT;
+ }
+ EObject owner = (EObject) model;
+ Command command = SetCommand.create(domainProvider.getEditingDomain(), owner, feature,
null);
+ domainProvider.getEditingDomain().getCommandStack().execute(command);
+ }
+ }
}