Changeset 21631 in osm


Ignore:
Timestamp:
2010-06-09T22:58:18+02:00 (14 years ago)
Author:
guardian
Message:

manual sync, comments, code cleanup

Location:
applications/editors/josm/plugins/videomapping
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/videomapping/.classpath

    r21555 r21631  
    55        <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
    66        <classpathentry combineaccessrules="false" kind="src" path="/JOSM"/>
    7         <classpathentry kind="lib" path="D:/Projekte/Studium/GeoProjekt/working/VideoMapping/lib/vlcj-1.1f.jar">
     7        <classpathentry kind="lib" path="D:/Projekte/Studium/GeoProjekt/working/VideoMapping/lib/jna.jar"/>
     8        <classpathentry kind="lib" path="D:/Projekte/Studium/GeoProjekt/working/VideoMapping/lib/vlcj-1.1h.jar">
    89                <attributes>
    9                         <attribute name="javadoc_location" value="jar:file:/C:/Dokumente und Einstellungen/g/Eigene Dateien/Workspace/vlcj/vlcj-1.1f-javadoc.jar!/"/>
     10                        <attribute name="javadoc_location" value="jar:file:/D:/Projekte/Studium/GeoProjekt/working/vlcj/vlcj-1.1h-javadoc.jar!/"/>
    1011                </attributes>
    1112        </classpathentry>
     13        <classpathentry kind="lib" path="D:/Projekte/Studium/GeoProjekt/working/VideoMapping/lib/log4j.jar"/>
    1214        <classpathentry kind="output" path="bin"/>
    1315</classpath>
  • applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/GpsPlayer.java

    r21584 r21631  
    1919        private WayPoint prev,curr,next;
    2020        private WayPoint start;
     21        private Timer t;
     22        private TimerTask ani; //for moving trough the list
    2123       
    2224
     
    3638                super();
    3739                this.ls = l;
     40                //set start position
    3841                start=ls.get(0);
    3942                prev=null;
     
    4245        }
    4346       
     47        // one secure step forward
    4448        public void next() {           
    4549                if(ls.indexOf(curr)+1<ls.size())
     
    5458        }
    5559       
     60        //one secure step backward
    5661        public void prev()
    5762        {
     
    6570        }
    6671       
     72        //select the given waypoint as center
    6773        public void jump(WayPoint p)
    6874        {
     
    8389        }
    8490       
    85         public void jump(int t)
    86         {
    87                 if ((ls.indexOf(curr)+t>0)&&(ls.indexOf(curr)<ls.size()))
    88                 {
    89                         jump(ls.get(ls.indexOf(curr)+t)); //FIXME here is a bug
     91        //select the k-th waypoint
     92        public void jump(int k)
     93        {
     94                if ((ls.indexOf(curr)+k>0)&&(ls.indexOf(curr)<ls.size()))
     95                {
     96                        jump(ls.get(ls.indexOf(curr)+k)); //FIXME here is a bug
    9097                }               
    9198        }
    9299       
    93         //gets only points on the line of the GPS track between waypoints nearby the point m
     100        //gets only points on the line of the GPS track (between waypoints) nearby the point m
    94101        private Point getInterpolated(Point m)
    95102        {
     
    145152        }
    146153       
     154        //returns a point on the p% of the current selected segment
    147155        private Point getInterpolated(float percent)
    148156        {
     
    150158                int dX,dY;
    151159                Point p;
    152                 Point leftP,rightP,highP,lowP;
     160                Point leftP,rightP;
    153161                Point c = Main.map.mapView.getPoint(getCurr().getEastNorth());
    154162                Point p1 = Main.map.mapView.getPoint(getCurr().getEastNorth());
     
    157165                leftP=getLeftPoint(p1, p2);
    158166                rightP=getRightPoint(p1,p2);
    159                 highP=getHighPoint(p1, p2);
    160                 lowP=getLowPoint(p1, p2);
    161167                //we will never go over the segment
    162168                percent=percent/100;
     
    200206                old=old+inc;
    201207                Date t = new Date(old);
    202                 w.time = t.getTime()/1000; //TODO need better way to set time
     208                w.time = t.getTime()/1000; //TODO need better way to set time and sync it
    203209                SimpleDateFormat df = new SimpleDateFormat("hh:mm:ss:S");
    204210                /*System.out.print(length+"px ");
     
    211217        }
    212218
     219        //returns a point and time for the current segment
    213220        private WayPoint getInterpolatedWaypoint(float percentage)
    214221        {
     
    218225        }
    219226       
     227        //returns n points on the current segment
    220228        public List<WayPoint> getInterpolatedLine(int interval)
    221229        {
     
    281289        }
    282290
     291        //returns time in ms relatie to startpoint
    283292        public long getRelativeTime()
    284293        {
     
    286295        }
    287296
    288         //jumps to a speciffic time
     297        //jumps to a specific time
    289298        public void jump(long relTime) {
    290                 jump(relTime/1000);             //TODO ugly quick hack 
    291                
     299                int pos = (int) (relTime/1000);//TODO ugly quick hack   
     300                jump(pos);             
     301               
     302        }
     303       
     304        //toggles walking along the track
     305        public void play()
     306        {
     307                if (t==null)
     308                {
     309                        //start
     310                        t= new Timer();
     311                        ani=new TimerTask() {                   
     312                                @Override
     313                                //some cheap animation stuff
     314                                public void run() {                             
     315                                        next();
     316                                        Main.map.mapView.repaint();
     317                                }
     318                        };
     319                        t.schedule(ani,1000,1000);                     
     320                }
     321                else
     322                {
     323                        //stop
     324                        ani.cancel();
     325                        ani=null;
     326                        t.cancel();
     327                        t=null;                                 
     328                }
    292329        }
    293330       
  • applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/PositionLayer.java

    r21584 r21631  
    4444import org.openstreetmap.josm.gui.dialogs.LayerListPopup;
    4545import org.openstreetmap.josm.gui.layer.Layer;
     46import org.openstreetmap.josm.plugins.videomapping.video.GPSVideoPlayer;
    4647import org.openstreetmap.josm.tools.ImageProvider;
    4748import org.openstreetmap.josm.tools.Shortcut;
    4849
    49 public class PositionLayer extends Layer implements MouseListener,MouseMotionListener, KeyListener {
     50//Basic rendering and GPS layer interaction
     51public class PositionLayer extends Layer implements MouseListener,MouseMotionListener {
    5052        private List<WayPoint> ls;
    51         public GpsPlayer l;
    52         private Collection<WayPoint> selected;
    53         private Timer t;
    54         private TimerTask ani;
     53        public GpsPlayer player;
    5554        private boolean dragIcon=false; //do we move the icon by hand?
    5655        private WayPoint iconPosition;
    5756        private Point mouse;
    5857        private ImageIcon icon;
    59         private SimpleDateFormat df;
     58        private SimpleDateFormat mins;
     59        private SimpleDateFormat ms;
     60        private GPSVideoPlayer gps;
    6061               
    6162        public PositionLayer(String name, final List<WayPoint> ls) {
    6263                super(name);
    6364                this.ls=ls;
    64                 l= new GpsPlayer(ls);
    65                 selected = new ArrayList<WayPoint>();
     65                player= new GpsPlayer(ls);
     66
    6667                icon=ImageProvider.get("videomapping.png");
    67                 df = new SimpleDateFormat("hh:mm:ss:S");
     68                mins = new SimpleDateFormat("hh:mm:ss:S");
     69                ms= new SimpleDateFormat("mm:ss");
    6870                Main.map.mapView.addMouseListener(this);
    6971                Main.map.mapView.addMouseMotionListener(this);                                                 
     
    7981        @Override
    8082        public Object getInfoComponent() {
    81                 // TODO Auto-generated method stub
    8283                return null;
    8384        }
     
    115116       
    116117        @Override
    117         //Draw the current position
     118        //Draw the current position, infos, waypoints
    118119        public void paint(Graphics2D g, MapView map, Bounds bound) {
    119120                Point p;
     
    126127                        g.drawOval(p.x - 2, p.y - 2, 4, 4);
    127128                        }
    128                 g.setColor(Color.RED);
    129                 //draw selected GPS points
    130                 for(WayPoint n:selected)
    131                 {
    132                         p = Main.map.mapView.getPoint(n.getEastNorth());
    133                         g.drawOval(p.x - 2, p.y - 2, 4, 4);
    134                 }
    135129                //draw surrounding points
    136130                g.setColor(Color.YELLOW);
    137                 if(l.getPrev()!=null)
    138                 {
    139                         p = Main.map.mapView.getPoint(l.getPrev().getEastNorth());
     131                if(player.getPrev()!=null)
     132                {
     133                        p = Main.map.mapView.getPoint(player.getPrev().getEastNorth());
    140134                        g.drawOval(p.x - 2, p.y - 2, 4, 4);
    141                         Point p2 = Main.map.mapView.getPoint(l.getCurr().getEastNorth());
     135                        Point p2 = Main.map.mapView.getPoint(player.getCurr().getEastNorth());
    142136                        g.drawLine(p.x, p.y, p2.x, p2.y);
    143137                }
    144                 if(l.getNext()!=null)
    145                 {
    146                         p = Main.map.mapView.getPoint(l.getNext().getEastNorth());
     138                if(player.getNext()!=null)
     139                {
     140                        p = Main.map.mapView.getPoint(player.getNext().getEastNorth());
    147141                        g.drawOval(p.x - 2, p.y - 2, 4, 4);
    148                         Point p2 = Main.map.mapView.getPoint(l.getCurr().getEastNorth());
     142                        Point p2 = Main.map.mapView.getPoint(player.getCurr().getEastNorth());
    149143                        g.drawLine(p.x, p.y, p2.x, p2.y);
    150144                }
     
    152146                g.setColor(Color.CYAN);
    153147                g.setBackground(Color.CYAN);
    154                 LinkedList<WayPoint> ipo=(LinkedList<WayPoint>) l.getInterpolatedLine(5);
     148                LinkedList<WayPoint> ipo=(LinkedList<WayPoint>) player.getInterpolatedLine(5);
    155149                for (WayPoint wp : ipo) {
    156150                        p=Main.map.mapView.getPoint(wp.getEastNorth());
     
    166160                                p=Main.map.mapView.getPoint(iconPosition.getEastNorth());
    167161                                icon.paintIcon(null, g, p.x-icon.getIconWidth()/2, p.y-icon.getIconHeight()/2);                         
    168                                 g.drawString(df.format(iconPosition.getTime()),p.x,p.y);
     162                                g.drawString(mins.format(iconPosition.getTime()),p.x-10,p.y-10);
    169163                        }
    170164                }
    171165                else
    172166                {
    173                         if (l.getCurr()!=null){
    174                         p=Main.map.mapView.getPoint(l.getCurr().getEastNorth());
    175                         icon.paintIcon(null, g, p.x-icon.getIconWidth()/2, p.y-icon.getIconHeight()/2);
    176                         SimpleDateFormat ms=new SimpleDateFormat("mm:ss");
    177                         g.drawString(ms.format(l.getRelativeTime()),p.x,p.y);
    178                         }
    179                 }
    180         }
    181        
    182         private void markNearestWayPoints(Point mouse) {
    183                 final int MAX=10;
    184                 Point p;               
    185                 Rectangle rect = new Rectangle(mouse.x-MAX/2,mouse.y-MAX/2,MAX,MAX);
    186                 //iterate through all possible notes
    187                 for(WayPoint n : ls)
    188                 {
    189                         p = Main.map.mapView.getPoint(n.getEastNorth());
    190                         if (rect.contains(p))
    191                         {                               
    192                                 selected.add(n);
    193                         }
    194                        
    195                 }       
     167                        if (player.getCurr()!=null){
     168                        p=Main.map.mapView.getPoint(player.getCurr().getEastNorth());
     169                        icon.paintIcon(null, g, p.x-icon.getIconWidth()/2, p.y-icon.getIconHeight()/2);                 
     170                        g.drawString(ms.format(player.getRelativeTime()),p.x-10,p.y-10);
     171                        }
     172                }
    196173        }
    197174       
     
    215192        }
    216193       
     194        //upper left corner like rectangle
     195        private Rectangle getIconRect()
     196        {
     197                Point p = Main.map.mapView.getPoint(player.getCurr().getEastNorth());
     198                return new Rectangle(p.x-icon.getIconWidth()/2,p.y-icon.getIconHeight()/2,icon.getIconWidth(),icon.getIconHeight());
     199        }
     200
     201
    217202        @Override
    218203        public void visitBoundingBox(BoundingXYVisitor arg0) {
    219                 // TODO dunno what to do here
    220 
    221         }
    222 
    223         //mark selected points
     204                // TODO don't know what to do here
     205
     206        }
     207
    224208        public void mouseClicked(MouseEvent e) {               
    225209        }
     
    231215        }
    232216
     217        //init drag&drop
    233218        public void mousePressed(MouseEvent e) {
    234219                if(e.getButton() == MouseEvent.BUTTON1) {
    235220                        //is it on the cam icon?
    236                         if (l.getCurr()!=null)
     221                        if (player.getCurr()!=null)
    237222                        {
    238223                                if (getIconRect().contains(e.getPoint()))
     
    246231               
    247232        }
    248 
    249         public void mouseReleased(MouseEvent e) {
    250                
    251                 //only on leftclicks of our layer
     233       
     234        //
     235        public void mouseReleased(MouseEvent e) {              
     236                //only leftclicks on our layer
    252237                if(e.getButton() == MouseEvent.BUTTON1) {
    253238                        if(dragIcon)
     
    257242                        else
    258243                        {
    259                                 //JOptionPane.showMessageDialog(Main.parent,"test");
    260                                 markNearestWayPoints(e.getPoint());
     244                                //simple click
    261245                                WayPoint wp = getNearestWayPoint(e.getPoint());
    262246                                if(wp!=null)
    263247                                {
    264                                         l.jump(wp);                     
     248                                        player.jump(wp);
     249                                        if(gps!=null) gps.notifyGPSClick();
    265250                                }
    266251                        }
     
    270255        }
    271256       
    272        
     257        //slide and restrict during movement
    273258        public void mouseDragged(MouseEvent e) {               
    274259                if(dragIcon)
     
    276261                        mouse=e.getPoint();
    277262                        //restrict to GPS track
    278                         iconPosition=l.getInterpolatedWaypoint(mouse);
     263                        iconPosition=player.getInterpolatedWaypoint(mouse);
    279264
    280265                        Main.map.mapView.repaint();
     
    282267        }
    283268
    284         private Rectangle getIconRect()
    285         {
    286                 Point p = Main.map.mapView.getPoint(l.getCurr().getEastNorth());
    287                 return new Rectangle(p.x-icon.getIconWidth()/2,p.y-icon.getIconHeight()/2,icon.getIconWidth(),icon.getIconHeight());
    288         }
    289        
     269        //visualize drag&drop
    290270        public void mouseMoved(MouseEvent e) {         
    291                
    292                 if (l.getCurr()!=null)
     271                if (player.getCurr()!=null)
    293272                {                                               
    294273                        if (getIconRect().contains(e.getPoint()))
     
    304283        }
    305284
    306         public void keyPressed(KeyEvent e) {
    307                 int i;
    308                 System.out.println(e.getKeyCode());
    309                 switch(e.getKeyCode())
    310                 {
    311                         case KeyEvent.VK_RIGHT:
    312                                 {
    313                                         l.jump(1);
    314                                 };break;
    315                         case KeyEvent.VK_LEFT:
    316                         {
    317                                 l.jump(-1);
    318 
    319                         };break;
    320                         case KeyEvent.VK_SPACE:
    321                         {
    322                                 ani.cancel();
    323                         }
    324                 }
    325                
    326         }
    327 
    328         public void keyReleased(KeyEvent e) {
    329                 // TODO Auto-generated method stub
    330                
    331         }
    332 
    333         public void keyTyped(KeyEvent e) {
    334                 // TODO Auto-generated method stub
    335                
    336         }
    337        
    338         public void pause()
    339         {
    340                 if (t==null)
    341                 {
    342                         //start
    343                         t= new Timer();
    344                         TimerTask ani=new TimerTask() {                 
    345                                 @Override
    346                                 //some cheap animation stuff
    347                                 public void run() {                             
    348                                         l.next();
    349                                         Main.map.mapView.repaint();
    350                                 }
    351                         };
    352                         t.schedule(ani,500,500);
    353                         //and video
    354                        
    355                 }
    356                 else
    357                 {
    358                         //stop
    359                         t.cancel();
    360                         t=null;                                 
    361                 }
    362         }
    363 
    364 
    365         public void backward() {
    366                 if(l!=null)l.prev();
    367                 Main.map.mapView.repaint();
    368         }
    369        
    370         public void forward() {
    371                 if(l!=null)l.next();
    372                 Main.map.mapView.repaint();
    373         }
    374 
    375 
    376         public void loop() {
    377                 // TODO Auto-generated method stub
    378                
    379         }
    380 
     285        public void setGPSPlayer(GPSVideoPlayer player) {
     286                this.gps = player;
     287               
     288        }
    381289}
  • applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/VideoMappingPlugin.java

    r21584 r21631  
    3737 * This Plugin allows you to link a video against a GPS track and playback both synchronously
    3838 */
     39
     40//Here we manage properties and start the other classes
    3941public class VideoMappingPlugin extends Plugin implements LayerChangeListener{
    4042          private JMenu VMenu;
     
    4244          private List<WayPoint> ls;
    4345          private JosmAction VAdd,VStart,Vbackward,Vforward,Vloop;
    44           private GPSVideoPlayer video;
    45         private PositionLayer layer;
     46          private GPSVideoPlayer player;
     47          private PositionLayer layer;
    4648         
    4749
     
    9799                        public void actionPerformed(ActionEvent arg0) {
    98100                                copyGPSLayer();
     101                                enableControlMenus(true);
    99102                                layer = new PositionLayer("test",ls);
    100                                 Main.main.addLayer(layer);
    101                                 enableControlMenus(true);
    102                                 video = new GPSVideoPlayer(new File("C:\\temp\\test.mpg"), layer.l);
     103                                Main.main.addLayer(layer);                             
     104                                player = new GPSVideoPlayer(new File("C:\\temp\\test.mpg"), layer.player);
     105                                layer.setGPSPlayer(player);
    103106                        }
    104107                };
     
    107110                       
    108111                        public void actionPerformed(ActionEvent e) {                                                           
    109                                 video.play();                           
    110                                 video.jump(605000);
    111                                 layer.l.jump(9*60+20);
    112                                 layer.pause();
     112                                //video.play();                         
     113                                //video.jump(605000);
     114                                //layer.l.jump(9*60+20);
     115                                //layer.pause();
     116                                player.play((9*60+20)*1000);
    113117                        }
    114118                };
     
    117121                       
    118122                        public void actionPerformed(ActionEvent e) {
    119                                 layer.backward();
     123                                //layer.backward();
    120124                                                       
    121125                        }
     
    125129                       
    126130                        public void actionPerformed(ActionEvent e) {
    127                                 layer.forward();
     131                                //layer.forward();
    128132                                                       
    129133                        }
     
    133137                       
    134138                        public void actionPerformed(ActionEvent e) {
    135                                 layer.loop();
     139                                //layer.loop();
    136140                                                       
    137141                        }
     
    147151       
    148152       
    149         //we can only move on our layer
     153        //we can only work on our own layer
    150154        private void enableControlMenus(boolean enabled)
    151155        {
  • applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/video/GPSVideoFile.java

    r21584 r21631  
    44// a specific synced video
    55public class GPSVideoFile extends File{
    6         public long offset;
     6        public long offset; //time difference in ms between GPS and Video track
    77       
    88        public GPSVideoFile(File f, long offset) {
  • applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/video/GPSVideoPlayer.java

    r21584 r21631  
    11package org.openstreetmap.josm.plugins.videomapping.video;
     2import java.awt.Color;
     3import java.awt.event.ActionEvent;
     4import java.awt.event.ActionListener;
    25import java.io.File;
    36import java.util.Timer;
    47import java.util.TimerTask;
    58
     9import javax.swing.JButton;
     10
     11import org.openstreetmap.josm.command.AddCommand;
     12import org.openstreetmap.josm.data.gpx.WayPoint;
    613import org.openstreetmap.josm.plugins.videomapping.GpsPlayer;
    714
    8 
    9 public class GPSVideoPlayer extends SimpleVideoPlayer{
     15//combines video and GPS playback
     16public class GPSVideoPlayer{
    1017        Timer t;
    1118        TimerTask syncGPSTrack;
    12         private GpsPlayer pl;
     19        private GpsPlayer gps;
     20        private SimpleVideoPlayer video;
     21        private JButton syncBtn;
    1322        private GPSVideoFile file;
     23        private boolean synced=false; //do we playback the players together?
     24       
    1425
    1526        public GPSVideoPlayer(File f, final GpsPlayer pl) {
    1627                super();
    17                 this.pl = pl;
    18                 this.file = new GPSVideoFile(f, (long)0);//10,05
    19                 setFile(file.getAbsoluteFile());
    20                 t = new Timer();
    21                 syncGPSTrack= new TimerTask() {
    22                        
    23                         @Override
    24                         public void run() {
    25                                 pl.next();
    26                                 //pl.jump(file.offset+)
    27                                
     28                this.gps = pl;
     29                //test sync
     30                video = new SimpleVideoPlayer();
     31                /*
     32                long gpsT=(9*60+20)*1000;
     33                long videoT=10*60*1000+5*1000;
     34                setFile(new GPSVideoFile(f, gpsT-videoT)); */
     35                setFile(new GPSVideoFile(f, 0L));
     36                //extend GUI
     37                syncBtn= new JButton("sync");
     38                syncBtn.setBackground(Color.RED);
     39                syncBtn.addActionListener(new ActionListener() {
     40                        //do a sync
     41                        public void actionPerformed(ActionEvent e) {
     42                                long diff=gps.getRelativeTime()-video.getTime();
     43                                file= new GPSVideoFile(file, diff);
     44                                syncBtn.setBackground(Color.GREEN);
     45                                synced=true;
     46                                gps.play();
    2847                        }
    29                 };
    30                 //t.schedule(syncGPSTrack, 1000, 1000);
     48                });
     49                setSyncMode(true);
     50                video.addComponent(syncBtn);
     51                t = new Timer();               
    3152        }
     53       
     54        public void setSyncMode(boolean b)
     55        {
     56                if(b)
     57                {
     58                        syncBtn.setVisible(true);
     59                }
     60                else
     61                {
     62                        syncBtn.setVisible(false);
     63                }
     64        }
     65       
     66               
     67        public void setFile(GPSVideoFile f)
     68        {
     69               
     70                file=f;
     71                video.setFile(f.getAbsoluteFile());
     72                video.play();
     73        }
     74       
     75        public void play(long gpsstart)
     76        {
     77                jumpToGPSTime(gpsstart);
     78                gps.jump(gpsstart);
     79                gps.play();
     80        }
     81       
     82        //jumps in video to the corresponding linked time
     83        public void jumpToGPSTime(long gpsT)
     84        {
     85                video.jump(getVideoTime(gpsT));
     86        }
     87       
     88        //calc synced timecode from video
     89        private long getVideoTime(long GPStime)
     90        {
     91                return GPStime-file.offset;
     92        }
     93       
     94        //calc corresponding GPS time
     95        private long getGPSTime(long videoTime)
     96        {
     97                return videoTime+file.offset;
     98        }
     99
     100        //when we clicked on the layer, here we update the video position
     101        public void notifyGPSClick() {
     102                if(synced) jumpToGPSTime(gps.getRelativeTime());
     103               
     104        }
     105       
    32106}
  • applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/video/SimpleVideoPlayer.java

    r21584 r21631  
    2222import javax.swing.Action;
    2323import javax.swing.JButton;
     24import javax.swing.JComponent;
    2425import javax.swing.JFrame;
    2526import javax.swing.JPanel;
     
    7980                    df = new SimpleDateFormat("hh:mm:ss:S");
    8081                    scr=new Canvas();
    81                     timeline = new JSlider(0,100,0);
     82                    timeline = new JSlider(0,100,0); //TODO better setup for ticks
    8283                    play= new JButton("play");
    8384                    back= new JButton("<");
     
    99100                        //set updater
    100101                        ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
    101                         executorService.scheduleAtFixedRate(new Syncer(this), 0L, 500L, TimeUnit.MILLISECONDS);
     102                        executorService.scheduleAtFixedRate(new Syncer(this), 0L, 1000L, TimeUnit.MILLISECONDS);
    102103                    //setDefaultCloseOperation(EXIT_ON_CLOSE);
    103104                        addWindowListener(this);
     
    209210
    210211        public void finished(MediaPlayer arg0) {
    211                 // TODO Auto-generated method stub
    212                
     212                       
    213213        }
    214214
    215215        public void lengthChanged(MediaPlayer arg0, long arg1) {
    216                 // TODO Auto-generated method stub
    217                
    218         }
    219 
    220         public void metaDataAvailable(MediaPlayer arg0, VideoMetaData arg1) {
    221                 // TODO Auto-generated method stub
    222                
     216
     217        }
     218
     219        public void metaDataAvailable(MediaPlayer arg0, VideoMetaData data) {
     220                scr.setSize(data.getVideoDimension());
     221                pack();
     222
    223223        }
    224224
    225225        public void paused(MediaPlayer arg0) {
    226                 // TODO Auto-generated method stub
    227                
     226
    228227        }
    229228
    230229        public void playing(MediaPlayer arg0) {
    231                 // TODO Auto-generated method stub
    232                
     230
    233231        }
    234232
     
    238236
    239237        public void stopped(MediaPlayer arg0) {
    240                 // TODO Auto-generated method stub
    241                
     238                               
    242239        }
    243240
    244241        public void timeChanged(MediaPlayer arg0, long arg1) {
    245                 // TODO Auto-generated method stub
    246                
    247         }
    248        
    249 
    250         public void windowActivated(WindowEvent arg0) {
    251                 // TODO Auto-generated method stub
    252                
    253         }
    254 
    255         public void windowClosed(WindowEvent arg0) {
    256                 // TODO Auto-generated method stub
    257                
    258         }
     242
     243        }
     244       
     245
     246        public void windowActivated(WindowEvent arg0) { }
     247
     248        public void windowClosed(WindowEvent arg0) {    }
    259249
    260250        //we have to unload and disconnect to the VLC engine
     
    266256      }
    267257
    268         public void windowDeactivated(WindowEvent arg0) {
    269                 // TODO Auto-generated method stub
    270                
    271         }
    272 
    273         public void windowDeiconified(WindowEvent arg0) {
    274                 // TODO Auto-generated method stub
    275                
    276         }
    277 
    278         public void windowIconified(WindowEvent arg0) {
    279                 // TODO Auto-generated method stub
    280                
    281         }
    282 
    283         public void windowOpened(WindowEvent arg0) {
    284                 // TODO Auto-generated method stub
    285                
    286         }       
     258        public void windowDeactivated(WindowEvent arg0) {       }
     259
     260        public void windowDeiconified(WindowEvent arg0) {       }
     261
     262        public void windowIconified(WindowEvent arg0) { }
     263
     264        public void windowOpened(WindowEvent arg0) {    }       
    287265       
    288266        public void setFile(File f)
    289267        {
    290268                String mediaPath = f.getAbsoluteFile().toString();
    291                 mp.playMedia(mediaPath, mediaOptions);
    292                 jump(8000);
    293                 jump(0);
    294                 mp.stop();
    295                 pack();
     269                mp.playMedia(mediaPath, mediaOptions);         
     270                pack();
    296271        }
    297272       
     
    330305        }
    331306       
     307        //allow externals to extend the ui
     308        public void addComponent(JComponent c)
     309        {
     310                controlsPanel.add(c);
     311                pack();
     312        }
     313       
    332314
    333315}
  • applications/editors/josm/plugins/videomapping/test/videotest.java

    r21586 r21631  
    22import java.awt.Canvas;
    33import java.awt.Dimension;
     4import java.awt.event.ActionEvent;
     5import java.awt.event.ActionListener;
    46import java.io.File;
    57
     8import javax.swing.JButton;
    69import javax.swing.JFileChooser;
    710import javax.swing.JFrame;
     
    2225         */
    2326        public static void main(String[] args) {
    24                 SimpleVideoPlayer sVP = new SimpleVideoPlayer();
    25                 sVP.setFile(new File("C:\\TEMP\\test.mpg"));           
    26                 sVP.play();
    27                 sVP.jump(605000);
     27                final SimpleVideoPlayer sVP = new SimpleVideoPlayer();
     28                sVP.setFile(new File("C:\\TEMP\\test.mpg"));
     29                sVP.play(); //FIXME We have a bug so we get out of sync if we jump before the video is up (and this we CAN'T DETECT!!!)
     30                JButton b = new JButton("jump");
     31                b.addActionListener(new ActionListener() {
     32                       
     33                        public void actionPerformed(ActionEvent e) {
     34                                sVP.jump(610000);                               
     35                        }
     36                });
     37                sVP.add(b);
    2838
    2939        }
Note: See TracChangeset for help on using the changeset viewer.