[371018] Experimental Complete OCL SaveAs action
diff --git a/examples/org.eclipse.ocl.examples.xtext.completeocl.ui/plugin.properties b/examples/org.eclipse.ocl.examples.xtext.completeocl.ui/plugin.properties
index 443cdda..e747538 100644
--- a/examples/org.eclipse.ocl.examples.xtext.completeocl.ui/plugin.properties
+++ b/examples/org.eclipse.ocl.examples.xtext.completeocl.ui/plugin.properties
@@ -22,6 +22,10 @@
MF_LoadOCLResource_label = Load Complete OCL Resource
MF_OpenQuickOutline = Open the quick outline.
MF_QuickOutline = Quick Outline
+MF_SaveAs = Save As
+MF_SaveAsPivot = Pivot
+MF_SaveAsPivot_Command = Save As Pivot Command
+MF_SaveAsPivot_Description = Save file changing format to Pivot
MF_SyntaxColoring = Syntax Coloring
MF_Templates = Templates
MF_TriggerExpensiveValidation = Trigger expensive validation
diff --git a/examples/org.eclipse.ocl.examples.xtext.completeocl.ui/plugin.xml b/examples/org.eclipse.ocl.examples.xtext.completeocl.ui/plugin.xml
index 8f6d864..b6aca93 100644
--- a/examples/org.eclipse.ocl.examples.xtext.completeocl.ui/plugin.xml
+++ b/examples/org.eclipse.ocl.examples.xtext.completeocl.ui/plugin.xml
@@ -222,5 +222,38 @@
locationURI="popup:#TextEditorContext?after=group.open" TextEditor, Xtexteditor, not Ecore editor
-->
</extension>
+ <extension point="org.eclipse.ui.handlers">
+ <handler commandId="org.eclipse.ocl.examples.xtext.completeocl.ui.outline.SaveAsPivotCommand"
+ class="org.eclipse.ocl.examples.xtext.completeocl.ui.commands.SaveAsPivotHandler"/>
+ </extension>
+ <extension point="org.eclipse.ui.commands">
+ <command id="org.eclipse.ocl.examples.xtext.completeocl.ui.outline.SaveAsPivotCommand"
+ name="%MF_SaveAsPivot_Command" description="%MF_SaveAsPivot_Description"/>
+ </extension>
+ <extension point="org.eclipse.ui.menus">
+ <menuContribution locationURI="popup:#TextEditorContext?before=group.open">
+ <menu id="org.eclipse.ocl.examples.xtext.completeocl.ui.SaveAs" label="%MF_SaveAs"/>
+ </menuContribution>
+ <menuContribution locationURI="popup:org.eclipse.ocl.examples.xtext.completeocl.ui.SaveAs?after=additions">
+ <command commandId="org.eclipse.ocl.examples.xtext.completeocl.ui.outline.SaveAsPivotCommand"
+ label="%MF_SaveAsPivot">
+ <visibleWhen checkEnabled="false">
+ <reference
+ definitionId="org.eclipse.ocl.examples.xtext.completeocl.CompleteOCL.Editor.opened">
+ </reference>
+ </visibleWhen>
+ </command>
+ </menuContribution>
+ <menuContribution locationURI="popup:#TextEditorContext?after=group.rest">
+ <command commandId="org.eclipse.ocl.examples.xtext.oclinecore.ui.outline.CreateDynamicInstanceCommand"
+ label="%MF_CreateDynamicInstance">
+ <visibleWhen checkEnabled="false">
+ <reference
+ definitionId="org.eclipse.ocl.examples.xtext.oclinecore.OCLinEcore.Editor.opened">
+ </reference>
+ </visibleWhen>
+ </command>
+ </menuContribution>
+ </extension>
</plugin>
diff --git a/examples/org.eclipse.ocl.examples.xtext.completeocl.ui/src/org/eclipse/ocl/examples/xtext/completeocl/ui/commands/SaveAsPivotHandler.java b/examples/org.eclipse.ocl.examples.xtext.completeocl.ui/src/org/eclipse/ocl/examples/xtext/completeocl/ui/commands/SaveAsPivotHandler.java
new file mode 100644
index 0000000..315e2ab
--- /dev/null
+++ b/examples/org.eclipse.ocl.examples.xtext.completeocl.ui/src/org/eclipse/ocl/examples/xtext/completeocl/ui/commands/SaveAsPivotHandler.java
@@ -0,0 +1,64 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2012 E.D.Willink and others.
+ * All rights reserved. This program and the accompanying materials
+ * are 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:
+ * E.D.Willink - initial API and implementation
+ *
+ * </copyright>
+ */
+package org.eclipse.ocl.examples.xtext.completeocl.ui.commands;
+
+import java.util.Map;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.ocl.examples.xtext.base.utilities.BaseCSResource;
+import org.eclipse.ocl.examples.xtext.base.utilities.CS2PivotResourceAdapter;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.handlers.HandlerUtil;
+import org.eclipse.ui.texteditor.IDocumentProvider;
+import org.eclipse.xtext.resource.XtextResource;
+import org.eclipse.xtext.ui.editor.XtextEditor;
+import org.eclipse.xtext.ui.editor.model.XtextDocument;
+import org.eclipse.xtext.util.concurrent.IUnitOfWork;
+
+public class SaveAsPivotHandler extends AbstractHandler
+{
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindow(event);
+ if (window == null) {
+ return null;
+ }
+ IEditorPart editor = HandlerUtil.getActiveEditor(event);
+ if (!(editor instanceof XtextEditor)) {
+ return null;
+ }
+ final String file = "C:/Temp/test.xmi";
+ final Map<?, ?> saveOptions = null;
+ IDocumentProvider documentProvider = ((XtextEditor)editor).getDocumentProvider();
+ XtextDocument editorDocument = (XtextDocument) documentProvider.getDocument(editor.getEditorInput());
+ editorDocument.modify(new IUnitOfWork<Object, XtextResource>()
+ {
+
+ public Object exec(XtextResource resource) throws Exception {
+ CS2PivotResourceAdapter csAdapter = CS2PivotResourceAdapter.getAdapter((BaseCSResource)resource, null);
+ csAdapter.refreshPivotMappings(null); // FIXME redundant
+ Resource pivotResource = csAdapter.getPivotResource(resource);
+ pivotResource.setURI(URI.createFileURI(file));
+ pivotResource.save(saveOptions);
+ return null;
+ }
+ });
+ return null;
+ }
+}