Known bugs
and problems
This page is no longer maintained on a regular basis.

Please read the files "/doc/README" and "/doc/CHANGES" from your JavaFIG installation for the most recent documentation about JavaFIG features, bugs, and changes.

Change log
67.01.00
JavaFIG changes and bug list

   06.01.2000

1) Status
2) Notation
3) Known Bugs
4) Changes


--------------------------------------------------------------------------
1) Status: (JavaFIG 1.36)

o all FIG 3.1 and FIG 3.2 object types 

  exceptions:  no FIG 3.2 X-splines (rarely used anyway)
               rotated text and ellipses require JDK 1.2 with Java2D

o all basic xfig editor commands, except object rotation 

o read FIG 2.1, FIG 3.1, FIG 3.2, write FIG 3.1, FIG 3.2,
  including format conversion

o platforms:
                   JDK 116 117 118 12f 122  MS-VM  IE4.x  Netscape4.5
  Solaris                +   +   +   +   +      -      +      P
  Linux                  +   +   -   +   -      -      -      P
  Windows 95/98/NT       +   +   +   P   +      +      +      P
  Mac              not tested        

  + = runs ok.
  x = not available
  P = problems



--------------------------------------------------------------------------
2) Notation:

K    killer bug
J    Java (but not JavaFIG) bug
B    bug
I    feature, low priority bug
F    fix
N    new feature/function




--------------------------------------------------------------------------
3) Editor/Viewer Bugs (JavaFIG 1.35):

J    JDK 1.1.x/all versions: excessive memory problems in java.awt.TextArea,
     when more than about 100 lines of text
J    Netscape 4.x: can't load icons (Java resources & security broken)
J    MicrosoftIE 4.x: can't save files reliably (try "low security" settings)

B    documentation for user-extensions is still missing.
I    screen display quality is low, due to AWT restrictions.
I    excessive memory usage for splines (javafig.objects.GE_spline/GE_bezier),
     but no problem for typical drawings.
I    no support for FIG 3.2 X-splines. However, these are not used often.



--------------------------------------------------------------------------
4) Changes:

06.01.00

N 
   documentation updates

22.12.99

N
   first support for rotated text (requires Java 2D).


20.12.99

F
   major renaming of all GE_xxx classes to FigXxx and similar names.

F
   switches to Jikes 1.10. The compiled classes seem to work, however,
   JAX 0.41 and javap report "null method" problems in some classes
   (e.g. javafig.gui.PresentationViewer).



17.12.99

F
   changed state button behaviour to match xfig behaviour
   (middle button decrements, right button increments)

F
   reorganized the help menu entries and source documents.
   Included help on shortcut keys.

N
   added class javafig.objects.FigPrintWriter to assure xfig/fig2dev
   compatible file format (Unix-style LF only, no CRLF).

19.11.99

N
   changed javafig.objects.Exporter to escape filenames with '"
   to support Windows-style filenames with blanks in the command
   lines for fig2dev, e.g.  "C:\My Documents\foo.fig" .

18.11.99

N
   new utility class Pathname to remove subdirectory references (..)
   from pathnames.

N
   several improvements to the PresentationViewer and ImageHelper
   to find resource files from CLASSPATH and JAR-archives better.


06.09.99

N
   implemented the font 'special' flag to support mixed Latex/Postscript
   export via fig2dev. You can set the flag both in the main editor attributes
   or the 'edit text object' dialog. 

   However, so far I didn't manage to clean up the export code in 
   javafig.objects.Exporter, too. You will have to call fig2dev -L pstex
   and fig2dev -L pstex_t by hand (or from a script).

30.07.99

F
   changed the zoom factor limits in javafig.canvas.GE_trafo and
   javafig.canvas.ViewerTrafo, new minimum is 0.03125 and maximum is 32.0;
   (Note that the ruler-formatting may look suboptimal at high zoom factors
   due to rounding errors.)

N
   added internal class 'ListEnumerator' and 'getElements()' method
   to javafig.objects.GE_olist. This list enumeraton is still _not_
   thread-safe against structural changes of the list, but at least 
   multiple enumeration can be active simultaneously.
   This should stop the intermittent HADES redraw problems.

15.07.99

F
   changed javafig.canvas.GE_canvas.getVisibleRegionBBox()
   to correct for the rulers.

30.06.99

N
   some support for greek and math symbols (xfig 'symbol' font)
   via font-recoding-hack in class javafig.objects.GE_text.
   Activated Symbol-font in javafig.gui.AttribsControls

20.05.99

N
   first implementation of AlignObjectsCommand (so far, without Undo)

F
   improved several class doc comments

19.05.99

N
   new icons for object alignment

N
   new methods in AttribsButtonPanel to display only those attribute
   controls (buttons, choice's, etc.) relevant to the current command.
   Corresponding changes to the mode and command callback methods in 
   ModularEditor.

F
  several changes / cleanups / improvements to AttribsControls
  and AttribsButtonPanel


17.05.99

F
   several fixes to the central JavaFIG makefile.

14.05.99

N
   new class "EditGlobalAttributesDialog" and corresponding changes
   to ModularEditor to allow the user to select the default global
   editor attributes, e.g. arrow width and length.

F
   fixes in "AttribsControls" and "GE_attribs" to correctly propagate
   attribute changes to the attribute controls.

F
   fixed the object selection mechanism in "ModularEditor" to inhibit
   GE_text shadowing of all other objects inside the GE_text bounding box.
   Now, the selection mechanism will (should) correctly select any 
   polyline/object whose vertices are inside of one snap-distance, even
   if this vertex lies inside a GE_text object.

13.05.99

F
   re-enabled the "GE_canvas" status messages instead of printing them,
   as the AWT deadlock bug in JDK 1.2 seems to be independent of these
   status messages.
   

07.04.99

N
   introduced flag 'syncRepaintFlag' and accessor methods into
   javafig.objects.GE_drawable and class javafig.objects.GE_baseobject
   to support per-object synchronous repaints (e.g. in HADES).
   This feature is currently not used anywhere in JavaFIG itself.

01.04.99

N
   new class javafig.gui.SimpleTextViewer to encapsulate the loading
   and displaying of simple ASCII text files for help, license, etc.

17.03.99

F
   removed unused (and broken) Font initialization in classes
   GE_ibutton, GE_sbutton, GE_updatemodeButton, ... to avoid
   Macintosh MRJ crashes

16.03.99

N
   added support for "resource:/slide/" URLs to the presentation
   viewer. It is now possible to include all FIG slides (and all
   embedded images) and the referring ".jpt" file into one ZIP archive
   for faster/single download.

   At the moment, however, all browsers (including JDK 1.2 appletviewer)
   have problems to access GIF/JPG images embedded into a ZIP
   archive from an applet (JDK bug).

F
   several fixes / updates to classes PresentationViewer and
   PresentationViewerApplet

N
   using jikes as the default compiler

F
   cleaned up the "about JavaFIG" dialog window, should solve layout
   problems on Linux and Solaris

12.03.99

F
   use the non-threaded version of the FIG-parser in the editor/viewer/
   presentation viewer as a workaround against the JDK 1.2 deadloc
   on windows



11.03.99

F
   introduced setup manager variable "JavaFIG.Parser.enableMessages" 
   to switch off the parser status messages during parsing
   (as a workaround for the JDK 1.2/Windows deadlock bug)

F
   fixed javafig.commands.CreateTextCommand.keyTyped() to handle
   key codes generated by JDK 1.2 for Windows ...

10.03.99

F
   fixed javafig.commands.CreateTextCommand.keyTyped() to ignore
   ASCII control sequences (like CNTL-S) generated by the new menu
   accelerators.

F
   fixed javafig.objects.GE_text and javafig.objects.GE_figIn to
   ignore spurious ASCII control sequences in text objects

N
   rewrote the help-page for the PresentationViewer and corrected the
   help resource-URL to reference this page

N
   new "window size" menu and callbacks in javafig.gui.PresentationViewer,
   upgraded to version 0.17

N
   changes to the panning mechanism in PresentationViewerCanvas to allow
   for very small-step panning (about 4% of window size)

F
   complete reorganization of the javafig.gui.PresentationViewer 
   menu callbacks, used symbolic String constants for everything, ...

 
F
   several fixes to javafig.utils.PresentationParser to avoid NullPointers
   on presentations without a single chapter (better initialization, many
   more checks, etc.)




23.02.99

F
   changed all calls to Graphics.drawImage() to the synchronous variant,
   as an attempt to reduce the deadlock probability

F
   fixed ClassCastException in ResizeTextCommand

F
   fixed the findNextCompound algorithm and several status messages 
   in BreakCompoundCommand

F
   added several calls to javafig.utils.AntiDeadlock in all classes
   which modify/use AWT dialog windows.


22.02.99

N
   changed version to 1.34,
   added '#' shortcut for break compound

F
   new keyboard shortcuts for 'save', 'new', ... without the SHIFT modifier

F
   new attempt to workaround the 'deadlock' problem.
   Several synchronizations added to GE_canvas, changed GE_canvas
   offscreen redrawing to the synchronous variant of Graphics.drawImage.

21.01.99

N
   added the 'g' bindkey to KeyHandler to toggle between none/medium grid.

F
   added debug messages from GE_statusCanvas; enable with SetupManager
   property 'StatusCanvas.debug'

12.01.99

F
   introduced the "JavaFIG.Exporter.DumpStatus" setup manager property
   to wrap and enable/disable the output/error stream dumping from
   the external process. Disable for Windows, unless you like deadlocks.

11.01.99



06.01.99 - 10.01.99

F
   several changes to GE_canvas and GE_statusCanvas to get rid of
   the d**mned Windows deadlocks under JDK 1.2. Changed version to 1.33.
   Got some improvements, but it still doesn't work reliably.

04.01.99

F
    slowed down the redraw using repaint(delay) calls in GE_statusCanvas 
    to keep JDK 1.2 happy (i.e., avoid the complete Windows deadlock
    during repaints).

30.12.98

F
    use a dummy GE_statusCanvas to receive the annoying and very
    time-consuming parser messages while processing the clipboard contents
    in javafig.commands.PasteFromClipboardCommand.

F
    added a WindowListener to javafig.gui.Console to allow closing
    via the window menu.

29.12.98

F
    removed unused old class GE_console, replaced by javafig.gui.Console

F
    renamed javafig.utils.FigWriter to FilteredFigWriter

28.12.98

F
    removed useless class GE_imageLoader and the remaining dead
    references to it (use javafig.gui.ImageHelper instead)

F
    major updates to the class documentation (Java 2 style) to
    several dozen classes, including all classes from javafig.commands.*

10.12.98

N
    major rewrite of the JavaFIG makefile, file and directory structure,
    and new WWW pages.

07.12.98

N
    added the method getTmpObjects() to GE_editor, ModularEditor, and Viewer

F
    further changes to the image loading stuff in CreateImageDialog.
    Now, the empty image object gets the correct transformation, and
    it should react to changing the aspect ratio (reload if necessary).

F
    fixed the bug introduced into editor selection algorithm for
    polyline objects.


04.12

F
    fixed the image loading stuff in CreateImageDialog, CreateImageCommand,
    and GE_image. Now, images can be loaded with fixed aspect-ratio, and
    they are shown after loading as the editor tmpObjects.

F
    again changed the editor selection algorithm. In the first pass, we
    selected the first objects whose corners are inside one snap-distance
    from the mouse position. If no object is found, we double the snap-
    distance. Also, text objects are selected if the mouse is anywhere
    inside their bounding box.
    


xx.11.98
    wrote the PresentationViewer and applet


27.10.98

F
    call parser.setObjectPainter(objectCanvas) in javafig.gui.Viewer
    to activate the ImageObserver: display images once they are loaded...


30.09.98

N184
    implemented SnapToGridCommand

29.09.98

F183
    improved the editor selection algorithm to use a two-pass algorithm.
    The first step will look only for objects with corners nearer than
    one snap-distance to the mouse position, while the first step will
    relax that condition: it will also select objects who cover the mouse
    position, as well.

N182
    support image aspect ratio stuff in classes GE_image, CreateImageDialog,
    EditImageDialog.

F181
    fixed the annyoing 'fill style off by one' bug in EditXXXcommand ---
    rewrote AttribsControl.showFillPattern().

F180
    added some font size and fill pattern (shades) values to AttribsControls

28.09.98

N179
    complete rewrite of commands/CreateTextCommand, to use JDK116 compatible
    keyPressed/keyTyped methods.
    When editing an existing text, this is removed from the object list
    and only used as the 'tmpObject', so that the text is no longer garbled
    until finishing the editing.
    Also, recursive undo and redo of CreateText commands should now work.

25.09.98

F178
    changed GE_figOut to write out backslash-characters '\\' correctly.

20.08.98

F177
    several fixes to the FIG 3.2 parser and additional checks/special cases
    to get both FIG 3.1/FIG 3.2 compatibility. The parser and writer now
    handle all of the standard xfig.3.1.4 and xfig.3.2 examples.
    (Note that xfig.3.2/Examples/transit.fig needs 64M of memory due to
    inefficent memory usage in classes javafig.objects.GE_spline and
    GE_bezier. 

19.08.98 

N176
     parser and writer support for FIG 3.2 format, including global FIG
     attributes (page size, orientation, ..) and spline conversion.

N175
     updated class GE_colorCache and the parser/writer classes to 
     support FIG pseudocolor objects.

17.08.98

N174
     editor support for GE_trigger objects (hyperlinks). New class
     CreateTriggerCommand, several fixes and updates to EditTriggerDialog,
     ModularEditor, and EditorMenuBar. New trigger icon.

F173
     allow to set a new help message string in GE_ibutton/ImageButton

F172
     disabled the annoying diagnostic messages from ImageHelper.


28.07.98

N171    
     added 'write HADES resource' functionality.

01.07.98

N170
     new command "ResizeTextCommand" for easy changing of text font size
     and style, corresponding updates to ModularEditor (now version 1.30)
     and ModeButtonPanel.

07.06.98

F169
     update the filename-Textfield in the ModularEditor status panel
     after a "save file as" operation.

06.06.98

N168
     update object attributes (line width, arrow size, etc.) from within
     the GE_baseobject.scale() method. Also store the original attributes
     for later undo in ScaleObjectCommand.

04.06.98

N167
     support for x/y restricted copies in javafig.commands.CopyObjectCommand

F166
     added many try/catch blocks to all icon/button image related
     parts of ModularEditor, Viewer, ModeButtonPanel, AttribsControls,
     and ViewerButtonPanel to get Netscape to load the applets
     (however, the icon and buttons are still not loadable by Netscape).

N165
     new class javafig.gui.EditorApplet - but Netscape 4.05 still is not
     able to load Java 1.1 resource files (icon/buttons) :-(
     However, the applet works with appletviewer and HotJava.


03.06.98


N164
     added text fields to specify arrow width and length to
     javafig.gui.AttribsControls and javafig.gui.EditPolylineDialog

N163
     support for x/y restricted moves in javafig.commands.MoveObjectCommand

F162
     implemented ScaleObjectCommand, with unrestricted,
     restricted (proportional) scaling, and with respect to an objects
     center or the opposite corner.
     Implemented undo for scaling.

02.06.98

N161
     several changes to javafig.canvas.GE_rubberband to support
     object scaling, and restricted moves and copies.

N160
     new class javafig.commands.ScaleObjectCommand

N159
     implemented method scale() in GE_baseobject. This allows to scale
     all objects except GE_compound and GE_text, which got their own
     special implementations.

N158
     defined and added method scale() to GE_object.


15.04.98

F157
     support for asynchronous image loading with correct 'ImageObserver'
     references in GE_image object, setObjectPainter() method in GE_figIn,
     and corresponding changes to ModularEditor

14.04.98

F156
     corrected several bugs in the CreateTextCommand execute() and undo()
     methods

F155
     don't switch off and on the 'object corners' during CopyCommands

01.04.98 

F154
     fixed all classes to use the Java 1.1 API throughout, so that no
     deprecated methods or classes are left in JavaFIG.

F153
     removed classes and source files not longer needed for JavaFIG 1.2,
     including the package 'javafig.editor' and several classes from
     'javafig.gui'.

27.03.98

F152
     fixed the GE_image.copy() method

F151
     rewrote most of the README and HTML files to reflect the recent changes.


24.03.98

N150
     changed the timestamp tests in all objects (GE_baseobject ... GE_text)
     to workaround the Windows timer bug. Objects should now be displayed
     correctly even when chaining panning/zooming operations.

23.03.98

F149
     changed the timestamp handling in classes javafig.objects.GE_wline
     and GE_wfill to work around the "Windows coarse time resolution" bug.
     Now, both classes will rebuild themselves when their own timestamp
     is less than OR EQUAL to the transformation's timestamp. This means
     more work and less performance, but should get of invalid objects
     due to multiple transformation changes until the timer increments.

N148
     enabled the "point operations" for javafig.objects.GE_ellipse
     with the getPoints() and setPoints() method to allow for a "move
     point" / "scale" on circle/ellipse objects.

F147
     fixed the UpdateCommand undo and redo functionality

F146
     renamed javafig.objects.GE_oval into javafig.objects.GE_ellipse,
     with corresponding changes to all JavaFIG classes

20.03.98

F145
     changed javafig.objects.Exporter to write the FIG files as tmp files,
     in order to avoid overwriting existing FIG files.

19.03.98

N144
     add findButton() method to javafig.gui.ModeButtonPanel to allow a
     visual feedback of the KeyHandler-initiated commands  by activating
     the corresponding command button.

F143
     fixed the "CreateTextCommand" to allow for direct input of German
     umlauts on Solaris (english keyboard), using the + [aou AOU s]
     keys.

18.03.98

N142
     new class javafig.gui.KeyHandler with support for "single key"
     shortcuts. Added bindkeys for most frequently used editing commands.
     See "doc/FAQ" for a list of the currently available bindkeys.

17.03.98

N141
     added several bindkeys for the MiniEditor menu commands

N140
     major changes in rewrites in javafig.canvas.GE_canvas and subclasses,
     and javafig.canvas.GE_trafo and subclasses. The grid mode and snapping
     mode should now work for all zoom factors and units.

14.03.98

F139
     fixed the mouse-button bindings in javafig.commands.DeleteObjectCommand
     to be consistent with the CreateCompoundCommand and ZoomRegionCommand.
     Also corrected and added several status messages in many command object
     classes.

N138
     changed the visual appearance of the GE_sbutton and GE_colorButton
     classes to the 'flat' style of Windows/Office 98.
     Also added some dummy GE_sbuttons to the AttribsButtonPanel as a means
     to add the 'update mask' flags to the Choice menus and TextFields for
     font style, font size, corner radius and layer (depth).

N137
     implemented the update() method in class javafig.object.GE_attribs
     and changed all object classes in javafig.object.* to use this method
     for attribute updates.
     For the first time in JavaFIG, the update() method in GE_attribs 
     respects the 'update mask' flags set in the AttribsButtonPanel controls. 

N136
     changed the implementation of javafig.gui.AttribsButtonPanel to rely
     on the methods supplied by class javafig.gui.AttribsControls.
     The resulting code is much shorter and much more modular, because the
     main attribute control panel and the individual "edit object" dialog
     windows share the same code.

13.03.98

N135
     got the edit dialog windows (EditXXXDialog) working for object classes
     for rectangles, polylines including arcs, splines, bezier splines, and
     the closed variants of these, texts, images, triggers, and circles and
     ellipses.

12.03.98

N134
     first implementation of the EditPolylineDialog window for interactive
     attribute changes to polyline/spline/bezier/arc objects.

N133
     first implementation of the 'edit object' command with support for
     text objects and polylines.

N132
     implemented the attribute get/set (called showXXX and setXXX) methods
     in javafig.gui.AttribsControls. This is the basis for efficient design
     and implementation of the EditXXX dialogs for the 'edit object'
     commands.

N131
     implemented the clipboard interface with new command classes
     javafig.commands.CopyToClipboardCommand, CutToClipboardCommand, and
     PasteFromClipboardCommand. For these commands, the selected objects
     are converted to/from FIG file format and then entered into the clipboard
     as standard Strings. 

     This also allows to read back selections from other programs, where 
     texts will be converted into GE_text objects by the parser. A typical
     application of this should be to include program fragments as listings
     into JavaFIG drawings.

N130
     implemented the 'merge file' and 'merge URL' methods, with corresponding
     updates to the FIG-file parser (new callback mechanism)


10.03.98

F129
     several minor changes to command classes to get the status messages 
     right.

F128
     corrected pushing and popping status messages in GE_statusCanvas.
     With this change, the status messages from the GUI buttons don't
     overwrite the status messages from the ongoing commands.

N127
     implemented the 'set cursor snapping', 'set grid', and 'set units'
     methods for the Editor.


05.03.98

N126
     corrected the systemresource URL to load the JavaFIG demo page.

N125
     first implementation of the 'cursor snapping' callbacks in
     javafig.gui.MiniEditor. However, it seems that class ViewerTrafo's
     setSnapRelative() method is broken for metrics other than inches
     and non-integer zoom-factors.

N124
     added default font selection via SetupManager properties to classes
     javafig.gui.Console and javafig.gui.MiniEditor.
     This improves the visual aspect under standard Linux greatly.

F123
     invisible GE_triggers are now copy()ed and move()d as other objects,
     even if they are invisible before and after.
     Unlike the previous behaviour, it is now possible to treat triggers
     exactly as all other objects without the need for special handling.

F122
     several fixes to CreateCompoundCommand and BreakCompoundCommand,
     mostly to set the correct select/deselect/showPoints status of
     the compound members and the compounds themselves

19.01.98

N121
     allow parsing of non-ASCII strings in the GE_figIn parser.
     Use SetupManager variable "JavaFIG.Parser.enableNonASCII" to enable/disable
     this feature.

15.01.98

N120
     use the threaded variant of parse_fig_file (_threaded) in the MiniEditor

N119
     integrated the parseFile, parseURL, parseResource, parse methods from
     javafig.gui.MiniViewer into javafig.gui.MiniEditor.

N118
     implemented the first step of the xfig user interface metapher:
     all commands will try to create a new command of their class via 
     the reflection API in handleCommandCallback.
     Note that it is currently necessary to use 'Cancel' to change the mode.

F117
     switched to the new 'viewerbuttons.gif' button icons in MiniEditor,
     to use the improved 'zoom' function icons.

F116
     fixed several menu items and the menu organization in EditorMenuBar.

N115
     added the doUndo(), doRedo(), and doCancel() callbacks to javafig.gui.
     MiniEditor. Because of the varying menu items, doUndo() and doRedo()
     required special handling in actionPerformed, namely
     evt.getActionCommand().startsWith( "Undo")

N114
     made GE_editor an subinterface of ActionListener, so that all command
     objects can use the actionPerformed() method as a callback.

F113
     using the additional argument to the callback methods, the active 
     mode (create xxx, move, copy, ...) button is now highlighted in the
     javafig.gui.ModeButtonPanel. 

N111
     all callback methods in javafig.gui.MiniEditor now receive one additional
     Object argument. For most methods, the triggering ActionEvent is used
     for this argument.

14.01.98

F110
     fixed/disabled lots of info and error messages in javafig.gui.MiniViewer

N109
     new method setImage( imagename, filename, filetype ) in class
     javafig.objects.GE_image to use the new ImageHelper functionality
     from N101.

N108
     new method addActionListener() in javafig.objects.GE_figIn to
     allow Java 1.1 compatible callbacks from the parser. The command
     String generated is "FIG file ready".

N107
     new method setFilenameAndType()
     in javafig.objects.GE_figIn to allow creation of GE_image objects 
     that are able to find their image data relative to their parent
     FIG file.

F106
     update filename in the status line after doShowPrevious() and 
     doShowNext() in javafig.gui.MiniViewer.

F105
     changed LayoutManager of the viewer status line entries to dummy
     GridLayouts to force correct layout of subcomponents in javafig.gui.
     ViewerStatusPanel. Also removed ugly 'raised' status of the main
     status panel.

F104
     fixed unnecessary call to parse() for NULL InputStream and report
     an error instead in javafig.gui.MiniViewer

F103
     fixed rubberband enable (pointRubber) at the end of a zoom region command
     in javafig.commands.ZoomRegionCommand

N102
     added file types (FILE, URL, RESOURCE) and corresponding Stack to
     javafig.gui.MiniViewer

N101  
     added findImage() and related methods to javafig.gui.ImageHelper

13.01.98 and previous:

B100 
     no information log available.


-----------------------------------------------------------------------
Dr. Norman Hendrich                               Tel. +49 40 5494 2399
Universitaet Hamburg, FB Informatik               Fax. +49 40 5494 2397 
Vogt-Koelln-Str. 30
D-22527 Hamburg              e-mail: hendrich@informatik.uni-hamburg.de


06.01.00 Impressum
http://tech-www.informatik.uni-hamburg.de/applets/javafig/doc/bugs.html