[351579] Add a Validate action
diff --git a/examples/org.eclipse.ocl.examples.xtext.console/icons/elcl16/validate.gif b/examples/org.eclipse.ocl.examples.xtext.console/icons/elcl16/validate.gif
new file mode 100644
index 0000000..acfb2a6
--- /dev/null
+++ b/examples/org.eclipse.ocl.examples.xtext.console/icons/elcl16/validate.gif
Binary files differ
diff --git a/examples/org.eclipse.ocl.examples.xtext.console/src/org/eclipse/ocl/examples/xtext/console/OCLConsolePage.java b/examples/org.eclipse.ocl.examples.xtext.console/src/org/eclipse/ocl/examples/xtext/console/OCLConsolePage.java
index a2815ea..b631344 100644
--- a/examples/org.eclipse.ocl.examples.xtext.console/src/org/eclipse/ocl/examples/xtext/console/OCLConsolePage.java
+++ b/examples/org.eclipse.ocl.examples.xtext.console/src/org/eclipse/ocl/examples/xtext/console/OCLConsolePage.java
@@ -86,6 +86,7 @@
import org.eclipse.ocl.examples.xtext.console.actions.LoadExpressionAction;
import org.eclipse.ocl.examples.xtext.console.actions.LoadResourceAction;
import org.eclipse.ocl.examples.xtext.console.actions.SaveExpressionAction;
+import org.eclipse.ocl.examples.xtext.console.actions.ValidateAction;
import org.eclipse.ocl.examples.xtext.console.messages.ConsoleMessages;
import org.eclipse.ocl.examples.xtext.console.xtfo.EmbeddedXtextEditor;
import org.eclipse.ocl.examples.xtext.essentialocl.ui.model.BaseDocument;
@@ -549,6 +550,8 @@
private final CancelableMetaModelManager metaModelManager;
private DomainModelManager modelManager = null;
+ private ValidateAction validateAction = null;
+
// private Map<TargetMetamodel, IAction> metamodelActions =
// new java.util.HashMap<TargetMetamodel, IAction>();
@@ -760,9 +763,11 @@
SaveExpressionAction saveExpression = new SaveExpressionAction(this);
LoadExpressionAction loadExpression = new LoadExpressionAction(this);
Action loadResource = new LoadResourceAction(this);
+ validateAction = new ValidateAction(this);
IMenuManager menu = getSite().getActionBars().getMenuManager();
menu.add(loadResource);
+ menu.add(validateAction);
menu.add(loadExpression);
menu.add(saveExpression);
menu.add(clear);
@@ -796,6 +801,7 @@
// toolbar.appendToGroup(IConsoleConstants.OUTPUT_GROUP, metamodelItem);
// toolbar.appendToGroup(IConsoleConstants.OUTPUT_GROUP, levelAction);
toolbar.appendToGroup(IConsoleConstants.OUTPUT_GROUP, loadResource);
+ toolbar.appendToGroup(IConsoleConstants.OUTPUT_GROUP, validateAction);
toolbar.appendToGroup(IConsoleConstants.OUTPUT_GROUP, loadExpression);
toolbar.appendToGroup(IConsoleConstants.OUTPUT_GROUP, saveExpression);
toolbar.appendToGroup(IConsoleConstants.OUTPUT_GROUP, clear);
@@ -1137,6 +1143,9 @@
}
editorDocument.setContext((EssentialOCLCSResource) resource, contextClassifier, null);
console.setSelection(contextClassifier, contextObject);
+ if (validateAction != null) {
+ validateAction.setSelection(contextObject);
+ }
return null;
}
});
diff --git a/examples/org.eclipse.ocl.examples.xtext.console/src/org/eclipse/ocl/examples/xtext/console/actions/ValidateAction.java b/examples/org.eclipse.ocl.examples.xtext.console/src/org/eclipse/ocl/examples/xtext/console/actions/ValidateAction.java
new file mode 100644
index 0000000..639f33a
--- /dev/null
+++ b/examples/org.eclipse.ocl.examples.xtext.console/src/org/eclipse/ocl/examples/xtext/console/actions/ValidateAction.java
@@ -0,0 +1,111 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2010 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>
+ *
+ * $Id: LoadResourceAction.java,v 1.2 2011/05/07 16:41:05 ewillink Exp $
+ */
+package org.eclipse.ocl.examples.xtext.console.actions;
+
+import java.net.URL;
+import java.util.Collections;
+import java.util.Map;
+
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.common.util.DiagnosticChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.util.Diagnostician;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.ocl.examples.pivot.utilities.PivotDiagnostician;
+import org.eclipse.ocl.examples.xtext.console.OCLConsolePage;
+import org.eclipse.ocl.examples.xtext.console.XtextConsolePlugin;
+import org.eclipse.ocl.examples.xtext.console.messages.ConsoleMessages;
+import org.osgi.framework.Bundle;
+
+/**
+ * An action that validates the selection with added Complete OCL contributions.
+ */
+public class ValidateAction extends org.eclipse.emf.edit.ui.action.ValidateAction
+{
+ protected final OCLConsolePage consolePage;
+
+ /**
+ * Initializes me.
+ */
+ public ValidateAction(OCLConsolePage consolePage) {
+ this.consolePage = consolePage;
+ Bundle bundle = XtextConsolePlugin.getInstance().getBundle();
+ Path imagePath = new Path("$nl$/icons/elcl16/validate.gif"); //$NON-NLS-1$
+ URL imageFile = FileLocator.find(bundle, imagePath, null);
+ setImageDescriptor(ImageDescriptor.createFromURL(imageFile));
+ setToolTipText(ConsoleMessages.ValidateAction_Tip);
+ }
+
+ @Override
+ protected Diagnostician createDiagnostician(final AdapterFactory adapterFactory, final IProgressMonitor progressMonitor) {
+ return new PivotDiagnostician()
+ {
+ @Override
+ public String getObjectLabel(EObject eObject) {
+ if (adapterFactory != null && !eObject.eIsProxy()) {
+ IItemLabelProvider itemLabelProvider = (IItemLabelProvider) adapterFactory
+ .adapt(eObject, IItemLabelProvider.class);
+ if (itemLabelProvider != null) {
+ return itemLabelProvider.getText(eObject);
+ }
+ }
+
+ return super.getObjectLabel(eObject);
+ }
+
+ @Override
+ public boolean validate(EClass eClass, EObject eObject,
+ DiagnosticChain diagnostics, Map<Object, Object> context) {
+ progressMonitor.worked(1);
+ return super.validate(eClass, eObject, diagnostics, context);
+ }
+ };
+ }
+
+ @Override
+ public void selectionChanged(SelectionChangedEvent event) {
+// super.selectionChanged(event);
+ }
+
+ @Override
+ public boolean updateSelection(IStructuredSelection selection) {
+// return super.updateSelection(selection);
+ return true;
+ }
+
+ @Override
+ protected Diagnostic validate(IProgressMonitor progressMonitor) {
+ return super.validate(progressMonitor);
+ }
+
+ public void setSelection(EObject contextObject) {
+ if (contextObject != null) {
+ selectedObjects = Collections.singletonList(contextObject);
+ }
+ else {
+ selectedObjects = Collections.emptyList();
+ }
+ }
+}
\ No newline at end of file
diff --git a/examples/org.eclipse.ocl.examples.xtext.console/src/org/eclipse/ocl/examples/xtext/console/messages/ConsoleMessages.java b/examples/org.eclipse.ocl.examples.xtext.console/src/org/eclipse/ocl/examples/xtext/console/messages/ConsoleMessages.java
index 852b3f0..bf0c6bb 100644
--- a/examples/org.eclipse.ocl.examples.xtext.console/src/org/eclipse/ocl/examples/xtext/console/messages/ConsoleMessages.java
+++ b/examples/org.eclipse.ocl.examples.xtext.console/src/org/eclipse/ocl/examples/xtext/console/messages/ConsoleMessages.java
@@ -42,6 +42,7 @@
public static String LoadActionWarning_Title;
public static String LoadActionWarning_NoExpression;
public static String LoadResourceAction_Tip;
+ public static String ValidateAction_Tip;
public static String Output_Exception;
// public static String Progress_AST;
// public static String Progress_CST;
diff --git a/examples/org.eclipse.ocl.examples.xtext.console/src/org/eclipse/ocl/examples/xtext/console/messages/ConsoleMessages.properties b/examples/org.eclipse.ocl.examples.xtext.console/src/org/eclipse/ocl/examples/xtext/console/messages/ConsoleMessages.properties
index e4c6152..d4c8047 100644
--- a/examples/org.eclipse.ocl.examples.xtext.console/src/org/eclipse/ocl/examples/xtext/console/messages/ConsoleMessages.properties
+++ b/examples/org.eclipse.ocl.examples.xtext.console/src/org/eclipse/ocl/examples/xtext/console/messages/ConsoleMessages.properties
@@ -25,6 +25,7 @@
LoadActionWarning_Title = Warning Loading OCL Expression
LoadActionWarning_NoExpression = No OCL Expression was found in the file.
LoadResourceAction_Tip = Load a resource into the resource set
+ValidateAction_Tip = Validate the current selection (including Complete OCL)
Output_Exception = Exception appending to OCL console output.
#Progress_AST = Creating Abstract Syntax
#Progress_CST = Parsing Concrete Syntax