package org.jkan997.slingbeans.nbprojects.maven; /** * SlingBeans - NetBeans Sling plugin https://github.com/jkan997/SlingBeans * Licensed under Apache 2.0 license http://www.apache.org/licenses/LICENSE-2.0 */ import java.awt.Image; import java.awt.datatransfer.Transferable; import java.util.ArrayList; import java.util.List; import javax.swing.Action; import org.jkan997.slingbeans.helper.LogHelper; import org.jkan997.slingbeans.nbactions.submenu.CQ5Submenu; import org.jkan997.slingbeans.nbprojects.maven.actions.AddFileAction; import org.jkan997.slingbeans.nbprojects.maven.actions.OpenEditorAction; import org.jkan997.slingbeans.nbprojects.maven.actions.OpenInExplorerAction; import org.jkan997.slingbeans.nbprojects.maven.actions.RefreshAction; import org.jkan997.slingbeans.nbprojects.maven.actions.VltExportAction; import org.jkan997.slingbeans.nbprojects.maven.actions.VltImportAction; import org.jkan997.slingbeans.slingfs.local.LocalFileObject; import org.openide.nodes.Children; import org.openide.nodes.Node; import org.openide.util.Utilities; import org.openide.util.datatransfer.PasteType; import org.openide.util.lookup.Lookups; /** * * @author jkan997 */ public class LocalSlingNode extends LocalAbstractNode { private LocalFileObject fileObject; private Children children; private Action[] actionArr = null; private OpenEditorAction openEditorAction; private RefreshAction refreshAction; private VltImportAction vltImportAction; private VltExportAction vltExportAction; private OpenInExplorerAction openInExplorerAction; private CQ5Submenu cq5submenu; private AddFileAction addFileAction; public LocalSlingNode(LocalFileObject fileObject, Children children) { super(children, Lookups.singleton(fileObject)); this.children = children; this.fileObject = fileObject; initActions(); } private void initActions() { openEditorAction = new OpenEditorAction(this); openInExplorerAction = new OpenInExplorerAction(this); addFileAction = new AddFileAction(this); refreshAction = new RefreshAction(this); vltImportAction = new VltImportAction(this); vltExportAction = new VltExportAction(this); //cq5submenu = new CQ5Submenu(this); //openXmlDescriptorAction = new OpenXmlDescriptorAction(this); /*AddSubmenu addSubmenu = new AddSubmenu(this); actions.add(addSubmenu);*/ } @Override public Action[] getActions(boolean popup) { if (actionArr == null) { List<Action> actions = new ArrayList<Action>(); if (fileObject.isSlingFile()) { actions.add(openEditorAction); } actions.add(openInExplorerAction); //actions.add(cq5submenu); actions.add(refreshAction); actions.add(vltImportAction); actions.add(vltExportAction); if (fileObject.isSlingFolder()) { actions.add(addFileAction); } actionArr = actions.toArray(new Action[]{}); } return actionArr; } @Override public Action getPreferredAction() { if (fileObject.isSlingFile()) { return openEditorAction; } return null; } public LocalFileObject getFileObject() { return fileObject; } public int getLevel() { int level = 0; String filePath = fileObject.getFilePath(); char[] chars = filePath.toCharArray(); for (char c : chars) { if (c == '/') { level++; } } LogHelper.logInfo(this, filePath + " LEVEL: " + level); return level; } public void refresh() { } @Override public Image getIcon(int type) { if (fileObject.isSlingFolder()) { return Utilities.loadImage("org/jkan997/slingbeans/nbicons/folder.png"); } else if (fileObject.isSlingFile()) { return Utilities.loadImage("org/jkan997/slingbeans/nbicons/file.png"); } else { return Utilities.loadImage("org/jkan997/slingbeans/nbicons/node.png"); } } @Override public Image getOpenedIcon(int type) { return getIcon(type); } @Override public PasteType getDropType(final Transferable t, int arg1, int arg2) { /*final Node node = NodeTransfer.node(t, arg1); return new PasteType() { @Override public Transferable paste() throws IOException { String msg = ((SlingNode) node).getDisplayName(); SwingHelper.showMessage(msg); return null; } };*/ return null; } public LocalSlingRootNode getRootNode() { Node node = this; do { if (node instanceof LocalSlingRootNode) { return (LocalSlingRootNode) node; } node = node.getParentNode(); } while (node != null); return null; } public String getFilePath() { return fileObject.getFilePath(); } @Override public String toString() { return this.getDisplayName(); } }