• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*******************************************************************************
2  * Copyright 2011 See AUTHORS file.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *   http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  ******************************************************************************/
16 
17 package com.badlogic.gdx.tools.flame;
18 import java.awt.GridBagConstraints;
19 import java.awt.Insets;
20 import java.awt.event.ActionEvent;
21 import java.awt.event.ActionListener;
22 
23 import javax.swing.BorderFactory;
24 import javax.swing.JButton;
25 import javax.swing.JLabel;
26 import javax.swing.JPanel;
27 import javax.swing.event.ChangeEvent;
28 import javax.swing.event.ChangeListener;
29 
30 import com.badlogic.gdx.graphics.g3d.particles.values.RangedNumericValue;
31 
32 /** @author Inferno */
33 class RangedNumericPanel extends ParticleValuePanel<RangedNumericValue> {
34 	Slider minSlider, maxSlider;
35 	JButton rangeButton;
36 	JLabel label;
37 
RangedNumericPanel(FlameMain editor, RangedNumericValue value, String name, String description)38 	public RangedNumericPanel (FlameMain editor, RangedNumericValue value, String name, String description)
39 	{
40 		this(editor, value, name, description, true);
41 	}
42 
RangedNumericPanel(FlameMain editor, RangedNumericValue value, String name, String description, boolean isAlwaysActive)43 	public RangedNumericPanel (FlameMain editor, RangedNumericValue value, String name, String description, boolean isAlwaysActive)
44 	{
45 		super(editor, name, description, isAlwaysActive);
46 		setValue(value);
47 	}
48 
49 	@Override
initializeComponents()50 	protected void initializeComponents () {
51 		super.initializeComponents();
52 		JPanel contentPanel = getContentPanel();
53 		{
54 			label = new JLabel("Value:");
55 			contentPanel.add(label, new GridBagConstraints(2, 2, 1, 1, 0, 0, GridBagConstraints.EAST, GridBagConstraints.NONE,
56 				new Insets(0, 0, 0, 6), 0, 0));
57 		}
58 		{
59 			minSlider = new Slider(0, -99999, 99999, 1);
60 			contentPanel.add(minSlider, new GridBagConstraints(3, 2, 1, 1, 0, 0, GridBagConstraints.WEST, GridBagConstraints.NONE,
61 				new Insets(0, 0, 0, 0), 0, 0));
62 		}
63 		{
64 			maxSlider = new Slider(0, -99999, 99999, 1);
65 			contentPanel.add(maxSlider, new GridBagConstraints(4, 2, 1, 1, 0, 0, GridBagConstraints.WEST, GridBagConstraints.NONE,
66 				new Insets(0, 6, 0, 0), 0, 0));
67 		}
68 		{
69 			rangeButton = new JButton("<");
70 			rangeButton.setBorder(BorderFactory.createEmptyBorder(6, 6, 6, 6));
71 			contentPanel.add(rangeButton, new GridBagConstraints(5, 2, 1, 1, 1.0, 0, GridBagConstraints.WEST,
72 				GridBagConstraints.NONE, new Insets(0, 1, 0, 0), 0, 0));
73 		}
74 
75 
76 		minSlider.addChangeListener(new ChangeListener() {
77 			public void stateChanged (ChangeEvent event) {
78 				RangedNumericPanel.this.value.setLowMin((Float)minSlider.getValue());
79 				if (!maxSlider.isVisible()) RangedNumericPanel.this.value.setLowMax((Float)minSlider.getValue());
80 			}
81 		});
82 
83 		maxSlider.addChangeListener(new ChangeListener() {
84 			public void stateChanged (ChangeEvent event) {
85 				RangedNumericPanel.this.value.setLowMax((Float)maxSlider.getValue());
86 			}
87 		});
88 
89 		rangeButton.addActionListener(new ActionListener() {
90 			public void actionPerformed (ActionEvent event) {
91 				boolean visible = !maxSlider.isVisible();
92 				maxSlider.setVisible(visible);
93 				rangeButton.setText(visible ? "<" : ">");
94 				Slider slider = visible ? maxSlider : minSlider;
95 				RangedNumericPanel.this.value.setLowMax((Float)slider.getValue());
96 			}
97 		});
98 	}
99 
setValue(RangedNumericValue value)100 	public void setValue (RangedNumericValue value) {
101 		super.setValue(value);
102 		if(value == null) return;
103 		setValue(minSlider, value.getLowMin());
104 		setValue(maxSlider, value.getLowMax());
105 		//System.out.println("min "+value.getLowMin()+", max "+value.getLowMax());
106 		if (minSlider.getValue() == maxSlider.getValue())
107 			rangeButton.doClick(0);
108 		else if(!maxSlider.isVisible())
109 				maxSlider.setVisible(true);
110 	}
111 }
112