diff options
Diffstat (limited to 'altosuilib/AltosUIEnable.java')
| -rw-r--r-- | altosuilib/AltosUIEnable.java | 145 | 
1 files changed, 143 insertions, 2 deletions
diff --git a/altosuilib/AltosUIEnable.java b/altosuilib/AltosUIEnable.java index 0c23fa8d..851e831f 100644 --- a/altosuilib/AltosUIEnable.java +++ b/altosuilib/AltosUIEnable.java @@ -21,6 +21,7 @@ package org.altusmetrum.altosuilib_12;  import java.awt.*;  import java.awt.event.*;  import javax.swing.*; +import javax.swing.event.*;  import java.io.*;  import java.util.concurrent.*;  import java.util.*; @@ -36,12 +37,21 @@ import org.jfree.chart.labels.*;  import org.jfree.data.xy.*;  import org.jfree.data.*; -public class AltosUIEnable extends Container { +public class AltosUIEnable extends Container implements ChangeListener {  	Insets		il, ir;  	int		y;  	int		x;  	JCheckBox	imperial_units; +	JCheckBox	show_shapes; +	JLabel		line_width_label; +	JSpinner	line_width; +	JLabel		speed_filter_label; +	JSlider		speed_filter; +	JLabel		accel_filter_label; +	JSlider		accel_filter; +	AltosFilterListener	filter_listener; +	AltosShapeListener	shape_listener;  	static final int max_rows = 14; @@ -69,11 +79,15 @@ public class AltosUIEnable extends Container {  		}  	} +	LinkedList<GraphElement> elements = new LinkedList<GraphElement>(); +  	public void add(String name, AltosUIGrapher grapher, boolean enabled) {  		GraphElement	e = new GraphElement(name, grapher, enabled);  		GridBagConstraints c = new GridBagConstraints(); +		elements.add(e); +  		/* Add element */  		c = new GridBagConstraints();  		c.gridx = x; c.gridy = y; @@ -90,6 +104,31 @@ public class AltosUIEnable extends Container {  		}  	} +	public void stateChanged(ChangeEvent e) { +		JSlider filter = (JSlider) e.getSource(); +		if (!filter.getValueIsAdjusting()) { +			double	speed_value = (int) speed_filter.getValue() / 1000.0; +			double	accel_value = (int) accel_filter.getValue() / 1000.0; +			if (filter_listener != null) { +				filter_listener.filter_changed(speed_value, accel_value); +			} +		} +	} + +	public void set_shapes_visible(boolean visible) { +		if (shape_listener != null) +			shape_listener.set_shapes_visible(visible); +	} + +	public void set_line_width(float width) { +		if (shape_listener != null) +			shape_listener.set_line_width(width); +	} + +	public void register_shape_listener(AltosShapeListener shape_listener) { +		this.shape_listener = shape_listener; +	} +  	public void add_units() {  		/* Imperial units setting */ @@ -109,9 +148,111 @@ public class AltosUIEnable extends Container {  		c.anchor = GridBagConstraints.LINE_START;  		c.insets = il;  		add(imperial_units, c); + +		show_shapes = new JCheckBox("Show Markers", false); +		show_shapes.addActionListener(new ActionListener() { +				public void actionPerformed(ActionEvent e) { +					JCheckBox item = (JCheckBox) e.getSource(); +					boolean enabled = item.isSelected(); +					set_shapes_visible(enabled); +				} +			}); +		show_shapes.setToolTipText("Show marker Use Imperial units instead of metric"); +		c = new GridBagConstraints(); +		c.gridx = 0; c.gridy = 1001; +		c.fill = GridBagConstraints.NONE; +		c.anchor = GridBagConstraints.LINE_START; +		c.insets = il; +		add(show_shapes, c); + + +		line_width_label = new JLabel("Line Width"); +		c = new GridBagConstraints(); +		c.gridx = 1; c.gridy = 1001; +		c.fill = GridBagConstraints.NONE; +		c.anchor = GridBagConstraints.LINE_START; +		c.insets = il; +		add(line_width_label, c); + +		line_width = new JSpinner(); +		line_width.setValue(new Integer(1)); +		line_width.addChangeListener(new ChangeListener() { +				public void stateChanged(ChangeEvent e) { +					int w = (Integer) line_width.getValue(); +					if (w < 1) { +						w = 1; +						line_width.setValue(new Integer(w)); +					} +					System.out.printf("line width set to %d\n", w); +					set_line_width(w); +				} +			}); +		c = new GridBagConstraints(); +		c.gridx = 2; c.gridy = 1001; +		c.fill = GridBagConstraints.NONE; +		c.anchor = GridBagConstraints.LINE_START; +		c.insets = il; +		add(line_width, c); + +		speed_filter_label = new JLabel("Speed Filter(ms)"); +		c = new GridBagConstraints(); +		c.gridx = 0; c.gridy = 1002; +		c.fill = GridBagConstraints.NONE; +		c.anchor = GridBagConstraints.LINE_START; +		c.insets = il; +		add(speed_filter_label, c); + +		speed_filter = new JSlider(JSlider.HORIZONTAL, 0, 10000, (int) (filter_listener.speed_filter() * 1000.0)); +		Hashtable<Integer,JLabel> label_table = new Hashtable<Integer,JLabel>(); +		for (int i = 0; i <= 10000; i += 5000) { +			label_table.put(new Integer(i), new JLabel(String.format("%d", i))); +		} +		speed_filter.setPaintTicks(true); +		speed_filter.setMajorTickSpacing(1000); +		speed_filter.setMinorTickSpacing(250); +		speed_filter.setLabelTable(label_table); +		speed_filter.setPaintTrack(false); +		speed_filter.setSnapToTicks(true); +		speed_filter.setPaintLabels(true); +		speed_filter.addChangeListener(this); + +		c = new GridBagConstraints(); +		c.gridx = 1; c.gridy = 1002; +		c.gridwidth = 1000; c.gridheight = 1; +		c.fill = GridBagConstraints.BOTH; +		c.anchor = GridBagConstraints.LINE_START; +		c.insets = il; +		add(speed_filter, c); + +		accel_filter_label = new JLabel("Acceleration Filter(ms)"); +		c = new GridBagConstraints(); +		c.gridx = 0; c.gridy = 1003; +		c.fill = GridBagConstraints.NONE; +		c.anchor = GridBagConstraints.LINE_START; +		c.insets = il; +		add(accel_filter_label, c); + +		accel_filter = new JSlider(JSlider.HORIZONTAL, 0, 10000, (int) (filter_listener.accel_filter() * 1000.0)); +		accel_filter.setPaintTicks(true); +		accel_filter.setMajorTickSpacing(1000); +		accel_filter.setMinorTickSpacing(250); +		accel_filter.setLabelTable(label_table); +		accel_filter.setPaintTrack(false); +		accel_filter.setSnapToTicks(true); +		accel_filter.setPaintLabels(true); +		accel_filter.addChangeListener(this); + +		c = new GridBagConstraints(); +		c.gridx = 1; c.gridy = 1003; +		c.gridwidth = 1000; c.gridheight = 1; +		c.fill = GridBagConstraints.BOTH; +		c.anchor = GridBagConstraints.LINE_START; +		c.insets = il; +		add(accel_filter, c);  	} -	public AltosUIEnable() { +	public AltosUIEnable(AltosFilterListener filter_listener) { +		this.filter_listener = filter_listener;  		il = new Insets(4,4,4,4);  		ir = new Insets(4,4,4,4);  		x = 0;  | 
