Double-click now opens URL (right-click still shows "Open URL" in popup

menù).
This commit is contained in:
Cristian Maglie 2011-08-24 10:42:58 +02:00
parent 303b2e5103
commit 88794ec1d6
2 changed files with 23 additions and 14 deletions

View File

@ -2739,22 +2739,13 @@ public class Editor extends JFrame implements RunnerListener {
add(referenceItem); add(referenceItem);
} }
private boolean clickedURL(String line, int offset) {
String[] parse = SyntaxUtilities.parseCommentUrls(line);
if (parse==null)
return false;
int start = parse[0].length();
int stop = start + parse[1].length();
if (offset<start|| offset>stop+2)
return false;
clickedURL = parse[1];
return true;
}
// if no text is selected, disable copy and cut menu items // if no text is selected, disable copy and cut menu items
public void show(Component component, int x, int y) { public void show(Component component, int x, int y) {
int line = textarea.getLineOfOffset(textarea.xyToOffset(x, y)); int lineNo = textarea.getLineOfOffset(textarea.xyToOffset(x, y));
if (clickedURL(textarea.getLineText(line), textarea.xToOffset(line, x))) { int offset = textarea.xToOffset(lineNo, x);
String line = textarea.getLineText(lineNo);
clickedURL = textarea.checkClickedURL(line, offset);
if (clickedURL != null) {
openURLItem.setVisible(true); openURLItem.setVisible(true);
openURLItemSeparator.setVisible(true); openURLItemSeparator.setVisible(true);
} else { } else {

View File

@ -2045,6 +2045,17 @@ public class JEditTextArea extends JComponent
} }
} }
public String checkClickedURL(String line, int offset) {
String[] parse = SyntaxUtilities.parseCommentUrls(line);
if (parse==null)
return null;
int start = parse[0].length();
int stop = start + parse[1].length();
if (offset<start|| offset>stop)
return null;
return parse[1];
}
class MouseHandler extends MouseAdapter class MouseHandler extends MouseAdapter
{ {
public void mousePressed(MouseEvent evt) public void mousePressed(MouseEvent evt)
@ -2111,6 +2122,13 @@ public class JEditTextArea extends JComponent
if (getLineLength(line) == 0) if (getLineLength(line) == 0)
return; return;
// Check for click on urls
String clickedURL = checkClickedURL(getLineText(line), offset);
if (clickedURL != null) {
Base.openURL(clickedURL);
return;
}
try { try {
int bracket = TextUtilities.findMatchingBracket(document, int bracket = TextUtilities.findMatchingBracket(document,
Math.max(0,dot - 1)); Math.max(0,dot - 1));