Ignore:
Timestamp:
2018-07-12T04:13:24+02:00 (6 years ago)
Author:
renerr18
Message:

Post official release refactoring and bug fixes (ImageInfoPanel)

Location:
applications/editors/josm/plugins/MicrosoftStreetside
Files:
5 deleted
24 edited
1 moved

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/MicrosoftStreetside

    • Property svn:ignore
      •  

        old new  
        55logs
        66.git
         7.gitattributes
         8.gitignore
        79.gradle
        810checkstyle-josm-MicrosoftStreetside.xml
  • applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/StreetsideImage.java

    r34399 r34416  
    6363  }
    6464
    65   public StreetsideImage(String id, LatLon latLon) {
    66     super(id, latLon, 0.0);
    67   }
    68 
    6965  public StreetsideImage(String id, double la, double lo) {
    7066    super(id, new LatLon(la,lo), 0.0);
     
    9793  public String toString() {
    9894    return String.format(
    99       // TODO: format date cd (Gradle build error command line)
    10095      "Image[id=%s,lat=%f,lon=%f,he=%f,user=%s]",
    10196      id, latLon.lat(), latLon.lon(), he, "null"//, cd
     
    128123
    129124  private void checkModified() {
    130     if (StreetsideLayer.hasInstance()) {
    131       if (isModified()) {
    132         StreetsideLayer.getInstance().getLocationChangeset().add(this);
    133       } else {
    134         StreetsideLayer.getInstance().getLocationChangeset().remove(this);
    135       }
    136     }
     125    // modifications not currently supported in Streetside
    137126  }
    138127
  • applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/StreetsideLayer.java

    r34399 r34416  
    4343import org.openstreetmap.josm.plugins.streetside.io.download.StreetsideDownloader.DOWNLOAD_MODE;
    4444import org.openstreetmap.josm.plugins.streetside.mode.AbstractMode;
    45 import org.openstreetmap.josm.plugins.streetside.mode.JoinMode;
    4645import org.openstreetmap.josm.plugins.streetside.mode.SelectMode;
    4746import org.openstreetmap.josm.plugins.streetside.utils.MapViewGeometryUtil;
     
    9089
    9190        private volatile TexturePaint hatched;
    92         private final StreetsideLocationChangeset locationChangeset = new StreetsideLocationChangeset();
    9391
    9492        private StreetsideLayer() {
     
    190188                return data;
    191189        }
    192 
    193   /**
    194    * Returns the {@link StreetsideLocationChangeset} object, which acts as the database of the
    195    * Layer.
    196    *
    197    * @return The {@link StreetsideData} object that stores the database.
    198    */
    199   public StreetsideLocationChangeset getLocationChangeset() {
    200     return locationChangeset;
    201   }
    202190
    203191  /**
     
    314302        drawImageMarker(g, imageAbs);
    315303      }
    316     }
    317     if (mode instanceof JoinMode) {
    318       mode.paint(g, mv, box);
    319304    }
    320305  }
     
    504489    }
    505490    if (MainApplication.isDisplayingMapView()) {
    506       StreetsideMainDialog.getInstance().redButton.setEnabled(nearestImages.length >= 1);
    507       StreetsideMainDialog.getInstance().blueButton.setEnabled(nearestImages.length >= 2);
     491      //StreetsideMainDialog.getInstance().redButton.setEnabled(nearestImages.length >= 1);
     492      //StreetsideMainDialog.getInstance().blueButton.setEnabled(nearestImages.length >= 2);
    508493    }
    509494    if (nearestImages.length >= 1) {
  • applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/StreetsidePlugin.java

    r34412 r34416  
    1313import org.openstreetmap.josm.plugins.streetside.actions.StreetsideDownloadViewAction;
    1414import org.openstreetmap.josm.plugins.streetside.actions.StreetsideExportAction;
    15 import org.openstreetmap.josm.plugins.streetside.actions.StreetsideJoinAction;
    1615import org.openstreetmap.josm.plugins.streetside.actions.StreetsideWalkAction;
    1716import org.openstreetmap.josm.plugins.streetside.actions.StreetsideZoomAction;
     
    2019import org.openstreetmap.josm.plugins.streetside.gui.StreetsidePreferenceSetting;
    2120import org.openstreetmap.josm.plugins.streetside.gui.StreetsideViewerDialog;
     21import org.openstreetmap.josm.plugins.streetside.gui.imageinfo.ImageInfoHelpPopup;
    2222import org.openstreetmap.josm.plugins.streetside.gui.imageinfo.ImageInfoPanel;
    2323import org.openstreetmap.josm.plugins.streetside.oauth.StreetsideUser;
    2424import org.openstreetmap.josm.plugins.streetside.utils.StreetsideProperties;
    2525import org.openstreetmap.josm.tools.ImageProvider;
    26 
    27 import org.openstreetmap.josm.plugins.streetside.gui.imageinfo.ImageInfoHelpPopup;
    2826
    2927/**
     
    4543      MainMenu.add(MainApplication.getMenu().viewMenu, ZOOM_ACTION, false, 15);
    4644      MainMenu.add(MainApplication.getMenu().fileMenu, new StreetsideDownloadViewAction(), false, 14);
    47       MainMenu.add(MainApplication.getMenu().dataMenu, new StreetsideJoinAction(), false);
     45      //MainMenu.add(MainApplication.getMenu().dataMenu, new StreetsideJoinAction(), false);
    4846      MainMenu.add(MainApplication.getMenu().moreToolsMenu, WALK_ACTION, false);
    4947    }
  • applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/actions/WalkThread.java

    r34400 r34416  
    33
    44import java.awt.image.BufferedImage;
     5import java.text.MessageFormat;
    56
    67import javax.swing.SwingUtilities;
    78
     9import org.apache.log4j.Logger;
    810import org.openstreetmap.josm.plugins.streetside.StreetsideAbstractImage;
    911import org.openstreetmap.josm.plugins.streetside.StreetsideData;
     
    3032  private BufferedImage lastImage;
    3133  private volatile boolean paused;
     34
     35  final static Logger logger = Logger.getLogger(WalkThread.class);
    3236
    3337  /**
     
    6569            StreetsideAbstractImage currentImage = image.next();
    6670                  preDownloadImages((StreetsideImage) currentImage, 3, CacheUtils.PICTURE.FULL_IMAGE);
    67                   /*if (StreetsideProperties.PREDOWNLOAD_CUBEMAPS.get().booleanValue()) {
    68                   preDownloadCubemaps((StreetsideImage) currentImage, 3);
    69             }*/
    7071          }
    7172        }
     
    100101      }
    101102    } catch (NullPointerException e) {
    102       // TODO: Avoid NPEs instead of waiting until they are thrown and then catching them
     103      if(StreetsideProperties.DEBUGING_ENABLED.get()) {
     104        logger.debug(MessageFormat.format("Exception thrown in WalkThread: {0}", e.getMessage()));
     105        e.printStackTrace();
     106      }
    103107      return;
    104108    }
  • applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/cubemap/CameraTransformer.java

    r34399 r34416  
    11// License: GPL. For details, see LICENSE file.
    22package org.openstreetmap.josm.plugins.streetside.cubemap;
    3 
    4 /**
    5  * @author Dub
    6  */
    73
    84import javafx.scene.Group;
     
    1511public class CameraTransformer extends Group {
    1612
    17         public enum RotateOrder {
    18                 XYZ, XZY, YXZ, YZX, ZXY, ZYX
    19         }
     13  public enum RotateOrder {
     14    XYZ, XZY, YXZ, YZX, ZXY, ZYX
     15  }
    2016
    21         public Translate t = new Translate();
    22         public Translate p = new Translate();
    23         public Translate ip = new Translate();
    24         public Rotate rx = new Rotate();
    25         {
    26                 rx.setAxis(Rotate.X_AXIS);
    27         }
    28         public Rotate ry = new Rotate();
    29         {
    30                 ry.setAxis(Rotate.Y_AXIS);
    31         }
    32         public Rotate rz = new Rotate();
    33         {
    34                 rz.setAxis(Rotate.Z_AXIS);
    35         }
    36         public Scale s = new Scale();
     17  public Translate t = new Translate();
     18  public Translate p = new Translate();
     19  public Translate ip = new Translate();
     20  public Rotate rx = new Rotate();
     21  {
     22    rx.setAxis(Rotate.X_AXIS);
     23  }
     24  public Rotate ry = new Rotate();
     25  {
     26    ry.setAxis(Rotate.Y_AXIS);
     27  }
     28  public Rotate rz = new Rotate();
     29  {
     30    rz.setAxis(Rotate.Z_AXIS);
     31  }
     32  public Scale s = new Scale();
    3733
    38         public CameraTransformer() {
    39                 super();
    40                 getTransforms().addAll(t, rz, ry, rx, s);
    41         }
     34  public CameraTransformer() {
     35    super();
     36    getTransforms().addAll(t, rz, ry, rx, s);
     37  }
    4238
    43         public CameraTransformer(CameraTransformer.RotateOrder rotateOrder) {
    44                 super();
    45                 switch (rotateOrder) {
    46                 case XYZ:
    47                         getTransforms().addAll(t, p, rz, ry, rx, s, ip);
    48                         break;
    49                 case XZY:
    50                         getTransforms().addAll(t, p, ry, rz, rx, s, ip);
    51                         break;
    52                 case YXZ:
    53                         getTransforms().addAll(t, p, rz, rx, ry, s, ip);
    54                         break;
    55                 case YZX:
    56                         getTransforms().addAll(t, p, rx, rz, ry, s, ip); // For Camera
    57                         break;
    58                 case ZXY:
    59                         getTransforms().addAll(t, p, ry, rx, rz, s, ip);
    60                         break;
    61                 case ZYX:
    62                         getTransforms().addAll(t, p, rx, ry, rz, s, ip);
    63                         break;
    64                 }
    65         }
     39  public CameraTransformer(CameraTransformer.RotateOrder rotateOrder) {
     40    super();
     41    switch (rotateOrder) {
     42    case XYZ:
     43      getTransforms().addAll(t, p, rz, ry, rx, s, ip);
     44      break;
     45    case XZY:
     46      getTransforms().addAll(t, p, ry, rz, rx, s, ip);
     47      break;
     48    case YXZ:
     49      getTransforms().addAll(t, p, rz, rx, ry, s, ip);
     50      break;
     51    case YZX:
     52      getTransforms().addAll(t, p, rx, rz, ry, s, ip); // For Camera
     53      break;
     54    case ZXY:
     55      getTransforms().addAll(t, p, ry, rx, rz, s, ip);
     56      break;
     57    case ZYX:
     58      getTransforms().addAll(t, p, rx, ry, rz, s, ip);
     59      break;
     60    }
     61  }
    6662
    67         public void setTranslate(double x, double y, double z) {
    68                 t.setX(x);
    69                 t.setY(y);
    70                 t.setZ(z);
    71         }
     63  public void setTranslate(double x, double y, double z) {
     64    t.setX(x);
     65    t.setY(y);
     66    t.setZ(z);
     67  }
    7268
    73         public void setTranslate(double x, double y) {
    74                 t.setX(x);
    75                 t.setY(y);
    76         }
     69  public void setTranslate(double x, double y) {
     70    t.setX(x);
     71    t.setY(y);
     72  }
    7773
    78         public void setTx(double x) {
    79                 t.setX(x);
    80         }
     74  public void setTx(double x) {
     75    t.setX(x);
     76  }
    8177
    82         public void setTy(double y) {
    83                 t.setY(y);
    84         }
     78  public void setTy(double y) {
     79    t.setY(y);
     80  }
    8581
    86         public void setTz(double z) {
    87                 t.setZ(z);
    88         }
     82  public void setTz(double z) {
     83    t.setZ(z);
     84  }
    8985
    90         public void setRotate(double x, double y, double z) {
    91                 rx.setAngle(x);
    92                 ry.setAngle(y);
    93                 rz.setAngle(z);
    94         }
     86  public void setRotate(double x, double y, double z) {
     87    rx.setAngle(x);
     88    ry.setAngle(y);
     89    rz.setAngle(z);
     90  }
    9591
    96         public void setRotateX(double x) {
    97                 rx.setAngle(x);
    98         }
     92  public void setRotateX(double x) {
     93    rx.setAngle(x);
     94  }
    9995
    100         public void setRotateY(double y) {
    101                 ry.setAngle(y);
    102         }
     96  public void setRotateY(double y) {
     97    ry.setAngle(y);
     98  }
    10399
    104         public void setRotateZ(double z) {
    105                 rz.setAngle(z);
    106         }
     100  public void setRotateZ(double z) {
     101    rz.setAngle(z);
     102  }
    107103
    108         public void setRx(double x) {
    109                 rx.setAngle(x);
    110         }
     104  public void setRx(double x) {
     105    rx.setAngle(x);
     106  }
    111107
    112         public void setRy(double y) {
    113                 ry.setAngle(y);
    114         }
     108  public void setRy(double y) {
     109    ry.setAngle(y);
     110  }
    115111
    116         public void setRz(double z) {
    117                 rz.setAngle(z);
    118         }
     112  public void setRz(double z) {
     113    rz.setAngle(z);
     114  }
    119115
    120         public void setScale(double scaleFactor) {
    121                 s.setX(scaleFactor);
    122                 s.setY(scaleFactor);
    123                 s.setZ(scaleFactor);
    124         }
     116  public void setScale(double scaleFactor) {
     117    s.setX(scaleFactor);
     118    s.setY(scaleFactor);
     119    s.setZ(scaleFactor);
     120  }
    125121
    126         public void setScale(double x, double y, double z) {
    127                 s.setX(x);
    128                 s.setY(y);
    129                 s.setZ(z);
    130         }
     122  public void setScale(double x, double y, double z) {
     123    s.setX(x);
     124    s.setY(y);
     125    s.setZ(z);
     126  }
    131127
    132         public void setSx(double x) {
    133                 s.setX(x);
    134         }
     128  public void setSx(double x) {
     129    s.setX(x);
     130  }
    135131
    136         public void setSy(double y) {
    137                 s.setY(y);
    138         }
     132  public void setSy(double y) {
     133    s.setY(y);
     134  }
    139135
    140         public void setSz(double z) {
    141                 s.setZ(z);
    142         }
     136  public void setSz(double z) {
     137    s.setZ(z);
     138  }
    143139
    144         public void setPivot(double x, double y, double z) {
    145                 p.setX(x);
    146                 p.setY(y);
    147                 p.setZ(z);
    148                 ip.setX(-x);
    149                 ip.setY(-y);
    150                 ip.setZ(-z);
    151         }
     140  public void setPivot(double x, double y, double z) {
     141    p.setX(x);
     142    p.setY(y);
     143    p.setZ(z);
     144    ip.setX(-x);
     145    ip.setY(-y);
     146    ip.setZ(-z);
     147  }
    152148
    153         public void reset() {
    154                 t.setX(0.0);
    155                 t.setY(0.0);
    156                 t.setZ(0.0);
    157                 rx.setAngle(0.0);
    158                 ry.setAngle(0.0);
    159                 rz.setAngle(0.0);
    160                 s.setX(1.0);
    161                 s.setY(1.0);
    162                 s.setZ(1.0);
    163                 p.setX(0.0);
    164                 p.setY(0.0);
    165                 p.setZ(0.0);
    166                 ip.setX(0.0);
    167                 ip.setY(0.0);
    168                 ip.setZ(0.0);
    169         }
     149  public void reset() {
     150    t.setX(0.0);
     151    t.setY(0.0);
     152    t.setZ(0.0);
     153    rx.setAngle(0.0);
     154    ry.setAngle(0.0);
     155    rz.setAngle(0.0);
     156    s.setX(1.0);
     157    s.setY(1.0);
     158    s.setZ(1.0);
     159    p.setX(0.0);
     160    p.setY(0.0);
     161    p.setZ(0.0);
     162    ip.setX(0.0);
     163    ip.setY(0.0);
     164    ip.setZ(0.0);
     165  }
    170166
    171         public void resetTSP() {
    172                 t.setX(0.0);
    173                 t.setY(0.0);
    174                 t.setZ(0.0);
    175                 s.setX(1.0);
    176                 s.setY(1.0);
    177                 s.setZ(1.0);
    178                 p.setX(0.0);
    179                 p.setY(0.0);
    180                 p.setZ(0.0);
    181                 ip.setX(0.0);
    182                 ip.setY(0.0);
    183                 ip.setZ(0.0);
    184         }
     167  public void resetTSP() {
     168    t.setX(0.0);
     169    t.setY(0.0);
     170    t.setZ(0.0);
     171    s.setX(1.0);
     172    s.setY(1.0);
     173    s.setZ(1.0);
     174    p.setX(0.0);
     175    p.setY(0.0);
     176    p.setZ(0.0);
     177    ip.setX(0.0);
     178    ip.setY(0.0);
     179    ip.setZ(0.0);
     180  }
    185181}
  • applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/cubemap/CubemapBox.java

    r34415 r34416  
    55 */
    66
    7 package org.openstreetmap.josm.plugins.streetside.utils;
     7package org.openstreetmap.josm.plugins.streetside.cubemap;
    88
    99import java.awt.image.BufferedImage;
    10 
    11 import org.openstreetmap.josm.plugins.streetside.cubemap.CubemapUtils;
    12 import org.openstreetmap.josm.plugins.streetside.cubemap.GraphicsUtils;
    1310
    1411import javafx.animation.AnimationTimer;
     
    2522
    2623/**
    27  *
    28  * @author Dub
    2924 * @author renerr18
    3025 */
     
    5449  private Image frontImg, rightImg, backImg, leftImg, upImg, downImg, singleImg;
    5550
    56   // private WritableImage convertedImage;
    57 
    5851  private final PerspectiveCamera camera;
    5952  private AnimationTimer timer;
    6053  private final CubemapBoxImageType imageType;
    6154
    62   public CubemapBox(Image singleImg, double size, PerspectiveCamera camera) {
     55 public CubemapBox(
     56    Image frontImg, Image rightImg, Image backImg, Image leftImg, Image upImg, Image downImg, double size,
     57    PerspectiveCamera camera) {
     58
    6359    super();
    64     imageType = CubemapBoxImageType.SINGLE;
    65 
    66     this.singleImg = singleImg;
    67     this.size.set(size);
    68     this.camera = camera;
    69 
    70     getTransforms().add(affine);
    71 
    72     loadImageViews();
    73 
    74     getChildren().addAll(views);
    75   }
    76 
    77   // private constructor to prevent instantiation
    78   public CubemapBox(double size, PerspectiveCamera camera) {
    79     super();
    80     imageType = CubemapBoxImageType.SINGLE;
    81 
    82     this.size.set(size);
    83     this.camera = camera;
    84 
    85     getTransforms().add(affine);
    86 
    87     loadImageViews();
    88 
    89     getChildren().addAll(views);
    90   }
    91 
    92   public CubemapBox(
    93     Image frontImg, Image rightImg, Image backImg, Image leftImg, Image upImg, Image downImg, double size,
    94     PerspectiveCamera camera
    95   ) {
    96     super();
     60
    9761    imageType = CubemapBoxImageType.MULTIPLE;
    9862
  • applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/cubemap/CubemapBuilder.java

    r34412 r34416  
    1919import org.openstreetmap.josm.plugins.streetside.gui.StreetsideViewerDialog;
    2020import org.openstreetmap.josm.plugins.streetside.gui.imageinfo.StreetsideViewerPanel;
    21 import org.openstreetmap.josm.plugins.streetside.utils.CubemapBox;
    2221import org.openstreetmap.josm.plugins.streetside.utils.StreetsideProperties;
    2322
     
    193192                }
    194193        }
     194
     195        @Override
     196  public void tilesAdded(String[] tileIds) {
     197    // determine whether all tiles have been set for each of the
     198    // six cubemap faces. If so, build the images for the faces
     199    // and set the views in the cubemap box.
     200
     201    int tileCount = 0;
     202
     203    tileCount = CubemapBuilder.getInstance().getTileImages().keySet().size();
     204
     205    int maxCols = StreetsideProperties.SHOW_HIGH_RES_STREETSIDE_IMAGERY.get() ? 4 : 2;
     206    int maxRows = StreetsideProperties.SHOW_HIGH_RES_STREETSIDE_IMAGERY.get() ? 4 : 2;
     207
     208    if (tileCount == (CubemapUtils.NUM_SIDES * maxCols * maxRows)) {
     209      if (StreetsideProperties.DEBUGING_ENABLED.get()) {
     210        logger.debug(MessageFormat.format("{0} tile images ready for building cumbemap faces for cubemap {1}.", tileCount,
     211          CubemapBuilder.getInstance().getCubemap().getId()));
     212      }
     213
     214      buildCubemapFaces();
     215    }
     216  }
    195217
    196218        private void buildCubemapFaces() {
  • applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/cubemap/ITileDownloadingTaskListener.java

    r34325 r34416  
    1212 /**
    1313 * Fired when a cubemap tile image is downloaded by a download worker.
    14  * @param imageId image id 
     14 * @param imageId image id
    1515 */
    1616 void tileAdded(String imageId);
     17
     18 /**
     19  * Fired when multiple cubemap tile images are downloaded by a download worker.
     20  * @param imageId image id
     21  */
     22  void tilesAdded(String[] imageId);
    1723}
  • applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/gui/StreetsideMainDialog.java

    r34399 r34416  
    33
    44import java.awt.BorderLayout;
    5 import java.awt.Color;
    65import java.awt.Component;
    76import java.awt.event.ActionEvent;
     
    98import java.io.ByteArrayInputStream;
    109import java.io.IOException;
    11 import java.util.Arrays;
    1210import java.util.List;
    1311
     
    1513import javax.swing.AbstractAction;
    1614import javax.swing.Action;
    17 import javax.swing.JComponent;
    18 import javax.swing.KeyStroke;
    1915import javax.swing.SwingUtilities;
    2016
     
    6157        private volatile StreetsideAbstractImage image;
    6258
    63         public final SideButton nextButton = new SideButton(new NextPictureAction());
     59        /*public final SideButton nextButton = new SideButton(new NextPictureAction());
    6460        public final SideButton previousButton = new SideButton(new PreviousPictureAction());
    65         /**
     61        *//**
    6662         * Button used to jump to the image following the red line
    67          */
     63         *//*
    6864        public final SideButton redButton = new SideButton(new RedAction());
    69         /**
     65        *//**
    7066         * Button used to jump to the image following the blue line
    71          */
     67         *//*
    7268        public final SideButton blueButton = new SideButton(new BlueAction());
    7369
    7470        private final SideButton playButton = new SideButton(new PlayAction());
    7571        private final SideButton pauseButton = new SideButton(new PauseAction());
    76         private final SideButton stopButton = new SideButton(new StopAction());
     72        private final SideButton stopButton = new SideButton(new StopAction());*/
    7773
    7874        private ImageInfoHelpPopup imageInfoHelp;
     
    111107                streetsideImageDisplay = new StreetsideImageDisplay();
    112108
    113                 blueButton.setForeground(Color.BLUE);
    114                 redButton.setForeground(Color.RED);
    115 
    116                 // TODO: Modes for cubemaps? @rrh
     109                /*blueButton.setForeground(Color.BLUE);
     110                redButton.setForeground(Color.RED);*/
     111
    117112                setMode(MODE.NORMAL);
    118113        }
     
    122117         */
    123118        private void addShortcuts() {
    124                 nextButton.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
     119                /*nextButton.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
    125120                                KeyStroke.getKeyStroke("PAGE_DOWN"), "next");
    126121                nextButton.getActionMap().put("next", new NextPictureAction());
     
    134129                redButton.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
    135130                                KeyStroke.getKeyStroke("control PAGE_DOWN"), "red");
    136                 redButton.getActionMap().put("red", new RedAction());
     131                redButton.getActionMap().put("red", new RedAction());*/
    137132        }
    138133
     
    181176                        createLayout(
    182177                                streetsideImageDisplay,
    183                                 Arrays.asList(playButton, pauseButton, stopButton)
     178                                null//Arrays.asList(playButton, pauseButton, stopButton)
    184179                        );
    185180                case NORMAL:
     
    187182                        createLayout(
    188183                        streetsideImageDisplay,
    189                         Arrays.asList(blueButton, previousButton, nextButton, redButton)
     184                        null//Arrays.asList(blueButton, previousButton, nextButton, redButton)
    190185                    );
    191186                }
    192                 disableAllButtons();
     187                //disableAllButtons();
    193188                if (MODE.NORMAL.equals(mode)) {
    194189                        updateImage();
     
    227222                                streetsideImageDisplay.setImage(null, null);
    228223                                setTitle(I18n.tr(StreetsideMainDialog.BASE_TITLE));
    229                                 disableAllButtons();
     224                                //disableAllButtons();
    230225                                return;
    231226                        }
     
    238233
    239234                        // Enables/disables next/previous buttons
    240                         nextButton.setEnabled(false);
    241                         previousButton.setEnabled(false);
     235                        /*nextButton.setEnabled(false);
     236                        previousButton.setEnabled(false);*/
    242237                        if (image.getSequence() != null) {
    243238                                StreetsideAbstractImage tempImage = image;
     
    245240                                        tempImage = tempImage.next();
    246241                                        if (tempImage.isVisible()) {
    247                                                 nextButton.setEnabled(true);
     242                                                //nextButton.setEnabled(true);
    248243                                                break;
    249244                                        }
     
    255250                                        tempImage = tempImage.previous();
    256251                                        if (tempImage.isVisible()) {
    257                                                 previousButton.setEnabled(true);
     252                                                //previousButton.setEnabled(true);
    258253                                                break;
    259254                                        }
     
    297292         * Disables all the buttons in the dialog
    298293         */
    299         public /*private*/ void disableAllButtons() {
     294        /*public private void disableAllButtons() {
    300295                nextButton.setEnabled(false);
    301296                previousButton.setEnabled(false);
    302297                blueButton.setEnabled(false);
    303298                redButton.setEnabled(false);
    304         }
     299        }*/
    305300
    306301        /**
     
    316311         * Updates the title of the dialog.
    317312         */
    318         // TODO: update title for 360 degree viewer? @rrh
    319313        public synchronized void updateTitle() {
    320314                if (!SwingUtilities.isEventDispatchThread()) {
     
    442436                }
    443437
    444                 // TODO: BlueAction for cubemaps?
    445438                @Override
    446439                public void actionPerformed(ActionEvent e) {
     
    609602                this.streetsideImageDisplay = streetsideImageDisplay;
    610603        }
    611 
    612         /**
    613          * @return the streetsideImageDisplay
    614          */
    615         /*public StreetsideViewerDisplay getStreetsideViewerDisplay() {
    616                 return streetsideViewerDisplay;
    617         }*/
    618 
    619         /**
    620          * @param streetsideImageDisplay the streetsideImageDisplay to set
    621          */
    622         /*public void setStreetsideViewerDisplay(StreetsideViewerDisplay streetsideViewerDisplay) {
    623                 streetsideViewerDisplay = streetsideViewerDisplay;
    624         }*/
    625 
    626         /*private StreetsideViewerDisplay initStreetsideViewerDisplay() {
    627                 StreetsideViewerDisplay res = new StreetsideViewerDisplay();
    628         //this.add(streetsideViewerDisplay);
    629 
    630 
    631                 Platform.runLater(new Runnable() {
    632             @Override
    633             public void run() {
    634                 Scene scene;
    635                                 try {
    636                                         scene = StreetsideViewerDisplay.createScene();
    637                                         res.setScene(scene);
    638                                 } catch (NonInvertibleTransformException e) {
    639                                         // TODO Auto-generated catch block
    640                                         e.printStackTrace();
    641                                 }
    642             }
    643        });
    644                 return res;
    645         }*/
    646604}
  • applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/gui/StreetsideViewerDialog.java

    r34399 r34416  
    3131
    3232        private StreetsideViewerDialog() {
    33           // TODO: I18n support in all languages?
    3433          super(StreetsideViewerDialog.BASE_TITLE, "streetside-viewer", "Open Streetside Viewer window",
    3534                                null, 200, true, StreetsidePreferenceSetting.class);
  • applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/gui/imageinfo/AddTagToPrimitiveAction.java

    r34317 r34416  
    4747          Main.parent,
    4848          "<html>" +
    49             // TODO: tr( RRH
    5049            I18n.tr("A tag with key <i>{0}</i> is already present on the selected OSM object.", tag.getKey()) + "<br>" +
    5150            I18n.tr(
  • applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/gui/imageinfo/ImageInfoPanel.java

    r34399 r34416  
    22package org.openstreetmap.josm.plugins.streetside.gui.imageinfo;
    33
    4 import java.awt.Font;
    54import java.awt.GridBagConstraints;
    65import java.awt.GridBagLayout;
    7 import java.awt.Image;
    86import java.awt.Insets;
    97import java.awt.datatransfer.StringSelection;
    10 import java.awt.image.BufferedImage;
    118import java.util.Collection;
    129
    13 import javax.swing.ImageIcon;
    14 import javax.swing.JCheckBox;
    1510import javax.swing.JLabel;
    1611import javax.swing.JPanel;
     
    2924import org.openstreetmap.josm.plugins.streetside.gui.boilerplate.SelectableLabel;
    3025import org.openstreetmap.josm.plugins.streetside.gui.boilerplate.StreetsideButton;
    31 import org.openstreetmap.josm.plugins.streetside.model.UserProfile;
    3226import org.openstreetmap.josm.plugins.streetside.utils.StreetsideProperties;
    3327import org.openstreetmap.josm.plugins.streetside.utils.StreetsideURL;
     
    4034
    4135  private static ImageInfoPanel instance;
    42   private static final ImageIcon EMPTY_USER_AVATAR = new ImageIcon(new BufferedImage(32, 32, BufferedImage.TYPE_INT_ARGB));
    43 
    44   private final JLabel numDetectionsLabel;
    45   private final JCheckBox showDetectionsCheck;
    46   private final JLabel usernameLabel;
     36
    4737  private final JTextPane imgKeyValue;
    4838  private final WebLinkAction imgLinkAction;
     
    5545  private ImageInfoPanel() {
    5646    super(
    57       I18n.tr("Streetside Image info"),
     47      I18n.tr("Streetside 360° image info"),
    5848      "streetside-info",
    5949      I18n.tr("Displays detail information on the currently selected Streetside image"),
     
    6353    SelectionEventManager.getInstance().addSelectionListener(this);
    6454
    65     numDetectionsLabel = new JLabel();
    66     numDetectionsLabel.setFont(numDetectionsLabel.getFont().deriveFont(Font.PLAIN));
    67 
    68     showDetectionsCheck = new JCheckBox(I18n.tr("Show detections on top of image"));
    69      showDetectionsCheck.setSelected(StreetsideProperties.SHOW_DETECTED_SIGNS.get());
    70      showDetectionsCheck.addActionListener(
    71       action -> StreetsideProperties.SHOW_DETECTED_SIGNS.put(showDetectionsCheck.isSelected())
    72     );
    73     StreetsideProperties.SHOW_DETECTED_SIGNS.addListener(
    74       valueChange -> showDetectionsCheck.setSelected(StreetsideProperties.SHOW_DETECTED_SIGNS.get())
    75     );
    76 
    77     usernameLabel = new JLabel();
    78     usernameLabel.setFont(usernameLabel.getFont().deriveFont(Font.PLAIN));
    79 
    8055    imgKeyValue = new SelectableLabel();
    8156
     
    8863    addStreetsideTagAction = new AddTagToPrimitiveAction(I18n.tr("Add Streetside tag"));
    8964
    90     JPanel imgKey = new JPanel();
    91     imgKey.add(imgKeyValue);
    92     imgKey.add(copyButton);
    93     JPanel imgButtons = new JPanel();
    94     imgButtons.add(new StreetsideButton(imgLinkAction, true));
    95     imgButtons.add(new StreetsideButton(addStreetsideTagAction, true));
    9665    seqKeyValue = new SelectableLabel();
    9766
    9867    JPanel root = new JPanel(new GridBagLayout());
     68
    9969    GridBagConstraints gbc = new GridBagConstraints();
    10070    gbc.insets = new Insets(0, 5, 0, 5);
    10171
    102     // Left column
     72    gbc.fill = GridBagConstraints.HORIZONTAL;
    10373    gbc.gridx = 0;
    10474    gbc.gridy = 0;
    105     gbc.anchor = GridBagConstraints.LINE_END;
    106     gbc.gridwidth = 1;
    107     gbc.gridheight = 2;
    108     root.add(new JLabel(I18n.tr("Image detections")), gbc);
    109     gbc.gridy += 2;
    110     gbc.gridheight = 1;
    111     root.add(new JLabel(I18n.tr("User")), gbc);
    112     gbc.gridy++;
    11375    root.add(new JLabel(I18n.tr("Image actions")), gbc);
    114     gbc.gridy++;
     76
     77    gbc.fill = GridBagConstraints.HORIZONTAL;
     78    gbc.weightx = 0.5;
     79    gbc.gridx = 0;
     80    gbc.gridy = 1;
    11581    root.add(new JLabel(I18n.tr("Image key")), gbc);
    116     gbc.gridy++;
     82
     83    gbc.fill = GridBagConstraints.HORIZONTAL;
     84    gbc.weightx = 0.5;
     85    gbc.gridx = 0;
     86    gbc.gridy = 2;
    11787    root.add(new JLabel(I18n.tr("Sequence key")), gbc);
    11888
    119     // Right column
    120     gbc.weightx = 1;
    121     gbc.gridx++;
     89    gbc.fill = GridBagConstraints.HORIZONTAL;
     90    gbc.gridx = 1;
    12291    gbc.gridy = 0;
    123     gbc.anchor = GridBagConstraints.LINE_START;
    124     root.add(numDetectionsLabel, gbc);
    125     gbc.gridy++;
    126     root.add(showDetectionsCheck, gbc);
    127     gbc.gridy++;
    128     root.add(usernameLabel, gbc);
    129     gbc.gridy++;
    130     root.add(imgButtons, gbc);
    131     gbc.gridy++;
    132     root.add(imgKey, gbc);
    133     gbc.gridy++;
     92    root.add(new StreetsideButton(imgLinkAction, true), gbc);
     93
     94    gbc.fill = GridBagConstraints.HORIZONTAL;
     95    gbc.weightx = 0.5;
     96    gbc.gridx = 1;
     97    gbc.gridy = 1;
     98    root.add(imgKeyValue, gbc);
     99
     100    gbc.fill = GridBagConstraints.HORIZONTAL;
     101    gbc.weightx = 0.5;
     102    gbc.gridx = 1;
     103    gbc.gridy = 2;
    134104    root.add(seqKeyValue, gbc);
     105
     106    gbc.fill = GridBagConstraints.HORIZONTAL;
     107    gbc.weightx = 0.5;
     108    gbc.gridx = 2;
     109    gbc.gridy = 1;
     110    root.add(copyButton, gbc);
    135111
    136112    createLayout(root, true, null);
     
    184160    ));
    185161
    186     numDetectionsLabel.setText(I18n.tr("{0} detections", newImage instanceof StreetsideImage ? /*((StreetsideImage) newImage).getDetections().size()*/0 : 0));
    187162    imgKeyValue.setEnabled(newImage instanceof StreetsideImage);
    188163    final String newImageKey = newImage instanceof StreetsideImage ? ((StreetsideImage) newImage).getId(): null;
    189164    if (newImageKey != null) {
    190165      imageLinkChangeListener = b -> imgLinkAction.setURL(
    191         /*StreetsideProperties.IMAGE_LINK_TO_BLUR_EDITOR.get()
    192         ? StreetsideURL.MainWebsite.blurEditImage(newImageKey)
    193         :*/ StreetsideURL.MainWebsite.browseImage(newImageKey)
     166        StreetsideURL.MainWebsite.browseImage(newImageKey)
    194167      );
    195168      imageLinkChangeListener.valueChanged(null);
     
    211184    }
    212185
    213     final UserProfile user = newImage instanceof StreetsideImage ? ((StreetsideImage) newImage).getUser() : null;
    214     usernameLabel.setEnabled(user != null);
    215     if (user != null) {
    216       usernameLabel.setText(user.getUsername());
    217       usernameLabel.setIcon(new ImageIcon(user.getAvatar().getImage().getScaledInstance(32, 32, Image.SCALE_SMOOTH)));
    218     } else {
    219       usernameLabel.setText("‹" + I18n.tr("unknown user") + "›");
    220       usernameLabel.setIcon(EMPTY_USER_AVATAR);
    221     }
    222 
    223186    final boolean partOfSequence = newImage != null && newImage.getSequence() != null && newImage.getSequence().getId() != null;
    224187    seqKeyValue.setEnabled(partOfSequence);
  • applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/gui/imageinfo/StreetsideViewerPanel.java

    r34399 r34416  
    1515import org.openstreetmap.josm.plugins.streetside.StreetsideImage;
    1616import org.openstreetmap.josm.plugins.streetside.actions.ImageReloadAction;
     17import org.openstreetmap.josm.plugins.streetside.cubemap.CubemapBox;
    1718import org.openstreetmap.josm.plugins.streetside.cubemap.CubemapBuilder;
    1819import org.openstreetmap.josm.plugins.streetside.cubemap.CubemapUtils;
    1920import org.openstreetmap.josm.plugins.streetside.cubemap.GraphicsUtils;
    2021import org.openstreetmap.josm.plugins.streetside.gui.boilerplate.StreetsideButton;
    21 import org.openstreetmap.josm.plugins.streetside.utils.CubemapBox;
    2222import org.openstreetmap.josm.plugins.streetside.utils.StreetsideProperties;
    2323import org.openstreetmap.josm.plugins.streetside.utils.StreetsideURL;
     
    6767            JPanel checkPanel = new JPanel();
    6868
    69             // TODO: I18n for all languages?
    70             imgReloadAction = new ImageReloadAction(/*I18n.tr(*/"Reload"/*)*/);
     69            imgReloadAction = new ImageReloadAction("Reload");
    7170
    7271            StreetsideButton imgReloadButton = new StreetsideButton(imgReloadAction);
    7372
    74             // TODO: I18n for all languages?
    75       highResImageryCheck = new JCheckBox(/*I18n.tr(*/"High resolution"/*)*/);
     73            highResImageryCheck = new JCheckBox("High resolution");
    7674            highResImageryCheck.setSelected(StreetsideProperties.SHOW_HIGH_RES_STREETSIDE_IMAGERY.get());
    7775            highResImageryCheck.addActionListener(
     
    155153        }
    156154
    157         public CubemapBox getCubemapBox() {
     155        public static CubemapBox getCubemapBox() {
    158156                return threeSixtyDegreeViewerPanel.getCubemapBox();
    159157        }
  • applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/gui/imageinfo/ThreeSixtyDegreeViewerPanel.java

    r34399 r34416  
    22package org.openstreetmap.josm.plugins.streetside.gui.imageinfo;
    33
    4 import java.awt.image.BufferedImage;
    5 
    64import org.openstreetmap.josm.plugins.streetside.cubemap.CameraTransformer;
    7 import org.openstreetmap.josm.plugins.streetside.cubemap.GraphicsUtils;
    8 import org.openstreetmap.josm.plugins.streetside.utils.CubemapBox;
     5import org.openstreetmap.josm.plugins.streetside.cubemap.CubemapBox;
    96
    107import javafx.application.Platform;
     
    2118import javafx.scene.layout.VBox;
    2219import javafx.scene.paint.Color;
    23 import javafx.scene.transform.NonInvertibleTransformException;
    24 
    2520
    2621@SuppressWarnings("restriction")
    2722public class ThreeSixtyDegreeViewerPanel extends JFXPanel {
    2823
    29         private static final long serialVersionUID = -4940350009018422000L;
    30 
    31         private static Scene cubemapScene;
    32 
    33         private static Scene defaultScene;
    34 
    35         private static Group root;
    36         private static Group subGroup;
    37         private static CubemapBox cubemapBox;
    38         private static PerspectiveCamera camera;
    39         private static CameraTransformer cameraTransform = new CameraTransformer();
    40 
    41         private static double mousePosX;
    42         private static double mousePosY;
    43         private static double mouseOldX;
    44         private static double mouseOldY;
    45         private static double mouseDeltaX;
    46         private static double mouseDeltaY;
    47         private static double cameraDistance = 5000;
    48 
    49         // Supply Image Paths or a NullPointer will occur
    50         private static Image front;
    51         private static Image right;
    52         private static Image back;
    53         private static Image left;
    54         private static Image up;
    55         private static Image down;
    56 
    57         public ThreeSixtyDegreeViewerPanel() {
    58                 // constructor
    59         }
    60 
    61         public void initialize() {
    62 
    63                 root = new Group();
    64 
    65                 camera = new PerspectiveCamera(true);
    66                 cameraTransform.setTranslate(0, 0, 0);
    67                 cameraTransform.getChildren().addAll(camera);
    68                 camera.setNearClip(0.1);
    69                 camera.setFarClip(1000000.0);
    70                 camera.setFieldOfView(42);
    71                 camera.setTranslateZ(-cameraDistance);
    72                 // cameraTransform.ry.setAngle(-45.0);
    73                 // cameraTransform.rx.setAngle(-10.0);
    74                 // add a Point Light for better viewing of the grid coordinate system
    75                 final PointLight light = new PointLight(Color.WHITE);
    76 
    77                 cameraTransform.getChildren().add(light);
    78                 light.setTranslateX(camera.getTranslateX());
    79                 light.setTranslateY(camera.getTranslateY());
    80                 light.setTranslateZ(camera.getTranslateZ());
    81 
    82                 root.getChildren().add(cameraTransform);
    83 
    84                 final double size = 100000D;
    85 
    86                 cubemapBox = new CubemapBox(front, right, back, left, up, down, size, camera);
    87 
    88                 subGroup = new Group();
    89                 subGroup.getChildren().add(cameraTransform);
    90 
    91                 Platform.runLater(new Runnable() {
    92                         @Override
    93                         public void run() {
    94                                 setScene(createDefaultScene());
    95                         }
    96                 });
    97         }
    98 
    99         public static Scene createScene() /*throws NonInvertibleTransformException*/ {
    100 
    101                 root = new Group();
    102 
    103                 camera = new PerspectiveCamera(true);
    104                 cameraTransform.setTranslate(0, 0, 0);
    105                 cameraTransform.getChildren().addAll(camera);
    106                 camera.setNearClip(0.1);
    107                 camera.setFarClip(1000000.0);
    108                 camera.setFieldOfView(42);
    109                 camera.setTranslateZ(-cameraDistance);
    110                 final PointLight light = new PointLight(Color.WHITE);
    111 
    112                 cameraTransform.getChildren().add(light);
    113                 light.setTranslateX(camera.getTranslateX());
    114                 light.setTranslateY(camera.getTranslateY());
    115                 light.setTranslateZ(camera.getTranslateZ());
    116 
    117                 root.getChildren().add(cameraTransform);
    118 
    119                 // Load Cubemap box AFTER camera is initialized
    120                 final double size = 100000D;
    121 
    122                 cubemapBox = new CubemapBox(null, null, null, null, null, null, size, camera);
    123 
    124                 subGroup = new Group();
    125                 subGroup.getChildren().add(cameraTransform);
    126 
    127                 final Scene scene = new Scene(new Group(root), 1024, 668, true, SceneAntialiasing.BALANCED);
    128                 scene.setFill(Color.TRANSPARENT);
    129                 scene.setCamera(camera);
    130 
    131                 // First person shooter keyboard movement
    132                 scene.setOnKeyPressed(event -> {
    133                         double change = 10.0;
    134                         // Add shift modifier to simulate "Running Speed"
    135                         if (event.isShiftDown()) {
    136                                 change = 50.0;
    137                         }
    138                         // What key did the user press?
    139                         final KeyCode keycode = event.getCode();
    140                         // Step 2c: Add Zoom controls
    141                         if (keycode == KeyCode.W) {
    142                                 camera.setTranslateZ(camera.getTranslateZ() + change);
    143                         }
    144                         if (keycode == KeyCode.S) {
    145                                 camera.setTranslateZ(camera.getTranslateZ() - change);
    146                         }
    147                         // Step 2d: Add Strafe controls
    148                         if (keycode == KeyCode.A) {
    149                                 camera.setTranslateX(camera.getTranslateX() - change);
    150                         }
    151                         if (keycode == KeyCode.D) {
    152                                 camera.setTranslateX(camera.getTranslateX() + change);
    153                         }
    154                 });
    155 
    156                 scene.setOnMousePressed((MouseEvent me) -> {
    157                         mousePosX = me.getSceneX();
    158                         mousePosY = me.getSceneY();
    159                         mouseOldX = me.getSceneX();
    160                         mouseOldY = me.getSceneY();
    161                 });
    162                 scene.setOnMouseDragged((MouseEvent me) -> {
    163                         mouseOldX = mousePosX;
    164                         mouseOldY = mousePosY;
    165                         mousePosX = me.getSceneX();
    166                         mousePosY = me.getSceneY();
    167                         mouseDeltaX = mousePosX - mouseOldX;
    168                         mouseDeltaY = mousePosY - mouseOldY;
    169 
    170                         double modifier = 10.0;
    171                         final double modifierFactor = 0.1;
    172 
    173                         if (me.isControlDown()) {
    174                                 modifier = 0.1;
    175                         }
    176                         if (me.isShiftDown()) {
    177                                 modifier = 50.0;
    178                         }
    179                         if (me.isPrimaryButtonDown()) {
    180                                 cameraTransform.ry.setAngle(
    181                                                 ((cameraTransform.ry.getAngle() + mouseDeltaX * modifierFactor * modifier * 2.0) % 360 + 540)
    182                                                                 % 360 - 180); // +
    183                                 cameraTransform.rx.setAngle(
    184                                                 ((cameraTransform.rx.getAngle() - mouseDeltaY * modifierFactor * modifier * 2.0) % 360 + 540)
    185                                                                 % 360 - 180); // -
    186 
    187                         } else if (me.isSecondaryButtonDown()) {
    188                                 final double z = camera.getTranslateZ();
    189                                 final double newZ = z + mouseDeltaX * modifierFactor * modifier;
    190                                 camera.setTranslateZ(newZ);
    191                         } else if (me.isMiddleButtonDown()) {
    192                                 cameraTransform.t.setX(cameraTransform.t.getX() + mouseDeltaX * modifierFactor * modifier * 0.3); // -
    193                                 cameraTransform.t.setY(cameraTransform.t.getY() + mouseDeltaY * modifierFactor * modifier * 0.3); // -
    194                         }
    195                 });
    196 
    197                 root.getChildren().addAll(cubemapBox, subGroup);
    198                 root.setAutoSizeChildren(true);
    199 
    200                 subGroup.setAutoSizeChildren(true);
    201 
    202                 // prevent content from disappearing after resizing
    203                 Platform.setImplicitExit(false);
    204 
    205                 return scene;
    206         }
    207 
    208         private static Scene createDefaultScene() {
    209                 // Load Cubemap box AFTER camera is initialized
    210 
    211                 TextArea textArea = new TextArea();
    212                 textArea.setText("No Streetside image selected.");
    213 
    214                 VBox vbox = new VBox(textArea);
    215 
    216                 root = new Group();
     24  private static final long serialVersionUID = -4940350009018422000L;
     25
     26  private static Scene cubemapScene;
     27
     28  private static Scene defaultScene;
     29
     30  private static Group root;
     31  private static Group subGroup;
     32  private static CubemapBox cubemapBox;
     33  private static PerspectiveCamera camera;
     34  private static CameraTransformer cameraTransform = new CameraTransformer();
     35
     36  private static double mousePosX;
     37  private static double mousePosY;
     38  private static double mouseOldX;
     39  private static double mouseOldY;
     40  private static double mouseDeltaX;
     41  private static double mouseDeltaY;
     42  private static double cameraDistance = 5000;
     43
     44  private static Image front;
     45  private static Image right;
     46  private static Image back;
     47  private static Image left;
     48  private static Image up;
     49  private static Image down;
     50
     51  public ThreeSixtyDegreeViewerPanel() {
     52
     53  }
     54
     55  public void initialize() {
     56
     57    root = new Group();
    21758
    21859    camera = new PerspectiveCamera(true);
     
    23273    root.getChildren().add(cameraTransform);
    23374
    234     // Load Cubemap box AFTER camera is initialized
    23575    final double size = 100000D;
    23676
    237     cubemapBox = new CubemapBox(null, null, null, null, null, null, size, camera);
     77    cubemapBox = new CubemapBox(front, right, back, left, up, down, size, camera);
    23878
    23979    subGroup = new Group();
    24080    subGroup.getChildren().add(cameraTransform);
    24181
    242     /*final Scene*/ cubemapScene = new Scene(new Group(root), 1024, 668, true, SceneAntialiasing.BALANCED);
     82    Platform.runLater(new Runnable() {
     83      @Override
     84      public void run() {
     85        setScene(createDefaultScene());
     86      }
     87    });
     88  }
     89
     90  private static Scene createDefaultScene() {
     91
     92    TextArea textArea = new TextArea();
     93    textArea.setText("No Streetside image selected.");
     94
     95    VBox vbox = new VBox(textArea);
     96
     97    root = new Group();
     98
     99    camera = new PerspectiveCamera(true);
     100    cameraTransform.setTranslate(0, 0, 0);
     101    cameraTransform.getChildren().addAll(camera);
     102    camera.setNearClip(0.1);
     103    camera.setFarClip(1000000.0);
     104    camera.setFieldOfView(42);
     105    camera.setTranslateZ(-cameraDistance);
     106    final PointLight light = new PointLight(Color.WHITE);
     107
     108    cameraTransform.getChildren().add(light);
     109    light.setTranslateX(camera.getTranslateX());
     110    light.setTranslateY(camera.getTranslateY());
     111    light.setTranslateZ(camera.getTranslateZ());
     112
     113    root.getChildren().add(cameraTransform);
     114
     115    final double size = 100000D;
     116
     117    cubemapBox = new CubemapBox(null, null, null, null, null, null, size, camera);
     118
     119    subGroup = new Group();
     120    subGroup.getChildren().add(cameraTransform);
     121
     122    cubemapScene = new Scene(new Group(root), 1024, 668, true, SceneAntialiasing.BALANCED);
    243123    cubemapScene.setFill(Color.TRANSPARENT);
    244124    cubemapScene.setCamera(camera);
    245125
    246     // First person shooter keyboard movement
    247126    cubemapScene.setOnKeyPressed(event -> {
    248127      double change = 10.0;
    249       // Add shift modifier to simulate "Running Speed"
    250128      if (event.isShiftDown()) {
    251129        change = 50.0;
    252130      }
    253       // What key did the user press?
    254131      final KeyCode keycode = event.getCode();
    255       // Step 2c: Add Zoom controls
     132
    256133      if (keycode == KeyCode.W) {
    257134        camera.setTranslateZ(camera.getTranslateZ() + change);
     
    260137        camera.setTranslateZ(camera.getTranslateZ() - change);
    261138      }
    262       // Step 2d: Add Strafe controls
     139
    263140      if (keycode == KeyCode.A) {
    264141        camera.setTranslateX(camera.getTranslateX() - change);
     
    294171      if (me.isPrimaryButtonDown()) {
    295172        cameraTransform.ry.setAngle(
    296             ((cameraTransform.ry.getAngle() + mouseDeltaX * modifierFactor * modifier * 2.0) % 360 + 540)
    297                 % 360 - 180); // +
     173          ((cameraTransform.ry.getAngle() + mouseDeltaX * modifierFactor * modifier * 2.0) % 360 + 540) % 360 - 180
     174        ); // +
    298175        cameraTransform.rx.setAngle(
    299             ((cameraTransform.rx.getAngle() - mouseDeltaY * modifierFactor * modifier * 2.0) % 360 + 540)
    300                 % 360 - 180); // -
     176          ((cameraTransform.rx.getAngle() - mouseDeltaY * modifierFactor * modifier * 2.0) % 360 + 540) % 360 - 180
     177        ); // -
    301178
    302179      } else if (me.isSecondaryButtonDown()) {
     
    319196
    320197    defaultScene = new Scene(vbox, 200, 100);
    321                 return defaultScene;
    322         }
    323 
    324         public static Scene createScene(BufferedImage img0, BufferedImage img1, BufferedImage img2, BufferedImage img3,
    325                         BufferedImage img4, BufferedImage img5) throws NonInvertibleTransformException {
    326                 front = GraphicsUtils.convertBufferedImage2JavaFXImage(img0);
    327                 right = GraphicsUtils.convertBufferedImage2JavaFXImage(img1);
    328                 back = GraphicsUtils.convertBufferedImage2JavaFXImage(img2);
    329                 left = GraphicsUtils.convertBufferedImage2JavaFXImage(img3);
    330                 up = GraphicsUtils.convertBufferedImage2JavaFXImage(img4);
    331                 down = GraphicsUtils.convertBufferedImage2JavaFXImage(img5);
    332 
    333                 root = new Group();
    334 
    335                 camera = new PerspectiveCamera(true);
    336                 cameraTransform.setTranslate(0, 0, 0);
    337                 cameraTransform.getChildren().addAll(camera);
    338                 camera.setNearClip(0.1);
    339                 camera.setFarClip(1000000.0);
    340                 camera.setFieldOfView(42);
    341                 camera.setTranslateZ(-cameraDistance);
    342                 final PointLight light = new PointLight(Color.WHITE);
    343 
    344                 cameraTransform.getChildren().add(light);
    345                 light.setTranslateX(camera.getTranslateX());
    346                 light.setTranslateY(camera.getTranslateY());
    347                 light.setTranslateZ(camera.getTranslateZ());
    348 
    349                 root.getChildren().add(cameraTransform);
    350 
    351                 // Load Cubemap box AFTER camera is initialized
    352                 final double size = 100000D;
    353 
    354                 cubemapBox = new CubemapBox(front, right, back, left, up, down, size, camera);
    355 
    356                 final Group torusGroup = new Group();
    357                 torusGroup.getChildren().add(cameraTransform);
    358 
    359                 final Scene scene = new Scene(new Group(root), 1024, 668, true, SceneAntialiasing.BALANCED);
    360                 scene.setFill(Color.TRANSPARENT);
    361                 scene.setCamera(camera);
    362 
    363                 // First person shooter keyboard movement
    364                 scene.setOnKeyPressed(event -> {
    365                         double change = 10.0;
    366                         // Add shift modifier to simulate "Running Speed"
    367                         if (event.isShiftDown()) {
    368                                 change = 50.0;
    369                         }
    370                         // What key did the user press?
    371                         final KeyCode keycode = event.getCode();
    372                         // Step 2c: Add Zoom controls
    373                         if (keycode == KeyCode.W) {
    374                                 camera.setTranslateZ(camera.getTranslateZ() + change);
    375                         }
    376                         if (keycode == KeyCode.S) {
    377                                 camera.setTranslateZ(camera.getTranslateZ() - change);
    378                         }
    379                         // Step 2d: Add Strafe controls
    380                         if (keycode == KeyCode.A) {
    381                                 camera.setTranslateX(camera.getTranslateX() - change);
    382                         }
    383                         if (keycode == KeyCode.D) {
    384                                 camera.setTranslateX(camera.getTranslateX() + change);
    385                         }
    386 
    387                 });
    388 
    389                 scene.setOnMousePressed((MouseEvent me) -> {
    390                         mousePosX = me.getSceneX();
    391                         mousePosY = me.getSceneY();
    392                         mouseOldX = me.getSceneX();
    393                         mouseOldY = me.getSceneY();
    394                 });
    395                 scene.setOnMouseDragged((MouseEvent me) -> {
    396                         mouseOldX = mousePosX;
    397                         mouseOldY = mousePosY;
    398                         mousePosX = me.getSceneX();
    399                         mousePosY = me.getSceneY();
    400                         mouseDeltaX = mousePosX - mouseOldX;
    401                         mouseDeltaY = mousePosY - mouseOldY;
    402 
    403                         double modifier = 10.0;
    404                         final double modifierFactor = 0.1;
    405 
    406                         if (me.isControlDown()) {
    407                                 modifier = 0.1;
    408                         }
    409                         if (me.isShiftDown()) {
    410                                 modifier = 50.0;
    411                         }
    412                         if (me.isPrimaryButtonDown()) {
    413                                 cameraTransform.ry.setAngle(
    414                                                 ((cameraTransform.ry.getAngle() + mouseDeltaX * modifierFactor * modifier * 2.0) % 360 + 540)
    415                                                                 % 360 - 180); // +
    416                                 cameraTransform.rx.setAngle(
    417                                                 ((cameraTransform.rx.getAngle() - mouseDeltaY * modifierFactor * modifier * 2.0) % 360 + 540)
    418                                                                 % 360 - 180); // -
    419 
    420                         } else if (me.isSecondaryButtonDown()) {
    421                                 final double z = camera.getTranslateZ();
    422                                 final double newZ = z + mouseDeltaX * modifierFactor * modifier;
    423                                 camera.setTranslateZ(newZ);
    424                         } else if (me.isMiddleButtonDown()) {
    425                                 cameraTransform.t.setX(cameraTransform.t.getX() + mouseDeltaX * modifierFactor * modifier * 0.3); // -
    426                                 cameraTransform.t.setY(cameraTransform.t.getY() + mouseDeltaY * modifierFactor * modifier * 0.3); // -
    427                         }
    428                 });
    429 
    430                 root.getChildren().addAll(cubemapBox, torusGroup);
    431                 root.setAutoSizeChildren(true);
    432 
    433                 return scene;
    434         }
    435 
    436         public CubemapBox getCubemapBox() {
    437                 if (cubemapBox == null) {
    438                         // shouldn't happen
    439                         initialize();
    440                 }
    441                 return cubemapBox;
    442         }
     198    return defaultScene;
     199  }
     200
     201  public CubemapBox getCubemapBox() {
     202    if (cubemapBox == null) {
     203      // shouldn't happen
     204      initialize();
     205    }
     206    return cubemapBox;
     207  }
    443208
    444209  public Scene getDefaultScene() {
  • applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/gui/imageinfo/WebLinkAction.java

    r34393 r34416  
    1212import org.openstreetmap.josm.gui.Notification;
    1313import org.openstreetmap.josm.plugins.streetside.utils.StreetsideUtils;
    14 import org.openstreetmap.josm.tools.I18n;
    1514import org.openstreetmap.josm.tools.ImageProvider;
    1615import org.openstreetmap.josm.tools.ImageProvider.ImageSizes;
  • applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/history/commands/CommandMove.java

    r34317 r34416  
    3838  @Override
    3939  public void undo() {
    40     for (StreetsideAbstractImage image : this.images) {
    41       image.move(-this.x, -this.y);
     40    for (StreetsideAbstractImage image : images) {
     41      image.move(-x, -y);
    4242      image.stopMoving();
    4343    }
     
    4747  @Override
    4848  public void redo() {
    49     for (StreetsideAbstractImage image : this.images) {
    50       image.move(this.x, this.y);
     49    for (StreetsideAbstractImage image : images) {
     50      image.move(x, y);
    5151      image.stopMoving();
    5252    }
     
    5656  @Override
    5757  public String toString() {
    58     // TODO: trn( RRH
    59     return trn("Moved {0} image", "Moved {0} images", this.images.size(),
    60         this.images.size());
     58    return trn("Moved {0} image", "Moved {0} images", images.size(),
     59        images.size());
    6160  }
    6261
     
    6463  public void sum(StreetsideCommand command) {
    6564    if (command instanceof CommandMove) {
    66       this.x += ((CommandMove) command).x;
    67       this.y += ((CommandMove) command).y;
     65      x += ((CommandMove) command).x;
     66      y += ((CommandMove) command).y;
    6867    }
    6968  }
  • applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/history/commands/CommandTurn.java

    r34325 r34416  
    3333  @Override
    3434  public void undo() {
    35     for (StreetsideAbstractImage image : this.images) {
    36       image.turn(-this.ca);
     35    for (StreetsideAbstractImage image : images) {
     36      image.turn(-ca);
    3737      image.stopMoving();
    3838    }
     
    4242  @Override
    4343  public void redo() {
    44     for (StreetsideAbstractImage image : this.images) {
    45       image.turn(this.ca);
     44    for (StreetsideAbstractImage image : images) {
     45      image.turn(ca);
    4646      image.stopMoving();
    4747    }
     
    5151  @Override
    5252  public String toString() {
    53     // TODO: trn( RRH
    54     return trn("Turned {0} image", "Turned {0} images", this.images.size(),
    55         this.images.size());
     53    return trn("Turned {0} image", "Turned {0} images", images.size(),
     54        images.size());
    5655  }
    5756
     
    5958  public void sum(StreetsideCommand command) {
    6059    if (command instanceof CommandTurn) {
    61       this.ca += ((CommandTurn) command).ca;
     60      ca += ((CommandTurn) command).ca;
    6261    }
    6362  }
  • applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/history/commands/CommandUnjoin.java

    r34317 r34416  
    4040  @Override
    4141  public void execute() {
    42     this.redo();
     42    redo();
    4343  }
    4444
     
    5959  @Override
    6060  public String toString() {
    61     // TODO: tr( RRH
    6261    return tr("2 images unjoined");
    6362  }
  • applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/io/download/SequenceDownloadRunnable.java

    r34412 r34416  
    7676        if (node.get("id") != null && node.get("la") != null && node.get("lo") != null) {
    7777          StreetsideImage image = new StreetsideImage(CubemapUtils.convertDecimal2Quaternary(node.path("id").asLong()), node.path("la").asDouble(), node.get("lo").asDouble());
    78           if(previous!=null) {
    79                   // Analyze sequence behaviour
    80                   //previous.setNext(image.getId());
    81           }
    8278          previous = image;
    8379          image.setAd(node.path("ad").asInt());
  • applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/io/export/StreetsideExportDownloadThread.java

    r34412 r34416  
    5858  @Override
    5959  public void run() {
    60     //CacheUtils.submit(image.getId(), StreetsideCache.Type.FULL_IMAGE, this);
     60    // use "thumbnail" type here so that the tiles are not exported
    6161    CacheUtils.submit(image.getId(), StreetsideCache.Type.THUMBNAIL, this);
    6262  }
  • applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/model/MapObject.java

    r34400 r34416  
    1010public class MapObject extends KeyIndexedObject {
    1111  private static final ImageIcon ICON_UNKNOWN_TYPE = ImageProvider.get("unknown-mapobject-type");
    12   //private static Function<String, URL> iconUrlGen = MainWebsite::mapObjectIcon;
    1312
    1413  private final LatLon coordinate;
     
    4948      return ICON_UNKNOWN_TYPE;
    5049    } else if (cachedIcon == null) {
    51       /*try {
    52         final ImageIcon downloadedIcon = new ImageIcon(ImageIO.read(iconUrlGen.apply(objectTypeID)));
    53         MapObjectIconCache.getInstance().put(objectTypeID, downloadedIcon);
    54         return downloadedIcon;
    55       } catch (IOException e) {
    56         logger.warn(I18n.tr("Failed to download icon " + objectTypeID, e));
    57         return ICON_UNKNOWN_TYPE;
    58       }*/
     50      // downloading of map icons is not currently supported by Streetside
    5951    }
    6052    return cachedIcon;
  • applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/model/UserProfile.java

    r34317 r34416  
    66import javax.swing.ImageIcon;
    77
     8// not currently used but kept in case Microsoft wants to support user logins
    89public class UserProfile extends KeyIndexedObject implements Serializable {
    9  
     10
    1011  private static final long serialVersionUID = 7993340649510343946L;
    11  
     12
    1213  private final String username;
    1314  private final ImageIcon avatar;
  • applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/utils/StreetsideProperties.java

    r34385 r34416  
    5858  public static final StringProperty START_DIR =
    5959    new StringProperty("streetside.start-directory", System.getProperty("user.home"));
     60  public static final StringProperty URL_CLIENT_ID =
     61    new StringProperty("streetside.url-clientid", System.getProperty("T1Fzd20xZjdtR0s1VDk5OFNIOXpYdzoxNDYyOGRkYzUyYTFiMzgz"));
     62  public static final StringProperty BING_MAPS_KEY =
     63    new StringProperty("streetside.bing-maps-key", System.getProperty("AuftgJsO0Xs8Ts4M1xZUQJQXJNsvmh3IV8DkNieCiy3tCwCUMq76-WpkrBtNAuEm"));
     64  public static final StringProperty TEST_BUBBLE_ID =
     65    new StringProperty("streetside.test-bubble-id", System.getProperty("80848005"));
    6066
    6167  /**
  • applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/utils/StreetsideURL.java

    r34412 r34416  
    2828        /** Base URL of the Bing Bubble API. */
    2929        private static final String STREETSIDE_BASE_URL = "https://dev.virtualearth.net/mapcontrol/HumanScaleServices/GetBubbles.ashx";
    30         private static final String CLIENT_ID = "T1Fzd20xZjdtR0s1VDk5OFNIOXpYdzoxNDYyOGRkYzUyYTFiMzgz";
    31         private static final String BING_MAPS_KEY = "AuftgJsO0Xs8Ts4M1xZUQJQXJNsvmh3IV8DkNieCiy3tCwCUMq76-WpkrBtNAuEm";
    32         private static final String TEST_BUBBLE_ID = "80848005";
    33 
    34         private static final String STREETSIDE_PRIVACY_URL = "https://www.bing.com/maps/privacyreport/streetsideprivacyreport?bubbleid=";
     30        /** Base URL for Streetside privacy concerns. */
     31  private static final String STREETSIDE_PRIVACY_URL = "https://www.bing.com/maps/privacyreport/streetsideprivacyreport?bubbleid=";
    3532
    3633        private static final int OSM_BBOX_NORTH = 3;
     
    4037
    4138        public static final class APIv3 {
    42                 //private static final String BASE_URL = "https://a.mapillary.com/v3/";
    4339
    4440                private APIv3() {
     
    106102                }
    107103
    108                 /**
    109                  * @return the URL where you'll find information about the user account as JSON
    110                  */
    111                 /*public static URL userURL() {
    112                         return StreetsideURL.string2URL(APIv3.BASE_URL, "me", StreetsideURL.queryString(null));
    113                 }*/
    114104        }
    115105
     
    174164                                throw new IllegalArgumentException("The image id may not be null!");
    175165                        }
    176                         return StreetsideURL.string2URL(MessageFormat.format("{0}{1}{2}{3}{4}",VirtualEarth.BASE_URL_PREFIX, "0", id, "01", VirtualEarth.BASE_URL_SUFFIX));
     166                        return StreetsideURL.string2URL(MessageFormat.format("{0}{1}{2}{3}{4}",VirtualEarth.BASE_URL_PREFIX, "0", id, "0101", VirtualEarth.BASE_URL_SUFFIX));
    177167                }
    178168
     
    257247         */
    258248        static String queryString(Map<String, String> parts) {
    259                 final StringBuilder ret = new StringBuilder("?client_id=").append(StreetsideURL.CLIENT_ID);
     249                final StringBuilder ret = new StringBuilder("?client_id=").append(StreetsideProperties.URL_CLIENT_ID.get());
    260250                if (parts != null) {
    261251                        for (final Entry<String, String> entry : parts.entrySet()) {
     
    292282                                .append("&c=1000")
    293283                                .append("&appkey=")
    294                                 .append(StreetsideURL.BING_MAPS_KEY);
     284                                .append(StreetsideProperties.BING_MAPS_KEY.get());
    295285                        } catch (final UnsupportedEncodingException e) {
    296286                                logger.error(e); // This should not happen, as the encoding is hard-coded
     
    308298                final StringBuilder ret = new StringBuilder("?id=");
    309299                try {
    310                         ret.append(URLEncoder.encode(StreetsideURL.TEST_BUBBLE_ID, StandardCharsets.UTF_8.name()));
     300                        ret.append(URLEncoder.encode(StreetsideProperties.TEST_BUBBLE_ID.get(), StandardCharsets.UTF_8.name()));
    311301                        ret.append('&').append(URLEncoder.encode("appkey=", StandardCharsets.UTF_8.name())).append('=')
    312                         .append(URLEncoder.encode(StreetsideURL.BING_MAPS_KEY, StandardCharsets.UTF_8.name()));
     302                        .append(URLEncoder.encode(StreetsideProperties.BING_MAPS_KEY.get(), StandardCharsets.UTF_8.name()));
    313303                } catch (final UnsupportedEncodingException e) {
    314304                        logger.error(e); // This should not happen, as the encoding is hard-coded
Note: See TracChangeset for help on using the changeset viewer.