Search in sources :

Example 11 with FreeplaneVersion

use of org.freeplane.core.util.FreeplaneVersion in project freeplane by freeplane.

the class UpdateCheckAction method checkForUpdates.

private void checkForUpdates(final boolean autoRun) {
    final Date now = new Date();
    ResourceController.getResourceController().setProperty(LAST_UPDATE_CHECK_TIME, Long.toString(now.getTime()));
    final Locale defaultLocale = Locale.getDefault();
    final String language = defaultLocale.getLanguage();
    final String DEFAULT_LANGUAGE = "en";
    final String translatedWebUpdate = getWebUpdateUrl(language);
    final FreeplaneVersion localVersion = FreeplaneVersion.getVersion();
    final HttpVersionClient translatedVersionClient = new HttpVersionClient(translatedWebUpdate, localVersion);
    FreeplaneVersion lastTranslatedVersion = translatedVersionClient.getRemoteVersion();
    if (lastTranslatedVersion == null) {
        lastTranslatedVersion = localVersion;
    }
    final String history;
    final FreeplaneVersion lastVersion;
    final boolean connectSuccessfull;
    if (!language.equals(DEFAULT_LANGUAGE)) {
        final String defaultWebUpdate = getWebUpdateUrl(DEFAULT_LANGUAGE);
        final HttpVersionClient defaultVersionClient = new HttpVersionClient(defaultWebUpdate, lastTranslatedVersion);
        lastVersion = defaultVersionClient.getRemoteVersion();
        history = defaultVersionClient.getHistory() + translatedVersionClient.getHistory();
        connectSuccessfull = defaultVersionClient.isSuccessful();
    } else {
        lastVersion = lastTranslatedVersion;
        history = translatedVersionClient.getHistory();
        connectSuccessfull = translatedVersionClient.isSuccessful();
    }
    checkForAddonsUpdates();
    Controller.getCurrentController().getViewController().invokeLater(new Runnable() {

        public void run() {
            addUpdateButton(lastVersion);
            if (autoRun) {
                return;
            }
            showUpdateDialog(connectSuccessfull, localVersion, lastVersion, history);
        }
    });
}
Also used : Locale(java.util.Locale) FreeplaneVersion(org.freeplane.core.util.FreeplaneVersion) Date(java.util.Date)

Example 12 with FreeplaneVersion

use of org.freeplane.core.util.FreeplaneVersion in project freeplane by freeplane.

the class UpdateCheckAction method checkForAddonsUpdates.

// looking for new versions of add-ons
// and store the latest version as a property
private void checkForAddonsUpdates() {
    // loop on add-ons
    List<AddOnProperties> installedAddOns = AddOnsController.getController().getInstalledAddOns();
    LogUtils.info("checking for updates of " + installedAddOns.size() + " add-ons");
    for (AddOnProperties addOnProperties : installedAddOns) {
        FreeplaneVersion addOnLocalVersion = toFreeplaneVersion(addOnProperties.getVersion());
        // get the update-url for this add-on
        // append the current add-on version for
        // - statistics (appending a freeplane installation unique id would enable building add-on usage statistics)
        // - handling special cases ? (maybe we could send the freeplane version too)
        final URL updateUrl = addOnProperties.getUpdateUrl();
        if (updateUrl != null) {
            final String addOnUpdateRequest = updateUrl + "?v=" + addOnLocalVersion.toString();
            final HttpVersionClient versionClient = new HttpVersionClient(addOnUpdateRequest, addOnLocalVersion);
            final boolean connectSuccesfull;
            final FreeplaneVersion latestVersion = versionClient.getRemoteVersion();
            connectSuccesfull = versionClient.isSuccessful();
            if (connectSuccesfull) {
                addOnProperties.setLatestVersion(latestVersion.toString());
                if (versionClient.getRemoteVersionDownloadUrl() != null) {
                    addOnProperties.setLatestVersionDownloadUrl(versionClient.getRemoteVersionDownloadUrl());
                }
                if (versionClient.getRemoteVersionChangelogUrl() != null) {
                    addOnProperties.setLatestVersionChangelogUrl(versionClient.getRemoteVersionChangelogUrl());
                }
            }
        }
    }
}
Also used : FreeplaneVersion(org.freeplane.core.util.FreeplaneVersion) AddOnProperties(org.freeplane.main.addons.AddOnProperties) URL(java.net.URL)

Example 13 with FreeplaneVersion

use of org.freeplane.core.util.FreeplaneVersion in project freeplane by freeplane.

the class UpdateCheckAction method showUpdateDialog.

private int showUpdateDialog(final String info, final FreeplaneVersion freeplaneLatestVersion, final String history) {
    // dialog layout
    // - messagePane (verticalBox)
    // |- gridPane (GridBagLayout)
    // Components | Installed version | Latestversion | Changelog button | Got to download button
    // 
    // |- preferences label
    // |- checkbox for automatic update
    final Box messagePane = Box.createVerticalBox();
    final JLabel emptyLabel = new JLabel("");
    // grid setup
    final JPanel gridPane = new JPanel(new GridBagLayout());
    gridPane.setAlignmentX(JLabel.LEFT_ALIGNMENT);
    final Border paddingBorder = BorderFactory.createEmptyBorder(0, 10, 10, 0);
    gridPane.setBorder(BorderFactory.createCompoundBorder(paddingBorder, paddingBorder));
    final GridBagConstraints c = new GridBagConstraints();
    c.fill = GridBagConstraints.HORIZONTAL;
    int gridRow = 0;
    c.weightx = 0.5;
    // table headers
    final JLabel componentHeader = new JLabel(TextUtils.getText("updater.component"), SwingConstants.CENTER);
    final JLabel installedVersionHeader = new JLabel(TextUtils.getText("updater.version.installed"), SwingConstants.CENTER);
    final JLabel latestVersionHeader = new JLabel(TextUtils.getText("updater.version.latest"), SwingConstants.CENTER);
    final Font boldFont = new Font(componentHeader.getFont().getName(), Font.BOLD, componentHeader.getFont().getSize());
    componentHeader.setFont(boldFont);
    installedVersionHeader.setFont(boldFont);
    latestVersionHeader.setFont(boldFont);
    componentHeader.setBorder(paddingBorder);
    installedVersionHeader.setBorder(paddingBorder);
    latestVersionHeader.setBorder(paddingBorder);
    // adding headers
    c.gridy = 0;
    c.gridx = 0;
    gridPane.add(componentHeader, c);
    c.gridx = 1;
    gridPane.add(installedVersionHeader, c);
    c.gridx = 2;
    gridPane.add(latestVersionHeader, c);
    c.gridx = 3;
    gridPane.add(emptyLabel, c);
    c.gridx = 4;
    gridPane.add(emptyLabel, c);
    // first row : freeplane
    c.gridy = 1;
    final JLabel freeplaneLabel = new JLabel("Freeplane");
    final FreeplaneVersion freeplaneLocalVersion = FreeplaneVersion.getVersion();
    final JLabel freeplaneInstalledVersionLabel = new JLabel(freeplaneLocalVersion.toString(), SwingConstants.CENTER);
    final JLabel freeplaneLatestVersionLabel;
    JButton updateButton;
    JButton changelogButton;
    final Locale defaultLocale = Locale.getDefault();
    final String language = defaultLocale.getLanguage();
    final String translatedWebUpdate = getWebUpdateUrl(language);
    changelogButton = new JButton(TextUtils.getText("updater.viewChangelog"));
    changelogButton.addActionListener(openUrlListener);
    changelogButton.setActionCommand(translatedWebUpdate);
    updateButton = new JButton(TextUtils.getText("updater.goToDownload"));
    updateButton.addActionListener(openUrlListener);
    updateButton.setActionCommand("http://freeplane.sourceforge.net");
    Boolean needsUpdate = Boolean.FALSE;
    if (freeplaneLatestVersion != null) {
        if (freeplaneLocalVersion.compareTo(freeplaneLatestVersion) < 0) {
            needsUpdate = Boolean.TRUE;
        } else {
            needsUpdate = Boolean.FALSE;
        }
        freeplaneLatestVersionLabel = new JLabel(freeplaneLatestVersion.toString(), SwingConstants.CENTER);
    } else {
        freeplaneLatestVersionLabel = new JLabel(TextUtils.getText("updater.version.unknown"), SwingConstants.CENTER);
        freeplaneLatestVersionLabel.setToolTipText(TextUtils.getText(info));
    }
    changelogButton.setEnabled(needsUpdate);
    updateButton.setEnabled(needsUpdate);
    c.gridx = 0;
    gridPane.add(freeplaneLabel, c);
    c.gridx = 1;
    gridPane.add(freeplaneInstalledVersionLabel, c);
    c.gridx = 2;
    gridPane.add(freeplaneLatestVersionLabel, c);
    c.gridx = 3;
    gridPane.add(changelogButton, c);
    c.gridx = 4;
    gridPane.add(updateButton, c);
    final List<AddOnProperties> installedAddOns = AddOnsController.getController().getInstalledAddOns();
    gridRow = 3;
    for (AddOnProperties addOnProperties : installedAddOns) {
        FreeplaneVersion addOnLocalVersion = toFreeplaneVersion(addOnProperties.getVersion());
        FreeplaneVersion addOnLatestVersion = toFreeplaneVersion(addOnProperties.getLatestVersion());
        final JLabel addOnInstalledVersionLabel = new JLabel(addOnLocalVersion.toString(), SwingConstants.CENTER);
        final JLabel addOnLatestVersionLabel;
        needsUpdate = Boolean.FALSE;
        if (addOnLatestVersion != null) {
            if (addOnLocalVersion.compareTo(addOnLatestVersion) < 0) {
                needsUpdate = Boolean.TRUE;
            }
            addOnLatestVersionLabel = new JLabel(addOnLatestVersion.toString(), SwingConstants.CENTER);
        } else {
            addOnLatestVersionLabel = new JLabel(TextUtils.getText("updater.version.unknown"), SwingConstants.CENTER);
            if (addOnProperties.getUpdateUrl() != null) {
                addOnLatestVersionLabel.setToolTipText(TextUtils.getText("updater.version.unreachable") + " " + addOnProperties.getUpdateUrl());
            } else {
                addOnLatestVersionLabel.setToolTipText(TextUtils.getText("updater.version.noUpdateUrl"));
            }
        }
        final JLabel addOnLabel = new JLabel(TextUtils.getText("addons." + addOnProperties.getName()));
        c.gridx = 0;
        c.gridy = gridRow;
        gridPane.add(addOnLabel, c);
        c.gridx = 1;
        c.gridy = gridRow;
        gridPane.add(addOnInstalledVersionLabel, c);
        c.gridx = 2;
        c.gridy = gridRow;
        gridPane.add(addOnLatestVersionLabel, c);
        c.gridx = 3;
        c.gridy = gridRow;
        changelogButton = new JButton(TextUtils.getText("updater.viewChangelog"));
        changelogButton.addActionListener(openUrlListener);
        if (addOnProperties.getLatestVersionChangelogUrl() != null) {
            changelogButton.setActionCommand(addOnProperties.getLatestVersionChangelogUrl().toString());
        } else if (addOnProperties.getUpdateUrl() != null) {
            changelogButton.setActionCommand(String.valueOf(addOnProperties.getUpdateUrl()));
        }
        gridPane.add(changelogButton, c);
        changelogButton.setEnabled(needsUpdate);
        c.gridx = 4;
        c.gridy = gridRow;
        updateButton = new JButton(TextUtils.getText("updater.goToDownload"));
        updateButton.addActionListener(openUrlListener);
        if (addOnProperties.getLatestVersionDownloadUrl() != null) {
            updateButton.setActionCommand(addOnProperties.getLatestVersionDownloadUrl().toString());
        } else if (addOnProperties.getHomepage() != null) {
            updateButton.setActionCommand(addOnProperties.getHomepage().toString());
        }
        gridPane.add(updateButton, c);
        updateButton.setEnabled(needsUpdate);
        gridRow++;
    }
    messagePane.add(gridPane);
    final JLabel confLabel = new JLabel(TextUtils.getText("preferences"));
    confLabel.setFont(boldFont);
    messagePane.add(confLabel);
    final JCheckBox updateAutomatically = new JCheckBox(TextUtils.getText("OptionPanel.check_updates_automatically"), ResourceController.getResourceController().getBooleanProperty(CHECK_UPDATES_AUTOMATICALLY));
    updateAutomatically.setAlignmentX(JLabel.LEFT_ALIGNMENT);
    messagePane.add(updateAutomatically);
    final Object[] options;
    options = new Object[] { TextUtils.getText("simplyhtml.closeBtnName") };
    final int choice = JOptionPane.showOptionDialog(Controller.getCurrentController().getViewController().getFrame(), messagePane, TextUtils.getText("updatecheckdialog"), JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, null, options, options[0]);
    ResourceController.getResourceController().setProperty(CHECK_UPDATES_AUTOMATICALLY, Boolean.toString(updateAutomatically.isSelected()));
    return choice;
}
Also used : Locale(java.util.Locale) JPanel(javax.swing.JPanel) GridBagConstraints(java.awt.GridBagConstraints) GridBagLayout(java.awt.GridBagLayout) JButton(javax.swing.JButton) JLabel(javax.swing.JLabel) Box(javax.swing.Box) JCheckBox(javax.swing.JCheckBox) Font(java.awt.Font) AddOnProperties(org.freeplane.main.addons.AddOnProperties) JCheckBox(javax.swing.JCheckBox) FreeplaneVersion(org.freeplane.core.util.FreeplaneVersion) Border(javax.swing.border.Border)

Aggregations

FreeplaneVersion (org.freeplane.core.util.FreeplaneVersion)13 Date (java.util.Date)4 AddOnProperties (org.freeplane.main.addons.AddOnProperties)4 Font (java.awt.Font)2 GridBagConstraints (java.awt.GridBagConstraints)2 GridBagLayout (java.awt.GridBagLayout)2 URL (java.net.URL)2 Locale (java.util.Locale)2 Box (javax.swing.Box)2 JButton (javax.swing.JButton)2 JCheckBox (javax.swing.JCheckBox)2 JLabel (javax.swing.JLabel)2 JPanel (javax.swing.JPanel)2 Timer (javax.swing.Timer)2 Border (javax.swing.border.Border)2 JScrollPane (javax.swing.JScrollPane)1 JTextArea (javax.swing.JTextArea)1 IAttributeHandler (org.freeplane.core.io.IAttributeHandler)1 NodeModel (org.freeplane.features.map.NodeModel)1