From 0a4f2f54c753b7559ef46abd6334374783d7be90 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Fri, 4 Mar 2011 18:53:07 +0100 Subject: [PATCH] non-modal update dialogs; HTML styling of new channel dialog --- .../updateSettings/impl/NewChannelDialog.java | 19 +++++++++++++++---- .../updateSettings/impl/UpdateChannel.java | 8 ++++++++ .../updateSettings/impl/UpdateChecker.java | 8 ++++++-- 3 files changed, 29 insertions(+), 6 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/NewChannelDialog.java b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/NewChannelDialog.java index 6e71af1ac944..bb1090d2edd0 100644 --- a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/NewChannelDialog.java +++ b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/NewChannelDialog.java @@ -18,7 +18,10 @@ package com.intellij.openapi.updateSettings.impl; import com.intellij.ide.BrowserUtil; import com.intellij.openapi.application.ApplicationNamesInfo; import com.intellij.openapi.ui.DialogWrapper; +import com.intellij.ui.BrowserHyperlinkListener; import com.intellij.ui.LicensingFacade; +import com.intellij.ui.components.JBScrollPane; +import com.intellij.util.ui.UIUtil; import javax.swing.*; import java.awt.event.ActionEvent; @@ -52,7 +55,7 @@ public class NewChannelDialog extends DialogWrapper { } }; if (myShowUpgradeButton) { - Action upgrade = new AbstractAction("Upgrade Online") { + Action upgrade = new AbstractAction("Buy Upgrade Online") { @Override public void actionPerformed(ActionEvent e) { LicensingFacade facade = LicensingFacade.getInstance(); @@ -68,18 +71,26 @@ public class NewChannelDialog extends DialogWrapper { @Override protected JComponent createCenterPanel() { - return new JLabel(myInformationText); + JEditorPane pane = new JEditorPane("text/html", myInformationText); + pane.addHyperlinkListener(new BrowserHyperlinkListener()); + pane.setEditable(false); + return new JBScrollPane(pane); } private void initInfo() { - StringBuilder builder = new StringBuilder().append("").append(myChannel.getName()).append("
"); + StringBuilder builder = new StringBuilder().append(""); + builder.append("").append(UIUtil.getCssFontDeclaration(UIUtil.getLabelFont())).append(""); + builder.append("").append(myChannel.getName()).append("
"); + builder.append(myChannel.getLatestBuild().getMessage()).append("

"); LicensingFacade facade = LicensingFacade.getInstance(); if (facade != null) { if (!myChannel.getLicensing().equals(UpdateChannel.LICENSING_EAP)) { Boolean paidUpgrade = facade.isPaidUpgrade(myChannel.getMajorVersion(), myChannel.getLatestBuild().getReleaseDate()); if (paidUpgrade != null) { if (paidUpgrade) { - builder.append("The new version requires upgrading your license key."); + builder.append("You can evaluate the new version for ") + .append(myChannel.getEvalDays()) + .append(" days or buy a license key or an upgrade online."); myShowUpgradeButton = true; } else { diff --git a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateChannel.java b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateChannel.java index f31ca6f9eed6..3a3869146e94 100644 --- a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateChannel.java +++ b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateChannel.java @@ -34,6 +34,7 @@ public class UpdateChannel { private final String myHomePageUrl; private final String myFeedbackUrl; private final List myBuilds; + private final int myEvalDays; public static final String LICENSING_EAP = "eap"; public static final String LICENSING_PRODUCTION = "production"; @@ -48,6 +49,9 @@ public class UpdateChannel { String majorVersion = node.getAttributeValue("majorVersion"); myMajorVersion = majorVersion != null ? Integer.parseInt(majorVersion) : -1; + String evalDays = node.getAttributeValue("evalDays"); + myEvalDays = evalDays != null ? Integer.parseInt(evalDays) : 30; + myHomePageUrl = node.getAttributeValue("url"); myFeedbackUrl = node.getAttributeValue("feedback"); @@ -96,4 +100,8 @@ public class UpdateChannel { public String getLicensing() { return myLicensing; } + + public int getEvalDays() { + return myEvalDays; + } } diff --git a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateChecker.java b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateChecker.java index d7e63580b51b..322b1a11602b 100644 --- a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateChecker.java +++ b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateChecker.java @@ -314,10 +314,14 @@ public final class UpdateChecker { final boolean alwaysShowResults) { UpdateChannel channelToPropose = checkForUpdateResult.getChannelToPropose(); if (channelToPropose != null && channelToPropose.getLatestBuild() != null) { - new NewChannelDialog(channelToPropose).show(); + NewChannelDialog dialog = new NewChannelDialog(channelToPropose); + dialog.setModal(alwaysShowResults); + dialog.show(); } else if (checkForUpdateResult.hasNewBuildInSelectedChannel()) { - new UpdateInfoDialog(true, checkForUpdateResult.getUpdatedChannel(), updatedPlugins, enableLink).show(); + UpdateInfoDialog dialog = new UpdateInfoDialog(true, checkForUpdateResult.getUpdatedChannel(), updatedPlugins, enableLink); + dialog.setModal(alwaysShowResults); + dialog.show(); } else if (updatedPlugins != null || alwaysShowResults) { NoUpdatesDialog dialog = new NoUpdatesDialog(true, updatedPlugins, enableLink);