Author: DartPeng
Date: 2010-01-25 03:38:23 -0500 (Mon, 25 Jan 2010)
New Revision: 19899
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/editor/propertySections/ValueDecodeParamSection.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/editor/propertySections/ValueDecodeParamSectionFilter.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/model/AbstractSmooksGraphicalModel.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/javamapping/JavaBeanChildGraphModel.java
Log:
JBIDE-5726
done
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 2010-01-25
05:49:20 UTC (rev 19898)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/uitls/SmooksUIUtils.java 2010-01-25
08:38:23 UTC (rev 19899)
@@ -12,9 +12,16 @@
import java.io.File;
import java.lang.reflect.Array;
+import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.net.URL;
+import java.nio.charset.Charset;
import java.util.ArrayList;
+import java.util.Calendar;
import java.util.Collection;
+import java.util.Date;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
@@ -162,6 +169,7 @@
import org.jboss.tools.smooks.model.groovy.GroovyPackage;
import org.jboss.tools.smooks.model.javabean12.BeanType;
import org.jboss.tools.smooks.model.javabean12.Javabean12Package;
+import org.jboss.tools.smooks.model.javabean12.ValueType;
import org.jboss.tools.smooks.model.jmsrouting.JmsRouter;
import org.jboss.tools.smooks.model.jmsrouting.JmsroutingPackage;
import org.jboss.tools.smooks.model.jmsrouting12.JMS12Router;
@@ -465,6 +473,82 @@
Composite parent, Object model) {
// IHyperlinkListener link
}
+
+ public static String getDefualtDecoder(ValueType value){
+ BeanType bean= (BeanType)((EObject)value).eContainer();
+ String clazzString = bean.getClass_();
+ try {
+ ProjectClassLoader loader = new
ProjectClassLoader(SmooksUIUtils.getJavaProject(bean));
+ Class<?> clazz = loader.loadClass(clazzString);
+ Field field = clazz.getDeclaredField(((ValueType)value).getProperty());
+ if(field != null){
+ Class<?> fieldType = field.getType();
+ if(fieldType.isEnum()){
+ return "Enum";
+ }
+ if(fieldType == Integer.class || fieldType == int.class){
+ return "Integer";
+ }
+ if(fieldType == Float.class || fieldType == float.class){
+ return "Float";
+ }
+ if(fieldType == Double.class || fieldType == double.class){
+ return "Double";
+ }
+ if(fieldType == BigInteger.class ){
+ return "BigInteger";
+ }
+ if(fieldType == BigDecimal.class ){
+ return "BigDecimal";
+ }
+ if(fieldType == Long.class || fieldType == long.class){
+ return "Long";
+ }
+ if(fieldType == Boolean.class|| fieldType == boolean.class){
+ return "Boolean";
+ }
+ if(fieldType == Short.class|| fieldType == short.class){
+ return "Short";
+ }
+ if(fieldType == Byte.class|| fieldType == byte.class){
+ return "Byte";
+ }
+ if(fieldType == Short.class|| fieldType == short.class){
+ return "Short";
+ }
+ if(Calendar.class.isAssignableFrom(fieldType)){
+ return "Calendar";
+ }
+ if(fieldType == Class.class){
+ return "Class";
+ }
+ if(fieldType == Date.class){
+ return "Date";
+ }
+ if(fieldType == Character.class){
+ return "Character";
+ }
+ if(Charset.class.isAssignableFrom(fieldType)){
+ return "Charset";
+ }
+ if(fieldType == java.sql.Date.class){
+ return "SqlDate";
+ }
+ if(fieldType == java.sql.Time.class){
+ return "SqlTime";
+ }
+ if(fieldType == URI.class){
+ return "URI";
+ }
+ if(fieldType == URL.class){
+ return "URL";
+ }
+ }
+ } catch (Throwable e) {
+ // ignore
+ }
+ return null;
+ }
public static void createLinkMixedTextFieldEditor(String label,
AdapterFactoryEditingDomain editingdomain,
FormToolkit toolkit, Composite parent, Object model, boolean multiText, int height,
boolean linkLabel,
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/editor/propertySections/ValueDecodeParamSection.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/editor/propertySections/ValueDecodeParamSection.java 2010-01-25
05:49:20 UTC (rev 19898)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/editor/propertySections/ValueDecodeParamSection.java 2010-01-25
08:38:23 UTC (rev 19899)
@@ -21,13 +21,11 @@
import org.eclipse.core.resources.IProject;
import org.eclipse.emf.common.command.Command;
import org.eclipse.emf.common.command.CompoundCommand;
-import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.edit.command.AddCommand;
import org.eclipse.emf.edit.command.RemoveCommand;
import org.eclipse.emf.edit.command.SetCommand;
import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
import org.eclipse.emf.edit.domain.EditingDomain;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jface.viewers.CellEditor;
@@ -48,20 +46,22 @@
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.ui.forms.IFormColors;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.Section;
import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
-import org.jboss.tools.smooks.configuration.editors.ModelPanelCreator;
import org.jboss.tools.smooks.configuration.editors.SelectorCreationDialog;
import org.jboss.tools.smooks.configuration.editors.javabean.JavaBeanModel;
import org.jboss.tools.smooks.configuration.editors.uitls.ProjectClassLoader;
import org.jboss.tools.smooks.configuration.editors.uitls.SmooksUIUtils;
import org.jboss.tools.smooks.editor.ISmooksModelProvider;
+import org.jboss.tools.smooks.gef.tree.model.TreeNodeConnection;
import org.jboss.tools.smooks.model.javabean12.DecodeParamType;
import org.jboss.tools.smooks.model.javabean12.Javabean12Factory;
import org.jboss.tools.smooks.model.javabean12.Javabean12Package;
@@ -130,7 +130,7 @@
}
private void createDecoderCombo(TabbedPropertySheetWidgetFactory factory, Composite
parent) {
- factory.createLabel(controlComposite, "Decoder :");
+ factory.createLabel(controlComposite, "Decoder
:").setForeground(factory.getColors().getColor(IFormColors.TITLE));
decoderCombo = factory.createCCombo(parent, SWT.READ_ONLY);
// decoderCombo.setEditable(false);
GridData gd = new GridData(GridData.FILL_HORIZONTAL);
@@ -157,7 +157,8 @@
if (provider != null) {
AdapterFactoryEditingDomain editingDomain = (AdapterFactoryEditingDomain)
provider.getEditingDomain();
String newDecoder = decoderCombo.getText();
- Object model = getPresentSelectedModel();
+ TreeNodeConnection lineModel = (TreeNodeConnection) getPresentSelectedGraphModel();
+ Object model = lineModel.getTargetNode().getData();
model = AdapterFactoryEditingDomain.unwrap(model);
if (model != null && model instanceof ValueType) {
String decoder = ((ValueType) model).getDecoder();
@@ -195,7 +196,8 @@
}
if ("Enum".equals(decoder)) {
- Object model = getPresentSelectedModel();
+ TreeNodeConnection lineModel = (TreeNodeConnection) getPresentSelectedGraphModel();
+ Object model = lineModel.getTargetNode().getData();
model = AdapterFactoryEditingDomain.unwrap(model);
if (model != null && model instanceof ValueType) {
String[] enumFieldsString = null;
@@ -260,28 +262,28 @@
gd = new GridData(GridData.FILL_HORIZONTAL);
gd.horizontalSpan = 2;
- factory.createLabel(sashForm, "Decoder Parameters :").setLayoutData(gd);
+ Label label = factory.createLabel(sashForm, "Decoder Parameters :");
+ label.setLayoutData(gd);
+ label.setForeground(factory.getColors().getColor(IFormColors.TITLE));
Composite viewerComposite = factory.createComposite(sashForm, SWT.NONE);
gd = new GridData(GridData.FILL_BOTH);
gd.horizontalSpan = 2;
+ gd.heightHint = 150;
viewerComposite.setLayoutData(gd);
- GridLayout gridLayout = new GridLayout();
- gridLayout.numColumns = 2;
- viewerComposite.setLayout(gridLayout);
+ viewerComposite.setBackground(factory.getColors().getBorderColor());
+// Composite viewerContianer = factory.createComposite(viewerComposite, SWT.NONE);
+// gd = new GridData(GridData.FILL_BOTH);
+// gd.heightHint = 150;
+// viewerContianer.setLayoutData(gd);
+
- Composite viewerContianer = factory.createComposite(viewerComposite, SWT.NONE);
- gd = new GridData(GridData.FILL_BOTH);
- gd.heightHint = 150;
- viewerContianer.setLayoutData(gd);
- viewerContianer.setBackground(factory.getColors().getBorderColor());
-
FillLayout layout = new FillLayout();
layout.marginHeight = 1;
layout.marginWidth = 1;
- viewerContianer.setLayout(layout);
+ viewerComposite.setLayout(layout);
- paramterViewer = new TableViewer(viewerContianer, SWT.FULL_SELECTION);
+ paramterViewer = new TableViewer(viewerComposite, SWT.FULL_SELECTION);
paramterViewer.setContentProvider(new DecodeParamViewerContentProvider());
paramterViewer.setLabelProvider(new DecodeParamTypeLabelProvider());
@@ -303,7 +305,8 @@
public void modify(Object element, String property, Object value) {
if (element instanceof TableItem) {
Object currentElement = ((TableItem) element).getData();
- Object model = getPresentSelectedModel();
+ TreeNodeConnection lineModel = (TreeNodeConnection) getPresentSelectedGraphModel();
+ Object model = lineModel.getTargetNode().getData();
model = AdapterFactoryEditingDomain.unwrap(model);
if (model != null && model instanceof ValueType && currentElement
instanceof DecodeParam) {
String pname = ((DecodeParam) currentElement).getName();
@@ -371,7 +374,8 @@
private void initDecoderCombo() {
decoderCombo.select(-1);
- Object model = getPresentSelectedModel();
+ TreeNodeConnection lineModel = (TreeNodeConnection) getPresentSelectedGraphModel();
+ Object model = lineModel.getTargetNode().getData();
model = AdapterFactoryEditingDomain.unwrap(model);
if (model != null && model instanceof ValueType) {
String decoder = ((ValueType) model).getDecoder();
@@ -385,7 +389,8 @@
private void initDecodeParamViewer() {
paramterViewer.setInput("NULL");
- Object model = getPresentSelectedModel();
+ TreeNodeConnection lineModel = (TreeNodeConnection) getPresentSelectedGraphModel();
+ Object model = lineModel.getTargetNode().getData();
model = AdapterFactoryEditingDomain.unwrap(model);
if (model != null && model instanceof ValueType) {
String decoder = ((ValueType) model).getDecoder();
@@ -431,18 +436,18 @@
protected void createDecodeParamGUIContents(Object model, ISmooksModelProvider provider,
IEditorPart part,
FormToolkit factory, Composite controlComposite) {
- ModelPanelCreator creator = new ModelPanelCreator();
- model = AdapterFactoryEditingDomain.unwrap(model);
- if (model != null && model instanceof EObject && provider != null
&& part != null) {
- AdapterFactoryEditingDomain domain = (AdapterFactoryEditingDomain)
provider.getEditingDomain();
- IItemPropertySource itemPropertySource = (IItemPropertySource)
domain.getAdapterFactory().adapt(model,
- IItemPropertySource.class);
- if (itemPropertySource != null) {
- creator
- .createModelPanel((EObject) model, factory, controlComposite, itemPropertySource,
provider,
- part);
- }
- }
+// ModelPanelCreator creator = new ModelPanelCreator();
+// model = AdapterFactoryEditingDomain.unwrap(model);
+// if (model != null && model instanceof EObject && provider != null
&& part != null) {
+// AdapterFactoryEditingDomain domain = (AdapterFactoryEditingDomain)
provider.getEditingDomain();
+// IItemPropertySource itemPropertySource = (IItemPropertySource)
domain.getAdapterFactory().adapt(model,
+// IItemPropertySource.class);
+// if (itemPropertySource != null) {
+// creator
+// .createModelPanel((EObject) model, factory, controlComposite, itemPropertySource,
provider,
+// part);
+// }
+// }
}
/*
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/editor/propertySections/ValueDecodeParamSectionFilter.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/editor/propertySections/ValueDecodeParamSectionFilter.java 2010-01-25
05:49:20 UTC (rev 19898)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/editor/propertySections/ValueDecodeParamSectionFilter.java 2010-01-25
08:38:23 UTC (rev 19899)
@@ -11,13 +11,16 @@
package org.jboss.tools.smooks.editor.propertySections;
import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.gef.DefaultEditDomain;
+import org.eclipse.gef.GraphicalViewer;
import org.eclipse.jface.viewers.IFilter;
import org.eclipse.ui.IEditorPart;
-import org.jboss.tools.smooks.gef.model.AbstractSmooksGraphicalModel;
+import org.jboss.tools.smooks.gef.tree.editparts.TreeNodeConnectionEditPart;
+import org.jboss.tools.smooks.gef.tree.model.TreeNodeConnection;
import org.jboss.tools.smooks.graphical.editors.IGraphicalEditorPart;
-import
org.jboss.tools.smooks.graphical.editors.editparts.AbstractResourceConfigChildNodeEditPart;
import
org.jboss.tools.smooks.graphical.editors.editparts.javamapping.JavaBeanChildNodeEditPart;
import
org.jboss.tools.smooks.graphical.editors.template.SmooksFreemarkerTemplateGraphicalEditor;
+import org.jboss.tools.smooks.model.javabean12.ValueType;
/**
* @author Dart
@@ -33,18 +36,19 @@
public boolean select(Object toTest) {
if (toTest == null)
return false;
- if (toTest instanceof JavaBeanChildNodeEditPart) {
- IEditorPart editorPart = ((AbstractResourceConfigChildNodeEditPart)
toTest).getEditorPart();
+ if (toTest instanceof TreeNodeConnectionEditPart) {
+ GraphicalViewer viewer = (GraphicalViewer) ((TreeNodeConnectionEditPart)
toTest).getViewer();
+ ((DefaultEditDomain) viewer.getEditDomain()).getEditorPart();
+ IEditorPart editorPart = ((DefaultEditDomain)
viewer.getEditDomain()).getEditorPart();
if (toTest instanceof JavaBeanChildNodeEditPart && editorPart instanceof
IGraphicalEditorPart) {
if (SmooksFreemarkerTemplateGraphicalEditor.ID.equals(((IGraphicalEditorPart)
editorPart).getID())) {
return false;
}
}
- AbstractSmooksGraphicalModel model = (AbstractSmooksGraphicalModel)
((JavaBeanChildNodeEditPart) toTest)
- .getModel();
- Object data = model.getData();
+ TreeNodeConnection connection = (TreeNodeConnection) ((TreeNodeConnectionEditPart)
toTest).getModel();
+ Object data = connection.getTargetNode().getData();
data = AdapterFactoryEditingDomain.unwrap(data);
- if (data instanceof org.jboss.tools.smooks.model.javabean12.ValueType) {
+ if (data instanceof ValueType) {
return true;
}
}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/model/AbstractSmooksGraphicalModel.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/model/AbstractSmooksGraphicalModel.java 2010-01-25
05:49:20 UTC (rev 19898)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/model/AbstractSmooksGraphicalModel.java 2010-01-25
08:38:23 UTC (rev 19899)
@@ -69,9 +69,9 @@
protected List<AbstractSmooksGraphicalModel> children = null;
- private List<TreeNodeConnection> sourceConnections = new
ArrayList<TreeNodeConnection>();
+ protected List<TreeNodeConnection> sourceConnections = new
ArrayList<TreeNodeConnection>();
- private List<TreeNodeConnection> targetConnections = new
ArrayList<TreeNodeConnection>();
+ protected List<TreeNodeConnection> targetConnections = new
ArrayList<TreeNodeConnection>();
public AbstractSmooksGraphicalModel(Object data) {
setData(data);
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/javamapping/JavaBeanChildGraphModel.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/javamapping/JavaBeanChildGraphModel.java 2010-01-25
05:49:20 UTC (rev 19898)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/javamapping/JavaBeanChildGraphModel.java 2010-01-25
08:38:23 UTC (rev 19899)
@@ -10,11 +10,25 @@
******************************************************************************/
package org.jboss.tools.smooks.graphical.editors.model.javamapping;
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.net.URI;
+import java.net.URL;
+import java.nio.charset.Charset;
+import java.util.ArrayList;
+import java.util.Calendar;
import java.util.Collections;
+import java.util.Date;
import java.util.Iterator;
import java.util.List;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CompoundCommand;
import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.edit.command.AddCommand;
+import org.eclipse.emf.edit.command.DeleteCommand;
+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;
@@ -22,6 +36,8 @@
import org.eclipse.swt.graphics.Image;
import org.jboss.tools.smooks.configuration.SmooksConfigurationActivator;
import org.jboss.tools.smooks.configuration.editors.GraphicsConstants;
+import org.jboss.tools.smooks.configuration.editors.IXMLStructuredObject;
+import org.jboss.tools.smooks.configuration.editors.uitls.ProjectClassLoader;
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;
@@ -33,6 +49,9 @@
import
org.jboss.tools.smooks.graphical.editors.model.freemarker.FreemarkerTemplateXMLModel;
import
org.jboss.tools.smooks.graphical.editors.model.freemarker.IFreemarkerTemplateModel;
import
org.jboss.tools.smooks.graphical.editors.template.SmooksFreemarkerTemplateGraphicalEditor;
+import org.jboss.tools.smooks.model.javabean12.BeanType;
+import org.jboss.tools.smooks.model.javabean12.DecodeParamType;
+import org.jboss.tools.smooks.model.javabean12.Javabean12Package;
import org.jboss.tools.smooks.model.javabean12.ValueType;
import org.jboss.tools.smooks.templating.model.ModelBuilder;
import org.jboss.tools.smooks.templating.template.TemplateBuilder;
@@ -155,7 +174,7 @@
IFreemarkerTemplateModel iFreemarkerTemplateModel = (IFreemarkerTemplateModel) pd;
if (iFreemarkerTemplateModel.isManyOccurs() &&
pgm.getTargetConnections().isEmpty()) {
Node modelNode = iFreemarkerTemplateModel.getModelNode();
- if(modelNode instanceof Element) {
+ if (modelNode instanceof Element) {
return !ModelBuilder.getEnforceCollectionSubMappingRules((Element) modelNode);
} else {
return false;
@@ -224,6 +243,118 @@
/*
* (non-Javadoc)
*
+ * @seeorg.jboss.tools.smooks.graphical.editors.model.
+ * AbstractResourceConfigChildNodeGraphModel
+ * #addTargetConnection(org.jboss.tools
+ * .smooks.gef.tree.model.TreeNodeConnection)
+ */
+ @Override
+ public void addTargetConnection(TreeNodeConnection connection) {
+ Object model = getData();
+ model = AdapterFactoryEditingDomain.unwrap(model);
+ if (model instanceof ValueType) {
+ EObject owner = (EObject) model;
+ AbstractSmooksGraphicalModel targetGraphModel = connection.getSourceNode();
+ Object tm = targetGraphModel.getData();
+ if (tm instanceof IXMLStructuredObject) {
+
+ CompoundCommand compoundCommand = new CompoundCommand();
+
+ String selector = SmooksUIUtils.generateFullPath((IXMLStructuredObject) tm,
"/"); //$NON-NLS-1$
+ Command command = SetCommand.create(domainProvider.getEditingDomain(), owner,
+ Javabean12Package.Literals.VALUE_TYPE__DATA, selector);
+ compoundCommand.append(command);
+
+ DecoderRecorder recoder = (DecoderRecorder) connection.getData();
+
+ String dataDecoder = getDataDecoder(connection);
+ List<?> oldParameters = null;
+ if(recoder != null){
+ dataDecoder = recoder.getDecoder();
+ oldParameters = recoder.getDecoderParameters();
+ }
+
+ if(oldParameters != null){
+ Command addParamsCommand = AddCommand.create(domainProvider.getEditingDomain(),
owner,
+ Javabean12Package.Literals.VALUE_TYPE__DECODE_PARAM, oldParameters);
+ compoundCommand.append(addParamsCommand);
+ }
+
+ if (dataDecoder != null) {
+ Command decoderSetCommand = SetCommand.create(domainProvider.getEditingDomain(),
owner,
+ Javabean12Package.Literals.VALUE_TYPE__DECODER, dataDecoder);
+ compoundCommand.append(decoderSetCommand);
+ }
+
+ domainProvider.getEditingDomain().getCommandStack().execute(compoundCommand);
+
+ if (this.targetConnections.indexOf(connection) == -1) {
+ this.targetConnections.add(connection);
+ support.firePropertyChange(PRO_ADD_TARGET_CONNECTION, null, connection);
+ }
+ }
+ } else {
+ super.addTargetConnection(connection);
+ }
+ }
+
+ protected String getDataDecoder(TreeNodeConnection connection) {
+ Object data = getData();
+ data = AdapterFactoryEditingDomain.unwrap(data);
+ if(((ValueType)data).getDecoder() != null) return null;
+ return SmooksUIUtils.getDefualtDecoder((ValueType)data);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @seeorg.jboss.tools.smooks.graphical.editors.model.
+ * AbstractResourceConfigChildNodeGraphModel
+ * #removeTargetConnection(org.jboss
+ * .tools.smooks.gef.tree.model.TreeNodeConnection)
+ */
+ @Override
+ public void removeTargetConnection(TreeNodeConnection connection) {
+ Object model = getData();
+ model = AdapterFactoryEditingDomain.unwrap(model);
+ if (model instanceof ValueType) {
+ EObject owner = (EObject) model;
+
+ DecoderRecorder recorder = new DecoderRecorder();
+
+ CompoundCommand compoundCommand = new CompoundCommand();
+
+ Command deleteDataCommand = SetCommand.create(domainProvider.getEditingDomain(),
owner, Javabean12Package.Literals.VALUE_TYPE__DATA, null);
+ compoundCommand.append(deleteDataCommand);
+
+ String decoder = ((ValueType)model).getDecoder();
+ if(decoder != null){
+ Command deleteDecoderCommand = SetCommand.create(domainProvider.getEditingDomain(),
owner, Javabean12Package.Literals.VALUE_TYPE__DECODER, null);
+ compoundCommand.append(deleteDecoderCommand);
+ recorder.setDecoder( decoder);
+ }
+
+ if(!((ValueType)model).getDecodeParam().isEmpty()){
+ List<DecodeParamType> tempList = new ArrayList<DecodeParamType>();
+ tempList.addAll(((ValueType)model).getDecodeParam());
+ recorder.setDecoderParameters(tempList);
+ Command remvoeParameterCommand =
DeleteCommand.create(domainProvider.getEditingDomain(),
((ValueType)model).getDecodeParam());
+ compoundCommand.append(remvoeParameterCommand);
+ }
+ domainProvider.getEditingDomain().getCommandStack().execute(compoundCommand);
+ connection.setData(recorder);
+ if (this.targetConnections.indexOf(connection) != -1) {
+ this.targetConnections.remove(connection);
+ support.firePropertyChange(PRO_REMOVE_TARGET_CONNECTION, connection, null);
+ }
+ } else {
+ super.removeTargetConnection(connection);
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
* @see org.jboss.tools.smooks.gef.tree.model.TreeNodeModel#getText()
*/
@Override
@@ -237,5 +368,35 @@
}
return super.getText();
}
+
+ private class DecoderRecorder{
+ private String decoder=null;
+ private List<?> decoderParameters = null;
+ /**
+ * @return the decoder
+ */
+ public String getDecoder() {
+ return decoder;
+ }
+ /**
+ * @param decoder the decoder to set
+ */
+ public void setDecoder(String decoder) {
+ this.decoder = decoder;
+ }
+ /**
+ * @return the decoderParameters
+ */
+ public List<?> getDecoderParameters() {
+ return decoderParameters;
+ }
+ /**
+ * @param decoderParameters the decoderParameters to set
+ */
+ public void setDecoderParameters(List<?> decoderParameters) {
+ this.decoderParameters = decoderParameters;
+ }
+
+ }
}