diff --git a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/AbstractUpdateDialog.java b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/AbstractUpdateDialog.java
index ac3573da4eb6..acc92b987656 100644
--- a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/AbstractUpdateDialog.java
+++ b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/AbstractUpdateDialog.java
@@ -33,8 +33,6 @@ import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;
import java.awt.*;
import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
public abstract class AbstractUpdateDialog extends DialogWrapper {
private final boolean myEnableLink;
@@ -130,15 +128,4 @@ public abstract class AbstractUpdateDialog extends DialogWrapper {
public boolean isShowConfirmation() {
return myShowConfirmation;
}
-
- public static String formatLinks(String message) {
- Pattern linkPattern = Pattern.compile("http://[a-zA-Z0-9\\./]+");
- StringBuffer result = new StringBuffer();
- Matcher m = linkPattern.matcher(message);
- while (m.find()) {
- m.appendReplacement(result, "" + m.group() + "");
- }
- m.appendTail(result);
- return result.toString();
- }
}
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 7409e9e2c0b2..e00c7240bb69 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,6 +18,7 @@ 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.openapi.util.text.StringUtil;
import com.intellij.ui.BrowserHyperlinkListener;
import com.intellij.ui.LicensingFacade;
import com.intellij.ui.components.JBScrollPane;
@@ -84,7 +85,7 @@ public class NewChannelDialog extends DialogWrapper {
StringBuilder builder = new StringBuilder().append("");
builder.append("
").append(UIUtil.getCssFontDeclaration(UIUtil.getLabelFont())).append("");
builder.append("").append(myChannel.getName()).append("
");
- builder.append(AbstractUpdateDialog.formatLinks(myChannel.getLatestBuild().getMessage())).append("
");
+ builder.append(StringUtil.formatLinks(myChannel.getLatestBuild().getMessage())).append("
");
LicensingFacade facade = LicensingFacade.getInstance();
if (facade != null) {
if (!myChannel.getLicensing().equals(UpdateChannel.LICENSING_EAP)) {
diff --git a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateInfoDialog.java b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateInfoDialog.java
index b7aa7416e65f..af11cfe29660 100644
--- a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateInfoDialog.java
+++ b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateInfoDialog.java
@@ -21,6 +21,7 @@ import com.intellij.openapi.application.ApplicationInfo;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.ApplicationNamesInfo;
import com.intellij.openapi.util.SystemInfo;
+import com.intellij.openapi.util.text.StringUtil;
import com.intellij.ui.BrowserHyperlinkListener;
import com.intellij.ui.components.JBScrollPane;
import com.intellij.util.ui.UIUtil;
@@ -204,7 +205,7 @@ class UpdateInfoDialog extends AbstractUpdateDialog {
if (myLatestBuild.getMessage() != null) {
StringBuilder builder = new StringBuilder();
builder.append("").append(UIUtil.getCssFontDeclaration(UIUtil.getLabelFont())).append("")
- .append(AbstractUpdateDialog.formatLinks(myLatestBuild.getMessage()))
+ .append(StringUtil.formatLinks(myLatestBuild.getMessage()))
.append("");
myUpdateMessageLabel.setText(builder.toString());
myUpdateMessageLabel.addHyperlinkListener(new BrowserHyperlinkListener());
diff --git a/platform/util/src/com/intellij/openapi/util/text/StringUtil.java b/platform/util/src/com/intellij/openapi/util/text/StringUtil.java
index 06a6e6e61461..f2ef785176c3 100644
--- a/platform/util/src/com/intellij/openapi/util/text/StringUtil.java
+++ b/platform/util/src/com/intellij/openapi/util/text/StringUtil.java
@@ -2127,4 +2127,15 @@ public class StringUtil {
}
return false;
}
+
+ public static String formatLinks(String message) {
+ Pattern linkPattern = Pattern.compile("http://[a-zA-Z0-9\\./\\-\\+]+");
+ StringBuffer result = new StringBuffer();
+ Matcher m = linkPattern.matcher(message);
+ while (m.find()) {
+ m.appendReplacement(result, "" + m.group() + "");
+ }
+ m.appendTail(result);
+ return result.toString();
+ }
}
diff --git a/platform/util/testSrc/com/intellij/util/text/StringUtilTest.java b/platform/util/testSrc/com/intellij/util/text/StringUtilTest.java
index fef119fc77fb..9204fd0a2931 100644
--- a/platform/util/testSrc/com/intellij/util/text/StringUtilTest.java
+++ b/platform/util/testSrc/com/intellij/util/text/StringUtilTest.java
@@ -89,4 +89,8 @@ public class StringUtilTest extends TestCase {
assertEquals(1 ,StringUtil.naturalCompare("7403515080361171695", "07403515080361171694"));
assertEquals(-14, StringUtil.naturalCompare("_firstField", "myField1"));
}
+
+ public void testFormatLinks() {
+ assertEquals("http://a-b+c", StringUtil.formatLinks("http://a-b+c"));
+ }
}