package org.docear.plugin.pdfutilities.listener;
import java.awt.event.ActionEvent;
import java.net.URI;
import java.util.Collection;
import org.docear.plugin.core.DocearController;
import org.docear.plugin.pdfutilities.PdfUtilitiesController;
import org.docear.plugin.pdfutilities.features.AnnotationModel;
import org.docear.plugin.pdfutilities.features.IAnnotation;
import org.freeplane.core.ui.AFreeplaneAction;
import org.freeplane.features.link.FollowLinkAction;
import org.freeplane.features.map.NodeModel;
import org.freeplane.features.mode.Controller;
import org.freeplane.plugin.workspace.URIUtils;
public class DocearFollowLinkAction extends AFreeplaneAction {
/**
*
*/
private static final long serialVersionUID = 1L;
final static String KEY="FollowLinkAction";
public DocearFollowLinkAction() {
super(KEY);
}
public void actionPerformed(ActionEvent e) {
Collection<NodeModel> nodes = Controller.getCurrentModeController().getMapController().getSelectedNodes();
if (nodes == null || nodes.size() == 0) {
return;
}
for (NodeModel node : nodes) {
URI uri = URIUtils.getAbsoluteURI(node);
if(uri == null) {
continue;
}
IAnnotation annotation = null;
try {
annotation = node.getExtension(AnnotationModel.class);
}
catch(Exception ex) {
}
boolean openOnPage = DocearController.getPropertiesController().getBooleanProperty(PdfUtilitiesController.OPEN_PDF_VIEWER_ON_PAGE_KEY);
if (openOnPage) {
PdfUtilitiesController.getController().openPdfOnPage(uri, annotation);
}
else {
new FollowLinkAction().actionPerformed(e);
}
}
}
}