Ignore:
Timestamp:
2011-08-09T18:06:03+02:00 (13 years ago)
Author:
akks
Message:

'InfoMode : scan all layers, URL bug fixed'

Location:
applications/editors/josm/plugins/infomode/src/org/openstreetmap/josm/plugins/infomode
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/infomode/src/org/openstreetmap/josm/plugins/infomode/InfoMode.java

    r26399 r26503  
    2121import java.awt.Cursor;
    2222import java.awt.Graphics2D;
    23 import java.awt.Shape;
    2423import java.awt.Stroke;
    2524import java.awt.Toolkit;
     
    3029import java.util.HashSet;
    3130import java.util.Set;
     31import javax.swing.JOptionPane;
    3232import javax.swing.Popup;
    3333import javax.swing.PopupFactory;
     
    3838import org.openstreetmap.josm.data.gpx.GpxTrack;
    3939import org.openstreetmap.josm.data.gpx.GpxTrackSegment;
     40import org.openstreetmap.josm.gui.ConditionalOptionPaneUtil;
    4041import org.openstreetmap.josm.gui.MapFrame;
    4142import org.openstreetmap.josm.gui.MapView;
     
    7374        if (!isEnabled()) return;
    7475        super.enterMode();
    75        
    7676        mv = Main.map.mapView;
    7777        Main.map.mapView.addMouseListener(this);
    7878        Main.map.mapView.addMouseMotionListener(this);
    7979        Main.map.mapView.addTemporaryLayer(this);
    80 
     80        /*if (!(Main.main.getActiveLayer() instanceof GpxLayer)) {
     81            boolean answer = ConditionalOptionPaneUtil.showConfirmationDialog(
     82                    "scan_all_layers", Main.parent,
     83                    tr("Please select GPX layer to view only its trackpoint info. Do you want to scan all GPX layers?"),
     84                    tr("Select layer to scan"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, JOptionPane.YES_OPTION );
     85                 if(!answer) return;
     86        }*/
     87
     88        Main.map.statusLine.setHelpText(tr("Move the mouse to show trackpoint info for current layer. Hold shift to highlight tracks"));
     89        Main.map.statusLine.repaint();
    8190
    8291        try {
     
    115124    @Override
    116125    public void paint(Graphics2D g, MapView mv, Bounds bbox) {
    117        
     126        if (pos==null) return;
     127        Layer curL= Main.main.getActiveLayer();
     128        if (curL instanceof GpxLayer) showLayerInfo(g,curL,mv); else {       
     129            for (Layer l:mv.getAllLayers()) {
     130                if (l instanceof GpxLayer) {
     131                    if (showLayerInfo(g,l,mv)) return;
     132                }
     133            }
     134        }
     135    }
     136
     137    @Override
     138    public void eventDispatched(AWTEvent event) {
     139        updateKeyModifiers((InputEvent) event);
     140        if (event.getID() == KeyEvent.KEY_PRESSED) {
     141            doKeyEvent((KeyEvent) event);
     142        }
     143//        updateStatusLine();
     144        repaint();
     145    }
     146
     147    @Override
     148    public void mousePressed(MouseEvent e) {
     149        if (!isEnabled()) return;
     150        if (e.getButton() != MouseEvent.BUTTON1) return;
     151        //setStatusLine(tr("Please move the mouse to draw new way"));
     152        repaint();
     153
     154    }
     155
     156    @Override
     157    public void mouseReleased(MouseEvent e) {
     158        if (!isEnabled()) return;
     159        if (e.getButton() != MouseEvent.BUTTON1) return;
     160        if (oldPopup!=null) {
     161            oldPopup.hide();
     162            oldPopup=null;        wpOld=null;
     163        }       
     164        repaint();
     165    }
     166
     167    @Override
     168    public void mouseDragged(MouseEvent e) {
     169        if (oldPopup!=null) {
     170            oldPopup.hide();
     171            oldPopup=null;        wpOld=null;
     172        }
     173    }
     174
     175    @Override
     176    public void mouseMoved(MouseEvent e) {
     177        if (!isEnabled()) return;
     178        pos = mv.getEastNorth(e.getX(), e.getY());
     179        repaint();
     180    }
     181
     182    private void doKeyEvent(KeyEvent e) {
     183        ///  System.out.println(e);
     184        if (e.getKeyCode() == KeyEvent.VK_BACK_SPACE) {
     185            filterTracks();
     186            repaint();
     187        }
     188        if (e.getKeyCode() == KeyEvent.VK_BACK_SLASH ||
     189                e.getKeyCode() == KeyEvent.VK_ENTER ||
     190                e.getKeyCode() == KeyEvent.VK_ESCAPE) {
     191            Main.map.selectSelectTool(false);
     192        }
     193    }
     194   
     195
     196    /**
     197     * Updates shift and ctrl key states
     198     */
     199    private void updateKeyModifiers(InputEvent e) {
     200        oldCtrl = ctrl;
     201        oldShift = shift;
     202        ctrl = (e.getModifiers() & ActionEvent.CTRL_MASK) != 0;
     203        shift = (e.getModifiers() & ActionEvent.SHIFT_MASK) != 0;
     204    }
     205
     206    @Override
     207    protected void updateStatusLine() {
     208        Main.map.statusLine.setHelpText(statusText);
     209        Main.map.statusLine.repaint();
     210    }
     211// </editor-fold>
     212
     213
     214
     215    private void repaint() {
     216        if (Main.map!=null) Main.map.mapView.repaint();
     217    }
     218    private void setStatusLine(String tr) {
     219        statusText=tr;
     220        updateStatusLine();
     221    }
     222
     223    private synchronized void filterTracks() {
    118224        Layer l = Main.main.getActiveLayer();
    119225       
    120226        if (l instanceof GpxLayer && pos!=null) {
     227            GpxLayer gpxL = (GpxLayer )l;
     228            Set<GpxTrack> toRemove = new HashSet<GpxTrack>();
     229            for (GpxTrack track : gpxL.data.tracks) {
     230                boolean f=true;
     231                sg: for (GpxTrackSegment seg : track.getSegments()) {
     232                    for (WayPoint S : seg.getWayPoints()) {
     233                        if (S.time!=0) {f=false; break sg;}
     234                    }
     235                }
     236                if (f) toRemove.add(track);
     237            }
     238            gpxL.data.tracks.removeAll(toRemove);
     239                               
     240
     241        }
     242    }
     243
     244    private boolean showLayerInfo(Graphics2D g, Layer l, MapView mv) {
    121245            GpxLayer gpxL = (GpxLayer )l;
    122246           
     
    179303                    oldPopup=pp;
    180304                }
     305                return true;
    181306            }
    182            
    183         }
    184     }
    185 
    186     @Override
    187     public void eventDispatched(AWTEvent event) {
    188         updateKeyModifiers((InputEvent) event);
    189         if (event.getID() == KeyEvent.KEY_PRESSED) {
    190             doKeyEvent((KeyEvent) event);
    191         }
    192 //        updateStatusLine();
    193         repaint();
    194     }
    195 
    196     @Override
    197     public void mousePressed(MouseEvent e) {
    198         if (!isEnabled()) return;
    199         if (e.getButton() != MouseEvent.BUTTON1) return;
    200         //setStatusLine(tr("Please move the mouse to draw new way"));
    201         repaint();
    202 
    203     }
    204 
    205     @Override
    206     public void mouseReleased(MouseEvent e) {
    207         if (!isEnabled()) return;
    208         if (e.getButton() != MouseEvent.BUTTON1) return;
    209         if (oldPopup!=null) {
    210             oldPopup.hide();
    211             oldPopup=null;        wpOld=null;
    212         }       
    213         repaint();
    214     }
    215 
    216     @Override
    217     public void mouseDragged(MouseEvent e) {
    218         if (oldPopup!=null) {
    219             oldPopup.hide();
    220             oldPopup=null;        wpOld=null;
    221         }
    222     }
    223 
    224     @Override
    225     public void mouseMoved(MouseEvent e) {
    226         if (!isEnabled()) return;
    227         pos = mv.getEastNorth(e.getX(), e.getY());
    228         repaint();
    229     }
    230 
    231     private void doKeyEvent(KeyEvent e) {
    232         ///  System.out.println(e);
    233         if (e.getKeyCode() == KeyEvent.VK_BACK_SPACE) {
    234             filterTracks();
    235             repaint();
    236         }
    237         if (e.getKeyCode() == KeyEvent.VK_BACK_SLASH ||
    238                 e.getKeyCode() == KeyEvent.VK_ENTER ||
    239                 e.getKeyCode() == KeyEvent.VK_ESCAPE) {
    240             Main.map.selectSelectTool(false);
    241         }
    242     }
    243    
    244 
    245     /**
    246      * Updates shift and ctrl key states
    247      */
    248     private void updateKeyModifiers(InputEvent e) {
    249         oldCtrl = ctrl;
    250         oldShift = shift;
    251         ctrl = (e.getModifiers() & ActionEvent.CTRL_MASK) != 0;
    252         shift = (e.getModifiers() & ActionEvent.SHIFT_MASK) != 0;
    253     }
    254 
    255     @Override
    256     protected void updateStatusLine() {
    257         Main.map.statusLine.setHelpText(statusText);
    258         Main.map.statusLine.repaint();
    259     }
    260 // </editor-fold>
    261 
    262 
    263 
    264     private void repaint() {
    265         if (Main.map!=null) Main.map.mapView.repaint();
    266     }
    267     private void setStatusLine(String tr) {
    268         statusText=tr;
    269         updateStatusLine();
    270     }
    271 
    272     private synchronized void filterTracks() {
    273         Layer l = Main.main.getActiveLayer();
    274        
    275         if (l instanceof GpxLayer && pos!=null) {
    276             GpxLayer gpxL = (GpxLayer )l;
    277             Set<GpxTrack> toRemove = new HashSet<GpxTrack>();
    278             for (GpxTrack track : gpxL.data.tracks) {
    279                 boolean f=true;
    280                 sg: for (GpxTrackSegment seg : track.getSegments()) {
    281                     for (WayPoint S : seg.getWayPoints()) {
    282                         if (S.time!=0) {f=false; break sg;}
    283                     }
    284                 }
    285                 if (f) toRemove.add(track);
    286             }
    287             gpxL.data.tracks.removeAll(toRemove);
    288                                
    289 
    290         }
     307            return false;
    291308    }
    292309}
  • applications/editors/josm/plugins/infomode/src/org/openstreetmap/josm/plugins/infomode/InfoModePlugin.java

    r26364 r26503  
    55 * Licence: GPL v2 or later
    66 * Author:  Alexei Kasatkin, 2011
     7 * Ideas by siberiano, Ilis, chnav, Polarbear-j,
    78 */
    89
  • applications/editors/josm/plugins/infomode/src/org/openstreetmap/josm/plugins/infomode/InfoPanel.java

    r26397 r26503  
    2222import org.openstreetmap.josm.tools.GBC;
    2323import org.openstreetmap.josm.tools.OpenBrowser;
    24 import org.openstreetmap.josm.tools.UrlLabel;
    2524
    2625import static org.openstreetmap.josm.tools.I18n.tr;
     
    118117        if (trk.getAttributes().containsKey("url")) {
    119118           label6.setText(trk.getAttributes().get("url").toString());
    120         }
     119        } else label6.setText(null);
    121120    }
    122121   
Note: See TracChangeset for help on using the changeset viewer.