/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.jme3.gde.gui; import com.jme3.gde.core.assets.ProjectAssetManager; import com.jme3.gde.gui.multiview.PreviewView; import java.io.IOException; import org.netbeans.api.project.Project; import org.netbeans.api.project.ProjectManager; import org.netbeans.modules.xml.multiview.DesignMultiViewDesc; import org.netbeans.modules.xml.multiview.XmlMultiViewDataObject; import org.openide.filesystems.FileObject; import org.openide.loaders.DataNode; import org.openide.loaders.DataObjectExistsException; import org.openide.loaders.MultiFileLoader; import org.openide.nodes.Node; import org.openide.nodes.Children; import org.openide.util.Lookup; import org.openide.util.lookup.AbstractLookup; import org.openide.util.lookup.InstanceContent; import org.openide.util.lookup.ProxyLookup; public class NiftyGuiDataObject extends XmlMultiViewDataObject { private static final int TYPE_TOOLBAR = 0; protected final Lookup lookup; protected final InstanceContent lookupContents = new InstanceContent(); public NiftyGuiDataObject(FileObject pf, MultiFileLoader loader) throws DataObjectExistsException, IOException { super(pf, loader); lookup = new ProxyLookup(getCookieSet().getLookup(), new AbstractLookup(getLookupContents())); findAssetManager(); } protected void findAssetManager() { FileObject file = getPrimaryFile(); ProjectManager pm = ProjectManager.getDefault(); while (file != null) { if (file.isFolder() && pm.isProject(file)) { try { Project project = ProjectManager.getDefault().findProject(file); if (project != null) { ProjectAssetManager mgr = project.getLookup().lookup(ProjectAssetManager.class); if (mgr != null) { getLookupContents().add(mgr); return; } } } catch (IOException ex) { } catch (IllegalArgumentException ex) { } } file = file.getParent(); } } @Override public Lookup getLookup() { return lookup; } public InstanceContent getLookupContents() { return lookupContents; } @Override protected Node createNodeDelegate() { DataNode node = new DataNode(this, Children.LEAF, getLookup()); node.setIconBaseWithExtension("com/jme3/gde/gui/Computer_File_043.gif"); return node; } @Override protected DesignMultiViewDesc[] getMultiViewDesc() { return new DesignMultiViewDesc[]{new PreviewView(this, TYPE_TOOLBAR)}; } @Override protected String getPrefixMark() { return "Nifty"; } }