diff --git a/app/src/processing/mode/java2/DebugEditor.java b/app/src/processing/mode/java2/DebugEditor.java index 9a96bc544..3bbbe4325 100755 --- a/app/src/processing/mode/java2/DebugEditor.java +++ b/app/src/processing/mode/java2/DebugEditor.java @@ -110,10 +110,10 @@ public class DebugEditor extends JavaEditor implements ActionListener { // load settings from theme.txt DebugMode theme = dmode; - breakpointColor = theme.loadColorFromTheme("breakpoint.bgcolor", breakpointColor); - breakpointMarkerColor = theme.loadColorFromTheme("breakpoint.marker.color", breakpointMarkerColor); - currentLineColor = theme.loadColorFromTheme("currentline.bgcolor", currentLineColor); - currentLineMarkerColor = theme.loadColorFromTheme("currentline.marker.color", currentLineMarkerColor); + breakpointColor = theme.getThemeColor("breakpoint.bgcolor", breakpointColor); + breakpointMarkerColor = theme.getThemeColor("breakpoint.marker.color", breakpointMarkerColor); + currentLineColor = theme.getThemeColor("currentline.bgcolor", currentLineColor); + currentLineMarkerColor = theme.getThemeColor("currentline.marker.color", currentLineMarkerColor); // set breakpoints from marker comments for (LineID lineID : stripBreakpointComments()) { diff --git a/app/src/processing/mode/java2/DebugMode.java b/app/src/processing/mode/java2/DebugMode.java index ef0f26c0b..fa4fa6f38 100755 --- a/app/src/processing/mode/java2/DebugMode.java +++ b/app/src/processing/mode/java2/DebugMode.java @@ -35,14 +35,13 @@ import processing.mode.java.JavaMode; * @author Martin Leopold */ public class DebugMode extends JavaMode { + public static final boolean VERBOSE_LOGGING = true; + //public static final boolean VERBOSE_LOGGING = false; + public static final int LOG_SIZE = 512 * 1024; // max log file size (in bytes) - public static final boolean VERBOSE_LOGGING = true; - public static final int LOG_SIZE = 524288; // max log file size (in bytes) - - // important inherited fields: - // protected Base base; - public DebugMode(Base base, File folder) { - super(base, folder); + + public DebugMode(Base base, File folder) { + super(base, folder); // use libraries folder from javamode. will make sketches using core libraries work, as well as import libraries and examples menus // for (Mode m : base.getModeList()) { @@ -54,125 +53,106 @@ public class DebugMode extends JavaMode { // } // } - // Fetch examples and reference from java mode - // thx to Manindra (https://github.com/martinleopold/DebugMode/issues/4) - examplesFolder = Base.getContentFile("modes/java/examples"); - // https://github.com/martinleopold/DebugMode/issues/6 - referenceFolder = Base.getContentFile("modes/java/reference"); + // Fetch examples and reference from java mode + // thx to Manindra (https://github.com/martinleopold/DebugMode/issues/4) + examplesFolder = Base.getContentFile("modes/java/examples"); + // https://github.com/martinleopold/DebugMode/issues/6 + referenceFolder = Base.getContentFile("modes/java/reference"); - // set logging level - Logger globalLogger = Logger.getLogger(""); - //Logger logger = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); // doesn't work on os x - if (VERBOSE_LOGGING) { - globalLogger.setLevel(Level.INFO); - } else { - globalLogger.setLevel(Level.WARNING); - } - - // enable logging to file - try { - File logFile = getContentFile("logs/DebugMode.%g.log"); - File logFolder = logFile.getParentFile(); - if (!logFolder.exists()) { - logFolder.mkdir(); - } - Handler handler = new FileHandler(logFile.getAbsolutePath(), LOG_SIZE, 10, false); - globalLogger.addHandler(handler); - } catch (IOException ex) { - Logger.getLogger(DebugMode.class.getName()).log(Level.SEVERE, null, ex); - } catch (SecurityException ex) { - Logger.getLogger(DebugMode.class.getName()).log(Level.SEVERE, null, ex); - } - - // output version from manifest file - Package p = DebugMode.class.getPackage(); - String titleAndVersion = p.getImplementationTitle() + " (v" + p.getImplementationVersion() + ")"; - //System.out.println(titleAndVersion); - Logger.getLogger(DebugMode.class.getName()).log(Level.INFO, titleAndVersion); + // set logging level + Logger globalLogger = Logger.getLogger(""); + //Logger logger = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); // doesn't work on os x + if (VERBOSE_LOGGING) { + globalLogger.setLevel(Level.INFO); + } else { + globalLogger.setLevel(Level.WARNING); } - /** - * Return the pretty/printable/menu name for this mode. This is separate - * from the single word name of the folder that contains this mode. It could - * even have spaces, though that might result in sheer madness or total - * mayhem. - */ - @Override - public String getTitle() { - return "Debug"; - } - - /** - * Create a new editor associated with this mode. - */ - @Override - public processing.app.Editor createEditor(Base base, String path, EditorState state) { - return new DebugEditor(base, path, state, this); - } - - /** - * Returns the default extension for this editor setup. - */ - /* - * @Override public String getDefaultExtension() { return null; } - */ - /** - * Returns a String[] array of proper extensions. - */ - /* - * @Override public String[] getExtensions() { return null; } - */ - /** - * Get array of file/directory names that needn't be copied during "Save - * As". - */ - /* - * @Override public String[] getIgnorable() { return null; } - */ - /** - * Load a String value from theme.txt - * - * @param attribute the attribute key to load - * @param defaultValue the default value - * @return the attributes value, or the default value if the attribute - * couldn't be loaded - */ - public String loadStringFromTheme(String attribute, String defaultValue) { - String newString = theme.get(attribute); - if (newString != null) { - return newString; - } - Logger.getLogger(DebugMode.class.getName()).log(Level.WARNING, "Error loading String: {0}", attribute); - return defaultValue; - } - - /** - * Load a Color value from theme.txt - * - * @param attribute the attribute key to load - * @param defaultValue the default value - * @return the attributes value, or the default value if the attribute - * couldn't be loaded - */ - public Color loadColorFromTheme(String attribute, Color defaultValue) { - Color newColor = theme.getColor(attribute); - if (newColor != null) { - return newColor; - } - System.out.println("error loading color: " + attribute); - Logger.getLogger(DebugMode.class.getName()).log(Level.WARNING, "Error loading Color: {0}", attribute); - return defaultValue; - } - - public ClassLoader getJavaModeClassLoader() { - //return super.getClassLoader(); - for (Mode m : base.getModeList()) { - if (m.getClass() == JavaMode.class) { - JavaMode jMode = (JavaMode) m; - return jMode.getClassLoader(); - } + // enable logging to file + try { + // settings is writable for built-in modes, mode folder is not writable + File logFolder = Base.getSettingsFile("debug"); + if (!logFolder.exists()) { + logFolder.mkdir(); } - // badness - return null; + File logFile = new File(logFolder, "DebugMode.%g.log"); + Handler handler = new FileHandler(logFile.getAbsolutePath(), LOG_SIZE, 10, false); + globalLogger.addHandler(handler); + + } catch (IOException ex) { + Logger.getLogger(DebugMode.class.getName()).log(Level.SEVERE, null, ex); + } catch (SecurityException ex) { + Logger.getLogger(DebugMode.class.getName()).log(Level.SEVERE, null, ex); } + + // output version from manifest file + Package p = DebugMode.class.getPackage(); + String titleAndVersion = p.getImplementationTitle() + " (v" + p.getImplementationVersion() + ")"; + //System.out.println(titleAndVersion); + Logger.getLogger(DebugMode.class.getName()).log(Level.INFO, titleAndVersion); + } + + + @Override + public String getTitle() { + return "Experimental"; + } + + + /** + * Create a new editor associated with this mode. + */ + @Override + public processing.app.Editor createEditor(Base base, String path, EditorState state) { + return new DebugEditor(base, path, state, this); + } + + + /** + * Load a String value from theme.txt + * + * @param attribute the attribute key to load + * @param defaultValue the default value + * @return the attributes value, or the default value if the attribute + * couldn't be loaded + */ + public String loadThemeString(String attribute, String defaultValue) { + String newString = theme.get(attribute); + if (newString != null) { + return newString; + } + Logger.getLogger(DebugMode.class.getName()).log(Level.WARNING, "Error loading String: {0}", attribute); + return defaultValue; + } + + + /** + * Load a Color value from theme.txt + * + * @param attribute the attribute key to load + * @param defaultValue the default value + * @return the attributes value, or the default value if the attribute + * couldn't be loaded + */ + public Color getThemeColor(String attribute, Color defaultValue) { + Color newColor = theme.getColor(attribute); + if (newColor != null) { + return newColor; + } + System.out.println("error loading color: " + attribute); + Logger.getLogger(DebugMode.class.getName()).log(Level.WARNING, "Error loading Color: {0}", attribute); + return defaultValue; + } + + + public ClassLoader getJavaModeClassLoader() { + for (Mode m : base.getModeList()) { + if (m.getClass() == JavaMode.class) { + JavaMode jMode = (JavaMode) m; + return jMode.getClassLoader(); + } + } + // badness + return null; + } } diff --git a/app/src/processing/mode/java2/TextArea.java b/app/src/processing/mode/java2/TextArea.java index 98e4042fd..56081c1df 100755 --- a/app/src/processing/mode/java2/TextArea.java +++ b/app/src/processing/mode/java2/TextArea.java @@ -82,11 +82,11 @@ public class TextArea extends JEditTextArea { // load settings from theme.txt DebugMode theme = (DebugMode) editor.getMode(); - gutterBgColor = theme.loadColorFromTheme("gutter.bgcolor", gutterBgColor); - gutterLineColor = theme.loadColorFromTheme("gutter.linecolor", gutterLineColor); + gutterBgColor = theme.getThemeColor("gutter.bgcolor", gutterBgColor); + gutterLineColor = theme.getThemeColor("gutter.linecolor", gutterLineColor); gutterPadding = theme.getInteger("gutter.padding"); - breakpointMarker = theme.loadStringFromTheme("breakpoint.marker", breakpointMarker); - currentLineMarker = theme.loadStringFromTheme("currentline.marker", currentLineMarker); + breakpointMarker = theme.loadThemeString("breakpoint.marker", breakpointMarker); + currentLineMarker = theme.loadThemeString("currentline.marker", currentLineMarker); } /**