Package com.badlogic.gdx.tools.flame

Source Code of com.badlogic.gdx.tools.flame.ScaledNumericPanel

/*******************************************************************************
* 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.flame;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

import com.badlogic.gdx.graphics.g3d.particles.values.ScaledNumericValue;
import com.badlogic.gdx.tools.particleeditor.Chart;

/** @author Inferno */
class ScaledNumericPanel extends ParticleValuePanel<ScaledNumericValue> {
  Slider lowMinSlider, lowMaxSlider;
  Slider highMinSlider, highMaxSlider;
  JCheckBox relativeCheckBox;
  Chart chart;
  JPanel formPanel;
  JButton expandButton;
  JButton lowRangeButton;
  JButton highRangeButton;

  public ScaledNumericPanel (FlameMain editor, ScaledNumericValue value, String chartTitle, String name, String description){
    this(editor, value, chartTitle, name, description, true);
  }
 
  public ScaledNumericPanel (FlameMain editor, ScaledNumericValue value,
                        String chartTitle, String name, String description, boolean isAlwaysActive){
    super(editor, name, description, isAlwaysActive);
    initializeComponents(chartTitle);
    setValue(value);
  }

  public JPanel getFormPanel () {
    return formPanel;
  }

  private void initializeComponents (String chartTitle) {
    JPanel contentPanel = getContentPanel();
    {
      formPanel = new JPanel(new GridBagLayout());
      contentPanel.add(formPanel, new GridBagConstraints(5, 5, 1, 1, 0, 0, GridBagConstraints.EAST, GridBagConstraints.NONE,
        new Insets(0, 0, 0, 6), 0, 0));
      {
        JLabel label = new JLabel("High:");
        formPanel.add(label, new GridBagConstraints(2, 1, 1, 1, 0, 0, GridBagConstraints.EAST, GridBagConstraints.NONE,
          new Insets(0, 0, 0, 6), 0, 0));
      }
      {
        highMinSlider = new Slider(0, -999999, 999999, 1f);
        formPanel.add(highMinSlider, new GridBagConstraints(3, 1, 1, 1, 0, 0, GridBagConstraints.WEST,
          GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
      }
      {
        highMaxSlider = new Slider(0, -999999, 999999, 1f);
        formPanel.add(highMaxSlider, new GridBagConstraints(4, 1, 1, 1, 0, 0, GridBagConstraints.WEST,
          GridBagConstraints.NONE, new Insets(0, 6, 0, 0), 0, 0));
      }
      {
        highRangeButton = new JButton("<");
        highRangeButton.setBorder(BorderFactory.createEmptyBorder(6, 6, 6, 6));
        formPanel.add(highRangeButton, new GridBagConstraints(5, 1, 1, 1, 0.0, 0, GridBagConstraints.WEST,
          GridBagConstraints.NONE, new Insets(0, 1, 0, 0), 0, 0));
      }
      {
        JLabel label = new JLabel("Low:");
        formPanel.add(label, new GridBagConstraints(2, 2, 1, 1, 0, 0, GridBagConstraints.EAST, GridBagConstraints.NONE,
          new Insets(0, 0, 0, 6), 0, 0));
      }
      {
        lowMinSlider = new Slider(0, -999999, 999999, 1f);
        formPanel.add(lowMinSlider, new GridBagConstraints(3, 2, 1, 1, 0, 0, GridBagConstraints.WEST,
          GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
      }
      {
        lowMaxSlider = new Slider(0, -999999, 999999, 1f);
        formPanel.add(lowMaxSlider, new GridBagConstraints(4, 2, 1, 1, 0, 0, GridBagConstraints.WEST,
          GridBagConstraints.NONE, new Insets(0, 6, 0, 0), 0, 0));
      }
      {
        lowRangeButton = new JButton("<");
        lowRangeButton.setBorder(BorderFactory.createEmptyBorder(6, 6, 6, 6));
        formPanel.add(lowRangeButton, new GridBagConstraints(5, 2, 1, 1, 0.0, 0, GridBagConstraints.WEST,
          GridBagConstraints.NONE, new Insets(0, 1, 0, 0), 0, 0));
      }
    }
    {
      chart = new Chart(chartTitle) {
        public void pointsChanged () {
          value.setTimeline(chart.getValuesX());
          value.setScaling(chart.getValuesY());
        }
      };
      contentPanel.add(chart, new GridBagConstraints(6, 5, 1, 1, 0, 0, GridBagConstraints.CENTER, GridBagConstraints.BOTH,
        new Insets(0, 0, 0, 0), 0, 0));
      chart.setPreferredSize(new Dimension(150, 30));
    }
    {
      expandButton = new JButton("+");
      contentPanel.add(expandButton, new GridBagConstraints(7, 5, 1, 1, 1, 0, GridBagConstraints.SOUTHWEST,
        GridBagConstraints.NONE, new Insets(0, 5, 0, 0), 0, 0));
      expandButton.setBorder(BorderFactory.createEmptyBorder(4, 8, 4, 8));
    }
    {
      relativeCheckBox = new JCheckBox("Relative");
      contentPanel.add(relativeCheckBox, new GridBagConstraints(7, 5, 1, 1, 0, 0, GridBagConstraints.NORTHWEST,
        GridBagConstraints.NONE, new Insets(0, 6, 0, 0), 0, 0));
    }
   
    lowMinSlider.addChangeListener(new ChangeListener() {
      public void stateChanged (ChangeEvent event) {
        ScaledNumericPanel.this.value.setLowMin(lowMinSlider.getValue());
        if (!lowMaxSlider.isVisible()) ScaledNumericPanel.this.value.setLowMax(lowMinSlider.getValue());
      }
    });
    lowMaxSlider.addChangeListener(new ChangeListener() {
      public void stateChanged (ChangeEvent event) {
        ScaledNumericPanel.this.value.setLowMax(lowMaxSlider.getValue());
      }
    });
    highMinSlider.addChangeListener(new ChangeListener() {
      public void stateChanged (ChangeEvent event) {
        ScaledNumericPanel.this.value.setHighMin(highMinSlider.getValue());
        if (!highMaxSlider.isVisible()) ScaledNumericPanel.this.value.setHighMax(highMinSlider.getValue());
      }
    });
    highMaxSlider.addChangeListener(new ChangeListener() {
      public void stateChanged (ChangeEvent event) {
        ScaledNumericPanel.this.value.setHighMax(highMaxSlider.getValue());
      }
    });

    relativeCheckBox.addActionListener(new ActionListener() {
      public void actionPerformed (ActionEvent event) {
        ScaledNumericPanel.this.value.setRelative(relativeCheckBox.isSelected());
      }
    });

    lowRangeButton.addActionListener(new ActionListener() {
      public void actionPerformed (ActionEvent event) {
        boolean visible = !lowMaxSlider.isVisible();
        lowMaxSlider.setVisible(visible);
        lowRangeButton.setText(visible ? "<" : ">");
        GridBagLayout layout = (GridBagLayout)formPanel.getLayout();
        GridBagConstraints constraints = layout.getConstraints(lowRangeButton);
        constraints.gridx = visible ? 5 : 4;
        layout.setConstraints(lowRangeButton, constraints);
        Slider slider = visible ? lowMaxSlider : lowMinSlider;
        ScaledNumericPanel.this.value.setLowMax(slider.getValue());
      }
    });

    highRangeButton.addActionListener(new ActionListener() {
      public void actionPerformed (ActionEvent event) {
        boolean visible = !highMaxSlider.isVisible();
        highMaxSlider.setVisible(visible);
        highRangeButton.setText(visible ? "<" : ">");
        GridBagLayout layout = (GridBagLayout)formPanel.getLayout();
        GridBagConstraints constraints = layout.getConstraints(highRangeButton);
        constraints.gridx = visible ? 5 : 4;
        layout.setConstraints(highRangeButton, constraints);
        Slider slider = visible ? highMaxSlider : highMinSlider;
        ScaledNumericPanel.this.value.setHighMax(slider.getValue());
      }
    });

    expandButton.addActionListener(new ActionListener() {
      public void actionPerformed (ActionEvent event) {
        chart.setExpanded(!chart.isExpanded());
        boolean expanded = chart.isExpanded();
        GridBagLayout layout = (GridBagLayout)getContentPanel().getLayout();
        GridBagConstraints chartConstraints = layout.getConstraints(chart);
        GridBagConstraints expandButtonConstraints = layout.getConstraints(expandButton);
        if (expanded) {
          chart.setPreferredSize(new Dimension(150, 200));
          expandButton.setText("-");
          chartConstraints.weightx = 1;
          expandButtonConstraints.weightx = 0;
        } else {
          chart.setPreferredSize(new Dimension(150, 30));
          expandButton.setText("+");
          chartConstraints.weightx = 0;
          expandButtonConstraints.weightx = 1;
        }
        layout.setConstraints(chart, chartConstraints);
        layout.setConstraints(expandButton, expandButtonConstraints);
        relativeCheckBox.setVisible(!expanded);
        formPanel.setVisible(!expanded);
        chart.revalidate();
      }
    });
   
  }
 
  @Override
  public void setValue(ScaledNumericValue value){
    super.setValue(value);
    if(this.value == null)return;
    setValue(lowMinSlider, this.value.getLowMin());
    setValue(lowMaxSlider, this.value.getLowMax());
    setValue(highMinSlider, this.value.getHighMin());
    setValue(highMaxSlider, this.value.getHighMax());
    chart.setValues(this.value.getTimeline(), this.value.getScaling());
    setValue(relativeCheckBox, this.value.isRelative());
   
    if (  (this.value.getLowMin() == this.value.getLowMax() && lowMaxSlider.isVisible()) ||
        (this.value.getLowMin() != this.value.getLowMax() && !lowMaxSlider.isVisible()) ) {
      lowRangeButton.doClick(0);
    }
    if (   ((this.value.getHighMin() == this.value.getHighMax()) && highMaxSlider.isVisible()) ||
        ((this.value.getHighMin() != this.value.getHighMax()) && !highMaxSlider.isVisible()) )
      highRangeButton.doClick(0);
  }

  public Chart getChart(){
    return chart;
  }

}
TOP

Related Classes of com.badlogic.gdx.tools.flame.ScaledNumericPanel

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.