package org.docear.plugin.core.mindmap; import java.io.File; import java.util.Set; import org.freeplane.features.link.NodeLinks; import org.freeplane.features.map.MapModel; import org.freeplane.features.map.NodeModel; import org.freeplane.plugin.workspace.WorkspaceUtils; public class MindmapFileRemovedUpdater extends AMindmapUpdater { private Set<File> deletedFiles = null; public MindmapFileRemovedUpdater(String title, Set<File> deletedFiles) { super(title); this.deletedFiles = deletedFiles; } @Override public boolean updateMindmap(MapModel map) { if(map == null) return false; return updateLinks(map.getRootNode()); } private boolean updateLinks(NodeModel parent) { //TODO: wenn titel des knotens der datei entspricht --> löschen //nur die jeweilige(n) Datei(en) löschen, nicht alle //referenzen entfernen NodeLinks links = NodeLinks.getLinkExtension(parent); if (links != null) { File link; try { link = WorkspaceUtils.resolveURI(links.getHyperLink(), parent.getMap()); } catch(Exception e) { link = null; } if (link != null && deletedFiles.contains(link)) { links.setHyperLink(null); } } for(NodeModel child : parent.getChildren()){ updateLinks(child); } return true; } }