Skip to content

Commit a2111fd

Browse files
author
Cayci
committed
add preference to enable/disable line numbers
add preference to enable/disable line numbers and make font change work
1 parent 787f73d commit a2111fd

File tree

5 files changed

+59
-13
lines changed

5 files changed

+59
-13
lines changed

app/src/processing/app/Editor.java

+3
Original file line numberDiff line numberDiff line change
@@ -430,6 +430,8 @@ protected void applyPreferences() {
430430
textarea.setEditable(!external);
431431
saveMenuItem.setEnabled(!external);
432432
saveAsMenuItem.setEnabled(!external);
433+
434+
textarea.setDisplayLineNumbers(Preferences.getBoolean("editor.linenumbers"));
433435

434436
TextAreaPainter painter = textarea.getPainter();
435437
if (external) {
@@ -450,6 +452,7 @@ protected void applyPreferences() {
450452
// apply changes to the font size for the editor
451453
//TextAreaPainter painter = textarea.getPainter();
452454
painter.setFont(Preferences.getFont("editor.font"));
455+
textarea.setLineNumbersFont(Preferences.getFont("editor.font"));
453456
//Font font = painter.getFont();
454457
//textarea.getPainter().setFont(new Font("Courier", Font.PLAIN, 36));
455458

app/src/processing/app/Preferences.java

+12
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,7 @@ public class Preferences {
177177
JCheckBox exportSeparateBox;
178178
JCheckBox verboseCompilationBox;
179179
JCheckBox verboseUploadBox;
180+
JCheckBox displayLineNumbersBox;
180181
JCheckBox verifyUploadBox;
181182
JCheckBox externalEditorBox;
182183
JCheckBox memoryOverrideBox;
@@ -382,6 +383,15 @@ public void actionPerformed(ActionEvent e) {
382383
box.setBounds(left, top, d.width, d.height);
383384
top += d.height + GUI_BETWEEN;
384385

386+
// [ ] Display line numbers
387+
388+
displayLineNumbersBox = new JCheckBox(_("Display line numbers"));
389+
pain.add(displayLineNumbersBox);
390+
d = displayLineNumbersBox.getPreferredSize();
391+
displayLineNumbersBox.setBounds(left, top, d.width + 10, d.height);
392+
right = Math.max(right, left + d.width);
393+
top += d.height + GUI_BETWEEN;
394+
385395
// [ ] Verify code after upload
386396

387397
verifyUploadBox = new JCheckBox(_("Verify code after upload"));
@@ -571,6 +581,7 @@ protected void applyFrame() {
571581
// put each of the settings into the table
572582
setBoolean("build.verbose", verboseCompilationBox.isSelected());
573583
setBoolean("upload.verbose", verboseUploadBox.isSelected());
584+
setBoolean("editor.linenumbers", displayLineNumbersBox.isSelected());
574585
setBoolean("upload.verify", verifyUploadBox.isSelected());
575586

576587
// setBoolean("sketchbook.closing_last_window_quits",
@@ -634,6 +645,7 @@ protected void showFrame(Editor editor) {
634645
// set all settings entry boxes to their actual status
635646
verboseCompilationBox.setSelected(getBoolean("build.verbose"));
636647
verboseUploadBox.setSelected(getBoolean("upload.verbose"));
648+
displayLineNumbersBox.setSelected(getBoolean("editor.linenumbers"));
637649
verifyUploadBox.setSelected(getBoolean("upload.verify"));
638650

639651
//closingLastQuitsBox.

app/src/processing/app/syntax/JEditTextArea.java

+9-1
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ public JEditTextArea(TextAreaDefaults defaults)
8787

8888
// Initialize some misc. stuff
8989
painter = new TextAreaPainter(this,defaults);
90-
editorLineNumbers = new TextAreaLineNumbers(defaults.font, defaults.bgcolor, defaults.fgcolor, (int) painter.getPreferredSize().getHeight());
90+
editorLineNumbers = new TextAreaLineNumbers(defaults, (int) painter.getPreferredSize().getHeight());
9191
documentHandler = new DocumentHandler();
9292
eventListenerList = new EventListenerList();
9393
caretEvent = new MutableCaretEvent();
@@ -2427,4 +2427,12 @@ public boolean addEdit(UndoableEdit edit)
24272427
caretTimer.setInitialDelay(500);
24282428
caretTimer.start();
24292429
}
2430+
2431+
public void setDisplayLineNumbers(boolean displayLineNumbers) {
2432+
editorLineNumbers.setDisplayLineNumbers(displayLineNumbers);
2433+
}
2434+
2435+
public void setLineNumbersFont(Font font) {
2436+
editorLineNumbers.setTextFont(font);
2437+
}
24302438
}

app/src/processing/app/syntax/TextAreaLineNumbers.java

+32-12
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,12 @@
1616

1717
import javax.swing.JTextPane;
1818
import javax.swing.border.MatteBorder;
19+
import javax.swing.text.AttributeSet;
1920
import javax.swing.text.SimpleAttributeSet;
2021
import javax.swing.text.StyleConstants;
2122

23+
import processing.app.Preferences;
24+
2225
public class TextAreaLineNumbers extends JTextPane {
2326

2427
private final int LEFT_INDENT = 6;
@@ -34,26 +37,30 @@ public class TextAreaLineNumbers extends JTextPane {
3437
private int currEndNum = 0;
3538
private int currNumDigits = MIN_NUM_DIGITS;
3639

37-
public TextAreaLineNumbers(Font font, Color bgcolor, Color fgcolor, int preferredHeight) {
38-
setFont(font);
39-
setBackground(bgcolor);
40-
setForeground(fgcolor);
40+
public TextAreaLineNumbers(TextAreaDefaults defaults, int preferredHeight) {
41+
setBackground(defaults.bgcolor);
42+
setForeground(defaults.fgcolor);
4143
setOpaque(true);
4244
setEditable(false);
4345
setEnabled(false);
4446
setBorder(new MatteBorder(0, 0, 0, 1, new Color(240, 240, 240)));
45-
46-
SimpleAttributeSet attribs = new SimpleAttributeSet();
47-
StyleConstants.setAlignment(attribs , StyleConstants.ALIGN_RIGHT);
48-
StyleConstants.setLeftIndent(attribs , 6);
49-
StyleConstants.setRightIndent(attribs , 6);
50-
setParagraphAttributes(attribs,true);
47+
setTextFont(Preferences.getFont("editor.font"));
5148

5249
DIGIT_WIDTH = getFontMetrics(getFont()).stringWidth("0");
5350
MIN_WIDTH = DIGIT_WIDTH * MIN_NUM_DIGITS + PADDING_WIDTH;
5451

5552
setPreferredSize(new Dimension(MIN_WIDTH, preferredHeight));
5653
}
54+
55+
public void setTextFont(Font font) {
56+
setFont(font);
57+
SimpleAttributeSet attribs = new SimpleAttributeSet();
58+
StyleConstants.setAlignment(attribs , StyleConstants.ALIGN_RIGHT);
59+
StyleConstants.setLeftIndent(attribs , 6);
60+
StyleConstants.setRightIndent(attribs , 6);
61+
StyleConstants.setFontSize(attribs, getFont().getSize());
62+
setParagraphAttributes(attribs,true);
63+
}
5764

5865
public void updateLineNumbers(int startNum, int endNum) {
5966
if (currStartNum == startNum && currEndNum == endNum) {
@@ -68,7 +75,7 @@ public void updateLineNumbers(int startNum, int endNum) {
6875
}
6976
sb.append(endNum);
7077
setText(sb.toString());
71-
78+
7279
invalidate();
7380
}
7481

@@ -78,8 +85,21 @@ public void updateWidthForNumDigits(int numDigits) {
7885
}
7986
currNumDigits = numDigits;
8087

81-
setBounds(new Rectangle(Math.max(MIN_WIDTH, DIGIT_WIDTH * numDigits + PADDING_WIDTH), getHeight()));
88+
updateBounds();
89+
invalidate();
90+
}
91+
92+
public void setDisplayLineNumbers(boolean displayLineNumbers) {
93+
setVisible(displayLineNumbers);
94+
if (displayLineNumbers) {
95+
updateBounds();
96+
} else {
97+
setBounds(new Rectangle(0, getHeight()));
98+
}
8299
invalidate();
83100
}
84101

102+
private void updateBounds() {
103+
setBounds(new Rectangle(Math.max(MIN_WIDTH, DIGIT_WIDTH * currNumDigits + PADDING_WIDTH), getHeight()));
104+
}
85105
}

build/shared/lib/preferences.txt

+3
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,9 @@ editor.caret.blink=true
104104
# area that's not in use by the text (replaced with tildes)
105105
editor.invalid=false
106106

107+
# show line numbers in editor
108+
editor.linenumbers = false
109+
107110
# enable ctrl-ins, shift-ins, shift-delete for cut/copy/paste
108111
# on windows and linux, but disable on the mac
109112
editor.keys.alternative_cut_copy_paste = true

0 commit comments

Comments
 (0)