package jalview.urls;
-import jalview.bin.Cache;
+import jalview.bin.Console;
+import jalview.urls.api.UrlProviderI;
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
// list of columns to display in table in correct order
private List<String> displayColumns;
- // row in table which is currently the default
- private int defaultRow;
+ // row in table which is currently the primary
+ private int primaryRow;
/**
* UrlLinkTableModel constructor
data = baseData.getLinksForTable();
displayColumns = UrlLinkDisplay.getDisplayColumnNames();
- // find the default row
- defaultRow = 0;
+ // find the primary row
+ primaryRow = 0;
Iterator<UrlLinkDisplay> it = data.iterator();
while (it.hasNext())
{
- if (it.next().getIsDefault())
+ if (it.next().getIsPrimary())
{
break;
}
else
{
- defaultRow++;
+ primaryRow++;
}
}
dataProvider.setUrlData(data);
} catch (IllegalArgumentException ex)
{
- Cache.log.error(ex.getMessage());
+ Console.error(ex.getMessage());
}
}
});
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).getIsPrimary());
+ }
+
@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex)
{
- if (columnIndex == UrlLinkDisplay.DEFAULT)
+ if (columnIndex == UrlLinkDisplay.PRIMARY)
{
// Default url column: exactly one row must always be true
- if (rowIndex != defaultRow)
+ if (rowIndex != primaryRow)
{
// selected row is not currently the default
// set the current default to false
- data.get(defaultRow).setValue(columnIndex, false);
- fireTableRowsUpdated(defaultRow, defaultRow);
+ data.get(primaryRow).setValue(columnIndex, false);
+ fireTableRowsUpdated(primaryRow, primaryRow);
// set the default to be the selected row
- defaultRow = rowIndex;
+ primaryRow = rowIndex;
data.get(rowIndex).setValue(columnIndex, aValue);
fireTableRowsUpdated(rowIndex, rowIndex);
data.remove(rowIndex);
// update default row
- if (defaultRow > rowIndex)
+ if (primaryRow > rowIndex)
{
- defaultRow--;
+ primaryRow--;
}
// fire update which will update data source
public int insertRow(String name, String url)
{
// add a row to the data
- UrlLink link = new UrlLink(name, url);
+ UrlLink link = new UrlLink(name, url, name);
UrlLinkDisplay u = new UrlLinkDisplay(name, link, true, false);
int index = data.size();
data.add(u);
return index;
}
- public int getDefaultColumn()
+ public int getPrimaryColumn()
{
- return UrlLinkDisplay.DEFAULT;
+ return UrlLinkDisplay.PRIMARY;
}
public int getNameColumn()
return UrlLinkDisplay.NAME;
}
+ public int getDatabaseColumn()
+ {
+ return UrlLinkDisplay.DATABASE;
+ }
+
public int getIdColumn()
{
return UrlLinkDisplay.ID;
{
return UrlLinkDisplay.SELECTED;
}
+
+ public boolean isUserEntry(
+ Entry<? extends TableModel, ? extends Object> entry)
+ {
+ return dataProvider
+ .isUserEntry(entry.getStringValue(UrlLinkDisplay.ID));
+ }
+
+ public boolean isUniqueName(String name)
+ {
+ return !dataProvider.contains(name);
+ }
}