Changeset 10409 in josm


Ignore:
Timestamp:
2016-06-17T02:58:36+02:00 (8 years ago)
Author:
Don-vip
Message:
  • remove duplicated code
  • fix various sonar warnings
  • add some javadoc and unit tests
Location:
trunk
Files:
23 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/actions/CopyAction.java

    r10382 r10409  
    1313
    1414import org.openstreetmap.josm.Main;
    15 import org.openstreetmap.josm.data.osm.DataSet;
    1615import org.openstreetmap.josm.data.osm.OsmPrimitive;
    1716import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
     
    2625public final class CopyAction extends JosmAction {
    2726
    28     // regular expression that matches text clipboard contents after copying
     27    /** regular expression that matches text clipboard contents after copying */
    2928    public static final String CLIPBOARD_REGEXP = "((node|way|relation)\\s\\d+,)*(node|way|relation)\\s\\d+";
    3029
     
    5756     */
    5857    public static void copy(OsmDataLayer source, Collection<OsmPrimitive> primitives) {
    59         /* copy ids to the clipboard */
     58        // copy ids to the clipboard
    6059        String ids = getCopyString(primitives);
    6160        Utils.copyToClipboard(ids);
     
    7574    @Override
    7675    protected void updateEnabledState() {
    77         DataSet ds = getLayerManager().getEditDataSet();
    78         if (ds == null) {
    79             setEnabled(false);
    80         } else {
    81             updateEnabledState(ds.getSelected());
    82         }
     76        updateEnabledStateOnCurrentSelection();
    8377    }
    8478
  • trunk/src/org/openstreetmap/josm/actions/CreateCircleAction.java

    r10382 r10409  
    2525import org.openstreetmap.josm.data.coor.EastNorth;
    2626import org.openstreetmap.josm.data.coor.LatLon;
    27 import org.openstreetmap.josm.data.osm.DataSet;
    2827import org.openstreetmap.josm.data.osm.Node;
    2928import org.openstreetmap.josm.data.osm.OsmPrimitive;
     
    290289    @Override
    291290    protected void updateEnabledState() {
    292         DataSet ds = getLayerManager().getEditDataSet();
    293         if (ds == null) {
    294             setEnabled(false);
    295         } else {
    296             updateEnabledState(ds.getSelected());
    297         }
     291        updateEnabledStateOnCurrentSelection();
    298292    }
    299293
  • trunk/src/org/openstreetmap/josm/actions/DeleteAction.java

    r10382 r10409  
    1010
    1111import org.openstreetmap.josm.Main;
    12 import org.openstreetmap.josm.data.osm.DataSet;
    1312import org.openstreetmap.josm.data.osm.OsmPrimitive;
    1413import org.openstreetmap.josm.tools.Shortcut;
     
    3837    @Override
    3938    protected void updateEnabledState() {
    40         DataSet ds = getLayerManager().getEditDataSet();
    41         if (ds == null) {
    42             setEnabled(false);
    43         } else {
    44             updateEnabledState(ds.getSelected());
    45         }
     39        updateEnabledStateOnCurrentSelection();
    4640    }
    4741
  • trunk/src/org/openstreetmap/josm/actions/DistributeAction.java

    r10382 r10409  
    2020import org.openstreetmap.josm.command.MoveCommand;
    2121import org.openstreetmap.josm.command.SequenceCommand;
    22 import org.openstreetmap.josm.data.osm.DataSet;
    2322import org.openstreetmap.josm.data.osm.Node;
    2423import org.openstreetmap.josm.data.osm.OsmPrimitive;
     
    301300    @Override
    302301    protected void updateEnabledState() {
    303         DataSet ds = getLayerManager().getEditDataSet();
    304         if (ds == null) {
    305             setEnabled(false);
    306         } else {
    307             updateEnabledState(ds.getSelected());
    308         }
     302        updateEnabledStateOnCurrentSelection();
    309303    }
    310304
  • trunk/src/org/openstreetmap/josm/actions/DownloadReferrersAction.java

    r10382 r10409  
    1111import org.openstreetmap.josm.Main;
    1212import org.openstreetmap.josm.actions.downloadtasks.DownloadReferrersTask;
    13 import org.openstreetmap.josm.data.osm.DataSet;
    1413import org.openstreetmap.josm.data.osm.OsmPrimitive;
    1514import org.openstreetmap.josm.gui.layer.OsmDataLayer;
     
    6261    @Override
    6362    protected void updateEnabledState() {
    64         DataSet ds = getLayerManager().getEditDataSet();
    65         if (ds == null) {
    66             setEnabled(false);
    67         } else {
    68             updateEnabledState(ds.getSelected());
    69         }
     63        updateEnabledStateOnCurrentSelection();
    7064    }
    7165
  • trunk/src/org/openstreetmap/josm/actions/DuplicateAction.java

    r10382 r10409  
    1111
    1212import org.openstreetmap.josm.Main;
    13 import org.openstreetmap.josm.data.osm.DataSet;
    1413import org.openstreetmap.josm.data.osm.OsmPrimitive;
    1514import org.openstreetmap.josm.data.osm.PrimitiveDeepCopy;
     
    3635    @Override
    3736    protected void updateEnabledState() {
    38         DataSet ds = getLayerManager().getEditDataSet();
    39         if (ds == null) {
    40             setEnabled(false);
    41         } else {
    42             updateEnabledState(ds.getSelected());
    43         }
     37        updateEnabledStateOnCurrentSelection();
    4438    }
    4539
  • trunk/src/org/openstreetmap/josm/actions/FollowLineAction.java

    r10382 r10409  
    1616import org.openstreetmap.josm.command.SelectCommand;
    1717import org.openstreetmap.josm.command.SequenceCommand;
    18 import org.openstreetmap.josm.data.osm.DataSet;
    1918import org.openstreetmap.josm.data.osm.Node;
    2019import org.openstreetmap.josm.data.osm.OsmPrimitive;
     
    3635public class FollowLineAction extends JosmAction {
    3736
     37    /**
     38     * Constructs a new {@code FollowLineAction}.
     39     */
    3840    public FollowLineAction() {
    3941        super(
     
    4850    @Override
    4951    protected void updateEnabledState() {
    50         DataSet ds = getLayerManager().getEditDataSet();
    51         if (ds == null) {
    52             setEnabled(false);
    53         } else {
    54             updateEnabledState(ds.getSelected());
    55         }
     52        updateEnabledStateOnCurrentSelection();
    5653    }
    5754
  • trunk/src/org/openstreetmap/josm/actions/JoinAreasAction.java

    r10382 r10409  
    15481548    @Override
    15491549    protected void updateEnabledState() {
    1550         DataSet ds = getLayerManager().getEditDataSet();
    1551         if (ds == null) {
    1552             setEnabled(false);
    1553         } else {
    1554             updateEnabledState(ds.getSelected());
    1555         }
     1550        updateEnabledStateOnCurrentSelection();
    15561551    }
    15571552
  • trunk/src/org/openstreetmap/josm/actions/JoinNodeWayAction.java

    r10382 r10409  
    2525import org.openstreetmap.josm.command.SequenceCommand;
    2626import org.openstreetmap.josm.data.coor.EastNorth;
    27 import org.openstreetmap.josm.data.osm.DataSet;
    2827import org.openstreetmap.josm.data.osm.Node;
    2928import org.openstreetmap.josm.data.osm.OsmPrimitive;
     
    209208    @Override
    210209    protected void updateEnabledState() {
    211         DataSet ds = getLayerManager().getEditDataSet();
    212         if (ds == null) {
    213             setEnabled(false);
    214         } else {
    215             updateEnabledState(ds.getSelected());
    216         }
     210        updateEnabledStateOnCurrentSelection();
    217211    }
    218212
  • trunk/src/org/openstreetmap/josm/actions/JosmAction.java

    r10369 r10409  
    171171        }
    172172    }
    173    
     173
    174174    /**
    175175     * Installs the listeners to this action.
     
    351351
    352352    /**
     353     * Updates enabled state according to primitives currently selected in edit data set, if any.
     354     * Can be called in {@link #updateEnabledState()} implementations.
     355     * @since 10409
     356     */
     357    protected final void updateEnabledStateOnCurrentSelection() {
     358        DataSet ds = getLayerManager().getEditDataSet();
     359        if (ds == null) {
     360            setEnabled(false);
     361        } else {
     362            updateEnabledState(ds.getSelected());
     363        }
     364    }
     365
     366    /**
    353367     * Adapter for layer change events. Runs updateEnabledState() whenever the active layer changed.
    354368     */
  • trunk/src/org/openstreetmap/josm/actions/MirrorAction.java

    r10382 r10409  
    1818import org.openstreetmap.josm.command.MoveCommand;
    1919import org.openstreetmap.josm.command.SequenceCommand;
    20 import org.openstreetmap.josm.data.osm.DataSet;
    2120import org.openstreetmap.josm.data.osm.Node;
    2221import org.openstreetmap.josm.data.osm.OsmPrimitive;
     
    8786    @Override
    8887    protected void updateEnabledState() {
    89         DataSet ds = getLayerManager().getEditDataSet();
    90         if (ds == null) {
    91             setEnabled(false);
    92         } else {
    93             updateEnabledState(ds.getSelected());
    94         }
     88        updateEnabledStateOnCurrentSelection();
    9589    }
    9690
  • trunk/src/org/openstreetmap/josm/actions/MoveAction.java

    r10382 r10409  
    152152    @Override
    153153    protected void updateEnabledState() {
    154         DataSet ds = getLayerManager().getEditDataSet();
    155         if (ds == null) {
    156             setEnabled(false);
    157         } else {
    158             updateEnabledState(ds.getSelected());
    159         }
     154        updateEnabledStateOnCurrentSelection();
    160155    }
    161156
  • trunk/src/org/openstreetmap/josm/actions/SimplifyWayAction.java

    r10382 r10409  
    276276    @Override
    277277    protected void updateEnabledState() {
    278         DataSet ds = getLayerManager().getEditDataSet();
    279         if (ds == null) {
    280             setEnabled(false);
    281         } else {
    282             updateEnabledState(ds.getSelected());
    283         }
     278        updateEnabledStateOnCurrentSelection();
    284279    }
    285280
  • trunk/src/org/openstreetmap/josm/actions/UnGlueAction.java

    r10382 r10409  
    3232import org.openstreetmap.josm.command.Command;
    3333import org.openstreetmap.josm.command.SequenceCommand;
    34 import org.openstreetmap.josm.data.osm.DataSet;
    3534import org.openstreetmap.josm.data.osm.Node;
    3635import org.openstreetmap.josm.data.osm.OsmPrimitive;
     
    658657    @Override
    659658    protected void updateEnabledState() {
    660         DataSet ds = getLayerManager().getEditDataSet();
    661         if (ds == null) {
    662             setEnabled(false);
    663         } else {
    664             updateEnabledState(ds.getSelected());
    665         }
     659        updateEnabledStateOnCurrentSelection();
    666660    }
    667661
  • trunk/src/org/openstreetmap/josm/actions/UnJoinNodeWayAction.java

    r10382 r10409  
    1818import org.openstreetmap.josm.Main;
    1919import org.openstreetmap.josm.command.RemoveNodesCommand;
    20 import org.openstreetmap.josm.data.osm.DataSet;
    2120import org.openstreetmap.josm.data.osm.Node;
    2221import org.openstreetmap.josm.data.osm.OsmPrimitive;
     
    187186    @Override
    188187    protected void updateEnabledState() {
    189         DataSet ds = getLayerManager().getEditDataSet();
    190         if (ds == null) {
    191             setEnabled(false);
    192         } else {
    193             updateEnabledState(ds.getSelected());
    194         }
     188        updateEnabledStateOnCurrentSelection();
    195189    }
    196190
  • trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java

    r10378 r10409  
    253253        }
    254254
    255         protected OsmDataLayer addNewLayerIfRequired(String newLayerName, Bounds bounds) {
     255        protected OsmDataLayer addNewLayerIfRequired(String newLayerName) {
    256256            int numDataLayers = getNumDataLayers();
    257257            if (newLayer || numDataLayers == 0 || (numDataLayers > 1 && getEditLayer() == null)) {
     
    268268
    269269        protected void loadData(String newLayerName, Bounds bounds) {
    270             OsmDataLayer layer = addNewLayerIfRequired(newLayerName, bounds);
     270            OsmDataLayer layer = addNewLayerIfRequired(newLayerName);
    271271            if (layer == null) {
    272272                layer = getEditLayer();
  • trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java

    r10383 r10409  
    690690        if (selectedWay != null) {
    691691            int posn0 = selectedWay.getNodes().indexOf(currentNode);
     692            // CHECKSTYLE.OFF: SingleSpaceSeparator
    692693            if (posn0 != -1 && // n0 is part of way
    693                   // CHECKSTYLE.OFF: SingleSpaceSeparator
    694                   (posn0 >= 1                             && targetNode.equals(selectedWay.getNode(posn0-1))) || // previous node
    695                   (posn0 < selectedWay.getNodesCount()-1) && targetNode.equals(selectedWay.getNode(posn0+1))) {  // next node
    696                   // CHECKSTYLE.ON: SingleSpaceSeparator
     694               (posn0 >= 1                             && targetNode.equals(selectedWay.getNode(posn0-1))) || // previous node
     695               (posn0 < selectedWay.getNodesCount()-1) && targetNode.equals(selectedWay.getNode(posn0+1))) {  // next node
    697696                getLayerManager().getEditDataSet().setSelected(targetNode);
    698697                lastUsedNode = targetNode;
    699698                return true;
    700699            }
     700            // CHECKSTYLE.ON: SingleSpaceSeparator
    701701        }
    702702
  • trunk/src/org/openstreetmap/josm/data/validation/tests/Highways.java

    r10378 r10409  
    4646     * Classified highways in order of importance
    4747     */
     48    // CHECKSTYLE.OFF: SingleSpaceSeparator
    4849    private static final List<String> CLASSIFIED_HIGHWAYS = Arrays.asList(
    49             // CHECKSTYLE.OFF: SingleSpaceSeparator
    5050            "motorway",  "motorway_link",
    5151            "trunk",     "trunk_link",
     
    5656            "residential",
    5757            "living_street");
    58             // CHECKSTYLE.ON: SingleSpaceSeparator
     58    // CHECKSTYLE.ON: SingleSpaceSeparator
    5959
    6060    private static final Set<String> KNOWN_SOURCE_MAXSPEED_CONTEXTS = new HashSet<>(Arrays.asList(
  • trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java

    r10405 r10409  
    141141    // The only events that may move/resize this map view are window movements or changes to the map view size.
    142142    // We can clean this up more by only recalculating the state on repaint.
    143     private final HierarchyListener hierarchyListener = new HierarchyListener() {
     143    private final transient HierarchyListener hierarchyListener = new HierarchyListener() {
    144144        @Override
    145145        public void hierarchyChanged(HierarchyEvent e) {
     
    151151    };
    152152
    153     private final ComponentAdapter componentListener = new ComponentAdapter() {
     153    private final transient ComponentAdapter componentListener = new ComponentAdapter() {
    154154        @Override
    155155        public void componentShown(ComponentEvent e) {
     
    170170     * The current state (scale, center, ...) of this map view.
    171171     */
    172     private MapViewState state;
     172    private transient MapViewState state;
    173173
    174174    /**
  • trunk/src/org/openstreetmap/josm/gui/util/GuiSizesHelper.java

    r10392 r10409  
    33
    44import java.awt.Dimension;
    5 import java.awt.HeadlessException;
     5import java.awt.GraphicsEnvironment;
    66import java.awt.Toolkit;
    77
     
    2020    }
    2121
    22 
    2322    /** cache value for screen resolution */
    2423    private static float screenDPI = -1;
    2524
    26     /** Request the screen resolution (cached)
     25    /**
     26     * Request the screen resolution (cached)
    2727     * @return screen resolution in DPI
    2828     */
     
    3535                        screenDPI = 96f * scalePref;
    3636                    } else {
    37                         try {
     37                        if (!GraphicsEnvironment.isHeadless()) {
    3838                            screenDPI = Toolkit.getDefaultToolkit().getScreenResolution();
    39                         } catch (HeadlessException e) {
     39                        } else {
    4040                            screenDPI = 96;
    4141                        }
     
    5353     */
    5454    public static float getPixelDensity() {
    55         float pixelPerInch = getScreenDPI();
    56         return pixelPerInch / 96f;
     55        return getScreenDPI() / 96f;
    5756    }
    5857
     
    7271    public static int getSizeDpiAdjusted(int size) {
    7372        if (size <= 0) return size;
    74         float pixelPerInch = getScreenDPI();
    75         return Math.round(size * pixelPerInch / 96);
     73        return Math.round(size * getScreenDPI() / 96);
    7674    }
    7775
     
    8381    public static float getSizeDpiAdjusted(float size) {
    8482        if (size <= 0f) return size;
    85         float pixelPerInch = getScreenDPI();
    86         return size * pixelPerInch / 96;
     83        return size * getScreenDPI() / 96;
    8784    }
    8885
     
    9491    public static double getSizeDpiAdjusted(double size) {
    9592        if (size <= 0d) return size;
    96         float pixelPerInch = getScreenDPI();
    97         return size * pixelPerInch / 96;
     93        return size * getScreenDPI() / 96;
    9894    }
    9995
     
    105101    public static Dimension getDimensionDpiAdjusted(Dimension dim) {
    106102        float pixelPerInch = getScreenDPI();
    107         int width = dim.width, height = dim.height;
     103        int width = dim.width;
     104        int height = dim.height;
    108105        if (dim.width > 0) {
    109106            width = Math.round(dim.width * pixelPerInch / 96);
  • trunk/src/org/openstreetmap/josm/tools/ImageProvider.java

    r10403 r10409  
    707707
    708708    /**
     709     * Load an image with a given file name.
     710     *
     711     * @param name The icon name (base name with or without '.png' or '.svg' extension)
     712     * @return the requested image or null if the request failed
     713     * @see #get(String, String)
     714     */
     715    public static ImageIcon get(String name) {
     716        return new ImageProvider(name).get();
     717    }
     718
     719    /**
    709720     * Load an empty image with a given size.
    710721     *
     
    717728        return new ImageIcon(new BufferedImage(iconRealSize.width, iconRealSize.height,
    718729            BufferedImage.TYPE_INT_ARGB));
    719     }
    720 
    721     /**
    722      * Load an image with a given file name.
    723      *
    724      * @param name The icon name (base name with or without '.png' or '.svg' extension)
    725      * @return the requested image or null if the request failed
    726      * @see #get(String, String)
    727      */
    728     public static ImageIcon get(String name) {
    729         return new ImageProvider(name).get();
    730730    }
    731731
  • trunk/src/org/openstreetmap/josm/tools/ImageResource.java

    r10370 r10409  
    1313import javax.swing.ImageIcon;
    1414
     15import org.openstreetmap.josm.gui.util.GuiSizesHelper;
     16
    1517import com.kitfox.svg.SVGDiagram;
    16 import org.openstreetmap.josm.gui.util.GuiSizesHelper;
    1718
    1819/**
     
    5051    public ImageResource(Image img) {
    5152        CheckParameterUtil.ensureParameterNotNull(img);
    52         this.baseImage = img;
    53 
    54         img = scaleBaseImageIfNeeded(img);
    55 
    56         imgCache.put(DEFAULT_DIMENSION, img);
     53        baseImage = img;
     54        imgCache.put(DEFAULT_DIMENSION, scaleBaseImageIfNeeded(img));
    5755    }
    5856
     
    7169            BufferedImage bimg = new BufferedImage(realWidth, realHeight, BufferedImage.TYPE_INT_ARGB);
    7270            bimg.getGraphics().drawImage(realImage, 0, 0, null);
    73             img = bimg;
     71            return bimg;
    7472        }
    7573        return img;
     
    9896
    9997    /**
    100      * Returns the image icon at default dimension.
    101      * @return the image icon at default dimension
    102      */
    103     public ImageIcon getImageIcon() {
    104         return getImageIcon(DEFAULT_DIMENSION);
    105     }
    106 
    107     /**
    10898     * Set both icons of an Action
    10999     * @param a The action for the icons
     
    135125
    136126    /**
     127     * Returns the image icon at default dimension.
     128     * @return the image icon at default dimension
     129     */
     130    public ImageIcon getImageIcon() {
     131        return getImageIcon(DEFAULT_DIMENSION);
     132    }
     133
     134    /**
    137135     * Get an ImageIcon object for the image of this resource
    138      * @param   dim The requested dimensions. Use (-1,-1) for the original size
    139      *          and (width, -1) to set the width, but otherwise scale the image
    140      *          proportionally.
     136     * @param  dim The requested dimensions. Use (-1,-1) for the original size and (width, -1)
     137     *         to set the width, but otherwise scale the image proportionally.
    141138     * @return ImageIcon object for the image of this resource, scaled according to dim
    142139     */
  • trunk/test/unit/org/openstreetmap/josm/tools/ImageProviderTest.java

    r9231 r10409  
    6060        assertNotNull(ImageProvider.get("wiki://OpenJDK_logo.svg"));
    6161    }
     62
     63    /**
     64     * Test fetching an image using {@code data:} URL.
     65     */
     66    @Test
     67    public void testDataUrl() {
     68        // Red dot image, taken from https://en.wikipedia.org/wiki/Data_URI_scheme#HTML
     69        assertNotNull(ImageProvider.get("data:image/png;base64," +
     70                "iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4"+
     71                "//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="));
     72    }
    6273}
Note: See TracChangeset for help on using the changeset viewer.