diff --git a/org.fortiss.tooling.base.ui/trunk/icons/annotation.gif b/org.fortiss.tooling.base.ui/trunk/icons/annotation.gif
new file mode 100644
index 0000000000000000000000000000000000000000..bcc30c393a52106dd72e76b5ede20907e5281df4
Binary files /dev/null and b/org.fortiss.tooling.base.ui/trunk/icons/annotation.gif differ
diff --git a/org.fortiss.tooling.base.ui/trunk/plugin.xml b/org.fortiss.tooling.base.ui/trunk/plugin.xml
index e7cdfb76653d7c3a67c6b8f1def9aafac317a825..06190c7389c4c54a7694a64414eb04ff9405b791 100644
--- a/org.fortiss.tooling.base.ui/trunk/plugin.xml
+++ b/org.fortiss.tooling.base.ui/trunk/plugin.xml
@@ -13,7 +13,7 @@
    <extension
          point="org.eclipse.ui.views">
       <view
-            class="org.fortiss.tooling.base.ui.annotation.DummyAnnotationView"
+            class="org.fortiss.tooling.base.ui.annotation.GenericAnnotationView"
             id="org.fortiss.tooling.base.ui.annotationBase"
             name="Annotation"
             restorable="true">
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 d610ffb40445b0548243cc21f18575c60fbcd454..427246273e594df26651323fa0aaeff10b068f99 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
@@ -17,6 +17,8 @@ $Id$
 +--------------------------------------------------------------------------*/
 package org.fortiss.tooling.base.ui.annotation;
 
+import java.util.List;
+
 import org.fortiss.tooling.base.model.element.IAnnotatedSpecification;
 import org.fortiss.tooling.base.model.element.IModelElement;
 
@@ -52,6 +54,14 @@ public class AnnotationEntry<T extends IAnnotatedSpecification> {
 		return valueProvider.getValue((T)specification);
 	}
 
+	public List<String> getFixedSpecifiactionValues() {
+		return valueProvider.getFixedValues();
+	}
+
+	public void setSpecificationValue(String value) {
+		valueProvider.setValue(value, (T)specification);
+	}
+
 	/** Returns modelElement. */
 	public IModelElement getModelElement() {
 		return modelElement;
diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/AnnotationViewPartBase.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/AnnotationViewPartBase.java
deleted file mode 100644
index 5477d27098a184b70492608e9ddd74baf199f8c8..0000000000000000000000000000000000000000
--- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/AnnotationViewPartBase.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*--------------------------------------------------------------------------+
-$Id$
-|                                                                          |
-| Copyright 2013 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;
-
-import static org.eclipse.swt.SWT.COLOR_DARK_GRAY;
-
-import java.util.List;
-
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.ISelectionListener;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.part.ViewPart;
-import org.fortiss.tooling.base.model.element.IAnnotatedSpecification;
-import org.fortiss.tooling.base.model.element.IModelElement;
-import org.fortiss.tooling.base.ui.editpart.ElementEditPartBase;
-import org.fortiss.tooling.kernel.ui.util.SelectionUtils;
-
-/**
- * Base class for displaying {@link IAnnotatedSpecification}s
- * 
- * @author eder
- * @author $Author$
- * @version $Rev$
- * @ConQAT.Rating RED Hash:
- */
-public abstract class AnnotationViewPartBase<T extends EObject, V extends IAnnotatedSpecification>
-		extends ViewPart implements ISelectionListener {
-
-	/** Color of the selected component */
-	protected Color currentlySelectedColor = Display.getCurrent().getSystemColor(SWT.COLOR_CYAN);
-
-	/** Color of non editable components */
-	protected Color notEditibleColor = Display.getCurrent().getSystemColor(COLOR_DARK_GRAY);
-
-	/** The currently selected Object */
-	private T currentlySelectedObject;
-
-	/** The annotated specification of the {@link #currentlySelectedObject} */
-	private V annotatedSpecification;
-
-	/** {@inheritDoc} */
-	@Override
-	public void createPartControl(Composite parent) {
-		getSite().getWorkbenchWindow().getSelectionService().addSelectionListener(this);
-	}
-
-	/** {@inheritDoc} */
-	@SuppressWarnings("unchecked")
-	@Override
-	public void selectionChanged(IWorkbenchPart part, ISelection selection) {
-		currentlySelectedObject = null;
-		currentlySelectedObject = SelectionUtils.checkAndPickFirst(selection, getT());
-
-		if(currentlySelectedObject == null) {
-			ElementEditPartBase<?> editPart =
-					SelectionUtils.checkAndPickFirst(selection, ElementEditPartBase.class);
-			if(editPart != null)
-				currentlySelectedObject = (T)editPart.getModel();
-		}
-
-		if(isAcceptedSelection(currentlySelectedObject)) {
-			addAll();
-			annotatedSpecification = extractAnnotatedSpecification();
-			onUpdateView();
-		}
-
-	}
-
-	/** Extracts the {@link IAnnotatedSpecification} from {@link #currentlySelectedObject} */
-	protected abstract V extractAnnotatedSpecification();
-
-	/** Returns the annotated specification. Null if there is none. */
-	public V getAnnotatedSpecification() {
-		return annotatedSpecification;
-	}
-
-	/** Returns currentlySelectedObject. Null if there is none. */
-	public T getCurrentlySelectedObject() {
-		return currentlySelectedObject;
-	}
-
-	/** Returns the class of type T. Must not be null! */
-	protected abstract Class<T> getT();
-
-	/** {@inheritDoc} */
-	@Override
-	public void dispose() {
-		getSite().getWorkbenchWindow().getSelectionService().removeSelectionListener(this);
-		super.dispose();
-	}
-
-	/** Adds specifications to all {@link IModelElement} */
-	protected abstract void addAll();
-
-	/** Returns all annotated specs of Type V */
-	protected abstract List<V> getAllAnnotatedSpecs();
-
-	/** called every time the view is updated */
-	protected abstract void onUpdateView();
-
-	protected abstract boolean isAcceptedSelection(EObject object);
-
-}
diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/DummyAnnotationView.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/DummyAnnotationView.java
deleted file mode 100644
index 5a9855b22f4d1669656371dfd3532e34efe93b78..0000000000000000000000000000000000000000
--- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/DummyAnnotationView.java
+++ /dev/null
@@ -1,206 +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;
-
-import java.util.HashMap;
-import java.util.Map.Entry;
-
-import org.eclipse.jface.viewers.ArrayContentProvider;
-import org.eclipse.jface.viewers.ColumnLabelProvider;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.TableViewerColumn;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.FillLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.ui.IWorkbenchPart;
-import org.fortiss.tooling.base.model.element.IAnnotatedSpecification;
-import org.fortiss.tooling.kernel.model.INamedCommentedElement;
-
-/**
- * 
- * @author eder
- * @author $Author$
- * @version $Rev$
- * @ConQAT.Rating RED Hash:
- */
-public class DummyAnnotationView extends AnnotationViewPartBase2 {
-
-	/** mapping of {@link IAnnotatedSpecification} -> TableViewerColumn */
-	private HashMap<Class<? extends IAnnotatedSpecification>, TableViewerColumn> columns =
-			new HashMap<Class<? extends IAnnotatedSpecification>, TableViewerColumn>();
-
-	/** The table viewer */
-	private TableViewer tableViewer;
-
-	/** {@inheritDoc} */
-	@Override
-	public void createPartControl(Composite parent) {
-		super.createPartControl(parent);
-		Composite c = new Composite(parent, SWT.NULL);
-		c.setLayout(new FillLayout(SWT.HORIZONTAL));
-
-		tableViewer = new TableViewer(c, SWT.BORDER | SWT.FULL_SELECTION);
-		Table table = tableViewer.getTable();
-		table.setHeaderVisible(true);
-		table.setLinesVisible(true);
-
-		final TableViewerColumn firstColumn = new TableViewerColumn(tableViewer, SWT.NONE);
-		firstColumn.getColumn().setText("IModelElement");
-		firstColumn.getColumn().setWidth(100);
-
-		tableViewer.setContentProvider(new ArrayContentProvider());
-		firstColumn.setLabelProvider(new ColumnLabelProvider() {
-			/** {@inheritDoc} */
-			@Override
-			public String getText(Object element) {
-				AnnotationEntry<?> entry = (AnnotationEntry<?>)element;
-				String modelElementName = entry.getModelElement().getClass().getSimpleName();
-				modelElementName = modelElementName.replace("Impl", "");
-				firstColumn.getColumn().setText(modelElementName);
-				return ((INamedCommentedElement)entry.getModelElement()).getName();// toString();
-
-			}
-		});
-
-	}
-
-	/** {@inheritDoc} */
-	@Override
-	public void selectionChanged(IWorkbenchPart part, ISelection selection) {
-		super.selectionChanged(part, selection);
-
-		for(Entry<Class<? extends IAnnotatedSpecification>, TableViewerColumn> e : columns
-				.entrySet()) {
-			e.getValue().getColumn().dispose();
-		}
-		columns.clear();
-
-		for(AnnotationEntry<? extends IAnnotatedSpecification> entry : values) {
-			if(!isExistingColumn(entry.getSpecification())) {
-				TableViewerColumn column = new TableViewerColumn(tableViewer, SWT.NONE);
-				column.getColumn().setText(entry.getAnnotationName());
-				column.getColumn().setWidth(100);
-				columns.put(entry.getSpecification().getClass(), column);
-				column.setLabelProvider(new ColumnLabelProvider2());
-			}
-
-		}
-
-		if(!tableViewer.getTable().isDisposed())
-			tableViewer.setInput(values);
-
-	}
-
-	/** Checks if column for given specification already exists */
-	private boolean isExistingColumn(IAnnotatedSpecification specification) {
-		if(columns.containsKey(specification.getClass()))
-			return true;
-		return false;
-	}
-
-	private class ColumnLabelProvider2 extends ColumnLabelProvider {
-
-		/** {@inheritDoc} */
-		@Override
-		public String getText(Object element) {
-			AnnotationEntry<?> entry = (AnnotationEntry<?>)element;
-			return entry.getSpecificationValue();
-		}
-	}
-
-	// FIXME
-	// public final class ExampleEditingSupport extends EditingSupport {
-	//
-	// private ComboBoxViewerCellEditor cellEditor = null;
-	//
-	// private ExampleEditingSupport(ColumnViewer viewer) {
-	// super(viewer);
-	// cellEditor =
-	// new ComboBoxViewerCellEditor((Composite)getViewer().getControl(), SWT.READ_ONLY);
-	// cellEditor.setLabelProvider(new LabelProvider());
-	// cellEditor.setContentProvider(new ArrayContentProvider());
-	// cellEditor.setInput(Value.values());
-	// }
-	//
-	// @Override
-	// protected CellEditor getCellEditor(Object element) {
-	// return cellEditor;
-	// }
-	//
-	// @Override
-	// protected boolean canEdit(Object element) {
-	// return true;
-	// }
-	//
-	// @Override
-	// protected Object getValue(Object element) {
-	// if(element instanceof ExampleData) {
-	// ExampleData data = (ExampleData)element;
-	// return data.getData();
-	// }
-	// return null;
-	// }
-	//
-	// @Override
-	// protected void setValue(Object element, Object value) {
-	// if(element instanceof ExampleData && value instanceof Value) {
-	// ExampleData data = (ExampleData)element;
-	// Value newValue = (Value)value;
-	// /* only set new value if it differs from old one */
-	// if(!data.getData().equals(newValue)) {
-	// data.setData(newValue);
-	// }
-	// }
-	// }
-	//
-	// }
-	//
-	// public static enum Value {
-	// value1, value2, value3;
-	// }
-	//
-	// public class ExampleData {
-	//
-	// private String label;
-	// private Value value;
-	//
-	// public ExampleData(String label, Value data) {
-	// this.label = label;
-	// this.value = data;
-	// }
-	//
-	// public String getLabel() {
-	// return label;
-	// }
-	//
-	// public void setLabel(String label) {
-	// this.label = label;
-	// }
-	//
-	// public Value getData() {
-	// return value;
-	// }
-	//
-	// public void setData(Value data) {
-	// this.value = data;
-	// }
-	//
-	// }
-}
diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/GenericAnnotationView.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/GenericAnnotationView.java
new file mode 100644
index 0000000000000000000000000000000000000000..1ed2d6d678804e67f9aaa2f6c425cb198e52375f
--- /dev/null
+++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/GenericAnnotationView.java
@@ -0,0 +1,292 @@
+/*--------------------------------------------------------------------------+
+$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;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map.Entry;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jface.viewers.ColumnLabelProvider;
+import org.eclipse.jface.viewers.ColumnViewer;
+import org.eclipse.jface.viewers.ComboBoxViewerCellEditor;
+import org.eclipse.jface.viewers.EditingSupport;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TableViewerColumn;
+import org.eclipse.jface.viewers.TextCellEditor;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.ui.IWorkbenchPart;
+import org.fortiss.tooling.base.model.element.IAnnotatedSpecification;
+import org.fortiss.tooling.kernel.extension.data.ITopLevelElement;
+import org.fortiss.tooling.kernel.model.INamedCommentedElement;
+import org.fortiss.tooling.kernel.service.IPersistencyService;
+
+/**
+ * 
+ * @author eder
+ * @author $Author$
+ * @version $Rev$
+ * @ConQAT.Rating RED Hash:
+ */
+public class GenericAnnotationView extends AnnotationViewPartBase2 {
+
+	/** mapping of {@link IAnnotatedSpecification} -> TableViewerColumn */
+	private HashMap<Class<? extends IAnnotatedSpecification>, TableViewerColumn> columns =
+			new HashMap<Class<? extends IAnnotatedSpecification>, TableViewerColumn>();
+
+	/** The table viewer */
+	private TableViewer tableViewer;
+
+	/** {@inheritDoc} */
+	@Override
+	public void createPartControl(Composite parent) {
+		super.createPartControl(parent);
+		Composite c = new Composite(parent, SWT.NULL);
+		c.setLayout(new FillLayout(SWT.HORIZONTAL));
+
+		tableViewer = new TableViewer(c, SWT.BORDER | SWT.FULL_SELECTION);
+		Table table = tableViewer.getTable();
+		table.setHeaderVisible(true);
+		table.setLinesVisible(true);
+
+		final TableViewerColumn firstColumn = new TableViewerColumn(tableViewer, SWT.NONE);
+		firstColumn.getColumn().setText("IModelElement");
+		firstColumn.getColumn().setWidth(100);
+
+		tableViewer.setContentProvider(new ArrayContentProvider());
+		firstColumn.setLabelProvider(new ColumnLabelProvider() {
+			/** {@inheritDoc} */
+			@Override
+			public String getText(Object element) {
+				AnnotationEntry<?> entry = (AnnotationEntry<?>)element;
+				String modelElementName = entry.getModelElement().getClass().getSimpleName();
+				modelElementName = modelElementName.replace("Impl", "");
+				firstColumn.getColumn().setText(modelElementName);
+				return ((INamedCommentedElement)entry.getModelElement()).getName();// toString();
+
+			}
+		});
+
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public void selectionChanged(IWorkbenchPart part, ISelection selection) {
+		super.selectionChanged(part, selection);
+
+		for(Entry<Class<? extends IAnnotatedSpecification>, TableViewerColumn> e : columns
+				.entrySet()) {
+			e.getValue().getColumn().dispose();
+		}
+		columns.clear();
+
+		for(AnnotationEntry<? extends IAnnotatedSpecification> entry : values) {
+			if(!isExistingColumn(entry.getSpecification())) {
+				TableViewerColumn column = new TableViewerColumn(tableViewer, SWT.NONE);
+				column.getColumn().setText(entry.getAnnotationName());
+				column.getColumn().setWidth(100);
+				columns.put(entry.getSpecification().getClass(), column);
+				if(entry.getFixedSpecifiactionValues() == null) {
+					column.setLabelProvider(new AnnotationLabelProvider());
+					EditingSupport editingSupport = new StandardEditingSupport(column.getViewer());
+					column.setEditingSupport(editingSupport);
+				} else {
+					column.setLabelProvider(new AnnotationLabelProvider());
+					EditingSupport editingSupport =
+							new ComboEditingSupport(column.getViewer(),
+									entry.getFixedSpecifiactionValues());
+					column.setEditingSupport(editingSupport);
+				}
+			}
+
+		}
+
+		if(!tableViewer.getTable().isDisposed())
+			tableViewer.setInput(values);
+
+	}
+
+	/** Checks if column for given specification already exists */
+	private boolean isExistingColumn(IAnnotatedSpecification specification) {
+		if(columns.containsKey(specification.getClass()))
+			return true;
+		return false;
+	}
+
+	private final class ComboEditingSupport extends EditingSupport {
+
+		private ComboBoxViewerCellEditor cellEditor = null;
+
+		/**
+		 * @param viewer
+		 * @param values
+		 */
+		private ComboEditingSupport(ColumnViewer viewer, List<String> values) {
+			super(viewer);
+			cellEditor =
+					new ComboBoxViewerCellEditor((Composite)getViewer().getControl(), SWT.READ_ONLY);
+			cellEditor.setLabelProvider(new LabelProvider());
+			cellEditor.setContentProvider(new ArrayContentProvider());
+			cellEditor.setInput(values);
+
+		}
+
+		/** {@inheritDoc} */
+		@Override
+		protected CellEditor getCellEditor(Object element) {
+			return cellEditor;
+		}
+
+		/** {@inheritDoc} */
+		@Override
+		protected boolean canEdit(Object element) {
+			return true;
+		}
+
+		/** {@inheritDoc} */
+		@Override
+		protected Object getValue(Object element) {
+			if(element instanceof AnnotationEntry<?>) {
+				AnnotationEntry<?> data = (AnnotationEntry<?>)element;
+				return data.getSpecificationValue();
+			}
+			return null;
+		}
+
+		/** {@inheritDoc} */
+		@Override
+		protected void setValue(Object element, final Object value) {
+			boolean test = true;
+
+			if(element instanceof AnnotationEntry<?> && value instanceof String) {
+				final AnnotationEntry<?> data = (AnnotationEntry<?>)element;
+
+				if(!value.equals(data.getSpecificationValue())) {
+					ITopLevelElement modelContext =
+							IPersistencyService.INSTANCE.getTopLevelElementFor(data
+									.getModelElement());
+					modelContext.runAsCommand(new Runnable() {
+
+						@Override
+						public void run() {
+
+							try {
+								data.setSpecificationValue((String)value);
+							} catch(IllegalArgumentException e) {
+								// should not happen with combo boxes and given values
+								MessageDialog.openError(new Shell(), "ERROR",
+										"The value you entered does not have the desired type.");
+							}
+						}
+					});
+					this.getViewer().refresh(true);
+				}
+
+			}
+		}
+
+	}
+
+	private final class StandardEditingSupport extends EditingSupport {
+
+		private TextCellEditor cellEditor = null;
+
+		/**
+		 * @param viewer
+		 */
+		public StandardEditingSupport(ColumnViewer viewer) {
+			super(viewer);
+			cellEditor = new TextCellEditor((Composite)getViewer().getControl(), SWT.NONE);
+		}
+
+		/** {@inheritDoc} */
+		@Override
+		protected CellEditor getCellEditor(Object element) {
+			return cellEditor;
+		}
+
+		/** {@inheritDoc} */
+		@Override
+		protected boolean canEdit(Object element) {
+			return true;
+		}
+
+		/** {@inheritDoc} */
+		@Override
+		protected Object getValue(Object element) {
+			if(element instanceof AnnotationEntry<?>) {
+				AnnotationEntry<?> data = (AnnotationEntry<?>)element;
+				return data.getSpecificationValue();
+			}
+			return null;
+		}
+
+		/** {@inheritDoc} */
+		@Override
+		protected void setValue(Object element, final Object value) {
+			if(element instanceof AnnotationEntry<?> && value instanceof String) {
+				final AnnotationEntry<?> data = (AnnotationEntry<?>)element;
+
+				if(!value.equals(data.getSpecificationValue())) {
+					ITopLevelElement modelContext =
+							IPersistencyService.INSTANCE.getTopLevelElementFor(data
+									.getModelElement());
+					modelContext.runAsCommand(new Runnable() {
+
+						@Override
+						public void run() {
+							try {
+								data.setSpecificationValue((String)value);
+							} catch(IllegalArgumentException e) {
+								// e.printStackTrace();
+								MessageDialog.openError(new Shell(), "ERROR",
+										"The value you entered does not have the desired type.");
+							}
+						}
+					});
+					this.getViewer().refresh(true);
+				}
+
+			}
+		}
+
+	}
+
+	/** Label provider for {@link AnnotationEntry}s */
+	public final class AnnotationLabelProvider extends ColumnLabelProvider {
+
+		/** {@inheritDoc} */
+		@Override
+		public String getText(Object element) {
+			if(element instanceof AnnotationEntry<?>) {
+				AnnotationEntry<?> data = (AnnotationEntry<?>)element;
+				return data.getSpecificationValue();
+			}
+			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 b17c29497e8a898848c500ffbd25af83fc18523f..c4942f6fa9328e9d164d70b338d75b214b2f0c14 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
@@ -35,15 +35,15 @@ import org.fortiss.tooling.kernel.service.base.IEObjectAware;
 public interface IAnnotationValueProvider<T extends IAnnotatedSpecification> extends
 		IEObjectAware<IModelElement> {
 
-	// List<Annotation> annotations = new ArrayList<Annotation>();
-
 	/** Returns the specific value */
 	public String getValue(T specification);
 
-	public void setValue(String value, T specification);
+	/**
+	 * if this method does not return null, a combo box is provided with the specific return values
+	 */
+	public List<String> getFixedValues();
 
-	/** Returns the specific type of T */
-	// public Class<? extends IAnnotatedSpecification> getAnnotatedSpecClazz();
+	public void setValue(String value, T specification) throws IllegalArgumentException;
 
 	public T addNewSpecToModelElement(IModelElement element);