Ticket #19142: 19142.patch

File 19142.patch, 17.1 KB (added by taylor.smock, 6 years ago)

Add option to choose JavaFX or not

  • src/main/java/org/openstreetmap/josm/plugins/mapillary/gui/IDatePicker.java

    diff --git a/src/main/java/org/openstreetmap/josm/plugins/mapillary/gui/IDatePicker.java b/src/main/java/org/openstreetmap/josm/plugins/mapillary/gui/IDatePicker.java
    index cc5187aff..45df18318 100644
    a b import java.util.function.Consumer;  
    66
    77import javax.swing.JComponent;
    88
     9import org.openstreetmap.josm.plugins.mapillary.utils.MapillaryProperties;
     10import org.openstreetmap.josm.tools.Logging;
     11
    912/**
    1013 * @author Taylor Smock
    1114 */
    public interface IDatePicker<T extends JComponent> {  
    1922  void reset();
    2023
    2124  void addEventHandler(Consumer<IDatePicker<?>> function);
     25
     26  public static IDatePicker<? extends JComponent> getNewDatePicker() {
     27    boolean fx = false;
     28    boolean useFx = MapillaryProperties.JAVA_FX.get();
     29    if (useFx) {
     30      try {
     31        new DatePickerFx();
     32        fx = true;
     33      } catch (UnsupportedClassVersionError e) {
     34        Logging.error(e);
     35      }
     36    }
     37    if (fx) {
     38      return new DatePickerFx();
     39    }
     40    return new DatePickerSwing();
     41  }
    2242}
  • src/main/java/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryFilterDialog.java

    diff --git a/src/main/java/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryFilterDialog.java b/src/main/java/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryFilterDialog.java
    index 196ecc9c1..680e6d91d 100644
    a b import org.openstreetmap.josm.plugins.mapillary.oauth.MapillaryLoginListener;  
    5050import org.openstreetmap.josm.plugins.mapillary.oauth.MapillaryUser;
    5151import org.openstreetmap.josm.tools.GBC;
    5252import org.openstreetmap.josm.tools.ImageProvider;
    53 import org.openstreetmap.josm.tools.Logging;
    5453
    5554/**
    5655 * ToggleDialog that lets you filter the images that are being shown.
    public final class MapillaryFilterDialog extends ToggleDialog implements Mapilla  
    119118    fromPanel.add(this.time);
    120119
    121120    JPanel timePanel;
    122     try {
    123       startDate = new DatePickerFx();
    124       endDate = new DatePickerFx();
    125     } catch (UnsupportedClassVersionError e) {
    126       // Don't kill the plugin if JavaFX cannot be loaded
    127       Logging.error(e);
    128       startDate = new DatePickerSwing();
    129       endDate = new DatePickerSwing();
    130     }
     121    startDate = IDatePicker.getNewDatePicker();
     122    endDate = IDatePicker.getNewDatePicker();
    131123    Consumer<IDatePicker<?>> function = this::updateDates;
    132124    startDate.addEventHandler(function);
    133125    endDate.addEventHandler(function);
  • src/main/java/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryPreferenceSetting.java

    diff --git a/src/main/java/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryPreferenceSetting.java b/src/main/java/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryPreferenceSetting.java
    index 14ab11af1..8b88af105 100644
    a b public class MapillaryPreferenceSetting implements SubPreferenceSetting, Mapilla  
    101101  private final JLabel loginLabel = new JLabel();
    102102  private final JPanel loginPanel = new JPanel();
    103103
     104  private JCheckBox javaFx;
     105
    104106  @Override
    105107  public TabPreferenceSetting getTabPreferenceSetting(PreferenceTabbedPane gui) {
    106108    return gui.getDisplayPreference();
    public class MapillaryPreferenceSetting implements SubPreferenceSetting, Mapilla  
    169171    requiresLogin.add(new JSeparator(), GBC.eol().fill(GBC.HORIZONTAL));
    170172    mainPanel.add(requiresLogin, GBC.eol().fill(GBC.HORIZONTAL));
    171173
     174    javaFx = new JCheckBox(I18n.tr("Use JavaFX for better looking dialogs"));
     175    javaFx.setToolTipText(I18n.tr("Enable/disable JavaFX (requires restart). Using JavaFX may cause a smaller window issue, or a whited-out sidebar."));
     176    javaFx.setSelected(MapillaryProperties.JAVA_FX.get());
     177    mainPanel.add(new JSeparator(), GBC.eol().fill(GBC.HORIZONTAL));
     178    mainPanel.add(javaFx, GBC.eol());
     179
    172180    if (ExpertToggleAction.isExpert() || developer.isSelected()) {
    173181      mainPanel.add(developer, GBC.eol());
    174182    }
    175183    MapillaryColorScheme.styleAsDefaultPanel(
    176184      mainPanel, downloadModePanel, displayHour, format24, moveTo, hoverEnabled, darkMode, cutOffSeq,
    177       imageLinkToBlurEditor, developer, preFetchPanel, requiresLogin
     185      imageLinkToBlurEditor, developer, preFetchPanel, requiresLogin, javaFx
    178186      );
    179187    mainPanel.add(Box.createVerticalGlue(), GBC.eol().fill(GridBagConstraints.BOTH));
    180188
    public class MapillaryPreferenceSetting implements SubPreferenceSetting, Mapilla  
    236244    MapillaryProperties.PRE_FETCH_IMAGE_COUNT.put(preFetchSize.getNumber().intValue());
    237245    MapillaryProperties.IMAGE_MODE.put(((PRIVATE_IMAGE_DOWNLOAD_MODE) privateImages.getSelectedItem()).getPrefId());
    238246
    239     //Restart is never required
    240     return false;
     247    //Restart is never required, except when JavaFX is switched on/off
     248    return MapillaryProperties.JAVA_FX.put(javaFx.isSelected());
    241249  }
    242250
    243251  @Override
  • src/main/java/org/openstreetmap/josm/plugins/mapillary/gui/dialog/MapillaryExpertFilterDialog.java

    diff --git a/src/main/java/org/openstreetmap/josm/plugins/mapillary/gui/dialog/MapillaryExpertFilterDialog.java b/src/main/java/org/openstreetmap/josm/plugins/mapillary/gui/dialog/MapillaryExpertFilterDialog.java
    index de6c0f09b..8a22e88db 100644
    a b public class MapillaryExpertFilterDialog extends ToggleDialog implements DataSet  
    519519      }
    520520    }
    521521  }
    522 }
    523  No newline at end of file
     522}
  • src/main/java/org/openstreetmap/josm/plugins/mapillary/gui/dialog/TrafficSignFilter.java

    diff --git a/src/main/java/org/openstreetmap/josm/plugins/mapillary/gui/dialog/TrafficSignFilter.java b/src/main/java/org/openstreetmap/josm/plugins/mapillary/gui/dialog/TrafficSignFilter.java
    index 3cf31dfdd..e8f17865e 100644
    a b import org.apache.commons.io.IOUtils;  
    3939import org.openstreetmap.josm.data.osm.Filter;
    4040import org.openstreetmap.josm.gui.MainApplication;
    4141import org.openstreetmap.josm.gui.widgets.FilterField;
    42 import org.openstreetmap.josm.plugins.mapillary.gui.DatePickerFx;
    43 import org.openstreetmap.josm.plugins.mapillary.gui.DatePickerSwing;
    4442import org.openstreetmap.josm.plugins.mapillary.gui.IDatePicker;
    4543import org.openstreetmap.josm.plugins.mapillary.gui.ImageCheckBoxButton;
    4644import org.openstreetmap.josm.tools.Destroyable;
    public class TrafficSignFilter extends JPanel implements Destroyable {  
    194192      lastSeen.add(new JLabel(I18n.tr("Last Seen End")), GBC.eol());
    195193    }
    196194
    197     boolean fx = false;
    198     try {
    199       new DatePickerFx();
    200       fx = true;
    201     } catch (UnsupportedClassVersionError e) {
    202       Logging.error(e);
    203     }
    204     final IDatePicker<?> firstSeenPicker;
    205     final IDatePicker<?> lastSeenPicker;
    206     if (fx) {
    207       firstSeenPicker = new DatePickerFx();
    208       lastSeenPicker = new DatePickerFx();
    209     } else {
    210       firstSeenPicker = new DatePickerSwing();
    211       lastSeenPicker = new DatePickerSwing();
    212     }
     195    final IDatePicker<?> firstSeenPicker = IDatePicker.getNewDatePicker();
     196    final IDatePicker<?> lastSeenPicker = IDatePicker.getNewDatePicker();
    213197    firstSeen.add(firstSeenPicker.getComponent(), GBC.eol());
    214198    lastSeen.add(lastSeenPicker.getComponent(), GBC.eol());
    215199    firstSeenPicker.addEventHandler(t -> updateDates(firstLast, firstSeenPicker, firstSeenPicker, lastSeenPicker));
  • src/main/java/org/openstreetmap/josm/plugins/mapillary/utils/MapillaryProperties.java

    diff --git a/src/main/java/org/openstreetmap/josm/plugins/mapillary/utils/MapillaryProperties.java b/src/main/java/org/openstreetmap/josm/plugins/mapillary/utils/MapillaryProperties.java
    index 376571157..bf5801f76 100644
    a b public final class MapillaryProperties {  
    8787   */
    8888  public static final DoubleProperty UNSELECTED_OPACITY = new DoubleProperty("mapillary.unselectedimageopacity", 0.50);
    8989
     90  /**
     91   * Whether or not to try to use JavaFX
     92   */
     93  public static final BooleanProperty JAVA_FX = new BooleanProperty("mapillary.javafx", true);
     94
    9095  private MapillaryProperties() {
    9196    // Private constructor to avoid instantiation
    9297  }