X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Furls%2FUrlLinkTableModel.java;h=02e565ee84c1725ff11b322c44da24e0e963539e;hb=483ecb5e4541537778844529cc93204f9124b68d;hp=a647d9e055a520498fb1cecb1de7b5c27f542ab5;hpb=2d18ff6c5ccbd11297b80f70591dc0cb2f6aace6;p=jalview.git diff --git a/src/jalview/urls/UrlLinkTableModel.java b/src/jalview/urls/UrlLinkTableModel.java index a647d9e..02e565e 100644 --- a/src/jalview/urls/UrlLinkTableModel.java +++ b/src/jalview/urls/UrlLinkTableModel.java @@ -21,15 +21,18 @@ 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 @@ -49,8 +52,8 @@ public class UrlLinkTableModel extends AbstractTableModel // list of columns to display in table in correct order private List 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 @@ -71,18 +74,18 @@ public class UrlLinkTableModel extends AbstractTableModel data = baseData.getLinksForTable(); displayColumns = UrlLinkDisplay.getDisplayColumnNames(); - // find the default row - defaultRow = 0; + // find the primary row + primaryRow = 0; Iterator it = data.iterator(); while (it.hasNext()) { - if (it.next().getIsDefault()) + if (it.next().getIsPrimary()) { break; } else { - defaultRow++; + primaryRow++; } } @@ -98,7 +101,7 @@ public class UrlLinkTableModel extends AbstractTableModel dataProvider.setUrlData(data); } catch (IllegalArgumentException ex) { - Cache.log.error(ex.getMessage()); + Console.error(ex.getMessage()); } } }); @@ -136,21 +139,48 @@ 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).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); @@ -181,9 +211,9 @@ public class UrlLinkTableModel extends AbstractTableModel data.remove(rowIndex); // update default row - if (defaultRow > rowIndex) + if (primaryRow > rowIndex) { - defaultRow--; + primaryRow--; } // fire update which will update data source @@ -193,7 +223,7 @@ public class UrlLinkTableModel extends AbstractTableModel 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); @@ -203,9 +233,9 @@ public class UrlLinkTableModel extends AbstractTableModel return index; } - public int getDefaultColumn() + public int getPrimaryColumn() { - return UrlLinkDisplay.DEFAULT; + return UrlLinkDisplay.PRIMARY; } public int getNameColumn() @@ -213,6 +243,11 @@ public class UrlLinkTableModel extends AbstractTableModel return UrlLinkDisplay.NAME; } + public int getDatabaseColumn() + { + return UrlLinkDisplay.DATABASE; + } + public int getIdColumn() { return UrlLinkDisplay.ID; @@ -227,4 +262,16 @@ public class UrlLinkTableModel extends AbstractTableModel { return UrlLinkDisplay.SELECTED; } + + public boolean isUserEntry( + Entry entry) + { + return dataProvider + .isUserEntry(entry.getStringValue(UrlLinkDisplay.ID)); + } + + public boolean isUniqueName(String name) + { + return !dataProvider.contains(name); + } }