- Added a wizard for choosing Bloom mode when creating a BloomFilter - Changing the filter's name in the properties panel now also change it's name in the Filter Explorer git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@7861 75d07b2b-3a1a-0410-a2c5-0572b91ccdca3.0
parent
bb18399b6d
commit
9e0f7dc942
@ -1,54 +1,122 @@ |
|||||||
/* |
/* |
||||||
* Copyright (c) 2009-2010 jMonkeyEngine |
* Copyright (c) 2009-2010 jMonkeyEngine All rights reserved. |
||||||
* All rights reserved. |
* <p/> |
||||||
* |
* Redistribution and use in source and binary forms, with or without |
||||||
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions are met: |
||||||
* modification, are permitted provided that the following conditions are |
|
||||||
* met: |
|
||||||
* |
* |
||||||
* * Redistributions of source code must retain the above copyright |
* * Redistributions of source code must retain the above copyright |
||||||
* notice, this list of conditions and the following disclaimer. |
* notice, this list of conditions and the following disclaimer. |
||||||
* |
* <p/> |
||||||
* * Redistributions in binary form must reproduce the above copyright |
* * Redistributions in binary form must reproduce the above copyright |
||||||
* notice, this list of conditions and the following disclaimer in the |
* notice, this list of conditions and the following disclaimer in the |
||||||
* documentation and/or other materials provided with the distribution. |
* documentation and/or other materials provided with the distribution. |
||||||
* |
* <p/> |
||||||
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors |
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors |
||||||
* may be used to endorse or promote products derived from this software |
* may be used to endorse or promote products derived from this software |
||||||
* without specific prior written permission. |
* without specific prior written permission. |
||||||
* |
* <p/> |
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS |
||||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED |
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, |
||||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
||||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
||||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
||||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
||||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; |
||||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF |
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
||||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR |
||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||||
*/ |
*/ |
||||||
package com.jme3.gde.core.filters.impl; |
package com.jme3.gde.core.filters.impl; |
||||||
|
|
||||||
import com.jme3.gde.core.filters.actions.AbstractNewFilterAction; |
import com.jme3.gde.core.filters.actions.AbstractNewFilterWizardAction; |
||||||
import com.jme3.gde.core.filters.actions.NewFilterAction; |
import com.jme3.gde.core.filters.actions.NewFilterAction; |
||||||
|
import com.jme3.gde.core.filters.impl.bloom.BloomWizardPanel1; |
||||||
import com.jme3.post.Filter; |
import com.jme3.post.Filter; |
||||||
|
import com.jme3.post.FilterPostProcessor; |
||||||
import com.jme3.post.filters.BloomFilter; |
import com.jme3.post.filters.BloomFilter; |
||||||
|
import java.awt.Component; |
||||||
|
import java.awt.Dialog; |
||||||
|
import java.text.MessageFormat; |
||||||
|
import javax.swing.JComponent; |
||||||
|
import org.openide.DialogDisplayer; |
||||||
|
import org.openide.WizardDescriptor; |
||||||
|
import org.openide.nodes.Node; |
||||||
|
|
||||||
/** |
/** |
||||||
* |
* |
||||||
* @author normenhansen |
* @author normenhansen |
||||||
*/ |
*/ |
||||||
@org.openide.util.lookup.ServiceProvider(service = NewFilterAction.class) |
@org.openide.util.lookup.ServiceProvider(service = NewFilterAction.class) |
||||||
public class NewBloomFilterAction extends AbstractNewFilterAction { |
public class NewBloomFilterAction extends AbstractNewFilterWizardAction { |
||||||
|
|
||||||
|
private WizardDescriptor.Panel[] panels; |
||||||
|
|
||||||
public NewBloomFilterAction() { |
public NewBloomFilterAction() { |
||||||
name = "Bloom"; |
name = "Bloom"; |
||||||
} |
} |
||||||
|
|
||||||
@Override |
@Override |
||||||
protected Filter doCreateFilter() { |
protected Object showWizard(Node node) { |
||||||
return new BloomFilter(); |
WizardDescriptor wizardDescriptor = new WizardDescriptor(getPanels()); |
||||||
|
// {0} will be replaced by WizardDesriptor.Panel.getComponent().getName()
|
||||||
|
wizardDescriptor.setTitleFormat(new MessageFormat("{0}")); |
||||||
|
wizardDescriptor.setTitle("Your wizard dialog title here"); |
||||||
|
Dialog dialog = DialogDisplayer.getDefault().createDialog(wizardDescriptor); |
||||||
|
dialog.setVisible(true); |
||||||
|
dialog.toFront(); |
||||||
|
boolean cancelled = wizardDescriptor.getValue() != WizardDescriptor.FINISH_OPTION; |
||||||
|
if (!cancelled) { |
||||||
|
return wizardDescriptor; |
||||||
|
} |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected Filter doCreateFilter(FilterPostProcessor parent, Object configuration) { |
||||||
|
if (configuration != null) { |
||||||
|
WizardDescriptor wiz = (WizardDescriptor) configuration; |
||||||
|
if (wiz.getProperty("mode").equals("Scene")) { |
||||||
|
return new BloomFilter(BloomFilter.GlowMode.Scene); |
||||||
|
} else { |
||||||
|
return new BloomFilter(BloomFilter.GlowMode.Objects); |
||||||
|
} |
||||||
|
} |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Initialize panels representing individual wizard's steps and sets |
||||||
|
* various properties for them influencing wizard appearance. |
||||||
|
*/ |
||||||
|
private WizardDescriptor.Panel[] getPanels() { |
||||||
|
if (panels == null) { |
||||||
|
panels = new WizardDescriptor.Panel[]{ |
||||||
|
new BloomWizardPanel1() |
||||||
|
}; |
||||||
|
String[] steps = new String[panels.length]; |
||||||
|
for (int i = 0; i < panels.length; i++) { |
||||||
|
Component c = panels[i].getComponent(); |
||||||
|
// Default step name to component name of panel. Mainly useful
|
||||||
|
// for getting the name of the target chooser to appear in the
|
||||||
|
// list of steps.
|
||||||
|
steps[i] = c.getName(); |
||||||
|
if (c instanceof JComponent) { // assume Swing components
|
||||||
|
JComponent jc = (JComponent) c; |
||||||
|
// Sets step number of a component
|
||||||
|
// TODO if using org.openide.dialogs >= 7.8, can use WizardDescriptor.PROP_*:
|
||||||
|
jc.putClientProperty("WizardPanel_contentSelectedIndex", new Integer(i)); |
||||||
|
// Sets steps names for a panel
|
||||||
|
jc.putClientProperty("WizardPanel_contentData", steps); |
||||||
|
// Turn on subtitle creation on each step
|
||||||
|
jc.putClientProperty("WizardPanel_autoWizardStyle", Boolean.TRUE); |
||||||
|
// Show steps on the left side with the image on the background
|
||||||
|
jc.putClientProperty("WizardPanel_contentDisplayed", Boolean.TRUE); |
||||||
|
// Turn on numbering of all steps
|
||||||
|
jc.putClientProperty("WizardPanel_contentNumbered", Boolean.TRUE); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return panels; |
||||||
} |
} |
||||||
} |
} |
||||||
|
@ -0,0 +1,118 @@ |
|||||||
|
<?xml version="1.1" encoding="UTF-8" ?> |
||||||
|
|
||||||
|
<Form version="1.5" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JPanelFormInfo"> |
||||||
|
<NonVisualComponents> |
||||||
|
<Container class="javax.swing.JFrame" name="jFrame1"> |
||||||
|
|
||||||
|
<Layout> |
||||||
|
<DimensionLayout dim="0"> |
||||||
|
<Group type="103" groupAlignment="0" attributes="0"> |
||||||
|
<EmptySpace min="0" pref="400" max="32767" attributes="0"/> |
||||||
|
</Group> |
||||||
|
</DimensionLayout> |
||||||
|
<DimensionLayout dim="1"> |
||||||
|
<Group type="103" groupAlignment="0" attributes="0"> |
||||||
|
<EmptySpace min="0" pref="300" max="32767" attributes="0"/> |
||||||
|
</Group> |
||||||
|
</DimensionLayout> |
||||||
|
</Layout> |
||||||
|
</Container> |
||||||
|
<Component class="javax.swing.ButtonGroup" name="buttonGroup1"> |
||||||
|
</Component> |
||||||
|
<Component class="javax.swing.ButtonGroup" name="buttonGroup2"> |
||||||
|
</Component> |
||||||
|
</NonVisualComponents> |
||||||
|
<AuxValues> |
||||||
|
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/> |
||||||
|
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/> |
||||||
|
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/> |
||||||
|
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="true"/> |
||||||
|
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/> |
||||||
|
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/> |
||||||
|
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/> |
||||||
|
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/> |
||||||
|
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/> |
||||||
|
</AuxValues> |
||||||
|
|
||||||
|
<Layout> |
||||||
|
<DimensionLayout dim="0"> |
||||||
|
<Group type="103" groupAlignment="0" attributes="0"> |
||||||
|
<Group type="102" attributes="0"> |
||||||
|
<Group type="103" groupAlignment="0" attributes="0"> |
||||||
|
<Group type="102" attributes="0"> |
||||||
|
<EmptySpace min="-2" pref="107" max="-2" attributes="0"/> |
||||||
|
<Component id="jComboBox1" min="-2" max="-2" attributes="0"/> |
||||||
|
</Group> |
||||||
|
<Group type="102" alignment="0" attributes="0"> |
||||||
|
<EmptySpace max="-2" attributes="0"/> |
||||||
|
<Component id="jLabel2" min="-2" max="-2" attributes="0"/> |
||||||
|
</Group> |
||||||
|
</Group> |
||||||
|
<EmptySpace pref="316" max="32767" attributes="0"/> |
||||||
|
</Group> |
||||||
|
<Group type="102" alignment="1" attributes="0"> |
||||||
|
<EmptySpace max="32767" attributes="0"/> |
||||||
|
<Group type="103" groupAlignment="0" attributes="0"> |
||||||
|
<Component id="jLabel3" alignment="0" min="-2" max="-2" attributes="0"/> |
||||||
|
<Component id="jLabel1" alignment="0" min="-2" max="-2" attributes="0"/> |
||||||
|
</Group> |
||||||
|
<EmptySpace max="-2" attributes="0"/> |
||||||
|
</Group> |
||||||
|
</Group> |
||||||
|
</DimensionLayout> |
||||||
|
<DimensionLayout dim="1"> |
||||||
|
<Group type="103" groupAlignment="0" attributes="0"> |
||||||
|
<Group type="102" attributes="0"> |
||||||
|
<EmptySpace min="-2" pref="6" max="-2" attributes="0"/> |
||||||
|
<Component id="jLabel2" min="-2" max="-2" attributes="0"/> |
||||||
|
<EmptySpace type="unrelated" max="-2" attributes="0"/> |
||||||
|
<Component id="jComboBox1" min="-2" max="-2" attributes="0"/> |
||||||
|
<EmptySpace type="separate" max="-2" attributes="0"/> |
||||||
|
<Component id="jLabel1" min="-2" max="-2" attributes="0"/> |
||||||
|
<EmptySpace type="unrelated" max="-2" attributes="0"/> |
||||||
|
<Component id="jLabel3" min="-2" max="-2" attributes="0"/> |
||||||
|
<EmptySpace pref="113" max="32767" attributes="0"/> |
||||||
|
</Group> |
||||||
|
</Group> |
||||||
|
</DimensionLayout> |
||||||
|
</Layout> |
||||||
|
<SubComponents> |
||||||
|
<Component class="javax.swing.JLabel" name="jLabel1"> |
||||||
|
<Properties> |
||||||
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> |
||||||
|
<ResourceString bundle="com/jme3/gde/core/filters/impl/bloom/Bundle.properties" key="BloomVisualPanel1.jLabel1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> |
||||||
|
</Property> |
||||||
|
</Properties> |
||||||
|
</Component> |
||||||
|
<Component class="javax.swing.JComboBox" name="jComboBox1"> |
||||||
|
<Properties> |
||||||
|
<Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor"> |
||||||
|
<StringArray count="2"> |
||||||
|
<StringItem index="0" value="Scene"/> |
||||||
|
<StringItem index="1" value="Objects"/> |
||||||
|
</StringArray> |
||||||
|
</Property> |
||||||
|
</Properties> |
||||||
|
<Events> |
||||||
|
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jComboBox1ActionPerformed"/> |
||||||
|
</Events> |
||||||
|
</Component> |
||||||
|
<Component class="javax.swing.JLabel" name="jLabel2"> |
||||||
|
<Properties> |
||||||
|
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> |
||||||
|
<Font name="Tahoma" size="14" style="1"/> |
||||||
|
</Property> |
||||||
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> |
||||||
|
<ResourceString bundle="com/jme3/gde/core/filters/impl/bloom/Bundle.properties" key="BloomVisualPanel1.jLabel2.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> |
||||||
|
</Property> |
||||||
|
</Properties> |
||||||
|
</Component> |
||||||
|
<Component class="javax.swing.JLabel" name="jLabel3"> |
||||||
|
<Properties> |
||||||
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> |
||||||
|
<ResourceString bundle="com/jme3/gde/core/filters/impl/bloom/Bundle.properties" key="BloomVisualPanel1.jLabel3.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> |
||||||
|
</Property> |
||||||
|
</Properties> |
||||||
|
</Component> |
||||||
|
</SubComponents> |
||||||
|
</Form> |
@ -0,0 +1,114 @@ |
|||||||
|
|
||||||
|
package com.jme3.gde.core.filters.impl.bloom; |
||||||
|
|
||||||
|
import javax.swing.JComboBox; |
||||||
|
import javax.swing.JPanel; |
||||||
|
|
||||||
|
public final class BloomVisualPanel1 extends JPanel { |
||||||
|
|
||||||
|
/** |
||||||
|
* Creates new form BloomVisualPanel1 |
||||||
|
*/ |
||||||
|
public BloomVisualPanel1() { |
||||||
|
initComponents(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getName() { |
||||||
|
return "Bloom setting..."; |
||||||
|
} |
||||||
|
|
||||||
|
public JComboBox getBloomModeCombo() { |
||||||
|
return jComboBox1; |
||||||
|
} |
||||||
|
|
||||||
|
/** 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() { |
||||||
|
|
||||||
|
jFrame1 = new javax.swing.JFrame(); |
||||||
|
buttonGroup1 = new javax.swing.ButtonGroup(); |
||||||
|
buttonGroup2 = new javax.swing.ButtonGroup(); |
||||||
|
jLabel1 = new javax.swing.JLabel(); |
||||||
|
jComboBox1 = new javax.swing.JComboBox(); |
||||||
|
jLabel2 = new javax.swing.JLabel(); |
||||||
|
jLabel3 = new javax.swing.JLabel(); |
||||||
|
|
||||||
|
javax.swing.GroupLayout jFrame1Layout = new javax.swing.GroupLayout(jFrame1.getContentPane()); |
||||||
|
jFrame1.getContentPane().setLayout(jFrame1Layout); |
||||||
|
jFrame1Layout.setHorizontalGroup( |
||||||
|
jFrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
||||||
|
.addGap(0, 400, Short.MAX_VALUE) |
||||||
|
); |
||||||
|
jFrame1Layout.setVerticalGroup( |
||||||
|
jFrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
||||||
|
.addGap(0, 300, Short.MAX_VALUE) |
||||||
|
); |
||||||
|
|
||||||
|
org.openide.awt.Mnemonics.setLocalizedText(jLabel1, org.openide.util.NbBundle.getMessage(BloomVisualPanel1.class, "BloomVisualPanel1.jLabel1.text")); // NOI18N
|
||||||
|
|
||||||
|
jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Scene", "Objects" })); |
||||||
|
jComboBox1.addActionListener(new java.awt.event.ActionListener() { |
||||||
|
public void actionPerformed(java.awt.event.ActionEvent evt) { |
||||||
|
jComboBox1ActionPerformed(evt); |
||||||
|
} |
||||||
|
}); |
||||||
|
|
||||||
|
jLabel2.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
|
||||||
|
org.openide.awt.Mnemonics.setLocalizedText(jLabel2, org.openide.util.NbBundle.getMessage(BloomVisualPanel1.class, "BloomVisualPanel1.jLabel2.text")); // NOI18N
|
||||||
|
|
||||||
|
org.openide.awt.Mnemonics.setLocalizedText(jLabel3, org.openide.util.NbBundle.getMessage(BloomVisualPanel1.class, "BloomVisualPanel1.jLabel3.text")); // NOI18N
|
||||||
|
|
||||||
|
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); |
||||||
|
this.setLayout(layout); |
||||||
|
layout.setHorizontalGroup( |
||||||
|
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
||||||
|
.addGroup(layout.createSequentialGroup() |
||||||
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
||||||
|
.addGroup(layout.createSequentialGroup() |
||||||
|
.addGap(107, 107, 107) |
||||||
|
.addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) |
||||||
|
.addGroup(layout.createSequentialGroup() |
||||||
|
.addContainerGap() |
||||||
|
.addComponent(jLabel2))) |
||||||
|
.addContainerGap(316, Short.MAX_VALUE)) |
||||||
|
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() |
||||||
|
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) |
||||||
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
||||||
|
.addComponent(jLabel3) |
||||||
|
.addComponent(jLabel1)) |
||||||
|
.addContainerGap()) |
||||||
|
); |
||||||
|
layout.setVerticalGroup( |
||||||
|
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
||||||
|
.addGroup(layout.createSequentialGroup() |
||||||
|
.addGap(6, 6, 6) |
||||||
|
.addComponent(jLabel2) |
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) |
||||||
|
.addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) |
||||||
|
.addGap(18, 18, 18) |
||||||
|
.addComponent(jLabel1) |
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) |
||||||
|
.addComponent(jLabel3) |
||||||
|
.addContainerGap(113, Short.MAX_VALUE)) |
||||||
|
); |
||||||
|
}// </editor-fold>//GEN-END:initComponents
|
||||||
|
|
||||||
|
private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jComboBox1ActionPerformed
|
||||||
|
// TODO add your handling code here:
|
||||||
|
}//GEN-LAST:event_jComboBox1ActionPerformed
|
||||||
|
|
||||||
|
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||||
|
private javax.swing.ButtonGroup buttonGroup1; |
||||||
|
private javax.swing.ButtonGroup buttonGroup2; |
||||||
|
private javax.swing.JComboBox jComboBox1; |
||||||
|
private javax.swing.JFrame jFrame1; |
||||||
|
private javax.swing.JLabel jLabel1; |
||||||
|
private javax.swing.JLabel jLabel2; |
||||||
|
private javax.swing.JLabel jLabel3; |
||||||
|
// End of variables declaration//GEN-END:variables
|
||||||
|
} |
@ -0,0 +1,71 @@ |
|||||||
|
|
||||||
|
package com.jme3.gde.core.filters.impl.bloom; |
||||||
|
|
||||||
|
import java.awt.Component; |
||||||
|
import java.awt.Dialog; |
||||||
|
import java.awt.event.ActionEvent; |
||||||
|
import java.awt.event.ActionListener; |
||||||
|
import java.text.MessageFormat; |
||||||
|
import javax.swing.JComponent; |
||||||
|
import org.openide.DialogDisplayer; |
||||||
|
import org.openide.WizardDescriptor; |
||||||
|
|
||||||
|
// An example action demonstrating how the wizard could be called from within
|
||||||
|
// your code. You can move the code below wherever you need, or register an action:
|
||||||
|
// @ActionID(category="...", id="com.jme3.gde.core.filters.impl.bloom.BloomWizardAction")
|
||||||
|
// @ActionRegistration(displayName="Open Bloom Wizard")
|
||||||
|
// @ActionReference(path="Menu/Tools", position=...)
|
||||||
|
public final class BloomWizardAction implements ActionListener { |
||||||
|
|
||||||
|
private WizardDescriptor.Panel[] panels; |
||||||
|
|
||||||
|
public @Override |
||||||
|
void actionPerformed(ActionEvent e) { |
||||||
|
WizardDescriptor wizardDescriptor = new WizardDescriptor(getPanels()); |
||||||
|
// {0} will be replaced by WizardDesriptor.Panel.getComponent().getName()
|
||||||
|
wizardDescriptor.setTitleFormat(new MessageFormat("{0}")); |
||||||
|
wizardDescriptor.setTitle("Your wizard dialog title here"); |
||||||
|
Dialog dialog = DialogDisplayer.getDefault().createDialog(wizardDescriptor); |
||||||
|
dialog.setVisible(true); |
||||||
|
dialog.toFront(); |
||||||
|
boolean cancelled = wizardDescriptor.getValue() != WizardDescriptor.FINISH_OPTION; |
||||||
|
if (!cancelled) { |
||||||
|
// do something
|
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Initialize panels representing individual wizard's steps and sets |
||||||
|
* various properties for them influencing wizard appearance. |
||||||
|
*/ |
||||||
|
private WizardDescriptor.Panel[] getPanels() { |
||||||
|
if (panels == null) { |
||||||
|
panels = new WizardDescriptor.Panel[]{ |
||||||
|
new BloomWizardPanel1() |
||||||
|
}; |
||||||
|
String[] steps = new String[panels.length]; |
||||||
|
for (int i = 0; i < panels.length; i++) { |
||||||
|
Component c = panels[i].getComponent(); |
||||||
|
// Default step name to component name of panel. Mainly useful
|
||||||
|
// for getting the name of the target chooser to appear in the
|
||||||
|
// list of steps.
|
||||||
|
steps[i] = c.getName(); |
||||||
|
if (c instanceof JComponent) { // assume Swing components
|
||||||
|
JComponent jc = (JComponent) c; |
||||||
|
// Sets step number of a component
|
||||||
|
// TODO if using org.openide.dialogs >= 7.8, can use WizardDescriptor.PROP_*:
|
||||||
|
jc.putClientProperty("WizardPanel_contentSelectedIndex", new Integer(i)); |
||||||
|
// Sets steps names for a panel
|
||||||
|
jc.putClientProperty("WizardPanel_contentData", steps); |
||||||
|
// Turn on subtitle creation on each step
|
||||||
|
jc.putClientProperty("WizardPanel_autoWizardStyle", Boolean.TRUE); |
||||||
|
// Show steps on the left side with the image on the background
|
||||||
|
jc.putClientProperty("WizardPanel_contentDisplayed", Boolean.TRUE); |
||||||
|
// Turn on numbering of all steps
|
||||||
|
jc.putClientProperty("WizardPanel_contentNumbered", Boolean.TRUE); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return panels; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,87 @@ |
|||||||
|
|
||||||
|
package com.jme3.gde.core.filters.impl.bloom; |
||||||
|
|
||||||
|
import java.awt.Component; |
||||||
|
import javax.swing.event.ChangeListener; |
||||||
|
import org.openide.WizardDescriptor; |
||||||
|
import org.openide.util.HelpCtx; |
||||||
|
|
||||||
|
public class BloomWizardPanel1 implements WizardDescriptor.Panel { |
||||||
|
|
||||||
|
/** |
||||||
|
* The visual component that displays this panel. If you need to access the |
||||||
|
* component from this class, just use getComponent(). |
||||||
|
*/ |
||||||
|
private Component component; |
||||||
|
|
||||||
|
// Get the visual component for the panel. In this template, the component
|
||||||
|
// is kept separate. This can be more efficient: if the wizard is created
|
||||||
|
// but never displayed, or not all panels are displayed, it is better to
|
||||||
|
// create only those which really need to be visible.
|
||||||
|
public Component getComponent() { |
||||||
|
if (component == null) { |
||||||
|
component = new BloomVisualPanel1(); |
||||||
|
} |
||||||
|
return component; |
||||||
|
} |
||||||
|
|
||||||
|
public HelpCtx getHelp() { |
||||||
|
// Show no Help button for this panel:
|
||||||
|
return HelpCtx.DEFAULT_HELP; |
||||||
|
// If you have context help:
|
||||||
|
// return new HelpCtx(SampleWizardPanel1.class);
|
||||||
|
} |
||||||
|
|
||||||
|
public boolean isValid() { |
||||||
|
// If it is always OK to press Next or Finish, then:
|
||||||
|
return true; |
||||||
|
// If it depends on some condition (form filled out...), then:
|
||||||
|
// return someCondition();
|
||||||
|
// and when this condition changes (last form field filled in...) then:
|
||||||
|
// fireChangeEvent();
|
||||||
|
// and uncomment the complicated stuff below.
|
||||||
|
} |
||||||
|
|
||||||
|
public final void addChangeListener(ChangeListener l) { |
||||||
|
} |
||||||
|
|
||||||
|
public final void removeChangeListener(ChangeListener l) { |
||||||
|
} |
||||||
|
/* |
||||||
|
private final Set<ChangeListener> listeners = new HashSet<ChangeListener>(1); // or can use ChangeSupport in NB 6.0
|
||||||
|
public final void addChangeListener(ChangeListener l) { |
||||||
|
synchronized (listeners) { |
||||||
|
listeners.add(l); |
||||||
|
} |
||||||
|
} |
||||||
|
public final void removeChangeListener(ChangeListener l) { |
||||||
|
synchronized (listeners) { |
||||||
|
listeners.remove(l); |
||||||
|
} |
||||||
|
} |
||||||
|
protected final void fireChangeEvent() { |
||||||
|
Iterator<ChangeListener> it; |
||||||
|
synchronized (listeners) { |
||||||
|
it = new HashSet<ChangeListener>(listeners).iterator(); |
||||||
|
} |
||||||
|
ChangeEvent ev = new ChangeEvent(this); |
||||||
|
while (it.hasNext()) { |
||||||
|
it.next().stateChanged(ev); |
||||||
|
} |
||||||
|
} |
||||||
|
*/ |
||||||
|
|
||||||
|
// You can use a settings object to keep track of state. Normally the
|
||||||
|
// settings object will be the WizardDescriptor, so you can use
|
||||||
|
// WizardDescriptor.getProperty & putProperty to store information entered
|
||||||
|
// by the user.
|
||||||
|
public void readSettings(Object settings) { |
||||||
|
} |
||||||
|
|
||||||
|
public void storeSettings(Object settings) { |
||||||
|
WizardDescriptor wiz = (WizardDescriptor) settings; |
||||||
|
BloomVisualPanel1 comp = (BloomVisualPanel1) getComponent(); |
||||||
|
String mode=comp.getBloomModeCombo().getSelectedItem().toString(); |
||||||
|
wiz.putProperty("mode", mode ); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,4 @@ |
|||||||
|
Error reading included file Templates/Other/../Licenses/license-jme.txt |
||||||
|
BloomVisualPanel1.jLabel1.text=Scene : extract bright areas of the rendered scene and make them glow |
||||||
|
BloomVisualPanel1.jLabel2.text=Bloom mode |
||||||
|
BloomVisualPanel1.jLabel3.text=Objects : use Glow_Map or Glow_Color of scene's geometries' material to use for the glow source |
Loading…
Reference in new issue