Implementation Objectives: mgui-core-1.0.0-beta

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 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.



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.


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 for the Matlab code, and Oostendorp et al (1989) for the theory.


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.


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.

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%


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


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


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.


item status priority description
Data Table Tree Node Not Started High A proper tree node and associated icon should be implemented for InterfaceDataTable.

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

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.
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License