001    package ui.recognizer;
002    
003    import java.awt.*;
004    import javax.swing.*;
005    
006    public class Rule extends JComponent {
007    
008        public static final int INCH = Toolkit.getDefaultToolkit().getScreenResolution();
009    
010        protected Calibration calibration;
011        protected boolean dataUnits;
012    
013        protected int increment;
014        protected int units;
015    
016        public Rule(boolean isDataUnits, Calibration aCalibration) {
017            calibration = aCalibration;
018            dataUnits = isDataUnits;
019            setIncrementAndUnits();
020        }
021    
022        void setIncrementAndUnits() {
023            if (isDataUnits()) {
024                units = (int)((double)INCH / (double)2.54); // dots per centimeter
025                increment = units;
026            } else {
027                units = INCH;
028                increment = units / 2;
029            }
030        }
031    
032        public int getIncrement() {
033            return increment;
034        }
035    
036        //----------------Accessor methods---------------------------
037    
038        /** Get the coordinate display mode.
039         * @return true if tics are in data units
040         */
041        public boolean isDataUnits() {
042            return dataUnits;
043        }
044    
045        /** Set the coordinate display mode.
046         * @param isDataUnits if true tics are in data units
047         */
048        public void setDataUnits(boolean isDataUnits) {
049            dataUnits = isDataUnits;
050            setIncrementAndUnits();
051            repaint();
052        }
053    
054        /** Get the calibation object for this plot.
055         * @return an object representing the plot calibration
056         */
057        public Calibration getCalibration() {
058            return calibration;
059        }
060    
061        /** Set the coordinate calibration object.
062         * @param aCalibration an object representing the plot calibration
063         */
064        public void setCalibration(Calibration aCalibration) {
065            calibration = aCalibration;
066            setIncrementAndUnits();
067            repaint();
068        }
069    
070    }