/*
* Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
* Copyright (C) $$Year-Rel$$ The Jalview Authors
*
* This file is part of Jalview.
*
* Jalview is free software: you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation, either version 3
* of the License, or (at your option) any later version.
*
* Jalview is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Jalview. If not, see .
* The Jalview Authors are detailed in the 'AUTHORS' file.
*/
package jalview.urls;
import jalview.util.MessageManager;
import jalview.util.UrlLink;
import java.util.ArrayList;
import java.util.List;
/**
* UrlLink table row definition
*
* @author $author$
* @version $Revision$
*/
public class UrlLinkDisplay
{
// column positions
public static final int DATABASE = 0;
public static final int NAME = 1;
public static final int URL = 2;
public static final int SELECTED = 3;
public static final int PRIMARY = 4;
public static final int ID = 5;
// Headers for columns in table
@SuppressWarnings("serial")
private static final List COLNAMES = new ArrayList()
{
{
add(MessageManager.formatMessage("label.database"));
add(MessageManager.formatMessage("label.name"));
add(MessageManager.formatMessage("label.url"));
add(MessageManager.formatMessage("label.inmenu"));
add(MessageManager.formatMessage("label.primary"));
add(MessageManager.formatMessage("label.id"));
}
};
private String id; // id is not supplied to display, but used to identify
// entries when saved
private boolean isPrimary;
private boolean isSelected;
private UrlLink link;
public UrlLinkDisplay(String rowId, UrlLink rowLink, boolean rowSelected,
boolean rowDefault)
{
id = rowId;
isPrimary = rowDefault;
isSelected = rowSelected;
link = rowLink;
}
// getters/setters
public String getId()
{
return id;
}
public String getDescription()
{
return link.getLabel();
}
public String getDBName()
{
return link.getTarget();
}
public String getUrl()
{
return link.getUrlWithToken();
}
public boolean getIsPrimary()
{
return isPrimary;
}
public boolean getIsSelected()
{
return isSelected;
}
public void setDBName(String name)
{
link.setTarget(name);
}
public void setUrl(String rowUrl)
{
link = new UrlLink(getDescription(), rowUrl, getDBName());
}
public void setDescription(String desc)
{
link.setLabel(desc);
}
public void setIsDefault(boolean rowDefault)
{
isPrimary = rowDefault;
}
public void setIsSelected(boolean rowSelected)
{
isSelected = rowSelected;
}
public Object getValue(int index)
{
switch (index)
{
case ID:
return id;
case URL:
return getUrl();
case PRIMARY:
return isPrimary;
case SELECTED:
return isSelected;
case NAME:
return getDescription();
case DATABASE:
return getDBName();
default:
return null;
}
}
public void setValue(int index, Object value)
{
switch (index)
{
case ID:
id = (String) value;
break;
case URL:
setUrl((String) value);
break;
case PRIMARY:
isPrimary = (boolean) value;
break;
case SELECTED:
isSelected = (boolean) value;
break;
case NAME:
setDescription((String) value);
// deliberate fall through
case DATABASE:
setDBName((String) value);
break;
default:
// do nothing
}
}
/**
* Identify editable columns
*
* @param index
* index of column
* @return whether column can be edited in table
*/
public boolean isEditable(int index)
{
if (index == PRIMARY)
{
// primary link must not be a $DB_ACCESSION$ link
// so only allow editing if it is not
return (!link.usesDBAccession());
}
else
{
return index == SELECTED;
}
}
/**
* Get list of column names to display in UI
*
* @return column names
*/
public static List getDisplayColumnNames()
{
// Display names between DESCRIPTION and ID (excludes ID)
return COLNAMES.subList(DATABASE, ID);
}
}