Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.gmf.codegen/templates.migrated/xpt/editor/ValidateAction.xpt')
-rw-r--r--plugins/org.eclipse.gmf.codegen/templates.migrated/xpt/editor/ValidateAction.xpt351
1 files changed, 351 insertions, 0 deletions
diff --git a/plugins/org.eclipse.gmf.codegen/templates.migrated/xpt/editor/ValidateAction.xpt b/plugins/org.eclipse.gmf.codegen/templates.migrated/xpt/editor/ValidateAction.xpt
new file mode 100644
index 000000000..5914f7df0
--- /dev/null
+++ b/plugins/org.eclipse.gmf.codegen/templates.migrated/xpt/editor/ValidateAction.xpt
@@ -0,0 +1,351 @@
+/*
+ * Copyright (c) 2007, 2008 Borland Software Corporation
+ *
+ * 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:
+ * Dmitry Stadnik (Borland) - initial API and implementation
+ */
+
+«IMPORT 'http://www.eclipse.org/gmf/2008/GenModel'»
+«IMPORT 'http://www.eclipse.org/emf/2002/GenModel'»
+«IMPORT 'http://www.eclipse.org/emf/2002/Ecore'»
+
+«EXTENSION xpt::editor::Utils»
+«EXTENSION xpt::GenAuditRoot»
+«EXTENSION xpt::GenEditorGenerator»
+
+«DEFINE className FOR gmfgen::GenDiagram»«defaultValidateActionClassName(self)»«ENDDEFINE»
+
+«DEFINE qualifiedClassName FOR gmfgen::GenDiagram»«editorGen.editor.packageName».«EXPAND className»«ENDDEFINE»
+
+«DEFINE ValidateAction FOR gmfgen::GenDiagram-»
+«EXPAND xpt::Common::copyright FOR editorGen-»
+package «editorGen.editor.packageName»;
+
+«EXPAND xpt::Common::generatedClassComment»
+public class «EXPAND className» extends org.eclipse.jface.action.Action {
+ «EXPAND attributes-»
+ «EXPAND _constructor-»
+ «EXPAND run-»
+ «EXPAND runValidation-»
+ «EXPAND runNonUIValidation-»
+ «EXPAND runValidationWithEP-»
+ «EXPAND runEMFValidator-»
+ «EXPAND validate-»
+ «EXPAND createMarkersForStatus-»
+ «EXPAND createMarkersForDiagnostic-»
+ «EXPAND addMarker-»
+ «EXPAND diagnosticToStatusSeverity-»
+ «EXPAND collectTargetElementsFromStatus-»
+ «EXPAND collectTargetElementsFromDiagnostic-»
+ «EXPAND additions-»
+}
+«ENDDEFINE»
+
+«DEFINE attributes FOR gmfgen::GenDiagram»
+ «EXPAND xpt::Common::generatedMemberComment»
+ private org.eclipse.ui.IWorkbenchPage page;
+«ENDDEFINE»
+
+«DEFINE _constructor FOR gmfgen::GenDiagram»
+ «EXPAND xpt::Common::generatedMemberComment»
+ public «EXPAND className»(org.eclipse.ui.IWorkbenchPage page) {
+ setText(«EXPAND xpt::Externalizer::accessorCall(messageKey(i18nKeyForValidateAction(self))) FOR editorGen»);
+ this.page = page;
+ }
+«ENDDEFINE»
+
+«DEFINE run FOR gmfgen::GenDiagram-»
+
+ «EXPAND xpt::Common::generatedMemberComment»
+ public void run() {
+ org.eclipse.ui.IWorkbenchPart workbenchPart = page.getActivePart();
+ if (workbenchPart instanceof org.eclipse.gmf.runtime.diagram.ui.parts.IDiagramWorkbenchPart) {
+ final org.eclipse.gmf.runtime.diagram.ui.parts.IDiagramWorkbenchPart part = (org.eclipse.gmf.runtime.diagram.ui.parts.IDiagramWorkbenchPart) workbenchPart;
+ try {
+ «IF editorGen.application = null-»
+ new org.eclipse.ui.actions.WorkspaceModifyDelegatingOperation(
+ «ENDIF-»
+ new org.eclipse.jface.operation.IRunnableWithProgress() {
+
+ public void run(org.eclipse.core.runtime.IProgressMonitor monitor)
+ throws InterruptedException, java.lang.reflect.InvocationTargetException {
+ runValidation(part.getDiagramEditPart(), part.getDiagram());
+ }
+ }
+ «IF editorGen.application = null-»
+ )
+ «ENDIF-»
+ .run(new org.eclipse.core.runtime.NullProgressMonitor());
+ } catch (Exception e) {
+ «editorGen.plugin.getActivatorQualifiedClassName()».getInstance().logError("Validation action failed", e);«EXPAND xpt::Common::nonNLS»
+ }
+ }
+ }
+«ENDDEFINE»
+
+«DEFINE runValidation FOR gmfgen::GenDiagram-»
+
+ «EXPAND xpt::Common::generatedMemberComment»
+ public static void runValidation(org.eclipse.gmf.runtime.notation.View view) {
+ try {
+ if («getDiagramEditorUtilQualifiedClassName()».openDiagram(view.eResource())) {
+ org.eclipse.ui.IEditorPart editorPart = org.eclipse.ui.PlatformUI.getWorkbench()
+ .getActiveWorkbenchWindow().getActivePage().getActiveEditor();
+ if (editorPart instanceof org.eclipse.gmf.runtime.diagram.ui.parts.IDiagramWorkbenchPart) {
+ runValidation(((org.eclipse.gmf.runtime.diagram.ui.parts.IDiagramWorkbenchPart) editorPart).
+ getDiagramEditPart(), view);
+ } else {
+ runNonUIValidation(view);
+ }
+ }
+ } catch (Exception e) {
+ «editorGen.plugin.getActivatorQualifiedClassName()».getInstance().logError(
+ "Validation action failed", e); «EXPAND xpt::Common::nonNLS»
+ }
+ }
+«ENDDEFINE»
+
+«DEFINE runNonUIValidation FOR gmfgen::GenDiagram-»
+
+ «EXPAND xpt::Common::generatedMemberComment»
+ public static void runNonUIValidation(org.eclipse.gmf.runtime.notation.View view) {
+ org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart diagramEditPart =
+ org.eclipse.gmf.runtime.diagram.ui.OffscreenEditPartFactory.getInstance().createDiagramEditPart(
+ view.getDiagram());
+ runValidation(diagramEditPart, view);
+ }
+«ENDDEFINE»
+
+«DEFINE runValidationWithEP FOR gmfgen::GenDiagram-»
+
+ «EXPAND xpt::Common::generatedMemberComment»
+ public static void runValidation(org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart diagramEditPart, org.eclipse.gmf.runtime.notation.View view) {
+ final org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart fpart = diagramEditPart;
+ final org.eclipse.gmf.runtime.notation.View fview = view;
+ org.eclipse.emf.transaction.TransactionalEditingDomain txDomain = org.eclipse.emf.transaction.util.TransactionUtil.getEditingDomain(view);
+ «getValidationProviderQualifiedClassName()».runWithConstraints(txDomain, new Runnable() {
+
+ public void run() {
+ validate(fpart, fview);
+ }
+ });
+ }
+«ENDDEFINE»
+
+«DEFINE runEMFValidator FOR gmfgen::GenDiagram-»
+
+ «EXPAND xpt::Common::generatedMemberComment»
+ private static org.eclipse.emf.common.util.Diagnostic runEMFValidator(
+ org.eclipse.gmf.runtime.notation.View target) {
+ if (target.isSetElement() && target.getElement() != null) {
+ return new org.eclipse.emf.ecore.util.Diagnostician() {
+
+ public String getObjectLabel(org.eclipse.emf.ecore.EObject eObject) {
+ return org.eclipse.gmf.runtime.emf.core.util.EMFCoreUtil.getQualifiedName(eObject, true);
+ }
+ }.validate(target.getElement());
+ }
+ return org.eclipse.emf.common.util.Diagnostic.OK_INSTANCE;
+ }
+«ENDDEFINE»
+
+«DEFINE validate FOR gmfgen::GenDiagram-»
+
+ «EXPAND xpt::Common::generatedMemberComment»
+ private static void validate(org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart diagramEditPart,
+ org.eclipse.gmf.runtime.notation.View view) {
+ «IF editorGen.application = null-»
+ org.eclipse.core.resources.IFile target = view.eResource() != null ?
+ org.eclipse.emf.workspace.util.WorkspaceSynchronizer.getFile(view.eResource()) : null;
+ if (target != null) {
+ «getMarkerNavigationProviderQualifiedClassName()».deleteMarkers(target);
+ }
+ «ELSE-»
+ org.eclipse.gmf.runtime.notation.View target = view;
+ «EXPAND xpt::editor::ValidationMarker::qualifiedClassName».removeAllMarkers(diagramEditPart.getViewer());
+ «ENDIF-»
+ org.eclipse.emf.common.util.Diagnostic diagnostic = runEMFValidator(view);
+ createMarkers(target, diagnostic, diagramEditPart);
+ org.eclipse.emf.validation.service.IBatchValidator validator =
+ (org.eclipse.emf.validation.service.IBatchValidator)
+ org.eclipse.emf.validation.service.ModelValidationService.getInstance().newValidator(
+ org.eclipse.emf.validation.model.EvaluationMode.BATCH);
+ validator.setIncludeLiveConstraints(true);
+ if (view.isSetElement() && view.getElement() != null) {
+ org.eclipse.core.runtime.IStatus status = validator.validate(view.getElement());
+ createMarkers(target, status, diagramEditPart);
+ }
+«IF shouldRunValidateOnDiagram(editorGen.audits)-»
+«IF hasDiagramElementTargetRule(editorGen.audits)-»
+ validator.setTraversalStrategy(«getValidationProviderQualifiedClassName()».getNotationTraversalStrategy(validator));
+«ENDIF-»
+ org.eclipse.core.runtime.IStatus status = validator.validate(view);
+ createMarkers(target, status, diagramEditPart);
+«ENDIF-»
+ «IF editorGen.application <> null and validationDecorators-»
+ «getValidationDecoratorProviderQualifiedClassName()».refreshDecorators(view);
+ for (java.util.Iterator it = view.eAllContents(); it.hasNext();) {
+ org.eclipse.emf.ecore.EObject next = (org.eclipse.emf.ecore.EObject) it.next();
+ if (next instanceof org.eclipse.gmf.runtime.notation.View) {
+ «getValidationDecoratorProviderQualifiedClassName()».refreshDecorators(
+ (org.eclipse.gmf.runtime.notation.View) next);
+ }
+ }
+ «ENDIF-»
+ }
+«ENDDEFINE»
+
+«DEFINE createMarkersForStatus FOR gmfgen::GenDiagram-»
+
+ «EXPAND xpt::Common::generatedMemberComment»
+ private static void createMarkers(
+ «IF editorGen.application = null»org.eclipse.core.resources.IFile
+ «ELSE»org.eclipse.gmf.runtime.notation.View«ENDIF» target,
+ org.eclipse.core.runtime.IStatus validationStatus,
+ org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart diagramEditPart) {
+ if (validationStatus.isOK()) {
+ return;
+ }
+ final org.eclipse.core.runtime.IStatus rootStatus = validationStatus;
+ java.util.List allStatuses = new java.util.ArrayList();
+ «getDiagramEditorUtilQualifiedClassName()».LazyElement2ViewMap element2ViewMap =
+ new «getDiagramEditorUtilQualifiedClassName()».LazyElement2ViewMap(
+ diagramEditPart.getDiagramView(),
+ collectTargetElements(rootStatus, new java.util.HashSet(), allStatuses));
+ for (java.util.Iterator it = allStatuses.iterator(); it.hasNext();) {
+ org.eclipse.emf.validation.model.IConstraintStatus nextStatus =
+ (org.eclipse.emf.validation.model.IConstraintStatus) it.next();
+ org.eclipse.gmf.runtime.notation.View view = «getDiagramEditorUtilQualifiedClassName()».findView(
+ diagramEditPart, nextStatus.getTarget(), element2ViewMap);
+ addMarker(diagramEditPart.getViewer(), target, view.eResource().getURIFragment(view),
+ org.eclipse.gmf.runtime.emf.core.util.EMFCoreUtil.getQualifiedName(nextStatus.getTarget(), true),
+ nextStatus.getMessage(), nextStatus.getSeverity());
+ }
+ }
+«ENDDEFINE»
+
+«DEFINE createMarkersForDiagnostic FOR gmfgen::GenDiagram-»
+
+ «EXPAND xpt::Common::generatedMemberComment»
+ private static void createMarkers(
+ «IF editorGen.application = null»org.eclipse.core.resources.IFile
+ «ELSE»org.eclipse.gmf.runtime.notation.View«ENDIF» target,
+ org.eclipse.emf.common.util.Diagnostic emfValidationStatus,
+ org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart diagramEditPart) {
+ if (emfValidationStatus.getSeverity() == org.eclipse.emf.common.util.Diagnostic.OK) {
+ return;
+ }
+ final org.eclipse.emf.common.util.Diagnostic rootStatus = emfValidationStatus;
+ java.util.List allDiagnostics = new java.util.ArrayList();
+ «getDiagramEditorUtilQualifiedClassName()».LazyElement2ViewMap element2ViewMap =
+ new «getDiagramEditorUtilQualifiedClassName()».LazyElement2ViewMap(
+ diagramEditPart.getDiagramView(),
+ collectTargetElements(rootStatus, new java.util.HashSet(), allDiagnostics));
+ for (java.util.Iterator it = emfValidationStatus.getChildren().iterator(); it.hasNext();) {
+ org.eclipse.emf.common.util.Diagnostic nextDiagnostic = (org.eclipse.emf.common.util.Diagnostic) it.next();
+ java.util.List data = nextDiagnostic.getData();
+ if (data != null && !data.isEmpty() && data.get(0) instanceof org.eclipse.emf.ecore.EObject) {
+ org.eclipse.emf.ecore.EObject element = (org.eclipse.emf.ecore.EObject) data.get(0);
+ org.eclipse.gmf.runtime.notation.View view = «getDiagramEditorUtilQualifiedClassName()».findView(
+ diagramEditPart, element, element2ViewMap);
+ addMarker(diagramEditPart.getViewer(), target, view.eResource().getURIFragment(view),
+ org.eclipse.gmf.runtime.emf.core.util.EMFCoreUtil.getQualifiedName(element, true),
+ nextDiagnostic.getMessage(), diagnosticToStatusSeverity(nextDiagnostic.getSeverity()));
+ }
+ }
+ }
+«ENDDEFINE»
+
+«DEFINE addMarker FOR gmfgen::GenDiagram-»
+
+ «EXPAND xpt::Common::generatedMemberComment»
+ private static void addMarker(org.eclipse.gef.EditPartViewer viewer,
+ «IF editorGen.application = null»org.eclipse.core.resources.IFile
+ «ELSE»org.eclipse.gmf.runtime.notation.View«ENDIF» target,
+ String elementId, String location, String message, int statusSeverity) {
+ if (target == null) {
+ return;
+ }
+ «IF editorGen.application = null-»
+ «getMarkerNavigationProviderQualifiedClassName()».addMarker(
+ target, elementId, location, message, statusSeverity);
+ «ELSE-»
+ new «EXPAND xpt::editor::ValidationMarker::qualifiedClassName»(
+ location, message, statusSeverity).add(viewer, elementId);
+ «ENDIF-»
+ }
+«ENDDEFINE»
+
+«DEFINE diagnosticToStatusSeverity FOR gmfgen::GenDiagram-»
+
+ «EXPAND xpt::Common::generatedMemberComment»
+ private static int diagnosticToStatusSeverity(int diagnosticSeverity) {
+ if (diagnosticSeverity == org.eclipse.emf.common.util.Diagnostic.OK) {
+ return org.eclipse.core.runtime.IStatus.OK;
+ } else if (diagnosticSeverity == org.eclipse.emf.common.util.Diagnostic.INFO) {
+ return org.eclipse.core.runtime.IStatus.INFO;
+ } else if (diagnosticSeverity == org.eclipse.emf.common.util.Diagnostic.WARNING) {
+ return org.eclipse.core.runtime.IStatus.WARNING;
+ } else if (diagnosticSeverity == org.eclipse.emf.common.util.Diagnostic.ERROR
+ || diagnosticSeverity == org.eclipse.emf.common.util.Diagnostic.CANCEL) {
+ return org.eclipse.core.runtime.IStatus.ERROR;
+ }
+ return org.eclipse.core.runtime.IStatus.INFO;
+ }
+«ENDDEFINE»
+
+«DEFINE collectTargetElementsFromStatus FOR gmfgen::GenDiagram-»
+
+ «EXPAND xpt::Common::generatedMemberComment»
+ private static java.util.Set collectTargetElements(org.eclipse.core.runtime.IStatus status,
+ java.util.Set targetElementCollector, java.util.List allConstraintStatuses) {
+ if (status instanceof org.eclipse.emf.validation.model.IConstraintStatus) {
+ targetElementCollector.add(((org.eclipse.emf.validation.model.IConstraintStatus) status).getTarget());
+ allConstraintStatuses.add(status);
+ }
+ if (status.isMultiStatus()) {
+ org.eclipse.core.runtime.IStatus[] children = status.getChildren();
+ for (int i = 0; i < children.length; i++) {
+ collectTargetElements(children[i], targetElementCollector, allConstraintStatuses);
+ }
+ }
+ return targetElementCollector;
+ }
+«ENDDEFINE»
+
+«DEFINE collectTargetElementsFromDiagnostic FOR gmfgen::GenDiagram-»
+
+ «EXPAND xpt::Common::generatedMemberComment»
+ private static java.util.Set collectTargetElements(org.eclipse.emf.common.util.Diagnostic diagnostic,
+ java.util.Set targetElementCollector, java.util.List allDiagnostics) {
+ java.util.List data = diagnostic.getData();
+ org.eclipse.emf.ecore.EObject target = null;
+ if (data != null && !data.isEmpty() && data.get(0) instanceof org.eclipse.emf.ecore.EObject) {
+ target = (org.eclipse.emf.ecore.EObject) data.get(0);
+ targetElementCollector.add(target);
+ allDiagnostics.add(diagnostic);
+ }
+ if (diagnostic.getChildren() != null && !diagnostic.getChildren().isEmpty()) {
+ for (java.util.Iterator it = diagnostic.getChildren().iterator(); it.hasNext();) {
+ collectTargetElements((org.eclipse.emf.common.util.Diagnostic) it.next(),
+ targetElementCollector, allDiagnostics);
+ }
+ }
+ return targetElementCollector;
+ }
+«ENDDEFINE»
+
+«DEFINE additions FOR gmfgen::GenDiagram»«ENDDEFINE»
+
+«DEFINE i18nValues FOR gmfgen::GenDiagram-»
+«EXPAND xpt::Externalizer::messageEntry(messageKey(i18nKeyForValidateAction(self)), 'Validate')-»
+«ENDDEFINE»
+
+«DEFINE i18nAccessors FOR gmfgen::GenDiagram-»
+ «EXPAND xpt::Externalizer::accessorField(messageKey(i18nKeyForValidateAction(self)))-»
+«ENDDEFINE»

Back to the top