Author: thn Date: 2011-02-28 01:56:30-0800 New Revision: 19082 Modified: trunk/src/argouml-app/src/org/argouml/uml/ui/TabTaggedValuesModel.java
Log: UML2: a first support for multivalued tagged values Modified: trunk/src/argouml-app/src/org/argouml/uml/ui/TabTaggedValuesModel.java Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/ui/TabTaggedValuesModel.java?view=diff&pathrev=19082&r1=19081&r2=19082 ============================================================================== --- trunk/src/argouml-app/src/org/argouml/uml/ui/TabTaggedValuesModel.java (original) +++ trunk/src/argouml-app/src/org/argouml/uml/ui/TabTaggedValuesModel.java 2011-02-28 01:56:30-0800 @@ -42,6 +42,7 @@ import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.beans.VetoableChangeListener; +import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; @@ -184,7 +185,8 @@ if (row == tvs.size()) { return ""; } - Object tv = tvs.toArray()[row]; + Object[] tva = tvs.toArray(); + Object tv = tva[row]; if (col == 0) { Object n = Model.getFacade().getTagDefinition(tv); if (n == null) { @@ -201,7 +203,20 @@ return be; } else { Object value = Model.getFacade().getValueOfTag(target, tv); - // TODO: handle list + if (value instanceof Collection) { + // handle multivalued tagged value + int n = -1; + for (int i = 0; i <= row; i++) { + if (tva[i] == tv) { + n++; + } + } + if (n != -1) { + value = ((Collection) value).toArray()[n]; + } else { + value = ""; + } + } return value.toString(); } } @@ -243,8 +258,28 @@ Model.getExtensionMechanismsHelper().setDataValues(tv, new String[] {(String) aValue}); } else { - // TODO: handle list - Object value = aValue; + Object[] tva = tvs.toArray(); + Object value = Model.getFacade().getValueOfTag(target, tv); + if (value instanceof Collection) { + // handle multivalued tagged value + Iterator iter = ((Collection) value).iterator(); + Collection values = new ArrayList(); + for (int i = 0; i < tva.length; i++) { + if (tva[i] == tva[rowIndex]) { + if (i == rowIndex) { + values.add(aValue); + if (iter.hasNext()) { + iter.next(); + } + } else if (iter.hasNext()) { + values.add(iter.next()); + } + } + value = values; + } + } else { + value = aValue; + } Model.getExtensionMechanismsHelper().setTaggedValue( target, tv, value); } @@ -290,8 +325,6 @@ Object tagValue = values[1]; Model.getExtensionMechanismsHelper() .addTaggedValue(target, tagType); - // Model.getExtensionMechanismsHelper().setDataValues(tagType, - // new String[] {tagValue}); } // Since we aren't sure of ordering, fire event for whole table ------------------------------------------------------ http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=2708180 To unsubscribe from this discussion, e-mail: [[email protected]].
