Added: 
commons/sandbox/gsoc/2010/scxml-eclipse/trunk/src/main/java/org.apache.commons.scxml.diagram/src/org/apache/commons/scxml/modeling/diagram/part/ModelingCreationWizardPage.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-eclipse/trunk/src/main/java/org.apache.commons.scxml.diagram/src/org/apache/commons/scxml/modeling/diagram/part/ModelingCreationWizardPage.java?rev=945691&view=auto
==============================================================================
--- 
commons/sandbox/gsoc/2010/scxml-eclipse/trunk/src/main/java/org.apache.commons.scxml.diagram/src/org/apache/commons/scxml/modeling/diagram/part/ModelingCreationWizardPage.java
 (added)
+++ 
commons/sandbox/gsoc/2010/scxml-eclipse/trunk/src/main/java/org.apache.commons.scxml.diagram/src/org/apache/commons/scxml/modeling/diagram/part/ModelingCreationWizardPage.java
 Tue May 18 15:13:13 2010
@@ -0,0 +1,88 @@
+package org.apache.commons.scxml.modeling.diagram.part;
+
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
+
+/**
+ * @generated
+ */
+public class ModelingCreationWizardPage extends WizardNewFileCreationPage {
+
+       /**
+        * @generated
+        */
+       private final String fileExtension;
+
+       /**
+        * @generated
+        */
+       public ModelingCreationWizardPage(String pageName,
+                       IStructuredSelection selection, String fileExtension) {
+               super(pageName, selection);
+               this.fileExtension = fileExtension;
+       }
+
+       /**
+        * Override to create files with this extension.
+        * 
+        * @generated
+        */
+       protected String getExtension() {
+               return fileExtension;
+       }
+
+       /**
+        * @generated
+        */
+       public URI getURI() {
+               return URI.createPlatformResourceURI(getFilePath().toString(), 
false);
+       }
+
+       /**
+        * @generated
+        */
+       protected IPath getFilePath() {
+               IPath path = getContainerFullPath();
+               if (path == null) {
+                       path = new Path(""); //$NON-NLS-1$
+               }
+               String fileName = getFileName();
+               if (fileName != null) {
+                       path = path.append(fileName);
+               }
+               return path;
+       }
+
+       /**
+        * @generated
+        */
+       public void createControl(Composite parent) {
+               super.createControl(parent);
+               setFileName(ModelingDiagramEditorUtil.getUniqueFileName(
+                               getContainerFullPath(), getFileName(), 
getExtension()));
+               setPageComplete(validatePage());
+       }
+
+       /**
+        * @generated
+        */
+       protected boolean validatePage() {
+               if (!super.validatePage()) {
+                       return false;
+               }
+               String extension = getExtension();
+               if (extension != null
+                               && !getFilePath().toString().endsWith("." + 
extension)) {
+                       setErrorMessage(NLS.bind(
+                                       
Messages.ModelingCreationWizardPageExtensionError,
+                                       extension));
+                       return false;
+               }
+               return true;
+       }
+}

Propchange: 
commons/sandbox/gsoc/2010/scxml-eclipse/trunk/src/main/java/org.apache.commons.scxml.diagram/src/org/apache/commons/scxml/modeling/diagram/part/ModelingCreationWizardPage.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
commons/sandbox/gsoc/2010/scxml-eclipse/trunk/src/main/java/org.apache.commons.scxml.diagram/src/org/apache/commons/scxml/modeling/diagram/part/ModelingDiagramActionBarContributor.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-eclipse/trunk/src/main/java/org.apache.commons.scxml.diagram/src/org/apache/commons/scxml/modeling/diagram/part/ModelingDiagramActionBarContributor.java?rev=945691&view=auto
==============================================================================
--- 
commons/sandbox/gsoc/2010/scxml-eclipse/trunk/src/main/java/org.apache.commons.scxml.diagram/src/org/apache/commons/scxml/modeling/diagram/part/ModelingDiagramActionBarContributor.java
 (added)
+++ 
commons/sandbox/gsoc/2010/scxml-eclipse/trunk/src/main/java/org.apache.commons.scxml.diagram/src/org/apache/commons/scxml/modeling/diagram/part/ModelingDiagramActionBarContributor.java
 Tue May 18 15:13:13 2010
@@ -0,0 +1,24 @@
+package org.apache.commons.scxml.modeling.diagram.part;
+
+import org.eclipse.gmf.runtime.diagram.ui.parts.DiagramActionBarContributor;
+
+/**
+ * @generated
+ */
+public class ModelingDiagramActionBarContributor extends
+               DiagramActionBarContributor {
+
+       /**
+        * @generated
+        */
+       protected Class getEditorClass() {
+               return ModelingDiagramEditor.class;
+       }
+
+       /**
+        * @generated
+        */
+       protected String getEditorId() {
+               return ModelingDiagramEditor.ID;
+       }
+}

Propchange: 
commons/sandbox/gsoc/2010/scxml-eclipse/trunk/src/main/java/org.apache.commons.scxml.diagram/src/org/apache/commons/scxml/modeling/diagram/part/ModelingDiagramActionBarContributor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
commons/sandbox/gsoc/2010/scxml-eclipse/trunk/src/main/java/org.apache.commons.scxml.diagram/src/org/apache/commons/scxml/modeling/diagram/part/ModelingDiagramEditor.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-eclipse/trunk/src/main/java/org.apache.commons.scxml.diagram/src/org/apache/commons/scxml/modeling/diagram/part/ModelingDiagramEditor.java?rev=945691&view=auto
==============================================================================
--- 
commons/sandbox/gsoc/2010/scxml-eclipse/trunk/src/main/java/org.apache.commons.scxml.diagram/src/org/apache/commons/scxml/modeling/diagram/part/ModelingDiagramEditor.java
 (added)
+++ 
commons/sandbox/gsoc/2010/scxml-eclipse/trunk/src/main/java/org.apache.commons.scxml.diagram/src/org/apache/commons/scxml/modeling/diagram/part/ModelingDiagramEditor.java
 Tue May 18 15:13:13 2010
@@ -0,0 +1,289 @@
+package org.apache.commons.scxml.modeling.diagram.part;
+
+import 
org.apache.commons.scxml.modeling.diagram.navigator.ModelingNavigatorItem;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.emf.common.ui.URIEditorInput;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.emf.workspace.util.WorkspaceSynchronizer;
+import org.eclipse.gef.palette.PaletteRoot;
+import 
org.eclipse.gmf.runtime.common.ui.services.marker.MarkerNavigationService;
+import org.eclipse.gmf.runtime.diagram.core.preferences.PreferencesHint;
+import org.eclipse.gmf.runtime.diagram.ui.actions.ActionIds;
+import 
org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.IDiagramDocument;
+import org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.IDocument;
+import 
org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.IDocumentProvider;
+import 
org.eclipse.gmf.runtime.diagram.ui.resources.editor.parts.DiagramDocumentEditor;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.jface.dialogs.ErrorDialog;
+import org.eclipse.jface.dialogs.IMessageProvider;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.window.Window;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorMatchingStrategy;
+import org.eclipse.ui.IEditorReference;
+import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.dialogs.SaveAsDialog;
+import org.eclipse.ui.ide.IGotoMarker;
+import org.eclipse.ui.navigator.resources.ProjectExplorer;
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.IShowInTargetList;
+import org.eclipse.ui.part.ShowInContext;
+
+/**
+ * @generated
+ */
+public class ModelingDiagramEditor extends DiagramDocumentEditor implements
+               IGotoMarker {
+
+       /**
+        * @generated
+        */
+       public static final String ID = 
"org.apache.commons.scxml.modeling.diagram.part.ModelingDiagramEditorID"; 
//$NON-NLS-1$
+
+       /**
+        * @generated
+        */
+       public static final String CONTEXT_ID = 
"org.apache.commons.scxml.modeling.diagram.ui.diagramContext"; //$NON-NLS-1$
+
+       /**
+        * @generated
+        */
+       public ModelingDiagramEditor() {
+               super(true);
+       }
+
+       /**
+        * @generated
+        */
+       protected String getContextID() {
+               return CONTEXT_ID;
+       }
+
+       /**
+        * @generated
+        */
+       protected PaletteRoot createPaletteRoot(PaletteRoot 
existingPaletteRoot) {
+               PaletteRoot root = super.createPaletteRoot(existingPaletteRoot);
+               new ModelingPaletteFactory().fillPalette(root);
+               return root;
+       }
+
+       /**
+        * @generated
+        */
+       protected PreferencesHint getPreferencesHint() {
+               return ModelingDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT;
+       }
+
+       /**
+        * @generated
+        */
+       public String getContributorId() {
+               return ModelingDiagramEditorPlugin.ID;
+       }
+
+       /**
+        * @generated
+        */
+       public Object getAdapter(Class type) {
+               if (type == IShowInTargetList.class) {
+                       return new IShowInTargetList() {
+                               public String[] getShowInTargetIds() {
+                                       return new String[] { 
ProjectExplorer.VIEW_ID };
+                               }
+                       };
+               }
+               return super.getAdapter(type);
+       }
+
+       /**
+        * @generated
+        */
+       protected IDocumentProvider getDocumentProvider(IEditorInput input) {
+               if (input instanceof IFileEditorInput
+                               || input instanceof URIEditorInput) {
+                       return ModelingDiagramEditorPlugin.getInstance()
+                                       .getDocumentProvider();
+               }
+               return super.getDocumentProvider(input);
+       }
+
+       /**
+        * @generated
+        */
+       public TransactionalEditingDomain getEditingDomain() {
+               IDocument document = getEditorInput() != null ? 
getDocumentProvider()
+                               .getDocument(getEditorInput()) : null;
+               if (document instanceof IDiagramDocument) {
+                       return ((IDiagramDocument) document).getEditingDomain();
+               }
+               return super.getEditingDomain();
+       }
+
+       /**
+        * @generated
+        */
+       protected void setDocumentProvider(IEditorInput input) {
+               if (input instanceof IFileEditorInput
+                               || input instanceof URIEditorInput) {
+                       
setDocumentProvider(ModelingDiagramEditorPlugin.getInstance()
+                                       .getDocumentProvider());
+               } else {
+                       super.setDocumentProvider(input);
+               }
+       }
+
+       /**
+        * @generated
+        */
+       public void gotoMarker(IMarker marker) {
+               MarkerNavigationService.getInstance().gotoMarker(this, marker);
+       }
+
+       /**
+        * @generated
+        */
+       public boolean isSaveAsAllowed() {
+               return true;
+       }
+
+       /**
+        * @generated
+        */
+       public void doSaveAs() {
+               performSaveAs(new NullProgressMonitor());
+       }
+
+       /**
+        * @generated
+        */
+       protected void performSaveAs(IProgressMonitor progressMonitor) {
+               Shell shell = getSite().getShell();
+               IEditorInput input = getEditorInput();
+               SaveAsDialog dialog = new SaveAsDialog(shell);
+               IFile original = input instanceof IFileEditorInput ? 
((IFileEditorInput) input)
+                               .getFile()
+                               : null;
+               if (original != null) {
+                       dialog.setOriginalFile(original);
+               }
+               dialog.create();
+               IDocumentProvider provider = getDocumentProvider();
+               if (provider == null) {
+                       // editor has been programmatically closed while the 
dialog was open
+                       return;
+               }
+               if (provider.isDeleted(input) && original != null) {
+                       String message = NLS.bind(
+                                       
Messages.ModelingDiagramEditor_SavingDeletedFile, original
+                                                       .getName());
+                       dialog.setErrorMessage(null);
+                       dialog.setMessage(message, IMessageProvider.WARNING);
+               }
+               if (dialog.open() == Window.CANCEL) {
+                       if (progressMonitor != null) {
+                               progressMonitor.setCanceled(true);
+                       }
+                       return;
+               }
+               IPath filePath = dialog.getResult();
+               if (filePath == null) {
+                       if (progressMonitor != null) {
+                               progressMonitor.setCanceled(true);
+                       }
+                       return;
+               }
+               IWorkspaceRoot workspaceRoot = 
ResourcesPlugin.getWorkspace().getRoot();
+               IFile file = workspaceRoot.getFile(filePath);
+               final IEditorInput newInput = new FileEditorInput(file);
+               // Check if the editor is already open
+               IEditorMatchingStrategy matchingStrategy = getEditorDescriptor()
+                               .getEditorMatchingStrategy();
+               IEditorReference[] editorRefs = PlatformUI.getWorkbench()
+                               .getActiveWorkbenchWindow().getActivePage()
+                               .getEditorReferences();
+               for (int i = 0; i < editorRefs.length; i++) {
+                       if (matchingStrategy.matches(editorRefs[i], newInput)) {
+                               MessageDialog.openWarning(shell,
+                                               
Messages.ModelingDiagramEditor_SaveAsErrorTitle,
+                                               
Messages.ModelingDiagramEditor_SaveAsErrorMessage);
+                               return;
+                       }
+               }
+               boolean success = false;
+               try {
+                       provider.aboutToChange(newInput);
+                       
getDocumentProvider(newInput).saveDocument(progressMonitor,
+                                       newInput,
+                                       
getDocumentProvider().getDocument(getEditorInput()), true);
+                       success = true;
+               } catch (CoreException x) {
+                       IStatus status = x.getStatus();
+                       if (status == null || status.getSeverity() != 
IStatus.CANCEL) {
+                               ErrorDialog.openError(shell,
+                                               
Messages.ModelingDiagramEditor_SaveErrorTitle,
+                                               
Messages.ModelingDiagramEditor_SaveErrorMessage, x
+                                                               .getStatus());
+                       }
+               } finally {
+                       provider.changed(newInput);
+                       if (success) {
+                               setInput(newInput);
+                       }
+               }
+               if (progressMonitor != null) {
+                       progressMonitor.setCanceled(!success);
+               }
+       }
+
+       /**
+        * @generated
+        */
+       public ShowInContext getShowInContext() {
+               return new ShowInContext(getEditorInput(), 
getNavigatorSelection());
+       }
+
+       /**
+        * @generated
+        */
+       private ISelection getNavigatorSelection() {
+               IDiagramDocument document = getDiagramDocument();
+               if (document == null) {
+                       return StructuredSelection.EMPTY;
+               }
+               Diagram diagram = document.getDiagram();
+               IFile file = WorkspaceSynchronizer.getFile(diagram.eResource());
+               if (file != null) {
+                       ModelingNavigatorItem item = new 
ModelingNavigatorItem(diagram,
+                                       file, false);
+                       return new StructuredSelection(item);
+               }
+               return StructuredSelection.EMPTY;
+       }
+
+       /**
+        * @generated
+        */
+       protected void configureGraphicalViewer() {
+               super.configureGraphicalViewer();
+               DiagramEditorContextMenuProvider provider = new 
DiagramEditorContextMenuProvider(
+                               this, getDiagramGraphicalViewer());
+               getDiagramGraphicalViewer().setContextMenu(provider);
+               
getSite().registerContextMenu(ActionIds.DIAGRAM_EDITOR_CONTEXT_MENU,
+                               provider, getDiagramGraphicalViewer());
+       }
+
+}

Propchange: 
commons/sandbox/gsoc/2010/scxml-eclipse/trunk/src/main/java/org.apache.commons.scxml.diagram/src/org/apache/commons/scxml/modeling/diagram/part/ModelingDiagramEditor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
commons/sandbox/gsoc/2010/scxml-eclipse/trunk/src/main/java/org.apache.commons.scxml.diagram/src/org/apache/commons/scxml/modeling/diagram/part/ModelingDiagramEditorPlugin.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-eclipse/trunk/src/main/java/org.apache.commons.scxml.diagram/src/org/apache/commons/scxml/modeling/diagram/part/ModelingDiagramEditorPlugin.java?rev=945691&view=auto
==============================================================================
--- 
commons/sandbox/gsoc/2010/scxml-eclipse/trunk/src/main/java/org.apache.commons.scxml.diagram/src/org/apache/commons/scxml/modeling/diagram/part/ModelingDiagramEditorPlugin.java
 (added)
+++ 
commons/sandbox/gsoc/2010/scxml-eclipse/trunk/src/main/java/org.apache.commons.scxml.diagram/src/org/apache/commons/scxml/modeling/diagram/part/ModelingDiagramEditorPlugin.java
 Tue May 18 15:13:13 2010
@@ -0,0 +1,248 @@
+package org.apache.commons.scxml.modeling.diagram.part;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import 
org.apache.commons.scxml.modeling.provider.ModelingItemProviderAdapterFactory;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
+import 
org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory;
+import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry;
+import org.eclipse.gmf.runtime.diagram.core.preferences.PreferencesHint;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * @generated
+ */
+public class ModelingDiagramEditorPlugin extends AbstractUIPlugin {
+
+       /**
+        * @generated
+        */
+       public static final String ID = 
"org.apache.commons.scxml.modeling.diagram"; //$NON-NLS-1$
+
+       /**
+        * @generated
+        */
+       public static final PreferencesHint DIAGRAM_PREFERENCES_HINT = new 
PreferencesHint(
+                       ID);
+
+       /**
+        * @generated
+        */
+       private static ModelingDiagramEditorPlugin instance;
+
+       /**
+        * @generated
+        */
+       private ComposedAdapterFactory adapterFactory;
+
+       /**
+        * @generated
+        */
+       private ModelingDocumentProvider documentProvider;
+
+       /**
+        * @generated
+        */
+       public ModelingDiagramEditorPlugin() {
+       }
+
+       /**
+        * @generated
+        */
+       public void start(BundleContext context) throws Exception {
+               super.start(context);
+               instance = this;
+               
PreferencesHint.registerPreferenceStore(DIAGRAM_PREFERENCES_HINT,
+                               getPreferenceStore());
+               adapterFactory = createAdapterFactory();
+       }
+
+       /**
+        * @generated
+        */
+       public void stop(BundleContext context) throws Exception {
+               adapterFactory.dispose();
+               adapterFactory = null;
+               instance = null;
+               super.stop(context);
+       }
+
+       /**
+        * @generated
+        */
+       public static ModelingDiagramEditorPlugin getInstance() {
+               return instance;
+       }
+
+       /**
+        * @generated
+        */
+       protected ComposedAdapterFactory createAdapterFactory() {
+               List factories = new ArrayList();
+               fillItemProviderFactories(factories);
+               return new ComposedAdapterFactory(factories);
+       }
+
+       /**
+        * @generated
+        */
+       protected void fillItemProviderFactories(List factories) {
+               factories.add(new ModelingItemProviderAdapterFactory());
+               factories.add(new ResourceItemProviderAdapterFactory());
+               factories.add(new ReflectiveItemProviderAdapterFactory());
+       }
+
+       /**
+        * @generated
+        */
+       public AdapterFactory getItemProvidersAdapterFactory() {
+               return adapterFactory;
+       }
+
+       /**
+        * @generated
+        */
+       public ImageDescriptor getItemImageDescriptor(Object item) {
+               IItemLabelProvider labelProvider = (IItemLabelProvider) 
adapterFactory
+                               .adapt(item, IItemLabelProvider.class);
+               if (labelProvider != null) {
+                       return 
ExtendedImageRegistry.getInstance().getImageDescriptor(
+                                       labelProvider.getImage(item));
+               }
+               return null;
+       }
+
+       /**
+        * Returns an image descriptor for the image file at the given
+        * plug-in relative path.
+        *
+        * @generated
+        * @param path the path
+        * @return the image descriptor
+        */
+       public static ImageDescriptor getBundledImageDescriptor(String path) {
+               return AbstractUIPlugin.imageDescriptorFromPlugin(ID, path);
+       }
+
+       /**
+        * Respects images residing in any plug-in. If path is relative,
+        * then this bundle is looked up for the image, otherwise, for absolute 
+        * path, first segment is taken as id of plug-in with image
+        *
+        * @generated
+        * @param path the path to image, either absolute (with plug-in id as 
first segment), or relative for bundled images
+        * @return the image descriptor
+        */
+       public static ImageDescriptor findImageDescriptor(String path) {
+               final IPath p = new Path(path);
+               if (p.isAbsolute() && p.segmentCount() > 1) {
+                       return 
AbstractUIPlugin.imageDescriptorFromPlugin(p.segment(0), p
+                                       
.removeFirstSegments(1).makeAbsolute().toString());
+               } else {
+                       return 
getBundledImageDescriptor(p.makeAbsolute().toString());
+               }
+       }
+
+       /**
+        * Returns an image for the image file at the given plug-in relative 
path.
+        * Client do not need to dispose this image. Images will be disposed 
automatically.
+        *
+        * @generated
+        * @param path the path
+        * @return image instance
+        */
+       public Image getBundledImage(String path) {
+               Image image = getImageRegistry().get(path);
+               if (image == null) {
+                       getImageRegistry().put(path, 
getBundledImageDescriptor(path));
+                       image = getImageRegistry().get(path);
+               }
+               return image;
+       }
+
+       /**
+        * Returns string from plug-in's resource bundle
+        *
+        * @generated
+        */
+       public static String getString(String key) {
+               return Platform.getResourceString(getInstance().getBundle(), 
"%" + key); //$NON-NLS-1$
+       }
+
+       /**
+        * @generated
+        */
+       public ModelingDocumentProvider getDocumentProvider() {
+               if (documentProvider == null) {
+                       documentProvider = new ModelingDocumentProvider();
+               }
+               return documentProvider;
+       }
+
+       /**
+        * @generated
+        */
+       public void logError(String error) {
+               logError(error, null);
+       }
+
+       /**
+        * @generated
+        */
+       public void logError(String error, Throwable throwable) {
+               if (error == null && throwable != null) {
+                       error = throwable.getMessage();
+               }
+               getLog().log(
+                               new Status(IStatus.ERROR, 
ModelingDiagramEditorPlugin.ID,
+                                               IStatus.OK, error, throwable));
+               debug(error, throwable);
+       }
+
+       /**
+        * @generated
+        */
+       public void logInfo(String message) {
+               logInfo(message, null);
+       }
+
+       /**
+        * @generated
+        */
+       public void logInfo(String message, Throwable throwable) {
+               if (message == null && throwable != null) {
+                       message = throwable.getMessage();
+               }
+               getLog().log(
+                               new Status(IStatus.INFO, 
ModelingDiagramEditorPlugin.ID,
+                                               IStatus.OK, message, 
throwable));
+               debug(message, throwable);
+       }
+
+       /**
+        * @generated
+        */
+       private void debug(String message, Throwable throwable) {
+               if (!isDebugging()) {
+                       return;
+               }
+               if (message != null) {
+                       System.err.println(message);
+               }
+               if (throwable != null) {
+                       throwable.printStackTrace();
+               }
+       }
+}

Propchange: 
commons/sandbox/gsoc/2010/scxml-eclipse/trunk/src/main/java/org.apache.commons.scxml.diagram/src/org/apache/commons/scxml/modeling/diagram/part/ModelingDiagramEditorPlugin.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
commons/sandbox/gsoc/2010/scxml-eclipse/trunk/src/main/java/org.apache.commons.scxml.diagram/src/org/apache/commons/scxml/modeling/diagram/part/ModelingDiagramEditorUtil.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-eclipse/trunk/src/main/java/org.apache.commons.scxml.diagram/src/org/apache/commons/scxml/modeling/diagram/part/ModelingDiagramEditorUtil.java?rev=945691&view=auto
==============================================================================
--- 
commons/sandbox/gsoc/2010/scxml-eclipse/trunk/src/main/java/org.apache.commons.scxml.diagram/src/org/apache/commons/scxml/modeling/diagram/part/ModelingDiagramEditorUtil.java
 (added)
+++ 
commons/sandbox/gsoc/2010/scxml-eclipse/trunk/src/main/java/org.apache.commons.scxml.diagram/src/org/apache/commons/scxml/modeling/diagram/part/ModelingDiagramEditorUtil.java
 Tue May 18 15:13:13 2010
@@ -0,0 +1,430 @@
+package org.apache.commons.scxml.modeling.diagram.part;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import 
org.apache.commons.scxml.modeling.diagram.edit.parts.ServiceTemplateEditPart;
+import org.apache.commons.scxml.modeling.ModelingFactory;
+import org.apache.commons.scxml.modeling.ServiceTemplate;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.operations.OperationHistoryFactory;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.xmi.XMLResource;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.emf.workspace.util.WorkspaceSynchronizer;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gmf.runtime.common.core.command.CommandResult;
+import org.eclipse.gmf.runtime.diagram.core.services.ViewService;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.IPrimaryEditPart;
+import org.eclipse.gmf.runtime.diagram.ui.parts.IDiagramGraphicalViewer;
+import org.eclipse.gmf.runtime.diagram.ui.parts.IDiagramWorkbenchPart;
+import 
org.eclipse.gmf.runtime.emf.commands.core.command.AbstractTransactionalCommand;
+import org.eclipse.gmf.runtime.emf.core.GMFEditingDomainFactory;
+import org.eclipse.gmf.runtime.emf.core.util.EMFCoreUtil;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.jface.dialogs.IDialogSettings;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.part.FileEditorInput;
+
+/**
+ * @generated
+ */
+public class ModelingDiagramEditorUtil {
+
+       /**
+        * @generated
+        */
+       public static Map getSaveOptions() {
+               Map saveOptions = new HashMap();
+               saveOptions.put(XMLResource.OPTION_ENCODING, "UTF-8"); 
//$NON-NLS-1$
+               saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED,
+                               
Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER);
+               return saveOptions;
+       }
+
+       /**
+        * @generated
+        */
+       public static boolean openDiagram(Resource diagram)
+                       throws PartInitException {
+               String path = diagram.getURI().toPlatformString(true);
+               IResource workspaceResource = 
ResourcesPlugin.getWorkspace().getRoot()
+                               .findMember(new Path(path));
+               if (workspaceResource instanceof IFile) {
+                       IWorkbenchPage page = PlatformUI.getWorkbench()
+                                       
.getActiveWorkbenchWindow().getActivePage();
+                       return null != page.openEditor(new FileEditorInput(
+                                       (IFile) workspaceResource), 
ModelingDiagramEditor.ID);
+               }
+               return false;
+       }
+
+       /**
+        * @generated
+        */
+       public static void setCharset(IFile file) {
+               if (file == null) {
+                       return;
+               }
+               try {
+                       file.setCharset("UTF-8", new NullProgressMonitor()); 
//$NON-NLS-1$
+               } catch (CoreException e) {
+                       ModelingDiagramEditorPlugin.getInstance().logError(
+                                       "Unable to set charset for file " + 
file.getFullPath(), e); //$NON-NLS-1$
+               }
+       }
+
+       /**
+        * @generated
+        */
+       public static String getUniqueFileName(IPath containerFullPath,
+                       String fileName, String extension) {
+               if (containerFullPath == null) {
+                       containerFullPath = new Path(""); //$NON-NLS-1$
+               }
+               if (fileName == null || fileName.trim().length() == 0) {
+                       fileName = "default"; //$NON-NLS-1$
+               }
+               IPath filePath = containerFullPath.append(fileName);
+               if (extension != null && 
!extension.equals(filePath.getFileExtension())) {
+                       filePath = filePath.addFileExtension(extension);
+               }
+               extension = filePath.getFileExtension();
+               fileName = filePath.removeFileExtension().lastSegment();
+               int i = 1;
+               while 
(ResourcesPlugin.getWorkspace().getRoot().exists(filePath)) {
+                       i++;
+                       filePath = containerFullPath.append(fileName + i);
+                       if (extension != null) {
+                               filePath = filePath.addFileExtension(extension);
+                       }
+               }
+               return filePath.lastSegment();
+       }
+
+       /**
+        * Runs the wizard in a dialog.
+        * 
+        * @generated
+        */
+       public static void runWizard(Shell shell, Wizard wizard, String 
settingsKey) {
+               IDialogSettings pluginDialogSettings = 
ModelingDiagramEditorPlugin
+                               .getInstance().getDialogSettings();
+               IDialogSettings wizardDialogSettings = pluginDialogSettings
+                               .getSection(settingsKey);
+               if (wizardDialogSettings == null) {
+                       wizardDialogSettings = pluginDialogSettings
+                                       .addNewSection(settingsKey);
+               }
+               wizard.setDialogSettings(wizardDialogSettings);
+               WizardDialog dialog = new WizardDialog(shell, wizard);
+               dialog.create();
+               dialog.getShell().setSize(Math.max(500, 
dialog.getShell().getSize().x),
+                               500);
+               dialog.open();
+       }
+
+       /**
+        * This method should be called within a workspace modify operation 
since it creates resources.
+        * @generated
+        */
+       public static Resource createDiagram(URI diagramURI, URI modelURI,
+                       IProgressMonitor progressMonitor) {
+               TransactionalEditingDomain editingDomain = 
GMFEditingDomainFactory.INSTANCE
+                               .createEditingDomain();
+               progressMonitor
+                               .beginTask(
+                                               
Messages.ModelingDiagramEditorUtil_CreateDiagramProgressTask,
+                                               3);
+               final Resource diagramResource = editingDomain.getResourceSet()
+                               .createResource(diagramURI);
+               final Resource modelResource = editingDomain.getResourceSet()
+                               .createResource(modelURI);
+               final String diagramName = diagramURI.lastSegment();
+               AbstractTransactionalCommand command = new 
AbstractTransactionalCommand(
+                               editingDomain,
+                               
Messages.ModelingDiagramEditorUtil_CreateDiagramCommandLabel,
+                               Collections.EMPTY_LIST) {
+                       protected CommandResult doExecuteWithResult(
+                                       IProgressMonitor monitor, IAdaptable 
info)
+                                       throws ExecutionException {
+                               ServiceTemplate model = createInitialModel();
+                               attachModelToResource(model, modelResource);
+
+                               Diagram diagram = 
ViewService.createDiagram(model,
+                                               
ServiceTemplateEditPart.MODEL_ID,
+                                               
ModelingDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
+                               if (diagram != null) {
+                                       
diagramResource.getContents().add(diagram);
+                                       diagram.setName(diagramName);
+                                       diagram.setElement(model);
+                               }
+
+                               try {
+                                       modelResource
+                                                       
.save(org.apache.commons.scxml.modeling.diagram.part.ModelingDiagramEditorUtil
+                                                                       
.getSaveOptions());
+                                       diagramResource
+                                                       
.save(org.apache.commons.scxml.modeling.diagram.part.ModelingDiagramEditorUtil
+                                                                       
.getSaveOptions());
+                               } catch (IOException e) {
+
+                                       
ModelingDiagramEditorPlugin.getInstance().logError(
+                                                       "Unable to store model 
and diagram resources", e); //$NON-NLS-1$
+                               }
+                               return CommandResult.newOKCommandResult();
+                       }
+               };
+               try {
+                       
OperationHistoryFactory.getOperationHistory().execute(command,
+                                       new SubProgressMonitor(progressMonitor, 
1), null);
+               } catch (ExecutionException e) {
+                       ModelingDiagramEditorPlugin.getInstance().logError(
+                                       "Unable to create model and diagram", 
e); //$NON-NLS-1$
+               }
+               setCharset(WorkspaceSynchronizer.getFile(modelResource));
+               setCharset(WorkspaceSynchronizer.getFile(diagramResource));
+               return diagramResource;
+       }
+
+       /**
+        * Create a new instance of domain element associated with canvas.
+        * <!-- begin-user-doc -->
+        * <!-- end-user-doc -->
+        * @generated
+        */
+       private static ServiceTemplate createInitialModel() {
+               return ModelingFactory.eINSTANCE.createServiceTemplate();
+       }
+
+       /**
+        * Store model element in the resource.
+        * <!-- begin-user-doc -->
+        * <!-- end-user-doc -->
+        * @generated
+        */
+       private static void attachModelToResource(ServiceTemplate model,
+                       Resource resource) {
+               resource.getContents().add(model);
+       }
+
+       /**
+        * @generated
+        */
+       public static void selectElementsInDiagram(
+                       IDiagramWorkbenchPart diagramPart, 
List/*EditPart*/editParts) {
+               diagramPart.getDiagramGraphicalViewer().deselectAll();
+
+               EditPart firstPrimary = null;
+               for (Iterator it = editParts.iterator(); it.hasNext();) {
+                       EditPart nextPart = (EditPart) it.next();
+                       
diagramPart.getDiagramGraphicalViewer().appendSelection(nextPart);
+                       if (firstPrimary == null && nextPart instanceof 
IPrimaryEditPart) {
+                               firstPrimary = nextPart;
+                       }
+               }
+
+               if (!editParts.isEmpty()) {
+                       diagramPart.getDiagramGraphicalViewer().reveal(
+                                       firstPrimary != null ? firstPrimary : 
(EditPart) editParts
+                                                       .get(0));
+               }
+       }
+
+       /**
+        * @generated
+        */
+       private static int findElementsInDiagramByID(DiagramEditPart 
diagramPart,
+                       EObject element, List editPartCollector) {
+               IDiagramGraphicalViewer viewer = (IDiagramGraphicalViewer) 
diagramPart
+                               .getViewer();
+               final int intialNumOfEditParts = editPartCollector.size();
+
+               if (element instanceof View) { // support notation element 
lookup
+                       EditPart editPart = (EditPart) 
viewer.getEditPartRegistry().get(
+                                       element);
+                       if (editPart != null) {
+                               editPartCollector.add(editPart);
+                               return 1;
+                       }
+               }
+
+               String elementID = EMFCoreUtil.getProxyID(element);
+               List associatedParts = viewer.findEditPartsForElement(elementID,
+                               IGraphicalEditPart.class);
+               // perform the possible hierarchy disjoint -> take the top-most 
parts only
+               for (Iterator editPartIt = associatedParts.iterator(); 
editPartIt
+                               .hasNext();) {
+                       EditPart nextPart = (EditPart) editPartIt.next();
+                       EditPart parentPart = nextPart.getParent();
+                       while (parentPart != null && 
!associatedParts.contains(parentPart)) {
+                               parentPart = parentPart.getParent();
+                       }
+                       if (parentPart == null) {
+                               editPartCollector.add(nextPart);
+                       }
+               }
+
+               if (intialNumOfEditParts == editPartCollector.size()) {
+                       if (!associatedParts.isEmpty()) {
+                               
editPartCollector.add(associatedParts.iterator().next());
+                       } else {
+                               if (element.eContainer() != null) {
+                                       return 
findElementsInDiagramByID(diagramPart, element
+                                                       .eContainer(), 
editPartCollector);
+                               }
+                       }
+               }
+               return editPartCollector.size() - intialNumOfEditParts;
+       }
+
+       /**
+        * @generated
+        */
+       public static View findView(DiagramEditPart diagramEditPart,
+                       EObject targetElement, LazyElement2ViewMap 
lazyElement2ViewMap) {
+               boolean hasStructuralURI = false;
+               if (targetElement.eResource() instanceof XMLResource) {
+                       hasStructuralURI = ((XMLResource) 
targetElement.eResource())
+                                       .getID(targetElement) == null;
+               }
+
+               View view = null;
+               if (hasStructuralURI
+                               && 
!lazyElement2ViewMap.getElement2ViewMap().isEmpty()) {
+                       view = (View) 
lazyElement2ViewMap.getElement2ViewMap().get(
+                                       targetElement);
+               } else if (findElementsInDiagramByID(diagramEditPart, 
targetElement,
+                               lazyElement2ViewMap.editPartTmpHolder) > 0) {
+                       EditPart editPart = (EditPart) 
lazyElement2ViewMap.editPartTmpHolder
+                                       .get(0);
+                       lazyElement2ViewMap.editPartTmpHolder.clear();
+                       view = editPart.getModel() instanceof View ? (View) 
editPart
+                                       .getModel() : null;
+               }
+
+               return (view == null) ? diagramEditPart.getDiagramView() : view;
+       }
+
+       /**
+        * @generated
+        */
+       public static class LazyElement2ViewMap {
+               /**
+                * @generated
+                */
+               private Map element2ViewMap;
+
+               /**
+                * @generated
+                */
+               private View scope;
+
+               /**
+                * @generated
+                */
+               private Set elementSet;
+
+               /**
+                * @generated
+                */
+               public final List editPartTmpHolder = new ArrayList();
+
+               /**
+                * @generated
+                */
+               public LazyElement2ViewMap(View scope, Set elements) {
+                       this.scope = scope;
+                       this.elementSet = elements;
+               }
+
+               /**
+                * @generated
+                */
+               public final Map getElement2ViewMap() {
+                       if (element2ViewMap == null) {
+                               element2ViewMap = new HashMap();
+                               // map possible notation elements to itself as 
these can't be found by view.getElement()
+                               for (Iterator it = elementSet.iterator(); 
it.hasNext();) {
+                                       EObject element = (EObject) it.next();
+                                       if (element instanceof View) {
+                                               View view = (View) element;
+                                               if (view.getDiagram() == 
scope.getDiagram()) {
+                                                       
element2ViewMap.put(element, element); // take only those that part of our 
diagram
+                                               }
+                                       }
+                               }
+
+                               buildElement2ViewMap(scope, element2ViewMap, 
elementSet);
+                       }
+                       return element2ViewMap;
+               }
+
+               /**
+                * @generated
+                */
+               static Map buildElement2ViewMap(View parentView, Map 
element2ViewMap,
+                               Set elements) {
+                       if (elements.size() == element2ViewMap.size())
+                               return element2ViewMap;
+
+                       if (parentView.isSetElement()
+                                       && 
!element2ViewMap.containsKey(parentView.getElement())
+                                       && 
elements.contains(parentView.getElement())) {
+                               element2ViewMap.put(parentView.getElement(), 
parentView);
+                               if (elements.size() == element2ViewMap.size())
+                                       return element2ViewMap;
+                       }
+
+                       for (Iterator it = parentView.getChildren().iterator(); 
it
+                                       .hasNext();) {
+                               buildElement2ViewMap((View) it.next(), 
element2ViewMap,
+                                               elements);
+                               if (elements.size() == element2ViewMap.size())
+                                       return element2ViewMap;
+                       }
+                       for (Iterator it = 
parentView.getSourceEdges().iterator(); it
+                                       .hasNext();) {
+                               buildElement2ViewMap((View) it.next(), 
element2ViewMap,
+                                               elements);
+                               if (elements.size() == element2ViewMap.size())
+                                       return element2ViewMap;
+                       }
+                       for (Iterator it = 
parentView.getSourceEdges().iterator(); it
+                                       .hasNext();) {
+                               buildElement2ViewMap((View) it.next(), 
element2ViewMap,
+                                               elements);
+                               if (elements.size() == element2ViewMap.size())
+                                       return element2ViewMap;
+                       }
+                       return element2ViewMap;
+               }
+       } //LazyElement2ViewMap 
+
+}

Propchange: 
commons/sandbox/gsoc/2010/scxml-eclipse/trunk/src/main/java/org.apache.commons.scxml.diagram/src/org/apache/commons/scxml/modeling/diagram/part/ModelingDiagramEditorUtil.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
commons/sandbox/gsoc/2010/scxml-eclipse/trunk/src/main/java/org.apache.commons.scxml.diagram/src/org/apache/commons/scxml/modeling/diagram/part/ModelingDiagramUpdateCommand.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-eclipse/trunk/src/main/java/org.apache.commons.scxml.diagram/src/org/apache/commons/scxml/modeling/diagram/part/ModelingDiagramUpdateCommand.java?rev=945691&view=auto
==============================================================================
--- 
commons/sandbox/gsoc/2010/scxml-eclipse/trunk/src/main/java/org.apache.commons.scxml.diagram/src/org/apache/commons/scxml/modeling/diagram/part/ModelingDiagramUpdateCommand.java
 (added)
+++ 
commons/sandbox/gsoc/2010/scxml-eclipse/trunk/src/main/java/org.apache.commons.scxml.diagram/src/org/apache/commons/scxml/modeling/diagram/part/ModelingDiagramUpdateCommand.java
 Tue May 18 15:13:13 2010
@@ -0,0 +1,85 @@
+package org.apache.commons.scxml.modeling.diagram.part;
+
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.IHandler;
+import org.eclipse.core.commands.IHandlerListener;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * @generated
+ */
+public class ModelingDiagramUpdateCommand implements IHandler {
+
+       /**
+        * @generated
+        */
+       public void addHandlerListener(IHandlerListener handlerListener) {
+       }
+
+       /**
+        * @generated
+        */
+       public void dispose() {
+       }
+
+       /**
+        * @generated
+        */
+       public Object execute(ExecutionEvent event) throws ExecutionException {
+               ISelection selection = PlatformUI.getWorkbench()
+                               
.getActiveWorkbenchWindow().getSelectionService()
+                               .getSelection();
+               if (selection instanceof IStructuredSelection) {
+                       IStructuredSelection structuredSelection = 
(IStructuredSelection) selection;
+                       if (structuredSelection.size() != 1) {
+                               return null;
+                       }
+                       if (structuredSelection.getFirstElement() instanceof 
EditPart
+                                       && ((EditPart) 
structuredSelection.getFirstElement())
+                                                       .getModel() instanceof 
View) {
+                               EObject modelElement = ((View) ((EditPart) 
structuredSelection
+                                               
.getFirstElement()).getModel()).getElement();
+                               List editPolicies = CanonicalEditPolicy
+                                               
.getRegisteredEditPolicies(modelElement);
+                               for (Iterator it = editPolicies.iterator(); 
it.hasNext();) {
+                                       CanonicalEditPolicy nextEditPolicy = 
(CanonicalEditPolicy) it
+                                                       .next();
+                                       nextEditPolicy.refresh();
+                               }
+
+                       }
+               }
+               return null;
+       }
+
+       /**
+        * @generated
+        */
+       public boolean isEnabled() {
+               return true;
+       }
+
+       /**
+        * @generated
+        */
+       public boolean isHandled() {
+               return true;
+       }
+
+       /**
+        * @generated
+        */
+       public void removeHandlerListener(IHandlerListener handlerListener) {
+       }
+
+}

Propchange: 
commons/sandbox/gsoc/2010/scxml-eclipse/trunk/src/main/java/org.apache.commons.scxml.diagram/src/org/apache/commons/scxml/modeling/diagram/part/ModelingDiagramUpdateCommand.java
------------------------------------------------------------------------------
    svn:eol-style = native


Reply via email to