Skip to content

Commit 0c2786e

Browse files
committed
implement the design of the errors table
1 parent ae32dde commit 0c2786e

File tree

3 files changed

+104
-8
lines changed

3 files changed

+104
-8
lines changed

build/shared/lib/theme.txt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,3 +141,12 @@ editor.column.warning.color = #ffc30e
141141
# not in use?
142142
#breakpoint.bgcolor = #f0f0f0
143143
#currentline.bgcolor = #ffff96
144+
145+
errors.header.font = processing.sans,plain,12
146+
errors.header.bgcolor = #EBEBEB
147+
errors.header.fgcolor = #484848
148+
errors.row.font = processing.sans,plain,12
149+
errors.row.fgcolor = #484848
150+
errors.row.bgcolor = #FFFFFF
151+
errors.selection.fgcolor = #242424
152+
errors.selection.bgcolor = #E5E5E5

java/src/processing/mode/java/pdex/XQErrorTable.java

Lines changed: 86 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
package processing.mode.java.pdex;
2222

2323
import java.awt.Color;
24+
import java.awt.Component;
25+
import java.awt.Dimension;
2426
import java.awt.Font;
2527
import java.awt.FontMetrics;
2628
import java.awt.event.*;
@@ -30,14 +32,15 @@
3032
import javax.swing.event.ListSelectionEvent;
3133
import javax.swing.event.ListSelectionListener;
3234
import javax.swing.table.JTableHeader;
35+
import javax.swing.table.TableCellRenderer;
3336
import javax.swing.table.TableColumnModel;
3437
import javax.swing.table.TableModel;
3538
import javax.swing.text.BadLocationException;
3639

3740
import processing.app.Language;
3841
import processing.app.Messages;
42+
import processing.app.Mode;
3943
import processing.app.ui.Editor;
40-
import processing.app.ui.Toolkit;
4144
import processing.mode.java.JavaEditor;
4245

4346

@@ -55,21 +58,33 @@ public class XQErrorTable extends JTable {
5558
/** Is the column being resized? */
5659
private boolean columnResizing = false;
5760

61+
Font headerFont;
62+
Color headerColor;
63+
Color headerBgColor;
64+
65+
Font rowFont;
66+
Color rowColor;
67+
Color rowBgColor;
68+
5869

5970
public XQErrorTable(final JavaEditor editor) {
6071
this.editor = editor;
6172
JTableHeader header = getTableHeader();
6273

63-
// Try to make things a little less awful until I find time to finish it
64-
Font font = Toolkit.getSansFont(12, Font.PLAIN);
65-
setFont(font);
66-
header.setFont(font);
67-
//setBorder(new EmptyBorder(0, Editor.LEFT_GUTTER, 0, 0)); // no effect
74+
Mode mode = editor.getMode();
75+
header.setDefaultRenderer(new GradyHeaderRenderer(mode));
76+
setDefaultRenderer(Object.class, new GradyRowRenderer(mode));
77+
//setShowGrid(false);
78+
setIntercellSpacing(new Dimension(0, 0));
6879

80+
// this did nothing, no columns existed yet
81+
/*
6982
TableColumnModel columnModel = getColumnModel();
7083
for (int i = 0; i < columnModel.getColumnCount(); i++) {
7184
columnModel.getColumn(i).setPreferredWidth(columnWidths[i]);
85+
//System.out.println("class is " + columnModel.getColumn(i).getClass());
7286
}
87+
*/
7388

7489
addMouseListener(new MouseAdapter() {
7590
@Override
@@ -118,7 +133,7 @@ public void mouseMoved(MouseEvent evt) {
118133

119134
// Handles the resizing of columns. When mouse press is detected on
120135
// table header, Stop updating the table, store new values of column
121-
// widths,and resume updating. Updating is disabled as long as
136+
// widths, and resume updating. Updating is disabled as long as
122137
// columnResizing is true
123138
header.addMouseListener(new MouseAdapter() {
124139

@@ -150,7 +165,6 @@ public boolean isCellEditable(int rowIndex, int colIndex) {
150165

151166
/**
152167
* Updates table contents with new data
153-
* @param tableModel - TableModel
154168
* @return boolean - If table data was updated
155169
*/
156170
synchronized public boolean updateTable(final TableModel tableModel) {
@@ -264,4 +278,68 @@ public void windowGainedFocus(WindowEvent e) {
264278
frmImportSuggest.pack();
265279
frmImportSuggest.setVisible(true);
266280
}
281+
282+
283+
// . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
284+
285+
286+
static class GradyHeaderRenderer extends JLabel implements TableCellRenderer {
287+
288+
public GradyHeaderRenderer(Mode mode) {
289+
setFont(mode.getFont("errors.header.font"));
290+
setAlignmentX(LEFT_ALIGNMENT);
291+
292+
setForeground(mode.getColor("errors.header.fgcolor"));
293+
setBackground(mode.getColor("errors.header.bgcolor"));
294+
setOpaque(true);
295+
}
296+
297+
@Override
298+
public Component getTableCellRendererComponent(JTable table, Object value,
299+
boolean selected,
300+
boolean focused,
301+
int row, int column) {
302+
setText(value == null ? "" : value.toString());
303+
return this;
304+
}
305+
}
306+
307+
308+
// . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
309+
310+
311+
static class GradyRowRenderer extends JLabel implements TableCellRenderer {
312+
Color textColor;
313+
Color bgColor;
314+
Color textColorSelected;
315+
Color bgColorSelected;
316+
317+
public GradyRowRenderer(Mode mode) {
318+
setFont(mode.getFont("errors.row.font"));
319+
setAlignmentX(LEFT_ALIGNMENT);
320+
321+
textColor = mode.getColor("errors.row.fgcolor");
322+
bgColor = mode.getColor("errors.row.bgcolor");
323+
textColorSelected = mode.getColor("errors.selection.fgcolor");
324+
bgColorSelected = mode.getColor("errors.selection.bgcolor");
325+
setOpaque(true);
326+
}
327+
328+
@Override
329+
public Component getTableCellRendererComponent(JTable table, Object value,
330+
boolean selected,
331+
boolean focused,
332+
int row, int column) {
333+
setBackground(Color.RED);
334+
if (selected) {
335+
setForeground(textColorSelected);
336+
setBackground(bgColorSelected);
337+
} else {
338+
setForeground(textColor);
339+
setBackground(bgColor);
340+
}
341+
setText(value == null ? "" : value.toString());
342+
return this;
343+
}
344+
}
267345
}

todo.txt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,15 @@ X Right-clicking popup menu closes instead of shifting its location
4343
X https://github.com/processing/processing/issues/3649
4444
X Use 1x or 2x icons in the CM
4545
X https://github.com/processing/processing/pull/3681
46+
X Shifted the text right a little bit
47+
X https://github.com/processing/processing/pull/3696
48+
X No underline and no blue color
49+
X https://github.com/processing/processing/pull/3695
50+
X Update buttom enabled when updates are present and background is set
51+
_ https://github.com/processing/processing/issues/3614
52+
X https://github.com/processing/processing/pull/3694
53+
X Make auto-format into a compund edit
54+
X https://github.com/processing/processing/pull/3693
4655

4756
earlier/cleaning
4857
X modify build to insert these after antlr run:

0 commit comments

Comments
 (0)