Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/DiagnosticResolution.java')
-rw-r--r--plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/DiagnosticResolution.java120
1 files changed, 120 insertions, 0 deletions
diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/DiagnosticResolution.java b/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/DiagnosticResolution.java
new file mode 100644
index 0000000000..603b7467e4
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/DiagnosticResolution.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright (c) 2004-2018 Eike Stepper (Loehne, Germany) 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:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.evolution.presentation.quickfix;
+
+import org.eclipse.emf.cdo.evolution.presentation.EvolutionEditor;
+import org.eclipse.emf.cdo.evolution.presentation.quickfix.DiagnosticResolution.Generator.Context;
+
+import org.eclipse.net4j.util.container.IPluginContainer;
+import org.eclipse.net4j.util.factory.ProductCreationException;
+
+import org.eclipse.emf.common.util.Diagnostic;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.swt.graphics.Image;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author Eike Stepper
+ */
+public abstract class DiagnosticResolution
+{
+ public static final Diagnostic[] NO_DIAGNOSTICS = {};
+
+ public abstract Image getImage();
+
+ public abstract String getText();
+
+ public abstract String getDescription();
+
+ public abstract void run(Diagnostic diagnostic);
+
+ public void run(Diagnostic[] diagnostics, IProgressMonitor monitor)
+ {
+ for (Diagnostic diagnostic : diagnostics)
+ {
+ monitor.subTask(diagnostic.getMessage());
+ run(diagnostic);
+ }
+ }
+
+ public Diagnostic[] findOtherDiagnostics(Diagnostic[] diagnostics)
+ {
+ return NO_DIAGNOSTICS;
+ }
+
+ public static DiagnosticResolution[] getResolutions(Diagnostic diagnostic, final EvolutionEditor editor)
+ {
+ final List<DiagnosticResolution> result = new ArrayList<DiagnosticResolution>();
+ Context context = new Generator.Context()
+ {
+ public EvolutionEditor getEditor()
+ {
+ return editor;
+ }
+
+ public void add(DiagnosticResolution resolution)
+ {
+ result.add(resolution);
+ }
+ };
+
+ for (String factoryType : IPluginContainer.INSTANCE.getFactoryTypes(Generator.Factory.PRODUCT_GROUP))
+ {
+ Generator generator = (Generator)IPluginContainer.INSTANCE.getElement(Generator.Factory.PRODUCT_GROUP, factoryType, null);
+ generator.getResolutions(diagnostic, context);
+ }
+
+ return result.toArray(new DiagnosticResolution[result.size()]);
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ public interface Generator
+ {
+ public void getResolutions(Diagnostic diagnostic, Context context);
+
+ /**
+ * @author Eike Stepper
+ */
+ public interface Context
+ {
+ public EvolutionEditor getEditor();
+
+ public void add(DiagnosticResolution resolution);
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ public static abstract class Factory extends org.eclipse.net4j.util.factory.Factory
+ {
+ public static final String PRODUCT_GROUP = "org.eclipse.emf.cdo.evolution.diagnosticResolutionGenerators";
+
+ public static final String DEFAULT_TYPE = "default";
+
+ public Factory()
+ {
+ this(DEFAULT_TYPE);
+ }
+
+ public Factory(String type)
+ {
+ super(PRODUCT_GROUP, type);
+ }
+
+ public abstract Generator create(String description) throws ProductCreationException;
+ }
+ }
+}

Back to the top