Before Width: | Height: | Size: 386 B |
@ -1,10 +0,0 @@ |
|||||||
<?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> |
|
@ -1,200 +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.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); |
|
||||||
|
|
||||||
} |
|
||||||
} |
|
@ -1,19 +0,0 @@ |
|||||||
<?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> |
|
@ -1,403 +0,0 @@ |
|||||||
/* |
|
||||||
* To change this template, choose Tools | Templates |
|
||||||
* and open the template in the editor. |
|
||||||
*/ |
|
||||||
package com.jme3.gde.gui; |
|
||||||
|
|
||||||
import com.jme3.app.Application; |
|
||||||
import com.jme3.gde.core.assets.ProjectAssetManager; |
|
||||||
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/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.NiftyGuiVisualElement.GuiSavable){ |
|
||||||
return this.gui.equals(((com.jme3.gde.gui.NiftyGuiVisualElement.GuiSavable)obj).gui); |
|
||||||
} |
|
||||||
return false; |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public int hashCode() { |
|
||||||
return this.gui.hashCode(); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
} |
|
After Width: | Height: | Size: 348 B |
After Width: | Height: | Size: 674 B |
After Width: | Height: | Size: 435 B |
After Width: | Height: | Size: 492 B |
After Width: | Height: | Size: 768 B |
After Width: | Height: | Size: 454 B |
After Width: | Height: | Size: 556 B |
After Width: | Height: | Size: 478 B |
After Width: | Height: | Size: 540 B |
After Width: | Height: | Size: 602 B |
After Width: | Height: | Size: 524 B |
After Width: | Height: | Size: 392 B |
After Width: | Height: | Size: 415 B |
After Width: | Height: | Size: 305 B |
After Width: | Height: | Size: 478 B |
After Width: | Height: | Size: 557 B |
After Width: | Height: | Size: 536 B |
After Width: | Height: | Size: 361 B |
After Width: | Height: | Size: 359 B |
After Width: | Height: | Size: 520 B |
After Width: | Height: | Size: 458 B |
After Width: | Height: | Size: 341 B |
After Width: | Height: | Size: 608 B |
After Width: | Height: | Size: 538 B |
After Width: | Height: | Size: 349 B |
After Width: | Height: | Size: 390 B |