[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(); } |