package net.sourceforge.tagsea.powerpoint.ui; import java.util.ArrayList; import java.util.List; import net.sourceforge.tagsea.core.IWaypoint; import net.sourceforge.tagsea.core.ui.BaseWaypointUI; import net.sourceforge.tagsea.core.ui.IWaypointUIExtension; import net.sourceforge.tagsea.powerpoint.PowerpointWaypointPlugin; import net.sourceforge.tagsea.powerpoint.waypoints.PowerpointWaypointDelegate; import net.sourceforge.tagsea.powerpoint.waypoints.PowerpointWaypointUtil; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IMarker; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.swt.graphics.Image; public class PowerpointWaypointUI extends BaseWaypointUI implements IWaypointUIExtension { /* (non-Javadoc) * @see net.sourceforge.tagsea.core.ui.BaseWaypointUI#canUIChange(net.sourceforge.tagsea.core.IWaypoint, java.lang.String) */ public boolean canUIChange(IWaypoint waypoint, String attribute) { if(attribute.equals(PowerpointWaypointDelegate.MARKER_ID_ATTR)) return false; return true; } public String[] getVisibleAttributes() { String[] visible = super.getVisibleAttributes(); List<String> list = new ArrayList<String>(); for(String attr : visible) list.add(attr); list.remove(PowerpointWaypointDelegate.MARKER_ID_ATTR); return list.toArray(new String[0]); } /* (non-Javadoc) * @see net.sourceforge.tagsea.core.ui.BaseWaypointUI#getAttributeLabel(net.sourceforge.tagsea.core.IWaypoint, java.lang.String) */ public String getAttributeLabel(IWaypoint waypoint, String attribute) { return super.getAttributeLabel(waypoint, attribute); } public Image getImage(IWaypoint waypoint) { // different images for different types of slide waypoints return PowerpointWaypointPlugin.getDefault().getImageRegistry().get(PowerpointWaypointPlugin.IMG_PPT); } public String getLabel(IWaypoint waypoint) { return waypoint.getText(); } public String getLocationString(IWaypoint waypoint) { String markerIdString = waypoint.getStringValue(PowerpointWaypointDelegate.MARKER_ID_ATTR, ""); if(markerIdString.trim().length()>0) { try { Long markerId = Long.parseLong(markerIdString.trim()); // throws NFE IResource root = ResourcesPlugin.getWorkspace().getRoot(); IMarker[] markers = root.findMarkers(PowerpointWaypointPlugin.MARKER_ID ,false,IResource.DEPTH_INFINITE); IMarker marker = null; for(IMarker m : markers) if(m!=null && m.exists()) if(m.getId() == markerId) marker = m; if(marker != null && marker.exists()) { IFile file = (IFile)marker.getResource(); StringBuffer buffer = new StringBuffer(file.getName()); int slide = waypoint.getIntValue(PowerpointWaypointDelegate.SLIDE_ATTR, 0); String slideRange = waypoint.getStringValue(PowerpointWaypointDelegate.SLIDE_RANGE_ATTR, null); if(slide > 0) buffer.append(" (Slide #" + slide + ")"); else if(slideRange != null && slideRange.trim().length()>0) { int[] range = PowerpointWaypointUtil.getSlideRange(slideRange); if(range!=null) buffer.append(" (Slides " + range[0] + " to " + range[1] + ")"); } else buffer.append(" (All slides)"); return buffer.toString(); } } catch (NumberFormatException e) { //e.printStackTrace(); } catch (CoreException e) { //e.printStackTrace(); } } return "Powerpoint"; } public boolean canUIAddTag(IWaypoint waypoint) { return true; } public boolean canUIMove(IWaypoint waypoint) { return false; } public boolean canUIDeleteTag(IWaypoint waypoint) { return true; } }