/**
* SlingBeans - NetBeans Sling plugin https://github.com/jkan997/SlingBeans
* Licensed under Apache 2.0 license http://www.apache.org/licenses/LICENSE-2.0
*/
package org.jkan997.slingbeans.nbprojects.maven.actions;
import java.awt.event.ActionEvent;
import java.io.File;
import javax.swing.text.StyledDocument;
import org.jkan997.slingbeans.helper.LogHelper;
import org.jkan997.slingbeans.nbprojects.maven.LocalSlingNode;
import org.jkan997.slingbeans.nbtree.SlingNode;
import org.netbeans.api.actions.Openable;
import org.openide.cookies.EditorCookie;
import org.openide.filesystems.FileObject;
import org.openide.filesystems.FileUtil;
import org.openide.loaders.DataObject;
/**
*
* @author jkan997
*/
public class OpenEditorAction extends AbstractAction {
public OpenEditorAction(LocalSlingNode node) {
setActionName("Open in editor...");
this.node = node;
}
@Override
public void actionPerformed(ActionEvent e) {
try {
LocalSlingNode slingNode = (LocalSlingNode) node;
FileObject fo = FileUtil.toFileObject(new File(slingNode.getFileObject().getLocalFilePath()));
DataObject d = DataObject.find(fo);
System.out.println("Data object " + d);
EditorCookie ec = (EditorCookie) d.getCookie(EditorCookie.class);
if (ec != null) {
ec.open();
StyledDocument doc = ec.openDocument();
} else {
DataObject dob = DataObject.find(fo);
Openable oc = dob.getLookup().lookup(Openable.class);
if (oc != null) {
oc.open();
}
}
} catch (Exception ex) {
LogHelper.logError(ex);
}
}
}