package org.docear.plugin.pdfutilities.map; import java.io.File; import java.util.HashMap; import java.util.Map; import org.docear.plugin.core.mindmap.AMindmapUpdater; import org.docear.plugin.core.util.Tools; import org.docear.plugin.pdfutilities.features.IAnnotation; import org.freeplane.features.link.LinkController; import org.freeplane.features.link.mindmapmode.MLinkController; import org.freeplane.features.map.MapModel; import org.freeplane.features.map.NodeModel; import org.freeplane.plugin.workspace.model.WorkspaceTreeModelEvent; import org.freeplane.plugin.workspace.model.WorkspaceTreeModelEvent.WorkspaceTreeModelEventType; public class MindmapFileLinkUpdater extends AMindmapUpdater { WorkspaceTreeModelEvent event; Map<File, File> fileMap = new HashMap<File, File>(); public MindmapFileLinkUpdater(String title, WorkspaceTreeModelEvent event, Map<File, File> fileMap) { super(title); this.event = event; this.fileMap = fileMap; } @Override public boolean updateMindmap(MapModel map) { if(map == null) return false; return updateLinks(map.getRootNode()); } private boolean updateLinks(NodeModel node) { if(node == null) return false; File link = Tools.getFilefromUri(Tools.getAbsoluteUri(node)); if(link != null){ if(fileMap.containsKey(link)){ ((MLinkController) LinkController.getController()).setLinkTypeDependantLink(node, fileMap.get(link)); if(event != null && event.getType() == WorkspaceTreeModelEventType.rename && node.getText().equals(link.getName())){ node.setText(fileMap.get(link).getName()); } IAnnotation annotation = AnnotationController.getModel(node, false); if(annotation != null && annotation.getAnnotationID() != null && fileMap.containsKey(Tools.getFilefromUri(annotation.getAnnotationID().getUri()))){ annotation.getAnnotationID().setId(fileMap.get(Tools.getFilefromUri(annotation.getAnnotationID().getUri())).toURI(), annotation.getAnnotationID().getObjectNumber()); } } } for(NodeModel child : node.getChildren()){ updateLinks(child); } return true; } }