Changeset 9954 in josm for trunk/src/org/openstreetmap


Ignore:
Timestamp:
2016-03-08T01:22:33+01:00 (8 years ago)
Author:
Don-vip
Message:

make MapScaler and SizeButton implement Accessible interface, add unit tests, fix checkstyle violation

Location:
trunk/src/org/openstreetmap/josm
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/MapScaler.java

    r8510 r9954  
    99import java.awt.geom.Rectangle2D;
    1010
     11import javax.accessibility.Accessible;
     12import javax.accessibility.AccessibleContext;
     13import javax.accessibility.AccessibleValue;
    1114import javax.swing.JComponent;
    1215
     
    1417import org.openstreetmap.josm.gui.help.Helpful;
    1518
    16 public class MapScaler extends JComponent implements Helpful {
     19/**
     20 * Map scale bar, displaying the distance in meter that correspond to 100 px on screen.
     21 * @since 115
     22 */
     23public class MapScaler extends JComponent implements Helpful, Accessible {
    1724
    1825    private final NavigatableComponent mv;
     
    2027    private static final int PADDING_RIGHT = 100;
    2128
     29    /**
     30     * Constructs a new {@code MapScaler}.
     31     * @param mv map view
     32     */
    2233    public MapScaler(NavigatableComponent mv) {
    2334        this.mv = mv;
     
    4152    }
    4253
     54    /**
     55     * Returns the color of map scaler.
     56     * @return the color of map scaler
     57     */
    4358    public static Color getColor() {
    4459        return Main.pref.getColor(marktr("scale"), Color.white);
     
    4964        return ht("/MapView/Scaler");
    5065    }
     66
     67    @Override
     68    public AccessibleContext getAccessibleContext() {
     69        if (accessibleContext == null) {
     70            accessibleContext = new AccessibleMapScaler();
     71        }
     72        return accessibleContext;
     73    }
     74
     75    class AccessibleMapScaler extends AccessibleJComponent implements AccessibleValue {
     76
     77        @Override
     78        public Number getCurrentAccessibleValue() {
     79            return mv.getDist100Pixel();
     80        }
     81
     82        @Override
     83        public boolean setCurrentAccessibleValue(Number n) {
     84            return false;
     85        }
     86
     87        @Override
     88        public Number getMinimumAccessibleValue() {
     89            return null;
     90        }
     91
     92        @Override
     93        public Number getMaximumAccessibleValue() {
     94            return null;
     95        }
     96    }
    5197}
  • trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java

    r9947 r9954  
    204204            ScaleList scaleList = nativeScaleLayer.getNativeScales();
    205205            if (scaleList != null) {
    206                 if ( PROP_ZOOM_INTERMEDIATE_STEPS.get()) {
     206                if (PROP_ZOOM_INTERMEDIATE_STEPS.get()) {
    207207                    scaleList = scaleList.withIntermediateSteps(PROP_ZOOM_RATIO.get());
    208208                }
     
    323323    }
    324324
     325    /**
     326     * Returns the text describing the distance in meter that correspond to 100 px on screen.
     327     * @return the text describing the distance in meter that correspond to 100 px on screen
     328     */
    325329    public String getDist100PixelText() {
    326330        return getDistText(getDist100Pixel());
  • trunk/src/org/openstreetmap/josm/gui/bbox/SizeButton.java

    r9078 r9954  
    66import java.awt.Dimension;
    77import java.awt.Graphics;
    8 import java.awt.Point;
    98import java.awt.event.MouseAdapter;
    109import java.awt.event.MouseEvent;
    1110
     11import javax.accessibility.Accessible;
     12import javax.accessibility.AccessibleAction;
     13import javax.accessibility.AccessibleContext;
    1214import javax.swing.ImageIcon;
    1315import javax.swing.JComponent;
     
    1618
    1719/**
     20 * Button allowing to control the dimension of a slippy map between two states (normal/enlarged).
    1821 * @author Tim Haussmann
     22 * @since 1390
    1923 */
    20 public class SizeButton extends JComponent {
    21 
    22     private int x;
    23     private int y;
     24public class SizeButton extends JComponent implements Accessible {
    2425
    2526    private final ImageIcon enlargeImage;
     
    2829    private final SlippyMapBBoxChooser slippyMapBBoxChooser;
    2930
     31    private final transient MouseAdapter mouseAdapter = new MouseAdapter() {
     32        @Override
     33        public void mouseReleased(MouseEvent e) {
     34            if (e.getButton() == MouseEvent.BUTTON1) {
     35                toggle();
     36            }
     37        }
     38    };
     39
     40    /**
     41     * Constructs a new {@code SizeButton}.
     42     * @param slippyMapBBoxChooser the associated slippy map
     43     */
    3044    public SizeButton(SlippyMapBBoxChooser slippyMapBBoxChooser) {
    3145        this.slippyMapBBoxChooser = slippyMapBBoxChooser;
     
    3347        shrinkImage = ImageProvider.get("view-fullscreen-revert");
    3448        setPreferredSize(new Dimension(enlargeImage.getIconWidth(), enlargeImage.getIconHeight()));
    35         addMouseListener(mouseListener);
     49        addMouseListener(mouseAdapter);
    3650        setToolTipText(tr("Enlarge"));
    3751    }
    38 
    39     private final transient MouseAdapter mouseListener = new MouseAdapter() {
    40         @Override
    41         public void mouseReleased(MouseEvent e) {
    42             if (e.getButton() == MouseEvent.BUTTON1) {
    43                 toggle();
    44                 slippyMapBBoxChooser.resizeSlippyMap();
    45             }
    46         }
    47     };
    4852
    4953    @Override
     
    5155        if (isEnlarged) {
    5256            if (shrinkImage != null)
    53                 g.drawImage(shrinkImage.getImage(), x, y, null);
     57                g.drawImage(shrinkImage.getImage(), 0, 0, null);
    5458        } else {
    5559            if (enlargeImage != null)
    56                 g.drawImage(enlargeImage.getImage(), x, y, null);
     60                g.drawImage(enlargeImage.getImage(), 0, 0, null);
    5761        }
    5862    }
    5963
     64    /**
     65     * Toggles button state.
     66     */
    6067    public void toggle() {
    6168        isEnlarged = !isEnlarged;
    6269        setToolTipText(isEnlarged ? tr("Shrink") : tr("Enlarge"));
     70        slippyMapBBoxChooser.resizeSlippyMap();
    6371    }
    6472
     73    /**
     74     * Determines if the slippy map is enlarged.
     75     * @return {@code true} if the slippy map is enlarged, {@code false} otherwise
     76     */
    6577    public boolean isEnlarged() {
    6678        return isEnlarged;
    6779    }
    6880
    69     public boolean hit(Point point) {
    70         if (x < point.x && point.x < x + enlargeImage.getIconWidth()) {
    71             if (y < point.y && point.y < y + enlargeImage.getIconHeight()) {
    72                 return true;
    73             }
     81    @Override
     82    public AccessibleContext getAccessibleContext() {
     83        if (accessibleContext == null) {
     84            accessibleContext = new AccessibleSizeButton();
    7485        }
    75         return false;
     86        return accessibleContext;
    7687    }
    7788
     89    class AccessibleSizeButton extends AccessibleJComponent implements AccessibleAction {
     90
     91        @Override
     92        public int getAccessibleActionCount() {
     93            return 1;
     94        }
     95
     96        @Override
     97        public String getAccessibleActionDescription(int i) {
     98            return "toggle";
     99        }
     100
     101        @Override
     102        public boolean doAccessibleAction(int i) {
     103            toggle();
     104            return true;
     105        }
     106    }
    78107}
  • trunk/src/org/openstreetmap/josm/tools/Utils.java

    r9916 r9954  
    9292    private static final char[] DEFAULT_STRIP = {'\u200B', '\uFEFF'};
    9393
     94    private static final String[] SIZE_UNITS = {"B", "kB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"};
     95
    9496    /**
    9597     * Tests whether {@code predicate} applies to at least one element from {@code collection}.
     
    10421044            throw new IllegalArgumentException("bytes must be >= 0");
    10431045        }
    1044         final String[] units = {"B", "kB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"};
    10451046        int unitIndex = 0;
    10461047        double value = bytes;
    1047         while (value >= 1024 && unitIndex < units.length) {
     1048        while (value >= 1024 && unitIndex < SIZE_UNITS.length) {
    10481049            value /= 1024;
    10491050            unitIndex++;
    10501051        }
    10511052        if (value > 100 || unitIndex == 0) {
    1052             return String.format(locale, "%.0f %s", value, units[unitIndex]);
     1053            return String.format(locale, "%.0f %s", value, SIZE_UNITS[unitIndex]);
    10531054        } else if (value > 10) {
    1054             return String.format(locale, "%.1f %s", value, units[unitIndex]);
     1055            return String.format(locale, "%.1f %s", value, SIZE_UNITS[unitIndex]);
    10551056        } else {
    1056             return String.format(locale, "%.2f %s", value, units[unitIndex]);
     1057            return String.format(locale, "%.2f %s", value, SIZE_UNITS[unitIndex]);
    10571058        }
    10581059    }
Note: See TracChangeset for help on using the changeset viewer.