2323package com .microsoft .azuretools .container ;
2424
2525import org .eclipse .swt .graphics .Color ;
26+ import org .eclipse .swt .program .Program ;
2627import org .eclipse .ui .IWorkbenchPage ;
2728import org .eclipse .ui .IWorkbenchWindow ;
2829import org .eclipse .ui .PartInitException ;
3233import org .eclipse .ui .console .IConsoleConstants ;
3334import org .eclipse .ui .console .IConsoleManager ;
3435import org .eclipse .ui .console .IConsoleView ;
36+ import org .eclipse .ui .console .IHyperlink ;
37+ import org .eclipse .ui .console .IPatternMatchListener ;
3538import org .eclipse .ui .console .MessageConsole ;
3639import org .eclipse .ui .console .MessageConsoleStream ;
40+ import org .eclipse .ui .console .PatternMatchEvent ;
41+ import org .eclipse .ui .console .TextConsole ;
3742
3843import 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