0077 pde
X make compatible with jikes 1.22
X   fix all warnings generated by the new jikes
X   update windows version of jikes.exe
_   update macosx version of jikes 
_     get source and build on osx (or is it shipped by default?)
_     make sure that fink is not in the path when building
_     what are the args to configure a release version?
_   update linux version of jikes

_ get an xml library in there
_   nanoxml problems with manifest
_   appears to use 1.6.8 version since it's just two classes

check these errors to see if they still exist
_ odd error in System.err stream coming from running external
_   dies after a while or goes weird
_   make sure exceptions with .class work
_ openStream returning 'null' really horked up the letters applet
_   no System.out was coming through
_   System.err was getting cut off before finishing

libraries
_ should we queue lib events until the end of loop?
_   lib could call queueEvent with the args
_   then call them inside post()
_ add prompt() method to Camera ("" means default, null is prompt)
_ add prompt() method to Serial (simple dialog box that pops up)

_ straighten out int() -> toInt() conversion in the preproc
_   add use of doubles on casting -- particularly for Math.cos() et al

_ use screen manager to run present mode properly
_   set both versions to require java 1.4
_   change the Info.plist inside macosx
_   and add something to PdeBase to make sure that it's in 1.4

_ may need a progress bar for "save as"
_   or just the file copy function in general
_   since it may take a long time (i.e. 1000s of screen grabs)

_ scanning sketchbook folder may be extremely slow 
_   not sure why this would be the case

_ subfolders in the 'data' directory don't work

_ don't allow goofy case versions of reserved words
_   keypressed should maybe throw an error

_ "save as" shouldn't show save as dialog for sketches 
_   unless that's the current mode that's being used

_ "new midlet" option.. keeping things open for midlet projects

_ track loadImage() with filenames that are inconsistent
_   i.e. mixed case filename in sketch is different in windows
_   but when uploaded to a unix server causes a serious problem
_   use canonicalPath to flag possible problems
_   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1096508877;start=5

_ mouse wheel broken in the text editor? (windows jdk 1.5?) 

_ implement horizontal version of PdeEditorButtons
_   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_Software;action=display;num=1076707944

_ transparently convert spaces to underscores (?)
_   underscoring everything is kinda nasty


......................................................................


PROBLEMS FOR NEW USERS
_ making it easier to draw shapes
_ missing semicolons - better error message
_ "unexpected token void" -> "You're mixing dynamic and static mode"
_ forgetting the quotes around strings
_ separate reference for /dev version
_ angleMode(DEGREES) -> mistyped keywords, caps being wrong


TALK TO CASEY ABOUT...
_ sketches no longer require a "data" folder
_ "draw" is not highlighted as a keyword.. other keywords?
_   draw(), PGraphics(), NO_DEPTH_TEST, PMovie(), PMovie.repeat()
_   PClient(), PClient.available(), PClient.read(), 
_   PServer(), PServer.dispose(), PServer.write(), attach(), length
_   round() is not colored
_ example that uses loop/noLoop, or redraw?
_ talk to creas about making html files for bugs, readme, revisions.
_   or how they should relate to the 'faq'.. readme -> faq? 
_ make a sketch that shows loading from the web
_ make another sketch that shows loading from a file
_ make notes about preproc
_   subclasses need to use "public void keyPressed" not "void keyPressed"
_ write a threading example
_   or handle this some more intelligent way, super.stop() is needed.
_   http://processing.org/discourse/yabb/YaBB.cgi?board=Syntax;action=display;num=1083574943
_   http://processing.org/discourse/yabb/YaBB.cgi?board=Syntax;action=display;num=1067383998
_ write an example that uses Hashtable
_ and another that uses Vector
_ need showError/Message/Warning/Prompt design from casey
_   maybe something that shows stack trace?
_   with an 'email this' button? (include source code too?)
_   also need a "prompt" dialog for asking filenames, etc
_   implement and remove PdeEditorStatus stuff
_ beginShape() defaults to beginShape(POLYGON)
_   needs to be noted for the reference
_ make a note that u/v coordinates clamp at 0 and 1

_ different name for 'lib' folder because of libraries folder?
_   avoid some confusion for when describing the libraries folder to users

_ implement new version of history
_   make history folder, and a zip (not gz) file for each entry
_   history causing trouble - super slow with a huge sketch
_     could instead be gzipped and appended to history.dat
_     along with another file that is actually a table of offsets
_     no need to make the thing a gzip stream
_     checkbox on menu for 'record history' ?
_     history converter option?
_   only first 20 entries visible?
_   zlib file becoming corrupt (not flushed after close?)
_     http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1080346981;start=0
_     http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1088333655;start=0
_   shortcut to walk through history, ala photoshop (ctrl-alt-z)


_ support for editor plugins
_   make dynamically loaded plugins and "tools" menu
_     break out beautify as its own plugin
_   make beautify plugin "Auto Format"
_     //for (int i = 0; i < 10; i++) {
_     } catch (IOException e) { }
_     http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1086555381
_     need to ignore comments.. but not those inside quotes.. oog
_     http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1067309918;start=0
_     ignores colons for case statements
_     need to tie this to the parser instead
_   do a better job of maintaining cursor during beautify 
_   only beautify a particular section of code
_     http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_Software;action=display;num=1087227217
o   make "get quicktime libs" function
o     can java get the root directory for system/win32 etc?


export stuff
_ write export-to-application
_   lock feature for present mode (part of export to application?)
_   application can still do serial (qt, other stuff?) 
_   applet runs in browser, though applet on cbagel is everything..
_   include main class info for executable jar file with jdk > 1.2
_   not difficult to do, just some tweaking once applet export works
_   wrapper that invokes the applet using a copy of the jre
_   main() method needs to set layout manager if jexegen is to be used
_     (msft vm defaults to null layout manager)
_   also make sure pack() is happening
_   add manifest.mf to exported applets so that applications will work
_     http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_Software;action=display;num=1045983103;start=0
_   BApplet.main(new String[] { "flashcards3" });
_     this will need to detect whether the user has their own main()
_     or even BApplet.main(new String[] { getClass().getName() });
_     META-INF/MANIFEST.MF contains just "Main-Class: ClassName"
_     main sticking point will be serial/qtjava in exports
_ include a note that 'applet' folder will get emptied/rewritten
_   or rename the old applet folder to something else? (nah, too messy)
_ make multiple jar files thing work as an option
_   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_Software;action=display;num=1067360903;start=0
_   applet default is one file, application default is multiple
_   user in advanced mode can switch to the other
_   buttons on side of sketch do default (last) behavior



////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////

PDE - Processing Development Environment


PDE / Details

   1 _ preferences
   1 _   make preferences a modal dialog
   1 _     it's annoying when it hides itself
   1 _   redo panel to use proper swing layout etc

   1 _ exception in setup() on external app doesn't kill run button 
   1 _   also doesn't kill external vm
   1 _ package processing.app for PdeBase, PdeEditor..

   1 _ save caret position when switching tabs
   1 _ ctrl-tab to switch between tabs
   1 _ add mnemonics for menus (alt-f to open 'file')

   b _ running present mode with a bug in the program hoses things
   b _   make sure the program compiles before starting present mode
   1 _ processing.exe: problem if expert version is run, and no java installed
   1 _   call the person a genius and tell them to install java
   1 _ make some fancy extendo things because the tabs get too big

   1 _ find/replace
   1 _   only enable "find next" in menu after a find has happened

   1 _ tie .pde files as documents of the application
   1 _   figure out proper registry key for windows
   1 _     can be handled when the app first run (jni?)
   1 _   write handler for main() to take document names
   1 _   need document icons
   1 _   add MRJOpenApplicationHandler and MRJOpenDocumentHandler
   1 _       especially the open document fella
   1 _       under osx, app won't get doc unless app already launched
   1 _   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_Software;action=display;num=1094149466

   1 _ implement page setup and print
   1 _   pretty printing of code in project
   1 _   option to just print all code in project
   1 _   option to export all the code as colored html

   1 _ p5 becomes a memory hog (benelek and glen murphy)
   1 _   even without sketches open, perhaps not gc'ing properly
   1 _   objects probably not getting finalized
   1 _   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1050134854;start=0

   1 _ size() has memory limitations (pitaru)
   1 _   catch OutOfMemoryError inside size() and let the user know
   1 _   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1038847001
   1 _ verify editor buttons working properly
   1 _   they're not.. mostly unresponsive, and often get stuck
   1 _   is play button properly unhighlighting? 
   1 _     does it unhighlight after compile or runtime errors?
   1 _     also when using draw() instead of loop()
   1 _       applet needs to notify runner that it has terminated
   1 _   if export fails (compile error) need deselect
   1 _ exceptions in draw() apps aren't caught
   1 _   the program resize(200, 200); just does nothing (doesn't complain)
   1 _ if 'void' left out before loop or setup, cryptic message about
   1 _   'constructor loop must be named Temporary_23498_2343'
   1 _   add a better handler for this specific thing?
   1 _ menu weirdness (benelek)
   1 _   when u've got a menu open, move a cursor over the text area
   1 _   and back over the menu, the text-area cursor type remains. 
   1 _   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1043667859
   1 _ scroll bar has some painting weirdness with jedit textarea
   1 _   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1042351684
   1 _   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1083787569
   1 _ rename/saveas doesn't properly have its focus set
   1 _   under windows, immediately typing after rename doesn't select
   1 _   the whole thing is selected, but not directly editable
   1 _   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_Software;action=display;num=1075149929
   1 _ Ctrl-Z will undo, but not scroll to where the undo happens. 
   1 _   so user thinks nothing is happening and overundo. 
   1 _   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1064220242;start=0
   1 _ figure out how to cancel 'save changes' on macosx and windows
   1 _   macosx handleQuit seems to force termination (at least on 1.3)
   1 _   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1064732330;start=0
   1 _ don't cache stuff from loadStrings and others
   1 _   mac java vm won't give up old version of file
   1 _   or use setUseCaches(false)
   1 _ too many frames drawn before window visible - especially on mac
   1 _ dim edit menus as appropriate during selection/no selection/etc
   1 _ switch to newer revision of jedit?
   1 _   is enormous horizontal scroller issue fixed properly
   1 _   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1083787569
   1 _ make export put a timestamp in the html code (hidden or visible)
   1 _   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_Software;action=display;num=1075659029

   1 _ drag & drop implementation to add files to sketch


PDE / Compiler

   1 _ warn about writing non-1.1 code. 
   1 X   will jikes do it if the -source is set to 1.1? nope.. 
   1 X     notes inside PdeCompiler
   1 _   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_Software;action=display;num=1079867179;start=0


BUGS / Preprocessor

   1 _ casting problems in the parser
   1 _   float u = float(x)/width; works.
   1 _   float u = (float(x)/width); doesn't work: "unexpected token: float".
   1 _   float u = (x/float(width)); works! 
   1 _   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1084011098;start=0
   1 _ if last line of code is a comment with no CR after it,
   1 _   an OutOfMemoryError wants to happen, 
   1 _   but right now there's a hack to add a CR in PdePreprocessor
   1 _ return (int(5.5)) causes an error
   1 _   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1083624993;start=0
   1 _ random, single slash in the code doesn't throw an error
   1 _   (just gets removed by the preprocessor)
   1 _   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1099371066;start=0


PDE / Font Builder

   1 _ close/hide window on 'ESC'
   1 _ loading is very slow on the first time (getting all font names)
   1 _   show a progress/status bar while it's happening?
   1 _   (would be useful to at least tell user that system not locked up)
   1 _ font builder chopping off parts of letters
   1 _   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1076358432;start=0


PDE / Features

   b _ some notion of plugins for pde
   b _   color picker or other things written by folks
   b _   add all .jar files in lib/plugins on startup
   b _ make some kind of internal color picker
   b _   could be a separate window that's always around if needed
   1 _ external editor -> add a command to launch
   1 _   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_Software;action=display;num=1043734580;start=0
     _ refresh sketchbook menu upon returning to the app from elsewhere?
     _   this would need to track whether coming just from an ext runtime


PDE / Console

   1 _ error messages run off the edge and go invisible
   1 _   actually this is just for the editor status box
   1 _   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1074894329
   1 _ multi-line errors a mess in jikes
   1 _   maybe a dropdown list thing, with the first just shown?



////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////

DISTRIBUTION

How the environment gets packed up, downloaded, and installed.


DISTRIBUTION / General 


b _ also out of cvs
b _   check for necessary tools to be installed
b _   zip, unzip, jikes, etc
b _ need to change all the copyrights over to mit "except where noted"
b _ need more comprehensive list of 'known bugs'
b _ need more comprehensive list of 'known suggestions'
b _ javadoc "advanced" reference by beta
b _   and then finalizing it towards 1.0
b _   document hint() commands for advanced reference
b _ beta release will include source code
b _ write notes about running p5 on another platforms 
b _   this was some feedback from running on bsd:
b _     /usr/local/jdk1.3.1/bin/java -cp lib:lib/build:lib/pde.jar:lib/kjc.jar:lib/oro.jar:java/lib/ext/comm.jar PdeBase 
b _   need to use the 1.3 vm, and get a fake platform name
b _   otherwise, goes looking for lib/pde_.properties or something
1 _ if size() not found in export/compile, ask the user
1 _   size(myWidth, myHeight) -> set static var in BGraphics
1 _     for the last size that was used, use as default for fill-in field
1 o modify antlr stuff to conditionally recompile in make.sh
1 _   compile antlr inside the initial setup of the work dir
1 X     done for macosx
1 _     fix this for windows and linux
1 _ about box 
1 _   bring up information about gpl, lgpl, and ibmpl
1 _   jedit syntax is under mit license
1 _     http://www.opensource.org/licenses/mit-license.php


BUGS / Windows
1 _ NullPointerException when alt is pressed
1 _   might be something to do with the applet frame being an awt not swing
1 _   event first goes to the applet listener, needs to consume the event
1 _   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1061802316;start=0
1 _   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1077058974
1 _   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1081751451;start=0
1 _ p5's exe prolly has trouble when PATH has quotes (or spaces?)
1 _   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1068388889
1 _   CLASSPATH figured out what to do with quotes, but not PATH


DISTRIBUTION / Windows
b _ properly handle non-ascii chars in p5 folder name
b _   or at least warn the user to install somehwere else
b _ track down the cause of the processing.exe not starting bugs
b _   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1062794781
b _   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1067764732
b _   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1094148057
1 _ winamp/audio getting starved or crackly while applets running
1 _   thread priority too high? or something weird
1 _ need splash screen, startup takes a long time


DISTRIBUTION / Linux
1 _ doesn't seem interested in quitting properly (?)
b _ splash screen
1 _ ctrl-t is not stopping a sketch
1 _   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1074810469


DISTRIBUTION / Mac OS X
1 _ fix find/replace focus issue on osx
1 _     give that field focus explicitly, rather than just for typing
1 _     right now, typing works, but no caret, no blue highlight
1 _     and on second find run, should instead select all the find string
1 _       so that typing will replace it directly
b _ set nice background for disk image on macosx
1 _ test more to see if runtime exceptions are coming through
1 _ track down error in PdeCompiler for message parsing
1 _   was missing the error about a package being gone
1 _   can comment out /System/Library/ as a test
1 _ Contents/Resources/Java can take jnilib files
1 _ set file type/creator for .pde files of examples
1 _ would be nice to have macosx packaged up as a single .app file
1 _ is there a way to set the color of the Frame growbox?
1 _   currently it's white instead of dark gray like the ui
1 _   setBackground(Color) didn't seem to help inside PdeBase.<init>
1 _ use disk:// notation as panther alternative
1 _   so that it doesn't download the disk, just mounts it
1 _   although.. this only works on panther.. how many are using it?
1 _ mac standard key combinations for moving around in the editor
1 _   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_Software;action=display;num=1093116515


////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////

PRIORITIES


casey
_ graphics engine up to spec
_ video/net/sound up to spec
X multiple files open 
X compile libraries within p5

ed
_ quality of compiler errors + multiple errors
X additional class files.. .java or .pde
X find/replace

juha
_ documenting how the environment works / is set up

amit
X find/replace
X println speed improvements
_ 'debug' that shows a variable (rather than many many println)
X tabs for multiple files

zach
2 _ setting breakpoints / stepping through
2 _   useful as understanding for how program works
2 _ tracing like director

schoenerwissen
2 _ tracing variables
2 _ bspace object
b X 7 day search on discourse board


////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////

FRY

My grab of examples/libraries that I'd like to make. Most of these are
things I've already written in some form or another, but need to take
the time to package up and release.

_ example showing quicksort code
_   and how to implement/use as an inner class
_ arcball
_ joystick
_ particles (from multip?)
_ phyics & collisions
_   look at the 'havoc' physics library
_ java3d classes for vec3f and matrix
_ quicktime exporter or image sequence export
_   fairly quick--just use experimental code from dbn
_ more advanced splitting of files into rows/cols uses another class
_   other class also has concept for random access of lines
_   by storing the line positions, can access without loading all
_   into memory because some files will be too large
_   read table/csv formatted data into a matrix
_     pseudo-database format version of this that stores indexes to file
_       rather than loading the whole thing at once
_ history.. add my diffs sketch (as a plug-in)
_   could just include a compiled version of the diff app, ala jikes
_ something about using regexps in p5
_   wrap up oro for simple matching
_   (as alternative to the sun classes.. link to those in the docs)
_ method for file handling, recursive walk-through a directory
_   file i/o: file listing util that leaves out . and ..

more random thoughts
_ stroke picker
_   just lineweight, so don't bother.. use constants palette instead
_ font picker
_   same thing, just quickly generates fonts on the fly and applies them
_ need to look at matlab's visualization tools
_ arcs, better 'color' object
_ take everything in perl cookbook, and make easy to do with p5
_ database access and reading large files are always hangups
_ support capabilities of matlab's visualization tools
_ charting/labeling primitives.. excel never quite does it
_ botting engine
_ difficulty of initial grab/analysis of data, that may take some time
_   then needs to be stored and run on multiple times
_ methods for picking colors.. how to color code, limit to 5? gradients..
_ simple way to do tufte-style small multiples on an app
_ function for reporting percent finished (or swing dialog)
_ also for reporting the amount of time remaining
_ loading/selecting a file (or folder), or from command line
_ load large file as lattice (option of whether to keep in memory)
_   how many rows/columns for headings
_ walking through an entire directory, with a handler
_   that throws out the . and .. items
_   that knows about aliases (jdk13)
_ overall contrast/color control (genomevalence for hulk)
_ mac -> vlw (or sbit?) font converter
_   need to also read the fond for metrics
_ general bitmap font editor, see what chars are in font, etc
