## NeXtMidas Swing Requirements

This is a living document that will be updated by NeXtMidas developers as new requirements are discovered.

- Based on Java 1.4
- Must have value-added features over builders
- Must be drop-in replacement from macro language perspective (Those macros containing calls to invoke() will need wrappers)
- Drag and Drop for Files
- Drag and Drop configuration (controls)
- Control panel placement should be unrestricted
- Detachable tabs
- Size control: must be "stretchable"
- Compressed/full view (collapsable portions of display)
- Movable head: change the display in which a window appears
- Menubar option

MSZ Comments on Macro/Graphic Improvements

- Better Scoping - ie SUBROUTINES vs PROCEDURES
- Needs to be able to STOP a macro and POPUP a graphic message
- Blocking vs Non-Blocking Dialogs/Complex Dialogs. Java Types are:

- Application Specific
- Modal - no input system wide
- Non-modal - non-blocking
- Another type???

- MMP files -- does not like, hard to understand, replace with XML
- Easier hide/show of controls
- Easier to make "beans" - I create control, treat it as an "xxx" control
- Need to pass object into control so it can maintain state. For example, I clicked on row one to cause this menu to come up, action should be associated with row 1 even if I selected row 2 while the menu was up.
- Splash Screens -- come with Java 5
- ICONS associated with controls
- More flexibility on where I place a plot. So I can place with menu bar, toolbars,...

Beth Hassler Comments on using Swing components with NeXtMidas GUIs

- Need to remove the panel margins when adding the control section to the MidasControls component. It's distracting and causes sizing issues. Maybe this isn't critical, as I believe most people building a gui from scractch will use Swing components instead of the gcontrols. In my case, I had initially thought about doing a mix of both.
- Need to fix any issues with regard to the Midas display components being "heavyweight". When trying to draw a menubar pulldown over the displays, the menubar would not display on top of the midas display component.
- The MidasDisplay component needs to incorporate a "title".
- There are still refresh issues with panel expose events. This is especially noticeable when using tabbed panels.
- Is there a smart way we can access the macro results table from these gui callbacks?

Pete Perrino Discussion -- 14MAY07

- "Give the X-Midas user's ability to use Java"
- Consider X-Midas limitiations in the API. Can we have a table/xml form of all objects?? This way the API does not have to be re-documented when used from X-Midas as tables and not objects.
- For XBC, consider running a complicated option like BOT or AUDIO condition X-Midas options
- Currently too much restriction on controls location.
- Likes idea of defining which mouse button brings up a menu and what class handles the menu.
- Macro Version of Objects - Can we have an import or use the new command to do something like have a live macro OBJECT. Then procedure in the macro can be used as the callback. Something like

- import nxm.myopt.mymacro.mm
- new nxm.myopt.mymacro mymacro
- invoke mymacro.myprocedure or set the callback

- Want to be able to build dialogs out of macros and then plug them in as GCONTROLS
- Listener concepts are important