Author: DartPeng
Date: 2009-08-04 11:56:51 -0400 (Tue, 04 Aug 2009)
New Revision: 16962
Added:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/wizards/NewSmooksElementWizard.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/wizards/NewSmooksElementWizardPage.java
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SmooksActionBarContributor.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SmooksMasterDetailBlock.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/graphical/editors/SmooksGraphicalEditorPart.java
Log:
JBIDE-47000
done
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SmooksActionBarContributor.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SmooksActionBarContributor.java 2009-08-04
15:35:12 UTC (rev 16961)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SmooksActionBarContributor.java 2009-08-04
15:56:51 UTC (rev 16962)
@@ -507,6 +507,7 @@
* @generated
*/
protected Collection<IAction> generateCreateChildActions(Collection<?>
descriptors, ISelection selection) {
+// return SmooksUIUtils.generateCreateChildActions(activeEditorPart, descriptors,
selection);
Collection<IAction> actions = new ArrayList<IAction>();
// if (selection != null && selection.isEmpty() && descriptors !=
null)
// {
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SmooksMasterDetailBlock.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SmooksMasterDetailBlock.java 2009-08-04
15:35:12 UTC (rev 16961)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SmooksMasterDetailBlock.java 2009-08-04
15:56:51 UTC (rev 16962)
@@ -37,6 +37,7 @@
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerFilter;
+import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
@@ -55,8 +56,10 @@
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.Section;
import org.jboss.tools.smooks.configuration.SmooksConfigurationActivator;
+import org.jboss.tools.smooks.configuration.wizards.NewSmooksElementWizard;
import org.jboss.tools.smooks.editor.ISmooksModelProvider;
import org.jboss.tools.smooks.model.common.AbstractAnyType;
+import org.jboss.tools.smooks.model.smooks.DocumentRoot;
/**
* @author Dart Peng (dpeng(a)redhat.com)
@@ -184,6 +187,7 @@
}
},
SmooksConfigurationActivator.getDefault().getWorkbench().getDecoratorManager().getLabelDecorator()));
+
smooksTreeViewer.setComparer(new IElementComparer() {
/*
@@ -216,7 +220,7 @@
smooksTreeViewer.setFilters(new ViewerFilter[] { new TextEObjectModelFilter() });
Object smooksModel = ((ISmooksModelProvider) this.formEditor).getSmooksModel();
if (smooksModel != null) {
- smooksTreeViewer.setInput(smooksModel);
+ setTreeViewerModel(smooksModel);
}
createMenuForViewer(smooksTreeViewer);
formEditor.getSite().setSelectionProvider(smooksTreeViewer);
@@ -240,30 +244,66 @@
GridLayout buttonLayout = new GridLayout();
buttonComposite.setLayout(buttonLayout);
- addButton = tool.createButton(buttonComposite, "New", SWT.NONE);
+ addButton = tool.createButton(buttonComposite, "Add...", SWT.NONE);
gd = new GridData(GridData.FILL_HORIZONTAL);
addButton.setLayoutData(gd);
removeButton = tool.createButton(buttonComposite, "Remove", SWT.NONE);
gd = new GridData(GridData.FILL_HORIZONTAL);
removeButton.setLayoutData(gd);
+
+ Composite sc= tool.createComposite(buttonComposite);
+ gd = new GridData(GridData.FILL_HORIZONTAL);
+ gd.heightHint = 40;
+ sc.setLayoutData(gd);
upButton = tool.createButton(buttonComposite, "Up", SWT.NONE);
+ gd = new GridData(GridData.FILL_HORIZONTAL);
upButton.setLayoutData(gd);
downButton = tool.createButton(buttonComposite, "Down", SWT.NONE);
+ gd = new GridData(GridData.FILL_HORIZONTAL);
downButton.setLayoutData(gd);
// don't display button area
gd = new GridData(GridData.FILL_VERTICAL);
- gd.widthHint = 0;
+ gd.widthHint = 70;
buttonComposite.setLayoutData(gd);
- buttonComposite.setVisible(false);
+ // buttonComposite.setVisible(false);
hookButtons();
}
+ private void setTreeViewerModel(Object smooksModel) {
+ boolean seted = false;
+ if (smooksModel instanceof org.jboss.tools.smooks10.model.smooks.DocumentRoot) {
+ smooksTreeViewer.setInput(((org.jboss.tools.smooks10.model.smooks.DocumentRoot)
smooksModel)
+ .getSmooksResourceList());
+ seted = true;
+ }
+ if (smooksModel instanceof DocumentRoot) {
+ smooksTreeViewer.setInput(((DocumentRoot) smooksModel).getSmooksResourceList());
+ seted = true;
+ }
+ if (!seted) {
+ smooksTreeViewer.setInput(smooksModel);
+ }
+ }
+
+ private EObject getTreeViewerInput() {
+ EObject smooksModel = ((ISmooksModelProvider) this.formEditor).getSmooksModel();
+ if (smooksModel instanceof org.jboss.tools.smooks10.model.smooks.DocumentRoot) {
+ return ((org.jboss.tools.smooks10.model.smooks.DocumentRoot)
smooksModel).getSmooksResourceList();
+ }
+ if (smooksModel instanceof DocumentRoot) {
+ return (((DocumentRoot) smooksModel).getSmooksResourceList());
+ }
+ return null;
+ }
+
protected List<?> getViewerSelections() {
IStructuredSelection selections = (IStructuredSelection)
smooksTreeViewer.getSelection();
+ if (selections == null)
+ return null;
return selections.toList();
// List<Object> nl = new ArrayList<Object>();
// for (Iterator<?> iterator = l.iterator(); iterator.hasNext();) {
@@ -275,6 +315,18 @@
}
private void hookButtons() {
+ addButton.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ super.widgetSelected(e);
+ NewSmooksElementWizard wizard = new NewSmooksElementWizard(editingDomain,
getTreeViewerInput());
+ WizardDialog dialog = new WizardDialog(formEditor.getSite().getShell(), wizard);
+ dialog.open();
+ }
+
+ });
+
removeButton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
List<?> list = getViewerSelections();
@@ -300,7 +352,6 @@
EObject parent = v.eContainer();
int index = parent.eContents().indexOf(v);
Command command = MoveCommand.create(editingDomain, parent, null, obj, index + 1);
- System.out.println(command.canExecute());
editingDomain.getCommandStack().execute(command);
}
}
@@ -308,6 +359,15 @@
upButton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
+ List<?> list = getViewerSelections();
+ if (list.size() == 1) {
+ Object obj = list.get(0);
+ EObject v = (EObject) AdapterFactoryEditingDomain.unwrap(obj);
+ EObject parent = v.eContainer();
+ int index = parent.eContents().indexOf(v);
+ Command command = MoveCommand.create(editingDomain, parent, null, obj, index - 1);
+ editingDomain.getCommandStack().execute(command);
+ }
}
});
}
@@ -358,7 +418,8 @@
public void setSmooksModel(Object model) {
if (model != null) {
- smooksTreeViewer.setInput(model);
+ setTreeViewerModel(model);
+ // smooksTreeViewer.setInput(model);
} else {
smooksTreeViewer.setInput(new Object());
}
@@ -369,42 +430,22 @@
* @param selections
*/
protected void updateButtons(List<?> selections) {
- // removeButton.setEnabled(true);
- // upButton.setEnabled(true);
- // downButton.setEnabled(true);
- // if (selections.size() >= 1) {
- // for (Iterator<?> iterator = selections.iterator();
- // iterator.hasNext();) {
- // Object object = (Object) iterator.next();
- // object = AdapterFactoryEditingDomain.unwrap(object);
- // if (object instanceof SmooksResourceListType
- // || object instanceof
- // org.jboss.tools.smooks10.model.smooks.SmooksResourceListType) {
- // removeButton.setEnabled(false);
- // break;
- // }
- // }
- // }
- // if (selections.size() == 1) {
- // Object selection = selections.get(0);
- // if (selection instanceof SmooksResourceListType
- // || selection instanceof
- // org.jboss.tools.smooks10.model.smooks.SmooksResourceListType) {
- // upButton.setEnabled(false);
- // downButton.setEnabled(false);
- // } else {
- // if (selection instanceof EObject) {
- // EObject parent = ((EObject) selection).eContainer();
- // int index = parent.eContents().indexOf(selection);
- // if (index <= 0) {
- // upButton.setEnabled(false);
- // }
- // if (index >= parent.eContents().size() - 1) {
- // downButton.setEnabled(false);
- // }
- // }
- // }
- // }
+ removeButton.setEnabled(true);
+ upButton.setEnabled(true);
+ downButton.setEnabled(true);
+ List<?> list = getViewerSelections();
+ if (list.size() == 1) {
+ Object obj = list.get(0);
+ EObject v = (EObject) AdapterFactoryEditingDomain.unwrap(obj);
+ EObject parent = v.eContainer();
+ int index = parent.eContents().indexOf(v);
+
+ Command upCommand = MoveCommand.create(editingDomain, parent, null, obj, index - 1);
+ upButton.setEnabled(upCommand.canExecute());
+
+ Command downCommand = MoveCommand.create(editingDomain, parent, null, obj, index +
1);
+ downButton.setEnabled(downCommand.canExecute());
+ }
}
/*
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-08-04
15:35:12 UTC (rev 16961)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/uitls/SmooksUIUtils.java 2009-08-04
15:56:51 UTC (rev 16962)
@@ -15,6 +15,7 @@
import java.lang.reflect.Array;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.Collections;
import java.util.Enumeration;
import java.util.HashMap;
@@ -48,6 +49,7 @@
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.core.search.IJavaSearchConstants;
import org.eclipse.jdt.ui.JavaUI;
+import org.eclipse.jface.action.IAction;
import org.eclipse.jface.action.ToolBarManager;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.ErrorDialog;
@@ -62,6 +64,7 @@
import org.eclipse.jface.fieldassist.IContentProposalListener2;
import org.eclipse.jface.fieldassist.TextContentAdapter;
import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.ViewerFilter;
@@ -103,6 +106,7 @@
import org.eclipse.ui.ide.IDE;
import org.eclipse.ui.part.FileEditorInput;
import org.jboss.tools.smooks.configuration.SmooksConfigurationActivator;
+import org.jboss.tools.smooks.configuration.actions.AddSmooksResourceAction;
import org.jboss.tools.smooks.configuration.actions.OpenEditorEditInnerContentsAction;
import org.jboss.tools.smooks.configuration.command.UnSetFeatureCommand;
import org.jboss.tools.smooks.configuration.editors.AttributeFieldEditPart;
@@ -1124,16 +1128,17 @@
}
return null;
}
-
+
public static AttributeFieldEditPart createJavaMethodSearchFieldEditor(BindingsType
container, Composite parent,
FormToolkit toolkit, final IItemPropertyDescriptor propertyDescriptor, String
buttonName,
final EObject model) {
String classString = ((BindingsType) container).getClass_();
- return createJavaMethodSearchFieldEditor(classString, container, parent, toolkit,
propertyDescriptor, buttonName, model);
+ return createJavaMethodSearchFieldEditor(classString, container, parent, toolkit,
propertyDescriptor,
+ buttonName, model);
}
- public static AttributeFieldEditPart createJavaMethodSearchFieldEditor(String
classString , EObject container, Composite parent,
- FormToolkit toolkit, final IItemPropertyDescriptor propertyDescriptor, String
buttonName,
+ public static AttributeFieldEditPart createJavaMethodSearchFieldEditor(String
classString, EObject container,
+ Composite parent, FormToolkit toolkit, final IItemPropertyDescriptor
propertyDescriptor, String buttonName,
final EObject model) {
IJavaProject project = getJavaProject(container);
Class<?> clazz = null;
@@ -2345,4 +2350,33 @@
return lists;
}
+ /**
+ * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction}
+ * for each object in <code>descriptors</code>, and returns the collection
+ * of these actions. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public static Collection<IAction> generateCreateChildActions(EditingDomain
editingDomain,
+ Collection<?> descriptors, ISelection selection) {
+ Collection<IAction> actions = new ArrayList<IAction>();
+ // if (selection != null && selection.isEmpty() && descriptors !=
null)
+ // {
+ // CommandParameter cp =
+ // createChildParameter(SmooksPackage.Literals.SMOOKS_RESOURCE_LIST_TYPE,
+ // SmooksFactory.eINSTANCE.createSmooksResourceListType());
+ // CommandParameter cp2 =
+ // createChildParameter(EdiPackage.Literals.EDI_MAP,
+ // EdiFactory.eINSTANCE.createEdiMap());
+ // descriptors.add(cp);
+ // descriptors.add(cp2);
+ // }
+ if (descriptors != null) {
+ for (Object descriptor : descriptors) {
+ actions.add(new AddSmooksResourceAction(editingDomain, selection, descriptor));
+ }
+ }
+ return actions;
+ }
+
}
Added:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/wizards/NewSmooksElementWizard.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/wizards/NewSmooksElementWizard.java
(rev 0)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/wizards/NewSmooksElementWizard.java 2009-08-04
15:56:51 UTC (rev 16962)
@@ -0,0 +1,81 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.smooks.configuration.wizards;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.Collection;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.wizard.Wizard;
+import org.jboss.tools.smooks.configuration.editors.uitls.SmooksUIUtils;
+
+/**
+ * @author Dart
+ *
+ */
+public class NewSmooksElementWizard extends Wizard {
+
+ private EObject parentElement;
+
+ private AdapterFactoryEditingDomain editingDomain;
+
+ private NewSmooksElementWizardPage page;
+
+ public NewSmooksElementWizard(AdapterFactoryEditingDomain editingDomain, EObject
parentElement) {
+ super();
+ this.parentElement = parentElement;
+ this.editingDomain = editingDomain;
+ }
+
+ @Override
+ public void addPages() {
+ Collection<?> childDescriptors =
editingDomain.getNewChildDescriptors(parentElement, null);
+ Collection<IAction> actions =
SmooksUIUtils.generateCreateChildActions(editingDomain, childDescriptors,
+ new StructuredSelection(parentElement));
+ page = new NewSmooksElementWizardPage("Smooks Elements", actions);
+
+ this.addPage(page);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.wizard.Wizard#performFinish()
+ */
+ @Override
+ public boolean performFinish() {
+ final IAction action = page.getSelectedAction();
+ if (action != null) {
+ try {
+ this.getContainer().run(false, false, new IRunnableWithProgress() {
+
+ public void run(IProgressMonitor monitor) throws InvocationTargetException,
InterruptedException {
+ action.run();
+ }
+ });
+ } catch (InvocationTargetException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (InterruptedException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ return true;
+ }
+ return false;
+ }
+
+}
Property changes on:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/wizards/NewSmooksElementWizard.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/wizards/NewSmooksElementWizardPage.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/wizards/NewSmooksElementWizardPage.java
(rev 0)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/wizards/NewSmooksElementWizardPage.java 2009-08-04
15:56:51 UTC (rev 16962)
@@ -0,0 +1,302 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.smooks.configuration.wizards;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.jboss.tools.smooks.configuration.actions.AddSmooksResourceAction;
+import org.jboss.tools.smooks.configuration.editors.actions.Calc11ActionGrouper;
+import org.jboss.tools.smooks.configuration.editors.actions.Database11ActionGrouper;
+import org.jboss.tools.smooks.configuration.editors.actions.Datasources11ActionGrouper;
+import
org.jboss.tools.smooks.configuration.editors.actions.FragmentRouting11ActionGrouper;
+import
org.jboss.tools.smooks.configuration.editors.actions.FragmentRouting12ActionGrouper;
+import org.jboss.tools.smooks.configuration.editors.actions.ISmooksActionGrouper;
+import org.jboss.tools.smooks.configuration.editors.actions.JavaBean11ActionGrouper;
+import org.jboss.tools.smooks.configuration.editors.actions.JavaBean12ActionGrouper;
+import org.jboss.tools.smooks.configuration.editors.actions.PersistenceActionGrouper;
+import org.jboss.tools.smooks.configuration.editors.actions.Reader11ActionGrouper;
+import org.jboss.tools.smooks.configuration.editors.actions.Reader12ActionGrouper;
+import org.jboss.tools.smooks.configuration.editors.actions.Scripting11ActionGrouper;
+import org.jboss.tools.smooks.configuration.editors.actions.Templating11ActionGrouper;
+import org.jboss.tools.smooks.configuration.editors.actions.Validation10ActionGrouper;
+
+/**
+ * @author Dart
+ *
+ */
+public class NewSmooksElementWizardPage extends org.eclipse.jface.wizard.WizardPage {
+
+ private Collection<IAction> childDescriptor = null;
+
+ private IAction selectedAction;
+
+ private TreeViewer actionViewer = null;
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets
+ * .Composite)
+ */
+ public void createControl(Composite parent) {
+ selectedAction = null;
+ actionViewer = new TreeViewer(parent, SWT.BORDER);
+ GridData gd = new GridData(GridData.FILL_BOTH);
+ actionViewer.getControl().setLayoutData(gd);
+
+ actionViewer.setContentProvider(new SmooksElementActionsContentProvider());
+ actionViewer.setLabelProvider(new SmooksElementActionsLabelProvider());
+ actionViewer.setInput(getActions());
+ actionViewer.addSelectionChangedListener(new ISelectionChangedListener() {
+
+ public void selectionChanged(SelectionChangedEvent event) {
+ selectedAction = (IAction) ((IStructuredSelection)
event.getSelection()).getFirstElement();
+ updatePageStatus();
+ }
+ });
+
+ actionViewer.addDoubleClickListener(new IDoubleClickListener() {
+
+ public void doubleClick(DoubleClickEvent event) {
+ // getWizard().get
+ }
+ });
+ this.setControl(parent);
+ }
+
+ public IAction getSelectedAction() {
+ return selectedAction;
+ }
+
+ protected void updatePageStatus() {
+ this.setPageComplete(true);
+ if (selectedAction instanceof GroupAction) {
+ this.setPageComplete(false);
+ }
+ }
+
+ private Collection<IAction> getActions() {
+ List<IAction> actions = new ArrayList<IAction>();
+ List<ISmooksActionGrouper> grouperList = getSmooksActionGrouper();
+ for (Iterator<?> iterator = grouperList.iterator(); iterator.hasNext();) {
+ ISmooksActionGrouper iSmooksActionGrouper = (ISmooksActionGrouper) iterator.next();
+ GroupAction ga = new GroupAction();
+ ga.setText(iSmooksActionGrouper.getGroupName());
+ fillGroupAction(ga, iSmooksActionGrouper);
+ if (!ga.getChildrenAction().isEmpty())
+ actions.add(ga);
+ }
+ List<IAction> tempActions = new ArrayList<IAction>(actions);
+ for (Iterator<?> iterator2 = this.childDescriptor.iterator();
iterator2.hasNext();) {
+ IAction c = (IAction) iterator2.next();
+ boolean exsit = false;
+ for (Iterator<?> iterator = tempActions.iterator(); iterator.hasNext();) {
+ IAction iAction = (IAction) iterator.next();
+ if (iAction instanceof GroupAction) {
+ List<IAction> childrenAction = ((GroupAction) iAction).getChildrenAction();
+ if (childrenAction.indexOf(c) != -1) {
+ exsit = true;
+ break;
+ }
+ }
+ }
+ if (!exsit && c.isEnabled()) {
+ actions.add(c);
+ }
+ }
+
+ return actions;
+ }
+
+ private void fillGroupAction(GroupAction ga, ISmooksActionGrouper grouper) {
+ if (childDescriptor != null) {
+ for (Iterator<?> iterator = childDescriptor.iterator(); iterator.hasNext();) {
+ AddSmooksResourceAction action = (AddSmooksResourceAction) iterator.next();
+ Object descriptor = action.getDescriptor();
+ if (grouper.belongsToGroup(descriptor) && action.isEnabled()) {
+ ga.addAction(action);
+ }
+ }
+ }
+ }
+
+ public NewSmooksElementWizardPage(String pageName, String title, ImageDescriptor
titleImage,
+ Collection<IAction> childDescriptor) {
+ super(pageName, title, titleImage);
+ this.childDescriptor = childDescriptor;
+ this.setTitle("Add Child");
+ this.setDescription("Add Smooks Elements");
+ }
+
+ public NewSmooksElementWizardPage(String pageName, Collection<IAction>
childDescriptor) {
+ super(pageName);
+ this.childDescriptor = childDescriptor;
+ this.setTitle("Add Child");
+ this.setDescription("Add Smooks Elements");
+ }
+
+ private List<ISmooksActionGrouper> getSmooksActionGrouper() {
+ List<ISmooksActionGrouper> grouperList = new
ArrayList<ISmooksActionGrouper>();
+
+ grouperList.add(new JavaBean11ActionGrouper());
+ grouperList.add(new Reader11ActionGrouper());
+ grouperList.add(new Calc11ActionGrouper());
+ grouperList.add(new Database11ActionGrouper());
+ grouperList.add(new Datasources11ActionGrouper());
+ grouperList.add(new FragmentRouting11ActionGrouper());
+ grouperList.add(new Scripting11ActionGrouper());
+ grouperList.add(new Templating11ActionGrouper());
+ // grouperList.add(new SeparatorActionGrouper("V1.1-V1.2"));
+ grouperList.add(new JavaBean12ActionGrouper());
+ grouperList.add(new Reader12ActionGrouper());
+ grouperList.add(new FragmentRouting12ActionGrouper());
+ grouperList.add(new PersistenceActionGrouper());
+ grouperList.add(new Validation10ActionGrouper());
+ // grouperList.add(new SeparatorActionGrouper("No Group actions"));
+ return grouperList;
+ }
+
+ private class SmooksElementActionsContentProvider implements ITreeContentProvider {
+
+ public Object[] getChildren(Object parentElement) {
+ if (parentElement instanceof Collection<?>) {
+ return ((Collection<?>) parentElement).toArray();
+ }
+ if (parentElement instanceof GroupAction) {
+ return ((GroupAction) parentElement).getChildrenAction().toArray();
+ }
+ return new Object[] {};
+ }
+
+ public Object getParent(Object element) {
+ return null;
+ }
+
+ public boolean hasChildren(Object element) {
+ if (element instanceof Collection<?>)
+ return !((Collection<?>) element).isEmpty();
+ if (element instanceof GroupAction) {
+ return !((GroupAction) element).getChildrenAction().isEmpty();
+ }
+ return false;
+ }
+
+ public Object[] getElements(Object inputElement) {
+ if (inputElement instanceof Collection<?>) {
+ return ((Collection<?>) inputElement).toArray();
+ }
+ return new Object[] {};
+ }
+
+ public void dispose() {
+
+ }
+
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+
+ }
+ }
+
+ private class GroupAction extends Action {
+
+ private List<IAction> childrenAction = null;
+
+ @Override
+ public void run() {
+ }
+
+ public List<IAction> getChildrenAction() {
+ if (childrenAction == null) {
+ childrenAction = new ArrayList<IAction>();
+ }
+ return childrenAction;
+ }
+
+ public void addAction(IAction action) {
+ this.getChildrenAction().add(action);
+ }
+
+ // public void removeAction(IAction action){
+ // this.getChildrenAction().remove(action);
+ // }
+
+ }
+
+ private class SmooksElementActionsLabelProvider extends LabelProvider {
+
+ private Map<Object, Object> imageMap = new HashMap<Object, Object>();
+
+ @Override
+ public void dispose() {
+ if (imageMap != null) {
+ Collection<?> values = imageMap.values();
+ for (Iterator<?> iterator = values.iterator(); iterator.hasNext();) {
+ Object object = (Object) iterator.next();
+ if (object != null && object instanceof Image) {
+ ((Image) object).dispose();
+ }
+ }
+ }
+ super.dispose();
+ }
+
+ @Override
+ public Image getImage(Object element) {
+ if (element instanceof IAction) {
+ String key = ((IAction) element).getText();
+ Image img = (Image) imageMap.get(key);
+ if (img == null) {
+ ImageDescriptor id = ((IAction) element).getImageDescriptor();
+ if (id == null)
+ return null;
+ img = id.createImage();
+ ((IAction) element).getDisabledImageDescriptor();
+ imageMap.put(key, img);
+ } else {
+
+ }
+ return img;
+ }
+ return super.getImage(element);
+ }
+
+ @Override
+ public String getText(Object element) {
+ if (element instanceof IAction) {
+ return ((IAction) element).getText();
+ }
+ return super.getText(element);
+ }
+
+ }
+}
Property changes on:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/wizards/NewSmooksElementWizardPage.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/SmooksGraphicalEditorPart.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/SmooksGraphicalEditorPart.java 2009-08-04
15:35:12 UTC (rev 16961)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/SmooksGraphicalEditorPart.java 2009-08-04
15:56:51 UTC (rev 16962)
@@ -11,18 +11,24 @@
package org.jboss.tools.smooks.graphical.editors;
import java.util.ArrayList;
+import java.util.Collection;
+import java.util.EventObject;
import java.util.Iterator;
import java.util.List;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CommandWrapper;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.command.AddCommand;
+import org.eclipse.emf.edit.command.DeleteCommand;
+import org.eclipse.emf.edit.command.SetCommand;
import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
import org.eclipse.gef.DefaultEditDomain;
-import org.eclipse.gef.EditDomain;
import org.eclipse.gef.EditPart;
import org.eclipse.gef.commands.CommandStackEvent;
import org.eclipse.gef.commands.CommandStackEventListener;
@@ -91,7 +97,51 @@
this.smooksModelProvider = provider;
this.setEditDomain(editDomain);
}
+
+ private void handleCommandStack(org.eclipse.emf.common.command.CommandStack
commandStack) {
+ commandStack.addCommandStackListener(new
org.eclipse.emf.common.command.CommandStackListener() {
+ public void commandStackChanged(EventObject event) {
+ final Command mostRecentCommand = ((org.eclipse.emf.common.command.CommandStack)
event.getSource())
+ .getMostRecentCommand();
+ getEditorSite().getShell().getDisplay().asyncExec(new Runnable() {
+ public void run() {
+ if (mostRecentCommand != null) {
+ Command rawCommand = mostRecentCommand;
+ while (rawCommand instanceof CommandWrapper) {
+ rawCommand = ((CommandWrapper) rawCommand).getCommand();
+ }
+ if (rawCommand instanceof SetCommand || rawCommand instanceof AddCommand
+ || rawCommand instanceof DeleteCommand) {
+ refershRecentAffectedModel(rawCommand, mostRecentCommand.getAffectedObjects());
+ }
+ }
+ }
+
+ });
+ }
+ });
+ }
+
+ protected void refershRecentAffectedModel(Command command, Collection<?>
affectedObjects) {
+ for (Iterator<?> iterator = affectedObjects.iterator(); iterator.hasNext();) {
+ Object object = (Object) iterator.next();
+ TreeNodeModel node = findGraphicalModel(object);
+ if (node == null)
+ continue;
+ if (command instanceof SetCommand) {
+ node.fireVisualChanged();
+ }
+ if (command instanceof AddCommand || command instanceof DeleteCommand) {
+ node.fireChildrenChanged();
+ node.fireConnectionChanged();
+ }
+ }
+ }
+ private TreeNodeModel findGraphicalModel(Object object) {
+ return null;
+ }
+
public DefaultEditDomain getEditDomain() {
return editDomain;
}
@@ -294,6 +344,9 @@
public void init(IEditorSite site, IEditorInput input) throws PartInitException {
super.init(site, input);
initSmooksData();
+ if(smooksModelProvider != null){
+ this.handleCommandStack(smooksModelProvider.getEditingDomain().getCommandStack());
+ }
}
protected void expandConnectedModels(List<TreeNodeConnection> connections) {