[Bprocessor-commit] bprocessor/src/net/sourceforge/bprocessor/packages/skeleton SliderControl.java
Status: Pre-Alpha
Brought to you by:
henryml
|
From: Michael L. <he...@us...> - 2011-05-25 13:46:13
|
Update of /cvsroot/bprocessor/bprocessor/src/net/sourceforge/bprocessor/packages/skeleton
In directory vz-cvs-2.sog:/tmp/cvs-serv3940/src/net/sourceforge/bprocessor/packages/skeleton
Modified Files:
SkeletonPackage.java
Added Files:
SliderControl.java StringValue.java ControlValue.java
ControlDelegate.java StringControl.java Label.java
Control.java DoubleValue.java
Log Message:
New reusable control classes for creating control panels
--- NEW FILE: SliderControl.java ---
package net.sourceforge.bprocessor.packages.skeleton;
import java.awt.Dimension;
import java.awt.Insets;
import java.text.DecimalFormat;
import javax.swing.Box;
import javax.swing.JSlider;
import javax.swing.JTextField;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import net.sourceforge.bprocessor.gui.attrview.AttributeView;
public class SliderControl extends Control implements ChangeListener, DocumentListener {
private Box row;
private JTextField valueLabel;
private JSlider slider;
private double minimum;
private double maximum;
private DoubleValue value;
private ControlDelegate delegate;
private boolean updating;
public SliderControl(double minimum, double maximum, DoubleValue value, ControlDelegate delegate) {
this.minimum = minimum;
this.maximum = maximum;
this.value = value;
this.delegate = delegate;
row = Box.createHorizontalBox();
valueLabel = new JTextField(toString(value.getValue()));
valueLabel.setFont(AttributeView.FONT_PLAIN);
valueLabel.setMargin(new Insets(1, 1, 1, 1));
Dimension size = valueLabel.getPreferredSize();
size.width = 80;
valueLabel.setPreferredSize(size);
valueLabel.setMaximumSize(size);
valueLabel.setHorizontalAlignment(JTextField.CENTER);
slider = new JSlider();
slider.setMinimum(0);
slider.setMaximum(Integer.MAX_VALUE);
slider.setValue(valueToInt(value.getValue()));
row.add(Box.createHorizontalStrut(5));
row.add(valueLabel);
row.add(slider);
slider.addChangeListener(this);
valueLabel.getDocument().addDocumentListener(this);
}
public Box row() {
return row;
}
public double value() {
return value.getValue();
}
public double intToValue(int i) {
double factor = (double) i / (double) Integer.MAX_VALUE;
return minimum + factor * (maximum - minimum);
}
public int valueToInt(double v) {
double factor = (v - minimum) / (maximum - minimum);
return (int) (factor * Integer.MAX_VALUE);
}
public static String toString(double v) {
DecimalFormat format = new DecimalFormat("#.###");
return format.format(v);
}
public void stateChanged(ChangeEvent event) {
if (!updating) {
updating = true;
int i = slider.getValue();
value.setValue(intToValue(i));
valueLabel.setText(toString(value.getValue()));
if (delegate != null) {
delegate.changed(this);
}
updating = false;
}
}
public void check() {
if (!updating) {
updating = true;
String text = valueLabel.getText();
try {
value.setValue(Double.valueOf(text));
slider.setValue(valueToInt(value.getValue()));
} catch (Throwable error){
}
updating = false;
}
}
public void changedUpdate(DocumentEvent event) {
}
public void insertUpdate(DocumentEvent event) {
check();
}
public void removeUpdate(DocumentEvent event) {
check();
}
}
--- NEW FILE: DoubleValue.java ---
package net.sourceforge.bprocessor.packages.skeleton;
public class DoubleValue implements ControlValue {
private double value;
public DoubleValue(double value) {
this.value = value;
}
public double getValue() {
return value;
}
public void setValue(double value) {
this.value = value;
}
public String format() {
return String.valueOf(value);
}
public void parse(String string) {
try {
value = Double.valueOf(string);
} catch (Throwable error) {
}
}
}
--- NEW FILE: ControlDelegate.java ---
package net.sourceforge.bprocessor.packages.skeleton;
public interface ControlDelegate {
void changed(Object source);
}
--- NEW FILE: ControlValue.java ---
package net.sourceforge.bprocessor.packages.skeleton;
public interface ControlValue {
public String format();
public void parse(String string);
}
Index: SkeletonPackage.java
===================================================================
RCS file: /cvsroot/bprocessor/bprocessor/src/net/sourceforge/bprocessor/packages/skeleton/SkeletonPackage.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** SkeletonPackage.java 19 May 2011 11:49:43 -0000 1.4
--- SkeletonPackage.java 25 May 2011 13:46:11 -0000 1.5
***************
*** 20,25 ****
--- 20,28 ----
import javax.swing.JPanel;
import javax.swing.JSlider;
+ import javax.swing.JTextField;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
+ import javax.swing.event.DocumentEvent;
+ import javax.swing.event.DocumentListener;
import net.sourceforge.bprocessor.gl.Editor;
***************
*** 39,60 ****
public static class SkeletonCommand extends NetCommand {
private ControlPanel panel;
! private double skeletonConstant;
public void initialize(Space net) {
super.initialize(net);
System.out.println("initialize " + net);
! skeletonConstant = 42;
panel = new ControlPanel(this);
GUI.getInstance().registerControlPanel(panel);
}
! public double getSkeletonConstant() {
return skeletonConstant;
}
! public void setSkeletonConstant(double value) {
! skeletonConstant = value;
}
public void evaluate() {
System.out.println("evaluate " + net);
! System.out.println("skeleton-constant: " + skeletonConstant);
}
--- 42,66 ----
public static class SkeletonCommand extends NetCommand {
private ControlPanel panel;
! private DoubleValue skeletonConstant;
! private StringValue skeletonName;
public void initialize(Space net) {
super.initialize(net);
System.out.println("initialize " + net);
! skeletonConstant = new DoubleValue(42);
! skeletonName = new StringValue("Mike");
panel = new ControlPanel(this);
GUI.getInstance().registerControlPanel(panel);
}
! public DoubleValue getSkeletonConstant() {
return skeletonConstant;
}
! public StringValue getSkeletonName() {
! return skeletonName;
}
public void evaluate() {
System.out.println("evaluate " + net);
! System.out.println("skeleton-constant: " + skeletonConstant.getValue());
! System.out.println("name: " + skeletonName.getValue());
}
***************
*** 116,186 ****
}
- public static interface ControlDelegate {
- void changed(Object source);
- }
- public static class SliderControl implements ChangeListener {
- private Box row;
- private JLabel valueLabel;
- private JSlider slider;
- private double minimum;
- private double maximum;
- private double value;
- private ControlDelegate delegate;
-
- public SliderControl(double minimum, double maximum, double value, ControlDelegate delegate) {
- this.minimum = minimum;
- this.maximum = maximum;
- this.value = value;
- this.delegate = delegate;
- row = Box.createHorizontalBox();
- valueLabel = new JLabel(toString(value));
- Dimension size = valueLabel.getPreferredSize();
- size.width = 60;
- valueLabel.setPreferredSize(size);
- slider = new JSlider();
- slider.setMinimum(0);
- slider.setMaximum(Integer.MAX_VALUE);
- slider.setValue(valueToInt(value));
- row.add(Box.createHorizontalStrut(5));
- row.add(valueLabel);
- row.add(slider);
- slider.addChangeListener(this);
- }
-
-
- public Box row() {
- return row;
- }
-
- public double value() {
- return value;
- }
-
- public double intToValue(int i) {
- double factor = (double) i / (double) Integer.MAX_VALUE;
- return minimum + factor * (maximum - minimum);
- }
- public int valueToInt(double v) {
- double factor = (v - minimum) / (maximum - minimum);
- return (int) (factor * Integer.MAX_VALUE);
- }
-
- public static String toString(double v) {
- DecimalFormat format = new DecimalFormat("#.###");
- return format.format(v);
- }
- public void stateChanged(ChangeEvent event) {
- int i = slider.getValue();
- value = intToValue(i);
- valueLabel.setText(toString(value));
- if (delegate != null) {
- delegate.changed(this);
- }
- }
- }
! public static class ControlPanel extends JPanel {
private SkeletonCommand skeleton;
private CommandEvaluator doit;
--- 122,129 ----
}
! public static class ControlPanel extends JPanel implements ControlDelegate {
private SkeletonCommand skeleton;
private CommandEvaluator doit;
***************
*** 255,273 ****
});
content.add(toolBtn);
{
! Box titleRow = Box.createHorizontalBox();
! titleRow.add(Box.createHorizontalStrut(5));
! titleRow.add(new JLabel("Skeleton Constant:"));
! titleRow.add(Box.createHorizontalGlue());
! SliderControl control = new SliderControl(18.0, 80.0, skeleton.getSkeletonConstant(), new ControlDelegate() {
! public void changed(Object source) {
! SliderControl cntl = (SliderControl) source;
! skeleton.setSkeletonConstant(cntl.value());
! }
! });
! content.add((Box.createVerticalStrut(7)));
! content.add(titleRow);
! content.add(control.row());
}
}
}
--- 198,215 ----
});
content.add(toolBtn);
+
+ //Sebastian look here!
{
! SliderControl control = new SliderControl(18.0, 80.0, skeleton.getSkeletonConstant(), this);
! Label labelled = new Label("Skeleton Constant:", control);
! content.add(labelled.row());
}
+ {
+ StringControl control = new StringControl(skeleton.getSkeletonName(), this);
+ Label labelled = new Label("Skeletons Name:", control);
+ content.add(labelled.row());
+ }
+ }
+ public void changed(Object source) {
}
}
--- NEW FILE: StringControl.java ---
package net.sourceforge.bprocessor.packages.skeleton;
import java.awt.Insets;
import javax.swing.Box;
import javax.swing.JTextField;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import net.sourceforge.bprocessor.gui.attrview.AttributeView;
public class StringControl extends Control implements DocumentListener {
private Box row;
private JTextField valueLabel;
private ControlValue value;
private ControlDelegate delegate;
public StringControl(ControlValue value, ControlDelegate delegate) {
this.value = value;
this.delegate = delegate;
row = Box.createHorizontalBox();
valueLabel = new JTextField(value.format());
valueLabel.setFont(AttributeView.FONT_PLAIN);
valueLabel.setMargin(new Insets(1, 1, 1, 1));
row.add(Box.createHorizontalStrut(5));
row.add(valueLabel);
valueLabel.getDocument().addDocumentListener(this);
}
public Box row() {
return row;
}
public void check() {
try {
value.parse(valueLabel.getText());
delegate.changed(this);
} catch (Throwable error) {
}
}
public void changedUpdate(DocumentEvent e) {
}
public void insertUpdate(DocumentEvent e) {
check();
}
public void removeUpdate(DocumentEvent e) {
check();
}
}
--- NEW FILE: StringValue.java ---
package net.sourceforge.bprocessor.packages.skeleton;
public class StringValue implements ControlValue {
private String value;
public StringValue(String value) {
this.value = value;
}
public void setValue(String value) {
this.value = value;
}
public String getValue() {
return value;
}
public String format() {
return value;
}
public void parse(String string) {
value = string;
}
}
--- NEW FILE: Label.java ---
package net.sourceforge.bprocessor.packages.skeleton;
import javax.swing.Box;
import javax.swing.JLabel;
public class Label extends Control {
private Box row;
public Label(String label, Control control) {
row = Box.createVerticalBox();
Box titleRow = Box.createHorizontalBox();
titleRow.add(Box.createHorizontalStrut(5));
titleRow.add(new JLabel(label));
titleRow.add(Box.createHorizontalGlue());
row.add((Box.createVerticalStrut(7)));
row.add(titleRow);
row.add(control.row());
}
public Box row() {
return row;
}
}
--- NEW FILE: Control.java ---
package net.sourceforge.bprocessor.packages.skeleton;
import javax.swing.Box;
public abstract class Control {
public abstract Box row();
}
|