📄 rampentryeditdialog.java
字号:
/*
* Copyright (c) 2003-2009 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package com.jmex.editors.swing.particles;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JColorChooser;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
import javax.swing.border.TitledBorder;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import com.jme.renderer.ColorRGBA;
import com.jmex.editors.swing.widget.ValuePanel;
import com.jmex.editors.swing.widget.ValueSpinner;
import com.jmex.effects.particles.RampEntry;
public class RampEntryEditDialog extends JDialog {
private static final long serialVersionUID = 1L;
private JColorChooser colorChooser = new JColorChooser();
private JDialog colorChooserDialog = new JDialog((JFrame)null, "Choose a color:");
private ValueSpinner alphaSpinner = new ValueSpinner(0, 255, 1);
private JLabel colorHex = new JLabel();
private JPanel sColorPanel = new JPanel();
public RampEntryEditDialog(final RampEntry entry) {
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
setLayout(new GridBagLayout());
if (entry.getOffset() != -1) {
final ValuePanel offsetPanel = new ValuePanel("Offset: ", "%", 1, 100, 1);
offsetPanel.setValue((int)(entry.getOffset()*100));
offsetPanel.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
entry.setOffset(offsetPanel.getIntValue()/100f);
}
});
JPanel off = new JPanel(new GridBagLayout());
off.setBorder(createTitledBorder("OFFSET"));
off.add(offsetPanel, new GridBagConstraints(0, 0, 1, 1, 1.0,
0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
new Insets(0, 0, 0, 0), 0, 0));
add(off, new GridBagConstraints(1, 0, 1, 1, 1.0, 0.0,
GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
new Insets(10, 5, 5, 5), 0, 0));
}
final ValuePanel sizePanel = new ValuePanel("Size: ", "", 0f, Float.MAX_VALUE, 1f);
sizePanel.setValue(0f);
sizePanel.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
entry.setSize(sizePanel.getFloatValue());
}
});
if (entry.getOffset() != -1) {
final JCheckBox sizeCheck = new JCheckBox("");
sizeCheck.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
sizePanel.setEnabled(sizeCheck.isSelected());
entry.setSize(sizeCheck.isSelected() ? sizePanel.getFloatValue() : RampEntry.DEFAULT_SIZE);
}
});
if (entry.hasSizeSet()) {
sizeCheck.setSelected(true);
} else {
sizeCheck.doClick();
sizeCheck.doClick();
}
add(sizeCheck, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0,
GridBagConstraints.NORTHEAST, GridBagConstraints.NONE,
new Insets(10, 5, 5, 5), 0, 0));
}
if (entry.hasSizeSet()) {
sizePanel.setValue(entry.getSize());
}
JPanel size = new JPanel(new GridBagLayout());
size.setBorder(createTitledBorder("PARTICLE SIZE"));
size.add(sizePanel, new GridBagConstraints(0, 0, 1, 1, 1.0,
0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
new Insets(0, 0, 0, 0), 0, 0));
add(size, new GridBagConstraints(1, 1, 1, 1, 1.0, 0.0,
GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
new Insets(10, 5, 5, 5), 0, 0));
final ValuePanel spinPanel = new ValuePanel("Spin: ", "", -Float.MAX_VALUE, Float.MAX_VALUE, 0.01f);
spinPanel.setValue(0f);
spinPanel.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
entry.setSpin(spinPanel.getFloatValue());
}
});
if (entry.getOffset() != -1) {
final JCheckBox spinCheck = new JCheckBox("");
spinCheck.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
spinPanel.setEnabled(spinCheck.isSelected());
entry.setSpin(spinCheck.isSelected() ? spinPanel.getFloatValue() : RampEntry.DEFAULT_SPIN);
}
});
if (entry.hasSpinSet()) {
spinCheck.setSelected(true);
} else {
spinCheck.doClick();
spinCheck.doClick();
}
add(spinCheck, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0,
GridBagConstraints.NORTHEAST, GridBagConstraints.NONE,
new Insets(10, 5, 5, 5), 0, 0));
}
if (entry.hasSpinSet()) {
spinPanel.setValue(entry.getSpin());
}
JPanel spin = new JPanel(new GridBagLayout());
spin.setBorder(createTitledBorder("PARTICLE SPIN"));
spin.add(spinPanel, new GridBagConstraints(0, 0, 1, 1, 1.0,
0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
new Insets(0, 0, 0, 0), 0, 0));
add(spin, new GridBagConstraints(1, 2, 1, 1, 1.0, 0.0,
GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
new Insets(10, 5, 5, 5), 0, 0));
final ValuePanel massPanel = new ValuePanel("Mass: ", "", -Float.MAX_VALUE, Float.MAX_VALUE, 0.01f);
massPanel.setValue(0f);
massPanel.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
entry.setMass(massPanel.getFloatValue());
}
});
if (entry.getOffset() != -1) {
final JCheckBox massCheck = new JCheckBox("");
massCheck.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
massPanel.setEnabled(massCheck.isSelected());
entry.setMass(massCheck.isSelected() ? massPanel.getFloatValue() : RampEntry.DEFAULT_MASS);
}
});
if (entry.hasMassSet()) {
massCheck.setSelected(true);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -