/** * */ package org.jboss.tools.smooks.gef.tree.editparts; import org.eclipse.gef.commands.Command; import org.jboss.tools.smooks.gef.model.AbstractSmooksGraphicalModel; import org.jboss.tools.smooks.gef.tree.model.BeanReferenceConnection; import org.jboss.tools.smooks.gef.tree.model.TreeNodeConnection; import org.jboss.tools.smooks.gef.tree.model.TriggerConnection; import org.jboss.tools.smooks.gef.tree.model.ValueBindingConnection; import org.jboss.tools.smooks.graphical.editors.model.InputDataTreeNodeModel; import org.jboss.tools.smooks.graphical.editors.model.freemarker.FreemarkerTemplateConnection; import org.jboss.tools.smooks.graphical.editors.model.freemarker.FreemarkerXMLNodeGraphicalModel; import org.jboss.tools.smooks.graphical.editors.model.javamapping.JavaBeanChildGraphModel; import org.jboss.tools.smooks.graphical.editors.model.javamapping.JavaBeanGraphModel; /** * @author DartPeng * */ public class CreateConnectionCommand extends Command { private AbstractSmooksGraphicalModel source; private AbstractSmooksGraphicalModel target; private TreeNodeConnection tempConnectionHandle = null; @Override public void execute() { if (source != null && target != null) { TreeNodeConnection connection = null; if (target instanceof JavaBeanChildGraphModel && source instanceof InputDataTreeNodeModel) { connection = new ValueBindingConnection(source, target); } if (source instanceof JavaBeanChildGraphModel && target instanceof JavaBeanGraphModel) { connection = new BeanReferenceConnection(source, target); } // default connection type if (source instanceof InputDataTreeNodeModel && connection == null) { connection = new TriggerConnection(source, target); } if(target instanceof FreemarkerXMLNodeGraphicalModel){ connection = new FreemarkerTemplateConnection(); connection.setSourceNode(source); connection.setTargetNode(target); } if (connection == null) { connection = new TreeNodeConnection(source, target); } connection.connect(); tempConnectionHandle = connection; } } @Override public void redo() { if (tempConnectionHandle != null) { tempConnectionHandle.connect(); } else { execute(); } } @Override public void undo() { if (tempConnectionHandle != null) { tempConnectionHandle.disconnect(); } } public AbstractSmooksGraphicalModel getSource() { return source; } public void setSource(AbstractSmooksGraphicalModel source) { this.source = source; } public AbstractSmooksGraphicalModel getTarget() { return target; } public void setTarget(AbstractSmooksGraphicalModel target) { this.target = target; } public TreeNodeConnection getTempConnectionHandle() { return tempConnectionHandle; } public void setTempConnectionHandle(TreeNodeConnection tempConnectionHandle) { this.tempConnectionHandle = tempConnectionHandle; } }