Skip to content

Commit 5675622

Browse files
committed
make url clickable in eclipse console view
1 parent 2940525 commit 5675622

File tree

2 files changed

+56
-1
lines changed
  • PluginsAndFeatures/azure-toolkit-for-eclipse/com.microsoft.azuretools.container

2 files changed

+56
-1
lines changed

PluginsAndFeatures/azure-toolkit-for-eclipse/com.microsoft.azuretools.container/META-INF/MANIFEST.MF

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ Require-Bundle: org.eclipse.ui,
1818
org.eclipse.ui.views,
1919
org.eclipse.ui.workbench,
2020
org.eclipse.jdt.core,
21-
org.eclipse.ui.ide
21+
org.eclipse.ui.ide,
22+
org.eclipse.text
2223
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
2324
Bundle-ActivationPolicy: lazy
2425
Bundle-ClassPath: .,
@@ -28,6 +29,7 @@ Bundle-ClassPath: .,
2829
target/lib/docker-client-8.6.2-shaded.jar
2930
Import-Package: com.microsoft.azuretools.core.actions,
3031
org.eclipse.core.expressions,
32+
org.eclipse.jface.text.hyperlink,
3133
org.eclipse.jst.j2ee.datamodel.properties,
3234
org.eclipse.jst.j2ee.internal.web.archive.operations,
3335
org.eclipse.ui.console,

PluginsAndFeatures/azure-toolkit-for-eclipse/com.microsoft.azuretools.container/src/main/java/com/microsoft/azuretools/container/ConsoleLogger.java

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
package com.microsoft.azuretools.container;
2424

2525
import org.eclipse.swt.graphics.Color;
26+
import org.eclipse.swt.program.Program;
2627
import org.eclipse.ui.IWorkbenchPage;
2728
import org.eclipse.ui.IWorkbenchWindow;
2829
import org.eclipse.ui.PartInitException;
@@ -32,8 +33,12 @@
3233
import org.eclipse.ui.console.IConsoleConstants;
3334
import org.eclipse.ui.console.IConsoleManager;
3435
import org.eclipse.ui.console.IConsoleView;
36+
import org.eclipse.ui.console.IHyperlink;
37+
import org.eclipse.ui.console.IPatternMatchListener;
3538
import org.eclipse.ui.console.MessageConsole;
3639
import org.eclipse.ui.console.MessageConsoleStream;
40+
import org.eclipse.ui.console.PatternMatchEvent;
41+
import org.eclipse.ui.console.TextConsole;
3742

3843
import com.microsoft.tooling.msservices.components.DefaultLoader;
3944

@@ -48,6 +53,54 @@ private ConsoleLogger() {
4853
err = console.newMessageStream();
4954
out.setColor(new Color(null, 0, 0, 0));
5055
err.setColor(new Color(null, 255, 0, 0));
56+
console.addPatternMatchListener(new IPatternMatchListener() {
57+
@Override
58+
public void connect(TextConsole arg0) {
59+
}
60+
61+
@Override
62+
public void disconnect() {
63+
}
64+
65+
@Override
66+
public void matchFound(PatternMatchEvent event) {
67+
try {
68+
String urlText = console.getDocument().get(event.getOffset(), event.getLength());
69+
IHyperlink hyperlink = new IHyperlink() {
70+
@Override
71+
public void linkActivated() {
72+
Program.launch(urlText);
73+
}
74+
75+
@Override
76+
public void linkEntered() {
77+
}
78+
79+
@Override
80+
public void linkExited() {
81+
}
82+
};
83+
console.addHyperlink(hyperlink, event.getOffset(), event.getLength());
84+
} catch (Exception exception) {
85+
throw new RuntimeException(exception);
86+
}
87+
}
88+
89+
@Override
90+
public int getCompilerFlags() {
91+
return 0;
92+
}
93+
94+
@Override
95+
public String getLineQualifier() {
96+
return null;
97+
}
98+
99+
@Override
100+
public String getPattern() {
101+
return "https?://\\S+";
102+
}
103+
});
51104
}
52105

53106
private static class LazyHolder {

0 commit comments

Comments
 (0)