    001// License: GPL. For details, see LICENSE file.
    002package org.openstreetmap.josm.plugins.streetside.utils;
    003
    004import static org.openstreetmap.josm.tools.I18n.tr;
    005
    006import javax.swing.JOptionPane;
    007
    008import org.openstreetmap.josm.Main;
    009import org.openstreetmap.josm.tools.Logging;
    010
    011/**
    012 * @author nokutu
    013 *
    014 */
    015public final class PluginState {
    016
    017  private static boolean submittingChangeset;
    018
    019  private static int runningDownloads;
    020  /** Images that have to be uploaded. */
    021  private static int imagesToUpload;
    022  /** Images that have been uploaded. */
    023  private static int imagesUploaded;
    024
    025  private PluginState() {
    026    // Empty constructor to avoid instantiation
    027  }
    028
    029  /**
    030   * Called when a download is started.
    031   */
    032  public static void startDownload() {
    033    runningDownloads++;
    034  }
    035
    036  /**
    037   * Called when a download is finished.
    038   */
    039  public static void finishDownload() {
    040    if (runningDownloads == 0) {
    041      Logging.warn("The amount of running downloads is equal to 0");
    042      return;
    043    }
    044    runningDownloads--;
    045  }
    046
    047  /**
    048   * Checks if there is any running download.
    049   *
    050   * @return true if the plugin is downloading; false otherwise.
    051   */
    052  public static boolean isDownloading() {
    053    return runningDownloads > 0;
    054  }
    055
    056  /**
    057   * Checks if there is a changeset being submitted.
    058   *
    059   * @return true if the plugin is submitting a changeset false otherwise.
    060   */
    061  public static boolean isSubmittingChangeset() {
    062    return submittingChangeset;
    063  }
    064   /**
    065   * Checks if there is any running upload.
    066   *
    067   * @return true if the plugin is uploading; false otherwise.
    068   */
    069  public static boolean isUploading() {
    070    return imagesToUpload > imagesUploaded;
    071  }
    072
    073  /**
    074   * Sets the amount of images that are going to be uploaded.
    075   *
    076   * @param amount
    077   *          The amount of images that are going to be uploaded.
    078   */
    079  public static void addImagesToUpload(int amount) {
    080    if (imagesToUpload <= imagesUploaded) {
    081      imagesToUpload = 0;
    082      imagesUploaded = 0;
    083    }
    084    imagesToUpload += amount;
    085  }
    086
    087  public static int getImagesToUpload() {
    088    return imagesToUpload;
    089  }
    090
    091  public static int getImagesUploaded() {
    092    return imagesUploaded;
    093  }
    094
    095  /**
    096   * Called when an image is uploaded.
    097   */
    098  public static void imageUploaded() {
    099    imagesUploaded++;
    100    if (imagesToUpload == imagesUploaded && Main.main != null) {
    101        finishedUploadDialog(imagesUploaded);
    102    }
    103  }
    104
    105  private static void finishedUploadDialog(int numImages) {
    106    JOptionPane.showMessageDialog(
    107      Main.parent,
    108      tr("You have successfully uploaded {0} images to mapillary.com", numImages),
    109      tr("Finished upload"),
    110      JOptionPane.INFORMATION_MESSAGE
    111    );
    112  }
    113
    114  public static void notLoggedInToMapillaryDialog() {
    115    if (Main.main == null) {
    116      return;
    117    }
    118    JOptionPane.showMessageDialog(
    119        Main.parent,
    120        tr("You are not logged in, please log in to Mapillary in the preferences"),
    121        tr("Not Logged in to Mapillary"),
    122        JOptionPane.WARNING_MESSAGE
    123    );
    124  }
    125
    126
    127
    128  /**
    129   * Returns the text to be written in the status bar.
    130   *
    131   * @return The {@code String} that is going to be written in the status bar.
    132   */
    133  public static String getUploadString() {
    134    return tr("Uploading: {0}", "(" + imagesUploaded + "/" + imagesToUpload + ")");
    135  }
    136
    137  public static void setSubmittingChangeset(boolean isSubmitting) {
    138      submittingChangeset = isSubmitting;
    139  }
    140}