[Initial commit (fenfire@fenfire.org--2004a/libvob--darcs-import--0.1) **20041125164113] [rename fields in Box and javadoc some of them in the hope to make the code more comprehensible Benja Fallenstein **20041126012717] [remove unused variable Benja Fallenstein **20041126012758] [refactor: remove (float x, float y) parameters from Lob.render -- the parent can create a translated coordsys to specify the x/y Benja Fallenstein **20041126022111] [new primitive lob to tile another lob; use to show stipple in window (dialog box) titles Benja Fallenstein **20041126134043] [Theme improvements Benja Fallenstein **20041126135534] [good riddance Benja Fallenstein **20041126163934] [steps towards a slightly new interpolation system, where cs without keys are shown during interpolation Benja Fallenstein **20041126221611] [add scaling lob Benja Fallenstein **20041126224416] [treat height<0 as height==0 in ScalableFont Benja Fallenstein **20041126224455] [mostly fix new interpolation system; w and h aren't interpolated yet Benja Fallenstein **20041126230007] [finish the new interpolation system Benja Fallenstein **20041127000755] [more fixes for new interpolation system Benja Fallenstein **20041127023548] [make StringTextModel not use a key by default (this means that text with no specified key will be 'shown during interpolation' and not matched against anything in the other vobscene) Benja Fallenstein **20041127025553] [more consistency in the keying of themed components: handle Window and ThemeFrame like the other components; if no key is specified, do not put the component's cs into the vobmatcher (make it 'shown during interpolation' and not matched against anything in the target scene) Benja Fallenstein **20041127030024] [make use of new interpolation system for clipping (do not put clipping cs in matcher if no explicit key is specified) Benja Fallenstein **20041127143752] [Make LobFont size specifiable by size in pixels instead of points, since the same point size can produce quite different text sizes with different fonts and AWT implementations; make most places not declare their own LobFonts, instead using the ones from Theme Benja Fallenstein **20041127145604] [work around a bug in Classpath AWT (apparently), where mouse events get button '0' instead of 1 Benja Fallenstein **20041127145846] [twiddle with clip interpolation Benja Fallenstein **20041127145955] [fix stupid scrolling bug Benja Fallenstein **20041204213033] [little fix Benja Fallenstein **20041205020445] [speed fix Benja Fallenstein **20041205180639] [CollectionModel.containsModel(m) creates a boolean model that says whether m is in the collection Benja Fallenstein **20041205235607] [speed fix again... Benja Fallenstein **20041206000153] [revamp FunctionModel Benja Fallenstein **20041206021411] [make interruptEventloop(), called by addTask(), actually interrupt the waiting for events on AWT so that background tasks can get processed Benja Fallenstein **20041206213657] [create SequenceModel.Concat and TextModel.Concat, for creating bigger texts out of smaller ones Benja Fallenstein **20041207053036] [support for textual lists, for fenfeed (to show different dc:subjects etc) Benja Fallenstein **20041208202803 - ListModel.Join, to achieve similar effects as string.join() (though it's not exactly the same; Join([1,2,3],X) = [1,X,2,X,3]) - Make Models able to create adapters with only a get() and no set() method - when cloning TextModels, remember whether to include a line end lob at the end of the text ] [Refactor: start work on easier convention for lob constructors Benja Fallenstein **20041209035806 This is kind of an ugly implementation of Python's keyword arguments in pure Java. For example, a listbox can be created like this: ListBox noteList = new ListBox(rlob.listModel(notes, dateCmp), "template", rlob.label("*", TITLE), "key", "NOTES"); which means it has a named parameter "template" with value (rlob.label("*", TITLE)), and a named parameter "key" with value "NOTES". ] [use a setter-based approach rather than a keyword-based approach for component parameter setting Benja Fallenstein **20041209113814 After experience with my earlier patch providing syntactic sugar for lob construction, I decided the approach I took there doesn't work that well with Java. I decided to use a more classical approach with setter methods (i.e., construct the object, then object.setXYZ()). In addition, I came up with a little code convention for syntactically grouping the code that sets up one component. Example: ListBox noteList = new ListBox(rlob.listModel(notes, dateCmp); { noteList.setTemplate(rlob.label("*", TITLE)); noteList.setKey("NOTES"); } Note that this merely starts a new Java block after the end of the "ListBox ... = ...;" instruction. ] [add c++-generated files to darcs to make compiling easier (i.e., make possible to compile java w/o compiling c++) Benja Fallenstein **20041209132544] [more refactoring for fenfeed Benja Fallenstein **20041209134529] [fix for ArrayOutOfBounds occuring sometimes when a cs is last in chain Benja Fallenstein **20041210023901 Spotter: Tuukka Hastrup 21:17 < tuukkah> not at least easily reproducible: write something in fiction, click a button, get an exception at DefaultVobMap.java:420 21:32 < tuukkah> doesn't that mean that there was some textChar[ics] for which there was not nextInChain[ics]. a wild guess would be to move the test textChar[ics] > 0 to the beginning of the loop 04:31 < benja> oh, I haven't seen the nextInChain one 04:35 < benja> tuukkah: I'm adding 'if(ics or hmm 04:36 < benja> yes 04:37 < benja> nextInChain is only expanded when you call chain(cs1, cs2) with cs1 >= nextInChain.length 04:37 < benja> however, in this case, ics is the *last* cs in the chain 04:37 < benja> so chain(ics, *) never gets called 04:38 < benja> but it has to be 'if(ics>=nextInChain.length) break' 04:38 < benja> since if it is larger or equal, we know that chain(ics, *) has never been called, thus ics doesn't have a successor in the chain (i.e., tuukkah was right that this means there's no nextInChain[ics], but the correct fix was different) ] [README fixes; bug spotter: ibid Benja Fallenstein **20041210111035] [Simplify how CLASSPATH is set; remove collections-kaffe which we don't depend on any longer (it was a copy of Kaffe's collections implementation to allow us to run on 1.1 Javas) Benja Fallenstein **20041210120308] [scrollbar fixes Benja Fallenstein **20041210155700] [hacked in ViewportLob.getVisibleFraction for scrollbar knob size Tuukka Hastrup **20041213012624] [implemented scrollbar knob sizing as knobFractionModel Tuukka Hastrup **20041213012826] [made the ListBox in default theme use scrollbar knob sizing Tuukka Hastrup **20041213013014] [Small twids to Tuukka's patch Benja Fallenstein **20041214083117] [Fix my bad (and a little Tuukka's ;-)); make TextComponents use Tuukka's knob size code Benja Fallenstein **20041214091447] [small fix -- the min size of the knob should show it as rectangular Benja Fallenstein **20041214111455] [on window close, LobBinder calls System.exit(0) Tuukka Hastrup **20041215002618] [Scrollbar cleanup Tuukka Hastrup **20041218221326] [reordered helper functions Tuukka Hastrup **20041218223833] [limited knobsize below 1, documented parameter models Tuukka Hastrup **20041219173252] [scrollbar knob position follows scrolling, not selection Tuukka Hastrup **20041219173921] [implemented Benja's setMinKnobSize Tuukka Hastrup **20041219192056] [changed knob default min size to 10, constant size to 15 Tuukka Hastrup **20041219202948] [implemented WatcherLobs for size, put in use in text scrolling Tuukka Hastrup **20041220100121] [Fix missing brackets in Makefile Matti J. Katila **20050104151229 The local variable CLASSPATH was in use like $CLASSPATH in the Makefile. This isn't the correct way to use variables since it means same as $(C)LASSPATH, i.e. only the first letter was used. The proper way to use variable is to use braces or brackets, i.e $(CLASSPATH) or ${CLASSPATH}. Thank you Tuukka Hastrup for correction. http://www.gnu.org/software/make/manual/html_node/make_62.html#SEC66 ] [fixes to Stamp Benja Fallenstein **20050122180006] [work towards new view system Benja Fallenstein **20050203185304] [more work towards new view system with changeable views Benja Fallenstein **20050204002247] [Fix OpenGL interpolation bug found in fentwine (was loom) Matti J. Katila **20050204224307] [Fix Vect.neg and copy awt buoyOnCircle from C++ src. Matti J. Katila **20050207222421] [Add demo to test buoy cs. Matti J. Katila **20050207223258] [Implement between and translate polar coords. Matti J. Katila **20050208074644] [Add between demo Matti J. Katila **20050208091135] [AWT implementation of unitSq; VobCoorder.center() gives a cs at the center of the unit square; bug fixes Benja Fallenstein **20050208115926] [Get rid of viewState -- serves no functionnow Benja Fallenstein **20050208232134] [Start framework for fading colors into the background in AWT (i.e., GL's fog). For now, did the simplest thing that could possibly work -- have only one global fog setting for a whole VobScene -- because doing it 'right' would have been so much harder right now. Benja Fallenstein **20050209024402] [add buoyOnCircle2 to VobCoorder Benja Fallenstein **20050209181448] [general implementation of inverse transformation in AWTVobCoorder(Base) Benja Fallenstein **20050210115956] [fixes to depth fading Benja Fallenstein **20050210120119] [fixes to AWT impl of buoy-on-circle-cs Benja Fallenstein **20050210120215] [buoy cs speed improvements (do not create objects all the time!) Benja Fallenstein **20050211130032] [squash more speed bugs Benja Fallenstein **20050211140026] [work towards new architecture inside AWTVobCoorder, where for each interpolation frame we generate the coordinates for each cs only once, rather than re-generating it again and again for each child of the cs. not yet used, this is an intermediary commit Benja Fallenstein **20050212215100] [more work on new awtvobcoorder code -- the speed has increased but there are very funny-looking bugs ;-) Benja Fallenstein **20050212225655] [make the new awtvobcoorder code work, though not entirely beautifully and still with room for more optimization ;-) (it's already a lot better, though) Benja Fallenstein **20050213110352] [fix bugs in the new awtvobcoorder code Benja Fallenstein **20050213121354] [add parseFloat model to Models Benja Fallenstein **20050214094920] [Fix interpolating on keystroke if already animating. Matti J. Katila **20050214162224] [when a cs is SHOW_IN_INTERP, but one of its ancestors is DONT_INTERP, do not show the cs when interpolating Benja Fallenstein **20050215141039] [clean up a little Benja Fallenstein **20050215141205] [fix interpolation bug Benja Fallenstein **20050215152614] [fix Benja Fallenstein **20050215165006] [compare the parents' scale and use the smaller one in between cs Benja Fallenstein **20050215173359] [make buoyOnCircle2 use the new AWTVobCoorder code too (i.e. the Coordinates system) instead of some strange hybrid with doTransformRect Benja Fallenstein **20050216143806] [get rid of the old transformRect stuff in AWTVobCoorderBase Benja Fallenstein **20050216144826] [increase Trans.cs stack size Benja Fallenstein **20050216152931] [make ViewportLob more powerful by allowing to set an alignment for the content inside the visible area if the latter is bigger than the former Benja Fallenstein **20050216183056] [when dragging, pass along the position of the original click in mouse(); use that to determine which lob to dispatch the event to Benja Fallenstein **20050216201141] [fix for bug found by matti Benja Fallenstein **20050218114003] [Make the recursive vs tests pass again, except for one which fails exactly the same way when programmed without any recursive vs stuff (hmmm...). Wasn't trivial, but not really hard either =) Benja Fallenstein **20050218172240] [various fixes: hw<->sxsw, concatInverse, TranslationLob and RectBg Matti J. Katila **20050219151156] [Fix concat inverse Matti J. Katila **20050219152637] [speed fix; text was rendered character-by-character if the characters were SHOW_IN_INTERP Benja Fallenstein **20050219133910] [in TranslationLob and PanZoomLob, do not change the VobScene if it has been clear()ed since the last Lob.render() call. Benja Fallenstein **20050221180307] [better list of dependencies Benja Fallenstein **20050221212501] [invalidate AWTVobCoorder's coordinates cache when the parameters of a coordinate system are changed Benja Fallenstein **20050221212513] [if Lob.mouse() sets RERENDER, don't change that to ANIMATE in LobMain.mouse() Benja Fallenstein **20050221212755] [some dbg printouts Benja Fallenstein **20050221223507] [fix interpolation Benja Fallenstein **20050223230926] [fix w/h interpolation when SHOW_IN_INTERP is used Benja Fallenstein **20050224231123] [twids for make text editing in Fenfire work using lobs Benja Fallenstein **20050225171929 - make TextEditController accept Alt-(Left, Right, Up, Down) as well as (Left, Right, Up, Down) -- FentwineKeyController catches plain cursor keys for moving in the structure - make ViewportLob align properly, so that when the text doesn't fill up the node, it's centered - make TextCursorLob not show a text cursor when the cursor position is < 0 (indicator that there's no text cursor for this node) ] [Add Difference set model which gives the set difference A\B for collections A, B. Benja Fallenstein **20050225184452] [allow PanZoomLob to be used in a way that only cares about floats, not Models Benja Fallenstein **20050225210514] [small fixes Benja Fallenstein **20050225220807] [add 'not()' model (i.e., a model that negates a bool model) Benja Fallenstein **20050225223853] [set model additions Benja Fallenstein **20050225223926] [make the boxes in a CheckBox not grow when the CheckBox is stretched :-) Benja Fallenstein **20050225223946] [in ModelLob, do delegate.addObs(this) Benja Fallenstein **20050226004818] [a variation of VisibilityLob which changes the size request to zero when the content isn't visible Benja Fallenstein **20050226004856] [make Models.parseFloat() more robust: when the string is null or "", return zero Benja Fallenstein **20050226014915] [twids Benja Fallenstein **20050226150517] [use correct height when using AWT lob text rendering Benja Fallenstein **20050226150622] [remember the last size in ModelLob; when the delegate changes, do newDelegate.setSize() Benja Fallenstein **20050226152523] [Stamp fixes Benja Fallenstein **20050226155249] [handle Alt-Up / Alt-Down when no text cursor is set Benja Fallenstein **20050226171913] [add safeguard Benja Fallenstein **20050227155611] [speed fix, small but does a lot. profiling good ;-) Benja Fallenstein **20050228132329] [small speed fix: don't "render" text outside the clip rectangle (i.e., don't call Graphics.drawChars(...) for them) Benja Fallenstein **20050228173902] [speed fix: LobFont character lobs are immutable and shared between many parents, they're not supposed to register their parents as Obs... Benja Fallenstein **20050228174012] [small speed fix: depth sort only after the coorder has changed Benja Fallenstein **20050228174123] [Add a simple scheduler for a key and priority. Matti J. Katila **20050305223120] [remove original impl of lob ideas (not the current implementation, the on in lava/) Benja Fallenstein **20050306182234] [start work on interfaces for the new lob system Benja Fallenstein **20050306204329] [More work on new lob system: TableLob, the first and second-most-interesting lob Benja Fallenstein **20050306230533 TableLob layouts other lobs in a table. HBox and VBox are instances of this: they're simply tables with only one row/column. This contains the layout code from the old Box. (It's also shorter, but it doesn't implement key()/mouse() yet.) TableLob isn't yet cached by Javolution; that's the next thing to work on... ] [Javolution caching -- as far as I understand it so far :-) Benja Fallenstein **20050307002028] [ARGH, make compile Benja Fallenstein **20050307160014] [tool for resolving qnames to URIs with the namespaces specified in Java code Benja Fallenstein **20050308192907] [start work on linebreaker -- the actual linebreaking code isn't there yet Benja Fallenstein **20050308193000] [move vobs.lava to basalt/ -- there are similar files in vobs/ and the vobs.lava/ versions are unused apparently Benja Fallenstein **20050308222718] [add VobLob in new vob system -- and first demo showing anything on the screen :-) Benja Fallenstein **20050308222952] [try out table lob (needed only very small fix, but vob allocation with Javolution needs work) Benja Fallenstein **20050308224605] [until Javolution allocation of vobs is fixed, make Lobs.java create new vobs Benja Fallenstein **20050308224942] [fix Javolution caching for vobs: use Javolution reference counter Benja Fallenstein **20050309003436 When a vob is put into a VobMap, increase that vob's reference counter; when the vob map is cleared, decrease the reference counter. It can then be re-used. Also fix a bug in TableLob, where a Layout object created in a pool context was referenced after the pool context was exited (i.e., when the object was allowed to be recycled). ] [start porting lobs Benja Fallenstein **20050309024831] [more porting work, mostly LobFont, i.e. text rendering Benja Fallenstein **20050309234219] [add missing piece to render non-linebroken text; add Hello World to lobdemo :) Benja Fallenstein **20050309235908] [static methods in Lobs to construct common lobs Benja Fallenstein **20050310010630] [get rid of the Lob/Layout separation -- it made coding more difficult, as many lobs are wrappers that work the same before and after layouting Benja Fallenstein **20050310021352] [and now the most interesting lob ... except that it isn't a lob yet but only a function that will be used in creating the lob: Linebreaker Benja Fallenstein **20050310040746] [fix Benja Fallenstein **20050310152054] [don't remove generated java files in 'make clean', they're in the repository Benja Fallenstein **20050311200438] [fix linebreaking in new lob system (respect preBreakLob/postBreakLob) Benja Fallenstein **20050316014245] [add Lob.getInterface(Class), which goes through the hierarchy of wrapper lobs, looking for one that implements the given interface (see javadoc). Benja Fallenstein **20050316020114] [text editing keys in lobdemo Benja Fallenstein **20050318175009] [more text editing and more lobs Benja Fallenstein **20050318192543] [little test for interpolation: whenever pressing a key, move a line (should animate) Benja Fallenstein **20050318195223] [in lobdemo.Scene.scene(), return the VobScene object we created Benja Fallenstein **20050318202031] [ok, make animate Benja Fallenstein **20050318203350] [simplistic text cursor in lobdemo; comment out debug aid that animated a line on each key press Benja Fallenstein **20050320153733] [simpler and nicer implementation of text cursor, using the box size Benja Fallenstein **20050320154821] [argl, revert accidental delete Benja Fallenstein **20050320155853] [Good architecture for text cursor lob. Benja Fallenstein **20050320161115 This patch introduces a new lob, DecoratorLob. This lob takes a child lob, a "decoration lob," and a key. It first renders its child, then searches the vobscene for a cs placed by its child with the given key; then it renders the decoration into that cs. For the text cursor, we decorate the cs of the character following the cursor with a line on the left side. Unfortunately the decorator has to use getSqSize to be able to layout the decoration, which is slow on GL. Ideas appreciated. ] [s/Lob.getInterface/Lob.getImplementation/ Benja Fallenstein **20050320164107] [move text edit key handling to Java Benja Fallenstein **20050320185938] [make linebreaker use layoutOneAxis as intended (see Lob.layoutOneAxis javadoc) Benja Fallenstein **20050320201338] [implement Tray; refactor demo to create only one lob and render that full screen Benja Fallenstein **20050321004132] [java-ize demo -- gives huge performance boost, python was called in some inner loop =) Benja Fallenstein **20050321010713] [In TextKeyController, use WindowAnimation for right animation behavior. Benja Fallenstein **20050321015302 (We want to animate when changing the cursor position, but switchVS when typing.) Instead of passing the TextKeyController's constructor a WindowAnimation object, as we would have had to do in the old lob system, we use Javolution's LocalContext facility. This allows us to create a "thread-local" variable-- like PoolContext.enter(); LocalContext.enter(); try { Lobs.setWindowAnimation(windowAnim); if (initialized && createLob().key(key)) { if(!windowAnim.hasSceneReplacementPending()) windowAnim.animate(); } } finally { LocalContext.exit(); PoolContext.exit(); } which sets the WindowAnimation only for this block (and only on the current thread). ] [more work on new lobs -- a listBox component, default parameters for components, etc. Benja Fallenstein **20050321153001] [A code preprocessor to make Javolution programming a bit easier. Benja Fallenstein **20050321171001 With Javolution, a simple inner class like new LobList() { public int getLobCount() { list.getLobCount(); } public Lob getLob(int index) { return KeyLob.newInstance(list.getLob(index)); } } becomes a really long and complex thing, see KeyLobList for how the above then looks. I found this too hard in practice, so with this new preprocessor, this becomes new @realtime LobList(LobList list) { public int getLobCount() { list.getLobCount(); } public Lob getLob(int index) { return KeyLob.newInstance(list.getLob(index)); } } The preprocessor will create an inner class and create a Javolution FACTORY for that class etc. The thing after @realtime must be an interface, not a class (for now). We can not access final members of the enclosing method from the inner class, though, that was too hard to program, that's why we explicitly have to say (LobList list) in the 'new @realtime' clause. ] [doc Benja Fallenstein **20050321171535] [use preprocessor a bit -- it does make the code much simpler... Benja Fallenstein **20050322161532] [mouse events going through (can now select item in listbox with mouse) Benja Fallenstein **20050323014946] [use java.util.List instead of the LobList interface Benja Fallenstein **20050323202539] [simplify code Benja Fallenstein **20050323213003 Instead of having own classes for *LobList implementations, move them to static methods in a 'Lists' helper class; using the Javolution preprocessor, that's also very much more concise than the classes. ] [make Notebook demo use new lob system (not entirely complete yet) Benja Fallenstein **20050323234330] [Make event handling code less error-prone Benja Fallenstein **20050324001519 By removing the default implementations of key() and mouse() from AbstractLob, make sure that omissions in subclasses are caught easily and don't turn into silent errors that are really hard to track down. ] [Add primitive focus handling; add abstract implementation of sequence lobs Benja Fallenstein **20050324012102 Sequence lobs are lobs that take a List of other lobs -- hbox, vbox, Tray, LinebreakerLob. AbstractSequence contains some methods these lobs have in common. The focus handling is currently all done in NewLobMain, is quite stupid, and has "Tab" as the focus-change key hardcoded. Need to think more at some point. ] [Better state handling Benja Fallenstein **20050324225844 I find it difficult to write good documentation for this, so I'll paste some discussion from IRC instead: 04:50 < benja_> I have a huge conceptual problem and no good ideas 04:51 < benja_> re state management 04:51 < benja_> the idea was to reflect the matching hierarchy in the lob system 04:52 < benja_> so let's say I have a window with three text boxes 04:52 < benja_> each text box needs to maintain a cursor position 04:52 < benja_> in the matcher, the text boxes are children of the window 04:52 < benja_> so for the window I keep a Map containing its state 04:53 < benja_> like, { textBox1_key: textBox1_state, textBox2_key: textBox2_state, textBox3_key: textBox3_state } 04:53 < benja_> and each of the textBoxN_state are maps of the same kind again 04:53 < benja_> containing also { "textcursor": textCursorModel } 04:54 < tuukkah> where does the problem come from? 04:55 < benja_> I was passing around the state map for the current lob as a Javolution local variable 04:55 < benja_> which work like, 04:55 < benja_> LocalContext.enter(); 04:55 < benja_> try P 04:55 < benja_> s/P/{/ 04:55 < benja_> VARIABLE.setValue(xyz); 04:55 < benja_> // do something 04:55 < benja_> } finally { LocalContext.exit(); } 04:55 < benja_> so after the LocalContext.exit(), VARIABLE goes back to its previous state 04:56 < tuukkah> ok 04:56 < benja_> however, the state is being read during the construction of the lobs 04:56 < benja_> and this doesn't automatically happen in the local context 04:56 < benja_> i.e., the KeyLob sets the local context when it calls its children 04:57 < benja_> but the child of the KeyLob is constructed before the KeyLob and so the constructing call isn't wrapped in a local context 04:57 < benja_> I thought it would just work out but it doesn't :-/ 04:58 < benja_> see org/nongnu/libvob/demo/Notebook.rj 04:58 < benja_> it has to enter the local contexts explicitly plus create the key lobs -- totally messy 04:59 < benja_> currently the lob system works so that lobs are immutable, and a lot of work may be done at the time where the lob is allocated (from javolution, i.e. a Java object is re-used) 05:02 < tuukkah> hmm ... 21:05 < benja_> I think I finally have an idea how to solve the problem I described last night 21:05 < benja_> like, 21:05 < benja_> RoleContext.enter("title"); 21:05 < benja_> try { 21:05 < benja_> Lob lob = Components.textBox(titleModel); 21:05 < benja_> lob = RoleContext.lob(lob); 21:05 < benja_> vbox.add(lob); 21:05 < benja_> } finally { 21:05 < benja_> RoleContext.exit(); 21:05 < benja_> } 21:05 < benja_> "title" would be the key; RoleContext.lob(l) would wrap a key lob around 'l' 23:48 < tuukkah> benja_, looks fine otherwise, but you use static methods all too much 23:49 < benja_> tuukkah: how so? 23:50 < tuukkah> benja_, couldn't rolecontext be an object? 23:51 < benja_> tuukkah: that would not be in line with how other javolution contexts work 23:51 < benja_> (they're objects, but using them happens through static methods) 23:51 < tuukkah> benja_, ok :-) 23:52 < benja_> I really don't want to break convention there 23:52 < tuukkah> it's not that bad if the class is forwarding the messages to some object 23:53 < tuukkah> I don't have a problem with, I don't like applying patches or fixing charsets ] [fixed rendering message display code Tuukka Hastrup **20050327113552] [added a "splash screen" while first scene is rendering Tuukka Hastrup **20050327113725] [add Lobs.add() to add a lob to a sequence (hbox, vbox, linebreaker) Benja Fallenstein **20050327124734] [remove obsolete documentation about font scaling factor Tuukka Hastrup **20050327145850] [Add rudimentary menus. Benja Fallenstein **20050327130117 This menu implementation doesn't support submenus (first have to figure out how to do the state management, i.e., how to remember which submenu is open), and it doesn't automatically add glue between the items in a menu (hmm, perhaps just use a larger margin around each item?). ] [better menus (though two menus can still be open at the same time) Benja Fallenstein **20050327205431] [move old lob system to basalt/ Benja Fallenstein **20050328004607] [twids Benja Fallenstein **20050328142417] [don't barf on round-off error Benja Fallenstein **20050328174500] [Fix old functionality of vob scene, i.e., getCSAt with awt. Matti J. Katila **20050329115448] [Add bosszz to show how hard it is to build with vobs. Matti J. Katila **20050329115624] [Add simple lob example - boss buzzle. Matti J. Katila **20050330211117] [BossBuzzle twids Matti J. Katila **20050330213314] [Add features to the .rj preprocessor Benja Fallenstein **20050329191450 - Allow the main class in a file to be declared @realtime; this will create a RealtimeObject.Factory for the class, and add a private no-argument constructor (used by the factory). - In a main class declared @realtime, interpret declarations like public @constructor(Object o1, Object o2) { this.o1 = o1; this.o2 = o2; } public @constructor newBooHoo(int i) { this.setValue(i); } as declarations for static methods for getting instances of the class. (In the first case, the name 'newInstance' is implicit; this is the default name for static constructor methods.) For example, the above will (in a class Foo) be transformed to: public Foo newInstance(Object o1, Object o2) { Foo the_new_object = (Foo)FACTORY.object(); the_new_object.o1 = o1; the_new_object.o2 = o2; return the_new_object; } public Foo newBooHoo(int i) { Foo the_new_object = (Foo)FACTORY.object(); the_new_object.setValue(i); return the_new_object; } - When parsing balanced braces {}, ignore braces in strings :-) ] [Make the code in the Notebook demo stylistically better Benja Fallenstein **20050329192453 - Do not store state in the Notebook object. Instead, use the new lob system's state management system. - Create the lob in a static function in Notebook, instead of an instance method of Notebook. This makes it easy to take the notebook lob and putting it in some other lob structure. ] [experiment with ways to simplify lob coding Benja Fallenstein **20050329193326 - make glue a combination of nulllob and requestchangelob, instead of having an own class - put the implementation of alignlob inside Lobs.rj, rather than having an own file ] [lobs-based boss puzzle impl Benja Fallenstein **20050330172042] [various fixes Benja Fallenstein **20050330172113] [refactor puzzle demo Benja Fallenstein **20050330172849] [oops, forgot to add Benja Fallenstein **20050330172933] [improve puzzle demo code Benja Fallenstein **20050330191101] [move defaultFont and stuff depending on it to Component, as it embodies policy Benja Fallenstein **20050330194924] [Don't religiously avoid creating String objects in the puzzle demo. Benja Fallenstein **20050330200402 The demo performs just fine when creating string objects in the piece-lob-creating method. Religiously forcing the use of Javolution here would be premature optimization, which isn't what we want to teach either :-) ] [argl, didn't remove CLASSES when removing Glue.java -> didn't spot these Benja Fallenstein **20050330201347] [make PuzzleBoard an ordinary class -- no need to use Javolution and the preprocessor Benja Fallenstein **20050330201413] [various linebreaking/javolution-related fixes Benja Fallenstein **20050404135806] [very crude fix for focus handling in Fenfire.rj Benja Fallenstein **20050404164335] [add viewport lob that scrolls its content to show the cs with a given key in the middle Benja Fallenstein **20050405112738] [fix text rendering (don't render individual characters with AWT) Benja Fallenstein **20050405112933] [use viewport for listbox (it doesn't handle mouse right :-( ) Benja Fallenstein **20050405113540] [make sure the lobs at the end of a line have the correct key (for showing the text cursor, scrolling) Benja Fallenstein **20050405115522] [a simple image lob, needs work Benja Fallenstein **20050405131834] [add necessary imports and exceptions Hanna Ollila **20050405164639] [fixes to make CanvasSpatialView work more Benja Fallenstein **20050407073924] [add check for null key Benja Fallenstein **20050407074059] [don't thow error when detecting a 'cycle in hashtable' -- not a fix, just hiding a problem, I guess :-( Benja Fallenstein **20050407074215] [add a lob that ignores all key events sent to it Benja Fallenstein **20050407111126] [check arguments better, throw exceptions when not acceptable Benja Fallenstein **20050407123944] [implement single checkbox component (a checkbox without a label) Benja Fallenstein **20050407195122] [even if ClickController handles a mouse event, pass it on to the child to see whether it wants to handle it too (then both handle it) Benja Fallenstein **20050407200737] [make mouse events in ViewportLob work Benja Fallenstein **20050408112520] [hack ClipLob to not change the matching parent, but to place nested clipping cses with the same matching parent into a vobmatcher hierarchy Benja Fallenstein **20050408164613] [fix awt line drawing by substracting one pixel Tuukka Hastrup **20050408164632] [add NoGrowLob to Lobs; support non-clipped Components.frame()s Benja Fallenstein **20050409113054] [fix ClipLob.mouse() Benja Fallenstein **20050409120524] [sanity check Benja Fallenstein **20050409120544] [add treebox Benja Fallenstein **20050410030537] [fixes to ScaleLob and Tray Benja Fallenstein **20050411195857] [fix TableLob.layoutOneAxis to do "the right thing" generally; add DebugLob which prints out debug info about the methods called; fixes Benja Fallenstein **20050411231301] [add lob's visual printout util to help documentation Matti J. Katila **20050412073809] [add drag controller Benja Fallenstein **20050412211006] [simple speed fix Benja Fallenstein **20050412211906] [Add next example shot Matti J. Katila **20050413195108] [make Lobs.text() a method of LobFont, i.e., use lobfont.text(string); redefine it not to add a glue lob at the end; use lobfont.textLn(string) for that Benja Fallenstein **20050413203719] [examples Matti J. Katila **20050413211010] [Add more glue. Matti J. Katila **20050413213356] [optional file variable Matti J. Katila **20050413213543] [argh, Components.label() must use textLn(), not text() Benja Fallenstein **20050413220445] [Add more examples Matti J. Katila **20050413235033] [add still more tired examples Matti J. Katila **20050414002730] [rules for compiling rj files Tuukka Hastrup **20050415165455] [add a way to get the clicked cs from ClickController Benja Fallenstein **20050415173115] [better debug printout Benja Fallenstein **20050415173150] [removed preprocessor-generated files Tuukka Hastrup **20050415194934] [Fix vobcoorder - it did have methods for old stuff. Matti J. Katila **20050417105859] [add a demo to test translation speed Matti J. Katila **20050417110222] [translation demo Matti J. Katila **20050417110306] [Have a more verbose modes for windowAnimationImpl Matti J. Katila **20050417110338] [drag event fixes to jupdatemgr. Matti J. Katila **20050417110434] [create String objects instead of anonymous classes Tuukka Hastrup **20050417113142] [simplify event reduction code and add support for MOUSE_MOVED's Tuukka Hastrup **20050417120231] [filter bad key events that cause exceptions on JDK1.5.0 Tuukka Hastrup **20050417140442] [be more careful when creating the UpdateManager Tuukka Hastrup **20050417195821] [synchronize a bigger block in JUpdateManager Tuukka Hastrup **20050417201946] [Give also event as argument to make it easier to implement zooming. Matti J. Katila **20050417164332] [add depthFract to decorator lob Benja Fallenstein **20050418151502] [make copyrighted Matti J. Katila **20050418210014] [make copyrighted Matti J. Katila **20050418211515] [make copyrighted Matti J. Katila **20050418211739] [Add more greyish background Matti J. Katila **20050418212044] [animate after event if an anim mode was already set before the event handling Benja Fallenstein **20050419192406] [improve speed by reducing number of Javolution Context changes Benja Fallenstein **20050419232015] [no more 'negative size diff' errors, a negative size diff just means we need to shrink rather than stretch ... OOPS Benja Fallenstein **20050420164506] [adjust to new version of javolution Benja Fallenstein **20050420165541] [allow Alt-Left/Alt-Right to move text cursor, also Benja Fallenstein **20050420235307] [fix animation when the user hits a key during a previous animation Benja Fallenstein **20050422131132] [allow listboxes to shrink -- they have a viewport for scrolling, after all Benja Fallenstein **20050422132333] [ugly hack to break lines in the middle of a word if a word is longer than the line length Benja Fallenstein **20050423130627] [work around exceptions Benja Fallenstein **20050424131035] [dragging fixes Benja Fallenstein **20050424135356] [fix Components.textComponent; make TextKeyController allow pasting from clipboard Benja Fallenstein **20050424161351] [better printouts Benja Fallenstein **20050424193125] [add PUI copy (the earlier add was PUI pasting) Benja Fallenstein **20050425012032] [better debug & error printouts Benja Fallenstein **20050425012056] [Also set boolean primitive if needed. Matti J. Katila **20050429171431] [utility to parse HTML into lob text Benja Fallenstein **20050520082247] [Fix the thrown IndexOutOfBoundsException when list is empty. Matti J. Katila **20050603081819] [Fix vob coorder's coords3 methods. Matti J. Katila **20050606065542] [Clean translation demo and fix getKey method. Matti J. Katila **20050606065850] [Add simple terminal graphics api. Matti J. Katila **20051129202749] [write right license. Matti J. Katila **20051129203239] [make it compile Matti J. Katila **20051130062235] [Add default implementation. Matti J. Katila **20060117182942] [Add ANSI buffer - a class which is able to flush colored text to terminal. Matti J. Katila **20060117183156] [create a bit different GLRen Matti J. Katila **20060204123250] [Add initial versions of callgl and coorder. Matti J. Katila **20060205090700] [Add initial version of lwjgl API. Matti J. Katila **20060205090944] [Fixes and tweaks to support lwjgl API. Matti J. Katila **20060205091029] [more code ported. Matti J. Katila **20060207003504] [Fix some template and other code to be strict c++ as g++-3.4 demands. Matti J. Katila **20060207003803] [At least something can be seen :o) Matti J. Katila **20060207200329] [add a script to generate some fonts. Matti J. Katila **20060208201402] [changes Matti J. Katila **20060215055156] [Eventhandler stub, simple test which do not work and twids. Matti J. Katila **20060306230413] [Add mosaic text. Matti J. Katila **20060306230752] [Start porting textures. Matti J. Katila **20060306230832] [fixes and twids. Matti J. Katila **20060306231003] [GL.java and GLRen.java refactored - urgh. Matti J. Katila **20060306231200] [Create Ren(derable).java with tag interfaces. Matti J. Katila **20060306231649] [vob twids. Matti J. Katila **20060306231828] [Add font resources: textures with shiny bits on white. Matti J. Katila **20060306232413] [unknown twids... Matti J. Katila **20060306232811] [twids Matti J. Katila **20060306232949] [fix Matti J. Katila **20060306233030] [fix path Matti J. Katila **20060306233242] [fix simple test to be runnable. Matti J. Katila **20060306233302] [ly yet. Matti J. Katila **20060403163205] [Porting the paper implementation. Matti J. Katila **20060403163632] [Small twids. Matti J. Katila **20060403163750]