Search in sources :

Example 6 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 7 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, String language) {
    // 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 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);
    if (!history.isEmpty()) {
        final JTextArea text = new JTextArea(history);
        text.setRows(10);
        final JScrollPane scrollPane = new JScrollPane(text, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
        scrollPane.setBorder(BorderFactory.createEtchedBorder());
        messagePane.add(scrollPane);
    }
    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(UITools.getMenuComponent(), 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 : JScrollPane(javax.swing.JScrollPane) JPanel(javax.swing.JPanel) GridBagConstraints(java.awt.GridBagConstraints) JTextArea(javax.swing.JTextArea) 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)

Example 8 with FreeplaneVersion

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

the class UpdateCheckAction method setTimer.

private void setTimer() {
    if (autorunEnabled == false) {
        return;
    }
    autorunEnabled = ResourceController.getResourceController().getBooleanProperty(CHECK_UPDATES_AUTOMATICALLY);
    if (autorunEnabled == false) {
        return;
    }
    autorunEnabled = false;
    final Date now = new Date();
    final long nextCheckMillis = ResourceController.getResourceController().getLongProperty(LAST_UPDATE_CHECK_TIME, 0) + ONE_DAY;
    final Date nextCheckDate = new Date(nextCheckMillis);
    if (now.before(nextCheckDate)) {
        final FreeplaneVersion knownNewVersion = getKnownNewVersion();
        addUpdateButton(knownNewVersion);
        return;
    }
    autorunTimer = new Timer(CHECK_TIME, this);
    autorunTimer.setRepeats(false);
    autorunTimer.start();
}
Also used : Timer(javax.swing.Timer) FreeplaneVersion(org.freeplane.core.util.FreeplaneVersion) Date(java.util.Date)

Example 9 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 String translatedWebUpdate = getWebUpdateUrl(ConnectionStatus.TRANSLATED.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 ConnectionStatus connectionStatus;
    if (!ConnectionStatus.TRANSLATED.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();
        connectionStatus = translatedVersionClient.isSuccessful() ? ConnectionStatus.TRANSLATED : defaultVersionClient.isSuccessful() ? ConnectionStatus.DEFAULT : ConnectionStatus.FAILURE;
    } else {
        lastVersion = lastTranslatedVersion;
        history = translatedVersionClient.getHistory();
        connectionStatus = translatedVersionClient.isSuccessful() ? ConnectionStatus.DEFAULT : ConnectionStatus.FAILURE;
    }
    checkForAddonsUpdates();
    Controller.getCurrentController().getViewController().invokeLater(new Runnable() {

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

Example 10 with FreeplaneVersion

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

the class UpdateCheckAction method getKnownNewVersion.

private FreeplaneVersion getKnownNewVersion() {
    final FreeplaneVersion localVersion = FreeplaneVersion.getVersion();
    final String property = ResourceController.getResourceController().getProperty(LAST_UPDATE_VERSION);
    if (property.equals("")) {
        return null;
    }
    FreeplaneVersion lastVersion = FreeplaneVersion.getVersion(property);
    if (lastVersion.compareTo(localVersion) <= 0) {
        lastVersion = null;
    }
    return lastVersion;
}
Also used : FreeplaneVersion(org.freeplane.core.util.FreeplaneVersion)

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