// Decompiled by Jad v1.5.7b. Copyright 1997-99 Pavel Kouznetsov. // Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html // Decompiler options: packimports(3) // Source File Name: NumberField.java //import java.awt.TextComponent; //import java.awt.TextField; import javax.swing.JSlider; import javax.swing.JButton; import javax.swing.JPanel; import javax.swing.JLabel; import javax.swing.border.EmptyBorder; import java.awt.*; import javax.swing.event.ChangeListener; import javax.swing.event.ChangeEvent; import java.awt.event.ActionListener; //import java.util.StringTokenizer; class NumberSlider extends JPanel implements ActionListener, ChangeListener // JSlider { JLabel label; JSlider slider; JButton resetButton; JButton revert1Button; JButton revert0Button; JButton revertHalfButton; NumberSlider() { this(0.0,10.0,1); } NumberSlider(int min, int max) { setLayout(new GridBagLayout()); slider = new JSlider(min,max); slider.setPaintTicks(true); //setPaintTrack(true); if (max-min > 512) { slider.setMinorTickSpacing((max-min)/128); slider.setMajorTickSpacing((max-min)/32); } else { slider.setMinorTickSpacing(1); slider.setMajorTickSpacing(8); } slider.setSnapToTicks(true); add(slider); } NumberSlider(double min, double max) { this(min,max,1); } int resolution = 10000; NumberSlider(double min, double max, double pow) { setLayout(new GridBagLayout()); slider = new JSlider(0,resolution); // slider.setSize(128, 16); // slider.setPreferredSize(slider.getSize()); this.min = min; this.max = max; slider.setPaintTicks(false); slider.setPaintTrack(true); slider.setMajorTickSpacing(500); //setSnapToTicks(true); add(slider); if (pow != 1) // && pow != -1) { resetButton = new cButton("-|-"); resetButton.setBorder(new EmptyBorder(0,8,0,0)); resetButton.addActionListener(this); revert1Button = new JButton(" 1"); revert1Button.setBorder(new EmptyBorder(0,0,0,0)); revert1Button.addActionListener(this); revert0Button = new JButton(" 0"); revert0Button.setBorder(new EmptyBorder(0,0,0,0)); revert0Button.addActionListener(this); revertHalfButton = new JButton(" .5"); revertHalfButton.setBorder(new EmptyBorder(0,0,0,0)); revertHalfButton.addActionListener(this); add(resetButton); add(revert0Button); add(revertHalfButton); add(revert1Button); } if (pow <= 0) { // Transition between min and max // value = (Math.pow(getValue()/1000.0, POW) * (max - min)) + min; // value - min = Math.pow(getValue()/1000.0, POW) * (max - min); // (value - min) / (max - min) = Math.pow(getValue()/1000.0, POW); // LOG (value - min) / (max - min) = POW * LOG (getValue()/1000.0); pow = Math.log((-pow - min) / (max - min)) / Math.log(0.5); //System.out.println("POW = " + pow); } POW = pow; } public void actionPerformed(java.awt.event.ActionEvent e) { if (e.getSource() == resetButton) { frozen = true; setValue(resolution/2); frozen = false; } else if (e.getSource() == revert1Button) { setFloat(1); } else if (e.getSource() == revertHalfButton) { setFloat(0.5); } else if (e.getSource() == revert0Button) { setFloat(0); } } void addChangeListener(ChangeListener l) { listener = l; slider.addChangeListener(this); // l); } void removeChangeListener(ChangeListener l) { assert(listener == l); slider.removeChangeListener(l); } public void stateChanged(ChangeEvent e) { assert (listener != null); listener.stateChanged(new ChangeEvent(this)); } void setInteger(int inInt) { setValue(inInt); } void setValue(int inInt) { slider.setValue(inInt); } int getInteger() { return getValue(); } int getValue() { return slider.getValue(); } void setFloat(double inFlt) { actualvalue = inFlt; //System.out.println("Set Value = " + inFlt); double value = Math.pow((inFlt - min) / (max - min), 1/POW); //System.out.println("value = " + value); overflow = (value > 1); setInteger((int) (value * resolution)); // System.err.println("setFloat = " + value); } double getFloat() { if(overflow && getValue() == resolution) return actualvalue; double value = (Math.pow(getValue()/(double)resolution, POW) * (max - min)) + min; //System.out.println("Get Value = " + value); // System.err.println("getFloat = " + value); return value; } double POW; double min,max; // use to handle bounds double actualvalue; boolean overflow; ChangeListener listener; static boolean frozen = false; }