[jbosstools-commits] JBoss Tools SVN: r17543 - in trunk/smooks/plugins: org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/csv12/provider and 29 other directories.

jbosstools-commits at lists.jboss.org jbosstools-commits at lists.jboss.org
Mon Sep 14 08:36:20 EDT 2009


Author: DartPeng
Date: 2009-09-14 08:36:19 -0400 (Mon, 14 Sep 2009)
New Revision: 17543

Added:
   trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/ChildrenSelectionWizard.java
   trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/ChildrenSelectionWizardPage.java
   trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/ContainerChildrenTablePanelCreator.java
   trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/ModelChildrenTablePanelCreator.java
   trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/ModelMultiChildrenTabelPanelCreator.java
   trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/MultiContainerChildrenAddtionTablePanel.java
   trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SmooksReaderFormPage.java
   trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/csv12/Csv12ReaderUICreator.java
   trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/json12/Json12ReaderUICreator.java
   trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/navigator/MessageFilterNavigator.htm
Modified:
   trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/csv/provider/CsvReaderItemProvider.java
   trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/csv12/provider/CSV12ReaderItemProvider.java
   trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/edi/provider/EDIReaderItemProvider.java
   trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/edi12/provider/EDI12ReaderItemProvider.java
   trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/graphics/ext/SmooksGraphicsExtType.java
   trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/graphics/ext/impl/SmooksGraphicsExtTypeImpl.java
   trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/json/impl/JsonReaderImpl.java
   trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/json/provider/JsonReaderItemProvider.java
   trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/json/provider/KeyItemProvider.java
   trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/json12/impl/Json12ReaderImpl.java
   trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/json12/provider/Json12ReaderItemProvider.java
   trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/json12/provider/KeyItemProvider.java
   trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/smooks/provider/ReaderTypeItemProvider.java
   trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks10/model/smooks/util/SmooksModelUtils.java
   trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/FileSelectionWizard.java
   trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/FileSelectionWizardPage.java
   trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/NewOrModifySmooksElementDialog.java
   trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/PropertyUICreator.java
   trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/PropertyUICreatorManager.java
   trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SelectorCreationDialog.java
   trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SmooksConfigurationFormPage.java
   trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SmooksConfigurationOverviewPage.java
   trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SmooksConfigurationReaderPage.java
   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/csv/CSVDataParser.java
   trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/csv/CSVInputDataWizard.java
   trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/csv/CsvReaderUICreator.java
   trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/csv12/CSV12InputDataWizard.java
   trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/csv12/Csv12ReaderBindingPropertyUICreator.java
   trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/csv12/Csv12ReaderMapBindingPropertyUICreator.java
   trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/edi/EDIDataParser.java
   trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/edi/EDIDataWizard.java
   trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/javabean/BindingsPropertyUICreator.java
   trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/javabean12/JavaBean12PropertyUICreator.java
   trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/json/JsonDataWizard.java
   trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/json/JsonReaderUICreator.java
   trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/json12/Json12DataWizard.java
   trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/rule10/Rules10RulebaseUICreator.java
   trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/smooks/ConditionTypeUICreator.java
   trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/smooks/ReaderTypeUICreator.java
   trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/smooks/ResourceTypeUICreator.java
   trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/uitls/JsonInputDataParser.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/configuration/editors/wizard/ViewerInitorStore.java
   trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/navigator/DefaultSetting.htm
   trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/validate/SelectorValidator.java
   trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/wizards/NewSmooksElementWizardPage.java
   trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/wizards/SmooksConfigurationFileNewWizard.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/editor/AbstractSmooksFormEditor.java
   trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/tree/figures/TreeNodeFigure.java
   trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/SmooksGraphicalEditorPaletteRootCreator.java
   trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/SmooksGraphicalEditorPart.java
Log:
JBIDE-4878

DONE

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/csv/provider/CsvReaderItemProvider.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/csv/provider/CsvReaderItemProvider.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/csv/provider/CsvReaderItemProvider.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -200,10 +200,11 @@
 	 */
 	@Override
 	public String getText(Object object) {
-		String label = ((CsvReader)object).getTargetProfile();
-		return label == null || label.length() == 0 ?
-			getString("_UI_CsvReader_type") :
-			getString("_UI_CsvReader_type") + " " + label;
+		return "CSV";
+//		String label = ((CsvReader)object).getTargetProfile();
+//		return label == null || label.length() == 0 ?
+//			getString("_UI_CsvReader_type") :
+//			getString("_UI_CsvReader_type") + " " + label;
 	}
 
 	/**

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/csv12/provider/CSV12ReaderItemProvider.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/csv12/provider/CSV12ReaderItemProvider.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/csv12/provider/CSV12ReaderItemProvider.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -299,10 +299,11 @@
 	 * @generated
 	 */
 	public String getText(Object object) {
-		String label = ((CSV12Reader)object).getRecordElementName();
-		return label == null || label.length() == 0 ?
-			getString("_UI_CSV12Reader_type") :
-			getString("_UI_CSV12Reader_type") + " " + label;
+		return "CSV";
+//		String label = ((CSV12Reader)object).getRecordElementName();
+//		return label == null || label.length() == 0 ?
+//			getString("_UI_CSV12Reader_type") :
+//			getString("_UI_CSV12Reader_type") + " " + label;
 	}
 
 	/**

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/edi/provider/EDIReaderItemProvider.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/edi/provider/EDIReaderItemProvider.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/edi/provider/EDIReaderItemProvider.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -131,10 +131,11 @@
 	 */
 	@Override
 	public String getText(Object object) {
-		String label = ((EDIReader)object).getTargetProfile();
-		return label == null || label.length() == 0 ?
-			getString("_UI_EDIReader_type") :
-			getString("_UI_EDIReader_type") + " " + label;
+		return "EDI";
+//		String label = ((EDIReader)object).getTargetProfile();
+//		return label == null || label.length() == 0 ?
+//			getString("_UI_EDIReader_type") :
+//			getString("_UI_EDIReader_type") + " " + label;
 	}
 
 	/**

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/edi12/provider/EDI12ReaderItemProvider.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/edi12/provider/EDI12ReaderItemProvider.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/edi12/provider/EDI12ReaderItemProvider.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -153,10 +153,11 @@
 	 * @generated
 	 */
 	public String getText(Object object) {
-		String label = ((EDI12Reader)object).getTargetProfile();
-		return label == null || label.length() == 0 ?
-			getString("_UI_EDI12Reader_type") :
-			getString("_UI_EDI12Reader_type") + " " + label;
+		return "EDI";
+//		String label = ((EDI12Reader)object).getTargetProfile();
+//		return label == null || label.length() == 0 ?
+//			getString("_UI_EDI12Reader_type") :
+//			getString("_UI_EDI12Reader_type") + " " + label;
 	}
 
 	/**

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/graphics/ext/SmooksGraphicsExtType.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/graphics/ext/SmooksGraphicsExtType.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/graphics/ext/SmooksGraphicsExtType.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -139,6 +139,8 @@
 	 * @generated
 	 */
 	void setInputType(String value);
+	
+	void setInputType(String value , boolean fireEvent);
 
 	/**
 	 * Returns the value of the '<em><b>Name</b></em>' attribute.

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/graphics/ext/impl/SmooksGraphicsExtTypeImpl.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/graphics/ext/impl/SmooksGraphicsExtTypeImpl.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/graphics/ext/impl/SmooksGraphicsExtTypeImpl.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -292,6 +292,11 @@
 		inputType = newInputType;
 		if (eNotificationRequired())
 			eNotify(new ENotificationImpl(this, Notification.SET, GraphPackage.SMOOKS_GRAPHICS_EXT_TYPE__INPUT_TYPE, oldInputType, inputType));
+		List<ISmooksGraphChangeListener> listeners = this.getChangeListeners();
+		for (Iterator<ISmooksGraphChangeListener> iterator = listeners.iterator(); iterator.hasNext();) {
+			ISmooksGraphChangeListener iSmooksGraphChangeListener = (ISmooksGraphChangeListener) iterator.next();
+			iSmooksGraphChangeListener.graphPropertyChange(GraphPackage.Literals.SMOOKS_GRAPHICS_EXT_TYPE__INPUT_TYPE, inputType);
+		}
 	}
 
 	/**
@@ -543,5 +548,13 @@
 		return changeListeners;
 	}
 
+	public void setInputType(String value, boolean fireEvent) {
+		if(fireEvent){
+			setInputType(value);
+		}else{
+			inputType = value;
+		}
+	}
 
+
 } //SmooksGraphicsExtTypeImpl

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/json/impl/JsonReaderImpl.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/json/impl/JsonReaderImpl.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/json/impl/JsonReaderImpl.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -12,6 +12,7 @@
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.jboss.tools.smooks.model.json.JsonFactory;
 import org.jboss.tools.smooks.model.json.JsonPackage;
 import org.jboss.tools.smooks.model.json.JsonReader;
 import org.jboss.tools.smooks.model.json.KeyMap;
@@ -222,6 +223,7 @@
 	 */
 	protected JsonReaderImpl() {
 		super();
+		this.setKeyMap(JsonFactory.eINSTANCE.createKeyMap());
 	}
 
 	/**

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/json/provider/JsonReaderItemProvider.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/json/provider/JsonReaderItemProvider.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/json/provider/JsonReaderItemProvider.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -278,10 +278,11 @@
 	 */
 	@Override
 	public String getText(Object object) {
-		String label = ((JsonReader)object).getArrayElementName();
-		return label == null || label.length() == 0 ?
-			getString("_UI_JsonReader_type") :
-			getString("_UI_JsonReader_type") + " " + label;
+		return "JSON";
+//		String label = ((JsonReader)object).getArrayElementName();
+//		return label == null || label.length() == 0 ?
+//			getString("_UI_JsonReader_type") :
+//			getString("_UI_JsonReader_type") + " " + label;
 	}
 
 	/**

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/json/provider/KeyItemProvider.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/json/provider/KeyItemProvider.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/json/provider/KeyItemProvider.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -156,10 +156,16 @@
 	 */
 	@Override
 	public String getText(Object object) {
-		String label = ((Key)object).getValue();
-		return label == null || label.length() == 0 ?
-			getString("_UI_Key_type") :
-			getString("_UI_Key_type") + " " + label;
+		String label = ((Key)object).getTo();
+		String from = ((Key)object).getFrom();
+		String returnText = "-> ";
+		if(from != null){
+			returnText = from + " -> ";
+		}
+		if(label != null){
+			returnText = returnText + label;
+		}
+		return returnText;
 	}
 
 	/**

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/json12/impl/Json12ReaderImpl.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/json12/impl/Json12ReaderImpl.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/json12/impl/Json12ReaderImpl.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -14,6 +14,7 @@
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.jboss.tools.smooks.model.json12.Json12Factory;
 import org.jboss.tools.smooks.model.json12.Json12Package;
 import org.jboss.tools.smooks.model.json12.Json12Reader;
 import org.jboss.tools.smooks.model.json12.KeyMap;
@@ -255,6 +256,7 @@
 	 */
 	protected Json12ReaderImpl() {
 		super();
+		this.setKeyMap(Json12Factory.eINSTANCE.createKeyMap());
 	}
 
 	/**

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/json12/provider/Json12ReaderItemProvider.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/json12/provider/Json12ReaderItemProvider.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/json12/provider/Json12ReaderItemProvider.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -299,10 +299,11 @@
 	 * @generated
 	 */
 	public String getText(Object object) {
-		String label = ((Json12Reader)object).getArrayElementName();
-		return label == null || label.length() == 0 ?
-			getString("_UI_Json12Reader_type") :
-			getString("_UI_Json12Reader_type") + " " + label;
+		return "JSON";
+//		String label = ((Json12Reader)object).getArrayElementName();
+//		return label == null || label.length() == 0 ?
+//			getString("_UI_Json12Reader_type") :
+//			getString("_UI_Json12Reader_type") + " " + label;
 	}
 
 	/**

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/json12/provider/KeyItemProvider.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/json12/provider/KeyItemProvider.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/json12/provider/KeyItemProvider.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -11,12 +11,9 @@
 import java.util.Collection;
 import java.util.List;
 
-
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
-
 import org.eclipse.emf.common.util.ResourceLocator;
-
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
 import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
 import org.eclipse.emf.edit.provider.IItemLabelProvider;
@@ -153,10 +150,16 @@
 	 * @generated
 	 */
 	public String getText(Object object) {
-		String label = ((Key)object).getValue();
-		return label == null || label.length() == 0 ?
-			getString("_UI_Key_type") :
-			getString("_UI_Key_type") + " " + label;
+		String label = ((Key)object).getTo();
+		String from = ((Key)object).getFrom();
+		String returnText = "-> ";
+		if(from != null){
+			returnText = from + " -> ";
+		}
+		if(label != null){
+			returnText = returnText + label;
+		}
+		return returnText;
 	}
 
 	/**

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/smooks/provider/ReaderTypeItemProvider.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/smooks/provider/ReaderTypeItemProvider.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/smooks/provider/ReaderTypeItemProvider.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -139,10 +139,11 @@
 	 */
 	@Override
 	public String getText(Object object) {
-		String label = ((ReaderType)object).getTargetProfile();
-		return label == null || label.length() == 0 ?
-			getString("_UI_ReaderType_type") :
-			getString("_UI_ReaderType_type") + " " + label;
+		return "Custom";
+//		String label = ((ReaderType)object).getTargetProfile();
+//		return label == null || label.length() == 0 ?
+//			getString("_UI_ReaderType_type") :
+//			getString("_UI_ReaderType_type") + " " + label;
 	}
 
 	/**

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks10/model/smooks/util/SmooksModelUtils.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks10/model/smooks/util/SmooksModelUtils.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks10/model/smooks/util/SmooksModelUtils.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -51,11 +51,13 @@
 
 	public static final String INPUT_TYPE_JAVA = "java";
 
+	public static final String INPUT_TYPE_CUSTOME = "custom";
+
 	public static final String INPUT_TYPE_JSON_1_1 = "json";
 
-	public static final String INPUT_TYPE_CSV_1_1 = "csv";
+	public static final String INPUT_TYPE_CSV = "csv";
 
-	public static final String INPUT_TYPE_CSV_1_2 = "csv_1_2";
+	public static final String INPUT_TYPE_CSV_1_2 = "csv";
 
 	public static final String PARAM_NAME_CLASS = "class";
 
@@ -76,12 +78,12 @@
 	public static final String BEAN_ID = "beanId";
 
 	public static final String BINDINGS = "bindings";
-	
+
 	public static final String INPUT_TYPE_EDI_1_1 = "EDI";
 
-	public static final String INPUT_TYPE_EDI_1_2 = "EDI_1_2";
+	public static final String INPUT_TYPE_EDI_1_2 = "EDI";
 
-	public static final String INPUT_TYPE_JSON_1_2 = "json_1_2";
+	public static final String INPUT_TYPE_JSON_1_2 = "json";
 
 	public static EStructuralFeature ATTRIBUTE_PROPERTY = ExtendedMetaData.INSTANCE.demandFeature(null, "property",
 			false);
@@ -511,7 +513,7 @@
 		List<org.jboss.tools.smooks.model.graphics.ext.ParamType> list = input.getParam();
 		if (INPUT_TYPE_JAVA.equals(input.getType()) || INPUT_TYPE_XML.equals(input.getType())
 				|| INPUT_TYPE_XSD.equals(input.getType()) || INPUT_TYPE_JSON_1_1.equals(input.getType())
-				|| INPUT_TYPE_JSON_1_2.equals(input.getType()) || INPUT_TYPE_CSV_1_1.equals(input.getType())
+				|| INPUT_TYPE_JSON_1_2.equals(input.getType()) || INPUT_TYPE_CSV.equals(input.getType())
 				|| INPUT_TYPE_EDI_1_1.equals(input.getType()) || INPUT_TYPE_EDI_1_2.equals(input.getType())
 				|| INPUT_TYPE_CSV_1_2.equals(input.getType())) {
 			for (Iterator<?> iterator = list.iterator(); iterator.hasNext();) {

Added: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/ChildrenSelectionWizard.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/ChildrenSelectionWizard.java	                        (rev 0)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/ChildrenSelectionWizard.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -0,0 +1,76 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.smooks.configuration.editors;
+
+import java.util.Collection;
+
+import org.eclipse.emf.edit.command.CommandParameter;
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.jface.wizard.IWizard;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ * @author Dart
+ * 
+ */
+public class ChildrenSelectionWizard extends Wizard {
+
+	private ChildrenSelectionWizardPage page;
+
+	private PrivateWizardDialog dialog;
+
+	public ChildrenSelectionWizard(Shell shell, Collection<?> childrenDescriptor,
+			AdapterFactoryEditingDomain editingDomain) {
+		super();
+		dialog = new PrivateWizardDialog(shell, this){
+			
+		};
+		page = new ChildrenSelectionWizardPage(childrenDescriptor, editingDomain, "children selection",
+				"Select children", null);
+		page.setWizardDialog(dialog);
+	}
+	
+	public CommandParameter getChildDescriptor(){
+		return (CommandParameter)page.getChild();
+	}
+
+	public int open() {
+		return dialog.open();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.jface.wizard.Wizard#performFinish()
+	 */
+	@Override
+	public boolean performFinish() {
+		return true;
+	}
+
+	@Override
+	public void addPages() {
+		this.addPage(page);
+	}
+	
+	class PrivateWizardDialog extends WizardDialog{
+
+		public PrivateWizardDialog(Shell parentShell, IWizard newWizard) {
+			super(parentShell, newWizard);
+		}
+		public void pressOK(){
+			this.okPressed();
+		}
+	}
+
+}


Property changes on: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/ChildrenSelectionWizard.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/ChildrenSelectionWizardPage.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/ChildrenSelectionWizardPage.java	                        (rev 0)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/ChildrenSelectionWizardPage.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -0,0 +1,183 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.smooks.configuration.editors;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.edit.command.CommandParameter;
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.jboss.tools.smooks.configuration.editors.ChildrenSelectionWizard.PrivateWizardDialog;
+
+/**
+ * @author Dart
+ * 
+ */
+public class ChildrenSelectionWizardPage extends WizardPage {
+
+	private Collection<?> childrenDescriptor = new ArrayList<CommandParameter>();
+
+	private AdapterFactoryEditingDomain editingDomain = null;
+
+	protected Object child;
+
+	private PrivateWizardDialog dialog;
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets
+	 * .Composite)
+	 */
+	public void createControl(Composite parent) {
+		Composite mainComposite = new Composite(parent, SWT.NONE);
+
+		GridData gd = new GridData(GridData.FILL_BOTH);
+		mainComposite.setLayoutData(gd);
+
+		mainComposite.setLayout(new FillLayout());
+
+		final TableViewer tableViewer = new TableViewer(mainComposite, SWT.BORDER | SWT.FULL_SELECTION);
+		tableViewer.setContentProvider(new ChildrenDescriptorContentProvider());
+		tableViewer.setLabelProvider(new ChildrenDescriptorLabelProvider());
+		tableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
+
+			public void selectionChanged(SelectionChangedEvent event) {
+				child = null;
+				if (!((IStructuredSelection) tableViewer.getSelection()).isEmpty()) {
+					child = ((IStructuredSelection) tableViewer.getSelection()).getFirstElement();
+					updatePage();
+				}
+			}
+		});
+		tableViewer.addDoubleClickListener(new IDoubleClickListener() {
+			
+			public void doubleClick(DoubleClickEvent event) {
+				dialog.close();
+			}
+		});
+		if(childrenDescriptor != null){
+			tableViewer.setInput(childrenDescriptor);
+		}
+		updatePage();
+		setControl(mainComposite);
+	}
+
+	public Object getChild() {
+		return child;
+	}
+
+	protected void updatePage() {
+		String error = null;
+		if (child == null) {
+			error = "Please choose a child type";
+		}
+
+		this.setErrorMessage(error);
+		this.setPageComplete(error == null);
+	}
+
+	public ChildrenSelectionWizardPage(Collection<?> childrenDescriptor,
+			AdapterFactoryEditingDomain editingDomain, String pageName, String title, ImageDescriptor titleImage) {
+		super(pageName, title, titleImage);
+		this.childrenDescriptor = childrenDescriptor;
+		this.editingDomain = editingDomain;
+		this.setTitle("Select a Child's Type");
+		this.setDescription("Select a child's type");
+	}
+
+	public ChildrenSelectionWizardPage(Collection<?> childrenDescriptor,
+			AdapterFactoryEditingDomain editingDomain,String pageName) {
+		super(pageName);
+		this.childrenDescriptor = childrenDescriptor;
+		this.editingDomain = editingDomain;
+		this.setTitle("Select a Child's Type");
+		this.setDescription("Select a child's type");
+	}
+
+	private Object getValue(Object element) {
+		if (element instanceof CommandParameter) {
+			Object v = ((CommandParameter) element).getValue();
+			v = AdapterFactoryEditingDomain.unwrap(v);
+			return v;
+		}
+		return element;
+	}
+
+	private class ChildrenDescriptorContentProvider implements IStructuredContentProvider {
+
+		public Object[] getElements(Object inputElement) {
+			if (inputElement instanceof Collection<?>) {
+				return ((Collection<?>) inputElement).toArray();
+			}
+			return new Object[] {};
+		}
+
+		public void dispose() {
+			// TODO Auto-generated method stub
+
+		}
+
+		public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+			// TODO Auto-generated method stub
+
+		}
+
+	}
+
+	private class ChildrenDescriptorLabelProvider extends LabelProvider {
+
+		@Override
+		public Image getImage(Object element) {
+			element = getValue(element);
+			IItemLabelProvider provider = (IItemLabelProvider) editingDomain.getAdapterFactory().adapt(element,
+					IItemLabelProvider.class);
+			Object img = provider.getImage(element);
+			if(img instanceof Image){
+				return ((Image)img);
+			}
+			return null;
+
+		}
+
+		@Override
+		public String getText(Object element) {
+			element = getValue(element);
+			IItemLabelProvider provider = (IItemLabelProvider) editingDomain.getAdapterFactory().adapt(element,
+					IItemLabelProvider.class);
+			return provider.getText(element);
+		}
+
+	}
+
+	public void setWizardDialog(PrivateWizardDialog dialog) {
+		this.dialog = dialog;
+	}
+
+}


Property changes on: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/ChildrenSelectionWizardPage.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/ContainerChildrenTablePanelCreator.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/ContainerChildrenTablePanelCreator.java	                        (rev 0)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/ContainerChildrenTablePanelCreator.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -0,0 +1,105 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.smooks.configuration.editors;
+
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CompoundCommand;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.command.RemoveCommand;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.jboss.tools.smooks.editor.ISmooksModelProvider;
+
+/**
+ * @author Dart
+ * 
+ */
+public class ContainerChildrenTablePanelCreator extends ModelChildrenTablePanelCreator {
+
+	private EStructuralFeature containerFeature = null;
+
+	private EObject rootModel;
+
+	public ContainerChildrenTablePanelCreator(ISmooksModelProvider smooksModelProvider, EObject rootModel,
+			FormToolkit toolkit, IEditorPart editorPart) {
+		super(smooksModelProvider, null, toolkit, editorPart);
+		this.rootModel = rootModel;
+	}
+
+	public EStructuralFeature getContainerFeature() {
+		return containerFeature;
+	}
+
+	public void setContainerFeature(EStructuralFeature containerFeature) {
+		this.containerFeature = containerFeature;
+	}
+
+	public EObject getRootModel() {
+		return rootModel;
+	}
+
+	public void setRootModel(EObject rootModel) {
+		this.rootModel = rootModel;
+	}
+
+	@Override
+	protected boolean performNewChild() {
+		if (getRootModel() != null) {
+			EObject rootModel = getRootModel();
+			EStructuralFeature feature = getContainerFeature();
+			if (feature != null) {
+				Object container = rootModel.eGet(feature);
+				if (container == null) {
+					container = newContainerModel();
+					if (container != null){
+						rootModel.eSet(containerFeature, container);
+						this.setParentModel((EObject) container);
+						if(getChildrenTableViewer() != null){
+							getChildrenTableViewer().setInput(getParentModel());
+						}
+					}
+				}else{
+					this.setParentModel((EObject) container);
+					if(getChildrenTableViewer() != null){
+						getChildrenTableViewer().setInput(getParentModel());
+					}
+				}
+				
+				return true;
+			}
+		}
+		return false;
+	}
+
+	protected EObject newContainerModel() {
+		return null;
+	}
+
+	@Override
+	protected void performRunRemoveCommand(CompoundCommand compoundCommand, EditingDomain editingDomain) {
+		if (this.getParentModel() != null) {
+			EObject h = getParentModel();
+			if (h.eContents().size() == 1) {
+				Command command1 = RemoveCommand.create(editingDomain, h);
+				compoundCommand.append(command1);
+				this.setParentModel(null);
+			}
+		}
+		super.performRunRemoveCommand(compoundCommand, editingDomain);
+	}
+
+	@Override
+	protected void endRemoveChild() {
+		super.endRemoveChild();
+	}
+}


Property changes on: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/ContainerChildrenTablePanelCreator.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/FileSelectionWizard.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/FileSelectionWizard.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/FileSelectionWizard.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -38,7 +38,7 @@
 
 	@Override
 	public void addPages() {
-		fileSelectionWizardPage = new FileSelectionWizardPage("File Selection");
+		fileSelectionWizardPage = new FileSelectionWizardPage("File Selection" ,null);
 		fileSelectionWizardPage.setFilters(viewerFilters);
 		fileSelectionWizardPage.setInitSelections(getInitSelections());
 		fileSelectionWizardPage.setMultiSelect(isMultiSelect());

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/FileSelectionWizardPage.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/FileSelectionWizardPage.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/FileSelectionWizardPage.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -17,11 +17,11 @@
  * @author Dart Peng (dpeng at redhat.com) Date Apr 13, 2009
  */
 public class FileSelectionWizardPage extends AbstractFileSelectionWizardPage {
-	
+
 	private ProtableFileStringProcessor processor = null;
-	
-	public FileSelectionWizardPage(String pageName) {
-		super(pageName , new String[]{});
+
+	public FileSelectionWizardPage(String pageName, Object[] initSelection) {
+		super(pageName, new String[] {});
 		processor = new ProtableFileStringProcessor();
 		setFilePathProcessor(processor);
 		setTitle("File Selection");
@@ -40,12 +40,11 @@
 		return null;
 	}
 
-
 	@Override
 	protected String processFileSystemFilePath(String path) {
-		if(getFilePathProcessor() != null){
+		if (getFilePathProcessor() != null) {
 			String s = getFilePathProcessor().processFileSystemPath(path);
-			if(s != null){
+			if (s != null) {
 				return s;
 			}
 		}
@@ -54,18 +53,17 @@
 
 	@Override
 	protected String processWorkSpaceFilePath(IFile file) {
-		if(getFilePathProcessor() != null){
+		if (getFilePathProcessor() != null) {
 			String s = getFilePathProcessor().processWorkBenchPath(file);
-			if(s != null){
+			if (s != null) {
 				return s;
 			}
 		}
 		return this.processor.processWorkBenchPath(file);
 	}
 
+	private class ProtableFileStringProcessor implements IFilePathProcessor {
 
-	private class ProtableFileStringProcessor implements IFilePathProcessor{
-
 		public String processWorkBenchPath(IFile file) {
 			String s = file.getFullPath().toPortableString();
 			return s;
@@ -74,7 +72,7 @@
 		public String processFileSystemPath(String filePath) {
 			return filePath;
 		}
-		
+
 	}
 
 }

Added: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/ModelChildrenTablePanelCreator.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/ModelChildrenTablePanelCreator.java	                        (rev 0)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/ModelChildrenTablePanelCreator.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -0,0 +1,407 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.smooks.configuration.editors;
+
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CompoundCommand;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.command.MoveCommand;
+import org.eclipse.emf.edit.command.RemoveCommand;
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.viewers.DecoratingLabelProvider;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.jboss.tools.smooks.configuration.SmooksConfigurationActivator;
+import org.jboss.tools.smooks.editor.ISmooksModelProvider;
+import org.jboss.tools.smooks.model.common.AbstractAnyType;
+
+/**
+ * @author Dart
+ * 
+ */
+public class ModelChildrenTablePanelCreator {
+
+	private ISmooksModelProvider smooksModelProvider;
+
+	protected TableViewer childrenTableViewer;
+
+	private Button newChildButton;
+
+	private Button removeRemoveButton;
+
+	private Button upChildButton;
+
+	private Button downChildButton;
+
+	private Button childPropertiesButton;
+
+	private EObject parentModel;
+
+	private FormToolkit toolkit;
+
+	private IEditorPart editorPart;
+
+	public ModelChildrenTablePanelCreator(ISmooksModelProvider smooksModelProvider, EObject parentModel,
+			FormToolkit toolkit, IEditorPart editorPart) {
+		this.parentModel = parentModel;
+		this.smooksModelProvider = smooksModelProvider;
+		this.toolkit = toolkit;
+		this.editorPart = editorPart;
+	}
+
+	public Composite createChildrenTablePanel(Composite parent) {
+		Composite mainComposite = toolkit.createComposite(parent);
+		GridLayout gl = new GridLayout();
+		gl.numColumns = 2;
+		mainComposite.setLayout(gl);
+		createChildrenTablePanel(mainComposite, toolkit);
+		return mainComposite;
+	}
+
+	protected void createChildrenTablePanel(Composite mainComposite, FormToolkit toolkit) {
+		if (smooksModelProvider != null) {
+			AdapterFactoryEditingDomain editingDomain = (AdapterFactoryEditingDomain) smooksModelProvider
+					.getEditingDomain();
+			EObject parentModel = getParentModel();
+
+			childrenTableViewer = new TableViewer(mainComposite);
+			GridData gd = new GridData(GridData.FILL_BOTH);
+			childrenTableViewer.getControl().setLayoutData(gd);
+			toolkit.paintBordersFor(mainComposite);
+			Composite buttonArea = toolkit.createComposite(mainComposite);
+			gd = new GridData(GridData.FILL_VERTICAL);
+			gd.widthHint = 30;
+			GridLayout bgl = new GridLayout();
+			buttonArea.setLayout(bgl);
+
+			newChildButton = toolkit.createButton(buttonArea, "New", SWT.NONE);
+			gd = new GridData(GridData.FILL_HORIZONTAL);
+			gd.verticalAlignment = GridData.BEGINNING;
+			newChildButton.setLayoutData(gd);
+
+			removeRemoveButton = toolkit.createButton(buttonArea, "Remove", SWT.NONE);
+			gd = new GridData(GridData.FILL_HORIZONTAL);
+			gd.verticalAlignment = GridData.BEGINNING;
+			removeRemoveButton.setLayoutData(gd);
+
+			upChildButton = toolkit.createButton(buttonArea, "Up", SWT.NONE);
+			gd = new GridData(GridData.FILL_HORIZONTAL);
+			gd.verticalAlignment = GridData.BEGINNING;
+			upChildButton.setLayoutData(gd);
+
+			downChildButton = toolkit.createButton(buttonArea, "Down", SWT.NONE);
+			gd = new GridData(GridData.FILL_HORIZONTAL);
+			gd.verticalAlignment = GridData.BEGINNING;
+			downChildButton.setLayoutData(gd);
+
+			childPropertiesButton = toolkit.createButton(buttonArea, "Properties..", SWT.NONE);
+			gd = new GridData(GridData.FILL_HORIZONTAL);
+			gd.verticalAlignment = GridData.BEGINNING;
+			childPropertiesButton.setLayoutData(gd);
+
+			childrenTableViewer
+					.setContentProvider(new AdapterFactoryContentProvider(editingDomain.getAdapterFactory()) {
+
+						@Override
+						public boolean hasChildren(Object object) {
+							return false;
+						}
+
+					});
+
+			childrenTableViewer.setLabelProvider(new DecoratingLabelProvider(new AdapterFactoryLabelProvider(
+					editingDomain.getAdapterFactory()) {
+
+				/*
+				 * (non-Javadoc)
+				 * 
+				 * @see
+				 * org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider
+				 * # getText(java.lang.Object)
+				 */
+				@Override
+				public String getText(Object object) {
+					Object obj = AdapterFactoryEditingDomain.unwrap(object);
+					if (obj instanceof AbstractAnyType) {
+						return super.getText(obj);
+					}
+					return super.getText(object);
+				}
+
+			}, SmooksConfigurationActivator.getDefault().getWorkbench().getDecoratorManager().getLabelDecorator()));
+
+			if (parentModel != null) {
+				childrenTableViewer.setInput(parentModel);
+			}
+
+			childrenTableViewer.addDoubleClickListener(new IDoubleClickListener() {
+
+				public void doubleClick(DoubleClickEvent event) {
+					openChildPropertiesModifyDialog();
+				}
+			});
+
+			childrenTableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
+
+				public void selectionChanged(SelectionChangedEvent event) {
+					updateButtons();
+				}
+			});
+
+			hookButtons();
+			updateButtons();
+		}
+	}
+
+	protected TableViewer getChildrenTableViewer() {
+		return childrenTableViewer;
+	}
+
+	protected EObject newChildModel() {
+		return null;
+	}
+
+	protected EStructuralFeature getChildrenFeature() {
+		return null;
+	}
+
+	protected boolean performNewChild() {
+		return true;
+	}
+
+	protected void endNewChild() {
+
+	}
+
+	protected void performRemoveChild() {
+
+	}
+
+	protected void endRemoveChild() {
+
+	}
+
+	protected void hookButtons() {
+		newChildButton.addSelectionListener(new SelectionAdapter() {
+
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				if (getSmooksVersion() == null) {
+					return;
+				}
+				if (performNewChild()) {
+					EObject childModel = newChildModel();
+					EObject parent = getParentModel();
+					if (parent == null || childModel == null) {
+						return;
+					}
+					EStructuralFeature profileFeature = getChildrenFeature();
+					try {
+						NewOrModifySmooksElementDialog dialog = new NewOrModifySmooksElementDialog(editorPart
+								.getEditorSite().getShell(), profileFeature, childModel, parent, toolkit,
+								smooksModelProvider, editorPart, false);
+
+						if (dialog.open() == Dialog.OK) {
+							endNewChild();
+						}
+					} catch (Throwable e1) {
+						e1.printStackTrace();
+					}
+				}
+				super.widgetSelected(e);
+			}
+
+		});
+		removeRemoveButton.addSelectionListener(new SelectionAdapter() {
+
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				IStructuredSelection selection = (IStructuredSelection) childrenTableViewer.getSelection();
+				if (selection == null)
+					return;
+				Object obj = selection.getFirstElement();
+				if (obj instanceof EObject) {
+					performRemoveChild();
+					EObject profile = (EObject) obj;
+					EObject parent = getParentModel();
+					if (parent == null)
+						return;
+					CompoundCommand compoundCommand = new CompoundCommand();
+					Command command = RemoveCommand.create(smooksModelProvider.getEditingDomain(), profile);
+					compoundCommand.append(command);
+					performRunRemoveCommand(compoundCommand, smooksModelProvider.getEditingDomain());
+					smooksModelProvider.getEditingDomain().getCommandStack().execute(compoundCommand);
+					endRemoveChild();
+				}
+			}
+
+		});
+		upChildButton.addSelectionListener(new SelectionAdapter() {
+
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				IStructuredSelection selection = (IStructuredSelection) childrenTableViewer.getSelection();
+				if (selection == null)
+					return;
+				Object obj = selection.getFirstElement();
+				if (obj instanceof EObject) {
+					EObject profilesType = getParentModel();
+					if (profilesType == null)
+						return;
+					EObject v = (EObject) AdapterFactoryEditingDomain.unwrap(obj);
+					EObject parent = v.eContainer();
+					int index = parent.eContents().indexOf(v);
+					Command command = MoveCommand.create(smooksModelProvider.getEditingDomain(), parent, null, obj,
+							index - 1);
+					smooksModelProvider.getEditingDomain().getCommandStack().execute(command);
+				}
+			}
+
+		});
+		downChildButton.addSelectionListener(new SelectionAdapter() {
+
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				IStructuredSelection selection = (IStructuredSelection) childrenTableViewer.getSelection();
+				if (selection == null)
+					return;
+				Object obj = selection.getFirstElement();
+				if (obj instanceof EObject) {
+					EObject profilesType = getParentModel();
+					if (profilesType == null)
+						return;
+					EObject v = (EObject) AdapterFactoryEditingDomain.unwrap(obj);
+					EObject parent = v.eContainer();
+					int index = parent.eContents().indexOf(v);
+					Command command = MoveCommand.create(smooksModelProvider.getEditingDomain(), parent, null, obj,
+							index + 1);
+					smooksModelProvider.getEditingDomain().getCommandStack().execute(command);
+				}
+			}
+
+		});
+		childPropertiesButton.addSelectionListener(new SelectionAdapter() {
+
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				openChildPropertiesModifyDialog();
+				super.widgetSelected(e);
+			}
+
+		});
+
+	}
+
+	protected void performRunRemoveCommand(CompoundCommand compoundCommand, EditingDomain editDomain) {
+
+	}
+
+	protected void updateButtons() {
+		if (getSmooksVersion() == null) {
+			childPropertiesButton.setEnabled(false);
+			newChildButton.setEnabled(false);
+			removeRemoveButton.setEnabled(false);
+			upChildButton.setEnabled(false);
+			downChildButton.setEnabled(false);
+			return;
+		}
+		childPropertiesButton.setEnabled(true);
+		removeRemoveButton.setEnabled(true);
+		IStructuredSelection selection = (IStructuredSelection) childrenTableViewer.getSelection();
+		if (selection == null) {
+			childPropertiesButton.setEnabled(false);
+			removeRemoveButton.setEnabled(false);
+			upChildButton.setEnabled(false);
+			downChildButton.setEnabled(false);
+		} else {
+			if (selection.getFirstElement() == null) {
+				childPropertiesButton.setEnabled(false);
+				removeRemoveButton.setEnabled(false);
+				upChildButton.setEnabled(false);
+				downChildButton.setEnabled(false);
+				return;
+			}
+
+			Object obj = selection.getFirstElement();
+			if (obj instanceof EObject) {
+				EObject profilesType = getParentModel();
+				if (profilesType == null)
+					return;
+				EObject v = (EObject) AdapterFactoryEditingDomain.unwrap(obj);
+				EObject parent = v.eContainer();
+				int index = parent.eContents().indexOf(v);
+				Command command = MoveCommand.create(smooksModelProvider.getEditingDomain(), parent, null, obj,
+						index - 1);
+				upChildButton.setEnabled(command.canExecute());
+
+				Command command1 = MoveCommand.create(smooksModelProvider.getEditingDomain(), parent, null, obj,
+						index + 1);
+				downChildButton.setEnabled(command1.canExecute());
+			}
+
+			if (selection.size() > 1) {
+				childPropertiesButton.setEnabled(false);
+				removeRemoveButton.setEnabled(false);
+			}
+		}
+
+	}
+
+	protected void openChildPropertiesModifyDialog() {
+		IStructuredSelection selection = (IStructuredSelection) childrenTableViewer.getSelection();
+		if (selection == null)
+			return;
+		Object obj = selection.getFirstElement();
+		if (obj instanceof EObject) {
+			EObject child = (EObject) obj;
+			EObject parent = getParentModel();
+			EStructuralFeature childFeature = getChildrenFeature();
+
+			NewOrModifySmooksElementDialog dialog = new NewOrModifySmooksElementDialog(editorPart.getEditorSite()
+					.getShell(), childFeature, child, parent, toolkit, smooksModelProvider, editorPart, true);
+			dialog.open();
+		}
+	}
+
+	public EObject getParentModel() {
+		return parentModel;
+	}
+
+	public void setParentModel(EObject parentModel) {
+		this.parentModel = parentModel;
+	}
+
+	public String getSmooksVersion() {
+		if (this.smooksModelProvider != null) {
+			return this.smooksModelProvider.getSmooksGraphicsExt().getPlatformVersion();
+		}
+		return null;
+	}
+
+}


Property changes on: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/ModelChildrenTablePanelCreator.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/ModelMultiChildrenTabelPanelCreator.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/ModelMultiChildrenTabelPanelCreator.java	                        (rev 0)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/ModelMultiChildrenTabelPanelCreator.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -0,0 +1,90 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.smooks.configuration.editors;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.command.CommandParameter;
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.jboss.tools.smooks.editor.ISmooksModelProvider;
+
+/**
+ * @author Dart
+ * 
+ */
+public class ModelMultiChildrenTabelPanelCreator extends ModelChildrenTablePanelCreator {
+
+	private Shell shell;
+
+	private Collection<?> children;
+
+	private AdapterFactoryEditingDomain editingDomain;
+
+	private EStructuralFeature feature;
+
+	private EObject newChild = null;
+
+	public ModelMultiChildrenTabelPanelCreator(Shell shell, Collection<?> children,
+			AdapterFactoryEditingDomain editingDomain, ISmooksModelProvider smooksModelProvider, EObject parentModel,
+			FormToolkit toolkit, IEditorPart editorPart) {
+		super(smooksModelProvider, parentModel, toolkit, editorPart);
+		this.shell = shell;
+		this.children = children;
+		this.editingDomain = editingDomain;
+	}
+
+	@Override
+	protected boolean performNewChild() {
+		List<Object> cloneChildren = new ArrayList<Object>();
+		cloneChildren.addAll(children);
+		ChildrenSelectionWizard wizard = new ChildrenSelectionWizard(shell, cloneChildren, editingDomain);
+		if (wizard.open() == Dialog.OK) {
+			CommandParameter param = wizard.getChildDescriptor();
+			if (param != null) {
+				feature = getChildFeature(param);
+				newChild = getNewChildInstance(param);
+
+				if (feature != null && newChild != null) {
+					return super.performNewChild();
+				}
+
+			}
+		}
+		return false;
+	}
+
+	protected EObject getNewChildInstance(CommandParameter param) {
+		return param.getEValue();
+	}
+
+	protected EStructuralFeature getChildFeature(CommandParameter param) {
+		return param.getEStructuralFeature();
+	}
+
+	@Override
+	protected EStructuralFeature getChildrenFeature() {
+		return feature;
+	}
+
+	@Override
+	protected EObject newChildModel() {
+		return newChild;
+	}
+
+}


Property changes on: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/ModelMultiChildrenTabelPanelCreator.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/MultiContainerChildrenAddtionTablePanel.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/MultiContainerChildrenAddtionTablePanel.java	                        (rev 0)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/MultiContainerChildrenAddtionTablePanel.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -0,0 +1,91 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.smooks.configuration.editors;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.command.CommandParameter;
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.jboss.tools.smooks.editor.ISmooksModelProvider;
+
+/**
+ * @author Dart
+ * 
+ */
+public class MultiContainerChildrenAddtionTablePanel extends ContainerChildrenTablePanelCreator {
+
+	private Shell shell;
+
+	private Collection<?> children;
+
+	private AdapterFactoryEditingDomain editingDomain;
+
+	private EStructuralFeature feature;
+
+	private EObject newChild = null;
+
+	public MultiContainerChildrenAddtionTablePanel(Shell shell, Collection<?> children,
+			AdapterFactoryEditingDomain editingDomain, ISmooksModelProvider smooksModelProvider, EObject rootModel,
+			FormToolkit toolkit, IEditorPart editorPart) {
+		super(smooksModelProvider, rootModel, toolkit, editorPart);
+		this.shell = shell;
+		this.children = children;
+		this.editingDomain = editingDomain;
+	}
+
+	@Override
+	protected boolean performNewChild() {
+		List<Object> cloneChildren = new ArrayList<Object>();
+		cloneChildren.addAll(children);
+		ChildrenSelectionWizard wizard = new ChildrenSelectionWizard(shell, cloneChildren, editingDomain);
+		if (wizard.open() == Dialog.OK) {
+			CommandParameter param = wizard.getChildDescriptor();
+			if (param != null) {
+				feature = getChildFeature(param);
+				newChild = getNewChildInstance(param);
+
+				if (feature != null && newChild != null) {
+					return super.performNewChild();
+				}
+
+			}
+		}
+		return false;
+	}
+
+	protected EObject getNewChildInstance(CommandParameter parameter) {
+		if(parameter == null) return null;
+		return parameter.getEValue();
+	}
+
+	protected EStructuralFeature getChildFeature(CommandParameter parameter) {
+		if(parameter == null) return null;
+		return  parameter.getEStructuralFeature();
+	}
+
+	@Override
+	protected EStructuralFeature getChildrenFeature() {
+		return feature;
+	}
+
+	@Override
+	protected EObject newChildModel() {
+		return newChild;
+	}
+}


Property changes on: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/MultiContainerChildrenAddtionTablePanel.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/NewOrModifySmooksElementDialog.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/NewOrModifySmooksElementDialog.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/NewOrModifySmooksElementDialog.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -12,8 +12,10 @@
 
 import org.eclipse.emf.common.command.Command;
 import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
 import org.eclipse.emf.ecore.EStructuralFeature;
 import org.eclipse.emf.edit.command.AddCommand;
+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;
@@ -79,7 +81,7 @@
 	protected void createButtonsForButtonBar(Composite parent) {
 		// create OK and Cancel buttons by default
 		String okLabel = IDialogConstants.OK_LABEL;
-		if(modify){
+		if (modify) {
 			okLabel = "Close";
 		}
 		createButton(parent, IDialogConstants.OK_ID, okLabel, true);
@@ -120,8 +122,17 @@
 		try {
 			if (!modify && parentModel != null && modelProvider != null && feature != null) {
 				EditingDomain editingDomain = modelProvider.getEditingDomain();
-				Command command = AddCommand.create(editingDomain, parentModel, feature, model);
-				editingDomain.getCommandStack().execute(command);
+				Command command = null;
+
+				if (feature instanceof EReference) {
+					if (((EReference) feature).isMany()) {
+						command = AddCommand.create(editingDomain, parentModel, feature, model);
+					} else {
+						command = SetCommand.create(editingDomain, parentModel, feature, model);
+					}
+				}
+				if (command != null)
+					editingDomain.getCommandStack().execute(command);
 			}
 		} catch (Exception e) {
 			e.printStackTrace();

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/PropertyUICreator.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/PropertyUICreator.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/PropertyUICreator.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -15,7 +15,11 @@
 import java.util.Iterator;
 import java.util.List;
 
+import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.emf.common.util.URI;
 import org.eclipse.emf.ecore.EAttribute;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
@@ -149,9 +153,22 @@
 	public AttributeFieldEditPart createFileSelectionFieldEditor(FormToolkit toolkit, Composite parent,
 			IItemPropertyDescriptor propertyDescriptor, Object model, EAttribute feature,
 			ISmooksModelProvider formEditor) {
+		final ISmooksModelProvider provider = formEditor;
 		IFieldDialog dialog = new IFieldDialog() {
 			public Object open(Shell shell) {
 				FileSelectionWizard wizard = new FileSelectionWizard();
+				EObject model = provider.getSmooksModel();
+				if(model != null){
+					URI uri = model.eResource().getURI();
+					if(uri.isPlatformResource()){
+						String path = uri.toPlatformString(true);
+						IResource workspaceResource = ResourcesPlugin.getWorkspace().getRoot().findMember(new Path(path));
+						if(workspaceResource instanceof IFile){
+							workspaceResource = ((IFile)workspaceResource).getParent();
+						}
+						wizard.setInitSelections(new Object[]{workspaceResource});
+					}
+				}
 				wizard.setViewerFilters(getFileDialogViewerFilters());
 				WizardDialog dialog = new WizardDialog(shell, wizard);
 				if (dialog.open() == Dialog.OK) {
@@ -200,7 +217,7 @@
 			IItemPropertyDescriptor propertyDescriptor, Object model, EAttribute feature,
 			ISmooksModelProvider formEditor) {
 		if (model instanceof EObject)
-			return SmooksUIUtils.createJavaTypeSearchFieldEditor(parent, toolkit, propertyDescriptor, (EObject) model);
+			return SmooksUIUtils.createJavaTypeSearchFieldEditor(parent, toolkit, propertyDescriptor, (EObject) model , formEditor);
 		return null;
 	}
 

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/PropertyUICreatorManager.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/PropertyUICreatorManager.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/PropertyUICreatorManager.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -17,6 +17,7 @@
 import org.jboss.tools.smooks.configuration.editors.csv.CsvReaderUICreator;
 import org.jboss.tools.smooks.configuration.editors.csv12.Csv12ReaderBindingPropertyUICreator;
 import org.jboss.tools.smooks.configuration.editors.csv12.Csv12ReaderMapBindingPropertyUICreator;
+import org.jboss.tools.smooks.configuration.editors.csv12.Csv12ReaderUICreator;
 import org.jboss.tools.smooks.configuration.editors.datasource.DataSourceJndiUICreator;
 import org.jboss.tools.smooks.configuration.editors.datasource.DirectUICreator;
 import org.jboss.tools.smooks.configuration.editors.dbrouting.ExecutorUICreator;
@@ -59,6 +60,7 @@
 import org.jboss.tools.smooks.configuration.editors.json.JsonReaderUICreator;
 import org.jboss.tools.smooks.configuration.editors.json.KeyMapUICreator;
 import org.jboss.tools.smooks.configuration.editors.json.KeyUICreator;
+import org.jboss.tools.smooks.configuration.editors.json12.Json12ReaderUICreator;
 import org.jboss.tools.smooks.configuration.editors.persistence12.DeleterUICreator;
 import org.jboss.tools.smooks.configuration.editors.persistence12.FlusherUICreator;
 import org.jboss.tools.smooks.configuration.editors.persistence12.InserterUICreator;
@@ -92,6 +94,7 @@
 import org.jboss.tools.smooks.model.calc.impl.CounterImpl;
 import org.jboss.tools.smooks.model.csv.impl.CsvReaderImpl;
 import org.jboss.tools.smooks.model.csv12.impl.BindingImpl;
+import org.jboss.tools.smooks.model.csv12.impl.CSV12ReaderImpl;
 import org.jboss.tools.smooks.model.csv12.impl.MapBindingImpl;
 import org.jboss.tools.smooks.model.datasource.impl.DataSourceJndiImpl;
 import org.jboss.tools.smooks.model.datasource.impl.DirectImpl;
@@ -123,6 +126,7 @@
 import org.jboss.tools.smooks.model.json.impl.JsonReaderImpl;
 import org.jboss.tools.smooks.model.json.impl.KeyImpl;
 import org.jboss.tools.smooks.model.json.impl.KeyMapImpl;
+import org.jboss.tools.smooks.model.json12.impl.Json12ReaderImpl;
 import org.jboss.tools.smooks.model.medi.impl.ComponentImpl;
 import org.jboss.tools.smooks.model.medi.impl.DelimitersImpl;
 import org.jboss.tools.smooks.model.medi.impl.DescriptionImpl;
@@ -249,6 +253,9 @@
 		map.put(KeyImpl.class, new KeyUICreator());
 		map.put(KeyMapImpl.class, new KeyMapUICreator());
 		map.put(JsonReaderImpl.class, new JsonReaderUICreator());
+		
+		// for JSON 1.2
+		map.put(Json12ReaderImpl.class, new Json12ReaderUICreator());
 
 		// for CSV
 		map.put(CsvReaderImpl.class, new CsvReaderUICreator());
@@ -316,6 +323,7 @@
 		// for CSV Reader v1.2
 		map.put(BindingImpl.class, new Csv12ReaderBindingPropertyUICreator());
 		map.put(MapBindingImpl.class, new Csv12ReaderMapBindingPropertyUICreator());
+		map.put(CSV12ReaderImpl.class, new Csv12ReaderUICreator());
 		
 		// for EDI Reader v1.2
 		map.put(EDI12ReaderImpl.class, new EDIReader12UICreator());

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SelectorCreationDialog.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SelectorCreationDialog.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SelectorCreationDialog.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -42,7 +42,6 @@
 import org.eclipse.ui.forms.events.IHyperlinkListener;
 import org.eclipse.ui.forms.widgets.FormToolkit;
 import org.eclipse.ui.forms.widgets.Hyperlink;
-import org.jboss.tools.smooks.configuration.SmooksConfigurationActivator;
 import org.jboss.tools.smooks.configuration.editors.csv.CSVDataParser;
 import org.jboss.tools.smooks.configuration.editors.edi.EDIDataParser;
 import org.jboss.tools.smooks.configuration.editors.javabean.JavaBeanModel;
@@ -269,7 +268,7 @@
 								t.printStackTrace();
 							}
 						}
-						if (SmooksModelUtils.INPUT_TYPE_CSV_1_1.equals(type)
+						if (SmooksModelUtils.INPUT_TYPE_CSV.equals(type)
 								|| SmooksModelUtils.INPUT_TYPE_CSV_1_2.equals(type)) {
 							CSVDataParser parser = new CSVDataParser();
 							try {
@@ -351,7 +350,7 @@
 					}
 				}
 			} catch (Exception e) {
-				SmooksConfigurationActivator.getDefault().log(e);
+//				SmooksConfigurationActivator.getDefault().log(e);
 			}
 		}
 		return list;

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SmooksConfigurationFormPage.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SmooksConfigurationFormPage.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SmooksConfigurationFormPage.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -44,7 +44,6 @@
 
 	public SmooksConfigurationFormPage(FormEditor editor, String id, String title) {
 		super(editor, id, title);
-		((SmooksMultiFormEditor) editor).getSmooksGraphicsExt().addSmooksGraphChangeListener(this);
 	}
 
 	public SmooksConfigurationFormPage(String id, String title) {

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SmooksConfigurationOverviewPage.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SmooksConfigurationOverviewPage.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SmooksConfigurationOverviewPage.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -49,6 +49,7 @@
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.forms.IFormColors;
 import org.eclipse.ui.forms.IManagedForm;
 import org.eclipse.ui.forms.editor.FormEditor;
 import org.eclipse.ui.forms.editor.FormPage;
@@ -57,6 +58,7 @@
 import org.eclipse.ui.forms.widgets.FormText;
 import org.eclipse.ui.forms.widgets.FormToolkit;
 import org.eclipse.ui.forms.widgets.ScrolledForm;
+import org.eclipse.ui.forms.widgets.ScrolledPageBook;
 import org.eclipse.ui.forms.widgets.Section;
 import org.jboss.tools.smooks.configuration.SmooksConfigurationActivator;
 import org.jboss.tools.smooks.configuration.SmooksConstants;
@@ -114,8 +116,6 @@
 	public SmooksConfigurationOverviewPage(FormEditor editor, String id, String title, ISmooksModelProvider provider) {
 		super(editor, id, title);
 		this.smooksModelProvider = provider;
-		((SmooksMultiFormEditor) editor).getSmooksGraphicsExt().addSmooksGraphChangeListener(this);
-
 	}
 
 	public SmooksConfigurationOverviewPage(String id, String title, ISmooksModelProvider provider) {
@@ -133,19 +133,27 @@
 		gl.marginHeight = 0;
 		gl.marginWidth = 0;
 		form.getBody().setLayout(gl);
-		Composite mainComposite = toolkit.createComposite(form.getBody());
 
+		ScrolledPageBook pageBook = new ScrolledPageBook(form.getBody());
+		pageBook.setBackground(toolkit.getColors().getBackground());
+		Composite mainComposite = pageBook.createPage(pageBook);
+		pageBook.showPage(pageBook);
+
+		// Composite mainComposite = toolkit.createComposite(form.getBody());
+
 		GridData gd = new GridData(GridData.FILL_BOTH);
-		mainComposite.setLayoutData(gd);
+		pageBook.setLayoutData(gd);
 
 		GridLayout mgl = new GridLayout();
 		mgl.numColumns = 2;
 		mgl.marginHeight = 13;
+		mgl.horizontalSpacing = 20;
 		mainComposite.setLayout(mgl);
 
 		settingSection = toolkit.createSection(mainComposite, Section.DESCRIPTION | Section.TITLE_BAR);
 		settingSection.setLayout(new FillLayout());
-		settingSection.setText("Smooks config");
+		settingSection.setText("Smooks configuration");
+		settingSection.setDescription("Set the description for this Smooks configuration file.");
 		Composite settingComposite = toolkit.createComposite(settingSection);
 		settingSection.setClient(settingComposite);
 		gd = new GridData();
@@ -155,7 +163,7 @@
 		GridLayout sgl = new GridLayout();
 		settingComposite.setLayout(sgl);
 		sgl.numColumns = 2;
-		sgl.verticalSpacing = 12;
+		// sgl.verticalSpacing = 8;
 
 		createSettingSection(settingComposite, toolkit);
 
@@ -163,6 +171,7 @@
 
 		globalParamSection = toolkit.createSection(mainComposite, Section.DESCRIPTION | Section.TITLE_BAR
 				| Section.TWISTIE | Section.EXPANDED);
+		globalParamSection.setDescription("Define the global parameters for the Smooks configuration file");
 		globalParamSection.setText("Global Paramters");
 		globalParamSection.setLayout(new FillLayout());
 		Composite globalParamComposite = toolkit.createComposite(globalParamSection);
@@ -181,7 +190,8 @@
 		generalSettingSection = toolkit.createSection(mainComposite, Section.DESCRIPTION | Section.TITLE_BAR
 				| Section.TWISTIE | Section.EXPANDED);
 		generalSettingSection.setLayout(new FillLayout());
-		generalSettingSection.setText("Default Setting");
+		generalSettingSection.setText("Smooks Default Setting");
+		generalSettingSection.setDescription("Define the Smooks configuration file default setting");
 		defaultSettingComposite = toolkit.createComposite(generalSettingSection);
 		generalSettingSection.setClient(defaultSettingComposite);
 		gd = new GridData();
@@ -198,6 +208,7 @@
 		conditionSection = toolkit.createSection(mainComposite, Section.DESCRIPTION | Section.TITLE_BAR
 				| Section.TWISTIE);
 		conditionSection.setText("Conditions");
+		conditionSection.setDescription("Define the conditions");
 		conditionSection.setLayout(new FillLayout());
 		Composite conditionComposite = toolkit.createComposite(conditionSection);
 		conditionSection.setClient(conditionComposite);
@@ -214,6 +225,7 @@
 
 		profilesSection = toolkit.createSection(mainComposite, Section.DESCRIPTION | Section.TITLE_BAR
 				| Section.TWISTIE);
+		profilesSection.setDescription("Define the profiles");
 		profilesSection.setText("Profiles");
 		profilesSection.setLayout(new FillLayout());
 		Composite profilesComposite = toolkit.createComposite(profilesSection);
@@ -232,12 +244,14 @@
 	}
 
 	private void createSettingSection(Composite settingComposite, FormToolkit toolkit) {
-		toolkit.createLabel(settingComposite, "Smooks Platform Version : ");
+		toolkit.createLabel(settingComposite, "Smooks Platform Version : ").setForeground(
+				toolkit.getColors().getColor(IFormColors.TITLE));
 		int type = SWT.BORDER;
 		if (SmooksUIUtils.isLinuxOS()) {
 			type = SWT.BORDER;
 		}
 		final Combo combo = new Combo(settingComposite, type | SWT.READ_ONLY);
+		combo.setEnabled(false);
 		GridData gd = new GridData(GridData.FILL_HORIZONTAL);
 		combo.setLayoutData(gd);
 		for (int i = 0; i < SmooksConstants.SMOOKS_VERSIONS.length; i++) {
@@ -258,7 +272,7 @@
 			}
 		});
 
-		toolkit.createLabel(settingComposite, "Name : ");
+		toolkit.createLabel(settingComposite, "Name : ").setForeground(toolkit.getColors().getColor(IFormColors.TITLE));
 		final Text nameText = toolkit.createText(settingComposite, "", SWT.NONE);
 		nameText.setLayoutData(gd);
 		String name = smooksModelProvider.getSmooksGraphicsExt().getName();
@@ -275,7 +289,8 @@
 
 		toolkit.paintBordersFor(settingComposite);
 
-		toolkit.createLabel(settingComposite, "Author : ");
+		toolkit.createLabel(settingComposite, "Author : ").setForeground(
+				toolkit.getColors().getColor(IFormColors.TITLE));
 		final Text authorText = toolkit.createText(settingComposite, "", SWT.NONE);
 		authorText.setLayoutData(gd);
 
@@ -291,6 +306,8 @@
 			}
 		});
 
+		toolkit.createLabel(settingComposite, "");
+
 		toolkit.paintBordersFor(settingComposite);
 	}
 
@@ -1195,32 +1212,21 @@
 		}
 	}
 
-	private void createSmooksEditorNavigator(Composite mainComposite, FormToolkit toolkit) {
-		Composite mainNavigatorComposite = toolkit.createComposite(mainComposite);
-		GridData gd = new GridData(GridData.FILL_BOTH);
-		gd.verticalSpan = 5;
-		mainNavigatorComposite.setLayoutData(gd);
-
-		GridLayout gl = new GridLayout();
-		gl.numColumns = 2;
-		gl.marginWidth = 0;
-		gl.marginHeight = 0;
-		mainNavigatorComposite.setLayout(gl);
-
-		Section navigator = toolkit.createSection(mainNavigatorComposite, Section.DESCRIPTION | Section.TITLE_BAR);
-		navigator.setText("Smooks Editor Navigator");
+	private void createNavigatorSection(Composite mainNavigatorComposite, FormToolkit toolkit, String title,
+			String navigatorFilePath) {
+		Section navigator = toolkit.createSection(mainNavigatorComposite, Section.TITLE_BAR);
+		navigator.setText(title);
 		navigator.setLayout(new FillLayout());
 		Composite navigatorComposite = toolkit.createComposite(navigator);
 		navigator.setClient(navigatorComposite);
 
-		gd = new GridData(GridData.FILL_HORIZONTAL);
+		GridData gd = new GridData(GridData.FILL_HORIZONTAL);
 		gd.verticalAlignment = GridData.BEGINNING;
 		navigator.setLayoutData(gd);
 
 		FormText formText = toolkit.createFormText(navigatorComposite, true);
 		StringBuffer buf = new StringBuffer();
-		InputStream inputStream = this.getClass().getResourceAsStream(
-				"/org/jboss/tools/smooks/configuration/navigator/DefaultSetting.htm");
+		InputStream inputStream = this.getClass().getResourceAsStream(navigatorFilePath);
 		BufferedReader reader = null;
 		if (inputStream != null) {
 			try {
@@ -1265,8 +1271,28 @@
 		navigatorComposite.setLayout(new GridLayout());
 		gd = new GridData(GridData.FILL_BOTH);
 		formText.setLayoutData(gd);
+
+		toolkit.createLabel(navigatorComposite, "");
 	}
 
+	private void createSmooksEditorNavigator(Composite mainComposite, FormToolkit toolkit) {
+		Composite mainNavigatorComposite = toolkit.createComposite(mainComposite);
+		GridData gd = new GridData(GridData.FILL_BOTH);
+		gd.verticalSpan = 5;
+		mainNavigatorComposite.setLayoutData(gd);
+
+		GridLayout gl = new GridLayout();
+		// gl.numColumns = 2;
+		gl.marginWidth = 0;
+		gl.marginHeight = 0;
+		mainNavigatorComposite.setLayout(gl);
+
+		createNavigatorSection(mainNavigatorComposite, toolkit, "Configuring Smooks Input",
+				"/org/jboss/tools/smooks/configuration/navigator/DefaultSetting.htm");
+		createNavigatorSection(mainNavigatorComposite, toolkit, "Configuring Message Filter(s)",
+				"/org/jboss/tools/smooks/configuration/navigator/MessageFilterNavigator.htm");
+	}
+
 	protected void activeNavigatorLink(String href) {
 		if (href == null)
 			return;
@@ -1323,13 +1349,15 @@
 	private void createDefaultSection(Composite parent, FormToolkit toolkit) {
 		ModelPanelCreator defaultSettingPanelCreator = getDefaultSettingPanelCreator();
 		EObject model = getSmooksResourceList();
-		AdapterFactoryEditingDomain editingDomain = (AdapterFactoryEditingDomain) smooksModelProvider
-				.getEditingDomain();
-		IItemPropertySource itemPropertySource = (IItemPropertySource) editingDomain.getAdapterFactory().adapt(model,
-				IItemPropertySource.class);
 		if (model != null) {
-			defaultSettingPanelCreator.createModelPanel(model, toolkit, parent, itemPropertySource,
-					smooksModelProvider, getEditor());
+			AdapterFactoryEditingDomain editingDomain = (AdapterFactoryEditingDomain) smooksModelProvider
+					.getEditingDomain();
+			IItemPropertySource itemPropertySource = (IItemPropertySource) editingDomain.getAdapterFactory().adapt(
+					model, IItemPropertySource.class);
+			if (model != null) {
+				defaultSettingPanelCreator.createModelPanel(model, toolkit, parent, itemPropertySource,
+						smooksModelProvider, getEditor());
+			}
 		}
 
 	}

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SmooksConfigurationReaderPage.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SmooksConfigurationReaderPage.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SmooksConfigurationReaderPage.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -51,7 +51,7 @@
 public class SmooksConfigurationReaderPage extends SmooksConfigurationFormPage {
 
 	private CheckboxTableViewer inputDataViewer;
-	
+
 	boolean lockCheck = false;
 
 	public SmooksConfigurationReaderPage(FormEditor editor, String id, String title) {
@@ -169,7 +169,8 @@
 		inputDataViewer.addCheckStateListener(new ICheckStateListener() {
 
 			public void checkStateChanged(CheckStateChangedEvent event) {
-				if(lockCheck) return;
+				if (lockCheck)
+					return;
 				boolean checked = event.getChecked();
 				InputType inputType = (InputType) event.getElement();
 				List<ParamType> params = inputType.getParam();
@@ -218,7 +219,7 @@
 						}
 					}
 				}
-				
+
 				EObject ext = inputType;
 				while (ext != null && !(ext instanceof SmooksGraphicsExtType)) {
 					ext = ext.eContainer();
@@ -227,11 +228,12 @@
 				if (ext != null && ext instanceof SmooksGraphicsExtType) {
 					List<ISmooksGraphChangeListener> listeners = ((SmooksGraphicsExtType) ext).getChangeListeners();
 					for (Iterator<?> iterator = listeners.iterator(); iterator.hasNext();) {
-						ISmooksGraphChangeListener smooksGraphChangeListener = (ISmooksGraphChangeListener) iterator.next();
+						ISmooksGraphChangeListener smooksGraphChangeListener = (ISmooksGraphChangeListener) iterator
+								.next();
 						smooksGraphChangeListener.inputTypeChanged((SmooksGraphicsExtType) ext);
 					}
 				}
-				
+
 			}
 		});
 		TableColumn header = new TableColumn(inputDataViewer.getTable(), SWT.NONE);
@@ -306,7 +308,8 @@
 	}
 
 	public void inputTypeChanged(SmooksGraphicsExtType extType) {
-		inputDataViewer.refresh();
+		if (inputDataViewer != null)
+			inputDataViewer.refresh();
 	}
 
 }

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-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SmooksMultiFormEditor.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -24,6 +24,8 @@
 import org.eclipse.ui.PartInitException;
 import org.jboss.tools.smooks.editor.AbstractSmooksFormEditor;
 import org.jboss.tools.smooks.graphical.editors.SmooksGraphicalEditorPart;
+import org.jboss.tools.smooks.model.graphics.ext.ISmooksGraphChangeListener;
+import org.jboss.tools.smooks.model.graphics.ext.SmooksGraphicsExtType;
 
 /**
  * 
@@ -39,8 +41,10 @@
 
 	private SmooksConfigurationOverviewPage overViewPage;
 
-	private SmooksConfigurationFormPage readerPage;
+	private SmooksConfigurationFormPage readerPage1;
 	
+	private SmooksReaderFormPage readerPage;
+	
 	private ISelection selection;
 	
 	private Collection<ISelectionChangedListener> selectionChangeListener = new ArrayList<ISelectionChangedListener>();
@@ -55,6 +59,7 @@
 		overViewPage = createSmooksConfigurationOverviewPage();
 		addValidateListener(overViewPage);
 		addSourceSynchronizeListener(overViewPage);
+		addSmooksGraphExtetionListener(overViewPage);
 		try {
 			int index = this.addPage(overViewPage);
 			setPageText(index, "Overview");
@@ -62,12 +67,23 @@
 			e.printStackTrace();
 		}
 
-		readerPage = createSmooksConfigurationReaderPage();
+//		readerPage1 = createSmooksConfigurationReaderPage();
+//		addValidateListener(readerPage1);
+//		addSourceSynchronizeListener(readerPage1);
+//		try {
+//			int index = this.addPage(readerPage1);
+//			setPageText(index, "Reader");
+//		} catch (PartInitException e) {
+//			e.printStackTrace();
+//		}
+		
+		readerPage = new SmooksReaderFormPage(this, "reader_page" , "Input");
 		addValidateListener(readerPage);
 		addSourceSynchronizeListener(readerPage);
+		addSmooksGraphExtetionListener(readerPage);
 		try {
 			int index = this.addPage(readerPage);
-			setPageText(index, "Reader");
+			setPageText(index, "Input");
 		} catch (PartInitException e) {
 			e.printStackTrace();
 		}
@@ -75,6 +91,7 @@
 		configurationPage = createSmooksConfigurationFormPage();
 		addValidateListener(configurationPage);
 		addSourceSynchronizeListener(configurationPage);
+		addSmooksGraphExtetionListener(configurationPage);
 		try {
 			int index = this.addPage(configurationPage);
 			setPageText(index, "Message Filter");
@@ -82,20 +99,21 @@
 			e.printStackTrace();
 		}
 
-		graphicalPage = new SmooksGraphicalEditorPart(this);
-		addSourceSynchronizeListener(graphicalPage);
-		try {
-			int index = this.addPage(graphicalPage, getEditorInput());
-			setPageText(index, "Graph");
-		} catch (PartInitException e) {
-			e.printStackTrace();
-		}
+//		graphicalPage = new SmooksGraphicalEditorPart(this);
+//		addSourceSynchronizeListener(graphicalPage);
+//		addSmooksGraphExtetionListener(graphicalPage);
+//		try {
+//			int index = this.addPage(graphicalPage, getEditorInput());
+//			setPageText(index, "Graph");
+//		} catch (PartInitException e) {
+//			e.printStackTrace();
+//		}
 
 		super.addPages();
 	}
 
 	private SmooksConfigurationReaderPage createSmooksConfigurationReaderPage() {
-		return new SmooksConfigurationReaderPage(this, "reader_page", "Reader Page");
+		return new SmooksConfigurationReaderPage(this, "reader_page1", "Reader Page");
 	}
 
 	private SmooksConfigurationOverviewPage createSmooksConfigurationOverviewPage() {
@@ -179,4 +197,18 @@
 			l.selectionChanged(new SelectionChangedEvent(this, getSelection()));
 		}
 	}
+	
+	public void addSmooksGraphExtetionListener(ISmooksGraphChangeListener listener){
+		SmooksGraphicsExtType ex = getSmooksGraphicsExt();
+		if(ex != null){
+			ex.addSmooksGraphChangeListener(listener);
+		}
+	}
+	
+	public void removeSmooksGraphExtetionListener(ISmooksGraphChangeListener listener){
+		SmooksGraphicsExtType ex = getSmooksGraphicsExt();
+		if(ex != null){
+			ex.removeSmooksGraphChangeListener(listener);
+		}
+	}
 }

Added: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SmooksReaderFormPage.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SmooksReaderFormPage.java	                        (rev 0)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SmooksReaderFormPage.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -0,0 +1,1052 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.smooks.configuration.editors;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Properties;
+
+import org.eclipse.draw2d.ColorConstants;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CompoundCommand;
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.util.FeatureMapUtil;
+import org.eclipse.emf.edit.command.AddCommand;
+import org.eclipse.emf.edit.command.CommandParameter;
+import org.eclipse.emf.edit.command.RemoveCommand;
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.viewers.CheckStateChangedEvent;
+import org.eclipse.jface.viewers.CheckboxTableViewer;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.ICheckStateListener;
+import org.eclipse.jface.viewers.ICheckStateProvider;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ITableColorProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.ui.forms.IManagedForm;
+import org.eclipse.ui.forms.editor.FormEditor;
+import org.eclipse.ui.forms.editor.FormPage;
+import org.eclipse.ui.forms.events.HyperlinkEvent;
+import org.eclipse.ui.forms.events.IHyperlinkListener;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.Hyperlink;
+import org.eclipse.ui.forms.widgets.ScrolledForm;
+import org.eclipse.ui.forms.widgets.ScrolledPageBook;
+import org.eclipse.ui.forms.widgets.Section;
+import org.jboss.tools.smooks.configuration.editors.uitls.SmooksUIUtils;
+import org.jboss.tools.smooks.configuration.editors.wizard.StructuredDataSelectionWizard;
+import org.jboss.tools.smooks.configuration.validate.ISmooksModelValidateListener;
+import org.jboss.tools.smooks.editor.ISmooksModelProvider;
+import org.jboss.tools.smooks.editor.ISourceSynchronizeListener;
+import org.jboss.tools.smooks.model.csv.CsvPackage;
+import org.jboss.tools.smooks.model.csv.CsvReader;
+import org.jboss.tools.smooks.model.csv12.CSV12Reader;
+import org.jboss.tools.smooks.model.csv12.Csv12Package;
+import org.jboss.tools.smooks.model.edi.EDIReader;
+import org.jboss.tools.smooks.model.edi.EdiPackage;
+import org.jboss.tools.smooks.model.edi12.EDI12Reader;
+import org.jboss.tools.smooks.model.edi12.Edi12Package;
+import org.jboss.tools.smooks.model.graphics.ext.GraphFactory;
+import org.jboss.tools.smooks.model.graphics.ext.GraphPackage;
+import org.jboss.tools.smooks.model.graphics.ext.ISmooksGraphChangeListener;
+import org.jboss.tools.smooks.model.graphics.ext.InputType;
+import org.jboss.tools.smooks.model.graphics.ext.ParamType;
+import org.jboss.tools.smooks.model.graphics.ext.SmooksGraphicsExtType;
+import org.jboss.tools.smooks.model.json.JsonPackage;
+import org.jboss.tools.smooks.model.json.JsonReader;
+import org.jboss.tools.smooks.model.json12.Json12Package;
+import org.jboss.tools.smooks.model.json12.Json12Reader;
+import org.jboss.tools.smooks.model.smooks.AbstractReader;
+import org.jboss.tools.smooks.model.smooks.DocumentRoot;
+import org.jboss.tools.smooks.model.smooks.ReaderType;
+import org.jboss.tools.smooks.model.smooks.SmooksPackage;
+import org.jboss.tools.smooks.model.smooks.SmooksResourceListType;
+import org.jboss.tools.smooks10.model.smooks.util.SmooksModelUtils;
+
+/**
+ * @author Dart
+ * 
+ */
+public class SmooksReaderFormPage extends FormPage implements ISmooksModelValidateListener, ISmooksGraphChangeListener,
+		ISourceSynchronizeListener {
+
+	private CheckboxTableViewer inputDataViewer;
+	private TreeViewer inputModelViewer;
+	private Combo readerCombo;
+
+	private List<Object> readerTypeList = new ArrayList<Object>();
+	private Composite readerConfigComposite;
+	private ModelPanelCreator modelPanelCreator;
+	protected boolean lockCheck = false;
+
+	public SmooksReaderFormPage(FormEditor editor, String id, String title) {
+		super(editor, id, title);
+		((SmooksMultiFormEditor) editor).getSmooksGraphicsExt().addSmooksGraphChangeListener(this);
+	}
+
+	public SmooksReaderFormPage(String id, String title) {
+		super(id, title);
+	}
+
+	@Override
+	protected void createFormContent(IManagedForm managedForm) {
+		final ScrolledForm form = managedForm.getForm();
+		FormToolkit toolkit = managedForm.getToolkit();
+		toolkit.decorateFormHeading(form.getForm());
+		form.setText("Input");
+		// // create master details UI
+		// createMasterDetailBlock(managedForm);
+		Composite leftComposite = toolkit.createComposite(form.getBody());
+		GridData gd = new GridData(GridData.FILL_BOTH);
+		gd.widthHint = 700;
+		leftComposite.setLayoutData(gd);
+
+		Composite rightComposite = toolkit.createComposite(form.getBody());
+		gd = new GridData(GridData.FILL_BOTH);
+		rightComposite.setLayoutData(gd);
+
+		GridLayout lgl = new GridLayout();
+		lgl.marginWidth = 0;
+		lgl.marginHeight = 0;
+		leftComposite.setLayout(lgl);
+
+		GridLayout rgl = new GridLayout();
+		rgl.marginWidth = 0;
+		rgl.marginHeight = 0;
+		rightComposite.setLayout(rgl);
+
+		createReaderSection(toolkit, leftComposite);
+		createInputDataSection(toolkit, rightComposite);
+		createReaderConfigSection(toolkit, leftComposite);
+		createInputModelViewerSection(toolkit, rightComposite);
+
+		handleReaderCombo(readerCombo);
+
+		GridLayout gridLayout = new GridLayout();
+		gridLayout.marginHeight = 13;
+		gridLayout.numColumns = 2;
+		gridLayout.horizontalSpacing = 20;
+		gridLayout.makeColumnsEqualWidth = true;
+		form.getBody().setLayout(gridLayout);
+	}
+
+	private void createInputModelViewerSection(FormToolkit toolkit, Composite parent) {
+		Section section = toolkit.createSection(parent, Section.TITLE_BAR | Section.DESCRIPTION);
+		GridData gd = new GridData(GridData.FILL_BOTH);
+		// gd.verticalAlignment = GridData.BEGINNING;
+		section.setLayoutData(gd);
+		section.setText("Input Model View");
+		section.setDescription("View the XML structure model of the input data");
+		FillLayout flayout = new FillLayout();
+		section.setLayout(flayout);
+
+		Composite mainContainer = toolkit.createComposite(section);
+		GridLayout gl = new GridLayout();
+		mainContainer.setLayout(gl);
+		section.setClient(mainContainer);
+
+		Hyperlink refreshLink = toolkit.createHyperlink(mainContainer, "Refresh Input Model Viewer", SWT.NONE);
+		refreshLink.addHyperlinkListener(new IHyperlinkListener() {
+
+			public void linkExited(HyperlinkEvent e) {
+				// TODO Auto-generated method stub
+
+			}
+
+			public void linkEntered(HyperlinkEvent e) {
+				// TODO Auto-generated method stub
+
+			}
+
+			public void linkActivated(HyperlinkEvent e) {
+				refreshInputModelView();
+			}
+		});
+
+		Composite viewerContainer = toolkit.createComposite(mainContainer);
+		gd = new GridData(GridData.FILL_BOTH);
+		viewerContainer.setLayoutData(gd);
+
+		FillLayout fillLayout = new FillLayout();
+		fillLayout.marginHeight = 1;
+		fillLayout.marginWidth = 1;
+		viewerContainer.setBackground(GraphicsConstants.BORDER_CORLOER);
+		viewerContainer.setLayout(fillLayout);
+		inputModelViewer = new TreeViewer(viewerContainer, SWT.NONE);
+		inputModelViewer.setContentProvider(new CompoundStructuredDataContentProvider());
+		inputModelViewer.setLabelProvider(new CompoundStructuredDataLabelProvider());
+		List<Object> inputList = generateInputData();
+		inputModelViewer.setInput(inputList);
+		inputModelViewer.addDoubleClickListener(new IDoubleClickListener() {
+			public void doubleClick(DoubleClickEvent event) {
+			}
+		});
+		inputModelViewer.addSelectionChangedListener(new ISelectionChangedListener() {
+			public void selectionChanged(SelectionChangedEvent event) {
+				// currentSelection = ((IStructuredSelection)
+				// event.getSelection()).getFirstElement();
+			}
+		});
+		SmooksUIUtils.expandSelectorViewer(inputList, inputModelViewer);
+
+	}
+
+	protected List<Object> generateInputData() {
+		Object obj = ((SmooksMultiFormEditor) getEditor()).getSmooksModel();
+		SmooksResourceListType resourceList = null;
+		if (obj instanceof DocumentRoot) {
+			resourceList = ((DocumentRoot) obj).getSmooksResourceList();
+		}
+		return SelectorCreationDialog.generateInputData(getSmooksGraphicsExtType(), resourceList);
+	}
+
+	private void createReaderConfigSection(FormToolkit toolkit, Composite parent) {
+		Section section = toolkit.createSection(parent, Section.TITLE_BAR);
+		GridData gd = new GridData(GridData.FILL_BOTH);
+		section.setLayoutData(gd);
+		section.setText("Input Configuration");
+		section.setDescription("Configurate the input data");
+		FillLayout flayout = new FillLayout();
+		section.setLayout(flayout);
+
+		ScrolledPageBook pageBook = new ScrolledPageBook(section);
+		pageBook.setBackground(toolkit.getColors().getBackground());
+		section.setClient(pageBook);
+
+		readerConfigComposite = pageBook.createPage(pageBook);
+		pageBook.showPage(pageBook);
+
+		GridLayout gl = new GridLayout();
+		gl.numColumns = 2;
+		readerConfigComposite.setLayout(gl);
+
+		initReaderConfigSection();
+	}
+
+	private void createReaderSection(FormToolkit toolkit, Composite parent) {
+		Section section = toolkit.createSection(parent, Section.TITLE_BAR | Section.DESCRIPTION);
+		GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.verticalAlignment = GridData.BEGINNING;
+		section.setLayoutData(gd);
+		section.setText("Input Type");
+		section.setDescription("Select the input type");
+		FillLayout flayout = new FillLayout();
+		section.setLayout(flayout);
+
+		Composite mainComposite = toolkit.createComposite(section);
+		section.setClient(mainComposite);
+		GridLayout gl = new GridLayout();
+		gl.numColumns = 2;
+		mainComposite.setLayout(gl);
+
+		toolkit.createLabel(mainComposite, "Input Type : ");
+
+		readerCombo = new Combo(mainComposite, SWT.NONE | SWT.READ_ONLY);
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		readerCombo.setLayoutData(gd);
+
+		toolkit.createLabel(mainComposite, " ");
+
+		bindingReaderCombo();
+
+		initReaderCombo();
+
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		readerCombo.setLayoutData(gd);
+
+		toolkit.paintBordersFor(mainComposite);
+	}
+
+	private void initReaderConfigSection() {
+		Object reader = getCurrentReaderModel();
+		String type = getSmooksGraphicsExtType().getInputType();
+		if (reader instanceof EObject && type != null) {
+			SmooksResourceListType list = getSmooksConfigResourceList();
+			createReaderPanel((EObject) list.getAbstractReader().get(0));
+		} else {
+			disposeCompositeControls(readerConfigComposite, null);
+		}
+	}
+
+	private void selectCorrectReaderItem(Object reader) {
+		for (int i = 0; i < readerTypeList.size(); i++) {
+			Object r = readerTypeList.get(i);
+			if (r instanceof EObject) {
+				if (r.getClass() == reader.getClass()) {
+					readerCombo.select(i);
+					break;
+				}
+			}
+		}
+	}
+
+	private String getCurrentReaderType() {
+		Object reader = getCurrentReaderModel();
+		if (reader instanceof XMLReader) {
+			return SmooksModelUtils.INPUT_TYPE_XML;
+		}
+		if (reader instanceof JavaReader) {
+			return SmooksModelUtils.INPUT_TYPE_JAVA;
+		}
+		if (reader instanceof XSDReader) {
+			return SmooksModelUtils.INPUT_TYPE_XSD;
+		}
+		if (reader instanceof EObject) {
+			Object obj = ((EObject) reader);
+
+			if (obj instanceof CsvReader || obj instanceof CSV12Reader) {
+				return SmooksModelUtils.INPUT_TYPE_CSV;
+			}
+			if (obj instanceof EDIReader || obj instanceof EDI12Reader) {
+				return SmooksModelUtils.INPUT_TYPE_EDI_1_1;
+			}
+			if (obj instanceof JsonReader || obj instanceof Json12Reader) {
+				return SmooksModelUtils.INPUT_TYPE_JSON_1_1;
+			}
+			if (obj instanceof ReaderType) {
+				return SmooksModelUtils.INPUT_TYPE_CUSTOME;
+			}
+		}
+		return null;
+	}
+
+	private void initReaderCombo() {
+		if (readerCombo == null)
+			return;
+		SmooksResourceListType rlist = getSmooksConfigResourceList();
+		if (rlist == null) {
+			readerCombo.select(-1);
+			return;
+		}
+		SmooksGraphicsExtType ext = getSmooksGraphicsExtType();
+		String inputType = ext.getInputType();
+
+		if (inputType == null) {
+			// for the first time to open the file.
+			if (rlist.getAbstractReader().isEmpty()) {
+				readerCombo.select(0);
+				return;
+			} else {
+			}
+		}
+		if (SmooksModelUtils.INPUT_TYPE_XML.equals(inputType)) {
+			readerCombo.select(1);
+		}
+		if (SmooksModelUtils.INPUT_TYPE_JAVA.equals(inputType)) {
+			readerCombo.select(2);
+		}
+		if (SmooksModelUtils.INPUT_TYPE_XSD.equals(inputType)) {
+			readerCombo.select(3);
+		}
+
+		if (SmooksModelUtils.INPUT_TYPE_CSV.equals(inputType)) {
+			if (!rlist.getAbstractReader().isEmpty()) {
+				AbstractReader reader = rlist.getAbstractReader().get(0);
+				if (CsvReader.class.isInstance(reader) || CSV12Reader.class.isInstance(reader)) {
+					selectCorrectReaderItem(reader);
+				}
+			}
+		}
+		if (SmooksModelUtils.INPUT_TYPE_EDI_1_1.equals(inputType)) {
+			if (!rlist.getAbstractReader().isEmpty()) {
+				AbstractReader reader = rlist.getAbstractReader().get(0);
+				if (EDIReader.class.isInstance(reader) || EDI12Reader.class.isInstance(reader)) {
+					selectCorrectReaderItem(reader);
+				}
+			}
+		}
+		if (SmooksModelUtils.INPUT_TYPE_JSON_1_1.equals(inputType)) {
+			if (!rlist.getAbstractReader().isEmpty()) {
+				AbstractReader reader = rlist.getAbstractReader().get(0);
+				if (JsonReader.class.isInstance(reader) || Json12Reader.class.isInstance(reader)) {
+					selectCorrectReaderItem(reader);
+				}
+			}
+		}
+		if (SmooksModelUtils.INPUT_TYPE_CUSTOME.equals(inputType)) {
+			if (!rlist.getAbstractReader().isEmpty()) {
+				AbstractReader reader = rlist.getAbstractReader().get(0);
+				if (ReaderType.class.isInstance(reader)) {
+					selectCorrectReaderItem(reader);
+				}
+			}
+		}
+		return;
+	}
+
+	private void handleReaderCombo(final Combo combo) {
+		combo.addSelectionListener(new SelectionListener() {
+
+			public void widgetSelected(SelectionEvent e) {
+				Object newreader = getCurrentReaderModel();
+				if (newreader == null)
+					return;
+				String type = getCurrentReaderType();
+				if (type == null) {
+					getSmooksGraphicsExtType().eUnset(GraphPackage.Literals.SMOOKS_GRAPHICS_EXT_TYPE__INPUT_TYPE);
+				} else {
+					getSmooksGraphicsExtType().setInputType(type);
+				}
+				readerChanged(newreader);
+			}
+
+			public void widgetDefaultSelected(SelectionEvent e) {
+				// TODO Auto-generated method stub
+
+			}
+		});
+	}
+
+	private Object createReaderEntry(Object reader, boolean clone) {
+		if (clone) {
+			reader = EcoreUtil.copy((EObject) reader);
+		}
+		if (reader instanceof CsvReader) {
+			return FeatureMapUtil.createEntry(CsvPackage.Literals.CSV_DOCUMENT_ROOT__READER, reader);
+		}
+		if (reader instanceof CSV12Reader) {
+			return FeatureMapUtil.createEntry(Csv12Package.Literals.CSV12_DOCUMENT_ROOT__READER, reader);
+		}
+		if (reader instanceof EDIReader) {
+			return FeatureMapUtil.createEntry(EdiPackage.Literals.EDI_DOCUMENT_ROOT__READER, reader);
+		}
+		if (reader instanceof EDI12Reader) {
+			return FeatureMapUtil.createEntry(Edi12Package.Literals.EDI12_DOCUMENT_ROOT__READER, reader);
+		}
+		if (reader instanceof JsonReader) {
+			return FeatureMapUtil.createEntry(JsonPackage.Literals.JSON_DOCUMENT_ROOT__READER, reader);
+		}
+		if (reader instanceof Json12Reader) {
+			return FeatureMapUtil.createEntry(Json12Package.Literals.JSON12_DOCUMENT_ROOT__READER, reader);
+		}
+		if (reader instanceof ReaderType) {
+			return FeatureMapUtil.createEntry(SmooksPackage.Literals.DOCUMENT_ROOT__READER, reader);
+		}
+		return null;
+	}
+
+	private Command createRemoveReaderCommand() {
+		SmooksResourceListType rlist = getSmooksConfigResourceList();
+		List<AbstractReader> readerList = rlist.getAbstractReader();
+		CompoundCommand compoundCommand = new CompoundCommand();
+		for (Iterator<?> iterator = readerList.iterator(); iterator.hasNext();) {
+			AbstractReader abstractReader = (AbstractReader) iterator.next();
+			Object readerEntry = createReaderEntry(abstractReader, false);
+			if (readerEntry == null)
+				continue;
+			Command removeCommand = RemoveCommand.create(getEditingDomain(), rlist,
+					SmooksPackage.Literals.SMOOKS_RESOURCE_LIST_TYPE__ABSTRACT_READER_GROUP, readerEntry);
+			if (removeCommand.canExecute()) {
+				compoundCommand.append(removeCommand);
+			}
+		}
+		if (compoundCommand.isEmpty()) {
+			return null;
+		}
+		return compoundCommand;
+	}
+
+	private void readerChanged(Object reader) {
+		
+		CompoundCommand compoundCommand = new CompoundCommand();
+		Command removeCommand = createRemoveReaderCommand();
+		if (removeCommand != null && removeCommand.canExecute()) {
+			compoundCommand.append(removeCommand);
+		}
+		if (readerConfigComposite != null) {
+			disposeCompositeControls(readerConfigComposite, null);
+		}
+		boolean hasRun = false;
+		if (reader instanceof EObject) {
+			Object obj = ((EObject) reader);
+			obj = AdapterFactoryEditingDomain.unwrap(obj);
+			Command command = AddCommand.create(getEditingDomain(), getSmooksConfigResourceList(),
+					SmooksPackage.Literals.SMOOKS_RESOURCE_LIST_TYPE__ABSTRACT_READER_GROUP, createReaderEntry(obj,
+							false));
+			if (command.canExecute()) {
+				compoundCommand.append(command);
+			}
+			if (!compoundCommand.isEmpty()) {
+				getEditingDomain().getCommandStack().execute(compoundCommand);
+				hasRun = true;
+				createReaderPanel((EObject) obj);
+			}
+		}
+
+		if (!hasRun) {
+			if (!compoundCommand.isEmpty()) {
+				getEditingDomain().getCommandStack().execute(compoundCommand);
+			}
+		}
+
+		deactiveAllInputFile();
+
+		if (inputDataViewer != null) {
+			inputDataViewer.refresh();
+		}
+		refreshInputModelView();
+	}
+
+	private void deactiveAllInputFile() {
+		SmooksGraphicsExtType ext = getSmooksGraphicsExtType();
+		List<InputType> inputList = ext.getInput();
+		for (Iterator<?> iterator = inputList.iterator(); iterator.hasNext();) {
+			InputType inputType = (InputType) iterator.next();
+			setInputDataActiveStatus(false, inputType);
+		}
+	}
+
+	private void createReaderPanel(EObject reader) {
+		disposeCompositeControls(readerConfigComposite, null);
+		try {
+			ModelPanelCreator modelPanelCreator = getModelPanelCreator();
+			IItemPropertySource ps = (IItemPropertySource) getEditingDomain().getAdapterFactory().adapt(reader,
+					IItemPropertySource.class);
+			modelPanelCreator.createModelPanel(reader, getManagedForm().getToolkit(), readerConfigComposite, ps,
+					(ISmooksModelProvider) getEditor(), getEditor());
+			readerConfigComposite.getParent().layout();
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	private ModelPanelCreator getModelPanelCreator() {
+		if (modelPanelCreator == null) {
+			modelPanelCreator = new ModelPanelCreator();
+		}
+		return modelPanelCreator;
+	}
+
+	private void bindingReaderCombo() {
+		if (readerCombo == null)
+			return;
+
+		readerCombo.removeAll();
+		readerTypeList.clear();
+
+		readerCombo.add("No Input");
+		readerTypeList.add(new NullReader());
+		readerCombo.add("XML");
+		readerTypeList.add(new XMLReader());
+		readerCombo.add("Java");
+		readerTypeList.add(new JavaReader());
+		readerCombo.add("XSD/WSDL");
+		readerTypeList.add(new XSDReader());
+		
+		SmooksResourceListType resourceList = getSmooksConfigResourceList();
+		
+		if(resourceList == null){
+			return;
+		}
+
+		AdapterFactoryEditingDomain editDomain = getEditingDomain();
+		IEditingDomainItemProvider provider = (IEditingDomainItemProvider) editDomain.getAdapterFactory().adapt(
+				resourceList, IEditingDomainItemProvider.class);
+		Collection<?> collections = provider.getNewChildDescriptors(resourceList, editDomain, null);
+
+		SmooksGraphicsExtType extType = getSmooksGraphicsExtType();
+		String version = extType.getPlatformVersion();
+		OnlyReaderViewerFilter filter = new OnlyReaderViewerFilter();
+		for (Iterator<?> iterator = collections.iterator(); iterator.hasNext();) {
+			Object object = (Object) iterator.next();
+			if (object instanceof CommandParameter) {
+				Object value = ((CommandParameter) object).getValue();
+
+				value = AdapterFactoryEditingDomain.unwrap(value);
+
+				if (filter.select(null, null, value)) {
+					if (SmooksUIUtils.isUnSupportElement(version, (EObject) value)) {
+						continue;
+					}
+
+					IItemLabelProvider lp = (IItemLabelProvider) editDomain.getAdapterFactory().adapt(value,
+							IItemLabelProvider.class);
+					String text = lp.getText(value);
+					readerCombo.add(text);
+					readerTypeList.add(value);
+				}
+			}
+		}
+	}
+
+	private void setInputDataActiveStatus(boolean active, InputType inputType) {
+		List<ParamType> params = inputType.getParam();
+		boolean newOne = true;
+		for (Iterator<?> iterator = params.iterator(); iterator.hasNext();) {
+			ParamType paramType = (ParamType) iterator.next();
+			if (SmooksModelUtils.PARAM_NAME_ACTIVED.equals(paramType.getName())) {
+				paramType.setValue(String.valueOf(active));
+				newOne = false;
+				break;
+			}
+		}
+		if (newOne) {
+			ParamType p = GraphFactory.eINSTANCE.createParamType();
+			p.setName(SmooksModelUtils.PARAM_NAME_ACTIVED);
+			p.setValue(String.valueOf(active));
+			inputType.getParam().add(p);
+		}
+		SmooksGraphicsExtType ext = getSmooksGraphicsExtType();
+		if (ext != null) {
+			List<ISmooksGraphChangeListener> listeners = ((SmooksGraphicsExtType) ext).getChangeListeners();
+			for (Iterator<?> iterator = listeners.iterator(); iterator.hasNext();) {
+				ISmooksGraphChangeListener smooksGraphChangeListener = (ISmooksGraphChangeListener) iterator.next();
+				smooksGraphChangeListener.inputTypeChanged((SmooksGraphicsExtType) ext);
+			}
+		}
+	}
+
+	protected void createInputDataSection(FormToolkit toolkit, Composite parent) {
+		Section section = toolkit.createSection(parent, Section.TITLE_BAR | Section.DESCRIPTION);
+		GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+		section.setLayoutData(gd);
+		section.setText("Input Data");
+		section.setDescription("Add a file to be the input data");
+		FillLayout flayout = new FillLayout();
+		section.setLayout(flayout);
+
+		Composite mainComposite = toolkit.createComposite(section, SWT.NONE);
+		GridLayout gl = new GridLayout();
+		gl.numColumns = 2;
+		mainComposite.setLayout(gl);
+		section.setClient(mainComposite);
+
+		Composite tableComposite = toolkit.createComposite(mainComposite, SWT.NONE);
+		FillLayout fillLayout = new FillLayout();
+		fillLayout.marginHeight = 1;
+		fillLayout.marginWidth = 1;
+		gd = new GridData(GridData.FILL_BOTH);
+		gd.heightHint = 200;
+		tableComposite.setLayoutData(gd);
+		tableComposite.setBackground(GraphicsConstants.BORDER_CORLOER);
+		tableComposite.setLayout(fillLayout);
+
+		inputDataViewer = CheckboxTableViewer.newCheckList(tableComposite, SWT.MULTI | SWT.FULL_SELECTION);
+		// inputDataViewer.set
+		inputDataViewer.setCheckStateProvider(new ICheckStateProvider() {
+
+			public boolean isGrayed(Object element) {
+				return isIncorrectInputType((InputType) element);
+			}
+
+			public boolean isChecked(Object element) {
+				if (element instanceof InputType) {
+					List<ParamType> params = ((InputType) element).getParam();
+					for (Iterator<?> iterator = params.iterator(); iterator.hasNext();) {
+						ParamType paramType = (ParamType) iterator.next();
+						if (SmooksModelUtils.PARAM_NAME_ACTIVED.equals(paramType.getName())) {
+							String value = paramType.getValue();
+							if (value == null)
+								return false;
+							value = value.trim();
+							return "true".equalsIgnoreCase(value);
+						}
+					}
+				}
+				return false;
+			}
+		});
+		inputDataViewer.addCheckStateListener(new ICheckStateListener() {
+
+			public void checkStateChanged(CheckStateChangedEvent event) {
+				if (lockCheck)
+					return;
+				boolean checked = event.getChecked();
+				InputType inputType = (InputType) event.getElement();
+				if (isIncorrectInputType(inputType)) {
+					lockCheck = true;
+					inputDataViewer.setChecked(inputType, false);
+					lockCheck = false;
+					return;
+				}
+				List<ParamType> params = inputType.getParam();
+
+				if (checked) {
+					boolean newOne = true;
+					for (Iterator<?> iterator = params.iterator(); iterator.hasNext();) {
+						ParamType paramType = (ParamType) iterator.next();
+						if (SmooksModelUtils.PARAM_NAME_ACTIVED.equals(paramType.getName())) {
+							paramType.setValue(String.valueOf(checked));
+							newOne = false;
+							break;
+						}
+					}
+					if (newOne) {
+						ParamType p = GraphFactory.eINSTANCE.createParamType();
+						p.setName(SmooksModelUtils.PARAM_NAME_ACTIVED);
+						p.setValue(String.valueOf(checked));
+						inputType.getParam().add(p);
+					}
+
+					Object[] checkedObjects = inputDataViewer.getCheckedElements();
+					for (int i = 0; i < checkedObjects.length; i++) {
+						InputType type = (InputType) checkedObjects[i];
+						if (type == event.getElement())
+							continue;
+						List<ParamType> params1 = type.getParam();
+						for (Iterator<?> iterator = params1.iterator(); iterator.hasNext();) {
+							ParamType paramType = (ParamType) iterator.next();
+							if (SmooksModelUtils.PARAM_NAME_ACTIVED.equals(paramType.getName())) {
+								paramType.setValue(String.valueOf(!checked));
+								break;
+							}
+						}
+						lockCheck = true;
+						inputDataViewer.setChecked(type, false);
+						lockCheck = false;
+					}
+
+				} else {
+					for (Iterator<?> iterator = params.iterator(); iterator.hasNext();) {
+						ParamType paramType = (ParamType) iterator.next();
+						if (SmooksModelUtils.PARAM_NAME_ACTIVED.equals(paramType.getName())) {
+							paramType.setValue(String.valueOf(checked));
+							break;
+						}
+					}
+				}
+
+				SmooksGraphicsExtType ext = getSmooksGraphicsExtType();
+				if (ext != null) {
+					List<ISmooksGraphChangeListener> listeners = ((SmooksGraphicsExtType) ext).getChangeListeners();
+					for (Iterator<?> iterator = listeners.iterator(); iterator.hasNext();) {
+						ISmooksGraphChangeListener smooksGraphChangeListener = (ISmooksGraphChangeListener) iterator
+								.next();
+						smooksGraphChangeListener.inputTypeChanged((SmooksGraphicsExtType) ext);
+					}
+				}
+
+			}
+		});
+		TableColumn header = new TableColumn(inputDataViewer.getTable(), SWT.NONE);
+		header.setText("Type");
+		header.setWidth(100);
+		TableColumn pathColumn = new TableColumn(inputDataViewer.getTable(), SWT.NONE);
+		pathColumn.setText("Path");
+		pathColumn.setWidth(300);
+
+		// TableColumn extColumn = new TableColumn(inputDataViewer.getTable(),
+		// SWT.NONE);
+		// extColumn.setText("Extension Paramers");
+		// extColumn.setWidth(400);
+		inputDataViewer.setContentProvider(new ExtentionInputContentProvider());
+		inputDataViewer.setLabelProvider(new InputDataViewerLabelProvider());
+		inputDataViewer.getTable().setHeaderVisible(true);
+		inputDataViewer.getTable().setLinesVisible(true);
+		SmooksGraphicsExtType extType = getSmooksGraphicsExtType();
+		if (extType != null) {
+			inputDataViewer.setInput(extType);
+		}
+		Composite buttonComposite = toolkit.createComposite(mainComposite, SWT.NONE);
+		gd = new GridData(GridData.FILL_VERTICAL);
+		buttonComposite.setLayoutData(gd);
+		GridLayout l = new GridLayout();
+		buttonComposite.setLayout(l);
+
+		Button addButton = toolkit.createButton(buttonComposite, "Add", SWT.FLAT);
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		addButton.setLayoutData(gd);
+		addButton.addSelectionListener(new SelectionAdapter() {
+
+			public void widgetSelected(SelectionEvent e) {
+				showInputDataWizard();
+			}
+
+		});
+
+		Button removeButton = toolkit.createButton(buttonComposite, "Delete", SWT.FLAT);
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		removeButton.setLayoutData(gd);
+		removeButton.addSelectionListener(new SelectionAdapter() {
+
+			public void widgetSelected(SelectionEvent e) {
+				IStructuredSelection selection = (IStructuredSelection) inputDataViewer.getSelection();
+				if (selection != null) {
+					SmooksGraphicsExtType extType = getSmooksGraphicsExtType();
+					if (extType != null) {
+						boolean canSave = false;
+						Object[] objs = selection.toArray();
+						for (int i = 0; i < objs.length; i++) {
+							Object obj = objs[i];
+							if (obj instanceof InputType) {
+								extType.getInput().remove(obj);
+								canSave = true;
+							}
+						}
+
+						if (!canSave)
+							return;
+
+						List<ISmooksGraphChangeListener> listeners = extType.getChangeListeners();
+						for (Iterator<?> iterator = listeners.iterator(); iterator.hasNext();) {
+							ISmooksGraphChangeListener smooksGraphChangeListener = (ISmooksGraphChangeListener) iterator
+									.next();
+							smooksGraphChangeListener.inputTypeChanged(extType);
+						}
+					}
+				}
+			}
+		});
+	}
+
+	protected SmooksGraphicsExtType getSmooksGraphicsExtType() {
+		SmooksGraphicsExtType extType = ((SmooksMultiFormEditor) getEditor()).getSmooksGraphicsExt();
+		return extType;
+	}
+
+	protected AdapterFactoryEditingDomain getEditingDomain() {
+		AdapterFactoryEditingDomain editDomain = (AdapterFactoryEditingDomain) ((SmooksMultiFormEditor) this
+				.getEditor()).getEditingDomain();
+		return editDomain;
+	}
+
+	protected SmooksResourceListType getSmooksConfigResourceList() {
+		EObject doc = ((SmooksMultiFormEditor) this.getEditor()).getSmooksModel();
+		if (doc instanceof DocumentRoot) {
+			return ((DocumentRoot) doc).getSmooksResourceList();
+		}
+		return null;
+	}
+
+	protected void showInputDataWizard() {
+		StructuredDataSelectionWizard wizard = new StructuredDataSelectionWizard();
+		wizard.setInput(getEditorInput());
+		wizard.setSite(getEditorSite());
+		wizard.setForcePreviousAndNextButtons(true);
+		StructuredDataSelectionWizardDailog dialog = new StructuredDataSelectionWizardDailog(
+				getEditorSite().getShell(), wizard, getSmooksGraphicsExtType(), (SmooksMultiFormEditor) getEditor());
+		if (dialog.show() == Dialog.OK) {
+			SmooksGraphicsExtType extType = getSmooksGraphicsExtType();
+			String type = dialog.getType();
+			String path = dialog.getPath();
+			Properties pros = dialog.getProperties();
+			SmooksUIUtils.recordInputDataInfomation(null, extType, type, path, pros);
+		}
+	}
+
+	private void refreshInputModelView() {
+		if (inputModelViewer != null) {
+			List<Object> input = generateInputData();
+			inputModelViewer.setInput(input);
+			SmooksUIUtils.expandSelectorViewer(input, inputModelViewer);
+		}
+	}
+
+	public void inputTypeChanged(SmooksGraphicsExtType extType) {
+		if (inputDataViewer != null)
+			inputDataViewer.refresh();
+		refreshInputModelView();
+	}
+
+	protected void disposeCompositeControls(Composite composite, Control[] ignoreControl) {
+		if (composite != null) {
+			Control[] children = composite.getChildren();
+			for (int i = 0; i < children.length; i++) {
+				Control child = children[i];
+				if (ignoreControl != null) {
+					for (int j = 0; j < ignoreControl.length; j++) {
+						if (child == ignoreControl[j]) {
+							continue;
+						}
+					}
+				}
+				child.dispose();
+				child = null;
+			}
+		}
+	}
+
+	private Object getCurrentReaderModel() {
+		if (readerCombo == null || readerCombo.isDisposed())
+			return null;
+		int index = readerCombo.getSelectionIndex();
+		if (index < 0)
+			return null;
+		return readerTypeList.get(index);
+	}
+
+	public void sourceChange(Object model) {
+		SmooksResourceListType list = getSmooksConfigResourceList();
+		SmooksGraphicsExtType ext = getSmooksGraphicsExtType();
+		if (list == null) {
+			ext.setInputType(null, false);
+		} else {
+			if (list.getAbstractReader().isEmpty()) {
+				ext.setInputType(null, false);
+			} else {
+				AbstractReader reader = list.getAbstractReader().get(0);
+				if (CsvReader.class.isInstance(reader) || CSV12Reader.class.isInstance(reader)) {
+					ext.setInputType(SmooksModelUtils.INPUT_TYPE_CSV);
+				}
+				if (EDIReader.class.isInstance(reader) || EDI12Reader.class.isInstance(reader)) {
+					ext.setInputType(SmooksModelUtils.INPUT_TYPE_EDI_1_1);
+				}
+				if (JsonReader.class.isInstance(reader) || Json12Reader.class.isInstance(reader)) {
+					ext.setInputType(SmooksModelUtils.INPUT_TYPE_JSON_1_1);
+				}
+				if (ReaderType.class.isInstance(reader)) {
+					ext.setInputType(SmooksModelUtils.INPUT_TYPE_CUSTOME);
+				}
+			}
+
+		}
+		bindingReaderCombo();
+		initReaderCombo();
+		initReaderConfigSection();
+		deactiveAllInputFile();
+		if (inputDataViewer != null) {
+			inputDataViewer.refresh();
+		}
+		refreshInputModelView();
+	}
+
+	public void graphChanged(SmooksGraphicsExtType extType) {
+		// TODO Auto-generated method stub
+
+	}
+
+	public void graphPropertyChange(EStructuralFeature featre, Object value) {
+		// TODO Auto-generated method stub
+
+	}
+
+	public void validateEnd(List<Diagnostic> diagnosticResult) {
+		Object model = getCurrentReaderModel();
+		if (model == null)
+			return;
+		if (model instanceof EObject) {
+			this.getModelPanelCreator().markPropertyUI(diagnosticResult, (EObject) model);
+		}
+	}
+
+	public void validateStart() {
+
+	}
+
+	protected boolean isIncorrectInputType(InputType element) {
+		if (element == null)
+			return false;
+		if (element instanceof InputType) {
+			String type = ((InputType) element).getType();
+			int index = readerCombo.getSelectionIndex();
+			if (index == -1)
+				return true;
+
+			Object reader = readerTypeList.get(index);
+			if (reader instanceof NullReader) {
+				return true;
+			}
+			if (reader instanceof XMLReader || reader instanceof XSDReader || reader instanceof JavaReader) {
+
+			}
+
+			if (reader instanceof XMLReader) {
+				if (!SmooksModelUtils.INPUT_TYPE_XML.equals(type)) {
+					return true;
+				}
+			}
+			if (reader instanceof XSDReader) {
+				if (!SmooksModelUtils.INPUT_TYPE_XSD.equals(type)) {
+					return true;
+				}
+			}
+			if (reader instanceof JavaReader) {
+				if (!SmooksModelUtils.INPUT_TYPE_JAVA.equals(type)) {
+					return true;
+				}
+			}
+
+			if (reader instanceof EObject) {
+				Object obj = ((EObject) reader);
+				obj = AdapterFactoryEditingDomain.unwrap(obj);
+				if (obj instanceof EDIReader || obj instanceof EDI12Reader) {
+					if (!SmooksModelUtils.INPUT_TYPE_EDI_1_1.equals(type)) {
+						return true;
+					}
+				}
+				if (obj instanceof CsvReader || obj instanceof CSV12Reader) {
+					if (!SmooksModelUtils.INPUT_TYPE_CSV.equals(type)) {
+						return true;
+					}
+				}
+				if (obj instanceof JsonReader || obj instanceof Json12Reader) {
+					if (!SmooksModelUtils.INPUT_TYPE_JSON_1_1.equals(type)) {
+						return true;
+					}
+				}
+				if (obj instanceof ReaderType) {
+					if (!SmooksModelUtils.INPUT_TYPE_CUSTOME.equals(type)) {
+						return true;
+					}
+				}
+			}
+		}
+		return false;
+	}
+
+	private class NullReader {
+
+	}
+
+	private class XMLReader {
+
+	}
+
+	private class XSDReader {
+
+	}
+
+	private class JavaReader {
+
+	}
+
+	private class InputDataViewerLabelProvider extends ExtentionInputLabelProvider implements ITableColorProvider {
+
+		public Color getBackground(Object element, int columnIndex) {
+			if (isIncorrectInputType((InputType) element)) {
+				// return ColorConstants.darkGray;
+			}
+			return null;
+		}
+
+		public Color getForeground(Object element, int columnIndex) {
+			if (isIncorrectInputType((InputType) element)) {
+				return ColorConstants.lightGray;
+			}
+			return null;
+		}
+	}
+}


Property changes on: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SmooksReaderFormPage.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/csv/CSVDataParser.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/csv/CSVDataParser.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/csv/CSVDataParser.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -29,10 +29,8 @@
 import org.jboss.tools.smooks.model.csv.CsvReader;
 import org.jboss.tools.smooks.model.csv12.CSV12Reader;
 import org.jboss.tools.smooks.model.graphics.ext.InputType;
-import org.jboss.tools.smooks.model.graphics.ext.ParamType;
 import org.jboss.tools.smooks.model.smooks.AbstractReader;
 import org.jboss.tools.smooks.model.smooks.SmooksResourceListType;
-import org.jboss.tools.smooks10.model.smooks.util.SmooksModelUtils;
 import org.milyn.Smooks;
 import org.milyn.csv.CSVReaderConfigurator;
 import org.milyn.payload.StringResult;
@@ -99,85 +97,30 @@
 
 	public TagList parseCSV(InputStream stream, InputType inputType, SmooksResourceListType resourceList)
 			throws DocumentException, ParserConfigurationException {
-		String type = inputType.getType();
-		List<ParamType> paramList = inputType.getParam();
-		String fields = null;
-		String separator = null;
-		String quoteChar = null;
-		String skiplines = null;
-		String encoding = null;
-		String rootName = null;
-		String recordName = null;
-
-		for (Iterator<?> iterator = paramList.iterator(); iterator.hasNext();) {
-			ParamType paramType = (ParamType) iterator.next();
-			if (paramType.getName().equals(LINK_CSV_READER)) {
-				if (paramType.getValue().equalsIgnoreCase("true") && resourceList != null) {
-					List<AbstractReader> readers = resourceList.getAbstractReader();
-					int count = 0;
-					int index = -1;
-					for (Iterator<?> iterator2 = readers.iterator(); iterator2.hasNext();) {
-						AbstractReader abstractReader = (AbstractReader) iterator2.next();
-						if (SmooksModelUtils.INPUT_TYPE_CSV_1_1.equals(type)) {
-							if (abstractReader instanceof CsvReader) {
-								count++;
-								if (index == -1) {
-									index = readers.indexOf(abstractReader);
-								}
-							}
-						}
-
-						if (SmooksModelUtils.INPUT_TYPE_CSV_1_2.equals(type)) {
-							if (abstractReader instanceof CSV12Reader) {
-								count++;
-								if (index == -1) {
-									index = readers.indexOf(abstractReader);
-								}
-							}
-						}
-					}
-
-					if (count > 1) {
-						// throw new
-						// RuntimeException("The smooks config file should have only one JSON reader");
-					}
-					if (index != -1) {
-						return parseCSV(stream, readers.get(index));
-						// return parseJsonFile(stream, (JsonReader)
-						// readers.get(index));
-					}
-
+		List<AbstractReader> readers = resourceList.getAbstractReader();
+		int count = 0;
+		int index = -1;
+		for (Iterator<?> iterator2 = readers.iterator(); iterator2.hasNext();) {
+			AbstractReader abstractReader = (AbstractReader) iterator2.next();
+			if (abstractReader instanceof CsvReader || abstractReader instanceof CSV12Reader) {
+				count++;
+				if (index == -1) {
+					index = readers.indexOf(abstractReader);
 				}
 			}
-			if (paramType.getName().equals(FIELDS)) {
-				fields = paramType.getValue();
-				try {
-					// fields = fields.replace(';', ',');
-				} catch (Throwable t) {
 
-				}
-			}
-			if (paramType.getName().equals(SEPARATOR)) {
-				separator = paramType.getValue();
-			}
-			if (paramType.getName().equals(SKIPLINES)) {
-				skiplines = paramType.getValue();
-			}
-			if (paramType.getName().equals(QUOTECHAR)) {
-				quoteChar = paramType.getValue();
-			}
-			if (paramType.getName().equals(ENCODING)) {
-				encoding = paramType.getValue();
-			}
-			if (paramType.getName().equals(ROOT_ELEMENT_NAME)) {
-				rootName = paramType.getValue();
-			}
-			if (paramType.getName().equals(RECORD_NAME)) {
-				recordName = paramType.getValue();
-			}
 		}
 
-		return this.parseCSV(stream, fields, rootName, recordName, separator, quoteChar, skiplines, encoding);
+		if (count > 1) {
+			// throw new
+			// RuntimeException("The smooks config file should have only one JSON reader");
+		}
+		if (index != -1) {
+			return parseCSV(stream, readers.get(index));
+			// return parseJsonFile(stream, (JsonReader)
+			// readers.get(index));
+		}
+		return null;
 	}
 
 	public TagList parseCSV(String filePath, String fields, String rootName, String recordName, String separator,
@@ -224,9 +167,9 @@
 		if (recordName != null) {
 			readerConfigurator.setRecordElementName(recordName);
 		}
-		
+
 		readerConfigurator.setEncoding(Charset.forName(encoding));
-//		readerConfigurator.setIndent(indent)
+		// readerConfigurator.setIndent(indent)
 
 		smooks.setReaderConfig(readerConfigurator);
 

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/csv/CSVInputDataWizard.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/csv/CSVInputDataWizard.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/csv/CSVInputDataWizard.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -46,22 +46,22 @@
 	
 	public CSVInputDataWizard() {
 		super();
-		this.setWindowTitle("CSV Input Data Wizard (version 1.1)");
+		this.setWindowTitle("CSV Input Data Wizard");
 	}
 
 	@Override
 	public void addPages() {
-		if (configPage == null) {
-			configPage = new CSVDataConfigurationWizardPage("CSV Configurations Page");
-			configPage.setSmooksResourceList(resourceList);
-		}
+//		if (configPage == null) {
+//			configPage = new CSVDataConfigurationWizardPage("CSV Configurations Page");
+//			configPage.setSmooksResourceList(resourceList);
+//		}
 		
 		if (pathPage == null) {
-			pathPage = new CSVDataPathWizardPage("CSV Path Page", new String[] {},configPage);
+			pathPage = new CSVDataPathWizardPage("CSV Path Page", new String[] {"csv"},configPage);
 		}
 		
 		this.addPage(pathPage);
-		this.addPage(configPage);
+//		this.addPage(configPage);
 		super.addPages();
 	}
 
@@ -123,6 +123,9 @@
 	}
 	
 	public boolean canFinish() {
+		if(pathPage != null){
+			return pathPage.isPageComplete();
+		}
 		if (configPage != null && pathPage != null) {
 			if (configPage.isPageComplete() && pathPage.isPageComplete())
 				return true;
@@ -149,7 +152,7 @@
 	 * IStructuredDataSelectionWizard#getInputDataTypeID()
 	 */
 	public String getInputDataTypeID() {
-		return SmooksModelUtils.INPUT_TYPE_CSV_1_1;
+		return SmooksModelUtils.INPUT_TYPE_CSV;
 	}
 
 	/*

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/csv/CsvReaderUICreator.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/csv/CsvReaderUICreator.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/csv/CsvReaderUICreator.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -10,13 +10,35 @@
  ******************************************************************************/
 package org.jboss.tools.smooks.configuration.editors.csv;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jface.viewers.ICellModifier;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TextCellEditor;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Item;
 import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.forms.widgets.FormToolkit;
 import org.jboss.tools.smooks.configuration.editors.AttributeFieldEditPart;
 import org.jboss.tools.smooks.configuration.editors.PropertyUICreator;
+import org.jboss.tools.smooks.configuration.editors.uitls.SmooksUIUtils;
 import org.jboss.tools.smooks.editor.ISmooksModelProvider;
 import org.jboss.tools.smooks.model.csv.CsvPackage;
 
@@ -25,6 +47,14 @@
  */
 public class CsvReaderUICreator extends PropertyUICreator {
 
+	private TableViewer fieldsViewer;
+
+	private List<FieldText> fieldsList = new ArrayList<FieldText>();
+
+	private Button addButton;
+
+	private Button removeButton;
+
 	/*
 	 * (non-Javadoc)
 	 * 
@@ -34,9 +64,10 @@
 	 * org.eclipse.emf.edit.provider.IItemPropertyDescriptor, java.lang.Object,
 	 * org.eclipse.emf.ecore.EAttribute)
 	 */
-	public AttributeFieldEditPart createPropertyUI(FormToolkit toolkit, Composite parent, IItemPropertyDescriptor propertyDescriptor, Object model,
-			EAttribute feature, ISmooksModelProvider formEditor, IEditorPart part) {
-		
+	public AttributeFieldEditPart createPropertyUI(FormToolkit toolkit, Composite parent,
+			IItemPropertyDescriptor propertyDescriptor, Object model, EAttribute feature,
+			ISmooksModelProvider formEditor, IEditorPart part) {
+
 		if (feature == CsvPackage.eINSTANCE.getCsvReader_Encoding()) {
 		}
 		if (feature == CsvPackage.eINSTANCE.getCsvReader_Fields()) {
@@ -48,7 +79,244 @@
 		if (feature == CsvPackage.eINSTANCE.getCsvReader_SkipLines()) {
 		}
 
-		return super.createPropertyUI(toolkit, parent, propertyDescriptor, model, feature, formEditor,part);
+		return super.createPropertyUI(toolkit, parent, propertyDescriptor, model, feature, formEditor, part);
 	}
 
+	@Override
+	public boolean ignoreProperty(EAttribute feature) {
+		if (feature.equals(CsvPackage.Literals.CSV_READER__FIELDS)) {
+			return true;
+		}
+		return super.ignoreProperty(feature);
+	}
+
+	@Override
+	public List<AttributeFieldEditPart> createExtendUIOnBottom(AdapterFactoryEditingDomain editingdomain,
+			FormToolkit toolkit, Composite parent, Object model, ISmooksModelProvider formEditor, IEditorPart editorPart) {
+		createFiledsComposite(editingdomain, toolkit, parent, model, formEditor);
+		return super.createExtendUIOnBottom(editingdomain, toolkit, parent, model, formEditor, editorPart);
+	}
+
+	private void createFiledsComposite(AdapterFactoryEditingDomain editingdomain, FormToolkit toolkit,
+			Composite parent, Object model, ISmooksModelProvider formEditor) {
+		fieldsList.clear();
+		GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.heightHint = 200;
+		gd.horizontalSpan = 2;
+		Group fieldsComposite = new Group(parent, SWT.NONE);
+		fieldsComposite.setBackground(toolkit.getColors().getBackground());
+		fieldsComposite.setText("Fields");
+		fieldsComposite.setLayoutData(gd);
+		GridLayout gl = new GridLayout();
+		gl.numColumns = 2;
+		fieldsComposite.setLayout(gl);
+
+		IItemPropertySource propertySource = (IItemPropertySource) editingdomain.getAdapterFactory().adapt(model,
+				IItemPropertySource.class);
+		final IItemPropertyDescriptor descriptor = propertySource.getPropertyDescriptor(model,
+				CsvPackage.Literals.CSV_READER__FIELDS);
+
+		final Object readOnlyMoel = model;
+
+		String fields = (String) SmooksUIUtils.getEditValue(descriptor, model);
+
+		gd = new GridData(GridData.FILL_BOTH);
+		fieldsViewer = new TableViewer(fieldsComposite, SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION);
+		fieldsViewer.getControl().setLayoutData(gd);
+		fieldsViewer.getTable().setLinesVisible(true);
+		fieldsViewer.setContentProvider(new FieldsContentProvider());
+		fieldsViewer.setLabelProvider(new FieldsLabelProvider());
+
+		CellEditor fieldCellEditor = new TextCellEditor(fieldsViewer.getTable(), SWT.BORDER);
+
+		fieldsViewer.getTable().setLinesVisible(true);
+
+		fieldsViewer.setCellEditors(new CellEditor[] { fieldCellEditor });
+
+		fieldsViewer.setColumnProperties(new String[] { "field" });
+
+		fieldsViewer.setCellModifier(new ICellModifier() {
+
+			public void modify(Object element, String property, Object value) {
+				Object el = null;
+				if (element instanceof Item) {
+					el = ((Item) element).getData();
+				}
+				if (el == null)
+					return;
+				if (el instanceof FieldText && value instanceof String) {
+					if (property.equals("field")) {
+
+						if (value.toString().equals(((FieldText) el).getText())) {
+							return;
+						}
+						((FieldText) el).setText(value.toString());
+
+						fieldsViewer.refresh(el);
+						setFieldsValue(readOnlyMoel, descriptor);
+					}
+
+				}
+			}
+
+			public Object getValue(Object element, String property) {
+				if (element instanceof FieldText) {
+					if (property.equals("field")) {
+						return ((FieldText) element).getText();
+					}
+				}
+
+				return null;
+			}
+
+			public boolean canModify(Object element, String property) {
+				if (element instanceof FieldText) {
+					if (property.equals("field")) {
+						return true;
+					}
+				}
+				return false;
+			}
+		});
+		if (fields == null) {
+			fields = "";
+		}
+		fillFieldsList(fields);
+		fieldsViewer.setInput(fieldsList);
+
+		Composite buttonComposite = toolkit.createComposite(fieldsComposite);
+		gd = new GridData(GridData.FILL_VERTICAL);
+		gd.widthHint = 100;
+		buttonComposite.setLayoutData(gd);
+
+		GridLayout bgl = new GridLayout();
+		buttonComposite.setLayout(bgl);
+
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+
+		addButton = new Button(buttonComposite, SWT.NONE);
+		addButton.setLayoutData(gd);
+		addButton.setText("Add Field");
+
+		removeButton = new Button(buttonComposite, SWT.NONE);
+		removeButton.setLayoutData(gd);
+		removeButton.setText("Remove");
+
+		this.addButton.addSelectionListener(new SelectionListener() {
+
+			public void widgetSelected(SelectionEvent e) {
+				addButton.setEnabled(false);
+				try {
+					FieldText field = new FieldText("field");
+					fieldsList.add(field);
+					fieldsViewer.refresh();
+					setFieldsValue(readOnlyMoel, descriptor);
+				} catch (Throwable t) {
+
+				} finally {
+					addButton.setEnabled(true);
+				}
+			}
+
+			public void widgetDefaultSelected(SelectionEvent e) {
+				// TODO Auto-generated method stub
+
+			}
+		});
+
+		this.removeButton.addSelectionListener(new SelectionListener() {
+
+			public void widgetSelected(SelectionEvent e) {
+				IStructuredSelection s = (IStructuredSelection) fieldsViewer.getSelection();
+				fieldsList.removeAll(s.toList());
+				fieldsViewer.refresh();
+				setFieldsValue(readOnlyMoel, descriptor);
+			}
+
+			public void widgetDefaultSelected(SelectionEvent e) {
+
+			}
+		});
+	}
+
+	private void setFieldsValue(Object model, IItemPropertyDescriptor ps) {
+		String fieldsString = "";
+		for (int i = 0; i < fieldsList.size(); i++) {
+			FieldText fieldText = fieldsList.get(i);
+			fieldsString += fieldText.getText();
+			if (i < fieldsList.size() - 1) {
+				fieldsString += ",";
+			}
+		}
+		ps.setPropertyValue(model, fieldsString);
+	}
+
+	private void fillFieldsList(String fieldsString) {
+		if (fieldsString == null)
+			return;
+		String input = fieldsString.toString();
+		input = input.trim();
+		if (input.indexOf(",") != -1) {
+			String[] fields = input.split(",");
+			if (fields != null && fields.length > 0) {
+				for (int i = 0; i < fields.length; i++) {
+					String field = fields[i];
+					if (field != null) {
+						field = field.trim();
+						fieldsList.add(new FieldText(field));
+					}
+				}
+			}
+		}else{
+			fieldsList.add(new FieldText(input));
+		}
+	}
+
+	private class FieldsLabelProvider extends LabelProvider {
+
+		@Override
+		public String getText(Object element) {
+			if (element instanceof FieldText) {
+				return ((FieldText) element).getText();
+			}
+			return super.getText(element);
+		}
+
+	}
+
+	private class FieldsContentProvider implements IStructuredContentProvider {
+
+		public void dispose() {
+			// TODO Auto-generated method stub
+
+		}
+
+		public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+
+		}
+
+		public Object[] getElements(Object inputElement) {
+			if (inputElement instanceof List<?>) {
+				return ((List<?>) inputElement).toArray();
+			}
+			return new Object[] {};
+		}
+	}
+
+	private class FieldText {
+		private String text = null;
+
+		public FieldText(String t) {
+			setText(t);
+		}
+
+		public String getText() {
+			return text;
+		}
+
+		public void setText(String text) {
+			this.text = text;
+		}
+
+	}
 }
\ No newline at end of file

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/csv12/CSV12InputDataWizard.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/csv12/CSV12InputDataWizard.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/csv12/CSV12InputDataWizard.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -45,25 +45,26 @@
 	private CSV12DataConfigurationWizardPage configPage;
 
 	private CSV12DataPathWizardPage pathPage;
-	
+
 	public CSV12InputDataWizard() {
 		super();
-		this.setWindowTitle("CSV Input Data Wizard (version 1.2)");
+		this.setWindowTitle("CSV Input Data Wizard");
 	}
 
 	@Override
 	public void addPages() {
-		if (configPage == null) {
-			configPage = new CSV12DataConfigurationWizardPage("CSV Configurations Page");
-			configPage.setSmooksResourceList(resourceList);
-		}
-		
+		// if (configPage == null) {
+		// configPage = new
+		// CSV12DataConfigurationWizardPage("CSV Configurations Page");
+		// configPage.setSmooksResourceList(resourceList);
+		// }
+
 		if (pathPage == null) {
-			pathPage = new CSV12DataPathWizardPage("CSV Path Page", new String[] {},configPage);
+			pathPage = new CSV12DataPathWizardPage("CSV Path Page", new String[] { "csv" }, configPage);
 		}
-		
+
 		this.addPage(pathPage);
-		this.addPage(configPage);
+		// this.addPage(configPage);
 		super.addPages();
 	}
 
@@ -93,22 +94,22 @@
 
 				}
 				if (skip >= 0) {
-					 reader.setSkipLines(BigInteger.valueOf(skip));
+					reader.setSkipLines(BigInteger.valueOf(skip));
 				}
 
 				String quoteChar = configPage.getQuoteChar();
 				reader.setQuote(quoteChar);
-				
+
 				String rootName = configPage.getRootName();
-				if(rootName != null){
+				if (rootName != null) {
 					reader.setRootElementName(rootName);
 				}
-				
+
 				String recordName = configPage.getRecordName();
-				if(recordName != null){
+				if (recordName != null) {
 					reader.setRecordElementName(recordName);
 				}
-				
+
 				String indent = configPage.getIndent();
 				if (indent != null && indent.length() != 0) {
 					boolean indentValue = Boolean.valueOf(indent).booleanValue();
@@ -138,8 +139,11 @@
 		}
 		return true;
 	}
-	
+
 	public boolean canFinish() {
+		if (pathPage != null) {
+			return pathPage.isPageComplete();
+		}
 		if (configPage != null && pathPage != null) {
 			if (configPage.isPageComplete() && pathPage.isPageComplete())
 				return true;
@@ -166,7 +170,7 @@
 	 * IStructuredDataSelectionWizard#getInputDataTypeID()
 	 */
 	public String getInputDataTypeID() {
-		return SmooksModelUtils.INPUT_TYPE_CSV_1_2;
+		return SmooksModelUtils.INPUT_TYPE_CSV;
 	}
 
 	/*
@@ -223,12 +227,12 @@
 			if (quoteChar != null && quoteChar.length() != 0) {
 				pro.put(CSVDataParser.QUOTECHAR, quoteChar);
 			}
-			
+
 			String rootName = configPage.getRootName();
 			if (rootName != null && rootName.length() != 0) {
 				pro.put(CSVDataParser.ROOT_ELEMENT_NAME, rootName);
 			}
-			
+
 			String recordName = configPage.getRecordName();
 			if (recordName != null && recordName.length() != 0) {
 				pro.put(CSVDataParser.RECORD_NAME, recordName);
@@ -238,7 +242,7 @@
 			if (skiplines != null && skiplines.length() != 0) {
 				pro.put(CSVDataParser.SKIPLINES, skiplines);
 			}
-			
+
 			String indent = configPage.getIndent();
 			if (indent != null && indent.length() != 0) {
 				pro.setProperty(JsonInputDataParser.INDENT, indent);

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/csv12/Csv12ReaderBindingPropertyUICreator.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/csv12/Csv12ReaderBindingPropertyUICreator.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/csv12/Csv12ReaderBindingPropertyUICreator.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -10,6 +10,7 @@
  ******************************************************************************/
 package org.jboss.tools.smooks.configuration.editors.csv12;
 
+
 import org.eclipse.emf.ecore.EAttribute;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
@@ -58,13 +59,13 @@
 			IItemPropertyDescriptor propertyDescriptor, Object model, EAttribute feature,
 			ISmooksModelProvider formEditor, IEditorPart part) {
 		if (feature ==  Csv12Package.Literals.BINDING__CLASS) {
-			return createBeanClassTextWithButton(parent, toolkit, propertyDescriptor, model);
+			return createBeanClassTextWithButton(parent, toolkit, propertyDescriptor, model , formEditor);
 		}
 		return super.createPropertyUI(toolkit, parent, propertyDescriptor, model, feature, formEditor, part);
 	}
 
 	protected AttributeFieldEditPart createBeanClassTextWithButton(Composite composite, FormToolkit toolkit,
-			final IItemPropertyDescriptor propertyDescriptor, final Object model) {
-		return SmooksUIUtils.createJavaTypeSearchFieldEditor(composite, toolkit, propertyDescriptor, (EObject) model);
+			final IItemPropertyDescriptor propertyDescriptor, final Object model , ISmooksModelProvider provider) {
+		return SmooksUIUtils.createJavaTypeSearchFieldEditor(composite, toolkit, propertyDescriptor, (EObject) model , provider);
 	}
 }

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/csv12/Csv12ReaderMapBindingPropertyUICreator.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/csv12/Csv12ReaderMapBindingPropertyUICreator.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/csv12/Csv12ReaderMapBindingPropertyUICreator.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -57,13 +57,13 @@
 			IItemPropertyDescriptor propertyDescriptor, Object model, EAttribute feature,
 			ISmooksModelProvider formEditor, IEditorPart part) {
 		if (feature ==  Csv12Package.Literals.BINDING__CLASS) {
-			return createBeanClassTextWithButton(parent, toolkit, propertyDescriptor, model);
+			return createBeanClassTextWithButton(parent, toolkit, propertyDescriptor, model , formEditor);
 		}
 		return super.createPropertyUI(toolkit, parent, propertyDescriptor, model, feature, formEditor, part);
 	}
 
 	protected AttributeFieldEditPart createBeanClassTextWithButton(Composite composite, FormToolkit toolkit,
-			final IItemPropertyDescriptor propertyDescriptor, final Object model) {
-		return SmooksUIUtils.createJavaTypeSearchFieldEditor(composite, toolkit, propertyDescriptor, (EObject) model);
+			final IItemPropertyDescriptor propertyDescriptor, final Object model , ISmooksModelProvider provider) {
+		return SmooksUIUtils.createJavaTypeSearchFieldEditor(composite, toolkit, propertyDescriptor, (EObject) model , provider);
 	}
 }

Added: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/csv12/Csv12ReaderUICreator.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/csv12/Csv12ReaderUICreator.java	                        (rev 0)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/csv12/Csv12ReaderUICreator.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -0,0 +1,357 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.smooks.configuration.editors.csv12;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.draw2d.ColorConstants;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jface.viewers.ICellModifier;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TextCellEditor;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Item;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.jboss.tools.smooks.configuration.editors.AttributeFieldEditPart;
+import org.jboss.tools.smooks.configuration.editors.ModelMultiChildrenTabelPanelCreator;
+import org.jboss.tools.smooks.configuration.editors.PropertyUICreator;
+import org.jboss.tools.smooks.configuration.editors.uitls.SmooksUIUtils;
+import org.jboss.tools.smooks.editor.ISmooksModelProvider;
+import org.jboss.tools.smooks.model.csv12.CSV12Reader;
+import org.jboss.tools.smooks.model.csv12.Csv12Package;
+
+/**
+ * @author Dart Peng (dpeng at redhat.com) Date Apr 10, 2009
+ */
+public class Csv12ReaderUICreator extends PropertyUICreator {
+
+	private TableViewer fieldsViewer;
+
+	private List<FieldText> fieldsList = new ArrayList<FieldText>();
+
+	private Button addButton;
+
+	private Button removeButton;
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @seeorg.jboss.tools.smooks.configuration.editors.IPropertyUICreator#
+	 * createPropertyUI(org.eclipse.ui.forms.widgets.FormToolkit,
+	 * org.eclipse.swt.widgets.Composite,
+	 * org.eclipse.emf.edit.provider.IItemPropertyDescriptor, java.lang.Object,
+	 * org.eclipse.emf.ecore.EAttribute)
+	 */
+	public AttributeFieldEditPart createPropertyUI(FormToolkit toolkit, Composite parent,
+			IItemPropertyDescriptor propertyDescriptor, Object model, EAttribute feature,
+			ISmooksModelProvider formEditor, IEditorPart part) {
+
+		return super.createPropertyUI(toolkit, parent, propertyDescriptor, model, feature, formEditor, part);
+	}
+
+	@Override
+	public List<AttributeFieldEditPart> createExtendUIOnBottom(AdapterFactoryEditingDomain editingdomain,
+			FormToolkit toolkit, Composite parent, Object model, ISmooksModelProvider formEditor, IEditorPart editorPart) {
+		createFiledsComposite(editingdomain, toolkit, parent, model, formEditor);
+		createParametersGroup(parent, (CSV12Reader) model, toolkit, formEditor, editorPart);
+		return super.createExtendUIOnBottom(editingdomain, toolkit, parent, model, formEditor, editorPart);
+	}
+
+	@Override
+	public boolean ignoreProperty(EAttribute feature) {
+		if (feature.equals(Csv12Package.Literals.CSV12_READER__FIELDS)) {
+			return true;
+		}
+		return super.ignoreProperty(feature);
+	}
+
+	private void createParametersGroup(Composite parent, CSV12Reader reader, FormToolkit toolkit,
+			ISmooksModelProvider modelProvider, IEditorPart editorPart) {
+		Group group = new Group(parent, SWT.NONE);
+		group.setText("Features");
+		group.setBackground(ColorConstants.white);
+		FillLayout fl = new FillLayout();
+		group.setLayout(fl);
+		final AdapterFactoryEditingDomain editingDomain = (AdapterFactoryEditingDomain) modelProvider
+				.getEditingDomain();
+		final Shell shell = parent.getShell();
+		IEditingDomainItemProvider p = (IEditingDomainItemProvider) editingDomain.getAdapterFactory().adapt(reader,
+				IEditingDomainItemProvider.class);
+		final Collection<?> children = p.getNewChildDescriptors(reader, editingDomain, null);
+
+		ModelMultiChildrenTabelPanelCreator creator = new ModelMultiChildrenTabelPanelCreator(shell, children,
+				editingDomain, modelProvider, reader, toolkit, editorPart) {
+			//
+			// @Override
+			// protected EStructuralFeature getChildFeature(CommandParameter
+			// model) {
+			// return model.getEStructuralFeature();
+			// }
+			//
+			// @Override
+			// protected EObject getNewChildInstance(CommandParameter feature2)
+			// {
+			// return feature2.getEValue();
+			// }
+
+		};
+
+		creator.createChildrenTablePanel(group);
+		GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.heightHint = 180;
+		gd.horizontalSpan = 2;
+		group.setLayoutData(gd);
+	}
+
+	private void createFiledsComposite(AdapterFactoryEditingDomain editingdomain, FormToolkit toolkit,
+			Composite parent, Object model, ISmooksModelProvider formEditor) {
+		fieldsList.clear();
+		GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.heightHint = 150;
+		gd.horizontalSpan = 2;
+		Group fieldsComposite = new Group(parent, SWT.NONE);
+		fieldsComposite.setBackground(toolkit.getColors().getBackground());
+		fieldsComposite.setText("Fields");
+		fieldsComposite.setLayoutData(gd);
+		GridLayout gl = new GridLayout();
+		gl.numColumns = 2;
+		fieldsComposite.setLayout(gl);
+
+		IItemPropertySource propertySource = (IItemPropertySource) editingdomain.getAdapterFactory().adapt(model,
+				IItemPropertySource.class);
+		final IItemPropertyDescriptor descriptor = propertySource.getPropertyDescriptor(model,
+				Csv12Package.Literals.CSV12_READER__FIELDS);
+
+		final Object readOnlyMoel = model;
+
+		String fields = (String) SmooksUIUtils.getEditValue(descriptor, model);
+
+		gd = new GridData(GridData.FILL_BOTH);
+		fieldsViewer = new TableViewer(fieldsComposite, SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION);
+		fieldsViewer.getControl().setLayoutData(gd);
+		fieldsViewer.getTable().setLinesVisible(true);
+		fieldsViewer.setContentProvider(new FieldsContentProvider());
+		fieldsViewer.setLabelProvider(new FieldsLabelProvider());
+
+		CellEditor fieldCellEditor = new TextCellEditor(fieldsViewer.getTable(), SWT.BORDER);
+
+		fieldsViewer.getTable().setLinesVisible(true);
+
+		fieldsViewer.setCellEditors(new CellEditor[] { fieldCellEditor });
+
+		fieldsViewer.setColumnProperties(new String[] { "field" });
+
+		fieldsViewer.setCellModifier(new ICellModifier() {
+
+			public void modify(Object element, String property, Object value) {
+				Object el = null;
+				if (element instanceof Item) {
+					el = ((Item) element).getData();
+				}
+				if (el == null)
+					return;
+				if (el instanceof FieldText && value instanceof String) {
+					if (property.equals("field")) {
+
+						if (value.toString().equals(((FieldText) el).getText())) {
+							return;
+						}
+						((FieldText) el).setText(value.toString());
+
+						fieldsViewer.refresh(el);
+						setFieldsValue(readOnlyMoel, descriptor);
+					}
+
+				}
+			}
+
+			public Object getValue(Object element, String property) {
+				if (element instanceof FieldText) {
+					if (property.equals("field")) {
+						return ((FieldText) element).getText();
+					}
+				}
+
+				return null;
+			}
+
+			public boolean canModify(Object element, String property) {
+				if (element instanceof FieldText) {
+					if (property.equals("field")) {
+						return true;
+					}
+				}
+				return false;
+			}
+		});
+		if (fields == null) {
+			fields = "";
+		}
+		fillFieldsList(fields);
+		fieldsViewer.setInput(fieldsList);
+
+		Composite buttonComposite = toolkit.createComposite(fieldsComposite);
+		gd = new GridData(GridData.FILL_VERTICAL);
+		gd.widthHint = 100;
+		buttonComposite.setLayoutData(gd);
+
+		GridLayout bgl = new GridLayout();
+		buttonComposite.setLayout(bgl);
+
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+
+		addButton = new Button(buttonComposite, SWT.NONE);
+		addButton.setLayoutData(gd);
+		addButton.setText("Add Field");
+
+		removeButton = new Button(buttonComposite, SWT.NONE);
+		removeButton.setLayoutData(gd);
+		removeButton.setText("Remove");
+
+		this.addButton.addSelectionListener(new SelectionListener() {
+
+			public void widgetSelected(SelectionEvent e) {
+				// addButton.setEnabled(false);
+				try {
+					FieldText field = new FieldText("field");
+					fieldsList.add(field);
+					fieldsViewer.refresh();
+					setFieldsValue(readOnlyMoel, descriptor);
+				} catch (Throwable t) {
+					t.printStackTrace();
+				} finally {
+					// addButton.setEnabled(true);
+				}
+			}
+
+			public void widgetDefaultSelected(SelectionEvent e) {
+				// TODO Auto-generated method stub
+
+			}
+		});
+
+		this.removeButton.addSelectionListener(new SelectionListener() {
+
+			public void widgetSelected(SelectionEvent e) {
+				IStructuredSelection s = (IStructuredSelection) fieldsViewer.getSelection();
+				fieldsList.removeAll(s.toList());
+				fieldsViewer.refresh();
+				setFieldsValue(readOnlyMoel, descriptor);
+			}
+
+			public void widgetDefaultSelected(SelectionEvent e) {
+
+			}
+		});
+	}
+
+	private void setFieldsValue(Object model, IItemPropertyDescriptor ps) {
+		String fieldsString = "";
+		for (int i = 0; i < fieldsList.size(); i++) {
+			FieldText fieldText = fieldsList.get(i);
+			fieldsString += fieldText.getText();
+			if (i < fieldsList.size() - 1) {
+				fieldsString += ",";
+			}
+		}
+		ps.setPropertyValue(model, fieldsString);
+	}
+
+	private void fillFieldsList(String fieldsString) {
+		if (fieldsString == null)
+			return;
+		String input = fieldsString.toString();
+		input = input.trim();
+		if (input.indexOf(",") != -1) {
+			String[] fields = input.split(",");
+			if (fields != null && fields.length > 0) {
+				for (int i = 0; i < fields.length; i++) {
+					String field = fields[i];
+					if (field != null) {
+						field = field.trim();
+						fieldsList.add(new FieldText(field));
+					}
+				}
+			}
+		}else{
+			fieldsList.add(new FieldText(input));
+		}
+	}
+
+	private class FieldsLabelProvider extends LabelProvider {
+
+		@Override
+		public String getText(Object element) {
+			if (element instanceof FieldText) {
+				return ((FieldText) element).getText();
+			}
+			return super.getText(element);
+		}
+
+	}
+
+	private class FieldsContentProvider implements IStructuredContentProvider {
+
+		public void dispose() {
+			// TODO Auto-generated method stub
+
+		}
+
+		public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+
+		}
+
+		public Object[] getElements(Object inputElement) {
+			if (inputElement instanceof List<?>) {
+				return ((List<?>) inputElement).toArray();
+			}
+			return new Object[] {};
+		}
+	}
+
+	private class FieldText {
+		private String text = null;
+
+		public FieldText(String t) {
+			setText(t);
+		}
+
+		public String getText() {
+			return text;
+		}
+
+		public void setText(String text) {
+			this.text = text;
+		}
+
+	}
+}
\ No newline at end of file


Property changes on: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/csv12/Csv12ReaderUICreator.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/edi/EDIDataParser.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/edi/EDIDataParser.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/edi/EDIDataParser.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -108,58 +108,32 @@
 
 	public TagList parseEDIFile(InputStream stream, InputType inputType, SmooksResourceListType resourceList)
 			throws IOException, DocumentException {
-
-		List<ParamType> paramList = inputType.getParam();
-		String encoding = null;
-		String mappingModel = null;
-		String validate = null;
-		String type = inputType.getType();
-
-		for (Iterator<?> iterator = paramList.iterator(); iterator.hasNext();) {
-			ParamType paramType = (ParamType) iterator.next();
-			if (paramType.getName().equals(USE_AVAILABEL_READER)) {
-				if (paramType.getValue().equalsIgnoreCase("true") && resourceList != null) {
-					List<AbstractReader> readers = resourceList.getAbstractReader();
-					int count = 0;
-					int index = -1;
-					for (Iterator<?> iterator2 = readers.iterator(); iterator2.hasNext();) {
-						AbstractReader abstractReader = (AbstractReader) iterator2.next();
-						if (abstractReader instanceof EDIReader && SmooksModelUtils.INPUT_TYPE_EDI_1_1.equals(type)) {
-							count++;
-							if (index == -1) {
-								index = readers.indexOf(abstractReader);
-							}
-						}
-						if (abstractReader instanceof EDI12Reader && SmooksModelUtils.INPUT_TYPE_EDI_1_2.equals(type)) {
-							count++;
-							if (index == -1) {
-								index = readers.indexOf(abstractReader);
-							}
-						}
-					}
-
-					if (count > 1) {
-						// throw new
-						// RuntimeException("The smooks config file should have only one JSON reader");
-					}
-					if (index != -1) {
-						return parseEDIFile(stream, (EObject) readers.get(index));
-					}
-
+//		String encoding = null;
+//		String mappingModel = null;
+//		String validate = null;
+//		String type = inputType.getType();
+		List<AbstractReader> readers = resourceList.getAbstractReader();
+		int count = 0;
+		int index = -1;
+		for (Iterator<?> iterator2 = readers.iterator(); iterator2.hasNext();) {
+			AbstractReader abstractReader = (AbstractReader) iterator2.next();
+			if (abstractReader instanceof EDIReader || abstractReader instanceof EDI12Reader) {
+				count++;
+				if (index == -1) {
+					index = readers.indexOf(abstractReader);
 				}
 			}
-			if (paramType.getName().equals(ENCODING)) {
-				encoding = paramType.getValue();
-			}
-			if (paramType.getName().equals(MAPPING_MODEL)) {
-				mappingModel = paramType.getValue();
-			}
-			if (paramType.getName().equals(VALIDATE)) {
-				validate = paramType.getValue();
-			}
 		}
 
-		return parseEDIFile(stream, mappingModel, encoding,validate, resourceList);
+		if (count > 1) {
+			// throw new
+			// RuntimeException("The smooks config file should have only one JSON reader");
+		}
+		if (index != -1) {
+			return parseEDIFile(stream, (EObject) readers.get(index));
+		}
+		return null;
+//		return parseEDIFile(stream, mappingModel, encoding,validate, resourceList);
 	}
 
 	public TagList parseEDIFile(InputStream ediInputStream, EObject readerObj, IProject project) throws IOException,

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/edi/EDIDataWizard.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/edi/EDIDataWizard.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/edi/EDIDataWizard.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -49,11 +49,12 @@
 
 	@Override
 	public void addPages() {
-		ediFilePage = new EDIDataPathWizardPage("EDI Data Page", new String[] {});
+		ediFilePage = new EDIDataPathWizardPage("EDI Data Page", new String[] {"edi"});
 		this.addPage(ediFilePage);
 
-		mappingFilePage = new EDIMappingDataPathWizardPage("EDI Config Page", null);
-		this.addPage(mappingFilePage);
+		// mappingFilePage = new EDIMappingDataPathWizardPage("EDI Config Page",
+		// null);
+		// this.addPage(mappingFilePage);
 		super.addPages();
 	}
 
@@ -64,20 +65,22 @@
 	 */
 	@Override
 	public boolean performFinish() {
-		if (mappingFilePage.isUseAvaliableReader()) {
-			return true;
+		if (mappingFilePage != null) {
+			if (mappingFilePage.isUseAvaliableReader()) {
+				return true;
+			}
+			if (mappingFilePage.isCreateNewReader()) {
+				String encoding = mappingFilePage.getEncoding();
+				String path = mappingFilePage.getFilePath();
+				EDIReader reader = EdiFactory.eINSTANCE.createEDIReader();
+				reader.setEncoding(encoding);
+				reader.setMappingModel(path);
+				Command command = AddCommand.create(editingDomain, resourceList,
+						SmooksPackage.Literals.SMOOKS_RESOURCE_LIST_TYPE__ABSTRACT_READER_GROUP, FeatureMapUtil
+								.createEntry(EdiPackage.Literals.EDI_DOCUMENT_ROOT__READER, reader));
+				editingDomain.getCommandStack().execute(command);
+			}
 		}
-		if (mappingFilePage.isCreateNewReader()) {
-			String encoding = mappingFilePage.getEncoding();
-			String path = mappingFilePage.getFilePath();
-			EDIReader reader = EdiFactory.eINSTANCE.createEDIReader();
-			reader.setEncoding(encoding);
-			reader.setMappingModel(path);
-			Command command = AddCommand.create(editingDomain, resourceList,
-					SmooksPackage.Literals.SMOOKS_RESOURCE_LIST_TYPE__ABSTRACT_READER_GROUP, FeatureMapUtil
-							.createEntry(EdiPackage.Literals.EDI_DOCUMENT_ROOT__READER, reader));
-			editingDomain.getCommandStack().execute(command);
-		}
 		return true;
 	}
 
@@ -111,14 +114,17 @@
 	 */
 	public Properties getProperties() {
 		Properties pros = new Properties();
-		if (mappingFilePage.isUseAvaliableReader() || mappingFilePage.isCreateNewReader()) {
-			pros.put(EDIDataParser.USE_AVAILABEL_READER, "true");
-			return pros;
+		if (mappingFilePage != null) {
+			if (mappingFilePage.isUseAvaliableReader() || mappingFilePage.isCreateNewReader()) {
+				pros.put(EDIDataParser.USE_AVAILABEL_READER, "true");
+				return pros;
+			}
+
+			String encoding = mappingFilePage.getEncoding();
+			pros.put(EDIDataParser.ENCODING, encoding);
+			String path = mappingFilePage.getFilePath();
+			pros.put(EDIDataParser.MAPPING_MODEL, path);
 		}
-		String encoding = mappingFilePage.getEncoding();
-		pros.put(EDIDataParser.ENCODING, encoding);
-		String path = mappingFilePage.getFilePath();
-		pros.put(EDIDataParser.MAPPING_MODEL, path);
 		return pros;
 	}
 

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/javabean/BindingsPropertyUICreator.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/javabean/BindingsPropertyUICreator.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/javabean/BindingsPropertyUICreator.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -98,7 +98,7 @@
 			IItemPropertyDescriptor propertyDescriptor, Object model, EAttribute feature,
 			ISmooksModelProvider formEditor, IEditorPart part) {
 		if (feature == JavabeanPackage.eINSTANCE.getBindingsType_Class()) {
-			return createBeanClassTextWithButton(parent, toolkit, propertyDescriptor, model);
+			return createBeanClassTextWithButton(parent, toolkit, propertyDescriptor, model , formEditor);
 		}
 		return super.createPropertyUI(toolkit, parent, propertyDescriptor, model, feature, formEditor, part);
 	}
@@ -295,7 +295,7 @@
 	}
 
 	protected AttributeFieldEditPart createBeanClassTextWithButton(Composite composite, FormToolkit toolkit,
-			final IItemPropertyDescriptor propertyDescriptor, final Object model) {
-		return SmooksUIUtils.createJavaTypeSearchFieldEditor(composite, toolkit, propertyDescriptor, (EObject) model);
+			final IItemPropertyDescriptor propertyDescriptor, final Object model , ISmooksModelProvider provider) {
+		return SmooksUIUtils.createJavaTypeSearchFieldEditor(composite, toolkit, propertyDescriptor, (EObject) model , provider);
 	}
 }

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/javabean12/JavaBean12PropertyUICreator.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/javabean12/JavaBean12PropertyUICreator.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/javabean12/JavaBean12PropertyUICreator.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -103,7 +103,7 @@
 			IItemPropertyDescriptor propertyDescriptor, Object model, EAttribute feature,
 			ISmooksModelProvider formEditor, IEditorPart part) {
 		if (feature == Javabean12Package.eINSTANCE.getBeanType_Class()) {
-			return createBeanClassTextWithButton(parent, toolkit, propertyDescriptor, model);
+			return createBeanClassTextWithButton(parent, toolkit, propertyDescriptor, model , formEditor);
 		}
 		return super.createPropertyUI(toolkit, parent, propertyDescriptor, model, feature, formEditor, part);
 	}
@@ -300,7 +300,7 @@
 	}
 
 	protected AttributeFieldEditPart createBeanClassTextWithButton(Composite composite, FormToolkit toolkit,
-			final IItemPropertyDescriptor propertyDescriptor, final Object model) {
-		return SmooksUIUtils.createJavaTypeSearchFieldEditor(composite, toolkit, propertyDescriptor, (EObject) model);
+			final IItemPropertyDescriptor propertyDescriptor, final Object model , ISmooksModelProvider provider) {
+		return SmooksUIUtils.createJavaTypeSearchFieldEditor(composite, toolkit, propertyDescriptor, (EObject) model , provider);
 	}
 }

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/json/JsonDataWizard.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/json/JsonDataWizard.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/json/JsonDataWizard.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -59,6 +59,9 @@
 	}
 
 	public boolean canFinish() {
+		if(pathPage != null){
+			return pathPage.isPageComplete();
+		}
 		if (configPage != null && pathPage != null) {
 			if (configPage.isPageComplete() && pathPage.isPageComplete())
 				return true;
@@ -75,15 +78,15 @@
 	public void addPages() {
 		super.addPages();
 		if (pathPage == null) {
-			pathPage = new JsonDataPathWizardPage("Json Input Data Selection ", new String[] {});
+			pathPage = new JsonDataPathWizardPage("JSON Input Data Selection ", new String[] {"jsn"});
 
 		}
-		if (configPage == null) {
-			configPage = new JsonDataConfiguraitonWizardPage("Json data configuration page");
-			configPage.setSmooksResourceList(resourceList);
-		}
+//		if (configPage == null) {
+//			configPage = new JsonDataConfiguraitonWizardPage("Json data configuration page");
+//			configPage.setSmooksResourceList(resourceList);
+//		}
 		this.addPage(pathPage);
-		this.addPage(configPage);
+//		this.addPage(configPage);
 	}
 
 	/*

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/json/JsonReaderUICreator.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/json/JsonReaderUICreator.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/json/JsonReaderUICreator.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -10,15 +10,28 @@
  ******************************************************************************/
 package org.jboss.tools.smooks.configuration.editors.json;
 
+import java.util.List;
+
+import org.eclipse.draw2d.ColorConstants;
 import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Group;
 import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.forms.widgets.FormToolkit;
 import org.jboss.tools.smooks.configuration.editors.AttributeFieldEditPart;
+import org.jboss.tools.smooks.configuration.editors.ModelChildrenTablePanelCreator;
 import org.jboss.tools.smooks.configuration.editors.PropertyUICreator;
 import org.jboss.tools.smooks.editor.ISmooksModelProvider;
+import org.jboss.tools.smooks.model.json.JsonFactory;
 import org.jboss.tools.smooks.model.json.JsonPackage;
+import org.jboss.tools.smooks.model.json.JsonReader;
 
 /**
  * @author Dart Peng (dpeng at redhat.com) Date Apr 10, 2009
@@ -54,4 +67,40 @@
 		return super.createPropertyUI(toolkit, parent, propertyDescriptor, model, feature, formEditor, part);
 	}
 
+	@Override
+	public List<AttributeFieldEditPart> createExtendUIOnBottom(AdapterFactoryEditingDomain editingdomain,
+			FormToolkit toolkit, Composite parent, Object model, ISmooksModelProvider formEditor, IEditorPart editorPart) {
+		if (model instanceof JsonReader) {
+			EObject keyMap = ((JsonReader) model).getKeyMap();
+			if (keyMap != null) {
+				Group group = new Group(parent, SWT.NONE);
+				group.setText("Key Maps");
+				group.setBackground(ColorConstants.white);
+				FillLayout fl = new FillLayout();
+				group.setLayout(fl);
+
+				ModelChildrenTablePanelCreator creator = new ModelChildrenTablePanelCreator(formEditor, keyMap,
+						toolkit, editorPart) {
+
+					@Override
+					protected EStructuralFeature getChildrenFeature() {
+						return JsonPackage.Literals.KEY_MAP__KEY;
+					}
+
+					@Override
+					protected EObject newChildModel() {
+						return JsonFactory.eINSTANCE.createKey();
+					}
+				};
+				creator.createChildrenTablePanel(group);
+				GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+				gd.heightHint = 200;
+				gd.horizontalSpan = 2;
+				group.setLayoutData(gd);
+			}
+		}
+
+		return super.createExtendUIOnBottom(editingdomain, toolkit, parent, model, formEditor, editorPart);
+	}
+
 }
\ No newline at end of file

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/json12/Json12DataWizard.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/json12/Json12DataWizard.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/json12/Json12DataWizard.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -55,10 +55,13 @@
 
 	public Json12DataWizard() {
 		super();
-		this.setWindowTitle("JSON Input Data Wizard (version 1.2)");
+		this.setWindowTitle("JSON Input Data Wizard");
 	}
 
 	public boolean canFinish() {
+		if(pathPage != null){
+			return pathPage.isPageComplete();
+		}
 		if (configPage != null && pathPage != null) {
 			if (configPage.isPageComplete() && pathPage.isPageComplete())
 				return true;
@@ -78,12 +81,12 @@
 			pathPage = new Json12DataPathWizardPage("Json Input Data Selection ", new String[] {});
 
 		}
-		if (configPage == null) {
-			configPage = new Json12DataConfiguraitonWizardPage("Json data configuration page");
-			configPage.setSmooksResourceList(resourceList);
-		}
+//		if (configPage == null) {
+//			configPage = new Json12DataConfiguraitonWizardPage("Json data configuration page");
+//			configPage.setSmooksResourceList(resourceList);
+//		}
 		this.addPage(pathPage);
-		this.addPage(configPage);
+//		this.addPage(configPage);
 	}
 
 	/*

Added: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/json12/Json12ReaderUICreator.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/json12/Json12ReaderUICreator.java	                        (rev 0)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/json12/Json12ReaderUICreator.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -0,0 +1,92 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.smooks.configuration.editors.json12;
+
+import java.util.List;
+
+import org.eclipse.draw2d.ColorConstants;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.jboss.tools.smooks.configuration.editors.AttributeFieldEditPart;
+import org.jboss.tools.smooks.configuration.editors.ModelChildrenTablePanelCreator;
+import org.jboss.tools.smooks.configuration.editors.PropertyUICreator;
+import org.jboss.tools.smooks.editor.ISmooksModelProvider;
+import org.jboss.tools.smooks.model.json12.Json12Factory;
+import org.jboss.tools.smooks.model.json12.Json12Package;
+import org.jboss.tools.smooks.model.json12.Json12Reader;
+
+/**
+ * @author Dart Peng (dpeng at redhat.com) Date Apr 10, 2009
+ */
+public class Json12ReaderUICreator extends PropertyUICreator {
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @seeorg.jboss.tools.smooks.configuration.editors.IPropertyUICreator#
+	 * createPropertyUI(org.eclipse.ui.forms.widgets.FormToolkit,
+	 * org.eclipse.swt.widgets.Composite,
+	 * org.eclipse.emf.edit.provider.IItemPropertyDescriptor, java.lang.Object,
+	 * org.eclipse.emf.ecore.EAttribute)
+	 */
+	public AttributeFieldEditPart createPropertyUI(FormToolkit toolkit, Composite parent,
+			IItemPropertyDescriptor propertyDescriptor, Object model, EAttribute feature,
+			ISmooksModelProvider formEditor, IEditorPart part) {
+		return super.createPropertyUI(toolkit, parent, propertyDescriptor, model, feature, formEditor, part);
+	}
+
+	@Override
+	public List<AttributeFieldEditPart> createExtendUIOnBottom(AdapterFactoryEditingDomain editingdomain,
+			FormToolkit toolkit, Composite parent, Object model, ISmooksModelProvider formEditor, IEditorPart editorPart) {
+		if (model instanceof Json12Reader) {
+			EObject keyMap = ((Json12Reader) model).getKeyMap();
+			if (keyMap != null) {
+				Group group = new Group(parent, SWT.NONE);
+				group.setText("Key Maps");
+				group.setBackground(ColorConstants.white);
+				FillLayout fl = new FillLayout();
+				group.setLayout(fl);
+
+				ModelChildrenTablePanelCreator creator = new ModelChildrenTablePanelCreator(formEditor, keyMap,
+						toolkit, editorPart) {
+
+					@Override
+					protected EStructuralFeature getChildrenFeature() {
+						return Json12Package.Literals.KEY_MAP__KEY;
+					}
+
+					@Override
+					protected EObject newChildModel() {
+						return Json12Factory.eINSTANCE.createKey();
+					}
+				};
+				creator.createChildrenTablePanel(group);
+				GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+				gd.heightHint = 200;
+				gd.horizontalSpan = 2;
+				group.setLayoutData(gd);
+			}
+		}
+
+		return super.createExtendUIOnBottom(editingdomain, toolkit, parent, model, formEditor, editorPart);
+	}
+
+}
\ No newline at end of file


Property changes on: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/json12/Json12ReaderUICreator.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/rule10/Rules10RulebaseUICreator.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/rule10/Rules10RulebaseUICreator.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/rule10/Rules10RulebaseUICreator.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -55,13 +55,13 @@
 			IItemPropertyDescriptor propertyDescriptor, Object model, EAttribute feature,
 			ISmooksModelProvider formEditor, IEditorPart part) {
 		if (feature ==  Rules10Package.Literals.RULE_BASE__PROVIDER) {
-			return createBeanClassTextWithButton(parent, toolkit, propertyDescriptor, model);
+			return createBeanClassTextWithButton(parent, toolkit, propertyDescriptor, model , formEditor);
 		}
 		return super.createPropertyUI(toolkit, parent, propertyDescriptor, model, feature, formEditor, part);
 	}
 
 	protected AttributeFieldEditPart createBeanClassTextWithButton(Composite composite, FormToolkit toolkit,
-			final IItemPropertyDescriptor propertyDescriptor, final Object model) {
-		return SmooksUIUtils.createJavaTypeSearchFieldEditor(composite, toolkit, propertyDescriptor, (EObject) model);
+			final IItemPropertyDescriptor propertyDescriptor, final Object model , ISmooksModelProvider provider) {
+		return SmooksUIUtils.createJavaTypeSearchFieldEditor(composite, toolkit, propertyDescriptor, (EObject) model , provider);
 	}
 }

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/smooks/ConditionTypeUICreator.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/smooks/ConditionTypeUICreator.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/smooks/ConditionTypeUICreator.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -47,18 +47,18 @@
 	 */
 	public AttributeFieldEditPart createPropertyUI(FormToolkit toolkit, Composite parent,
 			IItemPropertyDescriptor propertyDescriptor, Object model, EAttribute feature,
-			ISmooksModelProvider formEditor,IEditorPart part) {
+			ISmooksModelProvider modelProvider,IEditorPart part) {
 		if (feature == SmooksPackage.eINSTANCE.getConditionType_Value()) {
 		}
 		if (feature == SmooksPackage.eINSTANCE.getConditionType_Evaluator()) {
-			return SmooksUIUtils.createJavaTypeSearchFieldEditor(parent, toolkit, propertyDescriptor, (EObject) model);
+			return SmooksUIUtils.createJavaTypeSearchFieldEditor(parent, toolkit, propertyDescriptor, (EObject) model , modelProvider);
 		}
 		if (feature == SmooksPackage.eINSTANCE.getConditionType_Id()) {
 		}
 		if (feature == SmooksPackage.eINSTANCE.getConditionType_IdRef()) {
 		}
 
-		return super.createPropertyUI(toolkit, parent, propertyDescriptor, model, feature, formEditor,part);
+		return super.createPropertyUI(toolkit, parent, propertyDescriptor, model, feature, modelProvider,part);
 	}
 
 	/*

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/smooks/ReaderTypeUICreator.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/smooks/ReaderTypeUICreator.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/smooks/ReaderTypeUICreator.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -10,14 +10,32 @@
  ******************************************************************************/
 package org.jboss.tools.smooks.configuration.editors.smooks;
 
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.draw2d.ColorConstants;
 import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.command.CommandParameter;
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Shell;
 import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.forms.widgets.FormToolkit;
 import org.jboss.tools.smooks.configuration.editors.AttributeFieldEditPart;
+import org.jboss.tools.smooks.configuration.editors.ContainerChildrenTablePanelCreator;
+import org.jboss.tools.smooks.configuration.editors.MultiContainerChildrenAddtionTablePanel;
 import org.jboss.tools.smooks.configuration.editors.PropertyUICreator;
 import org.jboss.tools.smooks.editor.ISmooksModelProvider;
+import org.jboss.tools.smooks.model.smooks.ReaderType;
+import org.jboss.tools.smooks.model.smooks.SmooksFactory;
 import org.jboss.tools.smooks.model.smooks.SmooksPackage;
 
 /**
@@ -36,8 +54,8 @@
 	 */
 	public AttributeFieldEditPart createPropertyUI(FormToolkit toolkit, Composite parent,
 			IItemPropertyDescriptor propertyDescriptor, Object model, EAttribute feature,
-			ISmooksModelProvider formEditor,IEditorPart part) {
-		return super.createPropertyUI(toolkit, parent, propertyDescriptor, model, feature, formEditor,part);
+			ISmooksModelProvider formEditor, IEditorPart part) {
+		return super.createPropertyUI(toolkit, parent, propertyDescriptor, model, feature, formEditor, part);
 	}
 
 	@Override
@@ -47,5 +65,135 @@
 		}
 		return super.isJavaTypeFeature(attribute);
 	}
-	
+
+	@Override
+	public List<AttributeFieldEditPart> createExtendUIOnBottom(AdapterFactoryEditingDomain editingdomain,
+			FormToolkit toolkit, Composite parent, Object model, ISmooksModelProvider formEditor, IEditorPart editorPart) {
+		if (model instanceof ReaderType) {
+			createHandlerGroup(parent, (ReaderType) model, toolkit, formEditor, editorPart);
+			createFeaturesGroup(parent, (ReaderType) model, toolkit, formEditor, editorPart);
+			createParametersGroup(parent, (ReaderType) model, toolkit, formEditor, editorPart);
+		}
+
+		return super.createExtendUIOnBottom(editingdomain, toolkit, parent, model, formEditor, editorPart);
+	}
+
+	private void createParametersGroup(Composite parent, ReaderType reader, FormToolkit toolkit,
+			ISmooksModelProvider modelProvider, IEditorPart editorPart) {
+		Group group = new Group(parent, SWT.NONE);
+		group.setText("Parameters");
+		group.setBackground(ColorConstants.white);
+		FillLayout fl = new FillLayout();
+		group.setLayout(fl);
+
+		ContainerChildrenTablePanelCreator creator = new ContainerChildrenTablePanelCreator(modelProvider, reader,
+				toolkit, editorPart) {
+
+			@Override
+			protected EObject newContainerModel() {
+				return SmooksFactory.eINSTANCE.createParamsType();
+			}
+
+			@Override
+			protected EStructuralFeature getChildrenFeature() {
+				return SmooksPackage.Literals.PARAMS_TYPE__PARAM;
+			}
+
+			@Override
+			protected EObject newChildModel() {
+				return SmooksFactory.eINSTANCE.createParamType();
+			}
+		};
+		creator.setParentModel(reader.getParams());
+		creator.setContainerFeature(SmooksPackage.Literals.READER_TYPE__PARAMS);
+		creator.createChildrenTablePanel(group);
+		GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.heightHint = 180;
+		gd.horizontalSpan = 2;
+		group.setLayoutData(gd);
+	}
+
+	private void createFeaturesGroup(Composite parent, ReaderType reader, FormToolkit toolkit,
+			ISmooksModelProvider modelProvider, IEditorPart editorPart) {
+		Group group = new Group(parent, SWT.NONE);
+		group.setText("Features");
+		group.setBackground(ColorConstants.white);
+		FillLayout fl = new FillLayout();
+		group.setLayout(fl);
+		final AdapterFactoryEditingDomain editingDomain = (AdapterFactoryEditingDomain) modelProvider
+				.getEditingDomain();
+		final Shell shell = parent.getShell();
+		Object temp = SmooksFactory.eINSTANCE.createFeaturesType();
+		IEditingDomainItemProvider p = (IEditingDomainItemProvider) editingDomain.getAdapterFactory().adapt(temp,
+				IEditingDomainItemProvider.class);
+		final Collection<?> children = p.getNewChildDescriptors(temp, editingDomain, null);
+
+		MultiContainerChildrenAddtionTablePanel creator = new MultiContainerChildrenAddtionTablePanel(shell, children,
+				editingDomain, modelProvider, reader, toolkit, editorPart) {
+
+			@Override
+			protected EStructuralFeature getChildFeature(CommandParameter cp) {
+				return cp.getEStructuralFeature();
+			}
+
+			@Override
+			protected EObject getNewChildInstance(CommandParameter cp) {
+				Object feature = cp.getEStructuralFeature();
+				if (feature.equals(SmooksPackage.Literals.FEATURES_TYPE__SET_ON))
+					return SmooksFactory.eINSTANCE.createSetOnType();
+				if (feature.equals(SmooksPackage.Literals.FEATURES_TYPE__SET_OFF))
+					return SmooksFactory.eINSTANCE.createSetOffType();
+				return null;
+			}
+
+			@Override
+			protected EObject newContainerModel() {
+				return SmooksFactory.eINSTANCE.createFeaturesType();
+			}
+
+		};
+		creator.setParentModel(reader.getFeatures());
+		creator.setContainerFeature(SmooksPackage.Literals.READER_TYPE__FEATURES);
+		creator.createChildrenTablePanel(group);
+		GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.heightHint = 180;
+		gd.horizontalSpan = 2;
+		group.setLayoutData(gd);
+	}
+
+	private void createHandlerGroup(Composite parent, ReaderType reader, FormToolkit toolkit,
+			ISmooksModelProvider modelProvider, IEditorPart editorPart) {
+		Group group = new Group(parent, SWT.NONE);
+		group.setText("Handlers");
+		group.setBackground(ColorConstants.white);
+		FillLayout fl = new FillLayout();
+		group.setLayout(fl);
+
+		ContainerChildrenTablePanelCreator creator = new ContainerChildrenTablePanelCreator(modelProvider, reader,
+				toolkit, editorPart) {
+
+			@Override
+			protected EObject newContainerModel() {
+				return SmooksFactory.eINSTANCE.createHandlersType();
+			}
+
+			@Override
+			protected EStructuralFeature getChildrenFeature() {
+				return SmooksPackage.Literals.HANDLERS_TYPE__HANDLER;
+			}
+
+			@Override
+			protected EObject newChildModel() {
+				return SmooksFactory.eINSTANCE.createHandlerType();
+			}
+		};
+		creator.setParentModel(reader.getHandlers());
+		creator.setContainerFeature(SmooksPackage.Literals.READER_TYPE__HANDLERS);
+		creator.createChildrenTablePanel(group);
+		GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.heightHint = 180;
+		gd.horizontalSpan = 2;
+		group.setLayoutData(gd);
+	}
+
 }
\ No newline at end of file

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/smooks/ResourceTypeUICreator.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/smooks/ResourceTypeUICreator.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/smooks/ResourceTypeUICreator.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -38,13 +38,13 @@
 	 */
 	public AttributeFieldEditPart createPropertyUI(FormToolkit toolkit, Composite parent,
 			IItemPropertyDescriptor propertyDescriptor, Object model, EAttribute feature,
-			ISmooksModelProvider formEditor, IEditorPart part) {
+			ISmooksModelProvider modelProvider, IEditorPart part) {
 		if (feature == SmooksPackage.eINSTANCE.getResourceType_Value()) {
-			return SmooksUIUtils.createJavaTypeSearchFieldEditor(parent, toolkit, propertyDescriptor, (EObject) model);
+			return SmooksUIUtils.createJavaTypeSearchFieldEditor(parent, toolkit, propertyDescriptor, (EObject) model , modelProvider);
 		}
 		if (feature == SmooksPackage.eINSTANCE.getResourceType_Type()) {
 		}
-		return super.createPropertyUI(toolkit, parent, propertyDescriptor, model, feature, formEditor,part);
+		return super.createPropertyUI(toolkit, parent, propertyDescriptor, model, feature, modelProvider,part);
 	}
 
 }
\ No newline at end of file

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/uitls/JsonInputDataParser.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/uitls/JsonInputDataParser.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/uitls/JsonInputDataParser.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -25,7 +25,6 @@
 import org.jboss.tools.smooks.configuration.editors.xml.TagList;
 import org.jboss.tools.smooks.configuration.editors.xml.XMLObjectAnalyzer;
 import org.jboss.tools.smooks.model.graphics.ext.InputType;
-import org.jboss.tools.smooks.model.graphics.ext.ParamType;
 import org.jboss.tools.smooks.model.json.JsonReader;
 import org.jboss.tools.smooks.model.json.Key;
 import org.jboss.tools.smooks.model.json.KeyMap;
@@ -33,7 +32,6 @@
 import org.jboss.tools.smooks.model.json12.Json12Reader;
 import org.jboss.tools.smooks.model.smooks.AbstractReader;
 import org.jboss.tools.smooks.model.smooks.SmooksResourceListType;
-import org.jboss.tools.smooks10.model.smooks.util.SmooksModelUtils;
 import org.milyn.Smooks;
 import org.milyn.cdr.Parameter;
 import org.milyn.json.JSONReaderConfigurator;
@@ -120,91 +118,28 @@
 	public IXMLStructuredObject parseJsonFile(InputStream stream, InputType inputType,
 			SmooksResourceListType resourceList) throws FileNotFoundException, ParserConfigurationException,
 			DocumentException, InvocationTargetException {
-		List<ParamType> paramList = inputType.getParam();
-		String rootName = null;
-		String arrayElementName = null;
-		String keyWhitspaceReplacement = null;
-		String keyPrefixOnNumeric = null;
-		String illegalElementNameCharReplacement = null;
-		String nullValueReplacement = null;
-		String encoding = null;
-		String indent = null;
 
-		String type = inputType.getType();
-
-		Map<String, String> keyMap = new HashMap<String, String>();
-
-		for (Iterator<?> iterator = paramList.iterator(); iterator.hasNext();) {
-			ParamType paramType = (ParamType) iterator.next();
-			if (paramType.getName().equals(LINK_JSON_READER)) {
-				if (paramType.getValue().equalsIgnoreCase("true") && resourceList != null) {
-					List<AbstractReader> readers = resourceList.getAbstractReader();
-					int count = 0;
-					int index = -1;
-					for (Iterator<?> iterator2 = readers.iterator(); iterator2.hasNext();) {
-						AbstractReader abstractReader = (AbstractReader) iterator2.next();
-						if (SmooksModelUtils.INPUT_TYPE_JSON_1_1.equals(type)) {
-							if (abstractReader instanceof JsonReader) {
-								count++;
-								if (index == -1) {
-									index = readers.indexOf(abstractReader);
-								}
-							}
-						}
-						if (SmooksModelUtils.INPUT_TYPE_JSON_1_2.equals(type)) {
-							if (abstractReader instanceof Json12Reader) {
-								count++;
-								if (index == -1) {
-									index = readers.indexOf(abstractReader);
-								}
-							}
-						}
-					}
-
-					if (count > 1) {
-						// throw new
-						// RuntimeException("The smooks config file should have only one JSON reader");
-					}
-					if (index != -1) {
-						return parseJsonFile(stream, readers.get(index));
-					}
-
+		List<AbstractReader> readers = resourceList.getAbstractReader();
+		int count = 0;
+		int index = -1;
+		for (Iterator<?> iterator2 = readers.iterator(); iterator2.hasNext();) {
+			AbstractReader abstractReader = (AbstractReader) iterator2.next();
+			if (abstractReader instanceof JsonReader || abstractReader instanceof Json12Reader) {
+				count++;
+				if (index == -1) {
+					index = readers.indexOf(abstractReader);
 				}
 			}
-			if (paramType.getName().equals(ROOT_NAME)) {
-				rootName = paramType.getValue();
-			}
-			if (paramType.getName().startsWith(KEY)) {
-				String name = paramType.getName().substring(KEY.length(), paramType.getName().length());
-				String value = paramType.getValue();
-				keyMap.put(name, value);
-			}
-			if (paramType.getName().equals(ARRAY_ELEMENT_NAME)) {
-				arrayElementName = paramType.getValue();
-			}
-			if (paramType.getName().equals(ILLEGAL_REPLACE)) {
-				illegalElementNameCharReplacement = paramType.getValue();
-			}
-			if (paramType.getName().equals(PREFIX_ON_NUMERIC)) {
-				keyPrefixOnNumeric = paramType.getValue();
-			}
-			if (paramType.getName().equals(SPACE_REPLACE)) {
-				keyWhitspaceReplacement = paramType.getValue();
-			}
-			if (paramType.getName().equals(ENCODING2)) {
-				encoding = paramType.getValue();
-			}
-			if (paramType.getName().equals(NULL_REPLACE)) {
-				nullValueReplacement = paramType.getValue();
-			}
-
-			if (paramType.getName().equals(INDENT)) {
-				indent = paramType.getValue();
-			}
 		}
 
-		return this.parseJsonFile(stream, rootName, arrayElementName, keyWhitspaceReplacement, keyPrefixOnNumeric,
-				illegalElementNameCharReplacement, nullValueReplacement, keyMap, indent, encoding);
+		if (count > 1) {
+			// throw new
+			// RuntimeException("The smooks config file should have only one JSON reader");
+		}
+		if (index != -1) {
+			return parseJsonFile(stream, readers.get(index));
+		}
+		return null;
 	}
 
 	public IXMLStructuredObject parseJsonFile(String filePath, InputType inputType, SmooksResourceListType resourceList)

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-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/uitls/SmooksUIUtils.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -134,15 +134,20 @@
 import org.jboss.tools.smooks.contentassist.TypeContentProposalProvider;
 import org.jboss.tools.smooks.contentassist.TypeProposalLabelProvider;
 import org.jboss.tools.smooks.core.SmooksCoreActivator;
+import org.jboss.tools.smooks.editor.ISmooksModelProvider;
 import org.jboss.tools.smooks.gef.tree.editparts.TreeNodeEditPart;
 import org.jboss.tools.smooks.gef.tree.model.TreeNodeModel;
 import org.jboss.tools.smooks.model.calc.CalcPackage;
 import org.jboss.tools.smooks.model.calc.Counter;
 import org.jboss.tools.smooks.model.csv.CsvPackage;
+import org.jboss.tools.smooks.model.csv.CsvReader;
+import org.jboss.tools.smooks.model.csv12.CSV12Reader;
 import org.jboss.tools.smooks.model.csv12.Csv12Package;
 import org.jboss.tools.smooks.model.datasource.DatasourcePackage;
 import org.jboss.tools.smooks.model.datasource.Direct;
+import org.jboss.tools.smooks.model.edi.EDIReader;
 import org.jboss.tools.smooks.model.edi.EdiPackage;
+import org.jboss.tools.smooks.model.edi12.EDI12Reader;
 import org.jboss.tools.smooks.model.edi12.Edi12Package;
 import org.jboss.tools.smooks.model.esbrouting.EsbroutingPackage;
 import org.jboss.tools.smooks.model.esbrouting.RouteBean;
@@ -171,12 +176,15 @@
 import org.jboss.tools.smooks.model.jmsrouting12.JMS12Router;
 import org.jboss.tools.smooks.model.jmsrouting12.Jmsrouting12Package;
 import org.jboss.tools.smooks.model.json.JsonPackage;
+import org.jboss.tools.smooks.model.json.JsonReader;
 import org.jboss.tools.smooks.model.json12.Json12Package;
+import org.jboss.tools.smooks.model.json12.Json12Reader;
 import org.jboss.tools.smooks.model.persistence12.Persistence12Package;
 import org.jboss.tools.smooks.model.rules10.Rules10Package;
 import org.jboss.tools.smooks.model.smooks.AbstractReader;
 import org.jboss.tools.smooks.model.smooks.AbstractResourceConfig;
 import org.jboss.tools.smooks.model.smooks.ConditionType;
+import org.jboss.tools.smooks.model.smooks.ReaderType;
 import org.jboss.tools.smooks.model.smooks.ResourceConfigType;
 import org.jboss.tools.smooks.model.smooks.SmooksPackage;
 import org.jboss.tools.smooks.model.smooks.SmooksResourceListType;
@@ -1103,10 +1111,15 @@
 	}
 
 	public static AttributeFieldEditPart createJavaTypeSearchFieldEditor(Composite parent, FormToolkit toolkit,
-			final IItemPropertyDescriptor propertyDescriptor, final EObject model) {
+			final IItemPropertyDescriptor propertyDescriptor, final EObject model , ISmooksModelProvider modelProvider) {
 		if (model instanceof EObject) {
 			AttributeFieldEditPart editpart = new AttributeFieldEditPart();
-			final Resource resource = ((EObject) model).eResource();
+			Resource r = ((EObject) model).eResource();
+			if(r == null){
+				r = modelProvider.getSmooksModel().eResource();
+			}
+			final Resource resource = r;
+			if(resource == null) return null;
 			URI uri = resource.getURI();
 			IResource workspaceResource = null;
 			if (uri.isPlatformResource()) {
@@ -2334,6 +2347,7 @@
 	}
 
 	public static IXMLStructuredObject getChildNodeWithName(String name, IXMLStructuredObject parent) {
+		if(parent == null) return null;
 		String tempName = name;
 		boolean isAttribute = false;
 		if (isAttributeName(tempName)) {
@@ -2825,4 +2839,30 @@
 		}
 		return SmooksConstants.VERSION_1_2;
 	}
+
+	public static String judgeInputType(EObject smooksModel) {
+		String inputType = null;
+		if (smooksModel instanceof DocumentRoot) {
+			return null;
+		}
+
+		if (smooksModel instanceof org.jboss.tools.smooks.model.smooks.DocumentRoot) {
+			SmooksResourceListType rlist = ((org.jboss.tools.smooks.model.smooks.DocumentRoot)smooksModel).getSmooksResourceList();
+			if(rlist.getAbstractReader().isEmpty()) return null;
+			AbstractReader reader = rlist.getAbstractReader().get(0);
+			if (CsvReader.class.isInstance(reader) || CSV12Reader.class.isInstance(reader)) {
+				inputType = SmooksModelUtils.INPUT_TYPE_CSV;
+			}
+			if (EDIReader.class.isInstance(reader) || EDI12Reader.class.isInstance(reader)) {
+				inputType = SmooksModelUtils.INPUT_TYPE_EDI_1_1;
+			}
+			if (JsonReader.class.isInstance(reader) || Json12Reader.class.isInstance(reader)) {
+				inputType = SmooksModelUtils.INPUT_TYPE_JSON_1_1;
+			}
+			if (ReaderType.class.isInstance(reader)) {
+				inputType = SmooksModelUtils.INPUT_TYPE_CUSTOME;
+			}
+		}
+		return inputType;
+	}
 }

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/wizard/ViewerInitorStore.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/wizard/ViewerInitorStore.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/wizard/ViewerInitorStore.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -144,7 +144,7 @@
 
 		// for json 1.1
 		BaseViewerInitor jsonViewerInitor = new BaseViewerInitor();
-		String name = "Json 1.1";
+		String name = "JSON";
 		String description = "Select Json data file as the input data.";
 		String iconPath = null;
 		String typeID = SmooksModelUtils.INPUT_TYPE_JSON_1_1;
@@ -174,7 +174,8 @@
 		json12ViewerInitor.setTreeContentProvider(new XMLStructuredDataContentProvider());
 		json12ViewerInitor.setStructuredDataLoadWizard(new Json12DataWizard());
 		json12ViewerInitor.setWizardIconPath(GraphicsConstants.IMAGE_JAVA_FILE);
-		map.put(typeID, json12ViewerInitor);
+		// don't add this
+//		map.put(typeID, json12ViewerInitor);
 
 
 		// for java
@@ -232,10 +233,10 @@
 
 		// for Csv 1.1
 		BaseViewerInitor csvViewerInitor = new BaseViewerInitor();
-		name = "CSV 1.1";
-		description = "Select CSV data file as the input data (version 1.1).";
+		name = "CSV";
+		description = "Select CSV data file as the input data.";
 		iconPath = null;
-		typeID = SmooksModelUtils.INPUT_TYPE_CSV_1_1;
+		typeID = SmooksModelUtils.INPUT_TYPE_CSV;
 
 		csvViewerInitor.setName(name);
 		csvViewerInitor.setDescription(description);
@@ -260,11 +261,11 @@
 		csv12ViewerInitor.setLabelProvider(new XMLStructuredDataLabelProvider());
 		csv12ViewerInitor.setTreeContentProvider(new XMLStructuredDataContentProvider());
 		csv12ViewerInitor.setStructuredDataLoadWizard(new CSV12InputDataWizard());
-		map.put(typeID, csv12ViewerInitor);
+//		map.put(typeID, csv12ViewerInitor);
 
 		// for EDI 1.1
 		BaseViewerInitor ediViewerInitor = new BaseViewerInitor();
-		name = "EDI 1.1";
+		name = "EDI";
 		description = "Select EDI data file as the input data.";
 		iconPath = null;
 		typeID = SmooksModelUtils.INPUT_TYPE_EDI_1_1;
@@ -294,7 +295,7 @@
 		edi12ViewerInitor.setTreeContentProvider(new XMLStructuredDataContentProvider());
 		edi12ViewerInitor.setStructuredDataLoadWizard(new EDIReader12DataWizard());
 		// jsonViewerInitor.setWizardIconPath(GraphicsConstants.IMAGE_JAVA_FILE);
-		map.put(typeID, edi12ViewerInitor);
+//		map.put(typeID, edi12ViewerInitor);
 
 		
 		return map;

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/navigator/DefaultSetting.htm
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/navigator/DefaultSetting.htm	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/navigator/DefaultSetting.htm	2009-09-14 12:36:19 UTC (rev 17543)
@@ -1,18 +1,7 @@
 <form>
-<p>Overview : Define the <a
-	href="overview_default_setting">default setting</a> , edit the <a
-	href="overview_global_param">global paramters</a> and define the <a
-	href="overview_condition">condition</a>, <a
-	href="overview_profile">profile</a>.</p>
-<p><a href="reader_page">Reader</a> : Edit the 'Reader' of Smooks in this 
-page. Reader page can also add/remove <a href="reader_input_data">input 
-message</a>. <br/>
-Smooks tools generate the 'selector' via the input data and smooks reader , open the <a href="selector_dialog">SelectorDialog</a>,
-User can<br/> select the element node to generate 'selector' for it.</p>
-<p>
-<a href="message_filter_page">Message Filter</a> : Add/Remove Java bean binding , Routers and so on.
-</p>
+<p><a href="reader_page">Input</a> : Define a new input type
+and edit the input type configurations.</p>
+<p>Input Messages: Specify the sample messages to use for Smooks Input</p>
 <!-- <p>
 <a href="source_page">Source</a> : User can also edit the configuration file directly via source page.
-</p> -->
-</form>
\ No newline at end of file
+</p> --></form>
\ No newline at end of file

Added: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/navigator/MessageFilterNavigator.htm
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/navigator/MessageFilterNavigator.htm	                        (rev 0)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/navigator/MessageFilterNavigator.htm	2009-09-14 12:36:19 UTC (rev 17543)
@@ -0,0 +1,5 @@
+<form>
+<p><a href="message_filter_page">Message Filter</a> : Specify beans for binding message data, routing messages, and so on.</p>
+<!-- <p>
+<a href="source_page">Source</a> : User can also edit the configuration file directly via source page.
+</p> --></form>
\ No newline at end of file


Property changes on: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/navigator/MessageFilterNavigator.htm
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/validate/SelectorValidator.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/validate/SelectorValidator.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/validate/SelectorValidator.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -150,15 +150,19 @@
 								.getActiveWorkbenchWindow();
 						IWorkbenchPage activePage = window.getActivePage();
 						if (activePage != null) {
-							IEditorPart part = activePage.findEditor(input);
-							if (part != null && part instanceof AbstractSmooksFormEditor) {
-								extType = ((AbstractSmooksFormEditor) part).getSmooksGraphicsExt();
-								if (extType != null) {
-									List<Object> l = SelectorCreationDialog.generateInputData(extType, finalList);
-									if (l != null) {
-										list.addAll(l);
+							try {
+								IEditorPart part = activePage.findEditor(input);
+								if (part != null && part instanceof AbstractSmooksFormEditor) {
+									extType = ((AbstractSmooksFormEditor) part).getSmooksGraphicsExt();
+									if (extType != null) {
+										List<Object> l = SelectorCreationDialog.generateInputData(extType, finalList);
+										if (l != null) {
+											list.addAll(l);
+										}
 									}
 								}
+							} catch (Throwable t) {
+								t.printStackTrace();
 							}
 						}
 					}

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/wizards/NewSmooksElementWizardPage.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/wizards/NewSmooksElementWizardPage.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/wizards/NewSmooksElementWizardPage.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -41,13 +41,10 @@
 import org.jboss.tools.smooks.configuration.editors.actions.Database11ActionGrouper;
 import org.jboss.tools.smooks.configuration.editors.actions.Datasources11ActionGrouper;
 import org.jboss.tools.smooks.configuration.editors.actions.FragmentRouting11ActionGrouper;
-import org.jboss.tools.smooks.configuration.editors.actions.FragmentRouting12ActionGrouper;
 import org.jboss.tools.smooks.configuration.editors.actions.ISmooksActionGrouper;
 import org.jboss.tools.smooks.configuration.editors.actions.JavaBean11ActionGrouper;
-import org.jboss.tools.smooks.configuration.editors.actions.JavaBean12ActionGrouper;
 import org.jboss.tools.smooks.configuration.editors.actions.PersistenceActionGrouper;
 import org.jboss.tools.smooks.configuration.editors.actions.Reader11ActionGrouper;
-import org.jboss.tools.smooks.configuration.editors.actions.Reader12ActionGrouper;
 import org.jboss.tools.smooks.configuration.editors.actions.Scripting11ActionGrouper;
 import org.jboss.tools.smooks.configuration.editors.actions.Templating11ActionGrouper;
 import org.jboss.tools.smooks.configuration.editors.actions.Validation10ActionGrouper;

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/wizards/SmooksConfigurationFileNewWizard.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/wizards/SmooksConfigurationFileNewWizard.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/wizards/SmooksConfigurationFileNewWizard.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -59,7 +59,7 @@
 		containerSelectionPage = new SmooksFileContainerSelectionPage("Smooks Configuration File",
 				(IStructuredSelection) selection);
 		addPage(containerSelectionPage);
-		
+
 		versionSelectionPage = new SmooksVersionSelectionPage("Smooks Version Selection");
 		addPage(versionSelectionPage);
 	}
@@ -126,7 +126,7 @@
 			}
 			stream.close();
 			// create ext file:
-			createExtentionFile(extFile,version, monitor);
+			createExtentionFile(extFile, version, null, monitor);
 		} catch (IOException e) {
 			SmooksConfigurationActivator.getDefault().log(e);
 		}
@@ -145,12 +145,13 @@
 		});
 		monitor.worked(1);
 	}
-	
-	public static void createExtentionFile(IFile file , String version , IProgressMonitor monitor) throws CoreException, IOException{
-		if(monitor == null){
+
+	public static void createExtentionFile(IFile file, String version, String inputType, IProgressMonitor monitor)
+			throws CoreException, IOException {
+		if (monitor == null) {
 			monitor = new NullProgressMonitor();
 		}
-		InputStream stream1 = createExtContentStream(version);
+		InputStream stream1 = createExtContentStream(version, inputType);
 		if (file.exists()) {
 			file.setContents(stream1, true, true, monitor);
 		} else {
@@ -159,9 +160,21 @@
 		stream1.close();
 	}
 
-	public static InputStream createExtContentStream(String version) {
-		String contents = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-				+ "    <smooks-graphics-ext platformVersion = \""+version+"\" xmlns=\"http://www.jboss.org/jbosstools/smooks/smooks-graphics-ext.xsd\"/>";
+	public static InputStream createExtContentStream(String version, String inputType) {
+		String typeContents = null;
+		if (inputType != null) {
+			typeContents = "inputType = \"" + inputType + "\"";
+		}
+		String contents= "";
+		if (typeContents == null) {
+			 contents = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+					+ "    <smooks-graphics-ext platformVersion = \"" + version
+					+ "\" xmlns=\"http://www.jboss.org/jbosstools/smooks/smooks-graphics-ext.xsd\"/>";
+		}else{
+			 contents = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+				+ "    <smooks-graphics-ext platformVersion = \"" + version
+				+ "\" "+typeContents+" xmlns=\"http://www.jboss.org/jbosstools/smooks/smooks-graphics-ext.xsd\"/>";
+		}
 		return new ByteArrayInputStream(contents.getBytes());
 	}
 
@@ -192,8 +205,7 @@
 	}
 
 	private void throwCoreException(String message) throws CoreException {
-		IStatus status = new Status(IStatus.ERROR, SmooksConfigurationActivator.PLUGIN_ID, IStatus.OK,
-				message, null);
+		IStatus status = new Status(IStatus.ERROR, SmooksConfigurationActivator.PLUGIN_ID, IStatus.OK, message, null);
 		throw new CoreException(status);
 	}
 

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-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/edimap/editor/EDIMapFormPage.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -1036,7 +1036,8 @@
 	public List<TreeNodeModel> createLinkModel() {
 		if (graphicalRootModel != null && segments != null) {
 			List<Segment> segmentList = segments.getSegment();
-			return linkNode(segmentList);
+			List<TreeNodeModel> links =  linkNode(segmentList);
+			return links;
 		}
 		return Collections.emptyList();
 	}
@@ -1124,7 +1125,7 @@
 			if (data == model) {
 				return treeNodeModel;
 			}
-			AbstractSmooksGraphicalModel m = findEDIGraphicalModel(model, treeNodeModel.getChildrenWithoutDynamic());
+			AbstractSmooksGraphicalModel m = findEDIGraphicalModel(model, treeNodeModel.getChildren());
 			if (m != null) {
 				return m;
 			}

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/editor/AbstractSmooksFormEditor.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/editor/AbstractSmooksFormEditor.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/editor/AbstractSmooksFormEditor.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -89,10 +89,10 @@
 import org.jboss.tools.smooks10.model.smooks.util.SmooksResourceFactoryImpl;
 
 public class AbstractSmooksFormEditor extends FormEditor implements IEditingDomainProvider,
-		ISmooksModelValidateListener , ISmooksModelProvider , ISmooksGraphChangeListener{
-	
+		ISmooksModelValidateListener, ISmooksModelProvider, ISmooksGraphChangeListener {
+
 	protected List<ISourceSynchronizeListener> sourceSynchronizeListener = new ArrayList<ISourceSynchronizeListener>();
-	
+
 	public static final String EDITOR_ID = "org.jboss.tools.smooks.edimap.editors.MultiPageEditor";
 
 	protected StructuredTextEditor textEditor = null;
@@ -123,12 +123,12 @@
 		super();
 		initEditingDomain();
 	}
-	
-	public void addSourceSynchronizeListener(ISourceSynchronizeListener listener){
+
+	public void addSourceSynchronizeListener(ISourceSynchronizeListener listener) {
 		this.sourceSynchronizeListener.add(listener);
 	}
-	
-	public void removeSourceSynchronizeListener(ISourceSynchronizeListener listener){
+
+	public void removeSourceSynchronizeListener(ISourceSynchronizeListener listener) {
 		this.sourceSynchronizeListener.remove(listener);
 	}
 
@@ -222,7 +222,7 @@
 
 	protected void initEditingDomain() {
 		adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
-		
+
 		// add smooks 1.1.2 EMF item provider model
 		adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory());
 		adapterFactory.addAdapterFactory(new XslItemProviderAdapterFactory());
@@ -243,7 +243,7 @@
 		adapterFactory.addAdapterFactory(new FileRoutingItemProviderAdapterFactory());
 		adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory());
 		adapterFactory.addAdapterFactory(new EsbroutingItemProviderAdapterFactory());
-		
+
 		// add smooks 1.2 EMF itemprovider
 		adapterFactory.addAdapterFactory(new Json12ItemProviderAdapterFactory());
 		adapterFactory.addAdapterFactory(new Edi12ItemProviderAdapterFactory());
@@ -253,7 +253,7 @@
 		adapterFactory.addAdapterFactory(new Validation10ItemProviderAdapterFactory());
 		adapterFactory.addAdapterFactory(new Jmsrouting12ItemProviderAdapterFactory());
 		adapterFactory.addAdapterFactory(new Persistence12ItemProviderAdapterFactory());
-		
+
 		BasicCommandStack commandStack = new BasicCommandStack();
 		handleCommandStack(commandStack);
 		editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>());
@@ -278,14 +278,14 @@
 	 */
 	@Override
 	protected void addPages() {
-//		configurationPage = createSmooksConfigurationFormPage();
-//		addValidateListener(configurationPage);
-//		try {
-//			int index = this.addPage(configurationPage);
-//			setPageText(index, "Design");
-//		} catch (PartInitException e) {
-//			e.printStackTrace();
-//		}
+		// configurationPage = createSmooksConfigurationFormPage();
+		// addValidateListener(configurationPage);
+		// try {
+		// int index = this.addPage(configurationPage);
+		// setPageText(index, "Design");
+		// } catch (PartInitException e) {
+		// e.printStackTrace();
+		// }
 
 		textEditor = createTextEditor();
 		try {
@@ -304,7 +304,8 @@
 	}
 
 	/**
-	 * @param smooksGraphicsExt the smooksGraphicsExt to set
+	 * @param smooksGraphicsExt
+	 *            the smooksGraphicsExt to set
 	 */
 	public void setSmooksGraphicsExt(SmooksGraphicsExtType smooksGraphicsExt) {
 		this.smooksGraphicsExt = smooksGraphicsExt;
@@ -361,8 +362,8 @@
 		};
 		return xmlEditor;
 	}
-	
-	protected void createNewModelViaTextPage(){
+
+	protected void createNewModelViaTextPage() {
 		IDocument document = textEditor.getDocumentProvider().getDocument(textEditor.getEditorInput());
 		String conents = document.get();
 		Resource resource = editingDomain.getResourceSet().getResources().get(0);
@@ -372,13 +373,13 @@
 			this.smooksModel = resource.getContents().get(0);
 		} catch (IOException e) {
 			smooksModel = null;
-			SmooksConfigurationActivator.getDefault().log(e);
+			// SmooksConfigurationActivator.getDefault().log(e);
 		}
 		for (Iterator<?> iterator = this.sourceSynchronizeListener.iterator(); iterator.hasNext();) {
 			ISourceSynchronizeListener l = (ISourceSynchronizeListener) iterator.next();
-			try{
-			l.sourceChange(smooksModel);
-			}catch(Exception e){
+			try {
+				l.sourceChange(smooksModel);
+			} catch (Exception e) {
 				e.printStackTrace();
 			}
 		}
@@ -386,12 +387,18 @@
 
 	protected void handleDocumentChange() {
 		createNewModelViaTextPage();
-		validator.startValidate(smooksModel.eResource().getContents(), editingDomain);
+		try {
+			validator.startValidate(smooksModel.eResource().getContents(), editingDomain);
+		} catch (Throwable e) {
+
+		}
 	}
 
-//	protected SmooksConfigurationFormPage createSmooksConfigurationFormPage() {
-//		return new SmooksConfigurationFormPage(this, "DesignPage", "Design Page");
-//	}
+	// protected SmooksConfigurationFormPage createSmooksConfigurationFormPage()
+	// {
+	// return new SmooksConfigurationFormPage(this, "DesignPage",
+	// "Design Page");
+	// }
 
 	protected void initSaveOptions(Map<?, ?> options) {
 
@@ -410,7 +417,7 @@
 			if (activeEditor != null && activeEditor == textEditor) {
 				textEditor.doSave(monitor);
 				((BasicCommandStack) editingDomain.getCommandStack()).saveIsDone();
-				
+
 			} else {
 				Map<?, ?> options = Collections.emptyMap();
 				initSaveOptions(options);
@@ -431,7 +438,7 @@
 			}
 			getSmooksGraphicsExt().eResource().save(Collections.emptyMap());
 			graphChanged = false;
-			
+
 			firePropertyChange(PROP_DIRTY);
 			if (this.smooksModel != null) {
 				validator.startValidate(smooksModel.eResource().getContents(), editingDomain);
@@ -471,7 +478,8 @@
 			if (extFile != null && !extFile.exists()) {
 				try {
 					String version = SmooksUIUtils.judgeSmooksPlatformVersion(smooksModel);
-					SmooksConfigurationFileNewWizard.createExtentionFile(extFile, version ,  null);
+					String inputType = SmooksUIUtils.judgeInputType(smooksModel);
+					SmooksConfigurationFileNewWizard.createExtentionFile(extFile, version, inputType, null);
 				} catch (Throwable t) {
 					// ignore
 				}
@@ -567,19 +575,20 @@
 	}
 
 	public void graphChanged(SmooksGraphicsExtType extType) {
-		
+
 	}
 
 	public void inputTypeChanged(SmooksGraphicsExtType extType) {
-		graphChanged  = true;
+		graphChanged = true;
 		firePropertyChange(PROP_DIRTY);
 	}
 
 	public void graphPropertyChange(EStructuralFeature featre, Object value) {
-		if(featre.equals(GraphPackage.Literals.SMOOKS_GRAPHICS_EXT_TYPE__AUTHOR) || 
-				featre.equals(GraphPackage.Literals.SMOOKS_GRAPHICS_EXT_TYPE__PLATFORM_VERSION) ||
-				featre.equals(GraphPackage.Literals.SMOOKS_GRAPHICS_EXT_TYPE__NAME)){
-			graphChanged  = true;
+		if (featre.equals(GraphPackage.Literals.SMOOKS_GRAPHICS_EXT_TYPE__AUTHOR)
+				|| featre.equals(GraphPackage.Literals.SMOOKS_GRAPHICS_EXT_TYPE__PLATFORM_VERSION)
+				|| featre.equals(GraphPackage.Literals.SMOOKS_GRAPHICS_EXT_TYPE__NAME)
+				|| featre.equals(GraphPackage.Literals.SMOOKS_GRAPHICS_EXT_TYPE__INPUT_TYPE)) {
+			graphChanged = true;
 			firePropertyChange(PROP_DIRTY);
 		}
 	}

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/tree/figures/TreeNodeFigure.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/tree/figures/TreeNodeFigure.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/tree/figures/TreeNodeFigure.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -54,9 +54,9 @@
 	private boolean expand = false;
 
 	private TreeNodeModel model;
-	
+
 	private boolean focus;
-	
+
 	private boolean selected;
 
 	public TreeNodeFigure(TreeNodeModel model) {
@@ -79,7 +79,7 @@
 	public TreeNodeModel getModel() {
 		return model;
 	}
-	
+
 	public boolean isExpand() {
 		return expand;
 	}
@@ -87,11 +87,10 @@
 	public void setModel(TreeNodeModel model) {
 		this.model = model;
 	}
-	
+
 	public Label getLabel() {
 		return label;
 	}
-	
 
 	/**
 	 * @return the focus
@@ -101,7 +100,8 @@
 	}
 
 	/**
-	 * @param focus the focus to set
+	 * @param focus
+	 *            the focus to set
 	 */
 	public void setFocus(boolean focus) {
 		this.focus = focus;
@@ -116,7 +116,8 @@
 	}
 
 	/**
-	 * @param selected the selected to set
+	 * @param selected
+	 *            the selected to set
 	 */
 	public void setSelected(boolean selected) {
 		this.selected = selected;
@@ -128,21 +129,22 @@
 		ToolbarLayout layout = new ToolbarLayout();
 		layout.setVertical(false);
 		panelFigure.setLayoutManager(layout);
-		Figure spaceFigure = new Figure(){
+		Figure spaceFigure = new Figure() {
 			@Override
 			public Dimension getPreferredSize(int hint, int hint2) {
 				return new Dimension(SPACE_INT, 0);
 			}
 		};
 		panelFigure.add(spaceFigure);
-		contentFigure = new Figure(){
+		contentFigure = new Figure() {
 
 			@Override
 			protected void paintFigure(Graphics graphics) {
 				super.paintFigure(graphics);
-//				graphics.drawRectangle(getBounds().x + 1 , getBounds().y + 1 , getBounds().width - 2 ,getBounds().height - 2 );
+				// graphics.drawRectangle(getBounds().x + 1 , getBounds().y + 1
+				// , getBounds().width - 2 ,getBounds().height - 2 );
 			}
-			
+
 		};
 		panelFigure.add(contentFigure);
 		contentFigure.setLayoutManager(new ToolbarLayout());
@@ -156,21 +158,25 @@
 	@Override
 	public Dimension getPreferredSize(int hint, int hint2) {
 		if (expand) {
-//			contentFigure.setSize(-1, -1);
-//			LayoutManager manager = contentFigure.getLayoutManager();
-//			if(manager != null){
-//				manager.invalidate();
-//			}
+			// contentFigure.setSize(-1, -1);
+			// LayoutManager manager = contentFigure.getLayoutManager();
+			// if(manager != null){
+			// manager.invalidate();
+			// }
 			return super.getPreferredSize(hint, hint2);
 		} else {
 			LayoutManager layout = labelContainer.getLayoutManager();
 			if (layout != null)
 				layout.invalidate();
 			labelContainer.invalidateTree();
-			Dimension size = labelContainer.getPreferredSize(hint, hint2);
-			Insets insets = getBorder().getInsets(null);
-			return new Dimension(size.width + insets.left + insets.right,
-					size.height + insets.bottom + insets.top);
+			try {
+				Dimension size = labelContainer.getPreferredSize(hint, hint2);
+				Insets insets = getBorder().getInsets(null);
+				return new Dimension(size.width + insets.left + insets.right, size.height + insets.bottom + insets.top);
+			} catch (Throwable t) {
+				return new Dimension(100,100);
+			}
+//			return super.getPreferredSize(hint, hint2);
 		}
 	}
 
@@ -196,35 +202,34 @@
 			}
 
 		});
-		((Clickable) clickNode)
-				.addMouseMotionListener(new MouseMotionListener() {
+		((Clickable) clickNode).addMouseMotionListener(new MouseMotionListener() {
 
-					public void mouseDragged(MouseEvent me) {
-					}
+			public void mouseDragged(MouseEvent me) {
+			}
 
-					public void mouseEntered(MouseEvent me) {
-						boolean hasChildren = model.hasChildren();
-						if (!hasChildren)
-							return;
-						mouseEnter = true;
-						clickNode.repaint();
-					}
+			public void mouseEntered(MouseEvent me) {
+				boolean hasChildren = model.hasChildren();
+				if (!hasChildren)
+					return;
+				mouseEnter = true;
+				clickNode.repaint();
+			}
 
-					public void mouseExited(MouseEvent me) {
-						boolean hasChildren = model.hasChildren();
-						if (!hasChildren)
-							return;
-						mouseEnter = false;
-						clickNode.repaint();
-					}
+			public void mouseExited(MouseEvent me) {
+				boolean hasChildren = model.hasChildren();
+				if (!hasChildren)
+					return;
+				mouseEnter = false;
+				clickNode.repaint();
+			}
 
-					public void mouseHover(MouseEvent me) {
-					}
+			public void mouseHover(MouseEvent me) {
+			}
 
-					public void mouseMoved(MouseEvent me) {
-					}
+			public void mouseMoved(MouseEvent me) {
+			}
 
-				});
+		});
 		clickNode.setSize(new Dimension(CLICKNODE_WIDTH, CLICKNODE_HEIGHT));
 
 		Figure imageFigure = new Figure() {
@@ -235,15 +240,14 @@
 					Image i = model.getImage();
 					if (i != null)
 						;
-					graphics.drawImage(i, getBounds().getTopLeft().x,
-							getBounds().getTopLeft().y + 2);
+					graphics.drawImage(i, getBounds().getTopLeft().x, getBounds().getTopLeft().y + 2);
 				}
 			}
 		};
 		imageFigure.setSize(new Dimension(18, 18));
 
 		label = new Label();
-		if(isFocus()){
+		if (isFocus()) {
 		}
 		if (model != null) {
 			label.setText(model.getText());
@@ -270,17 +274,17 @@
 	public void setLabelText(String text) {
 		label.setText(text);
 	}
-	
-	public void paint(Graphics graphics){
-		if(isFocus()){
+
+	public void paint(Graphics graphics) {
+		if (isFocus()) {
 			label.setForegroundColor(ColorConstants.blue);
-		}else{
+		} else {
 			label.setForegroundColor(ColorConstants.black);
 		}
-		
-		if(isSelected()){
+
+		if (isSelected()) {
 			label.setForegroundColor(ColorConstants.lightBlue);
-		}else{
+		} else {
 			label.setForegroundColor(ColorConstants.black);
 		}
 		super.paint(graphics);
@@ -294,20 +298,16 @@
 		boolean hasChildren = model.hasChildren();
 		if (hasChildren) {
 			if (expand) {
-				Point point1 = new Point(center.x - width / 2, center.y - width
-						/ 4);
+				Point point1 = new Point(center.x - width / 2, center.y - width / 4);
 				Point point2 = new Point(point1.x + width, point1.y);
-				Point point3 = new Point(point1.x + width / 2, point1.y + width
-						/ 2);
+				Point point3 = new Point(point1.x + width / 2, point1.y + width / 2);
 				pointList.addPoint(point1);
 				pointList.addPoint(point2);
 				pointList.addPoint(point3);
 			} else {
-				Point point1 = new Point(center.x - width / 4, center.y - width
-						/ 2);
+				Point point1 = new Point(center.x - width / 4, center.y - width / 2);
 				Point point2 = new Point(point1.x, point1.y + width);
-				Point point3 = new Point(point1.x + width / 2, point1.y + width
-						/ 2);
+				Point point3 = new Point(point1.x + width / 2, point1.y + width / 2);
 				pointList.addPoint(point1);
 				pointList.addPoint(point2);
 				pointList.addPoint(point3);
@@ -321,13 +321,13 @@
 			graphics.popState();
 		}
 	}
-	
-	public void expandNode(){
+
+	public void expandNode() {
 		expand = false;
 		changeTreeExpansionState();
 	}
-	
-	public void collapsedNode(){
+
+	public void collapsedNode() {
 		expand = true;
 		changeTreeExpansionState();
 	}
@@ -344,12 +344,9 @@
 			if (parent != null) {
 				Rectangle oldRectangle = parent.getClientArea();
 				expand = !expand;
-				for (Iterator<ITreeFigureListener> iterator = this.treeListener
-						.iterator(); iterator.hasNext();) {
-					ITreeFigureListener listener = (ITreeFigureListener) iterator
-							.next();
-					TreeFigureExpansionEvent event = new TreeFigureExpansionEvent(
-							this);
+				for (Iterator<ITreeFigureListener> iterator = this.treeListener.iterator(); iterator.hasNext();) {
+					ITreeFigureListener listener = (ITreeFigureListener) iterator.next();
+					TreeFigureExpansionEvent event = new TreeFigureExpansionEvent(this);
 					if (!expand) {
 						listener.treeCollapsed(event);
 					} else {
@@ -366,15 +363,15 @@
 				Rectangle newRectangle = parent.getClientArea();
 				int w = Math.max(oldRectangle.width, newRectangle.width);
 				int h = Math.max(oldRectangle.height, newRectangle.height);
-//				IFigure currentParent = contentFigure.getParent();
-//				currentParent.invalidateTree();
-//				LayoutManager layout = currentParent.getLayoutManager();
-//				if(layout != null){
-//					layout.layout(currentParent);
-//				}
+				// IFigure currentParent = contentFigure.getParent();
+				// currentParent.invalidateTree();
+				// LayoutManager layout = currentParent.getLayoutManager();
+				// if(layout != null){
+				// layout.layout(currentParent);
+				// }
 				IFigure panel = parent.getParent();
 				if (panel != null) {
-//					panel.repaint();
+					// panel.repaint();
 					panel.repaint(oldRectangle.x, oldRectangle.y, w, h);
 				}
 			}

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/SmooksGraphicalEditorPaletteRootCreator.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/SmooksGraphicalEditorPaletteRootCreator.java	2009-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/SmooksGraphicalEditorPaletteRootCreator.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -10,36 +10,124 @@
  ******************************************************************************/
 package org.jboss.tools.smooks.graphical.editors;
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.edit.command.CommandParameter;
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
 import org.eclipse.gef.palette.ConnectionCreationToolEntry;
+import org.eclipse.gef.palette.CreationToolEntry;
 import org.eclipse.gef.palette.MarqueeToolEntry;
 import org.eclipse.gef.palette.PaletteDrawer;
 import org.eclipse.gef.palette.PaletteRoot;
 import org.eclipse.gef.palette.SelectionToolEntry;
 import org.eclipse.gef.requests.CreationFactory;
+import org.jboss.tools.smooks.configuration.editors.actions.Calc11ActionGrouper;
+import org.jboss.tools.smooks.configuration.editors.actions.Database11ActionGrouper;
+import org.jboss.tools.smooks.configuration.editors.actions.Datasources11ActionGrouper;
+import org.jboss.tools.smooks.configuration.editors.actions.FragmentRouting11ActionGrouper;
+import org.jboss.tools.smooks.configuration.editors.actions.ISmooksActionGrouper;
+import org.jboss.tools.smooks.configuration.editors.actions.JavaBean11ActionGrouper;
+import org.jboss.tools.smooks.configuration.editors.actions.PersistenceActionGrouper;
+import org.jboss.tools.smooks.configuration.editors.actions.Reader11ActionGrouper;
+import org.jboss.tools.smooks.configuration.editors.actions.Scripting11ActionGrouper;
+import org.jboss.tools.smooks.configuration.editors.actions.Templating11ActionGrouper;
+import org.jboss.tools.smooks.configuration.editors.actions.Validation10ActionGrouper;
 import org.jboss.tools.smooks.gef.tree.model.TreeNodeConnection;
+import org.jboss.tools.smooks.model.smooks.SmooksResourceListType;
 
 /**
  * @author Dart dpeng at redhat.com
- *
+ * 
  */
 public class SmooksGraphicalEditorPaletteRootCreator {
-	public PaletteRoot createPaletteRoot(){
-		PaletteRoot root=  new PaletteRoot();
-		PaletteDrawer drawer = new PaletteDrawer("Tools");
+
+	protected AdapterFactoryEditingDomain editingDomain;
+
+	protected SmooksResourceListType resourceList;
+
+	public SmooksGraphicalEditorPaletteRootCreator(AdapterFactoryEditingDomain editingDomain,
+			SmooksResourceListType resourceList) {
+		this.editingDomain = editingDomain;
+		this.resourceList = resourceList;
+	}
+
+	public PaletteRoot createPaletteRoot() {
+		PaletteRoot root = new PaletteRoot();
+		PaletteDrawer drawer = new PaletteDrawer("Noraml Tools");
 		drawer.add(new SelectionToolEntry());
 		drawer.add(new MarqueeToolEntry());
 		CreationFactory factory = new CreationFactory() {
-			
+
 			public Object getObjectType() {
 				return TreeNodeConnection.class;
 			}
-			
+
 			public Object getNewObject() {
 				return null;
 			}
 		};
 		drawer.add(new ConnectionCreationToolEntry("Link", "Link", factory, null, null));
 		root.add(drawer);
+		
+		createPaletteDrawer(root);
+		
 		return root;
 	}
+
+	private void createPaletteDrawer(PaletteRoot root) {
+		if(resourceList == null) return;
+		
+		IEditingDomainItemProvider provider = (IEditingDomainItemProvider) editingDomain.getAdapterFactory().adapt(
+				this.resourceList, IEditingDomainItemProvider.class);
+		if (provider != null) {
+			Collection<?> newChildrenDescripter = provider.getNewChildDescriptors(this.resourceList, editingDomain,
+					null);
+			List<ISmooksActionGrouper> grouperList = getSmooksActionGrouper();
+			for (Iterator<?> iterator = grouperList.iterator(); iterator.hasNext();) {
+				ISmooksActionGrouper iSmooksActionGrouper = (ISmooksActionGrouper) iterator.next();
+				PaletteDrawer drawer = new PaletteDrawer(iSmooksActionGrouper.getGroupName());
+				fillDrawer(drawer, newChildrenDescripter, iSmooksActionGrouper);
+				root.add(drawer);
+			}
+		}
+	}
+
+	private void fillDrawer(PaletteDrawer drawer, Collection<?> allchildren, ISmooksActionGrouper grouper) {
+		for (Iterator<?> iterator = allchildren.iterator(); iterator.hasNext();) {
+			Object object = (Object) iterator.next();
+
+			if (grouper.belongsToGroup(object)) {
+				if (object instanceof CommandParameter) {
+					Object v = ((CommandParameter) object).getValue();
+					v = AdapterFactoryEditingDomain.unwrap(v);
+					EClass clazz = ((EObject) v).eClass();
+					CreationToolEntry toolEntry = new CreationToolEntry(clazz.getName(), "", null, null, null);
+					drawer.add(toolEntry);
+				}
+			}
+		}
+	}
+
+	private List<ISmooksActionGrouper> getSmooksActionGrouper() {
+		List<ISmooksActionGrouper> grouperList = new ArrayList<ISmooksActionGrouper>();
+
+		grouperList.add(new JavaBean11ActionGrouper());
+		grouperList.add(new Reader11ActionGrouper());
+		grouperList.add(new Calc11ActionGrouper());
+		grouperList.add(new Database11ActionGrouper());
+		grouperList.add(new Datasources11ActionGrouper());
+		grouperList.add(new FragmentRouting11ActionGrouper());
+		grouperList.add(new Scripting11ActionGrouper());
+		grouperList.add(new Templating11ActionGrouper());
+		grouperList.add(new PersistenceActionGrouper());
+		grouperList.add(new Validation10ActionGrouper());
+		return grouperList;
+	}
+
 }

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-09-13 21:39:20 UTC (rev 17542)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/SmooksGraphicalEditorPart.java	2009-09-14 12:36:19 UTC (rev 17543)
@@ -73,6 +73,7 @@
 import org.jboss.tools.smooks.graphical.editors.model.JavaBeanGraphModel;
 import org.jboss.tools.smooks.model.graphics.ext.FigureType;
 import org.jboss.tools.smooks.model.graphics.ext.GraphType;
+import org.jboss.tools.smooks.model.graphics.ext.ISmooksGraphChangeListener;
 import org.jboss.tools.smooks.model.graphics.ext.SmooksGraphicsExtType;
 import org.jboss.tools.smooks.model.smooks.DocumentRoot;
 import org.jboss.tools.smooks.model.smooks.SmooksResourceListType;
@@ -83,7 +84,7 @@
  * 
  */
 public class SmooksGraphicalEditorPart extends GraphicalEditorWithPalette implements ISelectionChangedListener,
-		ISourceSynchronizeListener {
+		ISourceSynchronizeListener, ISmooksGraphChangeListener {
 
 	public static final int EXECUTE_COMMAND = 0;
 
@@ -509,6 +510,32 @@
 		}
 	}
 
+	protected List<AbstractSmooksGraphicalModel> createInputDataGraphModel() {
+		List<AbstractSmooksGraphicalModel> inputGraphModel = new ArrayList<AbstractSmooksGraphicalModel>();
+		if (inputDataList != null && root != null) {
+			for (Iterator<?> iterator = inputDataList.iterator(); iterator.hasNext();) {
+				Object object = (Object) iterator.next();
+				ITreeContentProvider contentProvider = new XMLStructuredDataContentProvider();
+				ILabelProvider labelProvider = new XMLStructuredDataLabelProvider();
+				InputDataRootModel containerModel = new InputDataRootModel();
+
+				if (object instanceof JavaBeanModel) {
+					contentProvider = new JavabeanContentProvider();
+					labelProvider = new JavabeanlabelProvider();
+
+				}
+				containerModel.getChildren().add((IXMLStructuredObject) object);
+				if (containerModel != null) {
+					TreeContainerModel container = new InputDataContianerModel(containerModel, contentProvider,
+							labelProvider);
+					root.addTreeNode(container);
+					inputGraphModel.add(container);
+				}
+			}
+		}
+		return inputGraphModel;
+	}
+
 	@Override
 	protected void hookGraphicalViewer() {
 		// super.hookGraphicalViewer();
@@ -524,27 +551,11 @@
 
 		}
 		Object obj = smooksModelProvider.getSmooksModel();
+		if(obj == null) return;
 		AdapterFactoryEditingDomain editingDomain = (AdapterFactoryEditingDomain) smooksModelProvider
 				.getEditingDomain();
 		if (inputDataList != null && obj != null && obj instanceof DocumentRoot && editingDomain != null) {
-			for (Iterator<?> iterator = inputDataList.iterator(); iterator.hasNext();) {
-				Object object = (Object) iterator.next();
-				ITreeContentProvider contentProvider = new XMLStructuredDataContentProvider();
-				ILabelProvider labelProvider = new XMLStructuredDataLabelProvider();
-				InputDataRootModel containerModel = new InputDataRootModel();
-
-				if (object instanceof JavaBeanModel) {
-					contentProvider = new JavabeanContentProvider();
-					labelProvider = new JavabeanlabelProvider();
-
-				}
-				containerModel.getChildren().add((IXMLStructuredObject) object);
-				if (containerModel != null) {
-					TreeContainerModel container = new InputDataContianerModel(containerModel, contentProvider,
-							labelProvider);
-					root.addTreeNode(container);
-				}
-			}
+			createInputDataGraphModel();
 			SmooksResourceListType listType = ((DocumentRoot) obj).getSmooksResourceList();
 			List<?> arcList = listType.getAbstractResourceConfig();
 			for (Iterator<?> iterator = arcList.iterator(); iterator.hasNext();) {
@@ -693,7 +704,7 @@
 	}
 
 	protected void expandConnectedModels(Collection<TreeNodeConnection> connections) {
-		if (connections == null)
+		if (connections == null || connections.isEmpty())
 			return;
 		List<TreeNodeModel> expanedTreeNodeList = new ArrayList<TreeNodeModel>();
 		for (Iterator<?> iterator = connections.iterator(); iterator.hasNext();) {
@@ -785,7 +796,63 @@
 
 	@Override
 	protected PaletteRoot getPaletteRoot() {
-		SmooksGraphicalEditorPaletteRootCreator creator = new SmooksGraphicalEditorPaletteRootCreator();
+		SmooksGraphicalEditorPaletteRootCreator creator = new SmooksGraphicalEditorPaletteRootCreator(
+				(AdapterFactoryEditingDomain) this.smooksModelProvider.getEditingDomain(), getSmooksResourceListType());
 		return creator.createPaletteRoot();
 	}
+	
+	private SmooksResourceListType getSmooksResourceListType(){
+		if(smooksModelProvider != null){
+			Object obj = smooksModelProvider.getSmooksModel();
+			smooksResourceList = null;
+			if (obj instanceof DocumentRoot) {
+				smooksResourceList = ((DocumentRoot) obj).getSmooksResourceList();
+			}
+			return smooksResourceList;
+		}
+		return null;
+	}
+
+	public void graphChanged(SmooksGraphicsExtType extType) {
+
+	}
+
+	public void graphPropertyChange(EStructuralFeature featre, Object value) {
+
+	}
+
+	public void inputTypeChanged(SmooksGraphicsExtType extType) {
+		if (root != null) {
+			List<Object> newInputDataList = SelectorCreationDialog.generateInputData(smooksModelProvider
+					.getSmooksGraphicsExt(), getSmooksResourceListType());
+
+			List<InputDataContianerModel> inputs = new ArrayList<InputDataContianerModel>();
+			List<AbstractSmooksGraphicalModel> children = root.getChildren();
+			// remove all input data graph model
+			for (Iterator<?> iterator = children.iterator(); iterator.hasNext();) {
+				AbstractSmooksGraphicalModel abstractSmooksGraphicalModel = (AbstractSmooksGraphicalModel) iterator
+						.next();
+				if (abstractSmooksGraphicalModel instanceof InputDataContianerModel) {
+					inputs.add((InputDataContianerModel) abstractSmooksGraphicalModel);
+				}
+			}
+
+			for (Iterator<?> iterator = inputs.iterator(); iterator.hasNext();) {
+				InputDataContianerModel inputModel = (InputDataContianerModel) iterator.next();
+				AbstractSmooksGraphicalModel.disconnectAllConnections(inputModel);
+				root.removeTreeNode(inputModel);
+			}
+
+			inputDataList.clear();
+			inputDataList.addAll(newInputDataList);
+
+			// renew input data graph model
+			List<AbstractSmooksGraphicalModel> inputGraphModel = createInputDataGraphModel();
+			if (inputGraphModel != null && !inputGraphModel.isEmpty()) {
+				List<TreeNodeConnection> connections = createConnectionModel();
+				createConnection(inputGraphModel, connections);
+				expandConnectedModels(connections);
+			}
+		}
+	}
 }



More information about the jbosstools-commits mailing list