package net.sourceforge.tagsea.tasks.waypoints; import net.sourceforge.tagsea.core.IWaypoint; import net.sourceforge.tagsea.core.ui.BaseWaypointUI; import net.sourceforge.tagsea.core.ui.ITagSEAImageConstants; import net.sourceforge.tagsea.core.ui.IWaypointUIExtension; import net.sourceforge.tagsea.tasks.ITaskWaypointAttributes; import net.sourceforge.tagsea.tasks.TaskWaypointPlugin; import net.sourceforge.tagsea.tasks.TaskWaypointUtils; import org.eclipse.core.resources.IMarker; import org.eclipse.swt.graphics.Image; public class WaypointUI extends BaseWaypointUI implements IWaypointUIExtension { private final String[] VISIBLE_ATTRIBUTES = { ITaskWaypointAttributes.ATTR_MESSAGE, ITaskWaypointAttributes.ATTR_RESOURCE, ITaskWaypointAttributes.ATTR_CHAR_START, ITaskWaypointAttributes.ATTR_CHAR_END }; /* (non-Javadoc) * @see net.sourceforge.tagsea.core.ui.BaseWaypointUI#getImage(net.sourceforge.tagsea.core.IWaypoint) */ @Override public Image getImage(IWaypoint waypoint) { return TaskWaypointPlugin.getDefault().getImageRegistry().get(ITagSEAImageConstants.IMG_WAYPOINT); } /* (non-Javadoc) * @see net.sourceforge.tagsea.core.ui.BaseWaypointUI#getLabel(net.sourceforge.tagsea.core.IWaypoint) */ @Override public String getLabel(IWaypoint waypoint) { IMarker marker = TaskWaypointUtils.getTaskForWaypoint(waypoint); String result = ""; if (marker != null) { result = marker.getAttribute(IMarker.MESSAGE, ""); String location = getLocationString(waypoint); if (!"".equals(location)) { if (!"".equals(result)) { result = result + " (" + location + ")"; } else { result = location; } } } return result; } public String getLocationString(IWaypoint waypoint) { IMarker marker = TaskWaypointUtils.getTaskForWaypoint(waypoint); if (marker == null) return ""; String result = marker.getResource().getName(); int line = marker.getAttribute(IMarker.LINE_NUMBER, -1); if (line != -1) { result = result + " line " + line; } return result; } /* (non-Javadoc) * @see net.sourceforge.tagsea.core.ui.BaseWaypointUI#getVisibleAttributes() */ @Override public String[] getVisibleAttributes() { return VISIBLE_ATTRIBUTES; } /* (non-Javadoc) * @see net.sourceforge.tagsea.core.ui.BaseWaypointUI#getAttributeLabel(net.sourceforge.tagsea.core.IWaypoint, java.lang.String) */ @Override public String getAttributeLabel(IWaypoint waypoint, String attribute) { if (attribute != null) { if (attribute.startsWith("char")) { attribute = attribute.substring("char".length()); } return Character.toUpperCase(attribute.charAt(0)) + attribute.substring(1); } return ""; } /* (non-Javadoc) * @see net.sourceforge.tagsea.core.ui.BaseWaypointUI#canUIChange(net.sourceforge.tagsea.core.IWaypoint, java.lang.String) */ @Override public boolean canUIChange(IWaypoint waypoint, String attribute) { return IWaypoint.ATTR_AUTHOR.equals(attribute) || IWaypoint.ATTR_DATE.equals(attribute); } /* (non-Javadoc) * @see net.sourceforge.tagsea.core.ui.BaseWaypointUI#canUIDelete(net.sourceforge.tagsea.core.IWaypoint) */ @Override public boolean canUIDelete(IWaypoint waypoint) { return false; } /* (non-Javadoc) * @see net.sourceforge.tagsea.core.ui.BaseWaypointUI#canUIMove(net.sourceforge.tagsea.core.IWaypoint) */ @Override public boolean canUIMove(IWaypoint waypoint) { return false; } @Override public boolean canUIAddTag(IWaypoint waypoint) { return false; } @Override public boolean canUIDeleteTag(IWaypoint waypoint) { return false; } }