Ignore:
Timestamp:
2011-07-25T13:17:41+02:00 (13 years ago)
Author:
akks
Message:

'InfoMode : link and velocity works, shift=highlight track'

Location:
applications/editors/josm/plugins/infomode
Files:
2 added
2 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/infomode/build.xml

    r26364 r26397  
    3030<project name="InfoMode" default="dist" basedir=".">
    3131    <!-- enter the SVN commit message -->
    32     <property name="commit.message" value="InfoMode initial commit"/>
     32    <property name="commit.message" value="InfoMode : link and velocity works, shift=highlight track"/>
    3333    <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
    3434    <property name="plugin.main.version" value="4201"/>
  • applications/editors/josm/plugins/infomode/src/org/openstreetmap/josm/plugins/infomode/InfoMode.java

    r26389 r26397  
    1111
    1212import java.awt.AWTEvent;
     13import java.awt.BasicStroke;
    1314import java.awt.Color;
    1415import java.awt.Point;
     
    2021import java.awt.Cursor;
    2122import java.awt.Graphics2D;
     23import java.awt.Shape;
     24import java.awt.Stroke;
    2225import java.awt.Toolkit;
    2326import java.awt.event.AWTEventListener;
     
    6871    @Override
    6972    public void enterMode() {
    70         System.out.println("entering mode");
    7173        if (!isEnabled()) return;
    7274        super.enterMode();
    73         System.out.println("enter mode");
    74        
    7575       
    7676        mv = Main.map.mapView;
    77        
    7877        Main.map.mapView.addMouseListener(this);
    7978        Main.map.mapView.addMouseMotionListener(this);
     
    9190    public void exitMode() {
    9291        super.exitMode();
    93         System.out.println("exit mode");
    9492        Main.map.mapView.removeMouseListener(this);
    9593        Main.map.mapView.removeMouseMotionListener(this);
     
    123121            GpxLayer gpxL = (GpxLayer )l;
    124122           
    125             double minDist=1e9,d,len=0;
     123            double minDist=1e9,d;
    126124            WayPoint wp=null,oldWp=null,prevWp=null;
    127125            GpxTrack trk=null;
     126            double maxD = mv.getDist100Pixel()/3;
    128127            for (GpxTrack track : gpxL.data.tracks) {
    129128                for (GpxTrackSegment seg : track.getSegments()) {
     129                    oldWp=null;// next segment will have new previous point
    130130                    for (WayPoint S : seg.getWayPoints()) {
    131131                        d = S.getEastNorth().distance(pos);
    132                         if (d<minDist && d<100) {
     132                       
     133                        if (d<minDist && d<maxD) {
    133134                            minDist = d;
    134135                            prevWp=oldWp;
     
    136137                            trk=track;
    137138                            }
    138                         oldWp=wp;
     139                        oldWp=S;
    139140                    }
    140141                }
     
    145146                g.setColor(Color.RED);
    146147                g.fillOval(p.x-10, p.y-10, 20, 20); // mark selected point
     148                if (shift) { // highlight track
     149                    g.setColor(new Color(255,30,0,128));
     150                    Stroke oldStroke = g.getStroke();
     151                    g.setStroke( new BasicStroke(10) );
     152                    for (GpxTrackSegment seg : trk.getSegments()) {
     153                    Point oldP=null,curP=null;// next segment will have new previous point
     154                        for (WayPoint S : seg.getWayPoints()) {
     155                            curP = mv.getPoint(S.getEastNorth());
     156                            if (oldP!=null) g.drawLine(oldP.x, oldP.y, curP.x, curP.y);
     157                            oldP = curP;
     158                        }
     159                    }
     160                    g.setStroke(oldStroke);
     161                }
     162                Point s=mv.getLocationOnScreen();
     163                int pcx = s.x+p.x-40;
     164                int pcy = s.y+p.y+30;
     165                if (shift) {pcx+=40; pcy-=30;}
    147166               
    148167                if (wp!=wpOld) {
    149                 if (oldPopup!=null) oldPopup.hide();
    150                 double vel=-1;
    151                 if (prevWp!=null && wp.time!=prevWp.time) {
    152                     vel=wp.getCoor().greatCircleDistance(prevWp.getCoor())/
    153                             (wp.time-prevWp.time)*3.6;
    154                 }
    155                 infoPanel.setData(wp,trk,vel,gpxL.data.tracks);
    156                 Point s=mv.getLocationOnScreen();
    157                 Popup pp=PopupFactory.getSharedInstance().getPopup(mv, infoPanel,
    158                         s.x+p.x+10, s.y+p.y+10);
    159                 pp.show();
    160                 wpOld=wp;
    161                 oldPopup=pp;
     168                    if (oldPopup!=null) oldPopup.hide();
     169                    double vel=-1;
     170                    if (prevWp!=null && wp.time!=prevWp.time) {
     171                        vel=wp.getCoor().greatCircleDistance(prevWp.getCoor())/
     172                                (wp.time-prevWp.time)*3.6;
     173                    }
     174                    infoPanel.setData(wp,trk,vel,gpxL.data.tracks);
     175                    Popup pp=PopupFactory.getSharedInstance().getPopup(mv, infoPanel,
     176                            pcx, pcy);
     177                    pp.show();
     178                    wpOld=wp;
     179                    oldPopup=pp;
    162180                }
    163181            }
     
    267285        }
    268286    }
    269 
    270    
    271 
    272    
    273287}
Note: See TracChangeset for help on using the changeset viewer.