/******************************************************************************* * Copyright (c) 2006 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation * IBM Research *******************************************************************************/ package com.ibm.research.tagging.ppt; 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 com.ibm.research.tagging.core.ITag; import com.ibm.research.tagging.core.ITagModelListener; import com.ibm.research.tagging.core.ITagCore; import com.ibm.research.tagging.core.IWaypointModelExtension; import com.ibm.research.tagging.core.IWaypoint; import com.ibm.research.tagging.core.IWaypointModelListener; import com.ibm.research.tagging.core.TagCorePlugin; import com.ibm.research.tagging.resource.InvalidMarkerTypeException; import com.ibm.research.tagging.resource.ResourceWaypoint; public class PptWaypointModelExtension implements IWaypointModelExtension, ITagModelListener, IWaypointModelListener { private PptWaypointResourceChangeListener pptWaypointResourceChangeListener = new PptWaypointResourceChangeListener(); /* * (non-Javadoc) * @see com.ibm.research.tagging.core.IWaypointModelExtension#initialize(com.ibm.research.tagging.core.ITagModel) */ public void initialize(ITagCore core) { ResourcesPlugin.getWorkspace().addResourceChangeListener(pptWaypointResourceChangeListener); TagCorePlugin.getDefault().getTagCore().getTagModel().addTagModelListener(this); TagCorePlugin.getDefault().getTagCore().getWaypointModel().addWaypointModelListener(this); } /* * (non-Javadoc) * @see com.ibm.research.tagging.core.IWaypointModelExtension#loadWaypoints() */ public void loadWaypoints() { try { IResource root = ResourcesPlugin.getWorkspace().getRoot(); IMarker[] markers = root.findMarkers(PptWaypoint.MARKER_ID,false,IResource.DEPTH_INFINITE); for(IMarker marker : markers) { PptWaypoint waypoint = new PptWaypoint(marker); // load state from the marker waypoint.load(); TagCorePlugin.getDefault().getTagCore().getWaypointModel().addWaypoint(waypoint); } } catch (CoreException e) { e.printStackTrace(); } catch (InvalidMarkerTypeException e) { e.printStackTrace(); } } /* * (non-Javadoc) * @see com.ibm.research.tagging.core.IWaypointModelExtension#saveWaypoints() */ public void saveWaypoints() { IWaypoint[] waypoints = TagCorePlugin.getDefault().getTagCore().getWaypointModel().getWaypoints(); for(IWaypoint waypoint : waypoints) { if(waypoint.getType().equals(PptWaypoint.TYPE)) { try { // flush state to the marker ((PptWaypoint)waypoint).save(); } catch (CoreException e) { e.printStackTrace(); } } } } /* * (non-Javadoc) * @see com.ibm.research.tagging.core.ITagCollectionListener#tagAdded(com.ibm.research.tagging.core.ITag) */ public void tagAdded(ITag tag) { } /* * (non-Javadoc) * @see com.ibm.research.tagging.core.ITagCollectionListener#tagRemoved(com.ibm.research.tagging.core.ITag, com.ibm.research.tagging.core.IWaypoint[]) */ public void tagRemoved(ITag tag, IWaypoint[] waypoints) { for(IWaypoint waypoint : waypoints) { if(waypoint.getType().equals(PptWaypoint.TYPE)) { ITag[] tags = waypoint.getTags(); if(tags.length == 0) { TagCorePlugin.getDefault().getTagCore().getWaypointModel().removeWaypoint(waypoint); ((ResourceWaypoint)waypoint).delete(); } } } } /* * (non-Javadoc) * @see com.ibm.research.tagging.core.ITagCollectionListener#tagRenamed(com.ibm.research.tagging.core.ITag, java.lang.String) */ public void tagRenamed(ITag tag, String oldName) { } /* * (non-Javadoc) * @see com.ibm.research.tagging.core.IWaypointCollectionListener#waypointAdded(com.ibm.research.tagging.core.IWaypoint) */ public void waypointAdded(IWaypoint waypoint) { } /* * (non-Javadoc) * @see com.ibm.research.tagging.core.IWaypointCollectionListener#waypointRemoved(com.ibm.research.tagging.core.IWaypoint) */ public void waypointRemoved(IWaypoint waypoint) { if(waypoint.getType().equals(PptWaypoint.TYPE)) ((ResourceWaypoint)waypoint).delete(); } }