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.
149 lines
5.8 KiB
149 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",
|
|
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());
|
|
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",
|
|
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;
|
|
}
|
|
}
|
|
|