Package org.newdawn.slick.tools.peditor

Source Code of org.newdawn.slick.tools.peditor.SettingsPanel

package org.newdawn.slick.tools.peditor;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.event.CaretEvent;
import javax.swing.event.CaretListener;

import org.newdawn.slick.particles.ConfigurableEmitter;

/**
* A colletion of controls for the global settings of an emitter
*
* @author kevin
*/
public class SettingsPanel extends ControlPanel {
  /** A field for the symbolic name of the emitter */
  private JTextField name;
  /** A field to select the image to be used by the emitter */
  private JTextField imageName;
  /** The list of emitters to be notified when the name is updated */
  private EmitterList list;
  /** Choose used to select image files */
  private JFileChooser chooser = new JFileChooser(new File("."));
 
  /**
   * Create a new panel for global settings controls
   *
   * @param l The list to be notified when the name changes
   */
  public SettingsPanel(EmitterList l) {
    setLayout(null);
   
    this.list = l;
   
    JPanel namePanel = new DefaultPanel();
    namePanel.setBorder(BorderFactory.createTitledBorder("Emitter Name"));
    namePanel.setLayout(null);
    name = new JTextField();
    name.setBounds(10,20,260,25);
    namePanel.add(name);
    name.addCaretListener(new CaretListener() {
      public void caretUpdate(CaretEvent e) {
        if (emitter != null) {
          emitter.name = name.getText();
          list.update(emitter);
        }
      }
    });
   
    namePanel.setBounds(0,0,280,55);
    add(namePanel);
    yPos+=55;
   
    JPanel imagePanel = new DefaultPanel();
    imagePanel.setBorder(BorderFactory.createTitledBorder("Particle Image"));
    imagePanel.setLayout(null);
    imageName = new JTextField();
    imageName.setBounds(10,20,185,25);
    imagePanel.add(imageName);
    JButton browse = new JButton("Browse");
    browse.setBounds(200,20,70,25);
    browse.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        browseForImage();
      }
    });
   
    imagePanel.add(browse);
    imagePanel.setBounds(0,55,280,55);
    add(imagePanel);
    yPos+=45;
   
    addValue("gravity",new ValuePanel("Gravity",-200,200,0,"The gravity effect to apply",false));
    addValue("wind",new ValuePanel("Wind",-200,200,0,"The horizontal force effect to apply",false));
  }
 
  /**
   * Browse for a particle image and set the value into both the emitter and text field
   * on successful completion
   */
  private void browseForImage() {
    if (emitter != null) {
      int resp = chooser.showOpenDialog(this);
      if (resp == JFileChooser.APPROVE_OPTION) {
        File file = chooser.getSelectedFile();
        String path = file.getParentFile().getAbsolutePath();
        String name = file.getName();
       
        ConfigurableEmitter.setRelativePath(path);
        emitter.setImageName(name);
       
        imageName.setText(name);
      }
    }
  }
 
  /**
   * @see org.newdawn.slick.tools.peditor.ControlPanel#linkEmitterToFields(org.newdawn.slick.particles.ConfigurableEmitter)
   */
  protected void linkEmitterToFields(ConfigurableEmitter emitter) {
    name.setText(emitter.name);
    String value = emitter.getImageName();
    if (value != null) {
      value = value.substring(value.lastIndexOf(File.separatorChar)+1)
      imageName.setText(value);
    }
   
    link(emitter.gravityFactor, "gravity");
    link(emitter.windFactor, "wind");
  }

}
TOP

Related Classes of org.newdawn.slick.tools.peditor.SettingsPanel

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.