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