diff --git a/sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/editor/BackdropPanel.form b/sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/editor/BackdropPanel.form
new file mode 100644
index 000000000..de9e0f114
--- /dev/null
+++ b/sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/editor/BackdropPanel.form
@@ -0,0 +1,302 @@
+
+
+
diff --git a/sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/editor/BackdropPanel.java b/sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/editor/BackdropPanel.java
new file mode 100644
index 000000000..3f22ad328
--- /dev/null
+++ b/sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/editor/BackdropPanel.java
@@ -0,0 +1,470 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.jme3.gde.materialdefinition.editor;
+
+import com.jme3.gde.materials.MaterialPreviewRenderer;
+import com.jme3.material.Material;
+import java.awt.Container;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.ComponentAdapter;
+import java.awt.event.ComponentEvent;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import javax.swing.JScrollPane;
+import javax.swing.JViewport;
+import javax.swing.SwingUtilities;
+import javax.swing.Timer;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+/**
+ *
+ * @author Nehon
+ */
+public class BackdropPanel extends javax.swing.JPanel implements MouseListener, ChangeListener {
+
+ private final MaterialPreviewRenderer renderer;
+ private Material mat;
+
+ /**
+ * Creates new form BackdropPanel
+ */
+ @SuppressWarnings("LeakingThisInConstructor")
+ public BackdropPanel() {
+ initComponents();
+ // setBounds(0, 0, 300, 300);
+ setLayout(null);
+ toolBar.setVisible(false);
+ addMouseListener(this);
+ renderer = new MaterialPreviewRenderer(previewLabel);
+ recalculateTimer.setRepeats(false);
+ addComponentListener(new ComponentAdapter() {
+
+ @Override
+ public void componentResized(ComponentEvent e) {
+ updateComponents(e);
+ }
+
+ @Override
+ public void componentShown(ComponentEvent e) {
+ updateComponents(e);
+ }
+
+ @Override
+ public void componentMoved(ComponentEvent e) {
+ updateComponents(e);
+ }
+
+ });
+
+ previewLabel.setBounds(0, 0, 120, 120);
+ toolBar.setBounds(0, 0, 120, 16);
+ repaint();
+ }
+
+ private void updateComponents(ComponentEvent e) {
+ previewLabel.setBounds(0, 0, e.getComponent().getWidth(), e.getComponent().getHeight());
+ toolBar.setBounds(0, 0, e.getComponent().getWidth(), toolBar.getHeight());
+ repaint();
+ }
+
+ public void cleanup() {
+ renderer.cleanUp();
+ }
+
+ public void showMaterial(Material mat) {
+ if (isVisible()) {
+ this.mat = mat;
+ renderer.showMaterial(mat);
+ }
+ }
+
+ /**
+ * 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")
+ // //GEN-BEGIN:initComponents
+ private void initComponents() {
+
+ toolBar = new javax.swing.JPanel();
+ reloadButton = new javax.swing.JButton();
+ expandButton = new javax.swing.JButton();
+ sphereButton = new javax.swing.JButton();
+ boxButton = new javax.swing.JButton();
+ quadButton = new javax.swing.JButton();
+ bringToFrontButton = new javax.swing.JButton();
+ previewLabel = new javax.swing.JLabel();
+
+ toolBar.setOpaque(false);
+
+ reloadButton.setBackground(new java.awt.Color(153, 153, 153));
+ reloadButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/jme3/gde/materialdefinition/icons/reload.png"))); // NOI18N
+ reloadButton.setToolTipText(org.openide.util.NbBundle.getMessage(BackdropPanel.class, "BackdropPanel.reloadButton.toolTipText")); // NOI18N
+ reloadButton.setBorder(null);
+ reloadButton.setBorderPainted(false);
+ reloadButton.setContentAreaFilled(false);
+ reloadButton.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
+ reloadButton.setFocusable(false);
+ reloadButton.setIconTextGap(0);
+ reloadButton.setMaximumSize(new java.awt.Dimension(24, 24));
+ reloadButton.setMinimumSize(new java.awt.Dimension(24, 24));
+ reloadButton.setPreferredSize(new java.awt.Dimension(24, 24));
+ reloadButton.addMouseListener(new java.awt.event.MouseAdapter() {
+ public void mouseEntered(java.awt.event.MouseEvent evt) {
+ reloadButtonMouseEntered(evt);
+ }
+ public void mouseExited(java.awt.event.MouseEvent evt) {
+ reloadButtonMouseExited(evt);
+ }
+ });
+ reloadButton.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ reloadButtonActionPerformed(evt);
+ }
+ });
+
+ expandButton.setBackground(new java.awt.Color(153, 153, 153));
+ expandButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/jme3/gde/materialdefinition/icons/collapse.png"))); // NOI18N
+ expandButton.setToolTipText(org.openide.util.NbBundle.getMessage(BackdropPanel.class, "BackdropPanel.expandButton.toolTipText")); // NOI18N
+ expandButton.setBorder(null);
+ expandButton.setBorderPainted(false);
+ expandButton.setContentAreaFilled(false);
+ expandButton.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
+ expandButton.setFocusable(false);
+ expandButton.setIconTextGap(0);
+ expandButton.setMaximumSize(new java.awt.Dimension(24, 24));
+ expandButton.setMinimumSize(new java.awt.Dimension(24, 24));
+ expandButton.setPreferredSize(new java.awt.Dimension(24, 24));
+ expandButton.addMouseListener(new java.awt.event.MouseAdapter() {
+ public void mouseEntered(java.awt.event.MouseEvent evt) {
+ expandButtonMouseEntered(evt);
+ }
+ public void mouseExited(java.awt.event.MouseEvent evt) {
+ expandButtonMouseExited(evt);
+ }
+ });
+ expandButton.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ expandButtonActionPerformed(evt);
+ }
+ });
+
+ sphereButton.setBackground(new java.awt.Color(153, 153, 153));
+ sphereButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/jme3/gde/materialdefinition/icons/Sphere.png"))); // NOI18N
+ sphereButton.setToolTipText(org.openide.util.NbBundle.getMessage(BackdropPanel.class, "BackdropPanel.sphereButton.toolTipText")); // NOI18N
+ sphereButton.setBorder(null);
+ sphereButton.setBorderPainted(false);
+ sphereButton.setContentAreaFilled(false);
+ sphereButton.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
+ sphereButton.setFocusable(false);
+ sphereButton.setIconTextGap(0);
+ sphereButton.setMaximumSize(new java.awt.Dimension(24, 24));
+ sphereButton.setMinimumSize(new java.awt.Dimension(24, 24));
+ sphereButton.setPreferredSize(new java.awt.Dimension(24, 24));
+ sphereButton.addMouseListener(new java.awt.event.MouseAdapter() {
+ public void mouseEntered(java.awt.event.MouseEvent evt) {
+ sphereButtonMouseEntered(evt);
+ }
+ public void mouseExited(java.awt.event.MouseEvent evt) {
+ sphereButtonMouseExited(evt);
+ }
+ });
+ sphereButton.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ sphereButtonActionPerformed(evt);
+ }
+ });
+
+ boxButton.setBackground(new java.awt.Color(153, 153, 153));
+ boxButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/jme3/gde/materialdefinition/icons/cube.png"))); // NOI18N
+ boxButton.setToolTipText(org.openide.util.NbBundle.getMessage(BackdropPanel.class, "BackdropPanel.boxButton.toolTipText")); // NOI18N
+ boxButton.setBorder(null);
+ boxButton.setBorderPainted(false);
+ boxButton.setContentAreaFilled(false);
+ boxButton.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
+ boxButton.setFocusable(false);
+ boxButton.setIconTextGap(0);
+ boxButton.setMaximumSize(new java.awt.Dimension(24, 24));
+ boxButton.setMinimumSize(new java.awt.Dimension(24, 24));
+ boxButton.setPreferredSize(new java.awt.Dimension(24, 24));
+ boxButton.addMouseListener(new java.awt.event.MouseAdapter() {
+ public void mouseEntered(java.awt.event.MouseEvent evt) {
+ boxButtonMouseEntered(evt);
+ }
+ public void mouseExited(java.awt.event.MouseEvent evt) {
+ boxButtonMouseExited(evt);
+ }
+ });
+ boxButton.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ boxButtonActionPerformed(evt);
+ }
+ });
+
+ quadButton.setBackground(new java.awt.Color(153, 153, 153));
+ quadButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/jme3/gde/materialdefinition/icons/Quad.png"))); // NOI18N
+ quadButton.setToolTipText(org.openide.util.NbBundle.getMessage(BackdropPanel.class, "BackdropPanel.quadButton.toolTipText")); // NOI18N
+ quadButton.setBorder(null);
+ quadButton.setBorderPainted(false);
+ quadButton.setContentAreaFilled(false);
+ quadButton.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
+ quadButton.setFocusable(false);
+ quadButton.setIconTextGap(0);
+ quadButton.setMaximumSize(new java.awt.Dimension(24, 24));
+ quadButton.setMinimumSize(new java.awt.Dimension(24, 24));
+ quadButton.setPreferredSize(new java.awt.Dimension(24, 24));
+ quadButton.addMouseListener(new java.awt.event.MouseAdapter() {
+ public void mouseEntered(java.awt.event.MouseEvent evt) {
+ quadButtonMouseEntered(evt);
+ }
+ public void mouseExited(java.awt.event.MouseEvent evt) {
+ quadButtonMouseExited(evt);
+ }
+ });
+ quadButton.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ quadButtonActionPerformed(evt);
+ }
+ });
+
+ bringToFrontButton.setBackground(new java.awt.Color(153, 153, 153));
+ bringToFrontButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/jme3/gde/materialdefinition/icons/frontBack.png"))); // NOI18N
+ bringToFrontButton.setToolTipText(org.openide.util.NbBundle.getMessage(BackdropPanel.class, "BackdropPanel.bringToFrontButton.toolTipText")); // NOI18N
+ bringToFrontButton.setBorder(null);
+ bringToFrontButton.setBorderPainted(false);
+ bringToFrontButton.setContentAreaFilled(false);
+ bringToFrontButton.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
+ bringToFrontButton.setFocusable(false);
+ bringToFrontButton.setIconTextGap(0);
+ bringToFrontButton.setMaximumSize(new java.awt.Dimension(24, 24));
+ bringToFrontButton.setMinimumSize(new java.awt.Dimension(24, 24));
+ bringToFrontButton.setPreferredSize(new java.awt.Dimension(24, 24));
+ bringToFrontButton.addMouseListener(new java.awt.event.MouseAdapter() {
+ public void mouseEntered(java.awt.event.MouseEvent evt) {
+ bringToFrontButtonMouseEntered(evt);
+ }
+ public void mouseExited(java.awt.event.MouseEvent evt) {
+ bringToFrontButtonMouseExited(evt);
+ }
+ });
+ bringToFrontButton.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ bringToFrontButtonActionPerformed(evt);
+ }
+ });
+
+ javax.swing.GroupLayout toolBarLayout = new javax.swing.GroupLayout(toolBar);
+ toolBar.setLayout(toolBarLayout);
+ toolBarLayout.setHorizontalGroup(
+ toolBarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(toolBarLayout.createSequentialGroup()
+ .addComponent(expandButton, javax.swing.GroupLayout.PREFERRED_SIZE, 16, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(bringToFrontButton, javax.swing.GroupLayout.PREFERRED_SIZE, 16, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(sphereButton, javax.swing.GroupLayout.PREFERRED_SIZE, 16, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(boxButton, javax.swing.GroupLayout.PREFERRED_SIZE, 16, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(quadButton, javax.swing.GroupLayout.PREFERRED_SIZE, 16, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 90, Short.MAX_VALUE)
+ .addComponent(reloadButton, javax.swing.GroupLayout.PREFERRED_SIZE, 16, javax.swing.GroupLayout.PREFERRED_SIZE))
+ );
+ toolBarLayout.setVerticalGroup(
+ toolBarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(expandButton, javax.swing.GroupLayout.PREFERRED_SIZE, 16, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(reloadButton, javax.swing.GroupLayout.PREFERRED_SIZE, 16, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(sphereButton, javax.swing.GroupLayout.PREFERRED_SIZE, 16, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(boxButton, javax.swing.GroupLayout.PREFERRED_SIZE, 16, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(quadButton, javax.swing.GroupLayout.PREFERRED_SIZE, 16, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(bringToFrontButton, javax.swing.GroupLayout.PREFERRED_SIZE, 16, javax.swing.GroupLayout.PREFERRED_SIZE)
+ );
+
+ add(toolBar);
+
+ previewLabel.setBackground(new java.awt.Color(100, 100, 100));
+ previewLabel.setForeground(new java.awt.Color(100, 100, 100));
+ previewLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
+ previewLabel.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
+ previewLabel.setIconTextGap(0);
+ previewLabel.setMaximumSize(new java.awt.Dimension(100, 100));
+ previewLabel.setMinimumSize(new java.awt.Dimension(100, 100));
+ previewLabel.setOpaque(true);
+ previewLabel.setPreferredSize(new java.awt.Dimension(100, 100));
+ add(previewLabel);
+ }// //GEN-END:initComponents
+
+ private void sphereButtonMouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_sphereButtonMouseEntered
+ mouseEntered(SwingUtilities.convertMouseEvent(sphereButton, evt, this));
+ }//GEN-LAST:event_sphereButtonMouseEntered
+
+ private void sphereButtonMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_sphereButtonMouseExited
+ mouseExited(SwingUtilities.convertMouseEvent(sphereButton, evt, this));
+ }//GEN-LAST:event_sphereButtonMouseExited
+
+ private void sphereButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_sphereButtonActionPerformed
+ renderer.switchDisplay(MaterialPreviewRenderer.DisplayType.Sphere);
+ refresh();
+ }//GEN-LAST:event_sphereButtonActionPerformed
+
+ private void boxButtonMouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_boxButtonMouseEntered
+ mouseEntered(SwingUtilities.convertMouseEvent(boxButton, evt, this));
+ }//GEN-LAST:event_boxButtonMouseEntered
+
+ private void boxButtonMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_boxButtonMouseExited
+ mouseExited(SwingUtilities.convertMouseEvent(boxButton, evt, this));
+ }//GEN-LAST:event_boxButtonMouseExited
+
+ private void boxButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_boxButtonActionPerformed
+ renderer.switchDisplay(MaterialPreviewRenderer.DisplayType.Box);
+ refresh();
+ }//GEN-LAST:event_boxButtonActionPerformed
+
+ private void reloadButtonMouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_reloadButtonMouseEntered
+ mouseEntered(SwingUtilities.convertMouseEvent(reloadButton, evt, this));
+ }//GEN-LAST:event_reloadButtonMouseEntered
+
+ private void reloadButtonMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_reloadButtonMouseExited
+ mouseExited(SwingUtilities.convertMouseEvent(reloadButton, evt, this));
+ }//GEN-LAST:event_reloadButtonMouseExited
+
+ private void reloadButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_reloadButtonActionPerformed
+ refresh();
+ }//GEN-LAST:event_reloadButtonActionPerformed
+
+ private void quadButtonMouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_quadButtonMouseEntered
+ mouseEntered(SwingUtilities.convertMouseEvent(quadButton, evt, this));
+ }//GEN-LAST:event_quadButtonMouseEntered
+
+ private void quadButtonMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_quadButtonMouseExited
+ mouseExited(SwingUtilities.convertMouseEvent(quadButton, evt, this));
+ }//GEN-LAST:event_quadButtonMouseExited
+
+ private void quadButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_quadButtonActionPerformed
+ renderer.switchDisplay(MaterialPreviewRenderer.DisplayType.Quad);
+ refresh();
+ }//GEN-LAST:event_quadButtonActionPerformed
+
+ private void expandButtonMouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_expandButtonMouseEntered
+ mouseEntered(SwingUtilities.convertMouseEvent(expandButton, evt, this));
+ }//GEN-LAST:event_expandButtonMouseEntered
+
+ private void expandButtonMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_expandButtonMouseExited
+ mouseExited(SwingUtilities.convertMouseEvent(expandButton, evt, this));
+ }//GEN-LAST:event_expandButtonMouseExited
+
+ private void expandButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_expandButtonActionPerformed
+ setVisible(false);
+ }//GEN-LAST:event_expandButtonActionPerformed
+
+ private void bringToFrontButtonMouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_bringToFrontButtonMouseEntered
+ mouseEntered(SwingUtilities.convertMouseEvent(bringToFrontButton, evt, this));
+ }//GEN-LAST:event_bringToFrontButtonMouseEntered
+
+ private void bringToFrontButtonMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_bringToFrontButtonMouseExited
+ mouseExited(SwingUtilities.convertMouseEvent(bringToFrontButton, evt, this));
+ }//GEN-LAST:event_bringToFrontButtonMouseExited
+
+ private void bringToFrontButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bringToFrontButtonActionPerformed
+ Diagram diagram = ((Diagram) getParent());
+ if (diagram.getComponentZOrder(this) > 0) {
+ diagram.setComponentZOrder(this, 0);
+ } else {
+ diagram.setComponentZOrder(this, ((Diagram) getParent()).getComponentCount() - 1);
+ }
+ diagram.repaint();
+ }//GEN-LAST:event_bringToFrontButtonActionPerformed
+
+
+ // Variables declaration - do not modify//GEN-BEGIN:variables
+ private javax.swing.JButton boxButton;
+ private javax.swing.JButton bringToFrontButton;
+ private javax.swing.JButton expandButton;
+ private javax.swing.JLabel previewLabel;
+ private javax.swing.JButton quadButton;
+ private javax.swing.JButton reloadButton;
+ private javax.swing.JButton sphereButton;
+ private javax.swing.JPanel toolBar;
+ // End of variables declaration//GEN-END:variables
+
+ @Override
+ public void mouseClicked(MouseEvent e) {
+ }
+
+ @Override
+ public void mousePressed(MouseEvent e) {
+ }
+
+ @Override
+ public void mouseReleased(MouseEvent e) {
+ Container c = getParent();
+ if (c != null) {
+ ((MouseListener) c).mouseReleased(SwingUtilities.convertMouseEvent(this, e, c));
+ }
+ }
+
+ @Override
+ public void mouseEntered(MouseEvent e) {
+ toolBar.setVisible(true);
+ t.stop();
+ }
+ Timer t = new Timer(500, new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ toolBar.setVisible(false);
+ }
+ });
+
+ @Override
+ public void mouseExited(MouseEvent e) {
+ t.restart();
+ }
+
+ public void stateChanged(ChangeEvent e) {
+ JViewport vp = (JViewport) e.getSource();
+ update(vp);
+
+ }
+
+ private final Timer recalculateTimer = new Timer(20, new ActionListener() {
+
+ public void actionPerformed(ActionEvent e) {
+ refresh();
+ }
+ });
+
+ protected void update(JViewport viewPort) {
+ if (isVisible()) {
+ JScrollPane pane = (JScrollPane) viewPort.getParent();
+ int width = viewPort.getWidth();
+ int height = viewPort.getHeight();
+
+ int size = Math.min(width, height) - 25;
+ setSize(size, size);
+ setBounds(0, 0, size, size);
+
+ setLocation(pane.getHorizontalScrollBar().getValue() + width / 2 - size / 2, pane.getVerticalScrollBar().getValue() + height / 2 - size / 2);
+
+ repaint();
+ if (recalculateTimer.isRunning()) {
+ recalculateTimer.restart();
+ } else {
+ recalculateTimer.start();
+ }
+ }
+
+ }
+
+ private void refresh() {
+ if (mat != null) {
+ renderer.showMaterial(mat);
+ }
+ }
+
+}
diff --git a/sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/editor/Bundle.properties b/sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/editor/Bundle.properties
index 64e6fb8b9..f2fb15a9f 100644
--- a/sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/editor/Bundle.properties
+++ b/sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/editor/Bundle.properties
@@ -3,3 +3,9 @@ ShaderEditPanel.shaderEditorPane.text=
ShaderEditPanel.closeButton.toolTipText=Close this panel
ShaderEditPanel.jToggleButton1.text=jToggleButton1
ShaderEditPanel.headerText.text=jLabel1
+BackdropPanel.sphereButton.toolTipText=Sphere
+BackdropPanel.expandButton.toolTipText=Hide Backdrop
+BackdropPanel.quadButton.toolTipText=Quad
+BackdropPanel.reloadButton.toolTipText=Refresh
+BackdropPanel.boxButton.toolTipText=Cube
+BackdropPanel.bringToFrontButton.toolTipText=Toggle back/front
diff --git a/sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/editor/Diagram.java b/sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/editor/Diagram.java
index fcd851ed6..5a634097c 100644
--- a/sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/editor/Diagram.java
+++ b/sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/editor/Diagram.java
@@ -40,6 +40,7 @@ import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JSeparator;
+import javax.swing.JViewport;
import javax.swing.SwingUtilities;
import javax.swing.border.Border;
import javax.swing.border.TitledBorder;
@@ -56,15 +57,17 @@ public class Diagram extends JPanel implements MouseListener, MouseMotionListene
protected List connections = new ArrayList();
protected List nodes = new ArrayList();
protected List outBuses = new ArrayList();
- private MyMenu contextMenu = new MyMenu("Add");
+ private final MyMenu contextMenu = new MyMenu("Add");
private MatDefEditorlElement parent;
private String currentTechniqueName;
+ private final BackdropPanel backDrop = new BackdropPanel();
+ @SuppressWarnings("LeakingThisInConstructor")
public Diagram() {
addMouseListener(this);
addMouseMotionListener(this);
- createPopupMenu();
+ createPopupMenu();
}
@Override
@@ -99,9 +102,23 @@ public class Diagram extends JPanel implements MouseListener, MouseMotionListene
public void refreshPreviews(Material mat) {
for (OutBusPanel outBusPanel : outBuses) {
- outBusPanel.updatePreview(mat);
+ outBusPanel.updatePreview(mat);
+ }
+ if(backDrop.isVisible()){
+ backDrop.showMaterial(mat);
}
}
+
+ public void displayBackdrop(){
+ if(backDrop.getParent()== null){
+ add(backDrop);
+ ((JViewport)getParent()).addChangeListener(backDrop);
+ }
+
+ backDrop.setVisible(true);
+ backDrop.update(((JViewport)getParent()));
+ }
+
Point clickLoc = new Point(0, 0);
@Override
diff --git a/sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/editor/MatPanel.form b/sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/editor/MatPanel.form
index 58e9d4739..214705e9d 100644
--- a/sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/editor/MatPanel.form
+++ b/sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/editor/MatPanel.form
@@ -216,7 +216,7 @@
-
+
@@ -240,7 +240,6 @@
-
diff --git a/sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/editor/MatPanel.java b/sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/editor/MatPanel.java
index 88cb63286..db8da01da 100644
--- a/sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/editor/MatPanel.java
+++ b/sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/editor/MatPanel.java
@@ -20,10 +20,9 @@ import javax.swing.Timer;
*
* @author Nehon
*/
-public class MatPanel extends javax.swing.JPanel implements MouseListener,ComponentListener {
-
+public class MatPanel extends javax.swing.JPanel implements MouseListener, ComponentListener {
- private MaterialPreviewRenderer renderer;
+ private final MaterialPreviewRenderer renderer;
private Material mat;
/**
* Creates new form PreviewPanel
@@ -36,18 +35,19 @@ public class MatPanel extends javax.swing.JPanel implements MouseListener,Compon
renderer = new MaterialPreviewRenderer(previewLabel);
}
- public void cleanup(){
- renderer.cleanUp();
- cleanup();
+ public void cleanup() {
+ renderer.cleanUp();
}
public void showMaterial(Material mat) {
this.mat = mat;
- renderer.showMaterial(mat);
+ renderer.showMaterial(mat);
}
-
-
+ public void setExpandActionListener(ActionListener action){
+ expandButton.addActionListener(action);
+ }
+
/**
* 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
@@ -176,7 +176,7 @@ public class MatPanel extends javax.swing.JPanel implements MouseListener,Compon
expandButton.setBackground(new java.awt.Color(153, 153, 153));
expandButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/jme3/gde/materialdefinition/icons/expend.png"))); // NOI18N
- expandButton.setToolTipText("Expand");
+ expandButton.setToolTipText("Display Backdrop");
expandButton.setBorder(null);
expandButton.setBorderPainted(false);
expandButton.setContentAreaFilled(false);
@@ -194,11 +194,6 @@ public class MatPanel extends javax.swing.JPanel implements MouseListener,Compon
expandButtonMouseExited(evt);
}
});
- expandButton.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- expandButtonActionPerformed(evt);
- }
- });
javax.swing.GroupLayout toolBarLayout = new javax.swing.GroupLayout(toolBar);
toolBar.setLayout(toolBarLayout);
@@ -246,10 +241,6 @@ public class MatPanel extends javax.swing.JPanel implements MouseListener,Compon
previewLabel.setBounds(20, 20, 100, 100);
}// //GEN-END:initComponents
- private void expandButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_expandButtonActionPerformed
- // TODO add your handling code here:
- }//GEN-LAST:event_expandButtonActionPerformed
-
private void expandButtonMouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_expandButtonMouseEntered
mouseEntered(SwingUtilities.convertMouseEvent(expandButton, evt, this));
}//GEN-LAST:event_expandButtonMouseEntered
@@ -321,15 +312,15 @@ public class MatPanel extends javax.swing.JPanel implements MouseListener,Compon
@Override
public void mouseClicked(MouseEvent e) {
}
-
+
@Override
public void mousePressed(MouseEvent e) {
}
-
+
@Override
public void mouseReleased(MouseEvent e) {
}
-
+
@Override
public void mouseEntered(MouseEvent e) {
toolBar.setVisible(true);
@@ -341,37 +332,37 @@ public class MatPanel extends javax.swing.JPanel implements MouseListener,Compon
toolBar.setVisible(false);
}
});
-
+
@Override
public void mouseExited(MouseEvent e) {
t.restart();
}
- @Override
+ @Override
public void componentResized(ComponentEvent e) {
update(e.getComponent());
}
-
+
@Override
public void componentMoved(ComponentEvent e) {
update(e.getComponent());
}
-
+
@Override
public void componentShown(ComponentEvent e) {
- update(e.getComponent());
+ update(e.getComponent());
}
-
+
@Override
public void componentHidden(ComponentEvent e) {
}
-
+
protected void update(Component c) {
setLocation(c.getLocation().x + c.getWidth() - 150, c.getLocation().y + 10 - 120);
}
-
+
private void refresh() {
- if(mat!=null){
+ if (mat != null) {
renderer.showMaterial(mat);
}
}
diff --git a/sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/editor/OutBusPanel.java b/sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/editor/OutBusPanel.java
index 8863b9fd6..118285034 100644
--- a/sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/editor/OutBusPanel.java
+++ b/sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/editor/OutBusPanel.java
@@ -16,6 +16,8 @@ import java.awt.LinearGradientPaint;
import java.awt.Point;
import java.awt.Polygon;
import java.awt.RenderingHints;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import java.awt.event.MouseEvent;
@@ -81,11 +83,18 @@ public class OutBusPanel extends DraggablePanel implements ComponentListener, Se
}
@Override
- public void setDiagram(Diagram diagram) {
+ public void setDiagram(final Diagram diagram) {
super.setDiagram(diagram);
// preview.setBounds(350,300,128,100);
diagram.add(preview);
preview.update(this);
+ preview.setExpandActionListener(new ActionListener() {
+
+ public void actionPerformed(ActionEvent e) {
+ diagram.displayBackdrop();
+ }
+ });
+
}
@Override
diff --git a/sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/icons/collapse.png b/sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/icons/collapse.png
new file mode 100644
index 000000000..019e12720
Binary files /dev/null and b/sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/icons/collapse.png differ
diff --git a/sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/icons/frontBack.png b/sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/icons/frontBack.png
new file mode 100644
index 000000000..bee041187
Binary files /dev/null and b/sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/icons/frontBack.png differ
diff --git a/sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/icons/pirates.wmv b/sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/icons/pirates.wmv
deleted file mode 100644
index 5a30b7daf..000000000
Binary files a/sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/icons/pirates.wmv and /dev/null differ
diff --git a/sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/icons/previewIcons.psd b/sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/icons/previewIcons.psd
index cb9255e1c..4c64777c0 100644
Binary files a/sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/icons/previewIcons.psd and b/sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/icons/previewIcons.psd differ