From 9b58812d1dbe93e110d6c1a62377e2923e35132d Mon Sep 17 00:00:00 2001 From: Federico Fissore Date: Tue, 5 May 2015 10:02:12 +0200 Subject: [PATCH] Preparing the ground for rewriting Preferences GUI code (and hopefully fixing the tiny-pref-window bug on macosx) --- app/format/src/AutoFormat.java | 2 +- app/src/processing/app/AbstractMonitor.java | 16 +-- app/src/processing/app/Base.java | 66 +++++------ app/src/processing/app/Editor.java | 59 +++++----- app/src/processing/app/EditorConsole.java | 6 +- .../processing/app/EditorConsoleStream.java | 6 +- app/src/processing/app/EditorLineStatus.java | 2 +- app/src/processing/app/EditorListener.java | 8 +- app/src/processing/app/EditorStatus.java | 4 +- app/src/processing/app/Preferences.java | 107 +++--------------- app/src/processing/app/PresentMode.java | 4 +- app/src/processing/app/SerialMonitor.java | 10 +- app/src/processing/app/Sketch.java | 16 +-- app/src/processing/app/UpdateCheck.java | 8 +- .../app/syntax/PdeTextAreaDefaults.java | 10 +- .../app/syntax/TextAreaPainter.java | 2 +- app/src/processing/app/tools/AutoFormat.java | 2 +- .../processing/app/DefaultTargetTest.java | 8 +- .../src/processing/app/PreferencesData.java | 19 ++++ 19 files changed, 149 insertions(+), 206 deletions(-) diff --git a/app/format/src/AutoFormat.java b/app/format/src/AutoFormat.java index 4e8d8abbd..59640cde8 100644 --- a/app/format/src/AutoFormat.java +++ b/app/format/src/AutoFormat.java @@ -45,7 +45,7 @@ import java.io.*; public void show() { String originalText = editor.textarea.getText(); - int indentSize = Preferences.getInteger("editor.tabs.size"); + int indentSize = PreferencesData.getInteger("editor.tabs.size"); // diff --git a/app/src/processing/app/AbstractMonitor.java b/app/src/processing/app/AbstractMonitor.java index 146a8c25e..6469809ba 100644 --- a/app/src/processing/app/AbstractMonitor.java +++ b/app/src/processing/app/AbstractMonitor.java @@ -78,7 +78,7 @@ public abstract class AbstractMonitor extends JFrame implements ActionListener { getContentPane().setLayout(new BorderLayout()); Font consoleFont = Theme.getFont("console.font"); - Font editorFont = Preferences.getFont("editor.font"); + Font editorFont = PreferencesData.getFont("editor.font"); Font font = new Font(consoleFont.getName(), consoleFont.getStyle(), editorFont.getSize()); textArea = new TextAreaFIFO(8000000); @@ -124,12 +124,12 @@ public abstract class AbstractMonitor extends JFrame implements ActionListener { lineEndings = new JComboBox(new String[]{_("No line ending"), _("Newline"), _("Carriage return"), _("Both NL & CR")}); lineEndings.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { - Preferences.setInteger("serial.line_ending", lineEndings.getSelectedIndex()); + PreferencesData.setInteger("serial.line_ending", lineEndings.getSelectedIndex()); noLineEndingAlert.setForeground(pane.getBackground()); } }); - if (Preferences.get("serial.line_ending") != null) { - lineEndings.setSelectedIndex(Preferences.getInteger("serial.line_ending")); + if (PreferencesData.get("serial.line_ending") != null) { + lineEndings.setSelectedIndex(PreferencesData.getInteger("serial.line_ending")); } lineEndings.setMaximumSize(lineEndings.getMinimumSize()); @@ -160,13 +160,13 @@ public abstract class AbstractMonitor extends JFrame implements ActionListener { pack(); Dimension screen = Toolkit.getDefaultToolkit().getScreenSize(); - if (Preferences.get("last.screen.height") != null) { + if (PreferencesData.get("last.screen.height") != null) { // if screen size has changed, the window coordinates no longer // make sense, so don't use them unless they're identical - int screenW = Preferences.getInteger("last.screen.width"); - int screenH = Preferences.getInteger("last.screen.height"); + int screenW = PreferencesData.getInteger("last.screen.width"); + int screenH = PreferencesData.getInteger("last.screen.height"); if ((screen.width == screenW) && (screen.height == screenH)) { - String locationStr = Preferences.get("last.serial.location"); + String locationStr = PreferencesData.get("last.serial.location"); if (locationStr != null) { int[] location = PApplet.parseInt(PApplet.split(locationStr, ',')); setPlacement(location); diff --git a/app/src/processing/app/Base.java b/app/src/processing/app/Base.java index 965b37ba6..8f0335fa4 100644 --- a/app/src/processing/app/Base.java +++ b/app/src/processing/app/Base.java @@ -143,7 +143,7 @@ public class Base { BaseNoGui.initParameters(args); - System.setProperty("swing.aatext", Preferences.get("editor.antialias", "true")); + System.setProperty("swing.aatext", PreferencesData.get("editor.antialias", "true")); BaseNoGui.initVersion(); @@ -257,9 +257,9 @@ public class Base { if (sketchbookPath == null) { File defaultFolder = getDefaultSketchbookFolderOrPromptForIt(); if (BaseNoGui.getPortableFolder() != null) - Preferences.set("sketchbook.path", BaseNoGui.getPortableSketchbookFolder()); + PreferencesData.set("sketchbook.path", BaseNoGui.getPortableSketchbookFolder()); else - Preferences.set("sketchbook.path", defaultFolder.getAbsolutePath()); + PreferencesData.set("sketchbook.path", defaultFolder.getAbsolutePath()); if (!defaultFolder.exists()) { defaultFolder.mkdirs(); } @@ -293,7 +293,7 @@ public class Base { boolean showEditor = parser.isGuiMode(); if (!parser.isForceSavePrefs()) - Preferences.setDoSave(showEditor); + PreferencesData.setDoSave(showEditor); if (handleOpen(file, nextEditorLocation(), showEditor) == null) { String mess = I18n.format(_("Failed to open sketch: \"{0}\""), path); // Open failure is fatal in upload/verify mode @@ -406,13 +406,13 @@ public class Base { } else if (parser.isVerifyOrUploadMode()) { splashScreenHelper.close(); // Set verbosity for command line build - Preferences.set("build.verbose", "" + parser.isDoVerboseBuild()); - Preferences.set("upload.verbose", "" + parser.isDoVerboseUpload()); - Preferences.set("runtime.preserve.temp.files", Boolean.toString(parser.isPreserveTempFiles())); + PreferencesData.set("build.verbose", "" + parser.isDoVerboseBuild()); + PreferencesData.set("upload.verbose", "" + parser.isDoVerboseUpload()); + PreferencesData.set("runtime.preserve.temp.files", Boolean.toString(parser.isPreserveTempFiles())); // Make sure these verbosity preferences are only for the // current session - Preferences.setDoSave(false); + PreferencesData.setDoSave(false); Editor editor = editors.get(0); @@ -443,14 +443,14 @@ public class Base { } // Check for updates - if (Preferences.getBoolean("update.check")) { + if (PreferencesData.getBoolean("update.check")) { new UpdateCheck(this); } } else if (parser.isNoOpMode()) { // Do nothing (intended for only changing preferences) System.exit(0); } else if (parser.isGetPrefMode()) { - String value = Preferences.get(parser.getGetPref(), null); + String value = PreferencesData.get(parser.getGetPref(), null); if (value != null) { System.out.println(value); System.exit(0); @@ -474,11 +474,11 @@ public class Base { Dimension screen = Toolkit.getDefaultToolkit().getScreenSize(); boolean windowPositionValid = true; - if (Preferences.get("last.screen.height") != null) { + if (PreferencesData.get("last.screen.height") != null) { // if screen size has changed, the window coordinates no longer // make sense, so don't use them unless they're identical - int screenW = Preferences.getInteger("last.screen.width"); - int screenH = Preferences.getInteger("last.screen.height"); + int screenW = PreferencesData.getInteger("last.screen.width"); + int screenH = PreferencesData.getInteger("last.screen.height"); if ((screen.width != screenW) || (screen.height != screenH)) { windowPositionValid = false; @@ -499,10 +499,10 @@ public class Base { // If !windowPositionValid, then ignore the coordinates found for each. // Save the sketch path and window placement for each open sketch - int count = Preferences.getInteger("last.sketch.count"); + int count = PreferencesData.getInteger("last.sketch.count"); int opened = 0; for (int i = 0; i < count; i++) { - String path = Preferences.get("last.sketch" + i + ".path"); + String path = PreferencesData.get("last.sketch" + i + ".path"); if (BaseNoGui.getPortableFolder() != null) { File absolute = new File(BaseNoGui.getPortableFolder(), path); try { @@ -513,7 +513,7 @@ public class Base { } int[] location; if (windowPositionValid) { - String locationStr = Preferences.get("last.sketch" + i + ".location"); + String locationStr = PreferencesData.get("last.sketch" + i + ".location"); location = PApplet.parseInt(PApplet.split(locationStr, ',')); } else { location = nextEditorLocation(); @@ -534,8 +534,8 @@ public class Base { protected void storeSketches() { // Save the width and height of the screen Dimension screen = Toolkit.getDefaultToolkit().getScreenSize(); - Preferences.setInteger("last.screen.width", screen.width); - Preferences.setInteger("last.screen.height", screen.height); + PreferencesData.setInteger("last.screen.width", screen.width); + PreferencesData.setInteger("last.screen.height", screen.height); String untitledPath = untitledFolder.getAbsolutePath(); @@ -554,14 +554,14 @@ public class Base { if (path == null) continue; } - Preferences.set("last.sketch" + index + ".path", path); + PreferencesData.set("last.sketch" + index + ".path", path); int[] location = editor.getPlacement(); String locationStr = PApplet.join(PApplet.str(location), ","); - Preferences.set("last.sketch" + index + ".location", locationStr); + PreferencesData.set("last.sketch" + index + ".location", locationStr); index++; } - Preferences.setInteger("last.sketch.count", index); + PreferencesData.setInteger("last.sketch.count", index); } @@ -577,7 +577,7 @@ public class Base { if (path == null) path = ""; } - Preferences.set("last.sketch" + index + ".path", path); + PreferencesData.set("last.sketch" + index + ".path", path); } @@ -616,8 +616,8 @@ public class Base { protected int[] nextEditorLocation() { - int defaultWidth = Preferences.getInteger("editor.window.width.default"); - int defaultHeight = Preferences.getInteger("editor.window.height.default"); + int defaultWidth = PreferencesData.getInteger("editor.window.width.default"); + int defaultHeight = PreferencesData.getInteger("editor.window.height.default"); if (activeEditor == null) { Rectangle screen = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration().getBounds(); @@ -808,7 +808,7 @@ public class Base { public void handleOpenPrompt() throws Exception { // get the frontmost window frame for placing file dialog FileDialog fd = new FileDialog(activeEditor, _("Open an Arduino sketch..."), FileDialog.LOAD); - File lastFolder = new File(Preferences.get("last.folder", getSketchbookFolder().getAbsolutePath())); + File lastFolder = new File(PreferencesData.get("last.folder", getSketchbookFolder().getAbsolutePath())); if (lastFolder.exists() && lastFolder.isFile()) { lastFolder = lastFolder.getParentFile(); } @@ -832,7 +832,7 @@ public class Base { File inputFile = new File(directory, filename); - Preferences.set("last.folder", inputFile.getAbsolutePath()); + PreferencesData.set("last.folder", inputFile.getAbsolutePath()); handleOpen(inputFile); } @@ -1378,9 +1378,9 @@ public class Base { Map buttonGroupsMap, TargetBoard board, TargetPlatform targetPlatform, TargetPackage targetPackage) throws Exception { - String selPackage = Preferences.get("target_package"); - String selPlatform = Preferences.get("target_platform"); - String selBoard = Preferences.get("board"); + String selPackage = PreferencesData.get("target_package"); + String selPlatform = PreferencesData.get("target_platform"); + String selBoard = PreferencesData.get("board"); String boardId = board.getId(); String packageName = targetPackage.getId(); @@ -1418,7 +1418,7 @@ public class Base { @SuppressWarnings("serial") Action subAction = new AbstractAction(_(boardCustomMenu.get(customMenuOption))) { public void actionPerformed(ActionEvent e) { - Preferences.set("custom_" + menuId, ((TargetBoard) getValue("board")).getId() + "_" + getValue("custom_menu_option")); + PreferencesData.set("custom_" + menuId, ((TargetBoard) getValue("board")).getId() + "_" + getValue("custom_menu_option")); onBoardOrPortChange(); } }; @@ -1433,7 +1433,7 @@ public class Base { menu.add(subItem); buttonGroupsMap.get(menuId).add(subItem); - String selectedCustomMenuEntry = Preferences.get("custom_" + menuId); + String selectedCustomMenuEntry = PreferencesData.get("custom_" + menuId); if (selBoard.equals(boardId) && (boardId + "_" + customMenuOption).equals(selectedCustomMenuEntry)) { menuItemsToClickAfterStartup.add(subItem); } @@ -1534,12 +1534,12 @@ public class Base { AbstractAction action = new AbstractAction(targetPlatform .getProgrammer(programmer).get("name")) { public void actionPerformed(ActionEvent actionevent) { - Preferences.set("programmer", "" + getValue("id")); + PreferencesData.set("programmer", "" + getValue("id")); } }; action.putValue("id", id); JMenuItem item = new JRadioButtonMenuItem(action); - if (Preferences.get("programmer").equals(id)) + if (PreferencesData.get("programmer").equals(id)) item.setSelected(true); group.add(item); menu.add(item); diff --git a/app/src/processing/app/Editor.java b/app/src/processing/app/Editor.java index bba813346..5547d80f1 100644 --- a/app/src/processing/app/Editor.java +++ b/app/src/processing/app/Editor.java @@ -24,9 +24,6 @@ package processing.app; import cc.arduino.packages.MonitorFactory; -import cc.arduino.view.*; -import cc.arduino.view.Event; -import cc.arduino.view.EventListener; import com.jcraft.jsch.JSchException; import jssc.SerialPortException; import processing.app.debug.*; @@ -280,7 +277,7 @@ public class Editor extends JFrame implements RunnerListener { splitPane.setBorder(null); // the default size on windows is too small and kinda ugly - int dividerSize = Preferences.getInteger("editor.divider.size"); + int dividerSize = PreferencesData.getInteger("editor.divider.size"); if (dividerSize != 0) { splitPane.setDividerSize(dividerSize); } @@ -312,8 +309,8 @@ public class Editor extends JFrame implements RunnerListener { // Set the minimum size for the editor window - setMinimumSize(new Dimension(Preferences.getInteger("editor.window.width.min"), - Preferences.getInteger("editor.window.height.min"))); + setMinimumSize(new Dimension(PreferencesData.getInteger("editor.window.width.min"), + PreferencesData.getInteger("editor.window.height.min"))); // System.out.println("t3"); // Bring back the general options for the editor @@ -445,13 +442,13 @@ public class Editor extends JFrame implements RunnerListener { protected void applyPreferences() { // apply the setting for 'use external editor' - boolean external = Preferences.getBoolean("editor.external"); + boolean external = PreferencesData.getBoolean("editor.external"); textarea.setEditable(!external); saveMenuItem.setEnabled(!external); saveAsMenuItem.setEnabled(!external); - textarea.setDisplayLineNumbers(Preferences.getBoolean("editor.linenumbers")); + textarea.setDisplayLineNumbers(PreferencesData.getBoolean("editor.linenumbers")); TextAreaPainter painter = textarea.getPainter(); if (external) { @@ -464,14 +461,14 @@ public class Editor extends JFrame implements RunnerListener { } else { Color color = Theme.getColor("editor.bgcolor"); painter.setBackground(color); - boolean highlight = Preferences.getBoolean("editor.linehighlight"); + boolean highlight = PreferencesData.getBoolean("editor.linehighlight"); painter.setLineHighlightEnabled(highlight); textarea.setCaretVisible(true); } // apply changes to the font size for the editor //TextAreaPainter painter = textarea.getPainter(); - painter.setFont(Preferences.getFont("editor.font")); + painter.setFont(PreferencesData.getFont("editor.font")); //Font font = painter.getFont(); //textarea.getPainter().setFont(new Font("Courier", Font.PLAIN, 36)); @@ -586,10 +583,10 @@ public class Editor extends JFrame implements RunnerListener { item = newJMenuItemShift(_("Page Setup"), 'P'); item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - handlePageSetup(); - } - }); + public void actionPerformed(ActionEvent e) { + handlePageSetup(); + } + }); fileMenu.add(item); item = newJMenuItem(_("Print"), 'P'); @@ -677,10 +674,10 @@ public class Editor extends JFrame implements RunnerListener { item = new JMenuItem(_("Add File...")); item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - sketch.handleAddFile(); - } - }); + public void actionPerformed(ActionEvent e) { + sketch.handleAddFile(); + } + }); sketchMenu.add(item); return sketchMenu; @@ -1023,11 +1020,11 @@ public class Editor extends JFrame implements RunnerListener { protected void populatePortMenu() { serialMenu.removeAll(); - String selectedPort = Preferences.get("serial.port"); + String selectedPort = PreferencesData.get("serial.port"); List ports = Base.getDiscoveryManager().discovery(); - ports = Base.getPlatform().filterPorts(ports, Preferences.getBoolean("serial.ports.showall")); + ports = Base.getPlatform().filterPorts(ports, PreferencesData.getBoolean("serial.ports.showall")); Collections.sort(ports, new Comparator() { @Override @@ -1891,7 +1888,7 @@ public class Editor extends JFrame implements RunnerListener { protected void handleIndentOutdent(boolean indent) { - int tabSize = Preferences.getInteger("editor.tabs.size"); + int tabSize = PreferencesData.getInteger("editor.tabs.size"); String tabString = Editor.EMPTY.substring(0, tabSize); startCompoundEdit(); @@ -1994,7 +1991,7 @@ public class Editor extends JFrame implements RunnerListener { */ public void handleRun(final boolean verbose) { internalCloseRunner(); - if (Preferences.getBoolean("editor.save_on_verify")) { + if (PreferencesData.getBoolean("editor.save_on_verify")) { if (sketch.isModified() && !sketch.isReadOnly()) { handleSave(true); } @@ -2007,7 +2004,7 @@ public class Editor extends JFrame implements RunnerListener { for (int i = 0; i < 10; i++) System.out.println(); // clear the console on each run, unless the user doesn't want to - if (Preferences.getBoolean("console.auto_clear")) { + if (PreferencesData.getBoolean("console.auto_clear")) { console.clear(); } @@ -2433,7 +2430,7 @@ public class Editor extends JFrame implements RunnerListener { I18n.format( _("Serial port {0} not found.\n" + "Retry the upload with another serial port?"), - Preferences.get("serial.port") + PreferencesData.get("serial.port") ), "Serial port not found", JOptionPane.PLAIN_MESSAGE, @@ -2463,7 +2460,7 @@ public class Editor extends JFrame implements RunnerListener { * hitting export twice, quickly, and horking things up. */ synchronized public void handleExport(final boolean usingProgrammer) { - if (Preferences.getBoolean("editor.save_on_verify")) { + if (PreferencesData.getBoolean("editor.save_on_verify")) { if (sketch.isModified() && !sketch.isReadOnly()) { handleSave(true); } @@ -2606,10 +2603,10 @@ public class Editor extends JFrame implements RunnerListener { } } - BoardPort port = Base.getDiscoveryManager().find(Preferences.get("serial.port")); + BoardPort port = Base.getDiscoveryManager().find(PreferencesData.get("serial.port")); if (port == null) { - statusError(I18n.format("Board at {0} is not available", Preferences.get("serial.port"))); + statusError(I18n.format("Board at {0} is not available", PreferencesData.get("serial.port"))); return; } @@ -2618,7 +2615,7 @@ public class Editor extends JFrame implements RunnerListener { boolean success = false; do { - if (serialMonitor.requiresAuthorization() && !Preferences.has(serialMonitor.getAuthorizationKey())) { + if (serialMonitor.requiresAuthorization() && !PreferencesData.has(serialMonitor.getAuthorizationKey())) { PasswordAuthorizationDialog dialog = new PasswordAuthorizationDialog(this, _("Type board password to access its console")); dialog.setLocationRelativeTo(this); dialog.setVisible(true); @@ -2628,7 +2625,7 @@ public class Editor extends JFrame implements RunnerListener { return; } - Preferences.set(serialMonitor.getAuthorizationKey(), dialog.getPassword()); + PreferencesData.set(serialMonitor.getAuthorizationKey(), dialog.getPassword()); } try { @@ -2649,7 +2646,7 @@ public class Editor extends JFrame implements RunnerListener { statusError(e); } finally { if (serialMonitor.requiresAuthorization() && !success) { - Preferences.remove(serialMonitor.getAuthorizationKey()); + PreferencesData.remove(serialMonitor.getAuthorizationKey()); } } @@ -2829,7 +2826,7 @@ public class Editor extends JFrame implements RunnerListener { lineStatus.setBoardName(boardPreferences.get("name")); else lineStatus.setBoardName("-"); - lineStatus.setSerialPort(Preferences.get("serial.port")); + lineStatus.setSerialPort(PreferencesData.get("serial.port")); lineStatus.repaint(); } diff --git a/app/src/processing/app/EditorConsole.java b/app/src/processing/app/EditorConsole.java index 8c4910093..a2116f8b4 100644 --- a/app/src/processing/app/EditorConsole.java +++ b/app/src/processing/app/EditorConsole.java @@ -68,7 +68,7 @@ public class EditorConsole extends JScrollPane { public EditorConsole(Editor _editor) { editor = _editor; - int maxLineCount = Preferences.getInteger("console.length"); + int maxLineCount = PreferencesData.getInteger("console.length"); consoleDoc = new BufferedStyledDocument(4000, maxLineCount); consoleTextPane = new JTextPane(consoleDoc); @@ -84,7 +84,7 @@ public class EditorConsole extends JScrollPane { Color fgColorOut = Theme.getColor("console.output.color"); Color fgColorErr = Theme.getColor("console.error.color"); Font consoleFont = Theme.getFont("console.font"); - Font editorFont = Preferences.getFont("editor.font"); + Font editorFont = PreferencesData.getFont("editor.font"); Font font = new Font(consoleFont.getName(), consoleFont.getStyle(), editorFont.getSize()); stdStyle = new SimpleAttributeSet(); @@ -112,7 +112,7 @@ public class EditorConsole extends JScrollPane { // and size window accordingly FontMetrics metrics = getFontMetrics(font); int height = metrics.getAscent() + metrics.getDescent(); - int lines = Preferences.getInteger("console.lines"); + int lines = PreferencesData.getInteger("console.lines"); int sizeFudge = 6; //10; // unclear why this is necessary, but it is setPreferredSize(new Dimension(1024, (height * lines) + sizeFudge)); setMinimumSize(new Dimension(1024, (height * 4) + sizeFudge)); diff --git a/app/src/processing/app/EditorConsoleStream.java b/app/src/processing/app/EditorConsoleStream.java index cfe78fd66..6ad0a336a 100644 --- a/app/src/processing/app/EditorConsoleStream.java +++ b/app/src/processing/app/EditorConsoleStream.java @@ -37,14 +37,14 @@ class EditorConsoleStream extends OutputStream { tempFolder = Base.createTempFolder("console"); DeleteFilesOnShutdown.add(tempFolder); try { - String outFileName = Preferences.get("console.output.file"); + String outFileName = PreferencesData.get("console.output.file"); if (outFileName != null) { outFile = new File(tempFolder, outFileName); DeleteFilesOnShutdown.add(outFile); stdoutFile = new FileOutputStream(outFile); } - String errFileName = Preferences.get("console.error.file"); + String errFileName = PreferencesData.get("console.error.file"); if (errFileName != null) { errFile = new File(tempFolder, errFileName); DeleteFilesOnShutdown.add(errFile); @@ -58,7 +58,7 @@ class EditorConsoleStream extends OutputStream { consoleOut = new PrintStream(new EditorConsoleStream(false)); consoleErr = new PrintStream(new EditorConsoleStream(true)); - if (Preferences.getBoolean("console")) { + if (PreferencesData.getBoolean("console")) { try { System.setOut(consoleOut); System.setErr(consoleErr); diff --git a/app/src/processing/app/EditorLineStatus.java b/app/src/processing/app/EditorLineStatus.java index 8420ddd4c..408b6545b 100644 --- a/app/src/processing/app/EditorLineStatus.java +++ b/app/src/processing/app/EditorLineStatus.java @@ -101,7 +101,7 @@ public class EditorLineStatus extends JComponent { setBoardName(boardPreferences.get("name")); else setBoardName("-"); - setSerialPort(Preferences.get("serial.port")); + setSerialPort(PreferencesData.get("serial.port")); } g.setColor(background); Dimension size = getSize(); diff --git a/app/src/processing/app/EditorListener.java b/app/src/processing/app/EditorListener.java index c2d2fe600..0acb7e4c8 100644 --- a/app/src/processing/app/EditorListener.java +++ b/app/src/processing/app/EditorListener.java @@ -73,12 +73,12 @@ public class EditorListener { public void applyPreferences() { - tabsExpand = Preferences.getBoolean("editor.tabs.expand"); + tabsExpand = PreferencesData.getBoolean("editor.tabs.expand"); //tabsIndent = Preferences.getBoolean("editor.tabs.indent"); - tabSize = Preferences.getInteger("editor.tabs.size"); + tabSize = PreferencesData.getInteger("editor.tabs.size"); tabString = Editor.EMPTY.substring(0, tabSize); - autoIndent = Preferences.getBoolean("editor.indent"); - externalEditor = Preferences.getBoolean("editor.external"); + autoIndent = PreferencesData.getBoolean("editor.indent"); + externalEditor = PreferencesData.getBoolean("editor.external"); } diff --git a/app/src/processing/app/EditorStatus.java b/app/src/processing/app/EditorStatus.java index 1d90760f1..6d715fc8c 100644 --- a/app/src/processing/app/EditorStatus.java +++ b/app/src/processing/app/EditorStatus.java @@ -219,7 +219,7 @@ public class EditorStatus extends JPanel /*implements ActionListener*/ { public void unprogress() { - if (Preferences.getBoolean("editor.beep.compile")) { + if (PreferencesData.getBoolean("editor.beep.compile")) { Toolkit.getDefaultToolkit().beep(); } if (progressBar == null) return; @@ -467,7 +467,7 @@ public class EditorStatus extends JPanel /*implements ActionListener*/ { message += _("Arduino: ") + BaseNoGui.VERSION_NAME + " (" + System.getProperty("os.name") + "), "; message += _("Board: ") + "\"" + Base.getBoardPreferences().get("name") + "\"\n\n"; message += editor.console.consoleTextPane.getText().trim(); - if ((Preferences.getBoolean("build.verbose")) == false) { + if ((PreferencesData.getBoolean("build.verbose")) == false) { message += "\n\n"; message += " " + _("This report would have more information with") + "\n"; message += " \"" + _("Show verbose output during compilation") + "\"\n"; diff --git a/app/src/processing/app/Preferences.java b/app/src/processing/app/Preferences.java index 01d3c1454..21d7be859 100644 --- a/app/src/processing/app/Preferences.java +++ b/app/src/processing/app/Preferences.java @@ -24,7 +24,6 @@ package processing.app; import processing.app.helpers.FileUtils; import processing.app.helpers.OSUtils; import processing.app.helpers.PreferencesHelper; -import processing.app.helpers.PreferencesMap; import processing.app.legacy.PApplet; import javax.swing.*; @@ -353,7 +352,7 @@ public class Preferences { pane.add(box); d = box.getPreferredSize(); box.setBounds(left, top, d.width, d.height); - Font editorFont = Preferences.getFont("editor.font"); + Font editorFont = PreferencesData.getFont("editor.font"); fontSizeField.setText(String.valueOf(editorFont.getSize())); top += d.height + GUI_BETWEEN; @@ -786,22 +785,22 @@ public class Preferences { WarningItem warningItem = (WarningItem) comboWarnings.getSelectedItem(); PreferencesData.set("compiler.warning_level", warningItem.getValue()); - Preferences.set("proxy.http.server", proxyHTTPServer.getText()); + PreferencesData.set("proxy.http.server", proxyHTTPServer.getText()); try { - Preferences.set("proxy.http.port", Integer.valueOf(proxyHTTPPort.getText()).toString()); + PreferencesData.set("proxy.http.port", Integer.valueOf(proxyHTTPPort.getText()).toString()); } catch (NumberFormatException e) { - Preferences.remove("proxy.http.port"); + PreferencesData.remove("proxy.http.port"); } - Preferences.set("proxy.https.server", proxyHTTPSServer.getText()); + PreferencesData.set("proxy.https.server", proxyHTTPSServer.getText()); try { - Preferences.set("proxy.https.port", Integer.valueOf(proxyHTTPSPort.getText()).toString()); + PreferencesData.set("proxy.https.port", Integer.valueOf(proxyHTTPSPort.getText()).toString()); } catch (NumberFormatException e) { - Preferences.remove("proxy.https.port"); + PreferencesData.remove("proxy.https.port"); } - Preferences.set("proxy.user", proxyUser.getText()); - Preferences.set("proxy.password", new String(proxyPassword.getPassword())); + PreferencesData.set("proxy.user", proxyUser.getText()); + PreferencesData.set("proxy.password", new String(proxyPassword.getPassword())); - Preferences.set("boardsmanager.additional.urls", additionalBoardsManagerField.getText().replace("\r\n", "\n").replace("\r", "\n").replace("\n", ",")); + PreferencesData.set("boardsmanager.additional.urls", additionalBoardsManagerField.getText().replace("\r\n", "\n").replace("\r", "\n").replace("\n", ",")); editor.applyPreferences(); } @@ -834,22 +833,22 @@ public class Preferences { updateExtensionBox.setSelected(PreferencesData.get("editor.update_extension") == null || PreferencesData.getBoolean("editor.update_extension")); - proxyHTTPServer.setText(Preferences.get("proxy.http.server")); + proxyHTTPServer.setText(PreferencesData.get("proxy.http.server")); try { - proxyHTTPPort.setText(Integer.toString(Preferences.getInteger("proxy.http.port", 8080))); + proxyHTTPPort.setText(Integer.toString(PreferencesData.getInteger("proxy.http.port", 8080))); } catch (NumberFormatException e) { proxyHTTPPort.setText(""); } - proxyHTTPSServer.setText(Preferences.get("proxy.https.server")); + proxyHTTPSServer.setText(PreferencesData.get("proxy.https.server")); try { - proxyHTTPSPort.setText(Integer.toString(Preferences.getInteger("proxy.https.port", 8443))); + proxyHTTPSPort.setText(Integer.toString(PreferencesData.getInteger("proxy.https.port", 8443))); } catch (NumberFormatException e) { proxyHTTPSPort.setText(""); } - proxyUser.setText(Preferences.get("proxy.user")); - proxyPassword.setText(Preferences.get("proxy.password")); + proxyUser.setText(PreferencesData.get("proxy.user")); + proxyPassword.setText(PreferencesData.get("proxy.password")); - additionalBoardsManagerField.setText(Preferences.get("boardsmanager.additional.urls")); + additionalBoardsManagerField.setText(PreferencesData.get("boardsmanager.additional.urls")); dialog.setLocationRelativeTo(editor); dialog.setVisible(true); @@ -863,76 +862,4 @@ public class Preferences { // ................................................................. - static public String get(String attribute) { - return PreferencesData.get(attribute); - } - - static public String get(String attribute, String defaultValue) { - return PreferencesData.get(attribute, defaultValue); - } - - public static boolean has(String key) { - return PreferencesData.has(key); - } - - public static void remove(String key) { - PreferencesData.remove(key); - } - - - static public void set(String attribute, String value) { - PreferencesData.set(attribute, value); - } - - - static public boolean getBoolean(String attribute) { - return PreferencesData.getBoolean(attribute); - } - - - static public void setBoolean(String attribute, boolean value) { - PreferencesData.setBoolean(attribute, value); - } - - - static public int getInteger(String attribute) { - return PreferencesData.getInteger(attribute); - } - - static public int getInteger(String attribute, int defaultValue) { - if (PreferencesData.has(attribute)) { - return PreferencesData.getInteger(attribute); - } - - return defaultValue; - } - - - static public void setInteger(String key, int value) { - PreferencesData.setInteger(key, value); - } - - - static public Font getFont(String attr) { - Font font = PreferencesHelper.getFont(PreferencesData.prefs, attr); - if (font == null) { - String value = PreferencesData.defaults.get(attr); - PreferencesData.prefs.put(attr, value); - font = PreferencesHelper.getFont(PreferencesData.prefs, attr); - } - return font; - } - - // get a copy of the Preferences - static public PreferencesMap getMap() - { - return PreferencesData.getMap(); - } - - // Decide wether changed preferences will be saved. When value is - // false, Preferences.save becomes a no-op. - static public void setDoSave(boolean value) - { - PreferencesData.setDoSave(value); - } } diff --git a/app/src/processing/app/PresentMode.java b/app/src/processing/app/PresentMode.java index 34cba7928..f9bc568de 100644 --- a/app/src/processing/app/PresentMode.java +++ b/app/src/processing/app/PresentMode.java @@ -74,14 +74,14 @@ public class PresentMode { public void actionPerformed(ActionEvent e) { int index = selector.getSelectedIndex(); //device = devices[index]; - Preferences.setInteger("run.present.display", index + 1); + PreferencesData.setInteger("run.present.display", index + 1); } }); } static public JComboBox getSelector() { - int deviceIndex = Preferences.getInteger("run.present.display") - 1; + int deviceIndex = PreferencesData.getInteger("run.present.display") - 1; selector.setSelectedIndex(deviceIndex); return selector; } diff --git a/app/src/processing/app/SerialMonitor.java b/app/src/processing/app/SerialMonitor.java index 122e3323d..9f48f82cb 100644 --- a/app/src/processing/app/SerialMonitor.java +++ b/app/src/processing/app/SerialMonitor.java @@ -39,14 +39,14 @@ public class SerialMonitor extends AbstractMonitor { this.port = port.getAddress(); - serialRate = Preferences.getInteger("serial.debug_rate"); + serialRate = PreferencesData.getInteger("serial.debug_rate"); serialRates.setSelectedItem(serialRate + " " + _("baud")); onSerialRateChange(new ActionListener() { public void actionPerformed(ActionEvent event) { String wholeString = (String) serialRates.getSelectedItem(); String rateString = wholeString.substring(0, wholeString.indexOf(' ')); serialRate = Integer.parseInt(rateString); - Preferences.set("serial.debug_rate", rateString); + PreferencesData.set("serial.debug_rate", rateString); try { close(); Thread.sleep(100); // Wait for serial port to properly close @@ -80,9 +80,9 @@ public class SerialMonitor extends AbstractMonitor { s += "\r\n"; break; } - if ("".equals(s) && lineEndings.getSelectedIndex() == 0 && !Preferences.has("runtime.line.ending.alert.notified")) { + if ("".equals(s) && lineEndings.getSelectedIndex() == 0 && !PreferencesData.has("runtime.line.ending.alert.notified")) { noLineEndingAlert.setForeground(Color.RED); - Preferences.set("runtime.line.ending.alert.notified", "true"); + PreferencesData.set("runtime.line.ending.alert.notified", "true"); } serial.write(s); } @@ -103,7 +103,7 @@ public class SerialMonitor extends AbstractMonitor { if (serial != null) { int[] location = getPlacement(); String locationStr = PApplet.join(PApplet.str(location), ","); - Preferences.set("last.serial.location", locationStr); + PreferencesData.set("last.serial.location", locationStr); textArea.setText(""); serial.dispose(); serial = null; diff --git a/app/src/processing/app/Sketch.java b/app/src/processing/app/Sketch.java index 99e8e5d48..111c1caf8 100644 --- a/app/src/processing/app/Sketch.java +++ b/app/src/processing/app/Sketch.java @@ -575,7 +575,7 @@ public class Sketch { }); if (pdeFiles != null && pdeFiles.length > 0) { - if (Preferences.get("editor.update_extension") == null) { + if (PreferencesData.get("editor.update_extension") == null) { Object[] options = { _("OK"), _("Cancel") }; int result = JOptionPane.showOptionDialog(editor, _("In Arduino 1.0, the default file extension has changed\n" + @@ -594,10 +594,10 @@ public class Sketch { if (result != JOptionPane.OK_OPTION) return false; // save cancelled - Preferences.setBoolean("editor.update_extension", true); + PreferencesData.setBoolean("editor.update_extension", true); } - if (Preferences.getBoolean("editor.update_extension")) { + if (PreferencesData.getBoolean("editor.update_extension")) { // Do rename of all .pde files to new .ino extension for (File pdeFile : pdeFiles) renameCodeToInoExtension(pdeFile); @@ -801,7 +801,7 @@ public class Sketch { if (result) { editor.statusNotice(_("One file added to the sketch.")); - Preferences.set("last.folder", sourceFile.getAbsolutePath()); + PreferencesData.set("last.folder", sourceFile.getAbsolutePath()); } } @@ -1059,7 +1059,7 @@ public class Sketch { // if an external editor is being used, need to grab the // latest version of the code from the file. - if (Preferences.getBoolean("editor.external")) { + if (PreferencesData.getBoolean("editor.external")) { // history gets screwed by the open.. //String historySaved = history.lastRecorded; //handleOpen(sketch); @@ -1202,7 +1202,7 @@ public class Sketch { boolean success = false; do { - if (uploader.requiresAuthorization() && !Preferences.has(uploader.getAuthorizationKey())) { + if (uploader.requiresAuthorization() && !PreferencesData.has(uploader.getAuthorizationKey())) { PasswordAuthorizationDialog dialog = new PasswordAuthorizationDialog(editor, _("Type board password to upload a new sketch")); dialog.setLocationRelativeTo(editor); dialog.setVisible(true); @@ -1212,7 +1212,7 @@ public class Sketch { return false; } - Preferences.set(uploader.getAuthorizationKey(), dialog.getPassword()); + PreferencesData.set(uploader.getAuthorizationKey(), dialog.getPassword()); } List warningsAccumulator = new LinkedList(); @@ -1220,7 +1220,7 @@ public class Sketch { success = Compiler.upload(data, uploader, buildPath, suggestedClassName, usingProgrammer, false, warningsAccumulator); } finally { if (uploader.requiresAuthorization() && !success) { - Preferences.remove(uploader.getAuthorizationKey()); + PreferencesData.remove(uploader.getAuthorizationKey()); } } diff --git a/app/src/processing/app/UpdateCheck.java b/app/src/processing/app/UpdateCheck.java index ac8117cb2..b3b48dfef 100644 --- a/app/src/processing/app/UpdateCheck.java +++ b/app/src/processing/app/UpdateCheck.java @@ -69,11 +69,11 @@ public class UpdateCheck implements Runnable { Random r = new Random(); long id = r.nextLong(); - String idString = Preferences.get("update.id"); + String idString = PreferencesData.get("update.id"); if (idString != null) { id = Long.parseLong(idString); } else { - Preferences.set("update.id", String.valueOf(id)); + PreferencesData.set("update.id", String.valueOf(id)); } try { @@ -88,7 +88,7 @@ public class UpdateCheck implements Runnable { int latest = readInt(downloadURL + "?" + info); - String lastString = Preferences.get("update.last"); + String lastString = PreferencesData.get("update.last"); long now = System.currentTimeMillis(); if (lastString != null) { long when = Long.parseLong(lastString); @@ -97,7 +97,7 @@ public class UpdateCheck implements Runnable { return; } } - Preferences.set("update.last", String.valueOf(now)); + PreferencesData.set("update.last", String.valueOf(now)); String prompt = _("A new version of Arduino is available,\n" + diff --git a/app/src/processing/app/syntax/PdeTextAreaDefaults.java b/app/src/processing/app/syntax/PdeTextAreaDefaults.java index 2ff65afa8..391416f5c 100644 --- a/app/src/processing/app/syntax/PdeTextAreaDefaults.java +++ b/app/src/processing/app/syntax/PdeTextAreaDefaults.java @@ -44,7 +44,7 @@ public class PdeTextAreaDefaults extends TextAreaDefaults { inputHandler.addKeyBinding("BACK_SPACE", InputHandler.BACKSPACE); // for 0122, shift-backspace is delete, for 0176, it's now a preference, // to prevent holy warriors from attacking me for it. - if (Preferences.getBoolean("editor.keys.shift_backspace_is_delete")) { + if (PreferencesData.getBoolean("editor.keys.shift_backspace_is_delete")) { inputHandler.addKeyBinding("S+BACK_SPACE", InputHandler.DELETE); } else { inputHandler.addKeyBinding("S+BACK_SPACE", InputHandler.BACKSPACE); @@ -65,7 +65,7 @@ public class PdeTextAreaDefaults extends TextAreaDefaults { // http://dev.processing.org/bugs/show_bug.cgi?id=162 // added for 0176, though the bindings do not appear relevant for osx - if (Preferences.getBoolean("editor.keys.alternative_cut_copy_paste")) { + if (PreferencesData.getBoolean("editor.keys.alternative_cut_copy_paste")) { inputHandler.addKeyBinding("C+INSERT", InputHandler.CLIPBOARD_COPY); inputHandler.addKeyBinding("S+INSERT", InputHandler.CLIPBOARD_PASTE); inputHandler.addKeyBinding("S+DELETE", InputHandler.CLIPBOARD_CUT); @@ -78,7 +78,7 @@ public class PdeTextAreaDefaults extends TextAreaDefaults { // HOME and END now mean the beginning/end of the document // for 0176 changed this to a preference so that the Mac OS X people // can get the "normal" behavior as well if they prefer. - if (Preferences.getBoolean("editor.keys.home_and_end_travel_far")) { + if (PreferencesData.getBoolean("editor.keys.home_and_end_travel_far")) { inputHandler.addKeyBinding("HOME", InputHandler.DOCUMENT_HOME); inputHandler.addKeyBinding("END", InputHandler.DOCUMENT_END); inputHandler.addKeyBinding("S+HOME", InputHandler.SELECT_DOC_HOME); @@ -182,13 +182,13 @@ public class PdeTextAreaDefaults extends TextAreaDefaults { // moved from TextAreaPainter - font = Preferences.getFont("editor.font"); + font = PreferencesData.getFont("editor.font"); fgcolor = Theme.getColor("editor.fgcolor"); bgcolor = Theme.getColor("editor.bgcolor"); caretVisible = true; - caretBlinks = Preferences.getBoolean("editor.caret.blink"); + caretBlinks = PreferencesData.getBoolean("editor.caret.blink"); caretColor = Theme.getColor("editor.caret.color"); selectionColor = Theme.getColor("editor.selection.color"); diff --git a/app/src/processing/app/syntax/TextAreaPainter.java b/app/src/processing/app/syntax/TextAreaPainter.java index e99329526..3607c46fa 100644 --- a/app/src/processing/app/syntax/TextAreaPainter.java +++ b/app/src/processing/app/syntax/TextAreaPainter.java @@ -60,7 +60,7 @@ implements TabExpander, Printable setForeground(defaults.fgcolor); setBackground(defaults.bgcolor); - antialias = Preferences.getBoolean("editor.antialias"); + antialias = PreferencesData.getBoolean("editor.antialias"); blockCaret = defaults.blockCaret; styles = defaults.styles; diff --git a/app/src/processing/app/tools/AutoFormat.java b/app/src/processing/app/tools/AutoFormat.java index 572ea692c..f855400b1 100644 --- a/app/src/processing/app/tools/AutoFormat.java +++ b/app/src/processing/app/tools/AutoFormat.java @@ -440,7 +440,7 @@ public class AutoFormat implements Tool { // Adding an additional newline as a hack around other errors String originalText = editor.getText() + "\n"; strOut = new StringBuffer(); - indentValue = Preferences.getInteger("editor.tabs.size"); + indentValue = PreferencesData.getInteger("editor.tabs.size"); indentChar = new String(" "); lineNumber = 0; diff --git a/app/test/processing/app/DefaultTargetTest.java b/app/test/processing/app/DefaultTargetTest.java index e99be1199..37819c84c 100644 --- a/app/test/processing/app/DefaultTargetTest.java +++ b/app/test/processing/app/DefaultTargetTest.java @@ -43,18 +43,18 @@ public class DefaultTargetTest extends AbstractWithPreferencesTest { @Before public void saveBoardFromPreferences() throws Exception { - oldBoardID = Preferences.get("board"); + oldBoardID = PreferencesData.get("board"); } @After public void restoreBoardIntoPreferences() throws Exception { - Preferences.set("board", oldBoardID); - Preferences.save(); + PreferencesData.set("board", oldBoardID); + PreferencesData.save(); } @Test public void testDefaultTarget() throws Exception { - Preferences.set("board", "unreal_board"); + PreferencesData.set("board", "unreal_board"); // should not raise an exception new Base(new String[0]); diff --git a/arduino-core/src/processing/app/PreferencesData.java b/arduino-core/src/processing/app/PreferencesData.java index d6dc14679..6ee44fb34 100644 --- a/arduino-core/src/processing/app/PreferencesData.java +++ b/arduino-core/src/processing/app/PreferencesData.java @@ -2,6 +2,7 @@ package processing.app; import static processing.app.I18n._; +import java.awt.*; import java.io.BufferedReader; import java.io.File; import java.io.IOException; @@ -12,6 +13,7 @@ import java.util.Arrays; import java.util.Iterator; import java.util.MissingResourceException; +import processing.app.helpers.PreferencesHelper; import processing.app.helpers.PreferencesMap; import processing.app.legacy.PApplet; import processing.app.legacy.PConstants; @@ -179,6 +181,13 @@ public class PreferencesData { return Integer.parseInt(get(attribute)); } + static public int getInteger(String attribute, int defaultValue) { + if (has(attribute)) { + return getInteger(attribute); + } + + return defaultValue; + } static public void setInteger(String key, int value) { set(key, String.valueOf(value)); @@ -203,4 +212,14 @@ public class PreferencesData { { doSave = value; } + + static public Font getFont(String attr) { + Font font = PreferencesHelper.getFont(prefs, attr); + if (font == null) { + String value = defaults.get(attr); + prefs.put(attr, value); + font = PreferencesHelper.getFont(prefs, attr); + } + return font; + } }