package org.docear.plugin.pdfutilities.workspace.action;
import java.awt.event.ActionEvent;
import java.io.File;
import java.net.URI;
import java.util.Map;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import org.docear.plugin.core.workspace.node.LinkTypeIncomingNode;
import org.docear.plugin.pdfutilities.PdfUtilitiesController;
import org.docear.plugin.pdfutilities.actions.UpdateMonitoringFolderAction;
import org.freeplane.core.util.TextUtils;
import org.freeplane.features.map.MapModel;
import org.freeplane.features.mode.Controller;
import org.freeplane.features.mode.ModeController;
import org.freeplane.features.mode.mindmapmode.MModeController;
import org.freeplane.plugin.workspace.WorkspaceUtils;
import org.freeplane.plugin.workspace.actions.AWorkspaceAction;
import org.freeplane.plugin.workspace.event.WorkspaceActionEvent;
import org.freeplane.plugin.workspace.model.AWorkspaceTreeNode;
public class IncomingReReadMonitoringAction extends AWorkspaceAction {
private static final Icon icon;
static {
icon = new ImageIcon(PdfUtilitiesController.class.getResource("/icons/view-refresh-3.png"));
}
/**
*
*/
private static final long serialVersionUID = 1L;
public IncomingReReadMonitoringAction() {
super("workspace.action.docear.incoming.reread_monitored", TextUtils.getRawText("workspace.action.docear.incoming.reread_monitored.label"), icon);
}
public void actionPerformed(ActionEvent e) {
ModeController oldController = Controller.getCurrentModeController();
Controller.getCurrentController().selectMode(MModeController.MODENAME);
try {
AWorkspaceTreeNode node = getNodeFromActionEvent(e);
if (!(node instanceof LinkTypeIncomingNode)) {
return;
}
URI uri = ((LinkTypeIncomingNode) node).getLinkPath();
File f = WorkspaceUtils.resolveURI(uri);
if (f == null) {
return;
}
String path = f.getAbsolutePath();
MapModel incoming = null;
Map<String, MapModel> openMaps = Controller.getCurrentController().getMapViewManager().getMaps();
for (MapModel map : openMaps.values()) {
if (map.getFile() != null && path.equals(map.getFile().getAbsolutePath())) {
incoming = map;
break;
}
}
if (incoming == null) {
((LinkTypeIncomingNode) node).handleAction(new WorkspaceActionEvent(node, WorkspaceActionEvent.WSNODE_OPEN_DOCUMENT, null));
incoming = Controller.getCurrentController().getMap();
}
updateMonitoringFolder(incoming);
}
finally {
Controller.getCurrentController().selectMode(oldController);
}
}
private void updateMonitoringFolder(MapModel map) {
if (map != null) {
UpdateMonitoringFolderAction.updateNodesAgainstMonitoringDir(map.getRootNode(), true);
// Controller.getCurrentController().getAction(key)
}
}
}