Author: DartPeng
Date: 2009-07-01 04:15:24 -0400 (Wed, 01 Jul 2009)
New Revision: 16311
Added:
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/xml/XMLObjectAnalyzer2.java
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.ui/META-INF/MANIFEST.MF
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/ExtentionInputLabelProvider.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SelectoreSelectionDialog.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/StructuredDataSelectionWizardDailog.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/javabean/JavabeanStrucutredDataWizard.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/json/JsonDataConfiguraitonWizardPage.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/uitls/SelectorContentProposalProvider.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/IStructuredDataSelectionWizard.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/wizard/TransformDataWizardSelectionPage.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/xml/XMLStructuredDataWizard.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/xml/XSDStructuredDataWizard.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/validate/SelectorValidator.java
Log:
JBIDE-4540
1.New JsonReader element via Json configuration page
2.Record the config information in graphical ext file.
3.Generate the "selector" with Json input data.
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-07-01
08:03:17 UTC (rev 16310)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks10/model/smooks/util/SmooksModelUtils.java 2009-07-01
08:15:24 UTC (rev 16311)
@@ -484,7 +484,7 @@
public static String getInputPath(InputType input) {
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_XSD.equals(input.getType()) || INPUT_TYPE_JSON.equals(input.getType()))
{
for (Iterator<?> iterator = list.iterator(); iterator.hasNext();) {
org.jboss.tools.smooks.model.graphics.ext.ParamType paramType =
(org.jboss.tools.smooks.model.graphics.ext.ParamType) iterator
.next();
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/META-INF/MANIFEST.MF
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/META-INF/MANIFEST.MF 2009-07-01
08:03:17 UTC (rev 16310)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/META-INF/MANIFEST.MF 2009-07-01
08:15:24 UTC (rev 16311)
@@ -32,3 +32,7 @@
Bundle-Vendor: %providerName
Bundle-ClassPath: libs/dom4j-1.6.1.jar,
.
+Export-Package: org.jboss.tools.smooks.configuration.editors,
+ org.jboss.tools.smooks.configuration.editors.javabean,
+ org.jboss.tools.smooks.configuration.editors.uitls,
+ org.jboss.tools.smooks.configuration.editors.xml
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/ExtentionInputLabelProvider.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/ExtentionInputLabelProvider.java 2009-07-01
08:03:17 UTC (rev 16310)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/ExtentionInputLabelProvider.java 2009-07-01
08:15:24 UTC (rev 16311)
@@ -75,7 +75,7 @@
List<ParamType> paramers = ((InputType) element).getParam();
for (Iterator<?> iterator = paramers.iterator(); iterator.hasNext();) {
ParamType paramType = (ParamType) iterator.next();
- if ("path".equals(paramType.getName())) {
+ if ("path".equalsIgnoreCase(paramType.getName())) {
continue;
}
extValue += paramType.getName() + "=" + paramType.getValue() +
",";
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SelectoreSelectionDialog.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SelectoreSelectionDialog.java 2009-07-01
08:03:17 UTC (rev 16310)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SelectoreSelectionDialog.java 2009-07-01
08:15:24 UTC (rev 16311)
@@ -45,6 +45,7 @@
import org.jboss.tools.smooks.configuration.SmooksConfigurationActivator;
import org.jboss.tools.smooks.configuration.editors.javabean.JavaBeanModel;
import org.jboss.tools.smooks.configuration.editors.javabean.JavaBeanModelFactory;
+import org.jboss.tools.smooks.configuration.editors.uitls.JsonInputDataParser;
import org.jboss.tools.smooks.configuration.editors.uitls.SmooksUIUtils;
import
org.jboss.tools.smooks.configuration.editors.wizard.StructuredDataSelectionWizard;
import org.jboss.tools.smooks.configuration.editors.xml.AbstractXMLObject;
@@ -54,6 +55,8 @@
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.smooks.DocumentRoot;
+import org.jboss.tools.smooks.model.smooks.SmooksResourceListType;
import org.jboss.tools.smooks10.model.smooks.util.SmooksModelUtils;
/**
@@ -237,7 +240,8 @@
});
}
- public static List<Object> generateInputData(SmooksGraphicsExtType extType) {
+ public static List<Object> generateInputData(SmooksGraphicsExtType extType,
+ SmooksResourceListType smooksResourceListType) {
List<Object> list = new ArrayList<Object>();
if (extType != null) {
IJavaProject project = SmooksUIUtils.getJavaProject(extType);
@@ -249,6 +253,21 @@
String path = SmooksModelUtils.getInputPath(inputType);
if (type != null && path != null) {
path = path.trim();
+ if (SmooksModelUtils.INPUT_TYPE_JSON.equals(type)) {
+ try {
+ JsonInputDataParser parser = new JsonInputDataParser();
+ IXMLStructuredObject tagList =
parser.parseJsonFile(SmooksUIUtils.parseFilePath(path),
+ inputType, smooksResourceListType);
+ if (tagList instanceof TagList) {
+ list.addAll(((TagList) tagList).getChildren());
+ } else {
+ list.add(tagList);
+ }
+ } catch (Throwable tt) {
+ // ignore
+// SmooksConfigurationActivator.getDefault().log(tt);
+ }
+ }
if (SmooksModelUtils.INPUT_TYPE_JAVA.equals(type)) {
try {
Class<?> clazz = SmooksUIUtils.loadClass(path, project);
@@ -291,12 +310,7 @@
AbstractXMLObject model = new XMLObjectAnalyzer().analyze(path, null);
if (model != null) {
if (model instanceof TagList) {
- List<IXMLStructuredObject> children = ((TagList) model).getChildren();
- for (Iterator<?> iterator2 = children.iterator(); iterator2.hasNext();)
{
- IXMLStructuredObject structuredObject = (IXMLStructuredObject) iterator2
- .next();
- list.add(structuredObject);
- }
+ list.addAll(((TagList) model).getChildren());
} else {
list.add(model);
}
@@ -315,7 +329,12 @@
}
protected List<Object> generateInputData() {
- return generateInputData(graphicsExt);
+ Object obj = ((SmooksMultiFormEditor) editorPart).getSmooksModel();
+ SmooksResourceListType resourceList = null;
+ if (obj instanceof DocumentRoot) {
+ resourceList = ((DocumentRoot) obj).getSmooksResourceList();
+ }
+ return generateInputData(graphicsExt, resourceList);
}
protected void showInputDataWizard() {
@@ -326,8 +345,12 @@
}
wizard.setForcePreviousAndNextButtons(true);
+ SmooksMultiFormEditor formEditor = null;
+ if (this.editorPart != null && this.editorPart instanceof
SmooksMultiFormEditor) {
+ formEditor = (SmooksMultiFormEditor) editorPart;
+ }
StructuredDataSelectionWizardDailog dialog = new
StructuredDataSelectionWizardDailog(this.getShell(), wizard,
- this.graphicsExt);
+ this.graphicsExt, formEditor);
if (dialog.show() == WizardDialog.OK) {
List<Object> input = this.generateInputData();
this.viewer.setInput(input);
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-07-01
08:03:17 UTC (rev 16310)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SmooksConfigurationFormPage.java 2009-07-01
08:15:24 UTC (rev 16311)
@@ -216,7 +216,7 @@
wizard.setSite(getEditorSite());
wizard.setForcePreviousAndNextButtons(true);
StructuredDataSelectionWizardDailog dialog = new StructuredDataSelectionWizardDailog(
- getEditorSite().getShell(), wizard , getSmooksGraphicsExtType());
+ getEditorSite().getShell(), wizard ,
getSmooksGraphicsExtType(),(SmooksMultiFormEditor)getEditor());
dialog.show();
}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/StructuredDataSelectionWizardDailog.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/StructuredDataSelectionWizardDailog.java 2009-07-01
08:03:17 UTC (rev 16310)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/StructuredDataSelectionWizardDailog.java 2009-07-01
08:15:24 UTC (rev 16311)
@@ -38,10 +38,13 @@
protected SmooksGraphicsExtType smooksGraphicsExtType;
+ private SmooksMultiFormEditor formEditor;
+
public StructuredDataSelectionWizardDailog(Shell parentShell,
- IWizard newWizard,SmooksGraphicsExtType extType) {
+ IWizard newWizard,SmooksGraphicsExtType extType , SmooksMultiFormEditor formEditor) {
super(parentShell, newWizard);
this.setSmooksGraphicsExtType(extType);
+ this.formEditor = formEditor;
}
public IStructuredDataSelectionWizard getCurrentCreationWizard(){
@@ -53,7 +56,14 @@
}
-
+ public SmooksMultiFormEditor getFormEditor() {
+ return formEditor;
+ }
+
+ public void setFormEditor(SmooksMultiFormEditor formEditor) {
+ this.formEditor = formEditor;
+ }
+
/**
* @return the smooksGraphicsExtType
*/
@@ -91,9 +101,15 @@
IStructuredDataSelectionWizard wizard1 = this.getCurrentCreationWizard();
String type = wizard1.getInputDataTypeID();
String path = wizard1.getStructuredDataSourcePath();
+
+ wizard1.complate(this.getFormEditor());
+
SmooksGraphicsExtType extType = getSmooksGraphicsExtType();
if (type != null && path != null && extType != null) {
String[] values = path.split(";");
+ if(values == null || values.length == 0){
+ values = new String[]{path};
+ }
for (int i = 0; i < values.length; i++) {
String value = values[i];
value = value.trim();
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/javabean/JavabeanStrucutredDataWizard.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/javabean/JavabeanStrucutredDataWizard.java 2009-07-01
08:03:17 UTC (rev 16310)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/javabean/JavabeanStrucutredDataWizard.java 2009-07-01
08:15:24 UTC (rev 16311)
@@ -28,6 +28,7 @@
import org.eclipse.ui.IFileEditorInput;
import org.eclipse.ui.INewWizard;
import org.eclipse.ui.IWorkbench;
+import org.jboss.tools.smooks.configuration.editors.SmooksMultiFormEditor;
import
org.jboss.tools.smooks.configuration.editors.wizard.IStructuredDataSelectionWizard;
import org.jboss.tools.smooks10.model.smooks.util.SmooksModelUtils;
@@ -181,4 +182,9 @@
}
return buffer.toString();
}
+
+ public void complate(SmooksMultiFormEditor formEditor) {
+ // TODO Auto-generated method stub
+
+ }
}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/json/JsonDataConfiguraitonWizardPage.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/json/JsonDataConfiguraitonWizardPage.java 2009-07-01
08:03:17 UTC (rev 16310)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/json/JsonDataConfiguraitonWizardPage.java 2009-07-01
08:15:24 UTC (rev 16311)
@@ -11,14 +11,14 @@
package org.jboss.tools.smooks.configuration.editors.json;
import java.util.ArrayList;
-import java.util.HashMap;
+import java.util.Iterator;
import java.util.List;
-import java.util.Map;
import org.eclipse.jface.resource.ImageDescriptor;
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.ITableLabelProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.TableViewer;
@@ -28,10 +28,14 @@
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Image;
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.Item;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.Text;
@@ -54,8 +58,6 @@
private String nullValueReplacement = "";
- private Map<String, String> keyMap;
-
private String encoding = "UTF-8";
private Text rootNameText;
@@ -76,9 +78,19 @@
private ArrayList<KeyValueModel> keyValueList;
+ private Button addButton;
+
+ private Button removeButton;
+
+ private Button createJsonReaderButton;
+
+ protected boolean createJsonReader = true;
+
private void initValue() {
rootName = null;
+ createJsonReader = true;
+
arrayElementName = "element";
keyWhitspaceReplacement = "-";
@@ -87,14 +99,13 @@
illegalElementNameCharReplacement = null;
nullValueReplacement = "";
- keyMap = new HashMap<String, String>();
encoding = "UTF-8";
- keyValueList = new ArrayList<KeyValueModel>();
-
- keyValueList.add(new KeyValueModel("ket", "aaaa"));
- keyValueList.add(new KeyValueModel("12", "4"));
- keyValueList.add(new KeyValueModel("fg", "1a"));
- keyValueList.add(new KeyValueModel("g", "y4"));
+ if (keyValueList != null) {
+ keyValueList.clear();
+ } else {
+ keyValueList = new ArrayList<KeyValueModel>();
+ }
+
}
/*
@@ -116,12 +127,6 @@
mainComposite.setLayoutData(gd);
gd = new GridData(GridData.FILL_HORIZONTAL);
- /**
- * String rootName, String arrayElementName, String
- * keyWhitspaceReplacement, String keyPrefixOnNumeric, String
- * illegalElementNameCharReplacement, String nullValueReplacement,
- * Map<String, String> keyMap, String encoding
- */
Label rootnameLabel = new Label(mainComposite, SWT.NONE);
rootnameLabel.setText("Root Element Name");
rootNameText = new Text(mainComposite, SWT.BORDER);
@@ -173,58 +178,174 @@
gd.horizontalSpan = 2;
keyMapLabel.setLayoutData(gd);
- keyMapViewer = new TableViewer(mainComposite, SWT.BORDER);
-
gd = new GridData(GridData.FILL_BOTH);
gd.horizontalSpan = 2;
+
+ Composite keyMapComposite = new Composite(mainComposite, SWT.NONE);
+ keyMapComposite.setLayoutData(gd);
+
+ GridLayout kgl = new GridLayout();
+ kgl.numColumns = 2;
+ keyMapComposite.setLayout(kgl);
+
+ gd = new GridData(GridData.FILL_BOTH);
+
+ keyMapViewer = new TableViewer(keyMapComposite, SWT.BORDER | SWT.MULTI);
keyMapViewer.getControl().setLayoutData(gd);
keyMapViewer.getTable().setHeaderVisible(true);
keyMapViewer.getTable().setLinesVisible(true);
keyMapViewer.setContentProvider(new KeyMapContentProvider());
keyMapViewer.setLabelProvider(new KeyMapLabelProvider());
- keyMapViewer.setInput(keyValueList);
-
- CellEditor keyCellEditor = new TextCellEditor(keyMapViewer.getTable(),SWT.BORDER);
-
- CellEditor valueCellEditor = new TextCellEditor(keyMapViewer.getTable(),SWT.BORDER);
-
-
- keyMapViewer.setCellEditors(new CellEditor[]{keyCellEditor,valueCellEditor});
-
- keyMapViewer.setColumnProperties(new String[]{"key","value"});
-
+
+ CellEditor keyCellEditor = new TextCellEditor(keyMapViewer.getTable(),
+ SWT.BORDER);
+
+ CellEditor valueCellEditor = new TextCellEditor(
+ keyMapViewer.getTable(), SWT.BORDER);
+
+ keyMapViewer.setCellEditors(new CellEditor[] { keyCellEditor,
+ valueCellEditor });
+
+ keyMapViewer.setColumnProperties(new String[] { "key", "value" });
+
keyMapViewer.setCellModifier(new ICellModifier() {
-
+
public void modify(Object element, String property, Object value) {
- // TODO Auto-generated method stub
-
+ Object el = null;
+ if (element instanceof Item) {
+ el = ((Item) element).getData();
+ }
+ if (el == null)
+ return;
+ if (el instanceof KeyValueModel && value instanceof String) {
+ if (property.equals("key")) {
+ ((KeyValueModel) el).setKey(value.toString());
+ }
+ if (property.equals("value")) {
+ ((KeyValueModel) el).setValue(value.toString());
+ }
+ keyMapViewer.refresh(el);
+ }
}
-
+
public Object getValue(Object element, String property) {
- // TODO Auto-generated method stub
- return "ggg";
+ // Object el = null;
+ // if(element instanceof Item){
+ // el = ((Item)element).getData();
+ // }
+ // if(el == null) return null;
+ if (element instanceof KeyValueModel) {
+ if (property.equals("key")) {
+ return ((KeyValueModel) element).getKey();
+ }
+ if (property.equals("value")) {
+ return ((KeyValueModel) element).getValue();
+ }
+ }
+
+ return null;
}
-
+
public boolean canModify(Object element, String property) {
- return true;
+ // Object el = null;
+ // if(element instanceof Item){
+ // el = ((Item)element).getData();
+ // }
+ // if(el == null) return false;
+ if (element instanceof KeyValueModel) {
+ if (property.equals("key") || property.equals("value")) {
+ return true;
+ }
+ }
+ return false;
}
});
-
+
TableColumn keyColumn = new TableColumn(keyMapViewer.getTable(),
- SWT.NONE);
+ SWT.BORDER);
keyColumn.setWidth(150);
keyColumn.setText("Key");
+
TableColumn replaceColumn = new TableColumn(keyMapViewer.getTable(),
- SWT.NONE);
+ SWT.BORDER);
replaceColumn.setWidth(150);
replaceColumn.setText("Replace");
+ keyMapViewer.setInput(keyValueList);
+
+ Composite buttonComposite = new Composite(keyMapComposite, SWT.NONE);
+ gd = new GridData(GridData.FILL_VERTICAL);
+ buttonComposite.setLayoutData(gd);
+
+ GridLayout bgl = new GridLayout();
+ buttonComposite.setLayout(bgl);
+
+ gd = new GridData(GridData.FILL_HORIZONTAL);
+
+ addButton = new Button(buttonComposite, SWT.BORDER);
+ addButton.setLayoutData(gd);
+ addButton.setText("Add");
+
+ removeButton = new Button(buttonComposite, SWT.BORDER);
+ removeButton.setLayoutData(gd);
+ removeButton.setText("Remove");
+
+ createJsonReaderButton = new Button(mainComposite, SWT.CHECK);
+ createJsonReaderButton.setText("Create a JSON Reader");
+
+ gd = new GridData(GridData.FILL_HORIZONTAL);
+ gd.horizontalSpan = 2;
+ createJsonReaderButton.setLayoutData(gd);
+ createJsonReaderButton.setSelection(true);
hookControls();
changePageStatus();
this.setControl(mainComposite);
}
private void hookControls() {
+
+ addButton.addSelectionListener(new SelectionListener() {
+
+ public void widgetSelected(SelectionEvent e) {
+ keyValueList.add(new KeyValueModel("key", "value"));
+ keyMapViewer.refresh();
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+ });
+
+ removeButton.addSelectionListener(new SelectionListener() {
+
+ public void widgetSelected(SelectionEvent e) {
+ IStructuredSelection selection = (IStructuredSelection) keyMapViewer
+ .getSelection();
+ List<?> selections = selection.toList();
+ for (Iterator<?> iterator = selections.iterator(); iterator
+ .hasNext();) {
+ Object object = (Object) iterator.next();
+ keyValueList.remove(object);
+ }
+ keyMapViewer.refresh();
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+ // TODO Auto-generated method stub
+
+ }
+ });
+
+ createJsonReaderButton.addSelectionListener(new SelectionListener() {
+
+ public void widgetSelected(SelectionEvent e) {
+ createJsonReader = createJsonReaderButton.getSelection();
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+
+ }
+ });
+
encodingText.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent e) {
@@ -369,14 +490,14 @@
this.nullValueReplacement = nullValueReplacement;
}
- public Map<String, String> getKeyMap() {
- return keyMap;
- }
+// public Map<String, String> getKeyMap() {
+// return keyMap;
+// }
+//
+// public void setKeyMap(Map<String, String> keyMap) {
+// this.keyMap = keyMap;
+// }
- public void setKeyMap(Map<String, String> keyMap) {
- this.keyMap = keyMap;
- }
-
public String getEncoding() {
return encoding;
}
@@ -384,67 +505,88 @@
public void setEncoding(String encoding) {
this.encoding = encoding;
}
-
-
- private class KeyMapLabelProvider extends LabelProvider implements ITableLabelProvider{
+ public ArrayList<KeyValueModel> getKeyValueList() {
+ return keyValueList;
+ }
+
+ public void setKeyValueList(ArrayList<KeyValueModel> keyValueList) {
+ this.keyValueList = keyValueList;
+ }
+
+ public boolean isCreateJsonReader() {
+ return createJsonReader;
+ }
+
+ public void setCreateJsonReader(boolean createJsonReader) {
+ this.createJsonReader = createJsonReader;
+ }
+
+
+
+ private class KeyMapLabelProvider extends LabelProvider implements
+ ITableLabelProvider {
+
public Image getColumnImage(Object element, int columnIndex) {
return null;
}
public String getColumnText(Object element, int columnIndex) {
-// if(element instanceof KeyValueModel){
-// switch(columnIndex){
-// case 0:
-// return ((KeyValueModel)element).getKey();
-// case 1:
-// return ((KeyValueModel)element).getValue();
-// }
-// }
+ if (element instanceof KeyValueModel) {
+ switch (columnIndex) {
+ case 0:
+ return ((KeyValueModel) element).getKey();
+ case 1:
+ return ((KeyValueModel) element).getValue();
+ }
+ }
return getText(element);
}
-
+
}
-
- private class KeyMapContentProvider implements IStructuredContentProvider{
+ private class KeyMapContentProvider implements IStructuredContentProvider {
+
public Object[] getElements(Object inputElement) {
- if(inputElement instanceof List<?>){
- return ((List<?>)inputElement).toArray();
+ if (inputElement instanceof List<?>) {
+ return ((List<?>) inputElement).toArray();
}
// TODO Auto-generated method stub
- return new Object[]{};
+ return new Object[] {};
}
public void dispose() {
-
+
}
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
// TODO Auto-generated method stub
-
+
}
-
+
}
-
- private class KeyValueModel{
+
+ public class KeyValueModel {
private String key;
private String value;
-
- public KeyValueModel(String key , String value){
+
+ public KeyValueModel(String key, String value) {
this.key = key;
this.value = value;
}
-
+
public String getKey() {
return key;
}
+
public void setKey(String key) {
this.key = key;
}
+
public String getValue() {
return value;
}
+
public void setValue(String value) {
this.value = value;
}
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-07-01
08:03:17 UTC (rev 16310)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/json/JsonDataWizard.java 2009-07-01
08:15:24 UTC (rev 16311)
@@ -10,15 +10,29 @@
******************************************************************************/
package org.jboss.tools.smooks.configuration.editors.json;
+import java.util.Iterator;
+import java.util.List;
import java.util.Properties;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.edit.command.AddCommand;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorSite;
import org.eclipse.ui.INewWizard;
import org.eclipse.ui.IWorkbench;
+import org.jboss.tools.smooks.configuration.editors.SmooksMultiFormEditor;
+import
org.jboss.tools.smooks.configuration.editors.json.JsonDataConfiguraitonWizardPage.KeyValueModel;
+import org.jboss.tools.smooks.configuration.editors.uitls.JsonInputDataParser;
import
org.jboss.tools.smooks.configuration.editors.wizard.IStructuredDataSelectionWizard;
+import org.jboss.tools.smooks.model.json.JsonFactory;
+import org.jboss.tools.smooks.model.json.JsonReader;
+import org.jboss.tools.smooks.model.json.Key;
+import org.jboss.tools.smooks.model.json.KeyMap;
+import org.jboss.tools.smooks.model.smooks.DocumentRoot;
+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;
/**
@@ -73,7 +87,7 @@
@Override
public boolean performFinish() {
// TODO Auto-generated method stub
- return false;
+ return true;
}
/*
@@ -112,39 +126,56 @@
private void fillProperties(Properties p) {
if (configPage != null) {
+
+ boolean createJsonReader = configPage.isCreateJsonReader();
+
+ if (createJsonReader) {
+ p.setProperty(JsonInputDataParser.LINK_JSON_READER, "true");
+ return;
+ }
+
+ List<KeyValueModel> keyMapList = configPage.getKeyValueList();
+ for (Iterator<?> iterator = keyMapList.iterator(); iterator
+ .hasNext();) {
+ KeyValueModel keyValueModel = (KeyValueModel) iterator.next();
+ String key = keyValueModel.getKey();
+ String value = keyValueModel.getValue();
+ p.setProperty(JsonInputDataParser.KEY + key, value);
+ }
+
String aen = configPage.getArrayElementName();
if (aen != null && aen.length() != 0) {
- p.setProperty("arrayElementName", aen);
+ p.setProperty(JsonInputDataParser.ARRAY_ELEMENT_NAME, aen);
}
String rn = configPage.getRootName();
if (rn != null && rn.length() != 0) {
- p.setProperty("rootName", rn);
+ p.setProperty(JsonInputDataParser.ROOT_NAME, rn);
}
String encoding = configPage.getEncoding();
if (encoding != null && encoding.length() != 0) {
- p.setProperty("encoding", encoding);
+ p.setProperty(JsonInputDataParser.ENCODING2, encoding);
}
String sr = configPage.getKeyWhitspaceReplacement();
if (sr != null && sr.length() != 0) {
- p.setProperty("spaceReplace", sr);
+ p.setProperty(JsonInputDataParser.SPACE_REPLACE, sr);
}
String pon = configPage.getKeyPrefixOnNumeric();
if (pon != null && pon.length() != 0) {
- p.setProperty("prefixOnNumeric", pon);
+ p.setProperty(JsonInputDataParser.PREFIX_ON_NUMERIC, pon);
}
String nvr = configPage.getNullValueReplacement();
if (nvr != null && nvr.length() != 0) {
- p.setProperty("nullReplace", nvr);
+ p.setProperty(JsonInputDataParser.NULL_REPLACE, nvr);
}
String ier = configPage.getIllegalElementNameCharReplacement();
if (ier != null && ier.length() != 0) {
- p.setProperty("illegalReplace", ier);
+ p.setProperty(JsonInputDataParser.ILLEGAL_REPLACE, ier);
}
}
}
@@ -183,4 +214,77 @@
public void init(IEditorSite site, IEditorInput input) {
}
+
+ public void complate(SmooksMultiFormEditor formEditor) {
+ if (configPage != null && configPage.isCreateJsonReader()) {
+ List<KeyValueModel> keyMapList = configPage.getKeyValueList();
+
+ JsonReader reader = JsonFactory.eINSTANCE.createJsonReader();
+ if (keyMapList != null && !keyMapList.isEmpty()) {
+ KeyMap map = JsonFactory.eINSTANCE.createKeyMap();
+ for (Iterator<?> iterator = keyMapList.iterator(); iterator
+ .hasNext();) {
+ KeyValueModel keyValueModel = (KeyValueModel) iterator
+ .next();
+ String key = keyValueModel.getKey();
+ String value = keyValueModel.getValue();
+ Key k = JsonFactory.eINSTANCE.createKey();
+ k.setFrom(key);
+ k.setTo(value);
+ map.getKey().add(k);
+ }
+ reader.setKeyMap(map);
+ }
+
+ String aen = configPage.getArrayElementName();
+ if (aen != null && aen.length() != 0) {
+ reader.setArrayElementName(aen);
+ }
+
+ String rn = configPage.getRootName();
+ if (rn != null && rn.length() != 0) {
+ reader.setRootName(rn);
+ }
+
+ String encoding = configPage.getEncoding();
+ if (encoding != null && encoding.length() != 0) {
+ reader.setEncoding(encoding);
+ }
+
+ String sr = configPage.getKeyWhitspaceReplacement();
+ if (sr != null && sr.length() != 0) {
+ reader.setKeyWhitspaceReplacement(sr);
+ }
+
+ String pon = configPage.getKeyPrefixOnNumeric();
+ if (pon != null && pon.length() != 0) {
+ reader.setKeyPrefixOnNumeric(pon);
+ }
+
+ String nvr = configPage.getNullValueReplacement();
+ if (nvr != null && nvr.length() != 0) {
+ reader.setNullValueReplacement(nvr);
+ }
+
+ String ier = configPage.getIllegalElementNameCharReplacement();
+ if (ier != null && ier.length() != 0) {
+ reader.setIllegalElementNameCharReplacement(ier);
+ }
+
+ SmooksResourceListType resourceList = null;
+ Object smooksModel = formEditor.getSmooksModel();
+ if (smooksModel instanceof DocumentRoot) {
+ resourceList = ((DocumentRoot) smooksModel)
+ .getSmooksResourceList();
+ }
+ Command command = AddCommand
+ .create(
+ formEditor.getEditingDomain(),
+ resourceList,
+ SmooksPackage.eINSTANCE
+ .getSmooksResourceListType_AbstractReader(),
+ reader);
+ formEditor.getEditingDomain().getCommandStack().execute(command);
+ }
+ }
}
Added:
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
(rev 0)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/uitls/JsonInputDataParser.java 2009-07-01
08:15:24 UTC (rev 16311)
@@ -0,0 +1,271 @@
+/**
+ *
+ */
+package org.jboss.tools.smooks.configuration.editors.uitls;
+
+import java.io.ByteArrayInputStream;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+import java.io.StringWriter;
+import java.lang.reflect.InvocationTargetException;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.dom.DOMResult;
+import javax.xml.transform.stream.StreamSource;
+
+import org.dom4j.DocumentException;
+import org.jboss.tools.smooks.configuration.editors.IXMLStructuredObject;
+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;
+import org.jboss.tools.smooks.model.smooks.AbstractReader;
+import org.jboss.tools.smooks.model.smooks.SmooksResourceListType;
+import org.milyn.Smooks;
+import org.milyn.SmooksUtil;
+import org.milyn.cdr.Parameter;
+import org.milyn.cdr.SmooksResourceConfiguration;
+import org.milyn.json.JSONReader;
+import org.milyn.xml.XmlUtil;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+/**
+ * @author Dart
+ *
+ */
+public class JsonInputDataParser {
+
+ public static final String LINK_JSON_READER = "linkJSONReader";
+ public static final String KEY = "_key_";
+ public static final String NULL_REPLACE = "nullReplace";
+ public static final String ENCODING2 = "encoding";
+ public static final String SPACE_REPLACE = "spaceReplace";
+ public static final String PREFIX_ON_NUMERIC = "prefixOnNumeric";
+ public static final String ILLEGAL_REPLACE = "illegalReplace";
+ public static final String ARRAY_ELEMENT_NAME = "arrayElementName";
+ public static final String ROOT_NAME = "rootName";
+
+ public IXMLStructuredObject parseJsonFile(InputStream inputStream, JsonReader reader)
+ throws ParserConfigurationException, DocumentException {
+ String rootName = null;
+ String arrayElementName = null;
+ String keyWhitspaceReplacement = null;
+ String keyPrefixOnNumeric = null;
+ String illegalElementNameCharReplacement = null;
+ String nullValueReplacement = null;
+ String encoding = null;
+ Map<String, String> keyMap = new HashMap<String, String>();
+ if (reader == null)
+ return null;
+ rootName = reader.getRootName();
+ arrayElementName = reader.getArrayElementName();
+ keyPrefixOnNumeric = reader.getKeyPrefixOnNumeric();
+ keyWhitspaceReplacement = reader.getKeyWhitspaceReplacement();
+ illegalElementNameCharReplacement = reader.getIllegalElementNameCharReplacement();
+ nullValueReplacement = reader.getNullValueReplacement();
+ encoding = reader.getEncoding();
+ KeyMap km = reader.getKeyMap();
+ if (km != null) {
+ List<Key> keyList = km.getKey();
+ for (Iterator<?> iterator = keyList.iterator(); iterator.hasNext();) {
+ Key key = (Key) iterator.next();
+ keyMap.put(key.getFrom(), key.getTo());
+ }
+ }
+ return this.parseJsonFile(inputStream, rootName, arrayElementName,
keyWhitspaceReplacement, keyPrefixOnNumeric,
+ illegalElementNameCharReplacement, nullValueReplacement, keyMap, encoding);
+ }
+
+ 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;
+ 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 (abstractReader instanceof JsonReader) {
+ 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, (JsonReader) readers.get(index));
+ }
+
+ }
+ }
+ 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();
+ }
+ }
+
+ return this.parseJsonFile(stream, rootName, arrayElementName, keyWhitspaceReplacement,
keyPrefixOnNumeric,
+ illegalElementNameCharReplacement, nullValueReplacement, keyMap, encoding);
+ }
+
+ public IXMLStructuredObject parseJsonFile(String filePath, InputType inputType,
SmooksResourceListType resourceList)
+ throws FileNotFoundException, ParserConfigurationException, DocumentException,
InvocationTargetException {
+ FileInputStream stream = new FileInputStream(filePath);
+ return this.parseJsonFile(stream, inputType, resourceList);
+ }
+
+ public IXMLStructuredObject parseJsonFile(String filePath, String rootName, String
arrayElementName,
+ String keyWhitspaceReplacement, String keyPrefixOnNumeric, String
illegalElementNameCharReplacement,
+ String nullValueReplacement, Map<String, String> keyMap, String encoding) throws
FileNotFoundException,
+ ParserConfigurationException, DocumentException, InvocationTargetException {
+ return this.parseJsonFile(new FileInputStream(SmooksUIUtils.parseFilePath(filePath)),
rootName,
+ arrayElementName, keyWhitspaceReplacement, keyPrefixOnNumeric,
illegalElementNameCharReplacement,
+ nullValueReplacement, keyMap, encoding);
+ }
+
+ public IXMLStructuredObject parseJsonFile(InputStream inputStream, String rootName,
String arrayElementName,
+ String keyWhitspaceReplacement, String keyPrefixOnNumeric, String
illegalElementNameCharReplacement,
+ String nullValueReplacement, Map<String, String> keyMap, String encoding)
+ throws ParserConfigurationException, DocumentException {
+
+ Smooks smooks = new Smooks();
+
+ SmooksResourceConfiguration readerConfig = new
SmooksResourceConfiguration("org.xml.sax.driver",
+ JSONReader.class.getName());
+
+ readerConfig.setParameter(ROOT_NAME, rootName);
+ readerConfig.setParameter(ARRAY_ELEMENT_NAME, arrayElementName);
+ if (keyWhitspaceReplacement != null) {
+ readerConfig.setParameter("keyWhitspaceReplacement",
keyWhitspaceReplacement);
+ }
+ if (keyPrefixOnNumeric != null) {
+ readerConfig.setParameter("keyPrefixOnNumeric", keyPrefixOnNumeric);
+ }
+ if (illegalElementNameCharReplacement != null) {
+ readerConfig.setParameter("illegalElementNameCharReplacement",
illegalElementNameCharReplacement);
+ }
+ if (nullValueReplacement != null) {
+ readerConfig.setParameter("nullValueReplacement", nullValueReplacement);
+ }
+
+ if (keyMap != null) {
+ readerConfig.setParameter(keyMapToParameter(keyMap));
+ }
+
+ readerConfig.setParameter(ENCODING2, encoding);
+
+ SmooksUtil.registerResource(readerConfig, smooks);
+
+ // Use a DOM result to capture the message model for the supplied CSV
+ // message...
+ DOMResult domResult = new DOMResult();
+
+ // Filter the message through Smooks and capture the result as a DOM in
+ // the domResult instance...
+ smooks.filter(new StreamSource(inputStream), domResult);
+
+ // Get the Document object from the domResult. This is the message
+ // model!!!...
+ Document model = (Document) domResult.getNode();
+ StringWriter modelWriter = new StringWriter();
+ XmlUtil.serialize(model, true, modelWriter);
+
+ XMLObjectAnalyzer analyzer = new XMLObjectAnalyzer();
+ ByteArrayInputStream byteinputStream = new
ByteArrayInputStream(modelWriter.toString().getBytes());
+ TagList tagList = analyzer.analyze(byteinputStream, null);
+
+ try {
+ if (byteinputStream != null) {
+ byteinputStream.close();
+ byteinputStream = null;
+ }
+ if (modelWriter != null) {
+ modelWriter.close();
+ modelWriter = null;
+ }
+ if (smooks != null) {
+ smooks.close();
+ smooks = null;
+ }
+ if (inputStream != null) {
+ inputStream.close();
+ inputStream = null;
+ }
+ model = null;
+ } catch (Throwable t) {
+ t.printStackTrace();
+ }
+
+ return tagList;
+ }
+
+ protected Parameter keyMapToParameter(Map<String, String> keyMap) throws
ParserConfigurationException {
+ Parameter keyMapParam = new Parameter("keyMap", "dummyVal");
+ DocumentBuilder docBuilder =
DocumentBuilderFactory.newInstance().newDocumentBuilder();
+ Element keyMapElement = docBuilder.newDocument().createElement("keyMap");
+ Set<Map.Entry<String, String>> keyMapEntries = keyMap.entrySet();
+
+ for (Map.Entry<String, String> keyMapEntry : keyMapEntries) {
+ Element keyElement = keyMapElement.getOwnerDocument().createElementNS("*",
"key");
+ keyElement.setAttribute("from", keyMapEntry.getKey());
+ keyElement.setAttribute("to", keyMapEntry.getValue());
+ keyMapElement.appendChild(keyElement);
+ }
+
+ keyMapParam.setXML(keyMapElement);
+
+ return keyMapParam;
+ }
+}
Property changes on:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/uitls/JsonInputDataParser.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/uitls/SelectorContentProposalProvider.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/uitls/SelectorContentProposalProvider.java 2009-07-01
08:03:17 UTC (rev 16310)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/uitls/SelectorContentProposalProvider.java 2009-07-01
08:15:24 UTC (rev 16311)
@@ -19,6 +19,7 @@
import org.jboss.tools.smooks.configuration.editors.IXMLStructuredObject;
import org.jboss.tools.smooks.configuration.editors.SelectoreSelectionDialog;
import org.jboss.tools.smooks.model.graphics.ext.SmooksGraphicsExtType;
+import org.jboss.tools.smooks.model.smooks.SmooksResourceListType;
/**
* @author Dart (dpeng(a)redhat.com)
@@ -27,9 +28,12 @@
public class SelectorContentProposalProvider implements IContentProposalProvider {
private SmooksGraphicsExtType extType;
+
+ private SmooksResourceListType resourceList;
- public SelectorContentProposalProvider(SmooksGraphicsExtType extType) {
+ public SelectorContentProposalProvider(SmooksGraphicsExtType
extType,SmooksResourceListType resourceList) {
this.extType = extType;
+ this.resourceList = resourceList;
}
/*
@@ -43,7 +47,7 @@
if(contents.indexOf("h") != -1){
System.out.println();
}
- List<Object> list = SelectoreSelectionDialog.generateInputData(extType);
+ List<Object> list =
SelectoreSelectionDialog.generateInputData(extType,resourceList);
if(list == null || list.isEmpty()){
return new IContentProposal[]{};
}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/uitls/SmooksUIUtils.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/uitls/SmooksUIUtils.java 2009-07-01
08:03:17 UTC (rev 16310)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/uitls/SmooksUIUtils.java 2009-07-01
08:15:24 UTC (rev 16311)
@@ -221,23 +221,26 @@
return beanIdList;
}
- public static AttributeFieldEditPart createMixedTextFieldEditor(String label,
AdapterFactoryEditingDomain editingdomain,
- FormToolkit toolkit, Composite parent, Object model, boolean linkLabel,
IHyperlinkListener listener) {
- return createMixedTextFieldEditor(label, editingdomain, toolkit, parent, model, false,
0, linkLabel, false, listener,
- null);
+ public static AttributeFieldEditPart createMixedTextFieldEditor(String label,
+ AdapterFactoryEditingDomain editingdomain, FormToolkit toolkit, Composite parent,
Object model,
+ boolean linkLabel, IHyperlinkListener listener) {
+ return createMixedTextFieldEditor(label, editingdomain, toolkit, parent, model, false,
0, linkLabel, false,
+ listener, null);
}
- public static AttributeFieldEditPart createMultiMixedTextFieldEditor(String label,
AdapterFactoryEditingDomain editingdomain,
- FormToolkit toolkit, Composite parent, Object model, int height,
OpenEditorEditInnerContentsAction action) {
- return createMixedTextFieldEditor(label, editingdomain, toolkit, parent, model, true,
height, false, false, null,
- action);
+ public static AttributeFieldEditPart createMultiMixedTextFieldEditor(String label,
+ AdapterFactoryEditingDomain editingdomain, FormToolkit toolkit, Composite parent,
Object model, int height,
+ OpenEditorEditInnerContentsAction action) {
+ return createMixedTextFieldEditor(label, editingdomain, toolkit, parent, model, true,
height, false, false,
+ null, action);
}
- public static AttributeFieldEditPart createMixedTextFieldEditor(String label,
AdapterFactoryEditingDomain editingdomain,
- FormToolkit toolkit, Composite parent, Object model, boolean multiText, int height,
boolean linkLabel,
- boolean openFile, IHyperlinkListener listener, OpenEditorEditInnerContentsAction
action) {
- return createStringFieldEditor(label, parent, editingdomain, toolkit, null, model,
multiText, linkLabel, openFile,
- height, listener, VALUE_TYPE_TEXT, action);
+ public static AttributeFieldEditPart createMixedTextFieldEditor(String label,
+ AdapterFactoryEditingDomain editingdomain, FormToolkit toolkit, Composite parent,
Object model,
+ boolean multiText, int height, boolean linkLabel, boolean openFile, IHyperlinkListener
listener,
+ OpenEditorEditInnerContentsAction action) {
+ return createStringFieldEditor(label, parent, editingdomain, toolkit, null, model,
multiText, linkLabel,
+ openFile, height, listener, VALUE_TYPE_TEXT, action);
}
public static FieldMarkerWrapper createFieldEditorLabel(Composite parent, FormToolkit
formToolKit,
@@ -402,7 +405,8 @@
}
public static String parseFilePath(String path) throws InvocationTargetException {
- if(path == null) return null;
+ if (path == null)
+ return null;
if (new File(path).exists()) {
return path;
}
@@ -624,7 +628,7 @@
}
if (editValue != null && valueIsSet) {
valueText.setText(editValue);
- if (editValue.length() > 0 && section != null) {
+ if (editValue.length() > 0 && section != null) {
section.setExpanded(true);
}
}
@@ -755,7 +759,8 @@
SearchComposite sc = (SearchComposite) fieldEditPart.getContentControl();
- final FieldAssistDisposer disposer = addSelectorFieldAssistToText(sc.getText(),
extType);
+ final FieldAssistDisposer disposer = addSelectorFieldAssistToText(sc.getText(),
extType,
+ getSmooks11ResourceListType((EObject) model));
sc.addDisposeListener(new DisposeListener() {
/*
@@ -789,8 +794,8 @@
}
if (jp != null) {
ProjectClassLoader loader = new ProjectClassLoader(jp);
- if(className.endsWith("[]")){
- className = className.substring(0,className.length() - 2);
+ if (className.endsWith("[]")) {
+ className = className.substring(0, className.length() - 2);
Class<?> clazz = loader.loadClass(className);
Object arrayInstance = Array.newInstance(clazz, 0);
clazz = arrayInstance.getClass();
@@ -1447,7 +1452,8 @@
return loadedNodes;
}
- public static FieldAssistDisposer addSelectorFieldAssistToText(Text text,
SmooksGraphicsExtType extType) {
+ public static FieldAssistDisposer addSelectorFieldAssistToText(Text text,
SmooksGraphicsExtType extType,
+ SmooksResourceListType resourceList) {
// Decorate the text widget with the light-bulb image denoting content
// assist
int bits = SWT.DOWN | SWT.LEFT;
@@ -1477,7 +1483,7 @@
char[] autoActivationChars = new char[] { '/' };
// Create the proposal provider
- SelectorContentProposalProvider proposalProvider = new
SelectorContentProposalProvider(extType);
+ SelectorContentProposalProvider proposalProvider = new
SelectorContentProposalProvider(extType, resourceList);
// Create the adapter
ContentAssistCommandAdapter adapter = new ContentAssistCommandAdapter(text,
textContentAdapter,
proposalProvider, command, autoActivationChars);
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/wizard/IStructuredDataSelectionWizard.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/wizard/IStructuredDataSelectionWizard.java 2009-07-01
08:03:17 UTC (rev 16310)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/wizard/IStructuredDataSelectionWizard.java 2009-07-01
08:15:24 UTC (rev 16311)
@@ -15,6 +15,7 @@
import org.eclipse.jface.wizard.IWizard;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorSite;
+import org.jboss.tools.smooks.configuration.editors.SmooksMultiFormEditor;
/**
* @author Dart Peng
@@ -31,5 +32,7 @@
public Properties getProperties();
public String getStructuredDataSourcePath();
+
+ public void complate(SmooksMultiFormEditor formEditor);
}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/wizard/TransformDataWizardSelectionPage.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/wizard/TransformDataWizardSelectionPage.java 2009-07-01
08:03:17 UTC (rev 16310)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/wizard/TransformDataWizardSelectionPage.java 2009-07-01
08:15:24 UTC (rev 16311)
@@ -36,6 +36,7 @@
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.jboss.tools.smooks.configuration.SmooksConfigurationActivator;
+import org.jboss.tools.smooks.configuration.editors.GraphicsConstants;
/**
* @author Dart Peng
@@ -183,6 +184,8 @@
return icon;
}
}
+ return SmooksConfigurationActivator.getDefault().getImageRegistry().get(
+ GraphicsConstants.IMAGE_UNKNOWN_OBJ);
}
return super.getImage(element);
}
@@ -225,7 +228,7 @@
}
public Object[] getElements(Object inputElement) {
- if (inputElement instanceof List) {
+ if (inputElement instanceof List<?>) {
return ((List<?>) inputElement).toArray();
}
return new Object[] {};
Added:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/xml/XMLObjectAnalyzer2.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/xml/XMLObjectAnalyzer2.java
(rev 0)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/xml/XMLObjectAnalyzer2.java 2009-07-01
08:15:24 UTC (rev 16311)
@@ -0,0 +1,137 @@
+/**
+ *
+ */
+package org.jboss.tools.smooks.configuration.editors.xml;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+import java.util.Iterator;
+import java.util.List;
+
+import org.dom4j.Attribute;
+import org.dom4j.Document;
+import org.dom4j.DocumentException;
+import org.dom4j.Element;
+import org.dom4j.io.SAXReader;
+
+/**
+ * @author Dart
+ *
+ */
+public class XMLObjectAnalyzer2 {
+ public TagList analyze(String xmlFilePath, String[] ignoreNodeNames) throws
FileNotFoundException,
+ DocumentException {
+ FileInputStream stream = new FileInputStream(xmlFilePath);
+ return this.analyze(stream, ignoreNodeNames);
+ }
+
+ public TagList analyze(InputStream stream, String[] ignoreNodeNames) throws
DocumentException {
+ SAXReader reader = new SAXReader();
+ Document doc = reader.read(stream);
+ Element rootElement = doc.getRootElement();
+ TagList dco = new TagList();
+ dco.setName("Docuement");
+ dco.addRootTag(parseElement(rootElement, null, ignoreNodeNames));
+ return dco;
+ }
+
+ public TagObject analyzeFregment(InputStream stream, String[] ignoreNodeNames) throws
DocumentException {
+ SAXReader reader = new SAXReader();
+ Document doc = reader.read(stream);
+ Element rootElement = doc.getRootElement();
+ return parseElement(rootElement, null, ignoreNodeNames);
+ }
+
+ protected TagObject getChildTagByName(String name, TagObject tag, String[]
ignoreNodeNames) {
+ if (isIgnoreNode(name, ignoreNodeNames))
+ return null;
+ if (tag == null)
+ return null;
+ List<?> list = tag.getXMLNodeChildren();
+ for (Iterator<?> iterator = list.iterator(); iterator.hasNext();) {
+ TagObject tagc = (TagObject) iterator.next();
+ if (tagc.getName().equals(name))
+ return tagc;
+ }
+ return null;
+ }
+
+ private boolean isIgnoreNode(Element element, String[] ignoreNodeNames) {
+ return isIgnoreNode(element.getName(), ignoreNodeNames);
+ }
+
+ // private boolean isIgnoreNode(TagObject element , String[]
+ // ignoreNodeNames){
+ // return isIgnoreNode(element.getName(), ignoreNodeNames);
+ // }
+
+ private boolean isIgnoreNode(String name, String[] ignoreNodeNames) {
+ if (ignoreNodeNames == null)
+ return false;
+ for (int i = 0; i < ignoreNodeNames.length; i++) {
+ String ignore = ignoreNodeNames[i];
+ if (ignore.trim().equalsIgnoreCase(name))
+ return true;
+ }
+ return false;
+ }
+
+ protected TagObject parseElement(Element element, TagObject parentTag, String[]
ignoreNodeNames) {
+
+ if (isIgnoreNode(element, ignoreNodeNames))
+ return null;
+ boolean canAdd = false;
+ TagObject tag = getChildTagByName(element.getName(), parentTag, ignoreNodeNames);
+ if (tag == null) {
+ tag = new TagObject();
+ canAdd = true;
+ }
+ tag.setReferenceElement(element);
+ tag.setName(element.getName());
+ fillProperties(element, tag, ignoreNodeNames);
+ tag.setNamespaceURL(element.getNamespaceURI());
+ List<?> list = element.elements();
+ for (Iterator<?> iterator = list.iterator(); iterator.hasNext();) {
+ Element childElement = (Element) iterator.next();
+ TagObject t = parseElement(childElement, tag, ignoreNodeNames);
+ if (t != null) {
+ t.setReferenceElement(childElement);
+ tag.addChildTag(t);
+ }
+ }
+ if (canAdd)
+ return tag;
+ else
+ return null;
+ }
+
+ protected boolean hasSameNameProperty(String proName, TagObject tag) {
+ List<TagPropertyObject> pros = tag.getProperties();
+ for (Iterator<TagPropertyObject> iterator = pros.iterator(); iterator.hasNext();)
{
+ TagPropertyObject tp = (TagPropertyObject) iterator.next();
+ if (tp.getName().equals(proName))
+ return true;
+ }
+ return false;
+ }
+
+ protected void fillProperties(Element element, TagObject tag, String[] ignoreNodeNames)
{
+ Iterator<?> it = element.attributeIterator();
+ for (Iterator<?> iterator = it; iterator.hasNext();) {
+ Attribute attr = (Attribute) iterator.next();
+ String attrName = attr.getName();
+ String value = attr.getValue();
+ if (isIgnoreNode(attrName, ignoreNodeNames))
+ continue;
+ if (hasSameNameProperty(attrName, tag)) {
+ continue;
+ }
+ TagPropertyObject pro = new TagPropertyObject();
+ pro.setName(attr.getName());
+ pro.setValue(value);
+ pro.setNamespaceURL(attr.getNamespaceURI());
+ tag.addProperty(pro);
+ }
+ }
+}
Property changes on:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/xml/XMLObjectAnalyzer2.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/xml/XMLStructuredDataWizard.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/xml/XMLStructuredDataWizard.java 2009-07-01
08:03:17 UTC (rev 16310)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/xml/XMLStructuredDataWizard.java 2009-07-01
08:15:24 UTC (rev 16311)
@@ -12,6 +12,7 @@
import java.util.Properties;
+import org.jboss.tools.smooks.configuration.editors.SmooksMultiFormEditor;
import org.jboss.tools.smooks10.model.smooks.util.SmooksModelUtils;
/**
@@ -49,4 +50,9 @@
public Properties getProperties() {
return properties;
}
+
+ public void complate(SmooksMultiFormEditor formEditor) {
+ // TODO Auto-generated method stub
+
+ }
}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/xml/XSDStructuredDataWizard.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/xml/XSDStructuredDataWizard.java 2009-07-01
08:03:17 UTC (rev 16310)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/xml/XSDStructuredDataWizard.java 2009-07-01
08:15:24 UTC (rev 16311)
@@ -12,6 +12,7 @@
import java.util.Properties;
+import org.jboss.tools.smooks.configuration.editors.SmooksMultiFormEditor;
import org.jboss.tools.smooks10.model.smooks.util.SmooksModelUtils;
/**
@@ -46,4 +47,9 @@
return pro;
}
+ public void complate(SmooksMultiFormEditor formEditor) {
+ // TODO Auto-generated method stub
+
+ }
+
}
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-07-01
08:03:17 UTC (rev 16310)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/validate/SelectorValidator.java 2009-07-01
08:15:24 UTC (rev 16311)
@@ -80,8 +80,9 @@
return super.validate(selectedObjects, editingDomain);
}
Object obj = resource.getContents().get(0);
+ SmooksResourceListType listType = null;
if (obj instanceof DocumentRoot) {
- SmooksResourceListType listType = ((DocumentRoot) obj).getSmooksResourceList();
+ listType = ((DocumentRoot) obj).getSmooksResourceList();
IResource r = SmooksUIUtils.getResource(listType);
IFile file = null;
if (r instanceof IFile) {
@@ -98,7 +99,7 @@
}
}
if (extType != null) {
- List<Object> l = SelectoreSelectionDialog.generateInputData(extType);
+ List<Object> l = SelectoreSelectionDialog.generateInputData(extType, listType);
if (l != null) {
list.addAll(l);
}