1.4 (released Jan. 19, 2001) |
Introduction |
JBrowse 1.4 is mostly an update to the jEdit 3.0 API
and fixes reported bugs.
|
New Features and Enhancements |
- JBrowse uses the new EditAction API, actions are defined in
actions.xml .
|
Bug Fixes |
- The JBrowse EBComponent was not properly removed from EditBus
- JBrowse was not properly activated when auto-docked
|
Other Functional Changes |
|
Internal Changes |
JBrowse.Activator and JEditActivator
were removed.
JEditActivator.UMLTreeMouseHandler ,
JEditActivator.UMLTreeSelectionHandler
were factored and moved to JBrowse.UMLTreeHandler .
|
1.3.2 (released Nov. 19, 2000) |
Introduction |
JBrowse 1.3.2 mostly fixes the sort option.
|
New Features and Enhancements |
- Changing the sort order doesn't collapse the JBrowse tree
anymore
|
Bug Fixes |
- The sort option was broken on Windows with JDK 1.3
|
Other Functional Changes |
|
Internal Changes |
- The deprecated
JEditTextArea.setOrigin is not used
anymore. Instead, JBrowse uses
JEditTextArea.setFirstLine .
|
1.3.1 (released Oct. 27, 2000) |
Introduction |
JBrowse 1.3.1 is a bug fix release.
|
New Features and Enhancements |
|
Bug Fixes |
- Bug #115158 fixed:
JBrowse.TextAreaFocusHandler reparsed
unnecessarily some buffers which caused the annoying behaviour
- Bug #117727 fixed:
Buffer.getFile().getPath()
used instead of Buffer.getPath()
|
Other Functional Changes |
|
Internal Changes |
|
1.3 (released Sep. 3, 2000) |
Introduction |
JBrowse 1.3 uses the new Dockable API.
|
New Features and Enhancements |
- Dockable API support.
- PluginHolder support removed. Main reasons:
- PluginHolder is no longer supported
- Dockable API does PluginHolder's job
|
Bug Fixes |
- Automatic reparse was broken when a new Buffer was loaded
|
Other Functional Changes |
|
Internal Changes |
- HoldableJBrowse removed
- New JEditDockAction: toggles JBrowse docking state
- New DockableJBrowse: implements DockableWindow similar to former
HoldableJBrowse but for the Dockable API
|
1.2 (released Aug. 15, 2000) |
Introduction |
Version 1.2 is a very important release:
- I consider the merge between "official" and the
"unofficial" JBrowse versions completed.
- Lots of code reorganization to improve general readability
and maintenance.
|
New Features and Enhancements |
- Automatic reparse option
- Sort option
|
Bug Fixes |
- Session options were not saved;
- Small display bug when "arguments" option is checked
and "formal names" option isn't.
|
Other Functional Changes |
- JBrowse is an EditBus component (EBComponent), it listens to the
following messages mostly for the new automatic reparse feature:
EditPaneUpdate.CREATED
EditPaneUpdate.DESTROYED
EditPaneUpdate.BUFFER_CHANGED
|
Internal Changes |
I made very important changes to the JBrowse code base.
Main classes I worked on:
- JBrowsePlugin
- JBrowse
- JBrowseOptionPane
Design goals:
- Limit class dependencies, better encapsulation
- Limit inner classes usage to simple event handlers
- In the current design, JBrowse is meant to be integrated in
other tools than jEdit. For instance, JBrowse could be primarily a
command line tool or integrated with other editors/IDEs.
I will try to keep this design for some time.
Here is a list of interfaces on top of JBrowse that make it
independent:
- JBrowseParser
- JBrowseParser.LineSource
- JBrowse.Activator
- PropertyAccessor
- Except for JBrowse, JBrowseOptionPane, JBrowseOptionDialog,
classes related to jEdit were prefixed by JEdit:
- JEditLineSource: existed already;
- JEditActivator: implementation of JBrowse.Activator
- JEditPropertyAccessor: implementation of PropertyAccessor
- JEditOpenAction: jEdit action that will open a JBrowse
dialog.
Details:
- JBrowse.ActionPane: was moved outside of JBrowse to JBrowseActionPane
- JBrowse.StatusPane was moved outside of JBrowse to JBrowseStatusPane
- The code of JBrowse.TreePane was merged into JBrowse
- JEditLineSource was moved outside of JBrowsePlugin.java to
JEditLineSource.java
- JBrowsePlugin.OpenAction was moved outside of JBrowsePlugin and
renamed JEditOpenAction
- JBrowsePlugin.ViewActivator was moved outside of JBrowsePlugin and
renamed JEditActivator
- JBrowsePlugin.TreeEventAdapter: was moved inside JEditActivator and
split in two event handlers:
- JEditActivator.UMLTreeMouseHandler;
- JEditActivator.UMLTreeSelectionHandler.
- JBrowsePlugin.PropAccessor was moved outside of JBrowsePlugin and
renamed JEditPropertyAccessor
- JBrowseDummyParser: was renamed JBrowseNullParser
- New ComparatorFactory: a factory of Comparators for the sort option
- New UMLTreeSorter: To sort UMLTree nodes.
|
1.1 (released Aug. 5, 2000) |
Introduction |
Version 1.1 introduces holdability. JBrowse can now be docked in the
editor's frame with other holdable plugins.
|
New Features and Enhancements |
|
Bug Fixes |
|
Other Functional Changes |
|
Internal Changes |
Most internal changes were code refactorings to be able to support
PluginHolder:
- The former JBrowse JDialog was transformed into a JPanel and
split in three:
- JBrowseDialog
- A JDialog encapsulating the main JBrowse panel
- HoldableJBrowse
- A Holdable Panel encapsulating the main JBrowse panel
- JBrowse
- Now a JPanel, contains the code to display the main JBrowse
Panel
- New JBrowse.ActionPane: contains the code of the JBrowse action bar
- New JBrowse.StatusPane: contains the code of the JBrowse status panel
- JBrowse.TreePane: ActionPane and StatusPane code removed, one should
see clearer what the TreePane actually does
- JBrowsePlugin.OpenAction: the code implementing JBrowse.Activator
was removed and isolated in the new JBrowsePlugin.ViewActivator.
- New JBrowsePlugin.ViewActivator
- JBrowseDummyParser: implements JBrowseParser,
used when JBrowse is docked and the current buffer is not a java file.
- Help.gif: The Help.gif is now bundled with JBrowse. Formerly,
JBrowse was getting it from jEdit.
|
1.0.2 (released Jul. 2, 2000) |
Introduction |
Version 1.0.2 is an important public release of JBrowse. It adds no
new features to JBrowse 1.0.1 but corrects many bugs reported since
JBrowse 1.0.1 and fixes an incompatibility with the new OptionPane API
introduced in jEdit 2.4.
|
New Features and Enhancements |
- When clicking on a JBrowse node, the textarea origin is set
so that the method or class shows near the top.
|
Bug Fixes |
- Fixed incompatibility with the new OptionPane API
- Block comments at the end of java file caused JBrowse to complain:
JEditLineSource: argument to getLine() is bad: <number>
- Unterminated multi-line comments caused a 100% cpu problem
- When calling Plugins > JBrowse on a non-java file, the
user is warned that JBrowse can not run
- Clicking on certain areas of JBrowse (eg. blank area) caused NPEs
- Constructor may be erroneously considered static
|
Other Functional Changes |
|
Internal Changes |
|
1.0.1 (released Nov. 16, 1999) |
Introduction |
Version 1.0.1 is the sixth public release of JBrowse. It is a minor update
to version 1.0. This version adds a couple of enhancements and one bug fix to
version 1.0. Most importantly, it now again supports both JDK 1.1 and 1.2.
|
New Features and Enhancements |
-
The JBrowse options dialog now has two buttons that appear at the bottom of the panel:
- "Set As Defaults" - saves the current options as the new defaults for future sessions.
- "Restore Defaults" - replaces the current options with the last saved default options and
re-displays the tree using these option settings.
-
Improved the way positioning takes place. Previously, only changing the selected node would cause
the highlight to be set. This was confusing to the user as attempting to reposition to the
currently selected node would not update the highlight. Now a mouse click on a node will
always cause the associated line in the active buffer to be highlighted.
|
Bug Fixes |
-
Fixed a bug which caused all display options to be cleared when the Option Dialog was opened from
the JBrowse configuration button (this bug was introduced with version 1.0).
|
Other Functional Changes |
-
Made compatible with JDK 1.1.x. All versions of JBrowse previous to 1.0 worked with both JDK 1.1 and 1.2. JBrowse
1.0 used code which was dependant on JDK 1.2. This version replaces that code with an implementation that works fine
with both JDK 1.1 and 1.2.
-
Updated the docs.
|
Internal Changes |
-
Added some more internal documentation.
|
1.0 (released Nov. 10, 1999) |
Introduction |
Version 1.0 is the fifth public release of JBrowse. It has earned this
auspicious version number since it is believed to be sufficiently robust
and now permits the representation of all the basic structural information
available in Java 1.1 and 1.2 program files.
|
New Features and Enhancements |
-
The tree can now represent
implements and extends
information for classes/interfaces.
-
The tree can now represent
throws information for methods.
-
New icons have been added to the tree to represent
implements ,
extends and throws elements.
-
New options have been added to toggle the display of implements/extends and throws information.
-
Previously JBrowse had two tabs one for the tree and one for setting the current options.
In this version the tabs have been removed and a "configure" icon button has been added which
will open (or bring to the foreground) an option dialog.
-
Handling of options has been changed so that, as changes are made in the option dialog, the
tree will be updated automatically. This allows you to make changes without constantly
switching between tabs and to easily examine the effect of each option setting.
-
Added a help icon button to the JBrowse toolbar to open the Help Viewer with the documentation
for JBrowse.
-
Added error checking for constructors:
- method without return type only assumed to be a constructor if name is name of containing
class.
- Constructors can't be native/abstract/static/synchronized/final
- Interfaces can't have constructors
-
Added error checking to ensure that a Java file has at most one non-nested top-level public class or interface.
-
Auto-expand the non-nested top-level public class or interface (if present).
-
Added checks on modifier validity for methods:
- Interface methods can't be native/static/synchronized/final/private/protected
- Abstract methods can't be native/static/synchronized/final/private
-
Added logic to check for and report an attempt to position in a buffer using the JBrowse
tree when that buffer is no longer the current active buffer.
|
Bug Fixes |
-
Fixed a parsing bug, whereby abstract methods (e.g. in an interface) with a throws clause
caused false parse errors to be reported:
-
Added error checking to the parsing code to catch attempts to pop/peek when the element
stack is empty (this could cause JBrowse to fail to appear if it was invoked when
the current buffer had mismatched braces or missing semicolons on abstract methods).
-
Fixed the tree display to not show the expand/contract control for a node when none of
the node's children are visible by the current option settings (this required overriding
isLeaf() in UMLTree.Model).
|
Other Functional Changes |
-
Made compatible with the new logging mechanism introduced with jEdit 2.2pre3.
Thus, this version requires jEdit 2.2pre3 or later.
-
Renamed the display option: "Class and interface modifiers" to "Keywords
specified by icons" as it now controls the display of all the following
keywords: class, interface, throws, implements, extends.
|
Internal Changes |
-
The Option object's values are now initialized directly from the property settings (and not
via the OptionPane GUI representation). This allows the Tree to be displayed faster and
without requiring that the GUI for the Option dialog be initialized beforehand.
-
JBrowse can now be compiled using the IBM Open Source Jikes compiler. This required a reorganization
of the Options classes, in particular:
the Java files JBrowseOptions.java, FilterOptions.java and DisplayOptions.java have been replaced
by Options.java.
|
0.9.9 (released Oct. 11, 1999) |
Introduction |
This will be the last pre-1.0 release of JBrowse, and should be considered
a 1.0 release candidate. Thus, it includes all the major features that are
expected for that version, which will be released within the next two weeks,
after any reported issues are addressed.
|
New Features and Enhancements |
-
This version adds one major new feature -- it handles nested classes!
Both nested top-level classes (i.e. nested interfaces and static classes)
and non-static nested member classes are now displayed.
At this point the full syntax of Java 1.1 and 1.2 are now supported,
with the minor exceptions of local and anonymous inner-classes.
-
A new icon has been added for the display of nested member classes in the
tree. The icon consists of a class box with another box in the background.
Thus, top-level classes and nested member classes have distinct icons. This
is to emphasize that nested member classes are different from top-level classes
in that they exist within the context of a specific instance of an enclosing
class and that they have access to the members of this enclosing class.
-
A new option has been added for controlling the display of nested classes.
If "Qualify nested class/interface names" is selected the fully qualified
class name will be shown for all nested classes as opposed to the final
component of the name.
|
Bug Fixes |
-
This release fixes the one known the one bug reported against the previous
version, which incorrectly reported object block initializers as a parse error
(thanks to Andre Kaplan for pointing this one out).
|
Other Functional Changes |
-
Made compatible with the new OptionPane interface introduced with jEdit 2.1pre3.
Thus, this version requires jEdit 2.1pre3 or later.
|
Internal Changes |
-
Better organization of the classes used to represent the UML hierarchy.
These are now all nested in the UML class.
-
Removed dependency on OptionPane outside of the JBrowsePlugin class
and its members (this was possible because OptionPane is now an interface).
This completes the effort (that started with 0.9.7) to reduce dependencies between
classes. Now all dependencies on jEdit are established in its Activator class
(JBrowsePlugin).
|
0.9.8 (released Oct. 2, 1999) |
Introduction |
This is a minor update to the previous version. It is being released at this time in
order to quickly make available a version that supports the new EditPlugin API that has
made its first appearance in jEdit 2.1pre1. Thus, this version requires jEdit 2.1pre1
or later.
|
New Features and Enhancements |
None.
|
Bug Fixes |
This release fixes the one known bug reported against the previous version -- certain
escape sequences in strings and character expressions would cause a spurious parse
error to be reported. Specifically, the following used to cause false error reports:
- '\"' (i.e. a quote char specified via the escape, which is not necessary).
- '\\'
- "....\\" (i.e. String ending with an escaped \)
|
Other Functional Changes |
-
Made fully compatible with jEdit 2.1pre1. It now requires that version or a later one.
-
Now displays a wait cursor while parsing.
-
Opening the JBrowse window is now available as an EditAction (jbrowse.open).
|
Internal Changes |
-
JBrowsePlugin now extends EditPlugin, rather than implementing Plugin.
-
JBrowsePlugin no longer uses the now deprecated jEdit.addOptionPane(), instead
implements createOptionPane().
-
JBrowsePlugin no longer uses the now deprecated jEdit.addPluginAction(), instead
creates an EditAction and associates it with a menu item using createMenuItems().
-
Made more progress in the effort to reduce dependencies by implementing
a PropertyAccessor class and adding the method getPropertyAccessor() to
the JBrowse.Activator class. Now the only dependency on jEdit outside
of its Activator class (JBrowsePlugin) are limited to the OptionPane class.
This is scheduled to be addressed with the jEdit 2.1pre3 release.
|
0.9.7 (released Sept. 24, 1999) |
Introduction |
This version focuses on minor improvements and fixes as well as establishing
a better foundation for the future.
|
New Features and Enhancements |
-
Added logic to find and display syntax errors in the parsed file which preclude a proper
analysis of the intended hierarchy. All such errors are displayed in the tree as nodes
with an exclamation mark icon. An error indicator has been added as well, this will
display an exclamation mark icon and a count of errors next to the buttons on the
JBrowse tab.
Note: the goal here is not to find all errors for you (there is no point in
duplicating all that logic from a compiler) but simply to prevent the browser
from failing to display and identifying those errors that make it impossible to
build a displayable element.
-
Created separate options to control the minimum visibility level to be displayed
for top-level vs. member elements.
-
Implemented "invisible nodes", a mechanism, whereby nodes can dynamically determine
whether they should be displayed or suppressed. Now each parse creates all nodes and the
current filter options specify which of these nodes to display, and not how to parse
(therefore you no longer need to re-parse when changes to the filterOptions are made
(e.g. the selection as to whether attributes are to be displayed).
-
The tips displayed when the mouse pointer is held above an element in the tree are more
useful -- they now display information on the related element using the "inverse"
of the current display options (e.g. if the node doesn't show line numbers then
the tip will, etc.)
-
Added a status bar that displays the total number of classes, interfaces, methods and
attributes found by the parse. (Also added an option to control toggle its display).
-
Added a "resize" button that will adjust the width of the JBrowse window so that
the widest visible element in the tree and the status bar (if shown) will be visible
without scrolling. You may find it useful to adjust the width using this control after
changing options or expanding tree nodes.
|
Bug Fixes |
-
Fixed bug which would cause parsing to fail (null pointer exception) on empty statements
(e.g. ";" on a line by itself).
-
Fixed bug which would cause parsing to fail (class cast exception) when a top-level class
or interface had a visibility which was lower than that set for display by the option
setting.
-
Fixed problem that caused parsing to fail (java.util.NoSuchElementException)
when a string contained one escaped double quote.
-
Fixed bug that would cause parsing to fail (java.util.NoSuchElementException)
when a line contained an unterminated string (i.e. a single double quote).
|
Other Functional Changes |
-
Removed the compatibility code previously included in order to support versions of jEdit older
than 1.7pre5, specifically, removed classes JBrowseTSLOld and JBrowseTSL. Thus, JBrowse
now requires jEdit 1.7pre5 or newer.
-
Improved display speed by not updating the tree model as nodes are being created,
the model is reloaded once at the end of parsing or when changes are made
to any display or filter options.
-
Minor improvement in icon and text alignment in the tree.
-
Now only inserts a package member node if its opening "{" is found (this prevents
"un-commented" comments from generating spurious classes as easily (e.g. a
line like "*/ This class is not required */" previously generated a node for the class "is")
-
Updated html docs and added this document
|
Internal Changes |
The code has been completely re-organized, both in preparation for implementing
inner-class support and to allow plugable replacement of the parsing code. In
particular much of the code has been separated into functional components that
have much fewer interdependencies:
-
Model
- the classes that represent the elements and their hierarchy, i.e. UMLElement and
its descendants and the UMLTree.Node root and its children, respectively.
-
GUI
- the classes that present the visual interface, specifically
the UMLTree classes the JBrowse class that contains the dialog,
and its tabs and panels, etc.
-
Parser
- the class that uses a particular source to build a model, e.g. JBrowseLineParser.
-
Source
- the classes that define the methods that are needed to traverse a source of
class file hierarchy information, e.g. JEditLineSource and TokenSource
-
Activator
- the classes that establish the interface between the functionality
of the other components and their environment, this consists of a class that
implements the JBrowse.Activator interface and its helper classes,
e.g. JBrowsePlugin defines this interface for the above components
and the jEdit environment.
|
0.9.6 (released July 18, 1999) |
This is the first version of JBrowse to be publicly released. |