Ignore:
Timestamp:
2014-09-15T03:01:38+02:00 (10 years ago)
Author:
donvip
Message:

[josm_measurement] fix #josm9227 - Show measured length in status bar

Location:
applications/editors/josm/plugins/measurement/src/org/openstreetmap/josm/plugins/measurement
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/measurement/src/org/openstreetmap/josm/plugins/measurement/MeasurementDialog.java

    r30353 r30641  
     1// License: GPL. For details, see LICENSE file.
    12package org.openstreetmap.josm.plugins.measurement;
    23
  • applications/editors/josm/plugins/measurement/src/org/openstreetmap/josm/plugins/measurement/MeasurementLayer.java

    r30532 r30641  
     1// License: GPL. For details, see LICENSE file.
    12package org.openstreetmap.josm.plugins.measurement;
    23/// @author Raphael Mack <ramack@raphael-mack.de>
     
    4647public class MeasurementLayer extends Layer {
    4748
    48     public MeasurementLayer(String arg0) {
    49         super(arg0);
     49    public MeasurementLayer(String name) {
     50        super(name);
    5051    }
    5152
     
    5354    private Collection<WayPoint> points = new ArrayList<WayPoint>(32);
    5455
    55     @Override public Icon getIcon() {
     56    @Override
     57    public Icon getIcon() {
    5658        return icon;
    5759    }
    5860
    59     @Override public String getToolTipText() {
     61    @Override
     62    public String getToolTipText() {
    6063        return tr("Layer to make measurements");
    6164    }
    6265
    63     @Override public boolean isMergable(Layer other) {
     66    @Override
     67    public boolean isMergable(Layer other) {
    6468        //return other instanceof MeasurementLayer;
    6569        return false;
    6670    }
    6771
    68     @Override public void mergeFrom(Layer from) {
     72    @Override
     73    public void mergeFrom(Layer from) {
    6974        // TODO: nyi - doubts about how this should be done are around. Ideas?
    70 
    71     }
    72 
    73     @Override public void paint(Graphics2D g, final MapView mv, Bounds bounds) {
     75    }
     76
     77    @Override
     78    public void paint(Graphics2D g, final MapView mv, Bounds bounds) {
    7479        g.setColor(Color.green);
    7580        Point l = null;
     
    8489    }
    8590
    86     @Override public void visitBoundingBox(BoundingXYVisitor v) {
     91    @Override
     92    public void visitBoundingBox(BoundingXYVisitor v) {
    8793        // nothing to do here
    8894    }
    8995
    90     @Override public Object getInfoComponent() {
     96    @Override
     97    public Object getInfoComponent() {
    9198        return getToolTipText();
    9299    }
    93100
    94     @Override public Action[] getMenuEntries() {
     101    @Override
     102    public Action[] getMenuEntries() {
    95103        return new Action[]{
    96104            LayerListDialog.getInstance().createShowHideLayerAction(),
     
    141149            MeasurementPlugin.measurementDialog.pathLengthLabel.setText(NavigatableComponent.getDistText(pathLength));
    142150        }
     151        if (Main.map.mapMode instanceof MeasurementMode) {
     152            Main.map.statusLine.setDist(pathLength);
     153        }
    143154    }
    144155   
     
    207218    private class GPXLayerImportAction extends AbstractAction {
    208219
    209     /**
    210      * The data model for the list component.
    211      */
    212     private DefaultListModel<GpxLayer> model = new DefaultListModel<>();
    213 
    214     /**
    215      * @param layer the targeting measurement layer
    216      */
    217     public GPXLayerImportAction(MeasurementLayer layer) {
    218         super(tr("Import path from GPX layer"), ImageProvider.get("dialogs", "edit")); // TODO: find better image
    219     }
    220 
    221     @Override
    222     public void actionPerformed(ActionEvent e) {
    223         Box panel = Box.createVerticalBox();
    224         final JList<GpxLayer> layerList = new JList<>(model);
    225         Collection<Layer> data = Main.map.mapView.getAllLayers();
    226         Layer lastLayer = null;
    227         int layerCnt = 0;
    228 
    229         for (Layer l : data){
    230                 if(l instanceof GpxLayer){
     220        /**
     221         * The data model for the list component.
     222         */
     223        private DefaultListModel<GpxLayer> model = new DefaultListModel<>();
     224   
     225        /**
     226         * @param layer the targeting measurement layer
     227         */
     228        public GPXLayerImportAction(MeasurementLayer layer) {
     229            super(tr("Import path from GPX layer"), ImageProvider.get("dialogs", "edit")); // TODO: find better image
     230        }
     231   
     232        @Override
     233        public void actionPerformed(ActionEvent e) {
     234            Box panel = Box.createVerticalBox();
     235            final JList<GpxLayer> layerList = new JList<>(model);
     236            Collection<Layer> data = Main.map.mapView.getAllLayers();
     237            Layer lastLayer = null;
     238            int layerCnt = 0;
     239   
     240            for (Layer l : data) {
     241                if (l instanceof GpxLayer) {
    231242                    model.addElement((GpxLayer) l);
    232243                    lastLayer = l;
    233244                    layerCnt++;
    234245                }
    235         }
    236         if(layerCnt == 1){
     246            }
     247            if (layerCnt == 1) {
    237248                layerList.setSelectedValue(lastLayer, true);
    238249            }
    239             if(layerCnt > 0){
    240 
     250            if (layerCnt > 0) {
    241251                layerList.setCellRenderer(new DefaultListCellRenderer(){
    242                         @Override public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
    243                             Layer layer = (Layer)value;
    244                             JLabel label = (JLabel)super.getListCellRendererComponent(list,
    245                                                                                       layer.getName(), index, isSelected, cellHasFocus);
    246                             Icon icon = layer.getIcon();
    247                             label.setIcon(icon);
    248                             label.setToolTipText(layer.getToolTipText());
    249                             return label;
    250                         }
    251                     });
    252 
     252                    @Override
     253                    public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
     254                        Layer layer = (Layer)value;
     255                        JLabel label = (JLabel)super.getListCellRendererComponent(list,
     256                                                                                  layer.getName(), index, isSelected, cellHasFocus);
     257                        Icon icon = layer.getIcon();
     258                        label.setIcon(icon);
     259                        label.setToolTipText(layer.getToolTipText());
     260                        return label;
     261                    }
     262                });
     263   
    253264                JCheckBox dropFirst = new JCheckBox(tr("Drop existing path"));
    254 
     265   
    255266                panel.add(layerList);
    256267                panel.add(dropFirst);
    257 
     268   
    258269                final JOptionPane optionPane = new JOptionPane(panel, JOptionPane.QUESTION_MESSAGE, JOptionPane.OK_CANCEL_OPTION){
    259                         @Override public void selectInitialValue() {
     270                        @Override
     271                        public void selectInitialValue() {
    260272                            layerList.requestFocusInWindow();
    261273                        }
     
    263275                final JDialog dlg = optionPane.createDialog(Main.parent, tr("Import path from GPX layer"));
    264276                dlg.setVisible(true);
    265 
     277   
    266278                Object answer = optionPane.getValue();
    267279                if (answer == null || answer == JOptionPane.UNINITIALIZED_VALUE ||
     
    269281                    return;
    270282                }
    271 
     283   
    272284                GpxLayer gpx = (GpxLayer)layerList.getSelectedValue();
    273                 if(dropFirst.isSelected()){
     285                if (dropFirst.isSelected()) {
    274286                    points = new ArrayList<WayPoint>(32);
    275287                }
     
    281293                        }
    282294                    }
    283             }
     295                }
    284296                recalculate();
    285297                Main.parent.repaint();
    286             }else{
     298            } else{
    287299                // TODO: register a listener and show menu entry only if gps layers are available
    288300                // no gps layer
  • applications/editors/josm/plugins/measurement/src/org/openstreetmap/josm/plugins/measurement/MeasurementMode.java

    r13497 r30641  
     1// License: GPL. For details, see LICENSE file.
    12package org.openstreetmap.josm.plugins.measurement;
    23
     
    1617
    1718    private static final long serialVersionUID = 3853830673475744263L;
    18 
     19   
    1920    public MeasurementMode(MapFrame mapFrame, String name, String desc) {
    2021        super(name, "measurement.png", desc, mapFrame, Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
    2122    }
    2223
    23     @Override public void enterMode() {
     24    @Override
     25    public void enterMode() {
    2426        super.enterMode();
    2527        Main.map.mapView.addMouseListener(this);
    2628    }
    2729
    28     @Override public void exitMode() {
     30    @Override
     31    public void exitMode() {
    2932        super.exitMode();
    3033        Main.map.mapView.removeMouseListener(this);
     
    3942     * was part of.
    4043     */
    41     @Override public void mouseClicked(MouseEvent e) {
     44    @Override
     45    public void mouseClicked(MouseEvent e) {
    4246        if (e.getButton() == MouseEvent.BUTTON3){
    4347            MeasurementPlugin.getCurrentLayer().removeLastPoint();
    44         }else if (e.getButton() == MouseEvent.BUTTON1){
     48        } else if (e.getButton() == MouseEvent.BUTTON1){
    4549            LatLon coor = Main.map.mapView.getLatLon(e.getX(), e.getY());
    4650            if (coor.isOutSideWorld()) {
     
    5155        }
    5256    }
    53 
    5457}
  • applications/editors/josm/plugins/measurement/src/org/openstreetmap/josm/plugins/measurement/MeasurementPlugin.java

    r30353 r30641  
     1// License: GPL. For details, see LICENSE file.
    12package org.openstreetmap.josm.plugins.measurement;
    23/// @author Raphael Mack <osm@raphael-mack.de>
Note: See TracChangeset for help on using the changeset viewer.