JAL-2316 Unit test update to UrlLinkTableModel and associated tidies
[jalview.git] / src / jalview / urls / UrlLinkTableModel.java
index bbb227b..6b03667 100644 (file)
@@ -28,9 +28,11 @@ import jalview.util.UrlLink;
 import java.util.Iterator;
 import java.util.List;
 
+import javax.swing.RowFilter.Entry;
 import javax.swing.event.TableModelEvent;
 import javax.swing.event.TableModelListener;
 import javax.swing.table.AbstractTableModel;
+import javax.swing.table.TableModel;
 
 /**
  * TableModel for UrlLinks table
@@ -137,6 +139,33 @@ public class UrlLinkTableModel extends AbstractTableModel
     return data.get(rowIndex).isEditable(columnIndex);
   }
 
+  /**
+   * Determine if a row is editable indirectly (rather than directly in table as
+   * in isCellEditable)
+   * 
+   * @param rowIndex
+   * @return true if row can be edited indirectly
+   */
+  public boolean isRowEditable(int rowIndex)
+  {
+    // to edit, row must be a user entered row
+    return (dataProvider.isUserEntry(data.get(rowIndex).getId()));
+  }
+
+  /**
+   * Determine if a row is deletable
+   * 
+   * @param rowIndex
+   *          the row to be tested
+   * @return true if row can be deleted
+   */
+  public boolean isRowDeletable(int rowIndex)
+  {
+    // to delete, row must be a user entered row, and not the default row
+    return (dataProvider.isUserEntry(data.get(rowIndex).getId()) && !data
+            .get(rowIndex).getIsDefault());
+  }
+
   @Override
   public void setValueAt(Object aValue, int rowIndex, int columnIndex)
   {
@@ -228,4 +257,11 @@ public class UrlLinkTableModel extends AbstractTableModel
   {
     return UrlLinkDisplay.SELECTED;
   }
+
+  public boolean isUserEntry(
+          Entry<? extends TableModel, ? extends Object> entry)
+  {
+    return dataProvider
+            .isUserEntry(entry.getStringValue(UrlLinkDisplay.ID));
+  }
 }