From 0419b1ffb2bf932fb128cbc87db5cb06b23d41e3 Mon Sep 17 00:00:00 2001 From: Ben Fry Date: Tue, 3 Aug 2021 20:44:03 -0400 Subject: [PATCH] change Messages.loge() to Messages.err(), additional cleanup --- app/src/processing/app/Base.java | 12 ++--- app/src/processing/app/Messages.java | 44 +++++++------------ app/src/processing/app/Mode.java | 2 +- app/src/processing/app/Settings.java | 2 +- app/src/processing/app/SingleInstance.java | 7 ++- app/src/processing/app/Util.java | 2 +- .../app/contrib/ModeContribution.java | 2 +- .../processing/app/syntax/JEditTextArea.java | 2 +- app/src/processing/app/ui/Editor.java | 2 +- .../processing/app/ui/PreferencesFrame.java | 27 ++++++------ app/src/processing/app/ui/Toolkit.java | 6 +-- java/src/processing/mode/java/ASTViewer.java | 2 +- .../mode/java/CompletionGenerator.java | 8 ++-- .../processing/mode/java/CompletionPanel.java | 3 +- java/src/processing/mode/java/JavaEditor.java | 5 +-- .../processing/mode/java/JavaTextArea.java | 2 +- .../processing/mode/java/PreprocService.java | 10 ++--- .../mode/java/RuntimePathBuilder.java | 16 +++---- .../mode/java/debug/ArrayFieldNode.java | 2 +- .../processing/mode/java/debug/Debugger.java | 8 ++-- .../processing/mode/java/debug/FieldNode.java | 4 +- .../mode/java/debug/LineBreakpoint.java | 6 +-- .../processing/mode/java/debug/LineID.java | 6 +-- .../mode/java/debug/LocalVariableNode.java | 2 +- .../processing/mode/java/runner/Runner.java | 4 +- todo.txt | 22 +++++++--- 26 files changed, 97 insertions(+), 111 deletions(-) diff --git a/app/src/processing/app/Base.java b/app/src/processing/app/Base.java index 651c30135..3938fbb2f 100644 --- a/app/src/processing/app/Base.java +++ b/app/src/processing/app/Base.java @@ -191,7 +191,7 @@ public class Base { Platform.setLookAndFeel(); Platform.setInterfaceZoom(); } catch (Exception e) { - Messages.loge("Error while setting up the interface", e); //$NON-NLS-1$ + Messages.err("Error while setting up the interface", e); //$NON-NLS-1$ } // long t3 = System.currentTimeMillis(); @@ -315,7 +315,7 @@ public class Base { } } } catch (Exception e) { - Messages.loge("Problem checking NVIDIA driver", e); + Messages.err("Problem checking NVIDIA driver", e); } }).start(); } @@ -748,19 +748,19 @@ public class Base { } catch (VerifyError | AbstractMethodError ve) { System.err.println("\"" + tool.getMenuTitle() + "\" is not " + "compatible with this version of Processing"); - Messages.loge("Incompatible Tool found during tool.init()", ve); + Messages.err("Incompatible Tool found during tool.init()", ve); } catch (NoSuchMethodError nsme) { System.err.println("\"" + tool.getMenuTitle() + "\" is not " + "compatible with this version of Processing"); System.err.println("The " + nsme.getMessage() + " method no longer exists."); - Messages.loge("Incompatible Tool found during tool.init()", nsme); + Messages.err("Incompatible Tool found during tool.init()", nsme); } catch (NoClassDefFoundError ncdfe) { System.err.println("\"" + tool.getMenuTitle() + "\" is not " + "compatible with this version of Processing"); System.err.println("The " + ncdfe.getMessage() + " class is no longer available."); - Messages.loge("Incompatible Tool found during tool.init()", ncdfe); + Messages.err("Incompatible Tool found during tool.init()", ncdfe); } catch (Error | Exception e) { System.err.println("An error occurred inside \"" + tool.getMenuTitle() + "\""); @@ -858,7 +858,7 @@ public class Base { Messages.showWarning("Tool out of date", tool.getMenuTitle() + " is not compatible with this version of Processing.\n" + "Try updating the Mode or contact its author for a new version.", ne); - Messages.loge("Incompatible tool found during tool.run()", ne); + Messages.err("Incompatible tool found during tool.run()", ne); item.setEnabled(false); } catch (Exception ex) { diff --git a/app/src/processing/app/Messages.java b/app/src/processing/app/Messages.java index d8c78d43f..54028a2e5 100644 --- a/app/src/processing/app/Messages.java +++ b/app/src/processing/app/Messages.java @@ -29,8 +29,6 @@ import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JOptionPane; -import processing.app.ui.Editor; - public class Messages { /** * "No cookie for you" type messages. Nothing fatal or all that @@ -190,26 +188,14 @@ public class Messages { + /* // incomplete static public int showYesNoCancelQuestion(Editor editor, String title, String primary, String secondary) { if (!Platform.isMacOS()) { - int result = - JOptionPane.showConfirmDialog(null, primary + "\n" + secondary, title, - JOptionPane.YES_NO_CANCEL_OPTION, - JOptionPane.QUESTION_MESSAGE); - return result; -// if (result == JOptionPane.YES_OPTION) { -// -// } else if (result == JOptionPane.NO_OPTION) { -// return true; // ok to continue -// -// } else if (result == JOptionPane.CANCEL_OPTION) { -// return false; -// -// } else { -// throw new IllegalStateException(); -// } + return JOptionPane.showConfirmDialog(null, primary + "\n" + secondary, title, + JOptionPane.YES_NO_CANCEL_OPTION, + JOptionPane.QUESTION_MESSAGE); } else { // Pane formatting adapted from the Quaqua guide @@ -236,8 +222,7 @@ public class Messages { // on macosx, setting the destructive property places this option // away from the others at the lefthand side - pane.putClientProperty("Quaqua.OptionPane.destructiveOption", - Integer.valueOf(2)); + pane.putClientProperty("Quaqua.OptionPane.destructiveOption", 2); JDialog dialog = pane.createDialog(editor, null); dialog.setVisible(true); @@ -254,6 +239,7 @@ public class Messages { } } } + */ static public int showYesNoQuestion(Frame editor, String title, @@ -347,19 +333,19 @@ public class Messages { } - static public void loge(String message, Throwable e) { + static public void err(String message) { + err(message, null); + } + + + static public void err(String message, Throwable e) { if (Base.DEBUG) { if (message != null) { System.err.println(message); } - e.printStackTrace(); - } - } - - - static public void loge(String message) { - if (Base.DEBUG) { - System.err.println(message); + if (e != null) { + e.printStackTrace(); + } } } } diff --git a/app/src/processing/app/Mode.java b/app/src/processing/app/Mode.java index ab8430960..73d546619 100644 --- a/app/src/processing/app/Mode.java +++ b/app/src/processing/app/Mode.java @@ -1023,7 +1023,7 @@ public abstract class Mode { // Create a fresh output folder (needed before preproc is run next) if (!targetFolder.exists()) { if (!targetFolder.mkdirs()) { - Messages.loge("Could not create " + targetFolder); + Messages.err("Could not create " + targetFolder); } } } diff --git a/app/src/processing/app/Settings.java b/app/src/processing/app/Settings.java index a109eb4b9..403d6587f 100644 --- a/app/src/processing/app/Settings.java +++ b/app/src/processing/app/Settings.java @@ -88,7 +88,7 @@ public class Settings { } } } else { - Messages.loge(additions + " could not be read"); + Messages.err(additions + " could not be read"); } // check for platform-specific properties in the defaults diff --git a/app/src/processing/app/SingleInstance.java b/app/src/processing/app/SingleInstance.java index d9409d152..405f6720c 100644 --- a/app/src/processing/app/SingleInstance.java +++ b/app/src/processing/app/SingleInstance.java @@ -47,7 +47,6 @@ public class SingleInstance { * Returns true if there's an instance of Processing already running. * Will not return true unless this code was able to successfully * contact the already running instance to have it launch sketches. - * @param filename Path to the PDE file that was opened, null if double-clicked * @return true if successfully launched on the other instance */ static boolean alreadyRunning(String[] args) { @@ -108,14 +107,14 @@ public class SingleInstance { } // } } catch (IOException e) { - Messages.loge("SingleInstance error while listening", e); + Messages.err("SingleInstance error while listening", e); } } } }, "SingleInstance Server").start(); } catch (IOException e) { - Messages.loge("Could not create single instance server.", e); + Messages.err("Could not create single instance server.", e); } } @@ -143,7 +142,7 @@ public class SingleInstance { return true; } } catch (IOException e) { - Messages.loge("Error sending commands to other instance", e); + Messages.err("Error sending commands to other instance", e); } Messages.log("Processing is not already running (or could not connect)"); return false; diff --git a/app/src/processing/app/Util.java b/app/src/processing/app/Util.java index 951474561..8e2063337 100644 --- a/app/src/processing/app/Util.java +++ b/app/src/processing/app/Util.java @@ -74,7 +74,7 @@ public class Util { */ static public StringDict readSettings(File inputFile) { if (!inputFile.exists()) { - Messages.loge(inputFile + " does not exist inside readSettings()"); + Messages.err(inputFile + " does not exist inside readSettings()"); return null; } String lines[] = PApplet.loadStrings(inputFile); diff --git a/app/src/processing/app/contrib/ModeContribution.java b/app/src/processing/app/contrib/ModeContribution.java index 464941ad0..28dbd7782 100644 --- a/app/src/processing/app/contrib/ModeContribution.java +++ b/app/src/processing/app/contrib/ModeContribution.java @@ -66,7 +66,7 @@ public class ModeContribution extends LocalContribution { // For the built-in modes, don't print the exception, just log it // for debugging. This should be impossible for most users to reach, // but it helps us load experimental mode when it's available. - Messages.loge("ModeContribution.load() failed for " + searchName, err); + Messages.err("ModeContribution.load() failed for " + searchName, err); } } return null; diff --git a/app/src/processing/app/syntax/JEditTextArea.java b/app/src/processing/app/syntax/JEditTextArea.java index 89f6dbb22..a42a3037a 100644 --- a/app/src/processing/app/syntax/JEditTextArea.java +++ b/app/src/processing/app/syntax/JEditTextArea.java @@ -2332,7 +2332,7 @@ public class JEditTextArea extends JComponent try { select(getMarkPosition(), xyToOffset(evt.getX(), evt.getY())); } catch (ArrayIndexOutOfBoundsException e) { - Messages.loge("xToOffset problem", e); + Messages.err("xToOffset problem", e); } } else { int line = yToLine(evt.getY()); diff --git a/app/src/processing/app/ui/Editor.java b/app/src/processing/app/ui/Editor.java index 754cdd303..d131e4566 100644 --- a/app/src/processing/app/ui/Editor.java +++ b/app/src/processing/app/ui/Editor.java @@ -2410,7 +2410,7 @@ public abstract class Editor extends JFrame implements RunnerListener { // remove the original file, so user doesn't get confused if (!origPdeFile.delete()) { - Messages.loge("Could not delete " + origPdeFile); + Messages.err("Could not delete " + origPdeFile); } // update with the new path diff --git a/app/src/processing/app/ui/PreferencesFrame.java b/app/src/processing/app/ui/PreferencesFrame.java index 85193dc74..968817218 100644 --- a/app/src/processing/app/ui/PreferencesFrame.java +++ b/app/src/processing/app/ui/PreferencesFrame.java @@ -160,6 +160,12 @@ public class PreferencesFrame { consoleFontSizeField = new JComboBox<>(FONT_SIZES); consoleFontSizeField.setSelectedItem(Preferences.getInteger("console.font.size")); + // Sizing is screwed up on macOS, bug has been open since 2017 + // https://github.com/processing/processing4/issues/232 + // https://bugs.openjdk.java.net/browse/JDK-8179076 + fontSizeField.setEditable(true); + consoleFontSizeField.setEditable(true); + // Interface scale: [ 100% ] (requires restart of Processing) @@ -507,23 +513,16 @@ public class PreferencesFrame { frame.pack(); frame.setLocationRelativeTo(null); - // Workaround for OS X, which breaks the layout when these are set earlier - // https://github.com/processing/processing/issues/3212 - fontSizeField.setEditable(true); - consoleFontSizeField.setEditable(true); - // handle window closing commands for ctrl/cmd-W or hitting ESC. - pain.addKeyListener(new KeyAdapter() { - public void keyPressed(KeyEvent e) { - //System.out.println(e); - KeyStroke wc = Toolkit.WINDOW_CLOSE_KEYSTROKE; - if ((e.getKeyCode() == KeyEvent.VK_ESCAPE) || - (KeyStroke.getKeyStrokeForEvent(e).equals(wc))) { - disposeFrame(); - } + public void keyPressed(KeyEvent e) { + KeyStroke wc = Toolkit.WINDOW_CLOSE_KEYSTROKE; + if ((e.getKeyCode() == KeyEvent.VK_ESCAPE) || + (KeyStroke.getKeyStrokeForEvent(e).equals(wc))) { + disposeFrame(); } - }); + } + }); } diff --git a/app/src/processing/app/ui/Toolkit.java b/app/src/processing/app/ui/Toolkit.java index e80dcba0a..ea741334a 100644 --- a/app/src/processing/app/ui/Toolkit.java +++ b/app/src/processing/app/ui/Toolkit.java @@ -536,7 +536,7 @@ public class Toolkit { static public ImageIcon getLibIcon(String filename) { File file = Platform.getContentFile("lib/" + filename); if (file == null || !file.exists()) { - Messages.loge("does not exist: " + file); + Messages.err("does not exist: " + file); return null; } return new ImageIcon(file.getAbsolutePath()); @@ -1032,7 +1032,7 @@ public class Toolkit { sansBoldFont = new Font("Monospaced", Font.BOLD, size); } } catch (Exception e) { - Messages.loge("Could not load mono font", e); + Messages.err("Could not load mono font", e); monoFont = new Font("Monospaced", Font.PLAIN, size); monoBoldFont = new Font("Monospaced", Font.BOLD, size); } @@ -1080,7 +1080,7 @@ public class Toolkit { sansBoldFont = new Font("SansSerif", Font.BOLD, size); } } catch (Exception e) { - Messages.loge("Could not load sans font", e); + Messages.err("Could not load sans font", e); sansFont = new Font("SansSerif", Font.PLAIN, size); sansBoldFont = new Font("SansSerif", Font.BOLD, size); } diff --git a/java/src/processing/mode/java/ASTViewer.java b/java/src/processing/mode/java/ASTViewer.java index bac758c6f..d3f3728de 100644 --- a/java/src/processing/mode/java/ASTViewer.java +++ b/java/src/processing/mode/java/ASTViewer.java @@ -95,7 +95,7 @@ class ASTViewer { void buildAndUpdateTree(PreprocSketch ps) { CompilationUnit cu = ps.compilationUnit; if (cu.types().isEmpty()){ - Messages.loge("No Type found in CU"); + Messages.err("No Type found in CU"); return; } diff --git a/java/src/processing/mode/java/CompletionGenerator.java b/java/src/processing/mode/java/CompletionGenerator.java index ed684d272..1bf55c64b 100644 --- a/java/src/processing/mode/java/CompletionGenerator.java +++ b/java/src/processing/mode/java/CompletionGenerator.java @@ -1750,7 +1750,7 @@ public class CompletionGenerator { ASTNode testnode = parser.createAST(null); //Base.loge("PREDICTION PARSER PROBLEMS: " + parser); // Find closest ASTNode of the document to this word - Messages.loge("Typed: " + phrase + "|" + " temp Node type: " + testnode.getClass().getSimpleName()); + Messages.err("Typed: " + phrase + "|" + " temp Node type: " + testnode.getClass().getSimpleName()); if(testnode instanceof MethodInvocation){ MethodInvocation mi = (MethodInvocation)testnode; log(mi.getName() + "," + mi.getExpression() + "," + mi.typeArguments().size()); @@ -1762,7 +1762,7 @@ public class CompletionGenerator { // Make sure nearestNode is not NULL if couldn't find a closest node nearestNode = astRootNode; } - Messages.loge(lineNumber + " Nearest ASTNode to PRED " + Messages.err(lineNumber + " Nearest ASTNode to PRED " + getNodeAsString(nearestNode)); candidates = new ArrayList<>(); @@ -1770,7 +1770,7 @@ public class CompletionGenerator { // Determine the expression typed if (testnode instanceof SimpleName && !noCompare) { - Messages.loge("One word expression " + getNodeAsString(testnode)); + Messages.err("One word expression " + getNodeAsString(testnode)); //==> Simple one word exprssion - so is just an identifier // Bottom up traversal of the AST to look for possible definitions at @@ -1850,7 +1850,7 @@ public class CompletionGenerator { } else { // ==> Complex expression of type blah.blah2().doIt,etc // Have to resolve it by carefully traversing AST of testNode - Messages.loge("Complex expression " + getNodeAsString(testnode)); + Messages.err("Complex expression " + getNodeAsString(testnode)); log("candidates empty"); ASTNode childExpr = getChildExpression(testnode); log("Parent expression : " + getParentExpression(testnode)); diff --git a/java/src/processing/mode/java/CompletionPanel.java b/java/src/processing/mode/java/CompletionPanel.java index e6125964f..b23df460e 100644 --- a/java/src/processing/mode/java/CompletionPanel.java +++ b/java/src/processing/mode/java/CompletionPanel.java @@ -96,7 +96,6 @@ public class CompletionPanel { * @param subWord - Partial word which triggered the code completion and which needs to be completed * @param items - completion candidates * @param location - Point location where popup list is to be displayed - * @param dedit */ public CompletionPanel(final JEditTextArea textarea, int position, String subWord, @@ -377,7 +376,7 @@ public class CompletionPanel { } } - Messages.loge(subWord + " <= subword, Inserting suggestion=> " + + Messages.err(subWord + " <= subword, Inserting suggestion=> " + selectedSuggestion + " Current sub: " + currentSubword); if (currentSubword.length() > 0) { textarea.getDocument().remove(insertionPosition - currentSubwordLen, diff --git a/java/src/processing/mode/java/JavaEditor.java b/java/src/processing/mode/java/JavaEditor.java index d6d7cf477..e3537db59 100644 --- a/java/src/processing/mode/java/JavaEditor.java +++ b/java/src/processing/mode/java/JavaEditor.java @@ -27,7 +27,6 @@ import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import java.util.Map; @@ -1326,7 +1325,7 @@ public class JavaEditor extends Editor { // this method gets called twice when saving sketch for the first time // once with new name and another with old(causing NPE). Keep an eye out // for potential issues. See #2675. TODO: - Messages.loge("Illegal tab name to addBreakpointComments() " + tabFilename); + Messages.err("Illegal tab name to addBreakpointComments() " + tabFilename); return; } List bps = debugger.getBreakpoints(tab.getFileName()); @@ -1349,7 +1348,7 @@ public class JavaEditor extends Editor { tab.setProgram(code); tab.save(); } catch (IOException ex) { - Messages.loge(null, ex); + Messages.err(null, ex); } } diff --git a/java/src/processing/mode/java/JavaTextArea.java b/java/src/processing/mode/java/JavaTextArea.java index 0e3b9a315..647e1c45f 100644 --- a/java/src/processing/mode/java/JavaTextArea.java +++ b/java/src/processing/mode/java/JavaTextArea.java @@ -335,7 +335,7 @@ public class JavaTextArea extends PdeTextArea { } }); } catch (Exception e) { - Messages.loge("error while preparing suggestions", e); + Messages.err("error while preparing suggestions", e); } }); } diff --git a/java/src/processing/mode/java/PreprocService.java b/java/src/processing/mode/java/PreprocService.java index 6821883ea..8678d410b 100644 --- a/java/src/processing/mode/java/PreprocService.java +++ b/java/src/processing/mode/java/PreprocService.java @@ -53,8 +53,6 @@ import org.eclipse.jdt.core.dom.AST; import org.eclipse.jdt.core.dom.ASTParser; import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jdt.core.dom.FileASTRequestor; -import org.eclipse.jdt.core.ICompilationUnit; -import org.eclipse.jdt.core.IType; import processing.app.Messages; import processing.app.Sketch; @@ -154,7 +152,7 @@ public class PreprocService { } } } catch (Exception e) { - Messages.loge("problem in preprocessor service loop", e); + Messages.err("problem in preprocessor service loop", e); } } Messages.log("PPS: Bye!"); @@ -224,7 +222,7 @@ public class PreprocService { .thenAcceptBothAsync(lastCallback, (ps, a) -> callback.accept(ps)) // Make sure exception in callback won't cancel whole callback chain .handleAsync((res, e) -> { - if (e != null) Messages.loge("PPS: exception in callback", e); + if (e != null) Messages.err("PPS: exception in callback", e); return res; }); return lastCallback; @@ -314,7 +312,7 @@ public class PreprocService { try { listener.accept(ps); } catch (Exception e) { - Messages.loge("error when firing preprocessing listener", e); + Messages.err("error when firing preprocessing listener", e); } } } @@ -734,7 +732,7 @@ public class PreprocService { * for the sketch's combined PDE code (not ".java" tabs). *

*/ - private class ProcessingASTRequester extends FileASTRequestor { + static private class ProcessingASTRequester extends FileASTRequestor { private final String mainSource; private final List problems; private CompilationUnit mainCompilationUnit; diff --git a/java/src/processing/mode/java/RuntimePathBuilder.java b/java/src/processing/mode/java/RuntimePathBuilder.java index 1ae5fafed..08b49e63a 100644 --- a/java/src/processing/mode/java/RuntimePathBuilder.java +++ b/java/src/processing/mode/java/RuntimePathBuilder.java @@ -257,21 +257,21 @@ public class RuntimePathBuilder { } /** - * Invalidate all of the runtime path caches associated with sketch libraries. + * Invalidate all the runtime path caches associated with sketch libraries. */ public void markLibrariesChanged() { invalidateAll(libraryDependentCaches); } /** - * Invalidate all of the runtime path caches associated with sketch library imports. + * Invalidate all the runtime path caches associated with sketch library imports. */ public void markLibraryImportsChanged() { invalidateAll(libraryImportsDependentCaches); } /** - * Invalidate all of the runtime path caches associated with the code folder having changed. + * Invalidate all the runtime path caches associated with the code folder having changed. */ public void markCodeFolderChanged() { invalidateAll(codeFolderDependentCaches); @@ -324,7 +324,7 @@ public class RuntimePathBuilder { try { return Paths.get(path).toUri().toURL(); } catch (MalformedURLException e) { - Messages.loge("malformed URL when preparing sketch classloader", e); + Messages.err("malformed URL when preparing sketch classloader", e); return null; } }) @@ -556,9 +556,7 @@ public class RuntimePathBuilder { /** * Determine if a package is ignorable because it is standard. - * - * Determine if a package is ignorable on the sketch path because it is standard. This is - * different than being ignorable in imports recommendations. + * This is different from being ignorable in imports recommendations. * * @param packageName The name of the package to evaluate. * @return True if the package is part of standard Java (like java.lang.*). False otherwise. @@ -570,8 +568,8 @@ public class RuntimePathBuilder { /** * Find a fully qualified jar name. * - * @param jarName The jar name like "javafx.base.jar" for which a fully qualified entry should be - * created. + * @param jarName The jar name like "javafx.base.jar" for which a + * fully qualified entry should be created. * @return The fully qualified classpath entry like ".../Processing.app/Contents/PlugIns/ * adoptopenjdk-11.0.1.jdk/Contents/Home/lib/javafx.base.jar" */ diff --git a/java/src/processing/mode/java/debug/ArrayFieldNode.java b/java/src/processing/mode/java/debug/ArrayFieldNode.java index 8d527573e..ef9fbc55d 100644 --- a/java/src/processing/mode/java/debug/ArrayFieldNode.java +++ b/java/src/processing/mode/java/debug/ArrayFieldNode.java @@ -53,7 +53,7 @@ public class ArrayFieldNode extends VariableNode { try { array.setValue(index, value); } catch (InvalidTypeException | ClassNotLoadedException ex) { - Messages.loge(null, ex); + Messages.err(null, ex); } this.value = value; } diff --git a/java/src/processing/mode/java/debug/Debugger.java b/java/src/processing/mode/java/debug/Debugger.java index cee34c772..c4183a09b 100644 --- a/java/src/processing/mode/java/debug/Debugger.java +++ b/java/src/processing/mode/java/debug/Debugger.java @@ -1547,15 +1547,15 @@ public class Debugger { private void loge(String msg, Throwable t) { if (t != null) { - Messages.loge(getClass().getName() + " " + msg, t); + Messages.err(getClass().getName() + " " + msg, t); } else { - Messages.loge(getClass().getName() + " " + msg); + Messages.err(getClass().getName() + " " + msg); } } static private void logitse(Throwable t) { - Messages.loge("incompatible thread state?", t); + Messages.err("incompatible thread state?", t); } @@ -1607,7 +1607,7 @@ public class Debugger { } catch (VMDisconnectedException e) { Messages.log("VMEventReader quit on VM disconnect"); } catch (Exception e) { - Messages.loge("VMEventReader quit", e); + Messages.err("VMEventReader quit", e); } } } diff --git a/java/src/processing/mode/java/debug/FieldNode.java b/java/src/processing/mode/java/debug/FieldNode.java index cae4d7178..70b85054d 100644 --- a/java/src/processing/mode/java/debug/FieldNode.java +++ b/java/src/processing/mode/java/debug/FieldNode.java @@ -56,9 +56,9 @@ public class FieldNode extends VariableNode { try { obj.setValue(field, value); } catch (InvalidTypeException ite) { - Messages.loge(null, ite); + Messages.err(null, ite); } catch (ClassNotLoadedException cnle) { - Messages.loge(null, cnle); + Messages.err(null, cnle); } this.value = value; } diff --git a/java/src/processing/mode/java/debug/LineBreakpoint.java b/java/src/processing/mode/java/debug/LineBreakpoint.java index 2e3b56b13..e7327446f 100644 --- a/java/src/processing/mode/java/debug/LineBreakpoint.java +++ b/java/src/processing/mode/java/debug/LineBreakpoint.java @@ -34,7 +34,7 @@ import com.sun.jdi.request.BreakpointRequest; /** * Model/Controller of a line breakpoint. Can be set before or while debugging. - * Adds a highlight using the debuggers view ({@link DebugEditor}). + * Adds a highlight using the debuggers view. */ public class LineBreakpoint implements ClassLoadListener { protected Debugger dbg; // the debugger @@ -131,7 +131,7 @@ public class LineBreakpoint implements ClassLoadListener { log("attached breakpoint to " + line + " -> " + javaLine); return true; } catch (AbsentInformationException ex) { - Messages.loge(null, ex); + Messages.err(null, ex); } return false; } @@ -158,7 +158,7 @@ public class LineBreakpoint implements ClassLoadListener { /** * Set this breakpoint. Adds the line highlight. If Debugger is paused - * also attaches the breakpoint by calling {@link #attach()}. + * also attaches the breakpoint by calling {@link #attach}. */ protected void set() { dbg.addClassLoadListener(this); // class may not yet be loaded diff --git a/java/src/processing/mode/java/debug/LineID.java b/java/src/processing/mode/java/debug/LineID.java index 35f1b79c1..34b0711a8 100644 --- a/java/src/processing/mode/java/debug/LineID.java +++ b/java/src/processing/mode/java/debug/LineID.java @@ -37,8 +37,8 @@ import processing.app.Messages; /** * Describes an ID for a code line. Comprised of a file name and a (0-based) * line number. Can track changes to the line number due to text editing by - * attaching a {@link Document}. Registered {@link LineListener}s are notified - * of changes to the line number. + * attaching a {@link Document}. Registered listeners are notified of changes + * to the line number. */ public class LineID implements DocumentListener { protected String fileName; // the filename @@ -151,7 +151,7 @@ public class LineID implements DocumentListener { this.doc = doc; doc.addDocumentListener(this); } catch (BadLocationException ex) { - Messages.loge(null, ex); + Messages.err(null, ex); pos = null; this.doc = null; } diff --git a/java/src/processing/mode/java/debug/LocalVariableNode.java b/java/src/processing/mode/java/debug/LocalVariableNode.java index 34bb91afc..5b97ba82a 100644 --- a/java/src/processing/mode/java/debug/LocalVariableNode.java +++ b/java/src/processing/mode/java/debug/LocalVariableNode.java @@ -52,7 +52,7 @@ public class LocalVariableNode extends VariableNode { try { frame.setValue(var, value); } catch (InvalidTypeException | ClassNotLoadedException ex) { - Messages.loge(null, ex); + Messages.err(null, ex); } this.value = value; } diff --git a/java/src/processing/mode/java/runner/Runner.java b/java/src/processing/mode/java/runner/Runner.java index 8a3f37606..d94ebc222 100644 --- a/java/src/processing/mode/java/runner/Runner.java +++ b/java/src/processing/mode/java/runner/Runner.java @@ -288,11 +288,11 @@ public class Runner implements MessageConsumer { try { Thread.sleep(100); } catch (InterruptedException ie) { - Messages.loge(getClass().getName() + " interrupted", ie); + Messages.err(getClass().getName() + " interrupted", ie); // ie.printStackTrace(sketchErr); } } catch (IOException e) { - Messages.loge(getClass().getName() + " while attaching to VM", e); + Messages.err(getClass().getName() + " while attaching to VM", e); } } // } catch (IOException exc) { diff --git a/todo.txt b/todo.txt index ad4df01c8..3cc5a4d19 100755 --- a/todo.txt +++ b/todo.txt @@ -10,6 +10,13 @@ o but pdex.completion.trigger=true does X https://github.com/processing/processing/issues/5691 X remove code for pulling fonts from JAVA_HOME/lib/fonts X no longer exists in Java 11 +o exporting on Linux is setting the wrong path? or an extra subfolder is used? +X https://github.com/processing/processing/issues/6182 +X checked, seems to be working +o fix height of font size dropdown in prefs (why one pixel off?) +X file prefs combo box issue +o https://github.com/processing/processing4/issues/232 +X change Messages.loge() to Messages.err() Sam updates X can we get rid of pdexEnabled? does the current code work w/ java tabs? @@ -17,16 +24,16 @@ X https://github.com/processing/processing4/issues/157 X https://github.com/processing/processing4/pull/230 -_ change Messages.loge() to Messages.err() +_ dealing with reference.zip +_ psk files, doing that for examples -_ Toolkit.getSansFont() will use the internal ProcessingSansPro font -_ which means it gets used inside ManagerFrame, and prevents the theme from updating the font _ auto-complete not triggering, workaround as pref? _ Auto-completion: [ ] Disabled [ ] Show on Ctrl-Space [ ] Always show _ https://github.com/processing/processing/issues/5691 _ IDE cursor position is wrong if font size is changed in preferences on macOS +_ probably related to second displays, need to hook one up and test _ https://github.com/processing/processing4/issues/194 _ replace bug numbers @@ -35,7 +42,11 @@ _ with http://processing.org/bugs/bugzilla/1188.html _ also code.google.com URLs with Github URLs (numbers are sorta in sync) ui is ugly on macOS -_ fix height of font size dropdown in prefs (why one pixel off?) +_ sort out ui.font plus the other fonts inside theme.txt +_ Toolkit.getSansFont() will use the internal ProcessingSansPro font +_ which means it gets used inside ManagerFrame, and prevents the theme from updating the font +_ while that font could exist in theme.txt, getSansFont() also handles the language fallback version +_ which perhaps, that pref should come from the translations: i.e. some sort of override setting _ better default fonts for Swing; argh _ file an issue with the images _ https://www.pushing-pixels.org/2017/01/17/using-san-francisco-font-in-swing-applications-on-a-mac.html @@ -64,9 +75,6 @@ _ when exporting an app, run xattr on it to handle "app is damaged" errors? _ https://osxdaily.com/2019/02/13/fix-app-damaged-cant-be-opened-trash-error-mac/ _ https://github.com/processing/processing/issues/4214 -_ exporting on Linux is setting the wrong path? or an extra subfolder is used? -_ https://github.com/processing/processing/issues/6182 - _ when lib downloads (batik) go dead, fallback to the download.processing.org version _ or for now, tell users how to do it manually