/*******************************************************************************
* Copyright 2011 See AUTHORS file.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
******************************************************************************/
package com.badlogic.gdx.tools.particleeditor;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import com.badlogic.gdx.graphics.g2d.ParticleEmitter.SpawnEllipseSide;
import com.badlogic.gdx.graphics.g2d.ParticleEmitter.SpawnShape;
import com.badlogic.gdx.graphics.g2d.ParticleEmitter.SpawnShapeValue;
class SpawnPanel extends EditorPanel {
public SpawnPanel (final ParticlePanel editor, final SpawnShapeValue spawnShapeValue, String name, String description) {
super(null, name, description);
edgesCheckbox.setSelected(spawnShapeValue.isEdges());
sideCombo.setSelectedItem(spawnShapeValue.getShape());
shapeCombo.addActionListener(new ActionListener() {
public void actionPerformed (ActionEvent event) {
SpawnShape shape = (SpawnShape)shapeCombo.getSelectedItem();
spawnShapeValue.setShape(shape);
editor.setVisible("Spawn Width", true);
editor.setVisible("Spawn Height", true);
editor.setVisible("Spawn Width", true);
editor.setVisible("Spawn Height", true);
editor.setVisible("Spawn Width", false);
editor.setVisible("Spawn Height", false);
edgesCheckbox.addActionListener(new ActionListener() {
public void actionPerformed (ActionEvent event) {
spawnShapeValue.setEdges(edgesCheckbox.isSelected());
sideCombo.addActionListener(new ActionListener() {
public void actionPerformed (ActionEvent event) {
SpawnEllipseSide side = (SpawnEllipseSide)sideCombo.getSelectedItem();
spawnShapeValue.setSide(side);
shapeCombo.setSelectedItem(spawnShapeValue.getShape());
public void update (ParticlePanel editor) {
shapeCombo.setSelectedItem(editor.getEmitter().getSpawnShape().getShape());
void setEdgesVisible (boolean visible) {
edgesCheckbox.setVisible(visible);
edgesLabel.setVisible(visible);
visible = visible && edgesCheckbox.isSelected();
sideCombo.setVisible(visible);
sideLabel.setVisible(visible);
private void initializeComponents () {
JPanel contentPanel = getContentPanel();
JLabel label = new JLabel("Shape:");
contentPanel.add(label, new GridBagConstraints(0, 1, 1, 1, 0, 0, GridBagConstraints.EAST, GridBagConstraints.NONE,
new Insets(0, 0, 0, 6), 0, 0));
shapeCombo = new JComboBox();
shapeCombo.setModel(new DefaultComboBoxModel(SpawnShape.values()));
contentPanel.add(shapeCombo, new GridBagConstraints(1, 1, 1, 1, 0, 0, GridBagConstraints.WEST, GridBagConstraints.NONE,
new Insets(0, 0, 0, 0), 0, 0));
edgesLabel = new JLabel("Edges:");
contentPanel.add(edgesLabel, new GridBagConstraints(2, 1, 1, 1, 0, 0, GridBagConstraints.EAST, GridBagConstraints.NONE,
new Insets(0, 12, 0, 6), 0, 0));
edgesCheckbox = new JCheckBox();
contentPanel.add(edgesCheckbox, new GridBagConstraints(3, 1, 1, 1, 0, 0, GridBagConstraints.WEST,
GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
sideLabel = new JLabel("Side:");
contentPanel.add(sideLabel, new GridBagConstraints(4, 1, 1, 1, 0, 0, GridBagConstraints.EAST, GridBagConstraints.NONE,
new Insets(0, 12, 0, 6), 0, 0));
sideCombo = new JComboBox();
sideCombo.setModel(new DefaultComboBoxModel(SpawnEllipseSide.values()));
contentPanel.add(sideCombo, new GridBagConstraints(5, 1, 1, 1, 0, 0, GridBagConstraints.WEST, GridBagConstraints.NONE,
new Insets(0, 0, 0, 0), 0, 0));
JPanel spacer = new JPanel();
spacer.setPreferredSize(new Dimension());
contentPanel.add(spacer, new GridBagConstraints(6, 0, 1, 1, 1, 0, GridBagConstraints.WEST, GridBagConstraints.NONE,
new Insets(0, 0, 0, 0), 0, 0));