+ * This class does not use the Properties class because .properties files use + * ISO 8859-1 encoding, which is highly likely to be a problem when trying to + * save sketch folders and locations. Like the rest of Processing, we use UTF8. + *
+ * We don't use the Java Preferences API because it would entail writing to
+ * the registry (on Windows), or an obscure file location (on Mac OS X) and
+ * make it far more difficult (impossible) to remove the preferences.txt to
+ * reset them (when they become corrupt), or to find the the file to make
+ * edits for numerous obscure preferences that are not part of the preferences
+ * window. If we added a generic editor (e.g. about:config in Mozilla) for
+ * such things, we could start using the Java Preferences API. But wow, that
+ * sounds like a lot of work. Not unlike writing this paragraph.
+ */
+public class Preferences {
+ static public String get(String attribute /*, String defaultValue */) {
+ try {
+ var settingsFile = Base.getSettingsFile("preferences.txt");
+ var reader = new BufferedReader(new FileReader(settingsFile));
+
+ var settings = new Properties();
+ settings.load(reader);
+ reader.close();
+
+ return settings.getProperty(attribute);
+ }catch (Exception e) {
+ return null;
+ }
+ }
+ static public boolean getBoolean(String attribute) {
+ String value = get(attribute); //, null);
+ return Boolean.parseBoolean(value);
+ }
+ static public int getInteger(String attribute /*, int defaultValue*/) {
+ return Integer.parseInt(get(attribute));
+ }
+}
diff --git a/java/processing4-java.iml b/java/processing4-java.iml
deleted file mode 100644
index 953c28d4d5..0000000000
--- a/java/processing4-java.iml
+++ /dev/null
@@ -1,201 +0,0 @@
-
-
+ * This function must be static to be used with super() + * in each of the constructors above. + */ + /* + static public final String massage(String msg) { + if (msg.indexOf("java.lang.") == 0) { + //int dot = msg.lastIndexOf('.'); + msg = msg.substring("java.lang.".length()); + } + return msg; + //return (dot == -1) ? msg : msg.substring(dot+1); + } + */ + + + public void printStackTrace() { + if (showStackTrace) { + super.printStackTrace(); + } + } +} diff --git a/java/src/processing/mode/java/SourceUtil.java b/java/src/processing/mode/java/preproc/SourceUtil.java similarity index 99% rename from java/src/processing/mode/java/SourceUtil.java rename to java/src/processing/mode/java/preproc/SourceUtil.java index bd464b8696..015529616b 100644 --- a/java/src/processing/mode/java/SourceUtil.java +++ b/java/src/processing/mode/java/preproc/SourceUtil.java @@ -1,4 +1,4 @@ -package processing.mode.java; +package processing.mode.java.preproc; import org.eclipse.jdt.core.dom.ASTVisitor; import org.eclipse.jdt.core.dom.CompilationUnit; @@ -12,7 +12,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; -import processing.mode.java.TextTransform.Edit; +import processing.mode.java.preproc.TextTransform.Edit; public class SourceUtil { diff --git a/java/src/processing/mode/java/TextTransform.java b/java/src/processing/mode/java/preproc/TextTransform.java similarity index 98% rename from java/src/processing/mode/java/TextTransform.java rename to java/src/processing/mode/java/preproc/TextTransform.java index 8861adbb41..77ae022f19 100644 --- a/java/src/processing/mode/java/TextTransform.java +++ b/java/src/processing/mode/java/preproc/TextTransform.java @@ -1,4 +1,4 @@ -package processing.mode.java; +package processing.mode.java.preproc; import java.util.ArrayList; import java.util.Collection; @@ -31,7 +31,7 @@ public class TextTransform { private int builtForLength; - TextTransform(CharSequence input) { + public TextTransform(CharSequence input) { this.input = input; } @@ -213,7 +213,7 @@ public String toString() { } - protected interface OffsetMapper { + public interface OffsetMapper { int getInputOffset(int outputOffset); int getOutputOffset(int inputOffset); OffsetMapper thenMapping(OffsetMapper mapper); diff --git a/java/src/processing/mode/java/runner/Runner.java b/java/src/processing/mode/java/runner/Runner.java index 4586b4480b..0e29e18a12 100644 --- a/java/src/processing/mode/java/runner/Runner.java +++ b/java/src/processing/mode/java/runner/Runner.java @@ -32,7 +32,6 @@ import java.awt.GraphicsDevice; import java.awt.GraphicsEnvironment; import java.awt.Point; -import java.awt.Toolkit; import java.io.*; import java.net.ConnectException; import java.net.InetAddress; @@ -44,6 +43,7 @@ import com.sun.jdi.connect.Connector.Argument; import com.sun.jdi.event.*; import com.sun.jdi.request.*; +import processing.mode.java.preproc.SketchException; /** diff --git a/java/test/processing/mode/java/CachedRuntimePathFactoryTest.java b/java/test/processing/mode/java/CachedRuntimePathFactoryTest.java index fdf42e5419..33d9bfcf83 100644 --- a/java/test/processing/mode/java/CachedRuntimePathFactoryTest.java +++ b/java/test/processing/mode/java/CachedRuntimePathFactoryTest.java @@ -23,6 +23,7 @@ import org.junit.Before; import org.junit.Test; import processing.app.Sketch; +import processing.mode.java.preproc.ImportStatement; import java.util.ArrayList; import java.util.List; diff --git a/java/test/processing/mode/java/CodeFolderRuntimePathFactoryTest.java b/java/test/processing/mode/java/CodeFolderRuntimePathFactoryTest.java index 95b0c90f42..8cdeed6b14 100644 --- a/java/test/processing/mode/java/CodeFolderRuntimePathFactoryTest.java +++ b/java/test/processing/mode/java/CodeFolderRuntimePathFactoryTest.java @@ -23,6 +23,7 @@ import org.junit.Before; import org.junit.Test; import processing.app.Sketch; +import processing.mode.java.preproc.ImportStatement; import java.io.File; import java.util.List; diff --git a/java/test/processing/mode/java/CoreLibraryRuntimePathFactoryTest.java b/java/test/processing/mode/java/CoreLibraryRuntimePathFactoryTest.java index 9f9b608e3d..939e0117c9 100644 --- a/java/test/processing/mode/java/CoreLibraryRuntimePathFactoryTest.java +++ b/java/test/processing/mode/java/CoreLibraryRuntimePathFactoryTest.java @@ -23,6 +23,7 @@ import org.junit.Before; import org.junit.Test; import processing.app.Sketch; +import processing.mode.java.preproc.ImportStatement; import java.util.List; diff --git a/java/test/processing/mode/java/ImportStatementTest.java b/java/test/processing/mode/java/ImportStatementTest.java index a4a3dd97ff..14bf310c9a 100644 --- a/java/test/processing/mode/java/ImportStatementTest.java +++ b/java/test/processing/mode/java/ImportStatementTest.java @@ -3,6 +3,7 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import processing.mode.java.preproc.ImportStatement; public class ImportStatementTest { diff --git a/java/test/processing/mode/java/JavaFxRuntimePathFactoryTest.java b/java/test/processing/mode/java/JavaFxRuntimePathFactoryTest.java index b61889cd66..c4c67e973f 100644 --- a/java/test/processing/mode/java/JavaFxRuntimePathFactoryTest.java +++ b/java/test/processing/mode/java/JavaFxRuntimePathFactoryTest.java @@ -23,6 +23,7 @@ import org.junit.Before; import org.junit.Test; import processing.app.Sketch; +import processing.mode.java.preproc.ImportStatement; import java.util.List; diff --git a/java/test/processing/mode/java/JavaRuntimePathFactoryTest.java b/java/test/processing/mode/java/JavaRuntimePathFactoryTest.java index ae67422278..637f058d89 100644 --- a/java/test/processing/mode/java/JavaRuntimePathFactoryTest.java +++ b/java/test/processing/mode/java/JavaRuntimePathFactoryTest.java @@ -23,6 +23,7 @@ import org.junit.Before; import org.junit.Test; import processing.app.Sketch; +import processing.mode.java.preproc.ImportStatement; import java.util.List; diff --git a/java/test/processing/mode/java/LibrarySearchRuntimePathFactoryTest.java b/java/test/processing/mode/java/LibrarySearchRuntimePathFactoryTest.java index ed7210fd47..92a516fc37 100644 --- a/java/test/processing/mode/java/LibrarySearchRuntimePathFactoryTest.java +++ b/java/test/processing/mode/java/LibrarySearchRuntimePathFactoryTest.java @@ -23,6 +23,7 @@ import org.junit.Before; import org.junit.Test; import processing.app.Sketch; +import processing.mode.java.preproc.ImportStatement; import java.util.List; diff --git a/java/test/processing/mode/java/LibrarySketchRuntimePathFactoryTest.java b/java/test/processing/mode/java/LibrarySketchRuntimePathFactoryTest.java index c9df2b28cd..a65e5de1c8 100644 --- a/java/test/processing/mode/java/LibrarySketchRuntimePathFactoryTest.java +++ b/java/test/processing/mode/java/LibrarySketchRuntimePathFactoryTest.java @@ -23,6 +23,7 @@ import org.junit.Before; import org.junit.Test; import processing.app.Sketch; +import processing.mode.java.preproc.ImportStatement; import java.util.List; diff --git a/java/test/processing/mode/java/ModeSearchRuntimePathFactoryTest.java b/java/test/processing/mode/java/ModeSearchRuntimePathFactoryTest.java index 16ff85b858..6576a3e453 100644 --- a/java/test/processing/mode/java/ModeSearchRuntimePathFactoryTest.java +++ b/java/test/processing/mode/java/ModeSearchRuntimePathFactoryTest.java @@ -23,6 +23,7 @@ import org.junit.Before; import org.junit.Test; import processing.app.Sketch; +import processing.mode.java.preproc.ImportStatement; import java.util.List; diff --git a/java/test/processing/mode/java/ModeSketchRuntimePathFactoryTest.java b/java/test/processing/mode/java/ModeSketchRuntimePathFactoryTest.java index 5081311bfd..c41408637e 100644 --- a/java/test/processing/mode/java/ModeSketchRuntimePathFactoryTest.java +++ b/java/test/processing/mode/java/ModeSketchRuntimePathFactoryTest.java @@ -23,6 +23,7 @@ import org.junit.Before; import org.junit.Test; import processing.app.Sketch; +import processing.mode.java.preproc.ImportStatement; import java.util.List; diff --git a/java/test/processing/mode/java/ParserTests.java b/java/test/processing/mode/java/ParserTests.java index 040600228c..c4717a7959 100644 --- a/java/test/processing/mode/java/ParserTests.java +++ b/java/test/processing/mode/java/ParserTests.java @@ -15,9 +15,9 @@ import org.junit.Test; import processing.app.Preferences; -import processing.app.SketchException; import processing.mode.java.preproc.PreprocessorResult; import processing.mode.java.preproc.PdePreprocessIssueException; +import processing.mode.java.preproc.SketchException; public class ParserTests { @@ -460,6 +460,7 @@ public void testMultilineStringClass() { @Test public void testMultiMultilineString() { + // TODO: Add support for fullscreen. Not through settings. In PdeParseTreeListener.java Preferences.setBoolean("export.application.fullscreen", true); expectGood("fullscreen_export"); } diff --git a/java/test/processing/mode/java/ProcessingTestUtil.java b/java/test/processing/mode/java/ProcessingTestUtil.java index 40c7dde341..40f42d5575 100644 --- a/java/test/processing/mode/java/ProcessingTestUtil.java +++ b/java/test/processing/mode/java/ProcessingTestUtil.java @@ -7,10 +7,10 @@ import java.util.Optional; import processing.app.Preferences; -import processing.app.SketchException; import processing.mode.java.preproc.PdePreprocessor; import processing.mode.java.preproc.PreprocessorResult; import processing.mode.java.preproc.PdePreprocessIssueException; +import processing.mode.java.preproc.SketchException; public class ProcessingTestUtil { diff --git a/java/test/processing/mode/java/RuntimePathBuilderTest.java b/java/test/processing/mode/java/RuntimePathBuilderTest.java index 96063a1878..6f0c1856a0 100644 --- a/java/test/processing/mode/java/RuntimePathBuilderTest.java +++ b/java/test/processing/mode/java/RuntimePathBuilderTest.java @@ -23,6 +23,8 @@ import org.junit.Before; import org.junit.Test; import processing.app.Sketch; +import processing.mode.java.preproc.ImportStatement; + import java.io.File; import java.util.Arrays; diff --git a/java/test/processing/mode/java/RuntimePathFactoryTestUtil.java b/java/test/processing/mode/java/RuntimePathFactoryTestUtil.java index 1303a02a3b..665f9761d5 100644 --- a/java/test/processing/mode/java/RuntimePathFactoryTestUtil.java +++ b/java/test/processing/mode/java/RuntimePathFactoryTestUtil.java @@ -24,6 +24,7 @@ import processing.app.Library; import processing.app.Sketch; import processing.app.SketchException; +import processing.mode.java.preproc.ImportStatement; import java.io.File; import java.io.IOException; diff --git a/java/test/processing/mode/java/SourceUtilTest.java b/java/test/processing/mode/java/SourceUtilTest.java index 53a57de1f5..ac333829b9 100644 --- a/java/test/processing/mode/java/SourceUtilTest.java +++ b/java/test/processing/mode/java/SourceUtilTest.java @@ -2,6 +2,7 @@ import org.junit.Assert; import org.junit.Test; +import processing.mode.java.preproc.SourceUtil; public class SourceUtilTest { diff --git a/java/test/processing/mode/java/preproc/PrintWriterWithEditGenTest.java b/java/test/processing/mode/java/preproc/PrintWriterWithEditGenTest.java index c29e6b6065..0306359a3c 100644 --- a/java/test/processing/mode/java/preproc/PrintWriterWithEditGenTest.java +++ b/java/test/processing/mode/java/preproc/PrintWriterWithEditGenTest.java @@ -5,8 +5,6 @@ import org.junit.Before; import org.junit.Test; import org.mockito.Mockito; -import processing.mode.java.TextTransform; - import java.util.List; import static org.junit.Assert.*; diff --git a/settings.gradle.kts b/settings.gradle.kts index 4f5525784b..4bdcd880e8 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,8 +1,14 @@ rootProject.name = "processing" -include("core", "core:different") - -buildscript { - repositories { - mavenCentral() - } -} \ No newline at end of file +include( + "core", + "core:examples", + "app", + "java", + "java:preprocessor", + "java:libraries:dxf", + "java:libraries:io", + "java:libraries:net", + "java:libraries:pdf", + "java:libraries:serial", + "java:libraries:svg", +) \ No newline at end of file