Development Notes for GraphSketch1 (Preliminary Work for the Carneades GUI) Current version: 0.0.6 Date: July 10, 2008 ----- Current Line of Work: * Save/Load Graph to/from file - Done except for: - use use Jing to validate the file. ----- To Do: // This is personal for Matthias. The main list is at our launchpad site: http://launchpad.net/carneades Matthias Grabmair: * Maybe too much: Protocol changes to a Graph in a (loadable) log so that debugging from externals gets easier -> This is essential to debug Undo/Redo as well as new layouts * find a way to use files inside jar archives (e.g. aboutcarneades.png) Tom Gordon: Monday, July 14: - Add an icon to the Mac application (if we continue to provide one) - Help menu item, with integrated manual - More support for argumentation schemes: 1. some way to choose schemes from a list 2. option to select the premise role from a menu, where the options depend on the selected scheme 3. some way to list which premises are implicit, given the selected scheme and roles assigned thus far. (cf enthymemes) 4. XML schema for defining "argumentation scheme sets", as in Araucaria, but based on LKIF. 5. way to select the set or argumentation schemes to use - Toolbar needs some tools: - forwards/backwards - zoom - selection of cursor or hand (for scrolling) - printing - insert statement/argument - Layout refinements 1. inspector panel needs a minimum size, with some padding (space). All fields should always be visible. 2. option to layout from left to right, in addition from top to bottom 5. For color blind people and black and white printers, add an icon to statements to show their status: stated: no icon, white fill questioned: ? (question mark), yellow fill assumed true: + (plus sign), light green fill assumed false: - (minus sign), light red fill accepted: ✓ (check mark), darker green fill rejected: ✗ (x character), darker red fill 7. Add a View menu with menu items to control the layout: top/down, left/right, icons, colors, zoom factor, etc. Previous: - When an argument is selected an the "add premise" button is clicked, the new premise should be selected and, ideally, the cursor should be place in the content field of the inspector. (Later perhaps in the editable content box of the statemet node in the diagram.) - Similarly, when the "add argument" button is clicked in the statement inspector, the focus should be shift to inspector of the statement of the new premise, with the cursor in the content field. - Idea: Add a new menu, "Evaluate", with the following menu items: state, accept, assume true, assume false, accept, reject and reset - The insert argument menu item of the "Insert" menu should add both an argument and a new premise for this argument(done). The inspector panel should display this properties of this new premise. Rationale: almost all argument will be pro arguments and have at least one premise. The first thing users will usually do after creating an argument is to add a premise and begin to edit its properties. So this proposal would be a time saver in the usual case. (maybe wait until focus can be set) - Replace the content of the "About Carneades" window with the attached image. The window should not be scrollable or resizeable. The user should use the standard "close" button at the top of the window to close it. - The diagram is recentered as soon as some object is modified. This is good, but it would be better if it would be recentered also when the window is resized, before some object is modified. - I just tried to copy some text from another application to paste into the content field of a new statement. No go. Is this a limitation of the current version of JFX? 5. Draw a fine line around the standard, negated and complement fields, with a "proof standard" label, to make it clear that the negated and complement fields are properites of the proof standard, not the statement. (Nitpick: I prefer "proof standard" to "standard of proof", since it is more compact and also more idiomatic.) - Idea: replace "negated" and "complement" controls for proof standards with burden of proof controls: questioning: proponent or opponent; production: proposonent or opponent; persuasion: proponent or opponent. These controls should then adjust the proof standard behind the scenes accordingly. Needs further discussion. ----- Issues to take care of in existing code: * Refactor GraphControl to better make use of the selectedModels sequence. * Add a double id check validation on file load because otherwise the file loader will get the premise links wrong. Currently this is no problem if the program only opens files that have been created using it because of the fact that id's are not editable and their automatic creation prevents double occurances. * The visibility of the EditPanels is currently not bound but updated manually due to an exception happening when selecting the same element twice. Technically this is impossible because there is no bound value involved. Try to fix this at some point. * Find a way to avoid the Vertex width update in the beginning of the layout.compose() function. Right now it is necessary because the event cannot be triggered. * Find a better and more universal solution for where to put the invisible tree root. Graph class or CarneadesGraph class? Work over Treelayout accordingly. * Find a way to assign 0 to the x/y coordinated for the root vertex because they are currently bound to a null pointer object. This is no problem right now because it ends up being zero by default, but this is unclean and might change in future versions of the runtime and/or compiler. * replace the various compose()-calls on the layout object by an event-trigger when the graph gets altered. Forum post pending here. * Find a better solution for the Headsize-Problem. Also, currently the Headsize shift only work with upwards links. * Check whether there is a way to fix the "final variable workaround" in the edge conversion functions of the CarneadesGraph class. This might get fixed in later version of the compiler. ----- Known Bugs: ----- General Information: The current tree layout algorithm runs in O(n^2) time and O(n) space complexity. It does not check neighboring subtrees to align optimally, but rather positions them simply aside from each other. Also, there is no least-space-optimization as it is assumed that the user will want to move around and design the tree at will. Credit for the basic idea of the tree drawing algorithm go to: C. Buchheim, M. Junger, and S. Leipert. Improving Walker's algorithm to run in linear time. In Proc. Graph Drawing (GD), Lecture notes in computer science, ISSN 0302-9743, 2002. ------ Implementation of the MVC approach: The model-view-controller (MVC) architecture has been used as follows. The program is divided into three major packages: Argument, Graph and Controller. The argument package contains the model, the graph package the view and the controller package is self-explanatory. Classes in both the controller and graph packages import the argument package to be able to retrieve data to display (graph) and call for alterations (controller). Specifically, the top class "CarneadesGraph" in the graph package binds the ArgumentGraph it contains, thereby updating itself whenever the model changes. Moreover, the controller imports the view package to be able to configure it and maintain the limits of user interactions (e.g. depending on what is selected in the view). ------ Version history: 0.0.6 Added/modified features: * Statement search text field is no longer case sensitive. * Statement edit panel has been worked into new format and outfitted with ne components. * implemented Color scheme. * Credits frame added. * File save/saveAs added. * Blank toolbar inserted. * Centered graph upon display. * Fixed Bugs/Issues: * reappered file save bug fixed again. * Layout bug fixed in case a single node is wider than the sum of its subtrees. * Windows platform display bug fixed. - 0.0.5 Added/modified features: * Transferred to new compiler and library version. * Moved update calls to model for cleaner architecture. * Application runs from .jar now and is hence portable. Fixed Bugs/Issues: * Cleaned up public/private/protected attributes and functions due to new compiler version. * File save works correctly now. - 0.0.4 Transfer to new argument model. Updated file loader to cope with the new model. Added statement list component. Undo/Redo working. Dragging working. Added edit panel. - 0.0.3 Implemented features: Create a new argument graph Save an argument graph to an XML file, using the attached grammar. Open an argument graph from and XML file. Add/delete arguments from the graph Change the type of a premise (ordinary, exception, assumption) - 0.0.2 Basic Tree editing functionality. - 0.0.1 Basic Tree Preview.