The entire project is called CharGer, which includes the CharGer conceptual graph editor, and the Conceptual Requirements Acquisition and Formation Tool (CRAFT) subsystem.
ENHANCEMENTS DONE:
version 3.5b "Cold Snap"
Improved memory efficiency and plugged many memory leaks (thanks to David Phillips!)
Converted CharGer's graphics all to Graphics2D to use floating point valued points instead of int.
Improved appearance making things a bit sharper and drawing actors and relations better with arcs.
FindClippingPoint for an ACTOR now takes into account that the actual boundary
is 1/2 the way from the usual clipping point (on the rect) to the center.
Provided options for black-and-white and also grayscale (both in "Change Color.." and on the Preferences panel)
Changed activation mechanism to account for actors with varying numbers of arguments
version 3.4b "Valentine"
Removed preferences item to set kind of image file being copy/pasted, since it never worked anyway.
Changed the set of graphics formats available for export (thanks to freehep.org)
Vector graphics formats: EPS, PDF, SVG and EMF
Raster (bitmap) graphics formats: GIF and PNG
"lookup" actor (and dbfind) can have any number of output concepts associated with a single lookup key.
Changed preferences files' suffixes to .PREF so they won't conflict with Windows profile (.PRF) files
Improved stability during editing and file saving.
Some built-in graph metrics can be displayed in a text window.
CharGer now requires Java 1.5 or greater.
Restricts undo/redo to 10 levels only, due to its memory consumption.
Handles certain XML-special characters correctly.
Copy/Paste now lets you paste a graph into another application as an image.
version 3.3b "Hurricane"
The copying of co-referents is now only enabled if actors are enabled in Preferences
Negation via "cuts" are now supported.
Improved button icons in the toolbox on the editing window.
Added the ability to draw "cuts" (i.e., negated contexts)
Improved robustness when saving graph files
Concept type should have option of multiple wordnet senses; e.g., "workflow_log"
Zooming scale shows as a percentage in the top border of the drawing window.
Handle graphs in knowledge summary.
A "summarize what is known" option has been implemented, to form a crude English version of
everything in open graphs and grids.
Types can be gathered from graphs and repertory grids and then added automatically to a type hierarchy.
A Wordnet synset (word-sense) entry can be added to any node.
RepGrid : if a term (or sub-term) has already had a meaning chosen in a previous query, then
suggest it as the default.
If rep grid element duplicates an existing one, should just use the previous one.
version 3.2b
CharGer can now auto-detect the kind of file being read, whether CG or CGX
Repertory grid can be edited and diadic elicitation is supported.
Repertory grid can be exported to Burmeister (*.CXT) file
Footer option (on by default) for printing graphs and grids.
Repertory grid can be printed
"Duplicate" command added to graph edit menu, bypassing clipboard.
CGX (conceptual graphs in XML) now being used as an internal storage format.
Wordnet interface available in an elementary way.
version 3.1b
Repertory Grid interface installed through the CRAFT tool window.
Trigger and autonomous actors can now be constructed, either through the plugin interface (see manual)
or as built-ins.
Find and find-again commands for node labels has been implemented.
GraphUpdater updates referents across co-referent links when concept referents change
Added a color option to set a default black-and-white color scheme.
Added a display option to draw outlines for all nodes (useful when doing black and white)
Changing cursor appearance when it's over a context border, since they're so hard to select.
version 3.0b
CharGer now fully dependent on JDK 1.4.1 or above (if that's an enhancement ...)
Zooming now operational
Export works to PNG, JPG, BMP, PSD (Photoshop) and TGA files. (some disabled as of v3.4b5)
Actor animation has been improved.
User can adjust colors on any node and also establish a new default color scheme.
Editing of labels has been changed to accommodate zooming and scrolling.
Change internal representation to allow for varying colors
version 2.6b
File processing and naming improved.
actor plug-in interface developed, and simple actor plug-ins implemented
internal changes to use more standard JDK classes and removing un-needed charger classes.
default preferences now kept in the .jar file
modality (graph purpose) labels are now off by default
version 2.5b
changes made to file structure: default preferences and gifs are in the jar file (or class hierarchy)
user can now optioanlly access all local fonts, not just a select few
Page Setup... menu item added
several printing enhancements and bug fixes
version 2.4b
coreferent links are correctly imported from CGIF (2.4a04)
drawing area automatically enlarges to enclose graph (2.4a02)
relation labels are defined similarly to type labels.
relation hierarchies use relation labels, rather than tied to actual relations (2.4a03)
coreferent links are shown correctly as dashed lines (2.4a03)
version 2.3b
A natural language paraphrase feature, to araphrase a graph in English (other languages on the way)
CG operations: match, join on selected concept
"Unlimited" undo/redo levels
Adjustable parameters for the matching scheme applied to joins and matching
version 2.2b
A number of editing checks with improved error messages
+ Import the CGIF format
Put graph information in Notio comment
Added many preferences to the preferences panel
Make Generic menu option, for removing referents of selected nodes.
version 2.1b
Optimize redraw during drags by presetting the selected node set before dragging.
Currently searches linearly through all graph objects at each redraw (ugh!)
Use the arrow keys to make small adjustments in the positioning of selected
Concepts, Relations, and Actors icons.
An undo facility!
Implemented as a complete save of prev graph as a string.
Save icons as static Image variables in EditFrame to eliminate file reads.
Shortcut keys to invoke editing tools.
version 2.0b
Some font flexibility in displaying editor frames.
Cut/Copy/Paste/Clear implemented.
A remove-context facility
When first selecting a node (clicking) it should be marked as selected???
Short-cut keys for editing modes, e.g., "c" "r" ">" "-" "<" etc.
Put all the button controls on a panel that's added to this frame
Auto resizing of CanvasPanel when frame window is re-sized.
UPDATED many things to accommodate the new (and completely different) AWT model in Java 1.1
Arrowhead point should lie slightly toward its destination; looks like a job for Trig!
Have drag operations first identify what's being dragged, and then carry that shape along with it.
Saving and retrieving graphs
Save to a file
Read from a file
Parse text label referent for type, etc.
Make edges thicker width
Selection of a group of objects
Font flexibility.
Contexts
Double-click on a node allow one to edit its legend
Arrows should be clipped at the edge of concepts and relations as well as contexts.
Printing contents of an EditFrame
scrolling the canvas (pretty much)
Put a small circle at midpt of GEdges so user can delete them too.
PRINTING: No dots on edges; i.e., draw with boolean as whether it's editable
When dragging, show in the status line what's being dragged.
Toolbar icons
Uses File Dialog instead of silly text business for handling input/output.
Numbered relation/actor arcs supported
When entering an edit frame, if it's loaded, select is default,
Export the CGIF format
classes encapsulated in a Java package "charger" and internal class names adjusted
Alignment of objects
Have each graph frame run in its own thread
|
ENHANCEMENTS PLANNED:
It would be nice if undo/redo were able to maintain all internal connections (e.g., to
actors) so that it's safer to have actors running along with an undo.
Wordnet preferences file (from the JWNL package) should be bundled as an input stream, so that the
user doesn't have to deal with it. Provide a CharGer preference showing the dictionary path location.
Repeated pastes should act like duplicate and continue to be offset.
Referent fields can also contain things like *r != *s, etc.
Two-word phrases can be placed in a type hierarchy automatically.
knowledge summary: actors like displaybar should be on a "don't show" list.
CraftWindow: Some way for the user to know what overall arity of a relation is, even though they're only
shown binary combinations.
Dragging to a context should insert ALL of the selection into that context; currently everything
(except for objects which are themselves already in a context)
is dragged the same way, with nodes inserted in whatever context they land in.
Find should have an "ignore case" and "full word" option.
Internationalization of code; i.e., all strings stored as Unicode identifiers (crude but effective)
A resize-context facility
A search-and-replace facility for text labels (in the View menu)
Consistency checking on types and relations
a "validate graph" button that checks for consistency up to this point
Before adding a new node, make sure it won't overlap the bounds of another node.
Shift double-click will allow a second edit-legend mode: one constrained to a list.
Type definitions mechanisms
Relation definitions mechanisms
Actors defined in terms of other actors
Schema definition in terms of lambda abstraction
Definition of individuals and whether they conform to a type.
A "note" facility that is added onto a comment.
A "commit" operation that adds this graph to a knowledge base.
Many iterations occur through all graph objects -- a faster iterator (one pass) would be nice
Use a mouse-click or other user event to single step through activation
|
BUGS IDENTIFIED:
If a graph with embedded Wordnet senses is opened without Wordnet being available, then the sense and offset
information will be lost, possibly resulting in corruption since the offset is set to 0.
Duplicate attributes in a repgrid need to be caught and not repeated
Under LINUX, windows may not be getting the same windowActivated events as under OS X.
In particular, the craft window doesn't automatically refresh with all the tuples.
Graph objects shouldn't be able to be placed in a negative part of the canvas (e.g., x= -5, etc.)
Occasionally a knowledge source doesn't get forgotten, but since its window is gone, getAllGraphs
craps out. Need to find out if it happens in getAllGrids too.
Knowledge summary window should be closed automatically by somebody.
Transcript java won't log an answer without exception
Changing a cell value in a rep grid doesn't get logged to the transcript.
after using the arrow keys to move things on the canvas, the canvas doesn't have the keyboard
focus anymore.
updateGEdge is really messed up -- it shouldn't have to reconstruct the edge every
time it's called!
Starting up a graph should involve checking *every* actor, not just triggers.
Performing "undo" or "redo" on a graph disconnects any plugins that are currently executing.
Old plug-ins remain and a new instance of the plugin is created by the new actors.
Disabling actors doesn't disable any actor's timers. Disable actors should dispose of any actor
instances that have been created.
Deleting an edge should invoke the updating routines on its ends.
|
BUGS FIXED:
version 3.4b
version 3.3b
Sometimes writing to a file was interrupted, resulting in trashing the file and leaving it zero length.
This was solved by writing first to a temp file and renaming.
Labels on concepts, relations, etc. are now XML-safe: symbols &, <, >, ", and ' are quoted.
Lines of identity drawn across context boundaries are no longer corrupted if drawn in the "wrong" direction.
Undo was corrupting contexts if any of the context's enclosed concepts had a referent, because setting a referent
(even initially) caused resizing of the context, sometimes with a default concept rectangle.
Fixed by providing an option to setReferent telling it not to resize.
Duplicate (and possibly paste) didn't paste all links, apparent problem in parsing the paste.
problem was caused by failure to include links in the copy!
Sentence in CraftWindow seemed to think c2 is always output, even if it's not. Sentence was re-worded.
There is a paste/duplicate bug when pasting/duplicating a context:
paste/dup results in a context that is apparently being unioned with a default 0,0,50,30 rectangle.
Undo seems to solve the problem: after that, the same paste with the same clipboard works correctly.
Undo's parse must be fixing a problem with who the outermost graph is?
Problem was caused by the undo command creating a new graph that was not explicitly attached to
its owner frame anymore, resulting in problems because un-attached graphs do not get re-sized.
Repgrid acquiring senses: if first term is already defined, then suceeding terms do not seem to
have their appropriate initial (previous) values - i.e., they are defined from scratch.
Repgrid acquiring senses: if look-for-existing-default part is cancelled, then acquisition reverts to
the longest phrase first part, which may cause some terms to be queried twice.
version 3.2b
An arrow that crosses context boundaries (e.g., to an actor) doesn't get moved when either of its ends
is moved. Seems to be logically intact, but just is drawn wrong.
Perhaps related to problems with id's etc. in parseOneObject.
Doesn't seem to happen with corefs, just actors.
Caused by switching an arrow's owner to a less-deeply nested graph: the detaching process
erroneously called disconnectObject which detached the link's ends.
Wordnet XML form seems to have "null" for the term label instead of the term itself. Occurs during parsing.
Fixed by removing attempt to validate wordnet descriptor right when it's input.
MAJOR: arrows that link things at the same nesting level may be stored before both of their ends.
Option 1: on input, keep a list of id's not found and resolve when we're done
CHOOSE: Option 2: on output, defer saving any arrow whose ends haven't yet been saved (easier)
Craft window won't find subgraphs in nested contexts if there is no subgraph at the outer level
Preferences panel doesn't show preview objects anymore FIXED by looking in charger.obj package
Rep grid window doesn't allow editing of element or attribute labels once they're entered. FIXED
Rep grid window seems to think it needs saving even when it hasn't been changed. FIXED by
remembering to set default closing action to none.
Not a bug: find looks for substrings too, so "proposition" matches a search string "sit"
version 3.1b
Closing an EditFrame now removes it from the EditFrameList.
Updating a concept's referent due to changing a coreferent link now produces correct
loops when the updated concept is the output of an actor. Solved not by marking, but
by stopping when referents settle down and don't change.
Autonomous changes to a graph (i.e., those not the result of user editing) do not get
detected as a graph change for purposes of auto-save, etc.
Coref links are now updated before actor firing links.
Changed Enumerations to Iterator, except for where external classes require it.
version 3.0b
Saving a file over an existing one is now caught.
Numerous focus errors seem to be fixed by JDK 1.4.1 as well as adjustments in code.
version 2.4b
Fixed a problem whereby Copying a context with its contents caused the contents to be
erroneously duplicated.
version 2.3b
Fixed a problem in using "Save" -- correct directory is now selected.
version 2.2b
Sometimes the canvas panel no longer listens to keystrokes/presses.
Moving a context that is (a) nested and (b) has nested contexts, calculates its bounds
before making its rectangle, resulting in stretched contexts.
Fixed by creating a new setCenterOnly method that ignores adjustments
version 2.1b
Dragging while shift down doesn't alter selection.
Closing the Hub invokes a CloseOutAll even though there aren't any windows open.
Clicking on a window's close button will close it -- "Cancel" is equivalent to "Don't Save"
fixed by changing the defaultClose parameters.
When moving an object out of a context, the context re-sizes as though the object were still
where it was before moving; makes for a lot of empty space.
Making a context where one component is already a context gets interpreted as an
"overlapping context".
Making a context should cause its enclosing graph to re-size itself (since it might also
be a context). Such an algorithm should proceed recursively outward, just in case.
Changing Dim for a context doesn't preserve center, instead preserves the upper left corner.
Editing context's name will now force a re-size if the label is too wide.
Moving a context doesn't work if the context has contexts nested in it.
Fixed by noting that the center point (destination) of a moved context may in fact lie
within one of its components.
Save dialog: saving a file under a different name should rename the graph in the edit frame
Filenames are case-sensitive; open doesn't find ".CG" files because it's only looking for
lowercase. Also, file list sorting is case sensitive, making Windows filenames show
up differently.
Mouseclicked doesn't know that mousepressed happened; in the case of selections, thinks
things were already selected (because mousepressed selected them) and thus unselects.
Using cmd-delete doesn't delete all the selection. Problem with live enumerations' original
list getting altered during the enumerating.
Editing text in an editing window uses global default font information, not the original
information used in setting up the frame. Each edit frame should have its own font info.
Dragging a concept out of a context broke its actor links, even when allow links is enabled.
Select All doesn't seem to enable the menus correctly.
New Graph should just be "New" , have VK_N shortcut, and should set itself as current frame.
When cutting/Copying, an arrow seems to go with the selection -- vectorizeSelection should
have an option so that it only includes arrows with both ends in its selection.
Fixed. invoke a "trim" function so that non-terminated lines go away.
Actor name choice menu doesn't disappear.
version 2.0b
When an actor graph is created with the database tool, activation isn't animated.
Fixed. The graph thought it had no ownerframe.
Moving a node inside a context causes failures -- either it doesn't know what context
the moved node should be in, or the "dot" on the arrow become HUGE, etc.
sometimes it thinks the node is in the outer context.
Tool tips are covered up by the canvas (fixed by making most components known to Swing)
Fonts are set correctly, but node sizes not refreshed and text edit boxes still too thin.
Scroll pane resizes correctly, but its viewport seems to have the right size for the
previous re-size, whatever that was. (fixed by using revalidate on the ScrollPane)
Editing a label with the "abc" tool positions the text edit box right where it should be;
but using double-click positions the text to the right and below; should be the same.
Editing a context's name causes name to then appear in the center, instead of in corner.
(repaint automatically repositions it later).
Arrows to actors are cut across contexts, regardless of what preferences are set.
seems to cut 1st, 3rd, 5th, arrow as stored in myedges
makeArrowPoints has a problem with an edge pointing straight up or down
Clear All seems to be disabled... since toolbars implemented
BUG: text editing field does not lengthen to accommodate a longer original label
when edge is connected to a context, Arrow's draw seems to act like the context is wider
than it actually is. Fixed by re-writing the geometry.
BUG: Clear-graph button that wipes out the current window contents does not work
fixed in v0.4.
When trying to make a context inside another one, makeContext craps out at
Graph contextG = new Graph( ownedBy ); because ownedBy is null
FIXED by treating top level graph as special.
Selecting a context currently means selecting its contents automatically. This works well
for deleting, but not for moving, since the contents appear to be moved outside of the
context (i.e., its original rect). Also it appears the context itself is trying to be
made its own owner, resulting in fatal recursion...
related to this is that when a nested context is moved with its outer context, the
nested context keeps its old upper left point but gets re-sized. seems to be caused by
the fact that the nested context's contents are NOT themselves selected...
Fixed by rewriting the way nested contexts were identified.
Moving a context out of an enclosing one doesn't detach it! Just expands the rectangle!
Moving a plain node out of an enclosing context seems to work normally.
Can't edit the name of a context; probably hard-wired into the code. FIXED v1.1
creating a context with no dominating concepts (i.e., in the outer graph) doesn't work
IOManager has a problem with original positioning of a context.
Turned out to be that context was getting sized to its text label like a gnode.
BUG: when resizing a GNode, all edges connecting it need also to be re-calculated
decided to let each edge use its toObj and fromObj centers, rather than figure
out a bunch of trig functions...
Exception in thread "AWT-macos" java.lang.ClassCastException: Arrow: cannot cast to GNode
v0.4 solved by understanding that an edge might be selected by user when dragging.
Selection rectangle disappears after being drawn.
BUG: Root graph is marked as isSelected whenever?? any object is selected
Makecontext will try to make a "nested" context if a context by itself is selected
When dragging one object in a selection group, only that object's outline shows
during the drag. See comments in code.
When dragging an object, object should keep its position relative to the cursor;
currently the object always is positioned with its center at the cursor.
When extending a selection, the selection rectangle only encloses the extended part, so
making a context includes all the selection, but sets its rectangle to just the extended
part. This means that making a context may have to set its own rectangle.
|
PROBLEMS NOTED:
The EditManager actually performs the actions for the buttons on the EditFrame, while the
CanvasPanel performs the drawing for the EditFrame. This means that many
parameters are shared between EditFrame, EditManager, and CanvasPanel.
Filename vs. graph name: since a .CGX file has in it a graph name, should that become
the name of the graph and its window, or should the file name itself be the name?
For now, we will use the graph name in the file.
Objects' positions are all absolute, even if they are in a context. Positions of objects
that are in a context should be relative to the context bounds itself.
When selecting a group, the edges don't show up as selected. This is mostly for
efficiency, since to draw one during a drag would mean accessing both end objects.
|
PROBLEMS FIXED:
In a few cases, the GraphObject field myKind is used; in all others, the
getSuperclass method is used.
|