package org.docear.plugin.bibtex.actions; import java.awt.event.ActionEvent; import java.io.File; import org.docear.plugin.bibtex.ReferencesController; import org.docear.plugin.bibtex.jabref.JabRefCommons; import org.docear.plugin.bibtex.jabref.JabrefWrapper; import org.freeplane.core.ui.EnabledAction; import org.freeplane.plugin.workspace.WorkspaceUtils; import org.freeplane.plugin.workspace.actions.AWorkspaceAction; import org.freeplane.plugin.workspace.io.IFileSystemRepresentation; import org.freeplane.plugin.workspace.model.AWorkspaceTreeNode; import org.freeplane.plugin.workspace.nodes.LinkTypeFileNode; @EnabledAction(checkOnPopup = true) public class AddOrUpdateReferenceEntryWorkspaceAction extends AWorkspaceAction { public static final String KEY = "workspace.action.addOrUpdateReferenceEntry"; public AddOrUpdateReferenceEntryWorkspaceAction() { super(KEY); } private static final long serialVersionUID = 1L; public void setEnabledFor(AWorkspaceTreeNode node) { File file = null; if(node instanceof IFileSystemRepresentation) { file = ((IFileSystemRepresentation) node).getFile(); } else { if(node instanceof LinkTypeFileNode) { file = WorkspaceUtils.resolveURI(((LinkTypeFileNode) node).getLinkPath()); } } if(file == null || !file.getName().toLowerCase().endsWith(".pdf") /*|| (AnnotationController.getDocumentHash(file.toURI()) == null)*/) { setEnabled(false); return; } super.setEnabledFor(node); } public void actionPerformed(ActionEvent e) { JabrefWrapper jabrefWrapper = ReferencesController.getController().getJabrefWrapper(); AWorkspaceTreeNode node = getNodeFromActionEvent(e); File file = null; if(node instanceof IFileSystemRepresentation) { file = ((IFileSystemRepresentation) node).getFile(); } else { if(node instanceof LinkTypeFileNode) { file = WorkspaceUtils.resolveURI(((LinkTypeFileNode) node).getLinkPath()); } } if(jabrefWrapper != null && file != null) { JabRefCommons.addNewRefenceEntry(new String[] { file.getPath() }, jabrefWrapper.getJabrefFrame(), jabrefWrapper.getJabrefFrame().basePanel()); } } }