Author: DartPeng
Date: 2008-09-18 01:50:15 -0400 (Thu, 18 Sep 2008)
New Revision: 10342
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.javabean/src/org/jboss/tools/smooks/javabean/ui/JavaBeanModelLoadComposite.java
trunk/smooks/plugins/org.jboss.tools.smooks.model/src/org/jboss/tools/smooks/model/util/SmooksModelUtils.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/analyzer/NormalSmooksModelBuilder.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/AbstractSmooksModelDetailPage.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/BeanPopulatorDetailPage.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/DateTypeDetailPage.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/SmooksFormEditor.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/SmooksGraphicalFormPage.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/SmooksResourceConfigFormBlock.java
Log:
add new functions for editing smooks configuration file
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.javabean/src/org/jboss/tools/smooks/javabean/ui/JavaBeanModelLoadComposite.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.javabean/src/org/jboss/tools/smooks/javabean/ui/JavaBeanModelLoadComposite.java 2008-09-17
20:14:53 UTC (rev 10341)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.javabean/src/org/jboss/tools/smooks/javabean/ui/JavaBeanModelLoadComposite.java 2008-09-18
05:50:15 UTC (rev 10342)
@@ -117,17 +117,9 @@
gd.grabExcessHorizontalSpace = true;
classText.setLayoutData(gd);
classText.addModifyListener(new ModifyListener() {
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.swt.events.ModifyListener#modifyText(org.eclipse
- * .swt.events.ModifyEvent)
- */
public void modifyText(ModifyEvent arg0) {
classFullName = classText.getText();
}
-
});
classBrowseButton = new Button(classTextContainer, SWT.NONE);
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.model/src/org/jboss/tools/smooks/model/util/SmooksModelUtils.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.model/src/org/jboss/tools/smooks/model/util/SmooksModelUtils.java 2008-09-17
20:14:53 UTC (rev 10341)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.model/src/org/jboss/tools/smooks/model/util/SmooksModelUtils.java 2008-09-18
05:50:15 UTC (rev 10342)
@@ -71,10 +71,10 @@
XMLTypePackage.Literals.XML_TYPE_DOCUMENT_ROOT__TEXT,
true);
if (value != null) {
- if (value instanceof List) {
+ if (value instanceof List && !((List)value).isEmpty()) {
return ((List) value).get(0).toString().trim();
}
- return value.toString();
+// return value.toString();
}
return null;
}
@@ -104,4 +104,17 @@
smooksModel.getMixed().add(
XMLTypePackage.Literals.XML_TYPE_DOCUMENT_ROOT__TEXT, text);
}
+
+ public static void setTextToSmooksType(AnyType smooksModel, String text){
+ cleanTextToSmooksType(smooksModel);
+ appendTextToSmooksType(smooksModel,text);
+ }
+
+ public static void cleanTextToSmooksType(AnyType smooksModel) {
+ Object obj = smooksModel.getMixed().get(
+ XMLTypePackage.Literals.XML_TYPE_DOCUMENT_ROOT__TEXT,true);
+ if(obj instanceof List){
+ ((List)obj).clear();
+ }
+ }
}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/analyzer/NormalSmooksModelBuilder.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/analyzer/NormalSmooksModelBuilder.java 2008-09-17
20:14:53 UTC (rev 10341)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/analyzer/NormalSmooksModelBuilder.java 2008-09-18
05:50:15 UTC (rev 10342)
@@ -58,7 +58,7 @@
}
}
- protected boolean isSmooksTransformType(ResourceConfigType config) {
+ public static boolean isSmooksTransformType(ResourceConfigType config) {
if (config == null)
return false;
String selector = config.getSelector();
@@ -68,7 +68,7 @@
return false;
}
- protected boolean isDateConfig(ResourceConfigType config) {
+ public static boolean isDateConfig(ResourceConfigType config) {
if (config == null)
return false;
ResourceType resource = config.getResource();
@@ -80,7 +80,7 @@
return false;
}
- protected boolean isBeanPopulator(ResourceConfigType config) {
+ public static boolean isBeanPopulator(ResourceConfigType config) {
if (config == null)
return false;
ResourceType resource = config.getResource();
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/AbstractSmooksModelDetailPage.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/AbstractSmooksModelDetailPage.java 2008-09-17
20:14:53 UTC (rev 10341)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/AbstractSmooksModelDetailPage.java 2008-09-18
05:50:15 UTC (rev 10342)
@@ -31,12 +31,16 @@
IFormPart formPart;
ISelection selection;
+
+ protected boolean canFireChange = false;;
FormToolkit formToolKit = null;
protected ResourceConfigType oldResourceConfigList;
protected ResourceConfigType resourceConfigList;
+
+ protected IManagedForm managedForm ;
EditingDomain domain;
SmooksFormEditor parentEditor;
@@ -93,6 +97,7 @@
* @see org.eclipse.ui.forms.IFormPart#initialize(org.eclipse.ui.forms.IManagedForm)
*/
public void initialize(IManagedForm form) {
+ this.managedForm = form;
if (form != null) {
formToolKit = form.getToolkit();
}
@@ -126,9 +131,13 @@
* @see org.eclipse.ui.forms.IFormPart#refresh()
*/
public void refresh() {
-
+ canFireChange = false;
+ initSectionUI();
+ canFireChange = true;
}
+ abstract protected void initSectionUI() ;
+
/*
* (non-Javadoc)
*
@@ -209,4 +218,12 @@
this.domain = domain;
}
+ public boolean isCanFireChange() {
+ return canFireChange;
+ }
+
+ public void setCanFireChange(boolean canFireChange) {
+ this.canFireChange = canFireChange;
+ }
+
}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/BeanPopulatorDetailPage.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/BeanPopulatorDetailPage.java 2008-09-17
20:14:53 UTC (rev 10341)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/BeanPopulatorDetailPage.java 2008-09-18
05:50:15 UTC (rev 10342)
@@ -10,9 +10,23 @@
******************************************************************************/
package org.jboss.tools.smooks.ui.editors;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.core.resources.IFile;
import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.edit.command.AddCommand;
import org.eclipse.emf.edit.command.SetCommand;
import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.core.search.IJavaSearchScope;
+import org.eclipse.jdt.internal.corext.util.JavaModelUtil;
+import org.eclipse.jdt.internal.ui.search.JavaSearchScopeFactory;
+import org.eclipse.jdt.ui.IJavaElementSearchConstants;
+import org.eclipse.jdt.ui.JavaUI;
+import org.eclipse.jface.window.Window;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
@@ -23,8 +37,15 @@
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.dialogs.SelectionDialog;
+import org.jboss.tools.smooks.model.ParamType;
+import org.jboss.tools.smooks.model.SmooksFactory;
import org.jboss.tools.smooks.model.SmooksPackage;
+import org.jboss.tools.smooks.model.util.SmooksModelConstants;
import org.jboss.tools.smooks.model.util.SmooksModelUtils;
+import org.jboss.tools.smooks.ui.SmooksUIActivator;
/**
* @author Dart Peng<br>
@@ -108,7 +129,40 @@
}
protected void clazzBrowseButtonSelected() {
+ IFileEditorInput input = (IFileEditorInput) this.parentEditor
+ .getEditorInput();
+ IJavaProject javaProject = null;
+ if (input != null) {
+ IFile file = input.getFile();
+ javaProject = JavaCore.create(file.getProject());
+ }
+ if (javaProject == null)
+ return;
+ IJavaSearchScope scope = JavaSearchScopeFactory.getInstance()
+ .createJavaProjectSearchScope(javaProject, true);
+ SelectionDialog dialog;
+ try {
+ IWorkbenchWindow runnableContext = SmooksUIActivator.getDefault()
+ .getWorkbench().getActiveWorkbenchWindow();
+ dialog = JavaUI.createTypeDialog(this.parentEditor.getSite()
+ .getShell(), runnableContext, scope,
+ IJavaElementSearchConstants.CONSIDER_CLASSES, false);
+ dialog.setMessage("Source Java Bean:");
+ dialog.setTitle("Search java bean");
+ if (dialog.open() == Window.OK) {
+ Object[] results = dialog.getResult();
+ if (results.length > 0) {
+ Object result = results[0];
+ String packageFullName = JavaModelUtil
+ .getTypeContainerName((IType) result);
+ beanClassText.setText(packageFullName + "."
+ + ((IType) result).getElementName());
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
}
@Override
@@ -116,11 +170,6 @@
return true;
}
- @Override
- public void refresh() {
- configControls();
- }
-
private void hookContorls() {
selectorText.addModifyListener(new ModifyListener() {
@@ -160,7 +209,6 @@
}
private void configControls() {
-
if (resourceConfigList != null) {
String selector = "";
selector = resourceConfigList.getSelector();
@@ -180,27 +228,77 @@
beanClassText.setText(beanClass);
beanIDText.setText(beanId);
}
-
}
protected void beanIDChanged() {
-
+ if (!isCanFireChange())
+ return;
+ String beanIdStr = beanIDText.getText();
+ if (beanIdStr == null)
+ return;
+ List paramList = resourceConfigList.getParam();
+ ParamType beanId = null;
+ for (Iterator iterator = paramList.iterator(); iterator.hasNext();) {
+ ParamType param = (ParamType) iterator.next();
+ String name = param.getName();
+ if (SmooksModelConstants.BEAN_ID.equals(name)) {
+ beanId = param;
+ break;
+ }
+ }
+ if (beanId == null) {
+ beanId = SmooksFactory.eINSTANCE.createParamType();
+ beanId.setName(SmooksModelConstants.BEAN_ID);
+ AddCommand.create(domain, resourceConfigList,
+ SmooksPackage.eINSTANCE.getResourceConfigType_Param(),
+ beanId).execute();
+ }
+ SmooksModelUtils.setTextToSmooksType(beanId, beanIdStr);
+ this.parentEditor.fireEditorDirty(true);
}
protected void beanClassChanged() {
-
+ if (!isCanFireChange())
+ return;
+ String beanClassStr = beanClassText.getText();
+ if (beanClassStr == null)
+ return;
+ List paramList = resourceConfigList.getParam();
+ ParamType beanClass = null;
+ for (Iterator iterator = paramList.iterator(); iterator.hasNext();) {
+ ParamType param = (ParamType) iterator.next();
+ String name = param.getName();
+ if (SmooksModelConstants.BEAN_CLASS.equals(name)) {
+ beanClass = param;
+ break;
+ }
+ }
+ if (beanClass == null) {
+ beanClass = SmooksFactory.eINSTANCE.createParamType();
+ beanClass.setName(SmooksModelConstants.BEAN_CLASS);
+ AddCommand.create(domain, resourceConfigList,
+ SmooksPackage.eINSTANCE.getResourceConfigType_Param(),
+ beanClass).execute();
+ }
+ SmooksModelUtils.setTextToSmooksType(beanClass, beanClassStr);
+ this.parentEditor.fireEditorDirty(true);
}
protected void selectorChanged() {
+ if (!isCanFireChange())
+ return;
String selector = selectorText.getText();
if (selector != null) {
- Command command = SetCommand.create(this.getDomain(), resourceConfigList,
- SmooksPackage.eINSTANCE.getResourceConfigType_Selector(),
- selector);
+ Command command = SetCommand.create(this.getDomain(),
+ resourceConfigList, SmooksPackage.eINSTANCE
+ .getResourceConfigType_Selector(), selector);
getDomain().getCommandStack().execute(command);
}
- // resourceConfigList.getResource()
- // this.getDomain().
}
+ @Override
+ protected void initSectionUI() {
+ configControls();
+ }
+
}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/DateTypeDetailPage.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/DateTypeDetailPage.java 2008-09-17
20:14:53 UTC (rev 10341)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/DateTypeDetailPage.java 2008-09-18
05:50:15 UTC (rev 10342)
@@ -41,23 +41,6 @@
}
@Override
- public void refresh() {
- if(this.resourceConfigList != null){
- String formate = SmooksModelUtils.getParmaText("format",
resourceConfigList);
- String locallang = SmooksModelUtils.getParmaText("Locale-Language",
resourceConfigList);
- String localcontry = SmooksModelUtils.getParmaText("Locale-Contry",
resourceConfigList);
- if(formate == null) formate = "";
- if(locallang == null) locallang = "";
- if(localcontry == null) localcontry = "";
-
-
- formatText.setText(formate);
- localeContryCombo.setText(localcontry);
- localeLangaugeCombo.setText(locallang);
- }
- }
-
- @Override
protected void createSectionContents(Composite parent) {
GridLayout layout = new GridLayout();
layout.numColumns = 2;
@@ -80,4 +63,21 @@
formToolKit.paintBordersFor(parent);
}
+ @Override
+ protected void initSectionUI() {
+ if(this.resourceConfigList != null){
+ String formate = SmooksModelUtils.getParmaText("format",
resourceConfigList);
+ String locallang = SmooksModelUtils.getParmaText("Locale-Language",
resourceConfigList);
+ String localcontry = SmooksModelUtils.getParmaText("Locale-Contry",
resourceConfigList);
+ if(formate == null) formate = "";
+ if(locallang == null) locallang = "";
+ if(localcontry == null) localcontry = "";
+
+
+ formatText.setText(formate);
+ localeContryCombo.setText(localcontry);
+ localeLangaugeCombo.setText(locallang);
+ }
+ }
+
}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/SmooksFormEditor.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/SmooksFormEditor.java 2008-09-17
20:14:53 UTC (rev 10341)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/SmooksFormEditor.java 2008-09-18
05:50:15 UTC (rev 10342)
@@ -51,6 +51,8 @@
private ComposedAdapterFactory adapterFactory;
private AdapterFactoryEditingDomain editingDomain;
private Resource smooksResource;
+
+ private boolean forceDirty = false;
public SmooksFormEditor() {
super();
@@ -67,8 +69,15 @@
protected CommandStack createCommandStack() {
return new BasicCommandStack();
}
+
+
@Override
+ public boolean isDirty() {
+ return forceDirty || super.isDirty();
+ }
+
+ @Override
protected void addPages() {
graphicalPage = new SmooksGraphicalFormPage(this, "graph",
"Mapping");
try {
@@ -130,7 +139,13 @@
@Override
public void doSave(IProgressMonitor monitor) {
graphicalPage.doSave(monitor);
+ fireEditorDirty(false);
}
+
+ public void fireEditorDirty(boolean dirty){
+ this.forceDirty = dirty;
+ this.firePropertyChange(PROP_DIRTY);
+ }
@Override
public void doSaveAs() {
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/SmooksGraphicalFormPage.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/SmooksGraphicalFormPage.java 2008-09-17
20:14:53 UTC (rev 10341)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/SmooksGraphicalFormPage.java 2008-09-18
05:50:15 UTC (rev 10342)
@@ -1136,8 +1136,12 @@
* @return the editingDomain
*/
protected AdapterFactoryEditingDomain getEditingDomain() {
- FormEditor parentEditor = this.getEditor();
- editingDomain = ((SmooksFormEditor) parentEditor).getEditingDomain();
+ if (editingDomain == null) {
+ FormEditor parentEditor = this.getEditor();
+ editingDomain = ((SmooksFormEditor) parentEditor)
+ .getEditingDomain();
+ editingDomain.getCommandStack().addCommandStackListener(this);
+ }
return editingDomain;
}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/SmooksResourceConfigFormBlock.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/SmooksResourceConfigFormBlock.java 2008-09-17
20:14:53 UTC (rev 10341)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/SmooksResourceConfigFormBlock.java 2008-09-18
05:50:15 UTC (rev 10342)
@@ -16,6 +16,7 @@
import org.eclipse.emf.edit.domain.EditingDomain;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.TreeViewer;
@@ -31,9 +32,11 @@
import org.eclipse.ui.forms.SectionPart;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.Section;
+import org.jboss.tools.smooks.analyzer.NormalSmooksModelBuilder;
import org.jboss.tools.smooks.analyzer.NormalSmooksModelPackage;
import org.jboss.tools.smooks.model.ResourceConfigType;
import org.jboss.tools.smooks.model.impl.ResourceConfigTypeImpl;
+import org.jboss.tools.smooks.model.util.SmooksModelUtils;
import org.jboss.tools.smooks.ui.BeanPopulatorWarrper;
import org.jboss.tools.smooks.ui.DateTypeWarrper;
import org.jboss.tools.smooks.ui.ResourceConfigWarrper;
@@ -107,12 +110,33 @@
protected void registerPages(DetailsPart detailsPart) {
detailsPart.registerPage(BeanPopulatorWarrper.class,
new BeanPopulatorDetailPage(getParentEditor(), getDomain()));
- detailsPart.registerPage(DateTypeWarrper.class,
- new DateTypeDetailPage(getParentEditor(), getDomain()));
+ detailsPart.registerPage(DateTypeWarrper.class, new DateTypeDetailPage(
+ getParentEditor(), getDomain()));
}
protected void configDateTypeViewer() {
dateTypeViewer.setContentProvider(new DateTypeContentProvider());
+ dateTypeViewer.setLabelProvider(new LabelProvider() {
+
+ public String getText(Object element) {
+ if (element instanceof ResourceConfigType) {
+ if(NormalSmooksModelBuilder
+ .isBeanPopulator((ResourceConfigType) element)){
+ String selector = ((ResourceConfigType) element).getSelector();
+ if(selector == null) selector = "<NULL>";
+ return "BeanPopulator : " + selector;
+ }
+ }
+ if (element instanceof ResourceConfigType) {
+ if(NormalSmooksModelBuilder
+ .isDateConfig((ResourceConfigType) element)){
+ return "Date Type : ";
+ }
+ }
+ return super.getText(element);
+ }
+
+ });
}
public void initViewers() {
@@ -200,7 +224,7 @@
.createResourceConfigWarrper((ResourceConfigType) obj);
if (warrper != null) {
selection = new StructuredSelection(warrper);
- managedForm.fireSelectionChanged(sectionPart,selection);
+ managedForm.fireSelectionChanged(sectionPart, selection);
return;
}
}