limit rollovers on EditorStatus to the text portion

This commit is contained in:
Ben Fry
2016-09-10 22:22:57 -04:00
parent d78e828ef9
commit 62db91c60d
4 changed files with 48 additions and 8 deletions
+1 -1
View File
@@ -150,7 +150,7 @@ public class Platform {
} catch (Exception e) {
Messages.showWarning("Problem Opening URL",
"Could not open the URL\n" + url, e);
"Could not open the URL\n" + url, e);
}
}
+45 -7
View File
@@ -33,6 +33,7 @@ import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import javax.swing.plaf.basic.BasicSplitPaneDivider;
import javax.swing.plaf.basic.BasicSplitPaneUI;
@@ -50,6 +51,7 @@ public class EditorStatus extends BasicSplitPaneDivider { //JPanel {
static final int LEFT_MARGIN = Editor.LEFT_GUTTER;
static final int RIGHT_MARGIN = 20;
Color urlColor;
Color[] fgColor;
Color[] bgColor;
Image[] bgImage;
@@ -72,7 +74,11 @@ public class EditorStatus extends BasicSplitPaneDivider { //JPanel {
int mode;
String message;
String url;
int rightEdge;
int mouseX;
boolean inside;
Font font;
FontMetrics metrics;
@@ -98,18 +104,45 @@ public class EditorStatus extends BasicSplitPaneDivider { //JPanel {
updateMode();
addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent e) {
if (url != null) {
setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
}
updateMouse();
}
@Override
public void mousePressed(MouseEvent e) {
if (url != null) {
//if (url != null) {
if (inside) {
Platform.openURL(url);
}
}
@Override
public void mouseExited(MouseEvent e) {
updateMouse();
}
});
addMouseMotionListener(new MouseMotionAdapter() {
@Override
public void mouseMoved(MouseEvent e) {
mouseX = e.getX();
updateMouse();
}
});
}
void updateMouse() {
if (inside) {
setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
} else {
setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR));
}
repaint();
}
@@ -125,6 +158,8 @@ public class EditorStatus extends BasicSplitPaneDivider { //JPanel {
public void updateMode() {
Mode mode = editor.getMode();
urlColor = mode.getColor("status.url.fgcolor");
fgColor = new Color[] {
mode.getColor("status.notice.fgcolor"),
mode.getColor("status.error.fgcolor"),
@@ -240,7 +275,7 @@ public class EditorStatus extends BasicSplitPaneDivider { //JPanel {
if (offscreen == null) {
sizeW = size.width;
sizeH = size.height;
// setButtonBounds();
if (Toolkit.highResDisplay()) {
offscreen = createImage(sizeW*2, sizeH*2);
} else {
@@ -257,15 +292,18 @@ public class EditorStatus extends BasicSplitPaneDivider { //JPanel {
ascent = metrics.getAscent();
}
//g.setColor(bgColor[mode]);
//g.fillRect(0, 0, sizeW, sizeH);
g.drawImage(bgImage[mode], 0, 0, sizeW, sizeH, this);
g.setColor(fgColor[mode]);
// https://github.com/processing/processing/issues/3265
if (message != null) {
g.setFont(font); // needs to be set each time on osx
inside = (mouseX > LEFT_MARGIN && mouseX < rightEdge);
if (inside) {
g.setColor(urlColor);
}
g.drawString(message, LEFT_MARGIN, (sizeH + ascent) / 2);
rightEdge = LEFT_MARGIN + g.getFontMetrics().stringWidth(message);
}
if (indeterminate) {
+1
View File
@@ -6,6 +6,7 @@ status.error.fgcolor = #ffffff
status.error.bgcolor = #9E0A0A
status.warning.bgcolor = #EF8115
status.warning.fgcolor = #FFFFFF
status.url.fgcolor = #cccccc
status.font = processing.sans,plain,13
# HEADER TABS
+1
View File
@@ -3,6 +3,7 @@ X Find in reference for size() opens StringList.size()
X https://github.com/processing/processing/issues/4224
X though that's still imperfect:
X https://github.com/processing/processing/issues/4655
X limit rollovers on EditorStatus to the text portion
X more font tweaks to make mono fonts work properly after #4639
_ update the Linux notes based on where we land on this
_ https://github.com/processing/processing/wiki/Supported-Platforms#linux