Author: DartPeng
Date: 2008-08-19 06:57:04 -0400 (Tue, 19 Aug 2008)
New Revision: 9793
Modified:
workspace/dart/plugins/org.jboss.tools.smooks.javabean/plugin.xml
workspace/dart/plugins/org.jboss.tools.smooks.javabean/src/org/jboss/tools/smooks/javabean/analyzer/JavaBeanAnalyzer.java
workspace/dart/plugins/org.jboss.tools.smooks.javabean/src/org/jboss/tools/smooks/javabean/model/JavaBeanModel.java
workspace/dart/plugins/org.jboss.tools.smooks.javabean/src/org/jboss/tools/smooks/javabean/ui/JavaBeanModelLoadComposite.java
workspace/dart/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/analyzer/AnalyzerFactory.java
workspace/dart/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/SmooksFormEditor.java
workspace/dart/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/SmooksGraphViewerContextMenuProvider.java
workspace/dart/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/SmooksGraphicalFormPage.java
workspace/dart/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/editparts/RootModelEditPart.java
workspace/dart/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/model/TreeItemRelationModel.java
workspace/dart/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/utils/UIUtils.java
Log:
Change some java file contents or thire location
Modified: workspace/dart/plugins/org.jboss.tools.smooks.javabean/plugin.xml
===================================================================
--- workspace/dart/plugins/org.jboss.tools.smooks.javabean/plugin.xml 2008-08-19 10:54:54
UTC (rev 9792)
+++ workspace/dart/plugins/org.jboss.tools.smooks.javabean/plugin.xml 2008-08-19 10:57:04
UTC (rev 9793)
@@ -11,4 +11,16 @@
typeID="org.jboss.tools.smooks.ui.viewerInitor.javabean">
</viewerInitor>
</extension>
+ <extension
+ point="org.jboss.tools.smooks.ui.analyzer">
+ <analyzer
+ class="org.jboss.tools.smooks.javabean.analyzer.JavaBeanAnalyzer"
+ name="JavaBean Analyzer"
+ typeID="org.jboss.tools.smooks.ui.viewerInitor.javabean">
+ <targetSourceType
+ id="org.jboss.tools.smooks.ui.viewerInitor.javabean"
+ name="java2java">
+ </targetSourceType>
+ </analyzer>
+ </extension>
</plugin>
Modified:
workspace/dart/plugins/org.jboss.tools.smooks.javabean/src/org/jboss/tools/smooks/javabean/analyzer/JavaBeanAnalyzer.java
===================================================================
---
workspace/dart/plugins/org.jboss.tools.smooks.javabean/src/org/jboss/tools/smooks/javabean/analyzer/JavaBeanAnalyzer.java 2008-08-19
10:54:54 UTC (rev 9792)
+++
workspace/dart/plugins/org.jboss.tools.smooks.javabean/src/org/jboss/tools/smooks/javabean/analyzer/JavaBeanAnalyzer.java 2008-08-19
10:57:04 UTC (rev 9793)
@@ -10,7 +10,6 @@
******************************************************************************/
package org.jboss.tools.smooks.javabean.analyzer;
-import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
@@ -32,8 +31,9 @@
import org.jboss.tools.smooks.ui.gef.model.GraphRootModel;
import org.jboss.tools.smooks.ui.gef.model.IConnectableModel;
import org.jboss.tools.smooks.ui.gef.model.LineConnectionModel;
-import org.jboss.tools.smooks.ui.gef.model.StructuredDataModel;
+import org.jboss.tools.smooks.ui.gef.model.TreeItemRelationModel;
import org.jboss.tools.smooks.ui.modelparser.SmooksConfigurationFileGenerateContext;
+import org.jboss.tools.smooks.utils.UIUtils;
import org.milyn.xsd.smooks.ParamType;
import org.milyn.xsd.smooks.ResourceConfigType;
import org.milyn.xsd.smooks.ResourceType;
@@ -83,7 +83,7 @@
List children = root.getChildren();
for (Iterator iterator = children.iterator(); iterator.hasNext();) {
- StructuredDataModel dataModel = (StructuredDataModel) iterator
+ TreeItemRelationModel dataModel = (TreeItemRelationModel) iterator
.next();
List targetConnections = dataModel.getModelTargetConnections();
if (targetConnections != null && !targetConnections.isEmpty()) {
@@ -190,13 +190,18 @@
bindingsParam.setName("bindings");
resourceConfig.getParam().add(bindingsParam);
// to dispatch the target's children (Order processing)
- List children = ((AbstractStructuredDataModel) dataModel)
- .getChildren();
+
+ List children = targetJavaBean.getProperties();
for (Iterator iterator2 = children.iterator(); iterator2
.hasNext();) {
- AbstractStructuredDataModel child = (AbstractStructuredDataModel) iterator2
+ JavaBeanModel childJavaBean = (JavaBeanModel) iterator2
.next();
-
+ AbstractStructuredDataModel child = UIUtils
+ .findGraphModel(
+ (AbstractStructuredDataModel) root,
+ childJavaBean);
+ if (child == null)
+ continue;
if (child instanceof IConnectableModel) {
if (((IConnectableModel) child)
.getModelTargetConnections().isEmpty())
@@ -247,7 +252,7 @@
.getReferenceEntityModel();
JavaBeanModel currentbean = (JavaBeanModel) target
.getReferenceEntityModel();
- if (currentRootModel.getChildren().indexOf(source) != -1) {
+ if (sourcebean.getParent() == currentRootModel.getReferenceEntityModel()) {
if (!currentbean.isPrimitive()) {
return "${" + currentbean.getName() + "}";
} else {
@@ -255,13 +260,17 @@
+ sourcebean.getName();
}
} else {
- AbstractStructuredDataModel parent = source.getParent();
+ JavaBeanModel jbParent =
((JavaBeanModel)source.getReferenceEntityModel()).getParent();
+ AbstractStructuredDataModel parent =
UIUtils.findGraphModel(currentRootModel.getParent(), jbParent);
String returnString = sourcebean.getName();
while (parent != currentRootModel && parent != null) {
- returnString = ((JavaBeanModel) parent
- .getReferenceEntityModel()).getName()
- + " " + returnString;
- parent = parent.getParent();
+ JavaBeanModel jbm = (JavaBeanModel) parent
+ .getReferenceEntityModel();
+ if (jbm != null)
+ returnString = jbm.getName() + " " + returnString;
+
+ JavaBeanModel jb = ((JavaBeanModel)parent.getReferenceEntityModel()).getParent();
+ parent = UIUtils.findGraphModel(currentRootModel.getParent(), jb);
}
// if no property
if (returnString.equals(sourcebean.getName())) {
Modified:
workspace/dart/plugins/org.jboss.tools.smooks.javabean/src/org/jboss/tools/smooks/javabean/model/JavaBeanModel.java
===================================================================
---
workspace/dart/plugins/org.jboss.tools.smooks.javabean/src/org/jboss/tools/smooks/javabean/model/JavaBeanModel.java 2008-08-19
10:54:54 UTC (rev 9792)
+++
workspace/dart/plugins/org.jboss.tools.smooks.javabean/src/org/jboss/tools/smooks/javabean/model/JavaBeanModel.java 2008-08-19
10:57:04 UTC (rev 9793)
@@ -37,6 +37,8 @@
private boolean isPrimitive = false;
private Class<? extends Object> beanClass = null;
+
+ private JavaBeanModel parent = null;
public Class getBeanClass() {
return beanClass;
@@ -219,8 +221,11 @@
this.name = name;
}
- public void addProperty(Object property) {
- getProperties().add(property);
+ public void addProperty(JavaBeanModel property) {
+ if(properties != null){
+ properties.add(property);
+ property.setParent(this);
+ }
}
private List properties;
@@ -237,7 +242,7 @@
null, beanClass, this.lazyLoadProperties);
beanType = componentClass;
- properties.add(proxyModel);
+ addProperty(proxyModel);
return properties;
}
@@ -252,7 +257,7 @@
continue;
JavaBeanModel jbm = new JavaBeanModel(pd.getPropertyType(), pd
.getName(), pd, beanClass, this.lazyLoadProperties);
- properties.add(jbm);
+ addProperty(jbm);
}
}
return properties;
@@ -266,4 +271,18 @@
return properties != null;
}
+ /**
+ * @return the parent
+ */
+ public JavaBeanModel getParent() {
+ return parent;
+ }
+
+ /**
+ * @param parent the parent to set
+ */
+ public void setParent(JavaBeanModel parent) {
+ this.parent = parent;
+ }
+
}
Modified:
workspace/dart/plugins/org.jboss.tools.smooks.javabean/src/org/jboss/tools/smooks/javabean/ui/JavaBeanModelLoadComposite.java
===================================================================
---
workspace/dart/plugins/org.jboss.tools.smooks.javabean/src/org/jboss/tools/smooks/javabean/ui/JavaBeanModelLoadComposite.java 2008-08-19
10:54:54 UTC (rev 9792)
+++
workspace/dart/plugins/org.jboss.tools.smooks.javabean/src/org/jboss/tools/smooks/javabean/ui/JavaBeanModelLoadComposite.java 2008-08-19
10:57:04 UTC (rev 9793)
@@ -26,16 +26,15 @@
import org.eclipse.jdt.ui.JavaUI;
import org.eclipse.jface.operation.IRunnableContext;
import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.viewers.CheckStateChangedEvent;
import org.eclipse.jface.viewers.CheckboxTreeViewer;
-import org.eclipse.jface.viewers.ICheckStateListener;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.events.TreeEvent;
+import org.eclipse.swt.events.TreeListener;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
@@ -44,6 +43,7 @@
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
+import org.eclipse.swt.widgets.TreeItem;
import org.eclipse.ui.dialogs.SelectionDialog;
import org.jboss.tools.smooks.javabean.model.BeanContentProvider;
import org.jboss.tools.smooks.javabean.model.BeanlabelProvider;
@@ -131,9 +131,8 @@
/*
* (non-Javadoc)
*
- * @see
- * org.eclipse.swt.events.ModifyListener#modifyText(org.eclipse
- * .swt.events.ModifyEvent)
+ * @see org.eclipse.swt.events.ModifyListener#modifyText(org.eclipse
+ * .swt.events.ModifyEvent)
*/
public void modifyText(ModifyEvent arg0) {
classFullName = classText.getText();
@@ -148,66 +147,83 @@
classBrowseButton.setText("Browse...");
}
-// final Button atomicLoadButton = new Button(com, SWT.RADIO);
-//
-// atomicLoadButton.setText("Atomicly load");
-// atomicLoadButton.setSelection(true);
-//
-// Button loadButton = new Button(com, SWT.RADIO);
-// loadButton.setText("Load by hand");
-//
-// final Button loadClassButton = new Button(com, SWT.NONE);
-// loadClassButton.setText("Load Class");
-// loadClassButton.addSelectionListener(new SelectionAdapter() {
-//
-// /*
-// * (non-Javadoc)
-// *
-// * @see
-// * org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse
-// * .swt.events.SelectionEvent)
-// */
-// @Override
-// public void widgetSelected(SelectionEvent e) {
-// super.widgetSelected(e);
-// if (!loadAtomic)
-// loadModelPropertiesAndRefreshViewer(runnableContext);
-// }
-// });
-// loadClassButton.setEnabled(false);
-//
-// SelectionAdapter radioButtonSelectionAdp = new SelectionAdapter() {
-// /*
-// * (non-Javadoc)
-// *
-// * @see
-// * org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse
-// * .swt.events.SelectionEvent)
-// */
-// @Override
-// public void widgetSelected(SelectionEvent e) {
-// super.widgetSelected(e);
-// loadAtomic = atomicLoadButton.getSelection();
-// loadClassButton.setEnabled(!loadAtomic);
-// }
-//
-// };
-// atomicLoadButton.addSelectionListener(radioButtonSelectionAdp);
-// loadButton.addSelectionListener(radioButtonSelectionAdp);
+ // final Button atomicLoadButton = new Button(com, SWT.RADIO);
+ //
+ // atomicLoadButton.setText("Atomicly load");
+ // atomicLoadButton.setSelection(true);
+ //
+ // Button loadButton = new Button(com, SWT.RADIO);
+ // loadButton.setText("Load by hand");
+ //
+ // final Button loadClassButton = new Button(com, SWT.NONE);
+ // loadClassButton.setText("Load Class");
+ // loadClassButton.addSelectionListener(new SelectionAdapter() {
+ //
+ // /*
+ // * (non-Javadoc)
+ // *
+ // * @see
+ // * org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse
+ // * .swt.events.SelectionEvent)
+ // */
+ // @Override
+ // public void widgetSelected(SelectionEvent e) {
+ // super.widgetSelected(e);
+ // if (!loadAtomic)
+ // loadModelPropertiesAndRefreshViewer(runnableContext);
+ // }
+ // });
+ // loadClassButton.setEnabled(false);
+ //
+ // SelectionAdapter radioButtonSelectionAdp = new SelectionAdapter() {
+ // /*
+ // * (non-Javadoc)
+ // *
+ // * @see
+ // * org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse
+ // * .swt.events.SelectionEvent)
+ // */
+ // @Override
+ // public void widgetSelected(SelectionEvent e) {
+ // super.widgetSelected(e);
+ // loadAtomic = atomicLoadButton.getSelection();
+ // loadClassButton.setEnabled(!loadAtomic);
+ // }
+ //
+ // };
+ // atomicLoadButton.addSelectionListener(radioButtonSelectionAdp);
+ // loadButton.addSelectionListener(radioButtonSelectionAdp);
Label spliter = new Label(com, SWT.SEPARATOR | SWT.HORIZONTAL);
spliter.setVisible(false);
treeViewer = new CheckboxTreeViewer(com, SWT.BORDER);
treeViewer.setContentProvider(new BeanContentProvider());
treeViewer.setLabelProvider(new BeanlabelProvider());
- treeViewer.addCheckStateListener(new ICheckStateListener(){
+ treeViewer.getTree().addTreeListener(new TreeListener(){
+
/* (non-Javadoc)
- * @see
org.eclipse.jface.viewers.ICheckStateListener#checkStateChanged(org.eclipse.jface.viewers.CheckStateChangedEvent)
+ * @see
org.eclipse.swt.events.TreeListener#treeCollapsed(org.eclipse.swt.events.TreeEvent)
*/
@Override
- public void checkStateChanged(CheckStateChangedEvent event) {
- recordModel();
+ public void treeCollapsed(TreeEvent e) {
+
}
+
+ /* (non-Javadoc)
+ * @see
org.eclipse.swt.events.TreeListener#treeExpanded(org.eclipse.swt.events.TreeEvent)
+ */
+ @Override
+ public void treeExpanded(TreeEvent e) {
+ TreeItem item = (TreeItem)e.item;
+ if(item.getChecked()){
+ TreeItem[] items = item.getItems();
+ for (int i = 0; i < items.length; i++) {
+ TreeItem ci = items[i];
+ ci.setChecked(true);
+ }
+ }
+ }
+
});
gd = new GridData(GridData.FILL_BOTH);
gd.horizontalSpan = 2;
@@ -216,10 +232,10 @@
treeViewer.getTree().setLayoutData(gd);
return com;
}
-
- protected void recordModel(){
-// this.currentRootJavaBeanModel.setProperties(null);
-// this.fillCheckStateModel(this.currentRootJavaBeanModel);
+
+ protected void recordModel() {
+ // this.currentRootJavaBeanModel.setProperties(null);
+ // this.fillCheckStateModel(this.currentRootJavaBeanModel);
}
protected void fillTheModelWithCheckStatus(JavaBeanModel javaBeanModel,
@@ -254,8 +270,8 @@
public JavaBeanModel fillCheckStateModel(JavaBeanModel rootJavaBean) {
if (rootJavaBean == null) {
List list = (List) treeViewer.getInput();
- if(list != null)
- rootJavaBean = (JavaBeanModel) list.get(0);
+ if (list != null)
+ rootJavaBean = (JavaBeanModel) list.get(0);
}
if (rootJavaBean != null)
this.fillTheModelWithCheckStatus(rootJavaBean, treeViewer);
@@ -306,7 +322,6 @@
Class clazz = loader.loadClass(classFullName);
currentRootJavaBeanModel = JavaBeanModelFactory
.getJavaBeanModelWithLazyLoad(clazz);
-
} catch (ClassNotFoundException e) {
throw new InvocationTargetException(e);
}
@@ -322,9 +337,10 @@
// TODO ignor????
treeViewer.setInput(Collections.EMPTY_LIST);
} else {
- if (currentRootJavaBeanModel != null)
+ if (currentRootJavaBeanModel != null) {
treeViewer.setInput(currentRootJavaBeanModel.getProperties());
- else
+ treeViewer.setAllChecked(true);
+ } else
treeViewer.setInput(Collections.EMPTY_LIST);
}
}
Modified:
workspace/dart/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/analyzer/AnalyzerFactory.java
===================================================================
---
workspace/dart/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/analyzer/AnalyzerFactory.java 2008-08-19
10:54:54 UTC (rev 9792)
+++
workspace/dart/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/analyzer/AnalyzerFactory.java 2008-08-19
10:57:04 UTC (rev 9793)
@@ -73,7 +73,7 @@
.equals(
SmooksExtensionPointConstants.EXTENTION_POINT_ELEMENT_TARGETSOURCETYPE)) {
String tid = childElement
- .getAttribute(SmooksExtensionPointConstants.EXTENTION_POINT_ATTRIBUTE_TYPE_ID);
+ .getAttribute(SmooksExtensionPointConstants.EXTENTION_POINT_ATTRIBUTE_ID);
if (tid == null || "".equals(tid))
continue;
mapper.addTargetDataTypeID(tid);
Modified:
workspace/dart/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/SmooksFormEditor.java
===================================================================
---
workspace/dart/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/SmooksFormEditor.java 2008-08-19
10:54:54 UTC (rev 9792)
+++
workspace/dart/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/SmooksFormEditor.java 2008-08-19
10:57:04 UTC (rev 9793)
@@ -35,15 +35,9 @@
@Override
public void doSave(IProgressMonitor monitor) {
-
+ graphicalPage.doSave(monitor);
}
-
-
-// @Override
-// protected void createHeaderContents(IManagedForm headerForm) {
-// super.createHeaderContents(headerForm);
-// }
@Override
public void doSaveAs() {
Modified:
workspace/dart/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/SmooksGraphViewerContextMenuProvider.java
===================================================================
---
workspace/dart/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/SmooksGraphViewerContextMenuProvider.java 2008-08-19
10:54:54 UTC (rev 9792)
+++
workspace/dart/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/SmooksGraphViewerContextMenuProvider.java 2008-08-19
10:57:04 UTC (rev 9793)
@@ -45,25 +45,27 @@
/*
* (non-Javadoc)
*
- * @see
- * org.eclipse.gef.ContextMenuProvider#buildContextMenu(org.eclipse.jface
- * .action.IMenuManager)
+ * @see org.eclipse.gef.ContextMenuProvider#buildContextMenu(org.eclipse.jface
+ * .action.IMenuManager)
*/
@Override
public void buildContextMenu(IMenuManager menu) {
GEFActionConstants.addStandardActionGroups(menu);
IAction action;
+ // TODO don't enable redo/undo now
+// action = getActionRegistry().getAction(GEFActionConstants.UNDO);
+// if (action != null)
+// menu.appendToGroup(GEFActionConstants.GROUP_UNDO, action);
+//
+// action = getActionRegistry().getAction(GEFActionConstants.REDO);
+// if (action != null)
+// menu.appendToGroup(GEFActionConstants.GROUP_UNDO, action);
- action = getActionRegistry().getAction(GEFActionConstants.UNDO);
- menu.appendToGroup(GEFActionConstants.GROUP_UNDO, action);
-
- action = getActionRegistry().getAction(GEFActionConstants.REDO);
- menu.appendToGroup(GEFActionConstants.GROUP_UNDO, action);
-
action = getActionRegistry()
.getAction(IWorkbenchActionConstants.DELETE);
- if (action.isEnabled())
- menu.appendToGroup(GEFActionConstants.GROUP_EDIT, action);
+ if (action != null)
+// if (action.isEnabled())
+ menu.appendToGroup(GEFActionConstants.GROUP_EDIT, action);
}
public SmooksGraphViewerContextMenuProvider(EditPartViewer viewer,
Modified:
workspace/dart/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/SmooksGraphicalFormPage.java
===================================================================
---
workspace/dart/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/SmooksGraphicalFormPage.java 2008-08-19
10:54:54 UTC (rev 9792)
+++
workspace/dart/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/SmooksGraphicalFormPage.java 2008-08-19
10:57:04 UTC (rev 9793)
@@ -12,6 +12,7 @@
import java.io.IOException;
import java.io.InputStream;
+import java.util.EventObject;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IResource;
@@ -21,13 +22,29 @@
import org.eclipse.draw2d.ConnectionLayer;
import org.eclipse.gef.DefaultEditDomain;
import org.eclipse.gef.GraphicalViewer;
+import org.eclipse.gef.KeyStroke;
import org.eclipse.gef.LayerConstants;
+import org.eclipse.gef.commands.CommandStack;
+import org.eclipse.gef.commands.CommandStackListener;
import org.eclipse.gef.dnd.TemplateTransfer;
import org.eclipse.gef.editparts.LayerManager;
+import org.eclipse.gef.ui.actions.ActionRegistry;
+import org.eclipse.gef.ui.actions.DeleteAction;
+import org.eclipse.gef.ui.actions.GEFActionConstants;
+import org.eclipse.gef.ui.actions.PrintAction;
+import org.eclipse.gef.ui.actions.RedoAction;
+import org.eclipse.gef.ui.actions.SaveAction;
+import org.eclipse.gef.ui.actions.SelectAllAction;
+import org.eclipse.gef.ui.actions.UndoAction;
+import org.eclipse.gef.ui.actions.UpdateAction;
+import org.eclipse.gef.ui.parts.GraphicalViewerKeyHandler;
import org.eclipse.gef.ui.parts.ScrollingGraphicalViewer;
import org.eclipse.gef.ui.parts.SelectionSynchronizer;
+import org.eclipse.jface.action.IAction;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.dnd.DND;
@@ -40,9 +57,13 @@
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeItem;
import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.ui.IWorkbenchActionConstants;
+import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.forms.IManagedForm;
import org.eclipse.ui.forms.editor.FormEditor;
import org.eclipse.ui.forms.editor.FormPage;
@@ -75,7 +96,8 @@
* @author Dart Peng
* @Date Jul 28, 2008
*/
-public class SmooksGraphicalFormPage extends FormPage {
+public class SmooksGraphicalFormPage extends FormPage implements
+ ISelectionChangedListener {
protected IViewerInitor sourceViewerInitor;
protected IViewerInitor targetViewerInitor;
protected TreeViewer targetViewer;
@@ -91,6 +113,9 @@
protected String targetDataTypeID = null;
protected SmooksFileBuilder smooksFileBuilder = null;
+ protected boolean commandStackChanged = false;
+ protected ActionRegistry actionRegistry;
+
public SmooksGraphicalFormPage(FormEditor editor, String id, String title) {
super(editor, id, title);
editDomain = new DefaultEditDomain(this);
@@ -104,6 +129,17 @@
}
@Override
+ public Object getAdapter(Class type) {
+ if (type == CommandStack.class)
+ return this.getGEFCommandStack();
+ return super.getAdapter(type);
+ }
+
+ public CommandStack getGEFCommandStack() {
+ return this.getEditDomain().getCommandStack();
+ }
+
+ @Override
protected void createFormContent(IManagedForm managedForm) {
final ScrolledForm form = managedForm.getForm();
FormToolkit toolkit = managedForm.getToolkit();
@@ -147,12 +183,10 @@
event.doit = true;
}
});
- sourceViewer.getTree().addPaintListener(new PaintListener() {
- public void paintControl(PaintEvent e) {
- rootModel.firePropertyChange(RootModel.P_REFRESH_PANEL,
- null, new Object());
- }
- });
+ sourceViewer.getTree().addPaintListener(
+ new TreePaintControlListener());
+ sourceViewer.getTree().addListener(SWT.PaintItem,
+ new TreeItemPaintListener());
if (initSourceTreeViewerProviders()) {
initSourceTreeViewer();
@@ -193,12 +227,11 @@
new Transfer[] { TemplateTransfer.getInstance() },
new TargetTreeDropTargetListener(targetViewer,
getGraphicalViewer()));
- targetViewer.getTree().addPaintListener(new PaintListener() {
- public void paintControl(PaintEvent e) {
- rootModel.firePropertyChange(RootModel.P_REFRESH_PANEL,
- null, new Object());
- }
- });
+ targetViewer.getTree().addPaintListener(
+ new TreePaintControlListener());
+ targetViewer.getTree().addListener(SWT.PaintItem,
+ new TreeItemPaintListener());
+
if (initTargetTreeViewerProviders()) {
initTargetTreeViewer();
}
@@ -256,6 +289,8 @@
toolkit.paintBordersFor(rootMainControl);
this.hookGraphicalViewer();
this.initGraphicalViewer();
+
+ getSite().getSelectionProvider().addSelectionChangedListener(this);
}
protected SmooksFileBuilder createSmooksFileBulder() {
@@ -360,14 +395,14 @@
return viewer;
}
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see org.eclipse.ui.forms.editor.FormPage#isDirty()
*/
@Override
public boolean isDirty() {
- // TODO Test
- if(true) return true;
- return super.isDirty();
+ return commandStackChanged || super.isDirty();
}
/*
@@ -393,10 +428,16 @@
e.printStackTrace();
}
super.doSave(monitor);
+ commandStackChanged = false;
+ getManagedForm().dirtyStateChanged();
}
protected SmooksConfigurationFileGenerateContext createContext() {
SmooksConfigurationFileGenerateContext context = new
SmooksConfigurationFileGenerateContext();
+ context.setSourceDataTypeID(this.sourceDataTypeID);
+ context.setTargetDataTypeID(this.targetDataTypeID);
+ context.setSmooksType("SAX");
+ context.setDataMappingRootModel(this.rootModel);
return context;
}
@@ -417,12 +458,20 @@
protected void hookGraphicalViewer() {
getSelectionSynchronizer().addViewer(getGraphicalViewer());
getSite().setSelectionProvider(getGraphicalViewer());
-
getGraphicalViewer().addDropTargetListener(
new MappingPanelDropTargetListener(this.getGraphicalViewer()));
}
+ protected ActionRegistry getActionRegistry() {
+ if (actionRegistry == null)
+ actionRegistry = new ActionRegistry();
+ return actionRegistry;
+ }
+
protected void initGraphicalViewer() {
+
+ createActions();
+
this.getGraphicalViewer().getControl().setBackground(
ColorConstants.white);
@@ -434,12 +483,33 @@
new SmooksEditPartFactory());
this.getGraphicalViewer().setContents(rootModel);
+ GraphicalViewerKeyHandler keyHandler = new GraphicalViewerKeyHandler(
+ getGraphicalViewer());
+ keyHandler.put(KeyStroke.getPressed(SWT.DEL, 0), this
+ .getActionRegistry().getAction(GEFActionConstants.DELETE));
+
+ SmooksGraphViewerContextMenuProvider provider = new
SmooksGraphViewerContextMenuProvider(
+ getGraphicalViewer(), this.getActionRegistry());
+ getGraphicalViewer().setContextMenu(provider);
+
LayerManager manager = (LayerManager) getGraphicalViewer()
.getEditPartRegistry().get(LayerManager.ID);
ConnectionLayer layer = (ConnectionLayer) manager
.getLayer(LayerConstants.CONNECTION_LAYER);
if (layer != null)
layer.setAntialias(SWT.SMOOTH);
+
+ // hook command stack
+ this.getEditDomain().getCommandStack().addCommandStackListener(
+ new CommandStackListener() {
+
+ public void commandStackChanged(EventObject event) {
+ commandStackChanged = true;
+ updateSelectionActions();
+ getManagedForm().dirtyStateChanged();
+ }
+
+ });
}
public SelectionSynchronizer getSelectionSynchronizer() {
@@ -470,16 +540,6 @@
this.getEditDomain().addViewer(graphicalViewer);
}
- // public void treeCollapsed(TreeEvent e) {
- // rootModel.firePropertyChange(RootModel.P_REFRESH_PANEL, null,
- // new Object());
- // }
- //
- // public void treeExpanded(TreeEvent e) {
- // rootModel.firePropertyChange(RootModel.P_REFRESH_PANEL, null,
- // new Object());
- // }
-
public IViewerInitor getSourceViewerInitor() {
return sourceViewerInitor;
}
@@ -534,6 +594,28 @@
}
}
+ protected void createActions() {
+ ActionRegistry registry = getActionRegistry();
+ IAction action;
+
+ action = new UndoAction(this);
+ registry.registerAction(action);
+
+ action = new RedoAction(this);
+ registry.registerAction(action);
+
+ action = new SelectAllAction(this);
+ registry.registerAction(action);
+
+ action = new DeleteAction((IWorkbenchPart) this);
+ registry.registerAction(action);
+
+ action = new SaveAction(this);
+ registry.registerAction(action);
+
+ registry.registerAction(new PrintAction(this));
+ }
+
private class DataSelectLinkListener implements IHyperlinkListener {
TreeViewer viewer = null;
@@ -585,4 +667,73 @@
this.smooksFileBuilder = smooksFileBuilder;
}
+ /**
+ * @author Dart Peng
+ * @Date Aug 19, 2008
+ */
+ private class TreeItemPaintListener implements Listener {
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.swt.widgets.Listener#handleEvent(org.eclipse.swt.widgets.Event)
+ */
+ public void handleEvent(Event event) {
+ TreeItem item = (TreeItem) event.item;
+ if (item.getBounds().y == 0)
+ return;
+ Object obj = item
+ .getData(TreeItemRelationModel.PRO_TREE_ITEM_SELECTION_STATUS);
+ if (obj == null) {
+ return;
+ }
+ boolean drawLine = ((Boolean) obj).booleanValue();
+ if (drawLine) {
+ // event.gc.draw(GraphicsConstants.groupHeaderColor);
+ // event.gc.fillRectangle(event.x, event.y, event.width,
+ // event.height);
+ // event.gc.setLineWidth(2);
+ // event.gc.drawLine(x + 20, y,
+ // item.getParent().getBounds().width - 2, y);
+ }
+ }
+
+ }
+
+ /**
+ * @author Dart Peng
+ * @Date Aug 19, 2008
+ */
+ private class TreePaintControlListener implements PaintListener {
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
org.eclipse.swt.events.PaintListener#paintControl(org.eclipse.swt.events.PaintEvent)
+ */
+ public void paintControl(PaintEvent e) {
+ Tree tree = (Tree) e.getSource();
+ if (tree.getData(TreeItemRelationModel.PRO_TREE_REPAINT) != null) {
+ System.out.println("Block a event fire !!");
+ return;
+ }
+ rootModel.firePropertyChange(RootModel.P_REFRESH_PANEL, null,
+ new Object());
+ }
+
+ }
+
+ public void selectionChanged(SelectionChangedEvent event) {
+ updateSelectionActions();
+ }
+
+ protected void updateSelectionActions() {
+ IAction action = getActionRegistry().getAction(
+ IWorkbenchActionConstants.DELETE);
+ if (action != null) {
+ if (action instanceof UpdateAction)
+ ((UpdateAction) action).update();
+ }
+ }
+
}
Modified:
workspace/dart/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/editparts/RootModelEditPart.java
===================================================================
---
workspace/dart/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/editparts/RootModelEditPart.java 2008-08-19
10:54:54 UTC (rev 9792)
+++
workspace/dart/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/editparts/RootModelEditPart.java 2008-08-19
10:57:04 UTC (rev 9793)
@@ -1,11 +1,13 @@
package org.jboss.tools.smooks.ui.gef.editparts;
import java.beans.PropertyChangeEvent;
+import java.util.Iterator;
import java.util.List;
import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.ScalableFreeformLayeredPane;
import org.eclipse.gef.EditPolicy;
+import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
import org.jboss.tools.smooks.ui.gef.figures.GraphRootFigureLayout;
import org.jboss.tools.smooks.ui.gef.model.AbstractStructuredDataModel;
import org.jboss.tools.smooks.ui.gef.policy.RootGraphicsXYLayoutEditPolicy;
@@ -13,7 +15,7 @@
public class RootModelEditPart extends AbstractStructuredDataEditPart {
protected IFigure createFigure() {
- IFigure figure = new ScalableFreeformLayeredPane() ;
+ IFigure figure = new ScalableFreeformLayeredPane();
figure.setLayoutManager(new GraphRootFigureLayout());
return figure;
}
@@ -27,10 +29,21 @@
AbstractStructuredDataModel.P_REFRESH_PANEL)) {
this.getFigure().invalidate();
this.getFigure().validate();
- // this.getFigure().validate();
+ refreshAllConnectionLineStyle();
}
}
+ protected void refreshAllConnectionLineStyle() {
+ List children = this.getChildren();
+ for (Iterator iterator = children.iterator(); iterator.hasNext();) {
+ ConnectionPointEditPart editPart = (ConnectionPointEditPart) iterator
+ .next();
+ if (editPart instanceof SourceConnectionPointEditPart) {
+ editPart.refreshAllSourceConnectionLineStyle();
+ }
+ }
+ }
+
/*
* (non-Javadoc)
*
Modified:
workspace/dart/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/model/TreeItemRelationModel.java
===================================================================
---
workspace/dart/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/model/TreeItemRelationModel.java 2008-08-19
10:54:54 UTC (rev 9792)
+++
workspace/dart/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/model/TreeItemRelationModel.java 2008-08-19
10:57:04 UTC (rev 9793)
@@ -20,12 +20,26 @@
* @Date Jul 31, 2008
*/
public class TreeItemRelationModel extends AbstractStructuredDataModel implements
IConnectableModel {
+
+ public static final String PRO_TREE_ITEM_SELECTION_STATUS =
"__pro_treeitem_selection_status";
+
+ public static final String PRO_TREE_REPAINT = "__pro_tree_repaint";
+
TreeItem treeItem = null;
List<Object> modelSourceConnections = new ArrayList<Object>();
List<Object> modelTargetConnections = new ArrayList<Object>();
public TreeItem getTreeItem() {
return treeItem;
}
+
+ public boolean isCollapse(){
+ TreeItem item = getTreeItem();
+ int y = Integer.MAX_VALUE;
+ if(item != null){
+ y = item.getBounds().y;
+ }
+ return (y == 0);
+ }
public void setTreeItem(TreeItem treeItem) {
this.treeItem = treeItem;
Modified:
workspace/dart/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/utils/UIUtils.java
===================================================================
---
workspace/dart/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/utils/UIUtils.java 2008-08-19
10:54:54 UTC (rev 9792)
+++
workspace/dart/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/utils/UIUtils.java 2008-08-19
10:57:04 UTC (rev 9793)
@@ -1,5 +1,8 @@
package org.jboss.tools.smooks.utils;
+import java.util.Iterator;
+import java.util.List;
+
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.jdt.core.IJavaProject;
@@ -14,6 +17,7 @@
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IFileEditorInput;
import org.jboss.tools.smooks.ui.ViewerInitorStore;
+import org.jboss.tools.smooks.ui.gef.model.AbstractStructuredDataModel;
/**
*
@@ -21,7 +25,7 @@
*
*/
public class UIUtils {
-
+
public static FillLayout createFillLayout(int marginW, int marginH) {
FillLayout fill = new FillLayout();
fill.marginHeight = marginH;
@@ -32,7 +36,36 @@
public static FillLayout createFormCompositeFillLayout() {
return createFillLayout(1, 1);
}
-
+
+ /**
+ *
+ * @param parent
+ * @param referenceObject
+ * @return
+ */
+ public static AbstractStructuredDataModel findGraphModel(
+ AbstractStructuredDataModel parent, Object referenceObject) {
+ if (referenceObject == null || parent == null)
+ return null;
+ Object ref = parent.getReferenceEntityModel();
+ if (referenceObject == ref)
+ return parent;
+ List list = parent.getChildren();
+ if (list == null)
+ return null;
+ if (list.isEmpty())
+ return null;
+ for (Iterator iterator = list.iterator(); iterator.hasNext();) {
+ AbstractStructuredDataModel child = (AbstractStructuredDataModel) iterator
+ .next();
+ AbstractStructuredDataModel obj = findGraphModel(child,
+ referenceObject);
+ if (obj != null)
+ return obj;
+ }
+ return null;
+ }
+
public static IJavaProject getJavaProjectFromEditorPart(IEditorPart part) {
IEditorInput input = part.getEditorInput();
if (input instanceof IFileEditorInput) {
@@ -61,7 +94,7 @@
.getTreeCotentProvider(dataTypeID);
if (tprovider == null)
return false;
- viewer.setLabelProvider(new DecoratingLabelProvider(lprovider,null));
+ viewer.setLabelProvider(new DecoratingLabelProvider(lprovider, null));
viewer.setContentProvider(tprovider);
return true;
}