Code cleaning

I cleaned a bit the code creating some other packages and deleting old
unused classes
experimental
relu91 10 years ago
parent 5033f7eb2d
commit 74c14377e2
  1. BIN
      sdk/jme3-gui/release/modules/ext/Nifty-Editor0.5.9.jar
  2. 28
      sdk/jme3-gui/src/com/jme3/gde/gui/Navigator.form
  3. 6
      sdk/jme3-gui/src/com/jme3/gde/gui/NiftyGuiDataObject.java
  4. 4
      sdk/jme3-gui/src/com/jme3/gde/gui/NiftyGuiResolver.xml
  5. 29
      sdk/jme3-gui/src/com/jme3/gde/gui/NiftyGuiVisualElement.form
  6. 89
      sdk/jme3-gui/src/com/jme3/gde/gui/OldNiftyGuiDataObject.java
  7. 4
      sdk/jme3-gui/src/com/jme3/gde/gui/multiview/Bundle.properties
  8. 62
      sdk/jme3-gui/src/com/jme3/gde/gui/multiview/ErrorPanel.form
  9. 114
      sdk/jme3-gui/src/com/jme3/gde/gui/multiview/ErrorPanel.java
  10. 27
      sdk/jme3-gui/src/com/jme3/gde/gui/multiview/MouseInputEvent.java
  11. 55
      sdk/jme3-gui/src/com/jme3/gde/gui/multiview/NiftyFileChildren.java
  12. 22
      sdk/jme3-gui/src/com/jme3/gde/gui/multiview/NiftyFileNode.java
  13. 167
      sdk/jme3-gui/src/com/jme3/gde/gui/multiview/NiftyJmeDisplay.java
  14. 53
      sdk/jme3-gui/src/com/jme3/gde/gui/multiview/NiftyPreviewInputHandler.java
  15. 335
      sdk/jme3-gui/src/com/jme3/gde/gui/multiview/NiftyPreviewPanel.java
  16. 22
      sdk/jme3-gui/src/com/jme3/gde/gui/multiview/NiftyScreenNode.java
  17. 48
      sdk/jme3-gui/src/com/jme3/gde/gui/multiview/PreviewToolbarElement.java
  18. 35
      sdk/jme3-gui/src/com/jme3/gde/gui/multiview/PreviewView.java
  19. 73
      sdk/jme3-gui/src/com/jme3/gde/gui/multiview/XmlHelper.java
  20. BIN
      sdk/jme3-gui/src/com/jme3/gde/gui/multiview/icons/Computer_File_043.gif
  21. 4
      sdk/jme3-gui/src/com/jme3/gde/gui/package-info.java
  22. 88
      sdk/jme3-gui/src/com/jme3/gde/gui/palette/JmePaletteUtilities.java
  23. 63
      sdk/jme3-gui/src/com/jme3/gde/gui/palette/Screen.java
  24. 16
      sdk/jme3-gui/src/com/jme3/gde/gui/palette/Screen.xml
  25. 10
      sdk/jme3-gui/src/com/jme3/gde/gui/templates/EmptyNiftyGui.xml
  26. 19
      sdk/jme3-gui/src/com/jme3/gde/gui/templates/NiftyGui.xml
  27. 200
      sdk/jme3-gui/src/com/jme3/gde/gui/view/Navigator.java
  28. 404
      sdk/jme3-gui/src/com/jme3/gde/gui/view/NiftyGuiVisualElement.java

@ -1,28 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.3" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
</AuxValues>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<EmptySpace min="0" pref="244" max="32767" attributes="0"/>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<EmptySpace min="0" pref="274" max="32767" attributes="0"/>
</Group>
</DimensionLayout>
</Layout>
</Form>

@ -36,7 +36,7 @@ import org.openide.windows.TopComponent;
resource = "NiftyGuiResolver.xml") resource = "NiftyGuiResolver.xml")
@DataObject.Registration( @DataObject.Registration(
mimeType = "text/x-niftygui+xml", mimeType = "text/x-niftygui+xml",
iconBase = "com/jme3/gde/gui/Computer_File_043.gif", iconBase = "com/jme3/gde/gui/multiview/icons/Computer_File_043.gif",
displayName = "#LBL_NiftyGui_LOADER", displayName = "#LBL_NiftyGui_LOADER",
position = 300) position = 300)
@ActionReferences({ @ActionReferences({
@ -125,7 +125,7 @@ public class NiftyGuiDataObject extends MultiDataObject {
@Override @Override
protected Node createNodeDelegate() { protected Node createNodeDelegate() {
DataNode node = new DataNode(this, Children.LEAF, getLookup()); DataNode node = new DataNode(this, Children.LEAF, getLookup());
node.setIconBaseWithExtension("com/jme3/gde/gui/Computer_File_043.gif"); node.setIconBaseWithExtension("com/jme3/gde/gui/multiview/icons/Computer_File_043.gif");
return node; return node;
} }
@ -136,7 +136,7 @@ public class NiftyGuiDataObject extends MultiDataObject {
@MultiViewElement.Registration( @MultiViewElement.Registration(
displayName = "#LBL_NiftyGui_EDITOR", displayName = "#LBL_NiftyGui_EDITOR",
iconBase = "com/jme3/gde/gui/Computer_File_043.gif", iconBase = "com/jme3/gde/gui/multiview/icons/Computer_File_043.gif",
mimeType = "text/x-niftygui+xml", mimeType = "text/x-niftygui+xml",
persistenceType = TopComponent.PERSISTENCE_ONLY_OPENED, persistenceType = TopComponent.PERSISTENCE_ONLY_OPENED,
preferredID = "NiftyGui", preferredID = "NiftyGui",

@ -1,8 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!--
To change this template, choose Tools | Templates
and open the template in the editor.
-->
<!DOCTYPE MIME-resolver PUBLIC "-//NetBeans//DTD MIME Resolver 1.0//EN" "http://www.netbeans.org/dtds/mime-resolver-1_0.dtd"> <!DOCTYPE MIME-resolver PUBLIC "-//NetBeans//DTD MIME Resolver 1.0//EN" "http://www.netbeans.org/dtds/mime-resolver-1_0.dtd">
<MIME-resolver> <MIME-resolver>
<file> <file>

@ -1,29 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.3" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
<AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,44,0,0,1,-112"/>
</AuxValues>
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
<SubComponents>
<Container class="javax.swing.JScrollPane" name="scrollArea">
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
<BorderConstraints direction="Center"/>
</Constraint>
</Constraints>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
</Container>
</SubComponents>
</Form>

@ -1,89 +0,0 @@
/*
* 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 OldNiftyGuiDataObject extends XmlMultiViewDataObject {
private static final int TYPE_TOOLBAR = 0;
protected final Lookup lookup;
protected final InstanceContent lookupContents = new InstanceContent();
public OldNiftyGuiDataObject(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() {
if (getLookup().lookup(ProjectAssetManager.class) == null) {
return new DesignMultiViewDesc[]{};
} else {
return new DesignMultiViewDesc[]{new PreviewView(this, TYPE_TOOLBAR)};
}
}
@Override
protected String getPrefixMark() {
return "Nifty";
}
}

@ -1,4 +0,0 @@
PreviewPanel.jLabel1.text=jLabel1
ErrorPanel.jLabel1.text=jLabel1
ErrorPanel.jLabel2.text=\ Errors

@ -1,62 +0,0 @@
<?xml version="1.1" encoding="UTF-8" ?>
<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.PanelFormInfo">
<NonVisualComponents>
<Component class="javax.swing.JLabel" name="jLabel1">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="com/jme3/gde/gui/multiview/Bundle.properties" key="ErrorPanel.jLabel1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
</Property>
</Properties>
</Component>
</NonVisualComponents>
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
<AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,0,93,0,0,3,24"/>
</AuxValues>
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
<SubComponents>
<Container class="javax.swing.JScrollPane" name="jScrollPane1">
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
<BorderConstraints direction="Center"/>
</Constraint>
</Constraints>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
<SubComponents>
<Component class="javax.swing.JList" name="jList1">
<Properties>
<Property name="model" type="javax.swing.ListModel" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
<Connection code="errors" type="code"/>
</Property>
</Properties>
</Component>
</SubComponents>
</Container>
<Component class="javax.swing.JLabel" name="jLabel2">
<Properties>
<Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
<Color blue="c8" green="c8" red="c8" type="rgb"/>
</Property>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="com/jme3/gde/gui/multiview/Bundle.properties" key="ErrorPanel.jLabel2.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
</Property>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
<BorderConstraints direction="North"/>
</Constraint>
</Constraints>
</Component>
</SubComponents>
</Form>

@ -1,114 +0,0 @@
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/*
* ErrorPanel.java
*
* Created on 23 janv. 2012, 22:19:24
*/
package com.jme3.gde.gui.multiview;
import java.awt.Component;
import javax.swing.DefaultListCellRenderer;
import javax.swing.DefaultListModel;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.SwingConstants;
/**
*
* @author Nehon
*/
public class ErrorPanel extends java.awt.Panel {
private DefaultListModel errors = new DefaultListModel();
private static ImageIcon fatalImage = null, nonFatalImage = null;
/** Creates new form ErrorPanel */
public ErrorPanel() {
initComponents();
jList1.setCellRenderer(new DefaultListCellRenderer() {
@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
if (value instanceof JLabel) {
setIcon(((JLabel) value).getIcon());
setText(((JLabel) value).getText());
}
return this;
}
});
}
private static ImageIcon getFatalErrorIcon() {
if (fatalImage == null) {
fatalImage = new ImageIcon(ErrorPanel.class.getResource("/com/jme3/gde/gui/multiview/icons/error.png")); //NOI18N
}
return fatalImage;
}
private static ImageIcon getNonfatalErrorIcon() {
if (nonFatalImage == null) {
nonFatalImage = new ImageIcon(ErrorPanel.class.getResource("/com/jme3/gde/gui/multiview/icons/warning.png")); //NOI18N
}
return nonFatalImage;
}
public void addError(String error) {
errors.addElement(new JLabel(
error,
getFatalErrorIcon(),
SwingConstants.LEFT));
}
public void addWarning(String error) {
errors.addElement(new JLabel(
error,
getNonfatalErrorIcon(),
SwingConstants.LEFT));
}
public void clear(){
errors.clear();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
jLabel1 = new javax.swing.JLabel();
jScrollPane1 = new javax.swing.JScrollPane();
jList1 = new javax.swing.JList();
jLabel2 = new javax.swing.JLabel();
jLabel1.setText(org.openide.util.NbBundle.getMessage(ErrorPanel.class, "ErrorPanel.jLabel1.text")); // NOI18N
setLayout(new java.awt.BorderLayout());
jList1.setModel(errors);
jScrollPane1.setViewportView(jList1);
add(jScrollPane1, java.awt.BorderLayout.CENTER);
jLabel2.setBackground(new java.awt.Color(200, 200, 200));
jLabel2.setText(org.openide.util.NbBundle.getMessage(ErrorPanel.class, "ErrorPanel.jLabel2.text")); // NOI18N
add(jLabel2, java.awt.BorderLayout.NORTH);
}// </editor-fold>//GEN-END:initComponents
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JList jList1;
private javax.swing.JScrollPane jScrollPane1;
// End of variables declaration//GEN-END:variables
}

@ -1,27 +0,0 @@
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.jme3.gde.gui.multiview;
/**
*
* @author normenhansen
*/
public class MouseInputEvent {
int x;
int y;
int button;
int huh;
boolean pressed;
public MouseInputEvent(int x, int y, int button, int huh, boolean pressed) {
this.x = x;
this.y = y;
this.button = button;
this.huh = huh;
this.pressed = pressed;
}
}

@ -1,55 +0,0 @@
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.jme3.gde.gui.multiview;
import java.util.LinkedList;
import java.util.List;
import org.openide.nodes.Children;
import org.openide.nodes.Node;
import org.w3c.dom.Element;
/**
*
* @author normenhansen
*/
public class NiftyFileChildren extends Children.Keys<Element> {
Element xmlNode;
public NiftyFileChildren(Element xmlNode) {
this.xmlNode = xmlNode;
}
@Override
protected void addNotify() {
super.addNotify();
setKeys(createKeys());
}
protected List<Element> createKeys() {
LinkedList<Element> ret = new LinkedList<Element>();
Element curElement = XmlHelper.findFirstChildElement(xmlNode);
while (curElement != null) {
if (checkElement(curElement)) {
ret.add(curElement);
}
curElement = XmlHelper.findNextSiblingElement(curElement);
}
return ret;
}
private boolean checkElement(Element curElement) {
if (!"screen".equals(curElement.getTagName())) {
return false;
}
return true;
}
@Override
protected Node[] createNodes(Element key) {
return new Node[]{new NiftyScreenNode(key.getAttribute("id"))};
}
}

@ -1,22 +0,0 @@
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.jme3.gde.gui.multiview;
import org.openide.nodes.AbstractNode;
import org.w3c.dom.Element;
/**
*
* @author normenhansen
*/
public class NiftyFileNode extends AbstractNode{
public NiftyFileNode(Element xmlNode) {
super(new NiftyFileChildren(xmlNode));
}
}

@ -1,167 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package com.jme3.gde.gui.multiview;
import com.jme3.asset.AssetInfo;
import com.jme3.asset.AssetKey;
import com.jme3.asset.AssetManager;
import com.jme3.asset.AssetNotFoundException;
import com.jme3.asset.DesktopAssetManager;
import com.jme3.audio.AudioRenderer;
import com.jme3.niftygui.RenderDeviceJme;
import com.jme3.niftygui.SoundDeviceJme;
import com.jme3.post.SceneProcessor;
import com.jme3.renderer.RenderManager;
import com.jme3.renderer.Renderer;
import com.jme3.renderer.ViewPort;
import com.jme3.renderer.queue.RenderQueue;
import com.jme3.texture.FrameBuffer;
import de.lessvoid.nifty.Nifty;
import de.lessvoid.nifty.spi.input.InputSystem;
import de.lessvoid.nifty.tools.TimeProvider;
import de.lessvoid.nifty.tools.resourceloader.ResourceLocation;
import java.io.InputStream;
import java.net.URL;
public class NiftyJmeDisplay extends com.jme3.niftygui.NiftyJmeDisplay implements SceneProcessor {
protected class ResourceLocationJmp implements ResourceLocation {
public InputStream getResourceAsStream(String path) {
AssetKey<Object> key = new AssetKey<Object>(path);
AssetInfo info = assetManager.locateAsset(key);
if (info != null){
return info.openStream();
}else{
throw new AssetNotFoundException(path);
}
}
public URL getResource(String path) {
throw new UnsupportedOperationException();
}
}
private ResourceLocation resourceLocation = new ResourceLocationJmp();
public NiftyJmeDisplay(AssetManager assetManager,
InputSystem inputManager,
AudioRenderer audioRenderer,
ViewPort vp){
this.assetManager = assetManager;
//TODO: move
((DesktopAssetManager)assetManager).clearCache();
w = vp.getCamera().getWidth();
h = vp.getCamera().getHeight();
soundDev = new SoundDeviceJme(assetManager, audioRenderer);
renderDev = new RenderDeviceJme(this);
nifty = new Nifty(renderDev, soundDev, inputManager, new TimeProvider());
nifty.getResourceLoader().addResourceLocation(resourceLocation);
}
@Override
public void initialize(RenderManager rm, ViewPort vp) {
this.renderManager = rm;
renderDev.setRenderManager(rm);
inited = true;
this.vp = vp;
this.renderer = rm.getRenderer();
}
@Override
public Nifty getNifty() {
return nifty;
}
RenderDeviceJme getRenderDevice() {
return renderDev;
}
AssetManager getAssetManager() {
return assetManager;
}
RenderManager getRenderManager() {
return renderManager;
}
int getHeight() {
return h;
}
int getWidth() {
return w;
}
Renderer getRenderer(){
return renderer;
}
@Override
public void reshape(ViewPort vp, int w, int h) {
this.w = w;
this.h = h;
nifty.resolutionChanged();
}
@Override
public boolean isInitialized() {
return inited;
}
@Override
public void preFrame(float tpf) {
}
@Override
public void postQueue(RenderQueue rq) {
// render nifty before anything else
renderManager.setCamera(vp.getCamera(), true);
nifty.render(false);
renderManager.setCamera(vp.getCamera(), false);
}
@Override
public void postFrame(FrameBuffer out) {
}
@Override
public void cleanup() {
nifty.getResourceLoader().removeResourceLocation(resourceLocation);
inited = false;
// nifty.exit();
}
}

@ -1,53 +0,0 @@
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.jme3.gde.gui.multiview;
import de.lessvoid.nifty.NiftyInputConsumer;
import de.lessvoid.nifty.input.keyboard.KeyboardInputEvent;
import de.lessvoid.nifty.tools.resourceloader.NiftyResourceLoader;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
/**
*
* @author normenhansen
*/
public class NiftyPreviewInputHandler implements de.lessvoid.nifty.spi.input.InputSystem {
private List<MouseInputEvent> mouseEvents = new LinkedList<MouseInputEvent>();
private List<KeyboardInputEvent> keyEvents = new LinkedList<KeyboardInputEvent>();
public synchronized void forwardEvents(NiftyInputConsumer nic) {
for (Iterator<MouseInputEvent> it = mouseEvents.iterator(); it.hasNext();) {
MouseInputEvent mouseInputEvent = it.next();
nic.processMouseEvent(mouseInputEvent.x, mouseInputEvent.y, mouseInputEvent.button, mouseInputEvent.huh, mouseInputEvent.pressed);
it.remove();
}
for (Iterator<KeyboardInputEvent> it = keyEvents.iterator(); it.hasNext();) {
KeyboardInputEvent keyInputEvent = it.next();
nic.processKeyboardEvent(keyInputEvent);
it.remove();
}
}
public synchronized void addMouseEvent(int newMouseX, int newMouseY, boolean mouseDown) {
MouseInputEvent event = new MouseInputEvent(newMouseX, newMouseY, 0, 0, mouseDown);
mouseEvents.add(event);
}
public synchronized void addKeyEvent(int newKey, char newCharacter, boolean newKeyDown, boolean newShiftDown, boolean newControlDown) {
KeyboardInputEvent event = new KeyboardInputEvent(newKey, newCharacter, newKeyDown, newShiftDown, newControlDown);
keyEvents.add(event);
}
public void setMousePosition(int i, int i1) {
// throw new UnsupportedOperationException("Not supported yet.");
}
public void setResourceLoader(NiftyResourceLoader nrl) {
}
}

@ -1,335 +0,0 @@
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.jme3.gde.gui.multiview;
import com.jme3.audio.AudioRenderer;
import com.jme3.gde.core.assets.ProjectAssetManager;
import com.jme3.gde.core.scene.OffScenePanel;
import com.jme3.gde.core.scene.SceneApplication;
import com.jme3.gde.gui.OldNiftyGuiDataObject;
import com.jme3.renderer.ViewPort;
import de.lessvoid.nifty.Nifty;
import java.awt.Dimension;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.io.IOException;
import java.io.InputStream;
import java.util.Collection;
import java.util.Iterator;
import java.util.concurrent.Callable;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JComboBox;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JToolBar;
import org.netbeans.modules.xml.multiview.Error;
import org.netbeans.modules.xml.multiview.ui.PanelView;
import org.netbeans.modules.xml.multiview.ui.ToolBarDesignEditor;
import org.openide.NotifyDescriptor;
import org.openide.NotifyDescriptor.Message;
import org.openide.nodes.Node;
import org.openide.util.Exceptions;
import org.openide.xml.XMLUtil;
import org.w3c.dom.Document;
import org.xml.sax.ErrorHandler;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
/**
*
* @author normenhansen
*/
public class NiftyPreviewPanel extends PanelView implements ErrorHandler {
private OldNiftyGuiDataObject niftyObject;
private OffScenePanel offPanel;
private Nifty nifty;
private Document doc;
private ToolBarDesignEditor comp;
private String screen = "";
private NiftyPreviewInputHandler inputHandler;
private NiftyJmeDisplay niftyDisplay;
private JScrollPane scrollPanel;
private int width = 640, height = 480;
private ErrorPanel errors;
public NiftyPreviewPanel(OldNiftyGuiDataObject niftyObject, ToolBarDesignEditor comp) {
super();
setRoot(Node.EMPTY);
this.niftyObject = niftyObject;
this.comp = comp;
comp.setContentView(this);
preparePreview();
updatePreView();
}
private void createToolbar() {
JToolBar toolBar = new JToolBar();
toolBar.setPreferredSize(new Dimension(10000, 24));
toolBar.setMaximumSize(new Dimension(10000, 24));
toolBar.setFloatable(false);
JComboBox comboBox = new JComboBox(new String[]{"640x480", "480x800", "800x480", "800x600", "1024x768", "1280x720"});
comboBox.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
String string = (String) e.getItem();
if ("640x480".equals(string)) {
width = 640;
height = 480;
} else if ("1024x768".equals(string)) {
width = 1024;
height = 768;
} else if ("1280x720".equals(string)) {
width = 1280;
height = 720;
} else if ("800x600".equals(string)) {
width = 800;
height = 600;
} else if ("800x480".equals(string)) {
width = 800;
height = 480;
} else if ("480x800".equals(string)) {
width = 480;
height = 800;
} else {
width = 640;
height = 480;
}
offPanel.resizeGLView(width, height);
SceneApplication.getApplication().enqueue(new Callable<Object>() {
public Object call() throws Exception {
niftyDisplay.reshape(offPanel.getViewPort(), width, height);
return null;
}
});
// updatePreView();
}
});
toolBar.add(comboBox);
toolBar.add(new JPanel());
setLayout(new java.awt.BorderLayout());
add(toolBar, java.awt.BorderLayout.NORTH);
errors = new ErrorPanel();
errors.setPreferredSize(new Dimension(0, 80));
add(errors, java.awt.BorderLayout.SOUTH);
}
public void updatePreView() {
updatePreView(screen);
}
public void updatePreView(final String screen) {
errors.clear();
final ProjectAssetManager pm = niftyObject.getLookup().lookup(ProjectAssetManager.class);
if (pm == null) {
Logger.getLogger(NiftyPreviewPanel.class.getName()).log(Level.WARNING, "No Project AssetManager found!");
}
InputStream stream = null;
try {
stream = niftyObject.getPrimaryFile().getInputStream();
doc = XMLUtil.parse(new InputSource(stream), false, false, this, null);
NiftyFileNode rootContext = new NiftyFileNode(doc.getDocumentElement());
setRoot(rootContext);
comp.setRootContext(rootContext);
} catch (Exception ex) {
// Message msg = new NotifyDescriptor.Message(
// "Error parsing File:" + ex,
// NotifyDescriptor.ERROR_MESSAGE);
// DialogDisplayer.getDefault().notifyLater(msg);
Exceptions.printStackTrace(ex);
// return;
} finally {
try {
if (stream != null) {
stream.close();
}
} catch (IOException ex) {
Exceptions.printStackTrace(ex);
}
}
try {
if (nifty != null) {
nifty.validateXml(niftyObject.getPrimaryFile().getPath());
}
} catch (Exception e) {
if (e instanceof SAXParseException) {
SAXParseException spe = (SAXParseException) e;
errors.addError("Line " + spe.getLineNumber() + " col :" + spe.getColumnNumber() + " : " + spe.getMessage());
} else {
errors.addError(e.getMessage());
}
Exceptions.printStackTrace(e);
}
SceneApplication.getApplication().enqueue(new Callable<Object>() {
public Object call() throws Exception {
try {
nifty.fromXml(pm.getRelativeAssetPath(niftyObject.getPrimaryFile().getPath()), screen);
if (screen == null || screen.length() == 0) {
Collection<String> screens = nifty.getAllScreensName();
for (Iterator<String> it = screens.iterator(); it.hasNext();) {
String string = it.next();
nifty.gotoScreen(string);
return null;
}
}
} catch (Exception ex) {
Message msg = new NotifyDescriptor.Message(
"Error opening File:" + ex,
NotifyDescriptor.ERROR_MESSAGE);
// DialogDisplayer.getDefault().notifyLater(msg);
Exceptions.printStackTrace(ex);
errors.addError(ex.getMessage());
}
return null;
}
});
// java.awt.EventQueue.invokeLater(new Runnable() {
//
// public void run() {
// validateTree();
// }
// });
}
@Override
public void initComponents() {
super.initComponents();
setLayout(new javax.swing.BoxLayout(this, javax.swing.BoxLayout.PAGE_AXIS));
createToolbar();
scrollPanel = new JScrollPane();
offPanel = new OffScenePanel(640, 480);
scrollPanel.getViewport().add(offPanel);
add(scrollPanel);
offPanel.startPreview();
prepareInputHandler();
}
private void prepareInputHandler() {
inputHandler = new NiftyPreviewInputHandler();
offPanel.addMouseMotionListener(new MouseMotionListener() {
public void mouseDragged(MouseEvent e) {
inputHandler.addMouseEvent(e.getX(), e.getY(), e.getButton() == MouseEvent.NOBUTTON ? false : true);
}
public void mouseMoved(MouseEvent e) {
inputHandler.addMouseEvent(e.getX(), e.getY(), e.getButton() == MouseEvent.NOBUTTON ? false : true);
}
});
offPanel.addMouseListener(new MouseListener() {
public void mouseClicked(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
inputHandler.addMouseEvent(e.getX(), e.getY(), e.getButton() == MouseEvent.NOBUTTON ? false : true);
}
public void mouseReleased(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
});
offPanel.addKeyListener(new KeyListener() {
public void keyTyped(KeyEvent e) {
}
public void keyPressed(KeyEvent e) {
inputHandler.addKeyEvent(e.getKeyCode(), e.getKeyChar(), true, e.isShiftDown(), e.isControlDown());
}
public void keyReleased(KeyEvent e) {
}
});
}
private void preparePreview() {
SceneApplication.getApplication().enqueue(new Callable<Object>() {
public Object call() throws Exception {
ViewPort guiViewPort = offPanel.getViewPort();
ProjectAssetManager pm = niftyObject.getLookup().lookup(ProjectAssetManager.class);
if (pm == null) {
Logger.getLogger(NiftyPreviewPanel.class.getName()).log(Level.WARNING, "No Project AssetManager found!");
return null;
}
AudioRenderer audioRenderer = SceneApplication.getApplication().getAudioRenderer();
niftyDisplay = new NiftyJmeDisplay(pm,
inputHandler,
audioRenderer,
guiViewPort);
nifty = niftyDisplay.getNifty();
// attach the nifty display to the gui view port as a processor
guiViewPort.addProcessor(niftyDisplay);
return null;
}
});
}
@Override
protected Error validateView() {
return null;
}
@Override
public void showSelection(Node[] nodes) {
this.screen = nodes[0].getName();
final String screen = this.screen;
SceneApplication.getApplication().enqueue(new Callable<Object>() {
public Object call() throws Exception {
nifty.gotoScreen(screen);
return null;
}
});
}
public void cleanup() {
offPanel.stopPreview();
SceneApplication.getApplication().enqueue(new Callable<Object>() {
public Object call() throws Exception {
ViewPort guiViewPort = offPanel.getViewPort();
guiViewPort.removeProcessor(niftyDisplay);
return null;
}
});
}
public void warning(SAXParseException exception) throws SAXException {
//errors.addWarning("Line " + exception.getLineNumber() + " : " + exception.getMessage());
}
public void error(SAXParseException exception) throws SAXException {
//errors.addError("Line " + exception.getLineNumber() + " : " + exception.getMessage());
}
public void fatalError(SAXParseException exception) throws SAXException {
//errors.addError("Line " + exception.getLineNumber() + " : " + exception.getMessage());
}
}

@ -1,22 +0,0 @@
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.jme3.gde.gui.multiview;
import org.openide.nodes.AbstractNode;
import org.openide.nodes.Children;
/**
*
* @author normenhansen
*/
public class NiftyScreenNode extends AbstractNode{
public NiftyScreenNode(String name) {
super(Children.LEAF);
setName(name);
}
}

@ -1,48 +0,0 @@
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.jme3.gde.gui.multiview;
import com.jme3.gde.gui.OldNiftyGuiDataObject;
import org.netbeans.modules.xml.multiview.ToolBarMultiViewElement;
import org.netbeans.modules.xml.multiview.ui.SectionView;
import org.netbeans.modules.xml.multiview.ui.ToolBarDesignEditor;
import org.openide.nodes.Node;
/**
*
* @author normenhansen
*/
public class PreviewToolbarElement extends ToolBarMultiViewElement {
// private NiftyGuiDataObject dObj;
private ToolBarDesignEditor comp;
private NiftyPreviewPanel viewPanel;
public PreviewToolbarElement(OldNiftyGuiDataObject dObj) {
super(dObj);
// this.dObj = dObj;
comp = new ToolBarDesignEditor();
setVisualEditor(comp);
viewPanel=new NiftyPreviewPanel(dObj, comp);
}
@Override
public SectionView getSectionView() {
return null;
}
@Override
public void componentShowing() {
super.componentShowing();
viewPanel.updatePreView();
}
@Override
public void componentClosed() {
super.componentClosed();
viewPanel.cleanup();
}
}

@ -1,35 +0,0 @@
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.jme3.gde.gui.multiview;
import com.jme3.gde.gui.OldNiftyGuiDataObject;
import org.netbeans.modules.xml.multiview.DesignMultiViewDesc;
/**
*
* @author normenhansen
*/
public class PreviewView extends DesignMultiViewDesc {
private int type;
public PreviewView(OldNiftyGuiDataObject dObj, int type) {
super(dObj, "Design");
this.type = type;
}
public org.netbeans.core.spi.multiview.MultiViewElement createElement() {
OldNiftyGuiDataObject dObj = (OldNiftyGuiDataObject) getDataObject();
return new PreviewToolbarElement(dObj);
}
public java.awt.Image getIcon() {
return org.openide.util.Utilities.loadImage("com/jme3/gde/gui/Computer_File_043.gif"); //NOI18N
}
public String preferredID() {
return "Toc_multiview_design" + String.valueOf(type);
}
}

@ -1,73 +0,0 @@
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.jme3.gde.gui.multiview;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
/**
*
* @author normenhansen
*/
public class XmlHelper {
public static Element findFirstChildElement(Element parent) {
org.w3c.dom.Node ret = parent.getFirstChild();
while (ret != null && (!(ret instanceof Element))) {
ret = ret.getNextSibling();
}
return (Element) ret;
}
public static Element findChildElement(Element parent, String name) {
if (parent == null) {
return null;
}
org.w3c.dom.Node ret = parent.getFirstChild();
while (ret != null && (!(ret instanceof Element) || !ret.getNodeName().equals(name))) {
ret = ret.getNextSibling();
}
return (Element) ret;
}
public static Element findNextElement(Node ret, String name) {
ret = ret.getNextSibling();
while (ret != null && (!(ret instanceof Element) || !ret.getNodeName().equals(name))) {
ret = ret.getNextSibling();
}
return (Element) ret;
}
public static Element findChildElementWithAttribute(Element parent, String name, String attribute, String value) {
if (parent == null) {
return null;
}
org.w3c.dom.Node ret = parent.getFirstChild();
while (ret != null && (!(ret instanceof Element) || !ret.getNodeName().equals(name) || ((Element)ret).getAttribute(attribute)==null || !((Element)ret).getAttribute(attribute).equals(value))) {
ret = ret.getNextSibling();
}
return (Element) ret;
}
public static Element findNextElementWithAttribute(Node ret, String name, String attribute, String value) {
ret = ret.getNextSibling();
while (ret != null && (!(ret instanceof Element) || !ret.getNodeName().equals(name) || ((Element)ret).getAttribute(attribute)==null || !((Element)ret).getAttribute(attribute).equals(value))) {
ret = ret.getNextSibling();
}
return (Element) ret;
}
public static Element findNextSiblingElement(Element current) {
org.w3c.dom.Node ret = current.getNextSibling();
while (ret != null) {
if (ret instanceof Element) {
return (Element) ret;
}
ret = ret.getNextSibling();
}
return null;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 386 B

@ -2,8 +2,8 @@
* To change this template, choose Tools | Templates * To change this template, choose Tools | Templates
* and open the template in the editor. * and open the template in the editor.
*/ */
@TemplateRegistrations(value = {@TemplateRegistration(folder = "GUI", displayName = "Empty Gui",content = "EmptyNiftyGui.xml"), @TemplateRegistrations(value = {@TemplateRegistration(folder = "GUI", displayName = "Empty Gui",content = "templates/EmptyNiftyGui.xml"),
@TemplateRegistration(folder = "GUI", displayName = "HelloJme",content = "NiftyGui.xml")}) @TemplateRegistration(folder = "GUI", displayName = "HelloJme",content = "templates/NiftyGui.xml")})
package com.jme3.gde.gui; package com.jme3.gde.gui;
import org.netbeans.api.templates.TemplateRegistration; import org.netbeans.api.templates.TemplateRegistration;

@ -1,88 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package com.jme3.gde.gui.palette;
import javax.swing.text.BadLocationException;
import javax.swing.text.Caret;
import javax.swing.text.Document;
import javax.swing.text.JTextComponent;
import javax.swing.text.StyledDocument;
import org.openide.text.NbDocument;
public class JmePaletteUtilities {
public static void insert(final String s,final JTextComponent target) throws BadLocationException {
final StyledDocument doc = (StyledDocument)target.getDocument();
class AtomicChange implements Runnable {
public void run() {
Document value = target.getDocument();
if (value == null)
return;
try {
insert(s, target, doc);
} catch (BadLocationException e) {}
}
}
try {
NbDocument.runAtomicAsUser(doc, new AtomicChange());
} catch (BadLocationException ex) {}
}
private static int insert(String s, JTextComponent target, Document doc) throws BadLocationException {
int start = -1;
try {
//firstly, find selected text range:
Caret caret = target.getCaret();
int p0 = Math.min(caret.getDot(), caret.getMark());
int p1 = Math.max(caret.getDot(), caret.getMark());
doc.remove(p0, p1 - p0);
//then, replace selected text range with the inserted one:
start = caret.getDot();
doc.insertString(start, s, null);
} catch (BadLocationException ble) {}
return start;
}
}

@ -1,63 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package com.jme3.gde.gui.palette;
import javax.swing.text.BadLocationException;
import javax.swing.text.JTextComponent;
import org.openide.text.ActiveEditorDrop;
/**
*
* @author normenhansen, zathras
*/
public class Screen implements ActiveEditorDrop {
public Screen() {
}
private String createBody() {
String body = "<screen></screen>";
return body;
}
public boolean handleTransfer(JTextComponent targetComponent) {
String body = createBody();
try {
JmePaletteUtilities.insert(body, targetComponent);
} catch (BadLocationException ble) {
return false;
}
return true;
}
}

@ -1,16 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE editor_palette_item PUBLIC "-//NetBeans//Editor Palette Item 1.1//EN"
"http://www.netbeans.org/dtds/editor-palette-item-1_1.dtd">
<editor_palette_item version="1.0">
<class name="com.jme3.gde.gui.palette.Screen" />
<icon16 urlvalue="com/jme3/gde/core/sceneviewer/jme-logo.png" />
<icon32 urlvalue="com/jme3/gde/core/sceneviewer/jme-logo.png" />
<inline-description>
<display-name>Screen</display-name>
<tooltip>Nifty-gui Screen</tooltip>
</inline-description>
</editor_palette_item>

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<nifty xmlns="http://nifty-gui.lessvoid.com/nifty-gui" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://raw.githubusercontent.com/void256/nifty-gui/1.4/nifty-core/src/main/resources/nifty.xsd https://raw.githubusercontent.com/void256/nifty-gui/1.4/nifty-core/src/main/resources/nifty.xsd">
<!-- +++++++++++++++++++++++++++++++++++++++ -->
<!-- start screen -->
<!-- +++++++++++++++++++++++++++++++++++++++ -->
<screen id="GScreen0" controller="mygame.Main">
<layer id="GLayer0" childLayout="absolute">
</layer>
</screen>
</nifty>

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<nifty xmlns="http://nifty-gui.sourceforge.net/nifty-1.3.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://nifty-gui.sourceforge.net/nifty-1.3.xsd http://nifty-gui.sourceforge.net/nifty-1.3.xsd">
<!-- +++++++++++++++++++++++++++++++++++++++ -->
<!-- start screen -->
<!-- +++++++++++++++++++++++++++++++++++++++ -->
<screen id="start" controller="mygame.Main">
<layer id="layer" backgroundColor="#003f" childLayout="center">
<panel id="panel" height="25%" width="35%" align="center" valign="center" backgroundColor="#f60f" childLayout="center" visibleToMouse="true">
<interact onClick="quit()"/>
<effect>
<onStartScreen name="move" mode="in" direction="top" length="300" startDelay="0" inherit="true"/>
<onEndScreen name="move" mode="out" direction="bottom" length="300" startDelay="0" inherit="true"/>
<onHover name="pulsate" scaleFactor="0.008" startColor="#f600" endColor="#ffff" post="true"/>
</effect>
<text id="text" font="aurulent-sans-17.fnt" color="#000f" text="Hello World!" align="center" valign="center" />
</panel>
</layer>
</screen>
</nifty>

@ -0,0 +1,200 @@
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.jme3.gde.gui.view;
import com.jme3.gde.gui.nodes.GElementNode;
import com.jme3.gde.gui.nodes.GUINode;
import jada.ngeditor.controller.CommandProcessor;
import jada.ngeditor.controller.GUIEditor;
import jada.ngeditor.controller.commands.SelectCommand;
import jada.ngeditor.listeners.events.SelectionChanged;
import jada.ngeditor.model.GUI;
import jada.ngeditor.model.GuiEditorModel;
import jada.ngeditor.model.elements.GElement;
import java.awt.BorderLayout;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.beans.PropertyVetoException;
import java.util.ArrayList;
import java.util.Observable;
import java.util.Observer;
import javax.swing.JComponent;
import org.netbeans.spi.navigator.NavigatorPanel;
import org.openide.explorer.ExplorerManager;
import org.openide.explorer.ExplorerUtils;
import org.openide.explorer.view.BeanTreeView;
import org.openide.nodes.AbstractNode;
import org.openide.nodes.Node;
import org.openide.util.Exceptions;
import org.openide.util.Lookup;
import org.openide.util.lookup.ProxyLookup;
/**
*
* @author cris
*/
@NavigatorPanel.Registration(mimeType = "text/x-niftygui+xml", displayName="Gui View")
public class Navigator extends javax.swing.JPanel implements NavigatorPanel,ExplorerManager.Provider , Observer, PropertyChangeListener{
private Lookup lookup;
private ExplorerManager mgr = new ExplorerManager();
private final BeanTreeView beanTreeView;
/**
* Creates new form Navigator
*/
public Navigator() {
initComponents();
setLayout(new BorderLayout());
beanTreeView = new BeanTreeView();
add(beanTreeView, BorderLayout.CENTER);
final GuiEditorModel model = (GuiEditorModel) CommandProcessor.getInstance().getObservable();
model.addObserver(this);
if(model.getCurrent() != null){
try {
this.intNavigator(model.getCurrent());
} catch (PropertyVetoException ex) {
Exceptions.printStackTrace(ex);
}
}
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 244, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 274, Short.MAX_VALUE)
);
}// </editor-fold>//GEN-END:initComponents
// Variables declaration - do not modify//GEN-BEGIN:variables
// End of variables declaration//GEN-END:variables
@Override
public String getDisplayName() {
return "GuiView";
}
@Override
public String getDisplayHint() {
return "Easy view for your gui";
}
@Override
public JComponent getComponent() {
return this;
}
@Override
public void panelActivated(Lookup context) {
}
@Override
public void panelDeactivated() {
ExplorerUtils.activateActions(mgr, false);
}
@Override
public Lookup getLookup() {
return lookup;
}
@Override
public ExplorerManager getExplorerManager() {
return mgr;
}
@Override
public void update(Observable o, Object arg) {
if(o instanceof GuiEditorModel){
try {
GuiEditorModel model = (GuiEditorModel) o;
model.getCurrent().addObserver(this);
model.getCurrent().getSelection().addObserver(this);
this.intNavigator(model.getCurrent());
} catch (PropertyVetoException ex) {
Exceptions.printStackTrace(ex);
}
}
if(arg instanceof SelectionChanged){
SelectionChanged event = (SelectionChanged) arg;
if(event.getNewSelection().isEmpty()){
return;
}
ArrayList<String> path = new ArrayList<String>();
GElement parent = ((SelectionChanged)arg).getElement();
while(parent!=null){
path.add(parent.getID());
parent = parent.getParent();
}
Node result = mgr.getRootContext();
for(int i=path.size()-1;i>=0;i--){
result = result.getChildren().findChild(path.get(i));
}
try {
mgr.setSelectedNodes(new Node[]{result});
} catch (PropertyVetoException ex) {
Exceptions.printStackTrace(ex);
}
}
beanTreeView.updateUI();
}
@Override
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getPropertyName().equals(ExplorerManager.PROP_SELECTED_NODES)) {
Node[] newValue = (Node[]) evt.getNewValue();
if (newValue.length > 0) {
AbstractNode firstSelected = (AbstractNode) newValue[0];
if (firstSelected instanceof GElementNode) {
GElement element = ((GElementNode) firstSelected).getGelement();
GUI gui = ((GUINode)mgr.getRootContext()).getGui();
gui.getSelection().deleteObserver(this); // I don't wont to get notified about this selection change
SelectCommand command = CommandProcessor.getInstance().getCommand(SelectCommand.class);
command.setElement(element);
try {
CommandProcessor.getInstance().excuteCommand(command);
} catch (Exception ex) {
Exceptions.printStackTrace(ex);
}
gui.getSelection().addObserver(this);
}
}
}
}
private void intNavigator(GUI gui) throws PropertyVetoException {
ExplorerUtils.activateActions(mgr, true);
AbstractNode guiRoot = new GUINode(gui);
guiRoot.setName("Gui");
this.mgr.setRootContext(guiRoot);
this.beanTreeView.updateUI();
mgr.addPropertyChangeListener(this);
this.mgr.setSelectedNodes(new Node[]{guiRoot});
Lookup lookup1 = ExplorerUtils.createLookup(mgr, getActionMap());
lookup = new ProxyLookup(lookup1);
}
}

@ -0,0 +1,404 @@
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.jme3.gde.gui.view;
import com.jme3.app.Application;
import com.jme3.gde.core.assets.ProjectAssetManager;
import com.jme3.gde.gui.NiftyGuiDataObject;
import com.jme3.gde.gui.nodes.GElementNode;
import com.jme3.gde.gui.nodes.GUINode;
import de.lessvoid.nifty.Nifty;
import jada.ngeditor.controller.CommandProcessor;
import jada.ngeditor.controller.GUIEditor;
import jada.ngeditor.guiviews.DND.PaletteDropTarget;
import jada.ngeditor.guiviews.DND.TrasferHandling;
import jada.ngeditor.guiviews.J2DNiftyView;
import jada.ngeditor.listeners.events.SelectionChanged;
import jada.ngeditor.model.GUI;
import jada.ngeditor.model.GuiEditorModel;
import jada.ngeditor.model.elements.GElement;
import jada.ngeditor.model.elements.GLayer;
import jada.ngeditor.model.exception.NoProductException;
import jada.ngeditor.persistence.GUIWriter;
import java.awt.Dimension;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.beans.PropertyVetoException;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.Observable;
import java.util.Observer;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.Action;
import javax.swing.ActionMap;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JToolBar;
import javax.xml.bind.JAXBException;
import javax.xml.parsers.ParserConfigurationException;
import org.netbeans.api.progress.ProgressHandle;
import org.netbeans.api.progress.ProgressHandleFactory;
import org.netbeans.core.spi.multiview.CloseOperationState;
import org.netbeans.core.spi.multiview.MultiViewElement;
import org.netbeans.core.spi.multiview.MultiViewElementCallback;
import org.netbeans.spi.actions.AbstractSavable;
import org.openide.awt.UndoRedo;
import org.openide.explorer.ExplorerManager;
import org.openide.explorer.ExplorerUtils;
import org.openide.loaders.DataObject;
import org.openide.nodes.Node;
import org.openide.util.Exceptions;
import org.openide.util.Lookup;
import org.openide.util.NbBundle.Messages;
import org.openide.util.lookup.AbstractLookup;
import org.openide.util.lookup.InstanceContent;
import org.openide.util.lookup.ProxyLookup;
import org.openide.windows.TopComponent;
import org.xml.sax.SAXException;
import sun.rmi.runtime.Log;
@MultiViewElement.Registration(
displayName = "#LBL_NiftyGui_VISUAL",
iconBase = "com/jme3/gde/gui/multiview/icons/Computer_File_043.gif",
mimeType = "text/x-niftygui+xml",
persistenceType = TopComponent.PERSISTENCE_NEVER,
preferredID = "NiftyGuiVisual",
position = 2000)
@Messages("LBL_NiftyGui_VISUAL=Visual")
public final class NiftyGuiVisualElement extends JPanel implements MultiViewElement , ExplorerManager.Provider,Observer, PropertyChangeListener {
private static final Logger logger = Logger.getLogger(NiftyGuiVisualElement.class.getName());
private NiftyGuiDataObject obj;
private JToolBar toolbar = new JToolBar();
private transient MultiViewElementCallback callback;
private GUIEditor editor;
private final Nifty nifty;
private final J2DNiftyView view;
private final JComboBox layers = new JComboBox();
private final ExplorerManager nodesManager;
private final UndoRedo.Manager undoSupport;
private int guiID;
private final InstanceContent content = new InstanceContent();
private Lookup lookup;
public NiftyGuiVisualElement(Lookup lkp) {
obj = lkp.lookup(NiftyGuiDataObject.class);
assert obj != null;
initComponents();
view = new J2DNiftyView(800, 600);
view.init();
this.scrollArea.getViewport().addChangeListener(view);
this.scrollArea.setViewportView(view);
TrasferHandling tranf = new TrasferHandling();
PaletteDropTarget tmp = new PaletteDropTarget();
editor = obj.getLookup().lookup(GUIEditor.class);
nodesManager = new ExplorerManager();
nifty = view.getNifty();
view.setTransferHandler(tranf);
view.setDropTarget(tmp);
// editor.addObserver(view);
// editor.addObserver(tranf);
this.obj.addPropertyChangeListener(this);
this.createToolbar();
this.undoSupport = new UndoRedo.Manager();
CommandProcessor.getInstance().setUndoManager(undoSupport);
this.content.set(Collections.singleton(obj.getNodeDelegate()), null);
lookup = new AbstractLookup(content);
}
/**
* Old code
* @author normenhansen
*/
private void createToolbar() {
toolbar.setPreferredSize(new Dimension(10000, 24));
toolbar.setMaximumSize(new Dimension(10000, 24));
toolbar.setFloatable(false);
toolbar.add(new JLabel("Change Resolution"));
JComboBox comboBox = new JComboBox(new String[]{"640x480", "480x800", "800x480", "800x600", "1024x768", "1280x720"});
comboBox.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
String string = (String) e.getItem();
if ("640x480".equals(string)) {
view.setResoltion(640, 480);
} else if ("1024x768".equals(string)) {
view.setResoltion(1024, 768);
} else if ("1280x720".equals(string)) {
view.setResoltion(1280, 720);
} else if ("800x600".equals(string)) {
view.setResoltion(800, 600);
} else if ("800x480".equals(string)) {
view.setResoltion(800, 480);
} else if ("480x800".equals(string)) {
view.setResoltion(480, 800);
} else {
view.setResoltion(800, 600);
}
}
});
toolbar.add(comboBox);
comboBox.setSelectedItem("800x600");
toolbar.add(new JLabel("Current Layer"));
layers.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
GLayer item = (GLayer) e.getItem();
editor.selectElement(item);
}
});
toolbar.add(layers);
}
@Override
public String getName() {
return "NiftyGuiVisualElement";
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
scrollArea = new javax.swing.JScrollPane();
setLayout(new java.awt.BorderLayout());
add(scrollArea, java.awt.BorderLayout.CENTER);
}// </editor-fold>//GEN-END:initComponents
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JScrollPane scrollArea;
// End of variables declaration//GEN-END:variables
@Override
public JComponent getVisualRepresentation() {
return this;
}
@Override
public JComponent getToolbarRepresentation() {
return toolbar;
}
@Override
public Action[] getActions() {
return new Action[0];
}
@Override
public Lookup getLookup() {
return this.lookup ;
}
/**
* Raw implementation , just to prototype the editor
*/
@Override
public void componentOpened() {
loadGui();
}
@Override
public void componentClosed() {
}
/**
* Raw implementation , just to prototype the editor
*/
@Override
public void componentShowing() {
if(!this.obj.isModified()){
return;
}
loadGui();
}
/**
* Raw implementation , just to prototype the editor
*/
@Override
public void componentHidden() {
String path = this.obj.getPrimaryFile().getPath();
try {
this.editor.saveGui(path);
} catch (FileNotFoundException ex) {
Exceptions.printStackTrace(ex);
} catch (JAXBException ex) {
Exceptions.printStackTrace(ex);
} catch (NullPointerException ex){
Exceptions.printStackTrace(ex);
}
}
@Override
public void componentActivated() {
try{
GuiEditorModel model = (GuiEditorModel) CommandProcessor.getInstance().getObservable();
model.setCurrentGUI(guiID);
model.getCurrent().addObserver(this);
CommandProcessor.getInstance().setUndoManager(undoSupport);
}catch(java.lang.IllegalArgumentException ex){
logger.log(Level.SEVERE,"Can't load your gui", ex);
}
}
@Override
public void componentDeactivated() {
}
@Override
public UndoRedo getUndoRedo() {
return this.undoSupport;
}
@Override
public void setMultiViewCallback(MultiViewElementCallback callback) {
this.callback = callback;
}
@Override
public CloseOperationState canCloseElement() {
return CloseOperationState.STATE_OK;
}
@Override
public ExplorerManager getExplorerManager() {
return nodesManager;
}
@Override
public void update(Observable o, Object arg) {
if(arg instanceof SelectionChanged ){
SelectionChanged event = (SelectionChanged) arg;
if(event.getNewSelection().isEmpty()){
return;
}
GElement parent = event.getElement();
GElementNode node = new GElementNode(parent);
this.content.set(Collections.singleton(node), null);
}else if(o instanceof GUI){
//Add a save. We don't add multible savable because they cointains the same
//information about editing.
GuiSavable savable = this.lookup.lookup(GuiSavable.class);
if(savable == null){
String path = this.obj.getPrimaryFile().getPath();
final GuiSavable guiSavable = new NiftyGuiVisualElement.GuiSavable(((GUI)o),path);
this.content.add(guiSavable);
}
}
}
@Override
public void propertyChange(PropertyChangeEvent evt) {
if(evt.getPropertyName().equals(DataObject.PROP_MODIFIED)){
boolean old = (Boolean)evt.getOldValue();
boolean nev = (Boolean)evt.getNewValue();
if(old && !nev){
this.loadGui();
}
}
}
private void loadGui() {
try {
ProgressHandle handle = ProgressHandleFactory.createHandle("Loading the gui file");
InputStream is = this.obj.getPrimaryFile().getInputStream();
handle.start();
ProjectAssetManager mgr = this.obj.getLookup().lookup(ProjectAssetManager.class);
String assetPath = mgr.getAssetFolder().getPath();
this.editor.createNewGui(nifty,is,new File(assetPath));
this.view.newGui(this.editor.getGui());
nodesManager.setRootContext(new GUINode(this.editor.getGui()));
this.editor.getGui().getSelection().addObserver(this);
Collection<GLayer> layers1 = this.editor.getGui().getLayers();
guiID = this.editor.getGui().getGUIid();
this.editor.getGui().addObserver(this);
DefaultComboBoxModel<GLayer> model = new DefaultComboBoxModel<GLayer>(layers1.toArray(new GLayer[0]));
layers.setModel(model);
layers.setSelectedItem(this.editor.getCurrentLayer());
handle.finish();
} catch (ParserConfigurationException ex) {
Exceptions.printStackTrace(ex);
} catch (JAXBException ex) {
Exceptions.printStackTrace(ex);
} catch (ClassNotFoundException ex) {
Exceptions.printStackTrace(ex);
} catch (IOException ex) {
Exceptions.printStackTrace(ex);
} catch (NoProductException ex) {
Exceptions.printStackTrace(ex);
} catch (SAXException ex) {
Exceptions.printStackTrace(ex);
} catch (Exception ex) {
Exceptions.printStackTrace(ex);
}
}
private class GuiSavable extends AbstractSavable {
private final GUI gui;
private final String filename;
public GuiSavable(GUI gui,String filename){
this.gui = gui;
this.filename = filename;
this.register();
}
@Override
protected String findDisplayName() {
return "Save "+ this.gui + " changes";
}
@Override
protected void handleSave() throws IOException {
try {
GUIWriter writer = new GUIWriter(this.gui);
writer.writeGUI(filename);
NiftyGuiVisualElement.this.content.remove(this);
} catch (FileNotFoundException ex) {
Exceptions.printStackTrace(ex);
} catch (JAXBException ex) {
Exceptions.printStackTrace(ex);
} catch (ClassNotFoundException ex) {
Exceptions.printStackTrace(ex);
}
}
@Override
public boolean equals(Object obj) {
if(obj instanceof com.jme3.gde.gui.view.NiftyGuiVisualElement.GuiSavable){
return this.gui.equals(((com.jme3.gde.gui.view.NiftyGuiVisualElement.GuiSavable)obj).gui);
}
return false;
}
@Override
public int hashCode() {
return this.gui.hashCode();
}
}
}
Loading…
Cancel
Save