JAL-2316 Unit test updates and associated minor changes and fixes.
[jalview.git] / src / jalview / urls / UrlLinkTableModel.java
index 0605f02..a647d9e 100644 (file)
@@ -21,6 +21,9 @@
 
 package jalview.urls;
 
+import jalview.bin.Cache;
+import jalview.util.UrlLink;
+
 import java.util.Iterator;
 import java.util.List;
 
@@ -38,12 +41,12 @@ import javax.swing.table.AbstractTableModel;
 public class UrlLinkTableModel extends AbstractTableModel
 {
   // local storage of data
-  // use LinkedHashMap to guarantee ordering remains the same, as
-  // we need to maintain a row/col mapping into the HashMap
   private List<UrlLinkDisplay> data;
 
+  // supplier of url data
   private UrlProviderI dataProvider;
 
+  // list of columns to display in table in correct order
   private List<String> displayColumns;
 
   // row in table which is currently the default
@@ -83,13 +86,20 @@ public class UrlLinkTableModel extends AbstractTableModel
       }
     }
 
+    // set up listener which updates data source when table changes
     this.addTableModelListener(new TableModelListener()
     {
       @Override
       public void tableChanged(TableModelEvent e)
       {
-        // update the UrlProvider from data list
-        dataProvider.setUrlData(data);
+        try
+        {
+          // update the UrlProvider from data list
+          dataProvider.setUrlData(data);
+        } catch (IllegalArgumentException ex)
+        {
+          Cache.log.error(ex.getMessage());
+        }
       }
     });
 
@@ -129,14 +139,7 @@ public class UrlLinkTableModel extends AbstractTableModel
   @Override
   public void setValueAt(Object aValue, int rowIndex, int columnIndex)
   {
-    if ((columnIndex == UrlLinkDisplay.SELECTED)
-            && (rowIndex == defaultRow))
-    {
-      // Selected urls column: can't deselect default URL
-      // refuse to edit: TODO show message box here
-
-    }
-    else if (columnIndex == UrlLinkDisplay.DEFAULT)
+    if (columnIndex == UrlLinkDisplay.DEFAULT)
     {
       // Default url column: exactly one row must always be true
       if (rowIndex != defaultRow)
@@ -150,11 +153,6 @@ public class UrlLinkTableModel extends AbstractTableModel
         defaultRow = rowIndex;
         data.get(rowIndex).setValue(columnIndex, aValue);
 
-        // default row must also be selected
-        if (!data.get(rowIndex).getIsSelected())
-        {
-          data.get(rowIndex).setValue(UrlLinkDisplay.SELECTED, true);
-        }
         fireTableRowsUpdated(rowIndex, rowIndex);
       }
     }
@@ -188,17 +186,45 @@ public class UrlLinkTableModel extends AbstractTableModel
       defaultRow--;
     }
 
+    // fire update which will update data source
     fireTableRowsDeleted(rowIndex, rowIndex);
   }
 
   public int insertRow(String name, String url)
   {
     // add a row to the data
-    UrlLinkDisplay u = new UrlLinkDisplay(name, name, url, true, false);
+    UrlLink link = new UrlLink(name, url);
+    UrlLinkDisplay u = new UrlLinkDisplay(name, link, true, false);
     int index = data.size();
     data.add(u);
+
+    // fire update which will update data source
     fireTableRowsInserted(index, index);
     return index;
   }
 
+  public int getDefaultColumn()
+  {
+    return UrlLinkDisplay.DEFAULT;
+  }
+
+  public int getNameColumn()
+  {
+    return UrlLinkDisplay.NAME;
+  }
+
+  public int getIdColumn()
+  {
+    return UrlLinkDisplay.ID;
+  }
+
+  public int getUrlColumn()
+  {
+    return UrlLinkDisplay.URL;
+  }
+
+  public int getSelectedColumn()
+  {
+    return UrlLinkDisplay.SELECTED;
+  }
 }