From 952031a05c1e5f60812bdfaa03185263d3e747c7 Mon Sep 17 00:00:00 2001 From: fjenett Date: Tue, 14 Jun 2011 07:46:26 +0000 Subject: [PATCH] js mode examples cleanup, automated import of included examples in getExampleCategoryFolders() --- .../mode/javascript/JavaScriptMode.java | 25 ++++++++++--- .../Input/fileReader/fileReader.pde | 23 ++++++++++++ .../Environment/Input/fileReader/reader.js | 35 +++++++++++++++++++ 3 files changed, 78 insertions(+), 5 deletions(-) create mode 100644 javascript/examples/Environment/Input/fileReader/fileReader.pde create mode 100644 javascript/examples/Environment/Input/fileReader/reader.js diff --git a/app/src/processing/mode/javascript/JavaScriptMode.java b/app/src/processing/mode/javascript/JavaScriptMode.java index e7d3f90c2..ef6351e06 100644 --- a/app/src/processing/mode/javascript/JavaScriptMode.java +++ b/app/src/processing/mode/javascript/JavaScriptMode.java @@ -92,6 +92,16 @@ public class JavaScriptMode extends Mode */ public File[] getExampleCategoryFolders() { + // find included example subdirs + File[] inclExamples = examplesFolder.listFiles(new java.io.FileFilter(){ + public boolean accept (File f) { + // only the subfolders + return f.isDirectory(); + } + }); + java.util.Arrays.sort(inclExamples); + + // add JavaMode examples as these are supposed to run in JSMode JavaMode jMode = null; for ( Mode m : base.getModeList() ) { @@ -105,16 +115,21 @@ public class JavaScriptMode extends Mode return new File[0]; File jExamples = jMode.getContentFile("examples"); - return new File[] { - new File(examplesFolder, "Environment"), - new File(examplesFolder, "HTML5"), - new File(examplesFolder, "Libraries"), - new File(examplesFolder, "Services"), + File[] jModeExamples = new File[] { new File(jExamples, "Basics"), new File(jExamples, "Topics"), new File(jExamples, "3D"), new File(jExamples, "Books") }; + + // merge them all + File[] finalExamples = new File[inclExamples.length + jModeExamples.length]; + for ( int i = 0; i < inclExamples.length; i++ ) + finalExamples[i] = inclExamples[i]; + for ( int i = 0; i < jModeExamples.length; i++ ) + finalExamples[inclExamples.length+i] = jModeExamples[i]; + + return finalExamples; } diff --git a/javascript/examples/Environment/Input/fileReader/fileReader.pde b/javascript/examples/Environment/Input/fileReader/fileReader.pde new file mode 100644 index 000000000..d94bebf60 --- /dev/null +++ b/javascript/examples/Environment/Input/fileReader/fileReader.pde @@ -0,0 +1,23 @@ +/** + *
+ * + * No Safari support. + */ + + PImage img = null; + + void setup () + { + size(300, 200); + } + + void draw () + { + background(255); + if ( img != null ) image(img, 0,0, width,height); + } + + void newImageAvailable ( Image i ) + { + img = new PImage( i ); + } diff --git a/javascript/examples/Environment/Input/fileReader/reader.js b/javascript/examples/Environment/Input/fileReader/reader.js new file mode 100644 index 000000000..601a6c598 --- /dev/null +++ b/javascript/examples/Environment/Input/fileReader/reader.js @@ -0,0 +1,35 @@ + +window.onload = function () { + tryFindSketch(); +} + +function tryFindSketch() { + var sketch = Processing.instances[0]; + if ( sketch == undefined ) + return setTimeout(tryFindSketch, 200); // retry soon + + sketch.console = console; + initUploader(sketch); +} + +function initUploader ( sketch ) { + var uploadField = document.getElementById("file-input"); + + uploadField.onchange = function (e) { + e.preventDefault(); + + var file = uploadField.files[0]; + var reader = new FileReader(); + + reader.onload = function (event) { + var img = new Image(); + img.onload = function (event2) { + sketch.newImageAvailable(img); + } + img.src = event.target.result; + }; + reader.readAsDataURL(file); + + return false; + } +}