From f9c91d678cad87ba447633bde85dc6cac1c88d13 Mon Sep 17 00:00:00 2001 From: Ben Fry Date: Sat, 8 Aug 2015 13:19:19 -0400 Subject: [PATCH] make error status open browser when url is present (fixes #3471) --- app/src/processing/app/ui/EditorStatus.java | 31 +++++++++++++++++++++ todo.txt | 4 +++ 2 files changed, 35 insertions(+) diff --git a/app/src/processing/app/ui/EditorStatus.java b/app/src/processing/app/ui/EditorStatus.java index 7271320ec..010216b18 100644 --- a/app/src/processing/app/ui/EditorStatus.java +++ b/app/src/processing/app/ui/EditorStatus.java @@ -24,11 +24,15 @@ package processing.app.ui; import java.awt.*; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; import javax.swing.plaf.basic.BasicSplitPaneDivider; import javax.swing.plaf.basic.BasicSplitPaneUI; +import processing.app.Base; import processing.app.Mode; +import processing.core.PApplet; /** @@ -58,6 +62,7 @@ public class EditorStatus extends BasicSplitPaneDivider { //JPanel { int mode; String message; + String url; Font font; FontMetrics metrics; @@ -82,6 +87,29 @@ public class EditorStatus extends BasicSplitPaneDivider { //JPanel { this.editor = editor; empty(); updateMode(); + + addMouseListener(new MouseAdapter() { + public void mouseEntered(MouseEvent e) { + if (url != null) { + setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); + } + } + + public void mousePressed(MouseEvent e) { + if (url != null) { + Base.openURL(url); + } + } + }); + } + + + static String findURL(String message) { + String[] m = PApplet.match(message, "http\\S+"); + if (m != null) { + return m[0]; + } + return null; } @@ -107,6 +135,7 @@ public class EditorStatus extends BasicSplitPaneDivider { //JPanel { public void empty() { mode = NOTICE; message = NO_MESSAGE; + url = null; repaint(); } @@ -114,6 +143,7 @@ public class EditorStatus extends BasicSplitPaneDivider { //JPanel { public void notice(String message) { mode = NOTICE; this.message = message; + url = findURL(message); repaint(); } @@ -126,6 +156,7 @@ public class EditorStatus extends BasicSplitPaneDivider { //JPanel { public void error(String message) { mode = ERR; this.message = message; + url = findURL(message); repaint(); } diff --git a/todo.txt b/todo.txt index 8cf628fa5..4c41c5f5b 100644 --- a/todo.txt +++ b/todo.txt @@ -7,6 +7,10 @@ X Cannot find "processing.core" library. Line 12 in tab sketch_150704a X also happens with "import to com.jogamp.opengl.GL2" X https://github.com/processing/processing/issues/3547 X clean up the advanced opengl wiki page +X Initialize the Find dialog with the current selection +X https://github.com/processing/processing/issues/3457 +X Links in error bar are not selectable nor clickable +X https://github.com/processing/processing/issues/3471 export X save export settings to preferences