UndoSupport, now the editor will reload the gui only if file is changed and some property editors. Also xml auto completition and XmlNavigator
This commit is contained in:
parent
f1071fd05b
commit
ba848391dd
Binary file not shown.
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?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">
|
<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 -->
|
<!-- start screen -->
|
||||||
<!-- +++++++++++++++++++++++++++++++++++++++ -->
|
<!-- +++++++++++++++++++++++++++++++++++++++ -->
|
||||||
|
@ -5,8 +5,15 @@
|
|||||||
package com.jme3.gde.gui;
|
package com.jme3.gde.gui;
|
||||||
|
|
||||||
import com.jme3.gde.gui.nodes.GElementNode;
|
import com.jme3.gde.gui.nodes.GElementNode;
|
||||||
|
import com.jme3.gde.gui.nodes.GUINode;
|
||||||
import com.jme3.gde.gui.nodes.ScreenChildFactory;
|
import com.jme3.gde.gui.nodes.ScreenChildFactory;
|
||||||
|
import jada.ngeditor.controller.CommandProcessor;
|
||||||
import jada.ngeditor.controller.GUIEditor;
|
import jada.ngeditor.controller.GUIEditor;
|
||||||
|
import jada.ngeditor.controller.commands.SelectCommand;
|
||||||
|
import jada.ngeditor.listeners.events.ReloadGuiEvent;
|
||||||
|
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.GElement;
|
||||||
import java.awt.BorderLayout;
|
import java.awt.BorderLayout;
|
||||||
import java.beans.PropertyChangeEvent;
|
import java.beans.PropertyChangeEvent;
|
||||||
@ -36,7 +43,7 @@ import org.openide.windows.TopComponent;
|
|||||||
* @author cris
|
* @author cris
|
||||||
*/
|
*/
|
||||||
@NavigatorPanel.Registration(mimeType = "text/x-niftygui+xml", displayName="Gui View")
|
@NavigatorPanel.Registration(mimeType = "text/x-niftygui+xml", displayName="Gui View")
|
||||||
public class Navigator extends javax.swing.JPanel implements NavigatorPanel,ExplorerManager.Provider , Observer, PropertyChangeListener, LookupListener{
|
public class Navigator extends javax.swing.JPanel implements NavigatorPanel,ExplorerManager.Provider , Observer, PropertyChangeListener{
|
||||||
private Lookup lookup;
|
private Lookup lookup;
|
||||||
private ExplorerManager mgr = new ExplorerManager();
|
private ExplorerManager mgr = new ExplorerManager();
|
||||||
private final BeanTreeView beanTreeView;
|
private final BeanTreeView beanTreeView;
|
||||||
@ -51,6 +58,7 @@ public class Navigator extends javax.swing.JPanel implements NavigatorPanel,Expl
|
|||||||
setLayout(new BorderLayout());
|
setLayout(new BorderLayout());
|
||||||
beanTreeView = new BeanTreeView();
|
beanTreeView = new BeanTreeView();
|
||||||
add(beanTreeView, BorderLayout.CENTER);
|
add(beanTreeView, BorderLayout.CENTER);
|
||||||
|
CommandProcessor.getInstance().getObservable().addObserver(this);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -94,13 +102,7 @@ public class Navigator extends javax.swing.JPanel implements NavigatorPanel,Expl
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void panelActivated(Lookup context) {
|
public void panelActivated(Lookup context) {
|
||||||
try {
|
|
||||||
this.context = context;
|
|
||||||
context.lookupResult(NiftyGuiDataObject.class).addLookupListener(this);
|
|
||||||
intNavigator(context);
|
|
||||||
} catch (PropertyVetoException ex) {
|
|
||||||
Exceptions.printStackTrace(ex);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -120,11 +122,24 @@ public class Navigator extends javax.swing.JPanel implements NavigatorPanel,Expl
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void update(Observable o, Object arg) {
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
jada.ngeditor.listeners.actions.Action act = ( jada.ngeditor.listeners.actions.Action) arg;
|
if(arg instanceof SelectionChanged){
|
||||||
if(act.getType() == jada.ngeditor.listeners.actions.Action.SEL){
|
SelectionChanged event = (SelectionChanged) arg;
|
||||||
|
if(event.getNewSelection().isEmpty()){
|
||||||
|
return;
|
||||||
|
}
|
||||||
ArrayList<String> path = new ArrayList<String>();
|
ArrayList<String> path = new ArrayList<String>();
|
||||||
GElement parent = act.getGUIElement();
|
GElement parent = ((SelectionChanged)arg).getElement();
|
||||||
while(parent!=null){
|
while(parent!=null){
|
||||||
path.add(parent.getID());
|
path.add(parent.getID());
|
||||||
parent = parent.getParent();
|
parent = parent.getParent();
|
||||||
@ -138,12 +153,6 @@ public class Navigator extends javax.swing.JPanel implements NavigatorPanel,Expl
|
|||||||
} catch (PropertyVetoException ex) {
|
} catch (PropertyVetoException ex) {
|
||||||
Exceptions.printStackTrace(ex);
|
Exceptions.printStackTrace(ex);
|
||||||
}
|
}
|
||||||
}else if(act.getType() == jada.ngeditor.listeners.actions.Action.NEW){
|
|
||||||
try {
|
|
||||||
this.intNavigator(context);
|
|
||||||
} catch (PropertyVetoException ex) {
|
|
||||||
Exceptions.printStackTrace(ex);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
beanTreeView.updateUI();
|
beanTreeView.updateUI();
|
||||||
}
|
}
|
||||||
@ -156,29 +165,31 @@ public class Navigator extends javax.swing.JPanel implements NavigatorPanel,Expl
|
|||||||
AbstractNode firstSelected = (AbstractNode) newValue[0];
|
AbstractNode firstSelected = (AbstractNode) newValue[0];
|
||||||
if (firstSelected instanceof GElementNode) {
|
if (firstSelected instanceof GElementNode) {
|
||||||
GElement element = ((GElementNode) firstSelected).getGelement();
|
GElement element = ((GElementNode) firstSelected).getGelement();
|
||||||
|
GUI gui = ((GUINode)mgr.getRootContext()).getGui();
|
||||||
editor.selectElement(element);
|
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 {
|
||||||
|
lock = true;
|
||||||
|
CommandProcessor.getInstance().excuteCommand(command);
|
||||||
|
} catch (Exception ex) {
|
||||||
|
Exceptions.printStackTrace(ex);
|
||||||
|
}
|
||||||
|
gui.getSelection().addObserver(this);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void resultChanged(LookupEvent ev) {
|
|
||||||
try {
|
|
||||||
intNavigator(context);
|
|
||||||
} catch (PropertyVetoException ex) {
|
|
||||||
Exceptions.printStackTrace(ex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void intNavigator(Lookup context) throws PropertyVetoException {
|
private void intNavigator(GUI gui) throws PropertyVetoException {
|
||||||
|
|
||||||
|
|
||||||
NiftyGuiDataObject man = context.lookup(NiftyGuiDataObject.class);
|
|
||||||
ExplorerUtils.activateActions(mgr, true);
|
ExplorerUtils.activateActions(mgr, true);
|
||||||
editor = man.getLookup().lookup(GUIEditor.class);
|
|
||||||
AbstractNode guiRoot = new AbstractNode(Children.create(new ScreenChildFactory(editor.getGui()), true));
|
|
||||||
|
AbstractNode guiRoot = new GUINode(gui);
|
||||||
guiRoot.setName("Gui");
|
guiRoot.setName("Gui");
|
||||||
this.mgr.setRootContext(guiRoot);
|
this.mgr.setRootContext(guiRoot);
|
||||||
this.beanTreeView.updateUI();
|
this.beanTreeView.updateUI();
|
||||||
@ -186,6 +197,6 @@ public class Navigator extends javax.swing.JPanel implements NavigatorPanel,Expl
|
|||||||
this.mgr.setSelectedNodes(new Node[]{guiRoot});
|
this.mgr.setSelectedNodes(new Node[]{guiRoot});
|
||||||
Lookup lookup1 = ExplorerUtils.createLookup(mgr, getActionMap());
|
Lookup lookup1 = ExplorerUtils.createLookup(mgr, getActionMap());
|
||||||
lookup = new ProxyLookup(lookup1);
|
lookup = new ProxyLookup(lookup1);
|
||||||
editor.addObserver(this);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
package com.jme3.gde.gui;
|
package com.jme3.gde.gui;
|
||||||
|
|
||||||
import com.jme3.gde.core.assets.ProjectAssetManager;
|
import com.jme3.gde.core.assets.ProjectAssetManager;
|
||||||
|
import jada.ngeditor.controller.CommandProcessor;
|
||||||
import jada.ngeditor.controller.GUIEditor;
|
import jada.ngeditor.controller.GUIEditor;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import org.netbeans.api.project.Project;
|
import org.netbeans.api.project.Project;
|
||||||
@ -96,7 +97,7 @@ public class NiftyGuiDataObject extends MultiDataObject {
|
|||||||
super(pf, loader);
|
super(pf, loader);
|
||||||
registerEditor("text/x-niftygui+xml", true);
|
registerEditor("text/x-niftygui+xml", true);
|
||||||
findAssetManager();
|
findAssetManager();
|
||||||
this.getCookieSet().assign(GUIEditor.class,new GUIEditor());
|
this.getCookieSet().assign(GUIEditor.class, CommandProcessor.getInstance().getGuiEditor());
|
||||||
}
|
}
|
||||||
|
|
||||||
protected final void findAssetManager() {
|
protected final void findAssetManager() {
|
||||||
|
@ -5,42 +5,40 @@
|
|||||||
package com.jme3.gde.gui;
|
package com.jme3.gde.gui;
|
||||||
|
|
||||||
import com.jme3.gde.core.assets.ProjectAssetManager;
|
import com.jme3.gde.core.assets.ProjectAssetManager;
|
||||||
import com.jme3.gde.core.scene.SceneApplication;
|
|
||||||
import com.jme3.gde.gui.nodes.GUINode;
|
import com.jme3.gde.gui.nodes.GUINode;
|
||||||
import com.jme3.gde.gui.palette.NiftyGUIPaletteFactory;
|
|
||||||
import de.lessvoid.nifty.Nifty;
|
import de.lessvoid.nifty.Nifty;
|
||||||
|
import jada.ngeditor.controller.CommandProcessor;
|
||||||
import jada.ngeditor.controller.GUIEditor;
|
import jada.ngeditor.controller.GUIEditor;
|
||||||
import jada.ngeditor.guiviews.DND.PaletteDropTarget;
|
import jada.ngeditor.guiviews.DND.PaletteDropTarget;
|
||||||
import jada.ngeditor.guiviews.DND.TrasferHandling;
|
import jada.ngeditor.guiviews.DND.TrasferHandling;
|
||||||
import jada.ngeditor.guiviews.J2DNiftyView;
|
import jada.ngeditor.guiviews.J2DNiftyView;
|
||||||
|
import jada.ngeditor.listeners.events.SelectionChanged;
|
||||||
|
import jada.ngeditor.model.GuiEditorModel;
|
||||||
import jada.ngeditor.model.elements.GElement;
|
import jada.ngeditor.model.elements.GElement;
|
||||||
import jada.ngeditor.model.elements.GLayer;
|
import jada.ngeditor.model.elements.GLayer;
|
||||||
import jada.ngeditor.model.exception.NoProductException;
|
import jada.ngeditor.model.exception.NoProductException;
|
||||||
import java.awt.Dimension;
|
import java.awt.Dimension;
|
||||||
import java.awt.dnd.DropTarget;
|
|
||||||
import java.awt.dnd.DropTargetDragEvent;
|
|
||||||
import java.awt.dnd.DropTargetDropEvent;
|
|
||||||
import java.awt.dnd.DropTargetEvent;
|
|
||||||
import java.awt.dnd.DropTargetListener;
|
|
||||||
import java.awt.event.ItemEvent;
|
import java.awt.event.ItemEvent;
|
||||||
import java.awt.event.ItemListener;
|
import java.awt.event.ItemListener;
|
||||||
|
import java.beans.PropertyChangeEvent;
|
||||||
|
import java.beans.PropertyChangeListener;
|
||||||
import java.beans.PropertyVetoException;
|
import java.beans.PropertyVetoException;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Observable;
|
import java.util.Observable;
|
||||||
import java.util.Observer;
|
import java.util.Observer;
|
||||||
import java.util.concurrent.Callable;
|
|
||||||
import javax.swing.Action;
|
import javax.swing.Action;
|
||||||
import javax.swing.ActionMap;
|
import javax.swing.ActionMap;
|
||||||
import javax.swing.DefaultComboBoxModel;
|
import javax.swing.DefaultComboBoxModel;
|
||||||
import javax.swing.JComboBox;
|
import javax.swing.JComboBox;
|
||||||
import javax.swing.JComponent;
|
import javax.swing.JComponent;
|
||||||
|
import javax.swing.JLabel;
|
||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
import javax.swing.JToolBar;
|
import javax.swing.JToolBar;
|
||||||
import javax.swing.text.AbstractDocument;
|
|
||||||
import javax.xml.bind.JAXBException;
|
import javax.xml.bind.JAXBException;
|
||||||
import javax.xml.parsers.ParserConfigurationException;
|
import javax.xml.parsers.ParserConfigurationException;
|
||||||
import org.netbeans.api.progress.ProgressHandle;
|
import org.netbeans.api.progress.ProgressHandle;
|
||||||
@ -48,20 +46,17 @@ import org.netbeans.api.progress.ProgressHandleFactory;
|
|||||||
import org.netbeans.core.spi.multiview.CloseOperationState;
|
import org.netbeans.core.spi.multiview.CloseOperationState;
|
||||||
import org.netbeans.core.spi.multiview.MultiViewElement;
|
import org.netbeans.core.spi.multiview.MultiViewElement;
|
||||||
import org.netbeans.core.spi.multiview.MultiViewElementCallback;
|
import org.netbeans.core.spi.multiview.MultiViewElementCallback;
|
||||||
import org.openide.DialogDisplayer;
|
|
||||||
import org.openide.NotifyDescriptor;
|
|
||||||
import org.openide.awt.UndoRedo;
|
import org.openide.awt.UndoRedo;
|
||||||
import org.openide.explorer.ExplorerManager;
|
import org.openide.explorer.ExplorerManager;
|
||||||
import org.openide.explorer.ExplorerUtils;
|
import org.openide.explorer.ExplorerUtils;
|
||||||
|
import org.openide.loaders.DataObject;
|
||||||
import org.openide.nodes.Node;
|
import org.openide.nodes.Node;
|
||||||
import org.openide.util.Exceptions;
|
import org.openide.util.Exceptions;
|
||||||
import org.openide.util.Lookup;
|
import org.openide.util.Lookup;
|
||||||
import org.openide.util.NbBundle.Messages;
|
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.openide.windows.TopComponent;
|
||||||
import org.xml.sax.SAXException;
|
import org.xml.sax.SAXException;
|
||||||
|
import sun.rmi.runtime.Log;
|
||||||
|
|
||||||
@MultiViewElement.Registration(
|
@MultiViewElement.Registration(
|
||||||
displayName = "#LBL_NiftyGui_VISUAL",
|
displayName = "#LBL_NiftyGui_VISUAL",
|
||||||
@ -71,7 +66,7 @@ import org.xml.sax.SAXException;
|
|||||||
preferredID = "NiftyGuiVisual",
|
preferredID = "NiftyGuiVisual",
|
||||||
position = 2000)
|
position = 2000)
|
||||||
@Messages("LBL_NiftyGui_VISUAL=Visual")
|
@Messages("LBL_NiftyGui_VISUAL=Visual")
|
||||||
public final class NiftyGuiVisualElement extends JPanel implements MultiViewElement , ExplorerManager.Provider,Observer {
|
public final class NiftyGuiVisualElement extends JPanel implements MultiViewElement , ExplorerManager.Provider,Observer, PropertyChangeListener {
|
||||||
|
|
||||||
private NiftyGuiDataObject obj;
|
private NiftyGuiDataObject obj;
|
||||||
private JToolBar toolbar = new JToolBar();
|
private JToolBar toolbar = new JToolBar();
|
||||||
@ -81,6 +76,8 @@ public final class NiftyGuiVisualElement extends JPanel implements MultiViewElem
|
|||||||
private final J2DNiftyView view;
|
private final J2DNiftyView view;
|
||||||
private final JComboBox layers = new JComboBox();
|
private final JComboBox layers = new JComboBox();
|
||||||
private final ExplorerManager nodesManager;
|
private final ExplorerManager nodesManager;
|
||||||
|
private final UndoRedo.Manager undoSupport;
|
||||||
|
private int guiID;
|
||||||
|
|
||||||
|
|
||||||
public NiftyGuiVisualElement(Lookup lkp) {
|
public NiftyGuiVisualElement(Lookup lkp) {
|
||||||
@ -94,15 +91,16 @@ public final class NiftyGuiVisualElement extends JPanel implements MultiViewElem
|
|||||||
TrasferHandling tranf = new TrasferHandling();
|
TrasferHandling tranf = new TrasferHandling();
|
||||||
PaletteDropTarget tmp = new PaletteDropTarget();
|
PaletteDropTarget tmp = new PaletteDropTarget();
|
||||||
editor = obj.getLookup().lookup(GUIEditor.class);
|
editor = obj.getLookup().lookup(GUIEditor.class);
|
||||||
editor.addObserver(this);
|
|
||||||
nodesManager = new ExplorerManager();
|
nodesManager = new ExplorerManager();
|
||||||
nifty = view.getNifty();
|
nifty = view.getNifty();
|
||||||
view.setTransferHandler(tranf);
|
view.setTransferHandler(tranf);
|
||||||
view.setDropTarget(tmp);
|
view.setDropTarget(tmp);
|
||||||
editor.addObserver(view);
|
// editor.addObserver(view);
|
||||||
editor.addObserver(tranf);
|
// editor.addObserver(tranf);
|
||||||
editor.addObserver(tmp);
|
this.obj.addPropertyChangeListener(this);
|
||||||
this.createToolbar();
|
this.createToolbar();
|
||||||
|
this.undoSupport = new UndoRedo.Manager();
|
||||||
|
CommandProcessor.getInstance().setUndoManager(undoSupport);
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Old code
|
* Old code
|
||||||
@ -112,6 +110,7 @@ public final class NiftyGuiVisualElement extends JPanel implements MultiViewElem
|
|||||||
toolbar.setPreferredSize(new Dimension(10000, 24));
|
toolbar.setPreferredSize(new Dimension(10000, 24));
|
||||||
toolbar.setMaximumSize(new Dimension(10000, 24));
|
toolbar.setMaximumSize(new Dimension(10000, 24));
|
||||||
toolbar.setFloatable(false);
|
toolbar.setFloatable(false);
|
||||||
|
toolbar.add(new JLabel("Change Resolution"));
|
||||||
JComboBox comboBox = new JComboBox(new String[]{"640x480", "480x800", "800x480", "800x600", "1024x768", "1280x720"});
|
JComboBox comboBox = new JComboBox(new String[]{"640x480", "480x800", "800x480", "800x600", "1024x768", "1280x720"});
|
||||||
comboBox.addItemListener(new ItemListener() {
|
comboBox.addItemListener(new ItemListener() {
|
||||||
|
|
||||||
@ -136,6 +135,7 @@ public final class NiftyGuiVisualElement extends JPanel implements MultiViewElem
|
|||||||
});
|
});
|
||||||
toolbar.add(comboBox);
|
toolbar.add(comboBox);
|
||||||
comboBox.setSelectedItem("800x600");
|
comboBox.setSelectedItem("800x600");
|
||||||
|
toolbar.add(new JLabel("Current Layer"));
|
||||||
layers.addItemListener(new ItemListener() {
|
layers.addItemListener(new ItemListener() {
|
||||||
|
|
||||||
public void itemStateChanged(ItemEvent e) {
|
public void itemStateChanged(ItemEvent e) {
|
||||||
@ -191,74 +191,22 @@ public final class NiftyGuiVisualElement extends JPanel implements MultiViewElem
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void componentOpened() {
|
public void componentOpened() {
|
||||||
try {
|
loadGui();
|
||||||
ProgressHandle handle = ProgressHandleFactory.createHandle("Loading the gui file");
|
|
||||||
String path = this.obj.getPrimaryFile().getPath();
|
|
||||||
ProjectAssetManager mgr = obj.getLookup().lookup(ProjectAssetManager.class);
|
|
||||||
String assetPath = mgr.getAssetFolder().getPath();
|
|
||||||
handle.progress(50);
|
|
||||||
this.editor.createNewGui(nifty,new File(path),new File(assetPath));
|
|
||||||
nodesManager.setRootContext(new GUINode(this.editor.getGui()));
|
|
||||||
Collection<GLayer> layers1 = this.editor.getGui().getLayers();
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void componentClosed() {
|
public void componentClosed() {
|
||||||
|
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Raw implementation , just to prototype the editor
|
* Raw implementation , just to prototype the editor
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void componentShowing() {
|
public void componentShowing() {
|
||||||
try {
|
if(!this.obj.isModified()){
|
||||||
ProgressHandle handle = ProgressHandleFactory.createHandle("Loading the gui file");
|
return;
|
||||||
String path = this.obj.getPrimaryFile().getPath();
|
|
||||||
ProjectAssetManager mgr = this.obj.getLookup().lookup(ProjectAssetManager.class);
|
|
||||||
String assetPath = mgr.getAssetFolder().getPath();
|
|
||||||
this.editor.createNewGui(nifty,new File(path),new File(assetPath));
|
|
||||||
nodesManager.setRootContext(new GUINode(this.editor.getGui()));
|
|
||||||
Collection<GLayer> layers1 = this.editor.getGui().getLayers();
|
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
|
loadGui();
|
||||||
|
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
@ -273,11 +221,16 @@ public final class NiftyGuiVisualElement extends JPanel implements MultiViewElem
|
|||||||
Exceptions.printStackTrace(ex);
|
Exceptions.printStackTrace(ex);
|
||||||
} catch (JAXBException ex) {
|
} catch (JAXBException ex) {
|
||||||
Exceptions.printStackTrace(ex);
|
Exceptions.printStackTrace(ex);
|
||||||
|
} catch (NullPointerException ex){
|
||||||
|
Exceptions.printStackTrace(ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void componentActivated() {
|
public void componentActivated() {
|
||||||
|
GuiEditorModel model = (GuiEditorModel) CommandProcessor.getInstance().getObservable();
|
||||||
|
model.setCurrentGUI(guiID);
|
||||||
|
CommandProcessor.getInstance().setUndoManager(undoSupport);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -286,7 +239,7 @@ public final class NiftyGuiVisualElement extends JPanel implements MultiViewElem
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public UndoRedo getUndoRedo() {
|
public UndoRedo getUndoRedo() {
|
||||||
return UndoRedo.NONE;
|
return this.undoSupport;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -306,10 +259,13 @@ public final class NiftyGuiVisualElement extends JPanel implements MultiViewElem
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void update(Observable o, Object arg) {
|
public void update(Observable o, Object arg) {
|
||||||
jada.ngeditor.listeners.actions.Action act = ( jada.ngeditor.listeners.actions.Action) arg;
|
if(arg instanceof SelectionChanged ){
|
||||||
if(act.getType() == jada.ngeditor.listeners.actions.Action.SEL){
|
SelectionChanged event = (SelectionChanged) arg;
|
||||||
|
if(event.getNewSelection().isEmpty()){
|
||||||
|
return;
|
||||||
|
}
|
||||||
ArrayList<String> path = new ArrayList<String>();
|
ArrayList<String> path = new ArrayList<String>();
|
||||||
GElement parent = act.getGUIElement();
|
GElement parent = event.getElement();
|
||||||
while(parent!=null){
|
while(parent!=null){
|
||||||
path.add(parent.getID());
|
path.add(parent.getID());
|
||||||
parent = parent.getParent();
|
parent = parent.getParent();
|
||||||
@ -329,4 +285,51 @@ public final class NiftyGuiVisualElement extends JPanel implements MultiViewElem
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@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();
|
||||||
|
|
||||||
|
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();
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,4 +7,13 @@
|
|||||||
</file>
|
</file>
|
||||||
</folder>
|
</folder>
|
||||||
</folder>
|
</folder>
|
||||||
|
<folder name="Navigator">
|
||||||
|
<folder name="Panels">
|
||||||
|
<folder name="text">
|
||||||
|
<folder name="x-niftygui+xml">
|
||||||
|
<file name="org-netbeans-modules-xml-text-navigator-XMLNavigatorPanel.instance"/>
|
||||||
|
</folder>
|
||||||
|
</folder>
|
||||||
|
</folder>
|
||||||
|
</folder>
|
||||||
</filesystem>
|
</filesystem>
|
||||||
|
@ -4,6 +4,8 @@
|
|||||||
*/
|
*/
|
||||||
package com.jme3.gde.gui.nodes;
|
package com.jme3.gde.gui.nodes;
|
||||||
|
|
||||||
|
import com.jme3.gde.gui.propertyeditors.ResourceEditor;
|
||||||
|
import com.jme3.gde.gui.propertyeditors.SizeEditor;
|
||||||
import jada.ngeditor.model.elements.GElement;
|
import jada.ngeditor.model.elements.GElement;
|
||||||
import java.beans.PropertyEditor;
|
import java.beans.PropertyEditor;
|
||||||
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
@ -12,6 +14,8 @@ import org.openide.nodes.AbstractNode;
|
|||||||
import org.openide.nodes.Children;
|
import org.openide.nodes.Children;
|
||||||
import org.openide.nodes.Node;
|
import org.openide.nodes.Node;
|
||||||
import org.openide.nodes.Sheet;
|
import org.openide.nodes.Sheet;
|
||||||
|
import sun.beans.editors.BoolEditor;
|
||||||
|
import sun.beans.editors.BooleanEditor;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@ -46,16 +50,28 @@ public class GElementNode extends AbstractNode{
|
|||||||
set.setName("Element Properties");
|
set.setName("Element Properties");
|
||||||
set.setShortDescription("You can set element properties");
|
set.setShortDescription("You can set element properties");
|
||||||
for(Entry<String,String> pair : this.element.listAttributes().entrySet()){
|
for(Entry<String,String> pair : this.element.listAttributes().entrySet()){
|
||||||
set.put(new ElementAttributeProperty(element,pair.getKey()));
|
final ElementAttributeProperty elementAttributeProperty = new ElementAttributeProperty(element,pair.getKey());
|
||||||
|
pickEditor(pair, elementAttributeProperty);
|
||||||
|
set.put(elementAttributeProperty);
|
||||||
}
|
}
|
||||||
s.put(set);
|
s.put(set);
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void pickEditor(Entry<String, String> pair, final ElementAttributeProperty elementAttributeProperty) {
|
||||||
|
if(pair.getKey().equals("width")||pair.getKey().equals("height") || pair.getKey().equals("x") || pair.getKey().equals("y") ){
|
||||||
|
elementAttributeProperty.setPropertyEditor(new SizeEditor());
|
||||||
|
}else if(pair.getKey().equals("filename")){
|
||||||
|
elementAttributeProperty.setPropertyEditor(new ResourceEditor());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public class ElementAttributeProperty extends Node.Property {
|
public class ElementAttributeProperty extends Node.Property {
|
||||||
|
|
||||||
private String attributeName;
|
private String attributeName;
|
||||||
private GElement element;
|
private GElement element;
|
||||||
|
private PropertyEditor editor;
|
||||||
|
|
||||||
public ElementAttributeProperty(GElement element, String attributeName) {
|
public ElementAttributeProperty(GElement element, String attributeName) {
|
||||||
super(String.class);
|
super(String.class);
|
||||||
@ -81,9 +97,13 @@ public class GElementNode extends AbstractNode{
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setPropertyEditor(PropertyEditor editor){
|
||||||
|
this.editor = editor;
|
||||||
|
}
|
||||||
@Override
|
@Override
|
||||||
public PropertyEditor getPropertyEditor() {
|
public PropertyEditor getPropertyEditor() {
|
||||||
return super.getPropertyEditor(); //To change body of generated methods, choose Tools | Templates.
|
|
||||||
|
return this.editor; //To change body of generated methods, choose Tools | Templates.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -0,0 +1,71 @@
|
|||||||
|
/*
|
||||||
|
* To change this template, choose Tools | Templates
|
||||||
|
* and open the template in the editor.
|
||||||
|
*/
|
||||||
|
package com.jme3.gde.gui.propertyeditors;
|
||||||
|
|
||||||
|
import jada.ngeditor.controller.CommandProcessor;
|
||||||
|
import jada.ngeditor.guiviews.editors.FileChooserEditor;
|
||||||
|
import jada.ngeditor.model.GuiEditorModel;
|
||||||
|
import java.awt.Component;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
import java.beans.PropertyChangeEvent;
|
||||||
|
import java.beans.PropertyChangeListener;
|
||||||
|
import java.beans.PropertyEditorSupport;
|
||||||
|
import java.io.File;
|
||||||
|
import java.util.Observable;
|
||||||
|
import java.util.Observer;
|
||||||
|
import javax.swing.JFileChooser;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author cris
|
||||||
|
*/
|
||||||
|
public class ResourceEditor extends PropertyEditorSupport implements Observer, ActionListener{
|
||||||
|
private final FileChooserEditor fileChooserEditor;
|
||||||
|
private File assetFolder;
|
||||||
|
|
||||||
|
|
||||||
|
public ResourceEditor() {
|
||||||
|
CommandProcessor.getInstance().getObservable().addObserver(this);
|
||||||
|
|
||||||
|
GuiEditorModel model = (GuiEditorModel) CommandProcessor.getInstance().getObservable();
|
||||||
|
this.assetFolder = model.getCurrent().getAssetFolder();
|
||||||
|
fileChooserEditor = new FileChooserEditor(this.assetFolder);
|
||||||
|
fileChooserEditor.getFileChooser().addActionListener(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Component getCustomEditor() {
|
||||||
|
|
||||||
|
return fileChooserEditor.getFileChooser(); //To change body of generated methods, choose Tools | Templates.
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean supportsCustomEditor() {
|
||||||
|
return true; //To change body of generated methods, choose Tools | Templates.
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void update(Observable o, Object arg) {
|
||||||
|
if(o instanceof GuiEditorModel){
|
||||||
|
GuiEditorModel model = (GuiEditorModel) o;
|
||||||
|
this.assetFolder = model.getCurrent().getAssetFolder();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
if (JFileChooser.APPROVE_SELECTION.equals(e.getActionCommand())) {
|
||||||
|
this.setValue(fileChooserEditor.traslateFile());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,59 @@
|
|||||||
|
/*
|
||||||
|
* To change this template, choose Tools | Templates
|
||||||
|
* and open the template in the editor.
|
||||||
|
*/
|
||||||
|
package com.jme3.gde.gui.propertyeditors;
|
||||||
|
|
||||||
|
import java.awt.Component;
|
||||||
|
import java.beans.PropertyChangeEvent;
|
||||||
|
import java.beans.PropertyChangeListener;
|
||||||
|
import java.beans.PropertyEditorSupport;
|
||||||
|
import java.beans.PropertyVetoException;
|
||||||
|
import java.beans.VetoableChangeListener;
|
||||||
|
import javax.swing.JLabel;
|
||||||
|
import org.openide.explorer.propertysheet.ExPropertyEditor;
|
||||||
|
import org.openide.explorer.propertysheet.PropertyEnv;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author cris
|
||||||
|
*/
|
||||||
|
public class SizeEditor extends PropertyEditorSupport implements ExPropertyEditor, PropertyChangeListener{
|
||||||
|
private PropertyEnv env;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setAsText(String text) throws IllegalArgumentException {
|
||||||
|
super.setAsText(text); //To change body of generated methods, choose Tools | Templates.
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getAsText() {
|
||||||
|
return super.getAsText(); //To change body of generated methods, choose Tools | Templates.
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Component getCustomEditor() {
|
||||||
|
jada.ngeditor.guiviews.editors.SizeEditor editor = new jada.ngeditor.guiviews.editors.SizeEditor();
|
||||||
|
editor.setValue(this.getValue());
|
||||||
|
editor.addPropertyChangeListener(this);
|
||||||
|
return editor.getComponent(); //To change body of generated methods, choose Tools | Templates.
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean supportsCustomEditor() {
|
||||||
|
return true; //To change body of generated methods, choose Tools | Templates.
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void attachEnv(PropertyEnv env) {
|
||||||
|
this.env = env;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void propertyChange(PropertyChangeEvent evt) {
|
||||||
|
this.setValue(evt.getNewValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user