A complete 3D game development suite written purely in Java.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
jmonkeyengine/sdk/jme3-gui/src/com/jme3/gde/gui/NiftyGuiDataObject.java

150 lines
5.8 KiB

/*
* 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 jada.ngeditor.controller.CommandProcessor;
import jada.ngeditor.controller.GUIEditor;
import java.io.IOException;
import org.netbeans.api.project.Project;
import org.netbeans.api.project.ProjectManager;
import org.netbeans.core.spi.multiview.MultiViewElement;
import org.netbeans.core.spi.multiview.text.MultiViewEditorElement;
import org.openide.awt.ActionID;
import org.openide.awt.ActionReference;
import org.openide.awt.ActionReferences;
import org.openide.filesystems.FileObject;
import org.openide.filesystems.MIMEResolver;
import org.openide.loaders.DataNode;
import org.openide.loaders.DataObject;
import org.openide.loaders.DataObjectExistsException;
import org.openide.loaders.MultiDataObject;
import org.openide.loaders.MultiFileLoader;
import org.openide.nodes.Children;
import org.openide.nodes.Node;
import org.openide.util.Lookup;
import org.openide.util.NbBundle.Messages;
import org.openide.windows.TopComponent;
@Messages({
"LBL_NiftyGui_LOADER=Files of NiftyGui"
})
@MIMEResolver.Registration(
displayName = "#LBL_NiftyGui_LOADER",
resource = "NiftyGuiResolver.xml")
@DataObject.Registration(
mimeType = "text/x-niftygui+xml",
11 years ago
iconBase = "com/jme3/gde/gui/multiview/icons/gui-icon.png",
displayName = "#LBL_NiftyGui_LOADER",
position = 300)
@ActionReferences({
@ActionReference(
path = "Loaders/text/x-niftygui+xml/Actions",
id =
@ActionID(category = "System", id = "org.openide.actions.OpenAction"),
position = 100,
separatorAfter = 200),
@ActionReference(
path = "Loaders/text/x-niftygui+xml/Actions",
id =
@ActionID(category = "Edit", id = "org.openide.actions.CutAction"),
position = 300),
@ActionReference(
path = "Loaders/text/x-niftygui+xml/Actions",
id =
@ActionID(category = "Edit", id = "org.openide.actions.CopyAction"),
position = 400,
separatorAfter = 500),
@ActionReference(
path = "Loaders/text/x-niftygui+xml/Actions",
id =
@ActionID(category = "Edit", id = "org.openide.actions.DeleteAction"),
position = 600),
@ActionReference(
path = "Loaders/text/x-niftygui+xml/Actions",
id =
@ActionID(category = "System", id = "org.openide.actions.RenameAction"),
position = 700,
separatorAfter = 800),
@ActionReference(
path = "Loaders/text/x-niftygui+xml/Actions",
id =
@ActionID(category = "System", id = "org.openide.actions.SaveAsTemplateAction"),
position = 900,
separatorAfter = 1000),
@ActionReference(
path = "Loaders/text/x-niftygui+xml/Actions",
id =
@ActionID(category = "System", id = "org.openide.actions.FileSystemAction"),
position = 1100,
separatorAfter = 1200),
@ActionReference(
path = "Loaders/text/x-niftygui+xml/Actions",
id =
@ActionID(category = "System", id = "org.openide.actions.ToolsAction"),
position = 1300),
@ActionReference(
path = "Loaders/text/x-niftygui+xml/Actions",
id =
@ActionID(category = "System", id = "org.openide.actions.PropertiesAction"),
position = 1400)
})
public class NiftyGuiDataObject extends MultiDataObject {
public NiftyGuiDataObject(FileObject pf, MultiFileLoader loader) throws DataObjectExistsException, IOException {
super(pf, loader);
registerEditor("text/x-niftygui+xml", true);
findAssetManager();
this.getCookieSet().assign(GUIEditor.class, CommandProcessor.getInstance().getGuiEditor());
}
protected final 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) {
this.getCookieSet().assign(mgr.getClass(),mgr);
return;
}
}
} catch (IOException ex) {
} catch (IllegalArgumentException ex) {
}
}
file = file.getParent();
}
}
@Override
protected Node createNodeDelegate() {
DataNode node = new DataNode(this, Children.LEAF, getLookup());
11 years ago
node.setIconBaseWithExtension("com/jme3/gde/gui/multiview/icons/gui-icon.png");
return node;
}
@Override
protected int associateLookup() {
return 1;
}
@MultiViewElement.Registration(
displayName = "#LBL_NiftyGui_EDITOR",
11 years ago
iconBase = "com/jme3/gde/gui/multiview/icons/gui-icon.png",
mimeType = "text/x-niftygui+xml",
persistenceType = TopComponent.PERSISTENCE_ONLY_OPENED,
preferredID = "NiftyGui",
position = 1000)
@Messages("LBL_NiftyGui_EDITOR=XML")
public static MultiViewEditorElement createEditor(Lookup lkp) {
final MultiViewEditorElement multiViewEditorElement = new MultiViewEditorElement(lkp);
return multiViewEditorElement;
}
}