diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/AnnotationEditingSupportStandard.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/AnnotationEditingSupportStandard.java index 894fe511cca6d739be59a8a9c8ff3bfcf0f26e39..673ae2a49853cbcc53cba97781f06a817937475c 100644 --- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/AnnotationEditingSupportStandard.java +++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/AnnotationEditingSupportStandard.java @@ -77,7 +77,7 @@ public class AnnotationEditingSupportStandard extends EditingSupport { protected Object getValue(Object element) { if(element instanceof AnnotationEntry) { AnnotationEntry data = (AnnotationEntry)element; - return data.getSpecificationValue(specClass); + return data.getSpecificationValue(specClass).toString(); } return null; } diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/AnnotationEntry.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/AnnotationEntry.java index 85c71cd49510c90aedfd142295f8e2fc5b45cd71..531ab2b3d57d2301bbe427089603a2d1b714b462 100644 --- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/AnnotationEntry.java +++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/AnnotationEntry.java @@ -82,8 +82,8 @@ public final class AnnotationEntry { return false; } - /** Returns the annotation's name */ - public <V> V getSpecificationAnnotationName(Class<? extends IAnnotatedSpecification> clazz) { + /** Returns the name / "label" for a given annotation {@code clazz}. */ + public String getSpecificationAnnotationName(Class<? extends IAnnotatedSpecification> clazz) { for(IAnnotatedSpecification s : specificationsList) { if(clazz.isInstance(s)) { return providerSpecMapping.get(clazz).getAnnotationName(s); @@ -94,9 +94,9 @@ public final class AnnotationEntry { } /** - * adds a new value to the given specification clazz and overrides the old one + * Sets the name / "label" for a given annotation {@code clazz}. */ - public <V> void setSpecificationAnnotationName(V name, + public void setSpecificationAnnotationName(String name, Class<? extends IAnnotatedSpecification> clazz) throws Exception { for(IAnnotatedSpecification s : specificationsList) { if(clazz.isInstance(s)) { @@ -108,7 +108,7 @@ public final class AnnotationEntry { throw new Exception("Could not find a AnnotationValueProvider for " + clazz.toString()); } - /** Returns the string representation of the annotation value */ + /** Returns the annotation value */ public <V> V getSpecificationValue(Class<? extends IAnnotatedSpecification> clazz) { for(IAnnotatedSpecification s : specificationsList) { if(clazz.isInstance(s)) { @@ -120,7 +120,7 @@ public final class AnnotationEntry { } /** - * adds a new value to the given specification clazz and overrides the old one + * Sets a new value for the given specification clazz. */ public <V> void setSpecificationValue(V value, Class<? extends IAnnotatedSpecification> clazz) throws Exception { @@ -134,6 +134,21 @@ public final class AnnotationEntry { throw new Exception("Could not find a AnnotationValueProvider for " + clazz.toString()); } + /** + * Sets a new value for the given specification clazz from a {@link String} representation. + */ + public void setSpecificationValue(String value, Class<? extends IAnnotatedSpecification> clazz) + throws Exception { + for(IAnnotatedSpecification s : specificationsList) { + if(clazz.isInstance(s)) { + providerSpecMapping.get(clazz).setAnnotationValue(value, s); + return; + } + } + + throw new Exception("Could not find a AnnotationValueProvider for " + clazz.toString()); + } + /** Returns the possible values of the the given specification clazz */ public List<String> getFixedSpecificationValues(Class<? extends IAnnotatedSpecification> clazz) { for(IAnnotatedSpecification s : specificationsList) { diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/AnnotationLabelProvider.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/AnnotationLabelProvider.java index 2d562989c3f1c75bb9d81da2f8b7ee54ae16529c..527ff75d3d106dc07ef249fb1ec45ad5b81d8a59 100644 --- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/AnnotationLabelProvider.java +++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/AnnotationLabelProvider.java @@ -56,7 +56,7 @@ public class AnnotationLabelProvider extends ColumnLabelProvider { public String getText(Object element) { if(element instanceof AnnotationEntry) { AnnotationEntry data = (AnnotationEntry)element; - return data.getSpecificationValue(specClass); + return data.getSpecificationValue(specClass).toString(); } return "-"; } diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/IAnnotationValueProvider.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/IAnnotationValueProvider.java index 1ebce95582ceadd61a75fe54ac476e68d76f315d..f980d25ae21d2899f0fdb9b42abcef15ee3f0749 100644 --- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/IAnnotationValueProvider.java +++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/IAnnotationValueProvider.java @@ -46,17 +46,20 @@ public interface IAnnotationValueProvider<T extends IAnnotatedSpecification> ext public boolean allowsMultipleValues(); /** Returns the name of the Annotation for 'specification' */ - public <V> V getAnnotationName(T specification); + public String getAnnotationName(T specification); /** Sets a new name for the annotation and overrides the old one */ - public <V> void setAnnotationName(V name, T specification) throws IllegalArgumentException; + public void setAnnotationName(String name, T specification) throws IllegalArgumentException; /** Returns the value of the annotation for 'specification' */ public <V> V getAnnotationValue(T specification); - /** Sets a new value in the annotation and overrides the old one */ + /** Sets a new value for the annotation. */ public <V> void setAnnotationValue(V value, T specification) throws IllegalArgumentException; + /** Sets a new value in the annotation from a {@link String} representation. */ + public void setAnnotationValue(String value, T specification) throws Exception; + /** * If this method does not return null, a combo box is provided with the specific return values */