From a06fd7a644525a08e82eb02087c1149203e09efd Mon Sep 17 00:00:00 2001 From: Ben Fry Date: Sat, 22 Aug 2015 13:45:50 -0400 Subject: [PATCH] implement the design of the errors table --- build/shared/lib/theme.txt | 9 ++ .../mode/java/pdex/XQErrorTable.java | 94 +++++++++++++++++-- todo.txt | 9 ++ 3 files changed, 104 insertions(+), 8 deletions(-) diff --git a/build/shared/lib/theme.txt b/build/shared/lib/theme.txt index 5258df487..9a6637541 100644 --- a/build/shared/lib/theme.txt +++ b/build/shared/lib/theme.txt @@ -141,3 +141,12 @@ editor.column.warning.color = #ffc30e # not in use? #breakpoint.bgcolor = #f0f0f0 #currentline.bgcolor = #ffff96 + +errors.header.font = processing.sans,plain,12 +errors.header.bgcolor = #EBEBEB +errors.header.fgcolor = #484848 +errors.row.font = processing.sans,plain,12 +errors.row.fgcolor = #484848 +errors.row.bgcolor = #FFFFFF +errors.selection.fgcolor = #242424 +errors.selection.bgcolor = #E5E5E5 diff --git a/java/src/processing/mode/java/pdex/XQErrorTable.java b/java/src/processing/mode/java/pdex/XQErrorTable.java index 9b0e24871..196301e91 100644 --- a/java/src/processing/mode/java/pdex/XQErrorTable.java +++ b/java/src/processing/mode/java/pdex/XQErrorTable.java @@ -21,6 +21,8 @@ package processing.mode.java.pdex; import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; import java.awt.Font; import java.awt.FontMetrics; import java.awt.event.*; @@ -30,14 +32,15 @@ import javax.swing.*; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import javax.swing.table.JTableHeader; +import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumnModel; import javax.swing.table.TableModel; import javax.swing.text.BadLocationException; import processing.app.Language; import processing.app.Messages; +import processing.app.Mode; import processing.app.ui.Editor; -import processing.app.ui.Toolkit; import processing.mode.java.JavaEditor; @@ -55,21 +58,33 @@ public class XQErrorTable extends JTable { /** Is the column being resized? */ private boolean columnResizing = false; + Font headerFont; + Color headerColor; + Color headerBgColor; + + Font rowFont; + Color rowColor; + Color rowBgColor; + public XQErrorTable(final JavaEditor editor) { this.editor = editor; JTableHeader header = getTableHeader(); - // Try to make things a little less awful until I find time to finish it - Font font = Toolkit.getSansFont(12, Font.PLAIN); - setFont(font); - header.setFont(font); - //setBorder(new EmptyBorder(0, Editor.LEFT_GUTTER, 0, 0)); // no effect + Mode mode = editor.getMode(); + header.setDefaultRenderer(new GradyHeaderRenderer(mode)); + setDefaultRenderer(Object.class, new GradyRowRenderer(mode)); + //setShowGrid(false); + setIntercellSpacing(new Dimension(0, 0)); + // this did nothing, no columns existed yet + /* TableColumnModel columnModel = getColumnModel(); for (int i = 0; i < columnModel.getColumnCount(); i++) { columnModel.getColumn(i).setPreferredWidth(columnWidths[i]); + //System.out.println("class is " + columnModel.getColumn(i).getClass()); } + */ addMouseListener(new MouseAdapter() { @Override @@ -118,7 +133,7 @@ public class XQErrorTable extends JTable { // Handles the resizing of columns. When mouse press is detected on // table header, Stop updating the table, store new values of column - // widths,and resume updating. Updating is disabled as long as + // widths, and resume updating. Updating is disabled as long as // columnResizing is true header.addMouseListener(new MouseAdapter() { @@ -150,7 +165,6 @@ public class XQErrorTable extends JTable { /** * Updates table contents with new data - * @param tableModel - TableModel * @return boolean - If table data was updated */ synchronized public boolean updateTable(final TableModel tableModel) { @@ -264,4 +278,68 @@ public class XQErrorTable extends JTable { frmImportSuggest.pack(); frmImportSuggest.setVisible(true); } + + + // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + static class GradyHeaderRenderer extends JLabel implements TableCellRenderer { + + public GradyHeaderRenderer(Mode mode) { + setFont(mode.getFont("errors.header.font")); + setAlignmentX(LEFT_ALIGNMENT); + + setForeground(mode.getColor("errors.header.fgcolor")); + setBackground(mode.getColor("errors.header.bgcolor")); + setOpaque(true); + } + + @Override + public Component getTableCellRendererComponent(JTable table, Object value, + boolean selected, + boolean focused, + int row, int column) { + setText(value == null ? "" : value.toString()); + return this; + } + } + + + // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + static class GradyRowRenderer extends JLabel implements TableCellRenderer { + Color textColor; + Color bgColor; + Color textColorSelected; + Color bgColorSelected; + + public GradyRowRenderer(Mode mode) { + setFont(mode.getFont("errors.row.font")); + setAlignmentX(LEFT_ALIGNMENT); + + textColor = mode.getColor("errors.row.fgcolor"); + bgColor = mode.getColor("errors.row.bgcolor"); + textColorSelected = mode.getColor("errors.selection.fgcolor"); + bgColorSelected = mode.getColor("errors.selection.bgcolor"); + setOpaque(true); + } + + @Override + public Component getTableCellRendererComponent(JTable table, Object value, + boolean selected, + boolean focused, + int row, int column) { + setBackground(Color.RED); + if (selected) { + setForeground(textColorSelected); + setBackground(bgColorSelected); + } else { + setForeground(textColor); + setBackground(bgColor); + } + setText(value == null ? "" : value.toString()); + return this; + } + } } diff --git a/todo.txt b/todo.txt index e82d6a9b1..04356f6ab 100644 --- a/todo.txt +++ b/todo.txt @@ -43,6 +43,15 @@ X Right-clicking popup menu closes instead of shifting its location X https://github.com/processing/processing/issues/3649 X Use 1x or 2x icons in the CM X https://github.com/processing/processing/pull/3681 +X Shifted the text right a little bit +X https://github.com/processing/processing/pull/3696 +X No underline and no blue color +X https://github.com/processing/processing/pull/3695 +X Update buttom enabled when updates are present and background is set +_ https://github.com/processing/processing/issues/3614 +X https://github.com/processing/processing/pull/3694 +X Make auto-format into a compund edit +X https://github.com/processing/processing/pull/3693 earlier/cleaning X modify build to insert these after antlr run: