Newer
Older
NBFolderOpener / src / nz / ac / otago / infosci / folderopener / FileSystem.java
package nz.ac.otago.infosci.folderopener;

import java.awt.Desktop;
import java.io.File;
import java.io.IOException;
import org.openide.awt.ActionID;
import org.openide.awt.ActionReference;
import org.openide.awt.ActionRegistration;
import org.openide.loaders.DataObject;
import org.openide.nodes.Node;
import org.openide.util.Exceptions;
import org.openide.util.HelpCtx;
import org.openide.util.NbBundle.Messages;
import org.openide.util.actions.NodeAction;

@ActionID(
        category = "Tools",
        id = "nz.ac.otago.infosci.folderopener.FolderOpener"
)
@ActionRegistration(
        lazy=false,
        displayName = "#CTL_FolderOpener"
)
//@ActionReference(path = "Loaders/folder/any/Actions", position = 10000, separatorBefore = 9999)
@ActionReference(path = "Projects/Actions", position = 10000, separatorBefore = 9999)
@Messages("CTL_FolderOpener=Open in File Manager")
public final class FileSystem extends NodeAction {

    public FileSystem() {
    }

    @Override
    protected void performAction(Node[] nodes) {
        try {
            DataObject lookup = nodes[0].getLookup().lookup(DataObject.class);
            String path = lookup.files().iterator().next().getPath();
            System.out.println(path);
            Desktop.getDesktop().open(new File(path));
        } catch (IOException ex) {
            Exceptions.printStackTrace(ex);
        }
    }

    @Override
    protected boolean enable(Node[] nodes) {
        return true;
    }

    @Override
    public String getName() {
        return Bundle.CTL_FolderOpener();
    }

    @Override
    public HelpCtx getHelpCtx() {
        return null;
    }

    @Override
    protected boolean asynchronous() {
        return false;
    }
    
}