This page outlines the implementation objectives for the Launchpad milestone "mgui-core-1.0.0-beta". This is the initial release proposal for mgui-core.
Proposed release date: 30 October 2011
Executive Summary
This is to be the initial official beta release for mgui-core (and the modelGUI Project in general). The Features section details the outstanding feature proposals which should be implemented by the release date. The Issues and Bugs section details the outstanding issues and bugs that have been identified and which should be fixed by the release date.
The general target for this release is to have three main Series of the modelGUI Project implemented (core, exec, and neuro), with preliminary testing completed. The release will be beta, since it covers a broad spectrum of functionality and new issues and bugs are anticipated. The release will be publicized through this wiki, through Launchpad, through the NeuroPI website, through personal correspondence, and possibly through linking with other forums such as java.net and NITRC.
The minimum requirement for this milestone is to have all items and issues with priority High implemented or fixed; lower priority items will be addressed as time and resources allow.
Features
General
item | status | priority | description |
---|---|---|---|
Workspaces | Partial | High | A general semantics for a "workspace"; a workspace will simply be the object representing an init file; i.e., a particular Environment instantiation; A GUI should be available at start-up (if user desires) to choose from a list, or create a new workspace (also relevant for mgui-exec) |
Projects | Partial | High | A general semantics for a "project", which can hold specific parameters, depending on its purpose. A project should provide an organizational structure for performing some common task; for example, specifying a specific directory structure or data source design. A project should NOT be an interface object (i.e., should not provide a direct interface to underlying data - all interfaces objects should be contained by a Model, see below); rather, it should somehow facilitate the use of interface objects |
Models | Partial | High | A general sementics for a "model", which is a container for interface objects; models themselves are instances of interface objects; however they cannot be themselves contained. |
XML DTDs | Not started | Low | Design, implement, and document Document Type Definitions (DTDs) for all instances of InterfaceXMLObject. This requires an implementation of the getDTD() method. |
Documentation | Partial | High | Ensure that all classes and public methods have associated Javadoc comments. |
Attributes Dialog | Implemented | High | Implement a generalized attributes dialog box to view and modify attributes for interface objects. Also implement a categorization for attributes to better organize them and prevent overly long lists in both tree nodes and dialogs. |
Access control | Partial | Medium | Change most public members to protected or private, if there is no need for them to be visible; this is in accordance with Sun's Java coding standards. |
Threading Semantics | Not started | Medium | Implement smarter threading semantics, which determines functionality based upon running worker threads. This may include job queues and object locking. |
mgui.geometry
item | status | priority | description |
---|---|---|---|
Geometry Functions | Partial | High | Test and verify all method implementations to ensure that they behave as specified and return correct results. Tag each method as verified (or experimental), using Javadoc tags. |
Multiple channels for Grid3D | Partial | Medium | Implement multiple channels for Grid3D, identified by a key string. See also "Multiple channels for Volume3DInt". Allow for these channels to be ordered (top to bottom), and mixed together as overlays. Each channel should have its own colour map. |
Mesh Laplacian | Not started | Low | Class MeshFunctions: Implement a method to generate a discrete Laplacian (2nd spatial derivative) on a 3D mesh. See http://eeg.sourceforge.net/doc_m2html/bioelectromagnetism/mesh_laplacian.html for the Matlab code, and Oostendorp et al (1989) for the theory. |
mgui.interfaces
item | status | priority | description |
---|---|---|---|
Cut/Copy/Paste | Not Started | Medium | Implement cut/copy/paste functionality for instances of InterfaceObject. See the java.awt.datatransfer package and this article. |
Drag & Drop | Partial | Low | Implement drag-and-drop functionality for instances of InterfaceObject. Particularly within-tree and tree-to-graphic-panel. See this article. |
ProgressUpdater | Partial | Medium | Add the ProgressUpdater interface as an argument to all (potentially) intensive processes, and ensure that these processes update their progress. Replace InterfaceProgressBar arguments with ProgressUpdater (which the former implements). Ensure also that all methods which receive instances of InterfaceProgressBar as arguments provide a Foxtrot implementation which places the call to the blocking method inside a Foxtrot Job or Task thread. See MeshFunctions.getConvexHull for an example. |
Improved Display Panel Layout | Partial | High | Improve the layout scheme for displaying windows (InterfaceGraphic objects). Include custom layout options and tabs for multiple layout instances. |
mgui.interfaces.datasources
item | status | priority | description |
---|---|---|---|
Data Source Panel | Partial | High | Revamp InterfaceDatasourcePanel into an intuitive GUI for browsing, creating, and modifying data sources |
Query Builder Dialog | Not Started | Medium | Design and implement a dialog box which aids in the construction of data source queries |
Data Table Window | Not Started | High | The Data Table Window has data access issues which cause it to be unacceptably slow, particularly with the JDBC-ODBC bridge driver. This should be fixed, and possibly reclassified as a bug. |
mgui.interfaces.graphics
item | status | priority | description |
---|---|---|---|
Shape Picking | Partial | High | Improve 3D shape picking to allow multiple shapes to be accessed and selected; see Bug 418103. Also, implement a means of picking 2D shapes via InterfaceGraphic2D. |
Lighting | Partial | Low | Allow multiple light sources and resolve Bug 418113 |
2D Zooming | Partial | High | Implement tools for zooming to model extents, zooming to shape extents, zooming to a rectangle, and zooming to 150% |
mgui.interfaces.graphs
item | status | priority | description |
---|---|---|---|
Graph Display Panel | Partial | Medium | Improve InterfaceGraphDisplay to better display Jung graphs; particularly focus on standardizing zoom and pan tools to work the same as those for Graphic 2D Panel |
mgui.interfaces.maps
item | status | priority | description |
---|---|---|---|
Continuous Maps GUI | Implemented | Low | Currently changes made through the continuous map category of InterfaceMapsPanel are effectively immediately. It is more desirable to have a temporary map and "Apply" and "Revert" buttons to prevent inadvertent changes |
mgui.interfaces.shapes
item | status | priority | description |
---|---|---|---|
Tree Node Popup Menus | Partial | High | Complete implementations for all items in tree context menu; this includes cut/copy/paste (see above), create new, delete, hide/unhide. |
Multiple channels for Volume3DInt | May drop | Medium | As in Grid3D, handle multiple channels, and allow for these channels to be ordered (top to bottom), and mixed together as overlays. Each channel should have its own colour map. |
Volume3DInt Overlay Set | Partial | High | In conjunction with the above, develop a specialized set for Volume3DInt, which produces a single overlay image from its members, based upon a sorted list and transparency levels. Members need not have identical dimensions or resolution; their resulting images are simply overlaid onto a composite image, which is used to generate 2D and 3D renderings. This can be used, for instance, to overlay functional and structural brain images, or anatomical atlases. |
Dynamic shape interface | Not started | Wishlist | Design and implement a means of updating a shape's values dynamically. Probably will involve an interaction with dynamic modelling components. |
Streamline 3D objects | Partial | Medium | Take better advantage of Java3D optimization for rendering and altering 3D nodes. Implement smarter updating; only update when necessary, etc. Attempt to implement "by-reference" solutions where possible. |
Multiple data links | Not started | Medium | Shape3DInt currently supports a single data link; i.e., linking an index data channel to a DataSource via LinkedDataStream. It is desirable to allow any number of such links. |
Section Set 2D | Partial | Medium | Implement a 2D section set, which allows section sets to be drawn on the sections of other section sets (i.e., as intersection lines). Provide the option to show either all sections, or only the currently displayed section if applicable. |
Shape Set Attribute Override | Partial | Medium | Implement a system to allow a shape set to override its children's attributes, using the "IsOverriding" attribute. This should respect hierarchical precedence (i.e., top-level sets override lower-level sets). This should also include selection sets. |
InterfaceShape | Implemented | Medium | Convert InterfaceShape to an abstract class and implement common methods and data representation there. |
mgui.interfaces.tables
item | status | priority | description |
---|---|---|---|
Data Table Tree Node | Not Started | High | A proper tree node and associated icon should be implemented for InterfaceDataTable. |
mgui.io
item | status | priority | description |
---|---|---|---|
Loaders and Writers | Partial | High | Reorganize inheritance such that loaders which return, or writers which write, the same type of values (shapes, vertex data, matrices, etc.) inherit from the same abstract class. |
Issues and Bugs
mgui.interfaces.graphics
issue | id | status | priority | description |
---|---|---|---|---|
Shape Picking | 418103 | Fixed | High | Picking with multiple shapes returns an arbitrary selection, rather than the top shape. UPDATE 04/05/10: fixed; picking now selects the correct shape and node. |
3D Light Sources | 418113 | Unresolved | Medium | Light nodes occur in multiple 3D windows; it is desirable to have light nodes which are exclusive for a particular window instance |
Texture3D in Ubuntu | 421606 | Unresolved | High | A ClassCastException is thrown from the J3D master thread under Ubuntu, which does not occur in Windows. This may be a Java3D bug (see here) |
Graphics3D scene node | 423278 | Unresolved | High | When an InterfaceGraphic3D window is destroyed, it does not appear to release its Java3D scene node. This is evident when a new window is set to the same model; a second light source is visible. This is a potential memory leak. |
Right-click in Ubuntu | N/A | Workaround | Medium | An attempt to right-drag in Ubuntu (Graphics 2D or 3D window) results in a context menu; apparently there is no differentiation between right-click and right drag, as in Windows. This might be resolved by playing with mouse listeners; otherwise the zoom mechanism may have to be changed for this platform (e.g., using the control key). Possibly look-and-feel specific; alternative LnFs may provide a useful workaround. WORKAROUND: CTRL-right-drag now also zooms |
Volume3DInt won't destroy properly | 429406 | Unresolved | Critical | When using InterfaceVolumePanel to load volumes; if a volume is deleted and another one loaded, the 3D rendering of the shape is a mixture of the current and previous volumes. Somehow the Texture3D object persists despite being deleted and detached from the parent node. |