From a4c7cd65d586ef2fd0ee4ff5e1aa0d50a9778900 Mon Sep 17 00:00:00 2001
From: Simon Barner <barner@fortiss.org>
Date: Mon, 29 Sep 2014 14:29:42 +0000
Subject: [PATCH] - Make ComboBoxEditingSupport aware of instance keys - Unify
 (merge) MultiInstanceAnnotationSupport with (into) TextEditingSupport refs
 1841

---
 .../AnnotationEditingSupportBase.java         | 12 ++--
 .../ComboBoxEditingSupport.java               |  4 +-
 .../ElementNameEditingSupport.java            |  2 +-
 ...iInstanceAnnotationTextEditingSupport.java | 72 -------------------
 .../editingsupport/TextEditingSupport.java    |  4 +-
 ...icInstanceAnnotationValueProviderBase.java |  4 +-
 .../EStructuralFeatureValueProviderBase.java  |  2 +-
 .../valueprovider/ValueProviderBase.java      |  8 +--
 8 files changed, 18 insertions(+), 90 deletions(-)
 delete mode 100644 org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/editingsupport/MultiInstanceAnnotationTextEditingSupport.java

diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/editingsupport/AnnotationEditingSupportBase.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/editingsupport/AnnotationEditingSupportBase.java
index ff7f11286..ebd23703d 100644
--- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/editingsupport/AnnotationEditingSupportBase.java
+++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/editingsupport/AnnotationEditingSupportBase.java
@@ -40,11 +40,15 @@ public abstract class AnnotationEditingSupportBase extends EditingSupport {
 	/** Specification class of this column */
 	protected Class<? extends IAnnotatedSpecification> specClass;
 
+	/** Instance key to identify the corresponding instance of the annotation */
+	protected String instanceKey;
+
 	/** Constructor. */
 	public AnnotationEditingSupportBase(ColumnViewer viewer,
-			Class<? extends IAnnotatedSpecification> specClass) {
+			Class<? extends IAnnotatedSpecification> specClass, String instanceKey) {
 		super(viewer);
 		this.specClass = specClass;
+		this.instanceKey = instanceKey;
 	}
 
 	/** {@inheritDoc} */
@@ -52,7 +56,7 @@ public abstract class AnnotationEditingSupportBase extends EditingSupport {
 	protected boolean canEdit(Object element) {
 		if(element instanceof AnnotationEntry) {
 			AnnotationEntry annotationEntry = (AnnotationEntry)element;
-			return annotationEntry.canEdit(specClass);
+			return annotationEntry.canEdit(specClass, instanceKey);
 		}
 
 		return true;
@@ -60,7 +64,7 @@ public abstract class AnnotationEditingSupportBase extends EditingSupport {
 
 	/** Actually gets the value from the {@link IAnnotatedSpecification}. */
 	protected Object doGetValue(AnnotationEntry annotationEntry) {
-		return annotationEntry.getSpecificationValue(specClass);
+		return annotationEntry.getSpecificationValue(specClass, instanceKey);
 	}
 
 	/** {@inheritDoc} */
@@ -74,7 +78,7 @@ public abstract class AnnotationEditingSupportBase extends EditingSupport {
 
 	/** Actually sets a {@link String} value into a {@link IAnnotatedSpecification}. */
 	protected void doSetValue(AnnotationEntry annotationEntry, String value) throws Exception {
-		annotationEntry.setSpecificationValue(value, specClass);
+		annotationEntry.setSpecificationValue(value, specClass, instanceKey);
 	}
 
 	/** {@inheritDoc} */
diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/editingsupport/ComboBoxEditingSupport.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/editingsupport/ComboBoxEditingSupport.java
index a4f1156c1..858c9a738 100644
--- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/editingsupport/ComboBoxEditingSupport.java
+++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/editingsupport/ComboBoxEditingSupport.java
@@ -58,8 +58,8 @@ public class ComboBoxEditingSupport extends AnnotationEditingSupportBase {
 	 */
 	public ComboBoxEditingSupport(ColumnViewer viewer,
 			Class<? extends IAnnotatedSpecification> clazz, Collection<String> values,
-			boolean isEditable) {
-		super(viewer, clazz);
+			String instanceKey, boolean isEditable) {
+		super(viewer, clazz, instanceKey);
 		this.isEditable = isEditable;
 		cellEditor = new ComboBoxViewerCellEditor((Composite)getViewer().getControl());
 		cellEditor.setLabelProvider(new LabelProvider());
diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/editingsupport/ElementNameEditingSupport.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/editingsupport/ElementNameEditingSupport.java
index aa45adf3c..2c6b3545b 100644
--- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/editingsupport/ElementNameEditingSupport.java
+++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/editingsupport/ElementNameEditingSupport.java
@@ -38,7 +38,7 @@ public class ElementNameEditingSupport extends TextEditingSupport {
 	public ElementNameEditingSupport(ColumnViewer viewer) {
 		// Specification class is not needed, since the name is stored directly in the model (hence
 		// pass {@code null}).
-		super(viewer, null);
+		super(viewer, null, null);
 	}
 
 	/** {@inheritDoc} */
diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/editingsupport/MultiInstanceAnnotationTextEditingSupport.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/editingsupport/MultiInstanceAnnotationTextEditingSupport.java
deleted file mode 100644
index a25636d7e..000000000
--- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/editingsupport/MultiInstanceAnnotationTextEditingSupport.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*--------------------------------------------------------------------------+
-$Id$
-|                                                                          |
-| Copyright 2014 fortiss GmbH                                              |
-|                                                                          |
-| Licensed under the Apache License, Version 2.0 (the "License");          |
-| you may not use this file except in compliance with the License.         |
-| You may obtain a copy of the License at                                  |
-|                                                                          |
-|    http://www.apache.org/licenses/LICENSE-2.0                            |
-|                                                                          |
-| Unless required by applicable law or agreed to in writing, software      |
-| distributed under the License is distributed on an "AS IS" BASIS,        |
-| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
-| See the License for the specific language governing permissions and      |
-| limitations under the License.                                           |
-+--------------------------------------------------------------------------*/
-package org.fortiss.tooling.base.ui.annotation.editingsupport;
-
-import org.eclipse.jface.viewers.ColumnViewer;
-import org.fortiss.tooling.base.model.element.IAnnotatedSpecification;
-import org.fortiss.tooling.base.ui.annotation.AnnotationEntry;
-import org.fortiss.tooling.base.ui.annotation.valueprovider.DynamicInstanceAnnotationValueProviderBase;
-
-/**
- * This class extends {@link TextEditingSupport} to support text annotations for which multiple
- * instances can exist.
- * 
- * @see DynamicInstanceAnnotationValueProviderBase
- * 
- * @author diewald, barner
- * @author $Author$
- * @version $Rev$
- * @ConQAT.Rating RED Hash:
- */
-public class MultiInstanceAnnotationTextEditingSupport extends TextEditingSupport {
-
-	/** Instance key to identify the corresponding instance of the annotation */
-	private String instanceKey;
-
-	/** Constructs a new {@link MultiInstanceAnnotationTextEditingSupport} for a specific column. */
-	public MultiInstanceAnnotationTextEditingSupport(ColumnViewer viewer,
-			Class<? extends IAnnotatedSpecification> clazz, String instanceKey) {
-		super(viewer, clazz);
-
-		this.instanceKey = instanceKey;
-	}
-
-	/** {@inheritDoc} */
-	@Override
-	protected Object doGetValue(AnnotationEntry annotationEntry) {
-		return annotationEntry.getSpecificationValue(specClass, instanceKey);
-	}
-
-	/** {@inheritDoc} */
-	@Override
-	protected void doSetValue(AnnotationEntry annotationEntry, String value) throws Exception {
-		annotationEntry.setSpecificationValue(value, specClass, instanceKey);
-	}
-
-	/** {@inheritDoc} */
-	@Override
-	protected boolean canEdit(Object element) {
-		if(element instanceof AnnotationEntry) {
-			AnnotationEntry annotationEntry = (AnnotationEntry)element;
-
-			return annotationEntry.canEdit(specClass);
-		}
-
-		return false;
-	}
-}
diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/editingsupport/TextEditingSupport.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/editingsupport/TextEditingSupport.java
index 659506ea7..24667a94a 100644
--- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/editingsupport/TextEditingSupport.java
+++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/editingsupport/TextEditingSupport.java
@@ -41,8 +41,8 @@ public class TextEditingSupport extends AnnotationEditingSupportBase {
 
 	/** Constructor. */
 	public TextEditingSupport(ColumnViewer viewer,
-			Class<? extends IAnnotatedSpecification> specClass) {
-		super(viewer, specClass);
+			Class<? extends IAnnotatedSpecification> specClass, String instanceKey) {
+		super(viewer, specClass, instanceKey);
 
 		cellEditor = new TextCellEditor((Composite)getViewer().getControl(), SWT.NONE);
 	}
diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/valueprovider/DynamicInstanceAnnotationValueProviderBase.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/valueprovider/DynamicInstanceAnnotationValueProviderBase.java
index 262aeaf67..d5f46490f 100644
--- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/valueprovider/DynamicInstanceAnnotationValueProviderBase.java
+++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/valueprovider/DynamicInstanceAnnotationValueProviderBase.java
@@ -29,7 +29,7 @@ import org.eclipse.emf.ecore.EStructuralFeature;
 import org.eclipse.jface.viewers.ColumnViewer;
 import org.eclipse.jface.viewers.EditingSupport;
 import org.fortiss.tooling.base.model.element.IAnnotatedSpecification;
-import org.fortiss.tooling.base.ui.annotation.editingsupport.MultiInstanceAnnotationTextEditingSupport;
+import org.fortiss.tooling.base.ui.annotation.editingsupport.TextEditingSupport;
 
 /**
  * <p>
@@ -136,7 +136,7 @@ public abstract class DynamicInstanceAnnotationValueProviderBase<T extends IAnno
 	public EditingSupport createEditingSupport(ColumnViewer viewer,
 			Class<? extends IAnnotatedSpecification> clazz, String instanceKey) {
 
-		return new MultiInstanceAnnotationTextEditingSupport(viewer, clazz, instanceKey);
+		return new TextEditingSupport(viewer, clazz, instanceKey);
 	}
 
 	/** {@inheritDoc} */
diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/valueprovider/EStructuralFeatureValueProviderBase.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/valueprovider/EStructuralFeatureValueProviderBase.java
index 2a82fe3d1..64f07050a 100644
--- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/valueprovider/EStructuralFeatureValueProviderBase.java
+++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/valueprovider/EStructuralFeatureValueProviderBase.java
@@ -271,7 +271,7 @@ public abstract class EStructuralFeatureValueProviderBase<T extends IAnnotatedSp
 				enumValues.add(e.getName());
 			}
 
-			return new ComboBoxEditingSupport(viewer, clazz, enumValues, false);
+			return new ComboBoxEditingSupport(viewer, clazz, enumValues, instanceKey, false);
 		}
 
 		return super.createEditingSupport(viewer, clazz, instanceKey);
diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/valueprovider/ValueProviderBase.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/valueprovider/ValueProviderBase.java
index 6651930a3..584506be3 100644
--- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/valueprovider/ValueProviderBase.java
+++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/valueprovider/ValueProviderBase.java
@@ -37,7 +37,6 @@ import org.fortiss.tooling.base.model.element.IModelElement;
 import org.fortiss.tooling.base.model.element.IModelElementSpecification;
 import org.fortiss.tooling.base.ui.annotation.AnnotationEntry;
 import org.fortiss.tooling.base.ui.annotation.editingsupport.ComboBoxEditingSupport;
-import org.fortiss.tooling.base.ui.annotation.editingsupport.MultiInstanceAnnotationTextEditingSupport;
 import org.fortiss.tooling.base.ui.annotation.editingsupport.TextEditingSupport;
 import org.fortiss.tooling.kernel.utils.EcoreUtils;
 
@@ -164,10 +163,7 @@ public abstract class ValueProviderBase<T extends IAnnotatedSpecification> imple
 
 		// Input is not restricted -> free editing in text cell
 		if(currentInputChoiceMap.get(instanceKey) == null) {
-			if(instanceKey == null) {
-				return new TextEditingSupport(viewer, clazz);
-			}
-			return new MultiInstanceAnnotationTextEditingSupport(viewer, clazz, instanceKey);
+			return new TextEditingSupport(viewer, clazz, instanceKey);
 		}
 
 		// Multiple instances are not supported (yet) for input to be edited in Comboboxes
@@ -176,7 +172,7 @@ public abstract class ValueProviderBase<T extends IAnnotatedSpecification> imple
 		// Input is restricted to concrete set of values
 		// (use SingleEnumAttributeValueProviderBase for Enum types!)
 		return new ComboBoxEditingSupport(viewer, clazz, currentInputChoiceMap.get(instanceKey),
-				fixedInputChoiceMap.get(instanceKey).isEmpty());
+				instanceKey, fixedInputChoiceMap.get(instanceKey).isEmpty());
 	}
 
 	/**
-- 
GitLab