Author: thn
Date: 2011-02-21 14:43:48-0800
New Revision: 19047

Modified:
   trunk/src/argouml-app/src/org/argouml/uml/ui/TabTaggedValuesModel.java

Log:
UML2 only: tagged value handling (first working String tagged values, still 
lots to do)

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=19047&r1=19046&r2=19047
==============================================================================
--- 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-21 14:43:48-0800
@@ -67,8 +67,8 @@
 public class TabTaggedValuesModel extends AbstractTableModel implements
         VetoableChangeListener, DelayedVChangeListener, PropertyChangeListener 
{
 
-    private static final Logger LOG =
-        Logger.getLogger(TabTaggedValuesModel.class);
+    private static final Logger LOG = Logger
+            .getLogger(TabTaggedValuesModel.class);
 
     /**
      * The ModelElement that is the current target.
@@ -80,12 +80,11 @@
      */
     public TabTaggedValuesModel() {
     }
-    
+
     /**
      * Set the current target to the given model element.
      * 
-     * @param t
-     *            the target modelelement
+     * @param t the target modelelement
      */
     public void setTarget(Object t) {
         if (LOG.isDebugEnabled()) {
@@ -100,7 +99,7 @@
             }
             target = t;
             if (t != null) {
-                Model.getPump().addModelEventListener(this, t, 
+                Model.getPump().addModelEventListener(this, t,
                         new String[] {"taggedValue", "referenceTag"});
             }
         }
@@ -109,7 +108,6 @@
         fireTableDataChanged();
     }
 
-
     /*
      * @see javax.swing.table.TableModel#getColumnCount()
      */
@@ -162,8 +160,8 @@
             return 0;
         }
         try {
-            Collection tvs = 
-                Model.getFacade().getTaggedValuesCollection(target);
+            Collection tvs = Model.getFacade()
+                    .getTaggedValuesCollection(target);
             // if (tvs == null) return 1;
             return tvs.size() + 1;
         } catch (InvalidElementException e) {
@@ -180,7 +178,7 @@
         if (row > tvs.size() || col > 1) {
             throw new IllegalArgumentException();
         }
-        // If the row is past the end of our current collection, 
+        // If the row is past the end of our current collection,
         // return an empty string so they can add a new value
         if (row == tvs.size()) {
             return "";
@@ -194,11 +192,17 @@
             return n;
         }
         if (col == 1) {
-            String be = Model.getFacade().getValueOfTag(tv);
-            if (be == null) {
-                return "";
+            if (Model.getFacade().getUmlVersion().charAt(0) == '1') {
+                String be = Model.getFacade().getValueOfTag(tv);
+                if (be == null) {
+                    return "";
+                }
+                return be;
+            } else {
+                Object value = Model.getFacade().getValueOfTag(target, tv);
+                // TODO: handle list
+                return value;
             }
-            return be;
         }
         return "TV-" + row * 2 + col; // for debugging
     }
@@ -215,12 +219,12 @@
             // TODO: Use default value of appropriate type here
             aValue = "";
         }
-        
+
         if ((aValue == null || "".equals(aValue)) && columnIndex == 0) {
             removeRow(rowIndex);
             return;
         }
-        
+
         Collection tvs = Model.getFacade().getTaggedValuesCollection(target);
         if (tvs.size() <= rowIndex) {
             if (columnIndex == 0) {
@@ -234,47 +238,65 @@
             if (columnIndex == 0) {
                 Model.getExtensionMechanismsHelper().setType(tv, aValue);
             } else if (columnIndex == 1) {
-                Model.getExtensionMechanismsHelper().setDataValues(tv,
-                        new String[] {(String) aValue });
+                if (Model.getFacade().getUmlVersion().charAt(0) == '1') {
+                    Model.getExtensionMechanismsHelper().setDataValues(tv,
+                            new String[] {(String) aValue});
+                } else {
+                    // TODO: handle list
+                    Object value = aValue;
+                    Model.getExtensionMechanismsHelper().setTaggedValue(
+                            target, tv, value);
+                }
             }
-            fireTableChanged(
-                    new TableModelEvent(this, rowIndex, rowIndex, 
columnIndex));
+            fireTableChanged(new TableModelEvent(this, rowIndex, rowIndex,
+                    columnIndex));
         }
     }
 
     /**
      * Add a tagged value to the model with the given type and value.
      * 
-     * @param values values for the columns:
-     *  values[0] contains type for new TaggedValue
-     *  values[1] contains value for new TaggedValue
+     * @param values values for the columns: values[0] contains type for new
+     *            TaggedValue values[1] contains value for new TaggedValue
      */
     public void addRow(Object[] values) {
         Object tagType = values[0];
-        String tagValue = (String) values[1];
-        
-        if (tagType == null) {
-            tagType = "";
-        }
-        if (tagValue == null) {
-            // TODO: Use default value of appropriate type for TD
-            tagValue = "";
-//            tagValue = true;
-        }
-        Object tv = Model.getExtensionMechanismsFactory().createTaggedValue();
-        
-        // We really shouldn't add it until after it is set up, but we
-        // need it to have an owner for the following method calls
-        Model.getExtensionMechanismsHelper().addTaggedValue(target, tv);
-
-        Model.getExtensionMechanismsHelper().setType(tv, tagType);
-        Model.getExtensionMechanismsHelper().setDataValues(tv,
-                new String[] {tagValue});
+
+        if (Model.getFacade().getUmlVersion().charAt(0) == '1') {
+            if (tagType == null) {
+                tagType = "";
+            }
+            String tagValue = (String) values[1];
+            if (tagValue == null) {
+                // TODO: Use default value of appropriate type for TD
+                tagValue = "";
+                // tagValue = true;
+            }
+            Object tv = Model.getExtensionMechanismsFactory()
+                    .createTaggedValue();
+
+            // We really shouldn't add it until after it is set up, but we
+            // need it to have an owner for the following method calls
+            Model.getExtensionMechanismsHelper().addTaggedValue(target, tv);
+
+            Model.getExtensionMechanismsHelper().setType(tv, tagType);
+            Model.getExtensionMechanismsHelper().setDataValues(tv,
+                    new String[] {tagValue});
+        } else {
+            if (tagType == null) {
+                return;
+            }
+            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
         fireTableChanged(new TableModelEvent(this));
     }
-    
+
     /**
      * Remove the TaggedValue at the given row from the ModelElement.
      * 
@@ -288,12 +310,14 @@
             fireTableChanged(new TableModelEvent(this));
         }
     }
-    
+
     /*
      * Return the ith element from a Collection.
      * 
      * @param collection collection to get element from
+     * 
      * @param index index of the element to be returned
+     * 
      * @return the object
      */
     static Object getFromCollection(Collection collection, int index) {
@@ -304,28 +328,29 @@
             throw new IndexOutOfBoundsException();
         }
         Iterator it = collection.iterator();
-        for (int i = 0; i < index; i++ ) {
+        for (int i = 0; i < index; i++) {
             it.next();
         }
         return it.next();
     }
 
     /*
-     * @see 
java.beans.PropertyChangeListener#propertyChange(java.beans.PropertyChangeEvent)
+     * @see java.beans.PropertyChangeListener#propertyChange(java.beans.
+     * PropertyChangeEvent)
      */
     public void propertyChange(PropertyChangeEvent evt) {
-        if ("taggedValue".equals(evt.getPropertyName()) 
+        if ("taggedValue".equals(evt.getPropertyName())
                 || "referenceTag".equals(evt.getPropertyName())) {
-            fireTableChanged(new TableModelEvent(this));            
+            fireTableChanged(new TableModelEvent(this));
         }
-        if (evt instanceof DeleteInstanceEvent
-                && evt.getSource() == target) {
+        if (evt instanceof DeleteInstanceEvent && evt.getSource() == target) {
             setTarget(null);
         }
     }
 
     /*
-     * @see 
java.beans.VetoableChangeListener#vetoableChange(java.beans.PropertyChangeEvent)
+     * @see java.beans.VetoableChangeListener#vetoableChange(java.beans.
+     * PropertyChangeEvent)
      */
     public void vetoableChange(PropertyChangeEvent pce) {
         DelayedChangeNotify delayedNotify = new DelayedChangeNotify(this, pce);
@@ -333,7 +358,9 @@
     }
 
     /*
-     * @see 
org.argouml.kernel.DelayedVChangeListener#delayedVetoableChange(java.beans.PropertyChangeEvent)
+     * @see
+     * org.argouml.kernel.DelayedVChangeListener#delayedVetoableChange(java.
+     * beans.PropertyChangeEvent)
      */
     public void delayedVetoableChange(PropertyChangeEvent pce) {
         fireTableDataChanged();

------------------------------------------------------
http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=2706353

To unsubscribe from this discussion, e-mail: 
[[email protected]].

Reply via email to