From 131ac6f9df82507ea2ac397ccfdaa41bcc0e0d75 Mon Sep 17 00:00:00 2001
From: dhubner
Date: Mon, 27 Oct 2008 15:27:17 +0000
Subject: checks/extensions enabled
---
.../META-INF/MANIFEST.MF | 11 +-
examples/org.eclipse.emf.generic.editor/plugin.xml | 34 +++--
.../src/org/eclipse/emf/editor/EEditor.java | 68 +++++++--
.../src/org/eclipse/emf/editor/ModelCheckor.java | 44 +++++-
.../eclipse/emf/editor/extxpt/ExtXptFacade.java | 151 ++++++++++++++++++++
.../eclipse/emf/editor/extxpt/ExtXptHelper.java | 41 ++++++
.../editor/extxpt/WorkspaceResourceManager.java | 51 +++++++
.../src/org/eclipse/emf/editor/oaw/OawFacade.java | 152 ---------------------
.../src/org/eclipse/emf/editor/oaw/OawHelper.java | 41 ------
.../emf/editor/oaw/WorkspaceResourceManager.java | 56 --------
.../emf/editor/provider/ClasspathUriResolver.java | 3 +-
.../emf/editor/provider/ExtendedLabelProvider.java | 6 +-
.../eclipse/emf/editor/ui/GenericDetailsPage.java | 2 +-
.../org/eclipse/emf/editor/ui/ProposalCreator.java | 6 +-
.../editor/ui/binding/EmfSwtBindingFactory.java | 74 +++++-----
...ionProviderMultipleSelectionObservableList.java | 122 -----------------
16 files changed, 409 insertions(+), 453 deletions(-)
create mode 100644 examples/org.eclipse.emf.generic.editor/src/org/eclipse/emf/editor/extxpt/ExtXptFacade.java
create mode 100644 examples/org.eclipse.emf.generic.editor/src/org/eclipse/emf/editor/extxpt/ExtXptHelper.java
create mode 100644 examples/org.eclipse.emf.generic.editor/src/org/eclipse/emf/editor/extxpt/WorkspaceResourceManager.java
delete mode 100644 examples/org.eclipse.emf.generic.editor/src/org/eclipse/emf/editor/oaw/OawFacade.java
delete mode 100644 examples/org.eclipse.emf.generic.editor/src/org/eclipse/emf/editor/oaw/OawHelper.java
delete mode 100644 examples/org.eclipse.emf.generic.editor/src/org/eclipse/emf/editor/oaw/WorkspaceResourceManager.java
delete mode 100644 examples/org.eclipse.emf.generic.editor/src/org/eclipse/emf/editor/ui/binding/SelectionProviderMultipleSelectionObservableList.java
diff --git a/examples/org.eclipse.emf.generic.editor/META-INF/MANIFEST.MF b/examples/org.eclipse.emf.generic.editor/META-INF/MANIFEST.MF
index eb515dc2..4cdd5260 100644
--- a/examples/org.eclipse.emf.generic.editor/META-INF/MANIFEST.MF
+++ b/examples/org.eclipse.emf.generic.editor/META-INF/MANIFEST.MF
@@ -9,15 +9,14 @@ Require-Bundle: org.eclipse.core.runtime,
org.eclipse.ui.forms,
org.eclipse.core.resources,
org.eclipse.jface.databinding,
- org.eclipse.emf.databinding,
org.eclipse.emf.databinding.edit,
- org.eclipse.xtend;bundle-version="0.7.0",
- org.eclipse.xtend.util.stdlib;bundle-version="0.7.0",
- org.eclipse.xtend.typesystem.emf;bundle-version="0.7.0",
- org.eclipse.jdt.core;bundle-version="3.4.2"
+ org.eclipse.xtend,
+ org.eclipse.xtend.typesystem.emf,
+ org.eclipse.jdt.core;bundle-version="3.4.2",
+ org.eclipse.xtend.shared.ui
Bundle-ActivationPolicy: lazy
Export-Package: org.eclipse.emf.editor,
- org.eclipse.emf.editor.oaw,
+ org.eclipse.emf.editor.extxpt,
org.eclipse.emf.editor.provider,
org.eclipse.emf.editor.ui,
org.eclipse.emf.editor.ui.binding
diff --git a/examples/org.eclipse.emf.generic.editor/plugin.xml b/examples/org.eclipse.emf.generic.editor/plugin.xml
index f908d6f6..a18f52ff 100644
--- a/examples/org.eclipse.emf.generic.editor/plugin.xml
+++ b/examples/org.eclipse.emf.generic.editor/plugin.xml
@@ -10,18 +10,30 @@
id="org.eclipse.emf.genericEditor"
name="Generic EMF Form Editor">
+ contentTypeId="org.eclipse.emf.ecore.xmi">
+
+
+
+
-
-
-
-
-
+
+
+
+
+
+
+
+
diff --git a/examples/org.eclipse.emf.generic.editor/src/org/eclipse/emf/editor/EEditor.java b/examples/org.eclipse.emf.generic.editor/src/org/eclipse/emf/editor/EEditor.java
index 9cd5087b..5c068e91 100644
--- a/examples/org.eclipse.emf.generic.editor/src/org/eclipse/emf/editor/EEditor.java
+++ b/examples/org.eclipse.emf.generic.editor/src/org/eclipse/emf/editor/EEditor.java
@@ -15,6 +15,7 @@
*/
package org.eclipse.emf.editor;
+import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -23,8 +24,11 @@ import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.common.util.TreeIterator;
import org.eclipse.emf.ecore.EObject;
@@ -35,7 +39,8 @@ import org.eclipse.emf.ecore.presentation.EcoreEditor;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
-import org.eclipse.emf.editor.oaw.OawFacade;
+import org.eclipse.emf.editor.extxpt.ExtXptFacade;
+import org.eclipse.emf.editor.extxpt.WorkspaceResourceManager;
import org.eclipse.emf.editor.provider.ExtendedLabelProvider;
import org.eclipse.emf.editor.provider.ExtendedReflectiveItemProviderAdapterFactory;
import org.eclipse.emf.editor.provider.ExtendedReflectiveItemProviderAdapterFactory.ExtendedReflectiveItemProvider;
@@ -44,6 +49,7 @@ import org.eclipse.emf.editor.ui.EEMasterDetailsBlock;
import org.eclipse.emf.editor.ui.ImageRegistry;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.dialogs.IMessageProvider;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.viewers.ISelectionChangedListener;
@@ -55,6 +61,7 @@ import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
import org.eclipse.ui.forms.IFormColors;
import org.eclipse.ui.forms.IMessage;
import org.eclipse.ui.forms.IMessageManager;
@@ -66,21 +73,22 @@ import org.eclipse.ui.forms.widgets.ScrolledForm;
import org.eclipse.xtend.expression.ExecutionContext;
import org.eclipse.xtend.expression.ExecutionContextImpl;
import org.eclipse.xtend.expression.TypeSystemImpl;
+import org.eclipse.xtend.shared.ui.Activator;
import org.eclipse.xtend.typesystem.emf.EmfRegistryMetaModel;
/**
- * @author Dennis Huebner
+ * @author Dennis Hübner - Initial contribution and API
*
*/
public class EEditor extends EcoreEditor implements ChangeListener {
private static final String ESTRUCTURALFEATURE_KEY = EcorePackage.Literals.ESTRUCTURAL_FEATURE.getName();
- protected static final String MARKER_ID = null;
+ protected static final String MARKER_ID = Activator.getId() + ".problem";
private ManagedForm managedForm;
private EEMasterDetailsBlock mdBlock;
private IProject project;
- private OawFacade facade;
+ private ExtXptFacade facade;
private ExtendedReflectiveItemProvider extendedReflectiveItemProvider;
public EEditor() {
@@ -225,7 +233,7 @@ public class EEditor extends EcoreEditor implements ChangeListener {
*/
private void initInternal() {
project = getFile().getProject();
- facade = createOawFacade();
+ facade = createExtXptFacade();
if (editingDomain.getAdapterFactory() instanceof ComposedAdapterFactory) {
ComposedAdapterFactory caf = (ComposedAdapterFactory) editingDomain.getAdapterFactory();
rejectFactory(caf);
@@ -260,7 +268,7 @@ public class EEditor extends EcoreEditor implements ChangeListener {
*
*/
public void checkModel() {
- final List messages = new ModelCheckor().check(getEditingDomain().getResourceSet());
+ final List messages = new ModelCheckor(facade).check(getEditingDomain().getResourceSet());
getSite().getShell().getDisplay().asyncExec(new Runnable() {
public void run() {
IMessageManager messageManager = managedForm.getMessageManager();
@@ -268,6 +276,8 @@ public class EEditor extends EcoreEditor implements ChangeListener {
messageManager.setAutoUpdate(false);
for (MessageData md : messages) {
messageManager.addMessage(md.getKey(), md.getMessage(), md.getData(), md.getStatus());
+ if (getFile() != null)
+ addMarker(getFile(), md.getMessage(), md.getStatus());
}
messageManager.update();
messageManager.setAutoUpdate(true);
@@ -275,7 +285,41 @@ public class EEditor extends EcoreEditor implements ChangeListener {
});
}
- private OawFacade createOawFacade() {
+ private void addMarker(final IFile file, final String message, final int severity) {
+ try {
+ new WorkspaceModifyOperation() {
+
+ @Override
+ protected void execute(final IProgressMonitor monitor) throws CoreException, InvocationTargetException,
+ InterruptedException {
+
+ try {
+ // FIXME own MarkerType
+ IMarker marker = file.createMarker(MARKER_ID);
+ marker.setAttribute(IMarker.MESSAGE, message);
+ int status = IMarker.SEVERITY_INFO;
+ switch (severity) {
+ case IMessageProvider.ERROR:
+ status = IMarker.SEVERITY_ERROR;
+ break;
+ case IMessageProvider.WARNING:
+ status = IMarker.SEVERITY_WARNING;
+ break;
+ }
+ marker.setAttribute(IMarker.SEVERITY, status);
+ }
+ catch (CoreException e) {
+ e.printStackTrace();
+ }
+ }
+ }.run(new NullProgressMonitor());
+ }
+ catch (final Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ private ExtXptFacade createExtXptFacade() {
final List packs = findMetaModelPackages();
TypeSystemImpl ts = new TypeSystemImpl();
ts.registerMetaModel(new EmfRegistryMetaModel() {
@@ -284,10 +328,10 @@ public class EEditor extends EcoreEditor implements ChangeListener {
return packs.toArray(new EPackage[packs.size()]);
}
});
- // FIXME new WorkspaceResourceManager(OawPlugin.getOawModelManager()
- // .findProject(project)),
- ExecutionContext context = new ExecutionContextImpl(ts, null);
- return new OawFacade(project, context);
+ ExecutionContext context = new ExecutionContextImpl(new WorkspaceResourceManager(Activator
+ .getExtXptModelManager().findProject(project)), ts, null);
+ return new ExtXptFacade(project, context);
+
}
private List findMetaModelPackages() {
@@ -326,7 +370,7 @@ public class EEditor extends EcoreEditor implements ChangeListener {
});
}
- public OawFacade getOawFacade() {
+ public ExtXptFacade getExtXptFacade() {
return facade;
}
diff --git a/examples/org.eclipse.emf.generic.editor/src/org/eclipse/emf/editor/ModelCheckor.java b/examples/org.eclipse.emf.generic.editor/src/org/eclipse/emf/editor/ModelCheckor.java
index b4a7e986..c582fd8e 100644
--- a/examples/org.eclipse.emf.generic.editor/src/org/eclipse/emf/editor/ModelCheckor.java
+++ b/examples/org.eclipse.emf.generic.editor/src/org/eclipse/emf/editor/ModelCheckor.java
@@ -24,10 +24,15 @@ import org.eclipse.emf.common.util.Diagnostic;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.common.util.TreeIterator;
import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.util.Diagnostician;
import org.eclipse.emf.edit.ui.action.ValidateAction.EclipseResourcesUtil;
+import org.eclipse.emf.editor.extxpt.ExtXptFacade;
+import org.eclipse.emf.editor.extxpt.ExtXptHelper;
+import org.eclipse.emf.mwe.core.issues.Issues;
+import org.eclipse.emf.mwe.core.issues.MWEDiagnostic;
import org.eclipse.jface.dialogs.IMessageProvider;
/**
@@ -38,6 +43,12 @@ public class ModelCheckor {
private EclipseResourcesUtil eclipseResourcesUtil = EMFPlugin.IS_RESOURCES_BUNDLE_AVAILABLE ? new EclipseResourcesUtil()
: null;
+ private final ExtXptFacade facade;
+
+ public ModelCheckor(ExtXptFacade facade) {
+ super();
+ this.facade = facade;
+ }
public List check(ResourceSet toCheck) {
List messages = new ArrayList();
@@ -53,7 +64,15 @@ public class ModelCheckor {
continue;
EObject rootObject = allContents.next();
- messages.addAll(ecoreValidation(rootObject));
+ Issues issues = facade.check(rootObject);
+ for (MWEDiagnostic issue : issues.getErrors()) {
+ messages.add(createMessageFromIssue(issue, IMessageProvider.ERROR));
+ }
+ for (MWEDiagnostic issue : issues.getWarnings()) {
+ messages.add(createMessageFromIssue(issue, IMessageProvider.WARNING));
+ }
+ List ecoreValidation = ecoreValidation(rootObject);
+ messages.addAll(ecoreValidation);
}
}
}
@@ -72,7 +91,7 @@ public class ModelCheckor {
int status = IMessageProvider.INFORMATION;
// Clear Marker
if (eclipseResourcesUtil != null) {
- eclipseResourcesUtil.deleteMarkers(rootObject);
+ //eclipseResourcesUtil.deleteMarkers(rootObject);
}
Diagnostic diagnostic = Diagnostician.INSTANCE.validate(rootObject);
@@ -109,4 +128,25 @@ public class ModelCheckor {
}
return mds;
}
+
+ /**
+ * @param issue
+ * @return
+ */
+ private MessageData createMessageFromIssue(MWEDiagnostic issue, int type) {
+ String message = issue.getMessage();
+ Object element = issue.getElement();
+ MessageData md = new MessageData(element, message, null, type);
+ List