Specification Change Orders
for the Prototyping Tool


New Menubar and Menus (gfisher, 19mar03)

The following is the new menu structure for the prototyping tool:


File   Edit   Tools   Structure   Style   View           Help

Here is an expansion of the menus:

File:
  New
  Open ...
  Import ...
  Revert
  Close
  Close All
  ---------------      
  Save
  Save As ...
  Save All
  ---------------
  Generate ...
  ---------------
  Print ...
  ---------------
  Exit
Edit:
  Undo
  Redo
  Repeat ...
  ---------------      
  Cut
  Copy
  Paste
  Duplicate
  Delete
  Select All
  ---------------
  Find ...
  Spell check ...
  ---------------
  Command ...
  ---------------
  Preferences ...
  ---------------
  Mode ->
    Edit
    Run
 
Tools:
  Drawing Toolbar
  Component Toolbar      
  Property Editor
  Script Editor
  Slide Show
  Explorer
Structure:
  Group
  Ungroup
  Regroup
  ---------------
  Flip Horizontal
  Flip Vertical
  Rotate 90 Clockwise
  Rotate 90 CounterCW
  ---------------
  Transform ->
    Precise Move ...
    Precise Stretch ...      
    Precise Scale ...
    Precise Rotate ...
    Precise Reshape ...
  Arrange ->
    Bring to Front
    Bring Forward
    Send Back
    Send to Back
  Align ->
    Left Sides
    Right Sides
    Bottoms
    Tops
    Vertical Centers
    Horizontal Centers
    Centers
    Left to Right
    Right to Left
    Bottom to Top
    Top to Bottom
    Align to Grid
  ---------------
  Number of Drawings
  Number of Components
 
Style:
  Font ...
  Text Size ->
  Text Style ->
  ---------------      
  Brush ->
    None
    -------
    <------
    ------>
    <----->
    - - - -
    -  -  -
    =======
    ---------------
    Color ...
    Edit ...
  Fill ->
    None
    white
    horz lines
    vert lines
    right diag
    left diag
    black
    ---------------
    Color ...
    Edit ...
View:
  Zoom In
  Zoom Out
  Normal Size
  Center Page
  Home
  ---------------      
  Gridding On
  Hide Grid Lines
  Grad Spacing ...
  ---------------
  Hide Drawing
  Hide Components
  Hide Text
  Show Grouping
  ---------------
  Layers ...
  Page ...
  ---------------
  Windows ->

Here are updated tool bars:

Components:
  Select
  Menubar
  Button
  Text Box
  Slider
  List
  Table
  Pane
  Frame
  Scroll Bar
  More Components:
    Tree
    ColorChooser
    FileChooser
    user defined ...      
Drawing:
  Select
  Move
  Stretch
  Scale
  Rotate
  Reshape
  Text
  Line
  MultiLine      
  Curve
  Ellipse
  Rectangle
  Polygon
  Shape
  Image
  Sensitize
 

The new menus are a combination of the current jdraw menus, the menus in the current prototyper requirements, plus some additional new commands. Note that some new "..." suffixes have been added to some of the items that did not have them before. Also some new item separators have been added. I'll do a full revision of the menu descriptions in Section 2.1 of the prototyper requirements. In the meantime, here's a summary of the changes reflected in the above new menu structure:

  1. The new `File' menu is a combination of jdraw and prototyper, plus new items. All of the prototyper items are there, with `Make Prototype' changed to `Generate ...'. `Revert', `Import ...', and `Print ...' are from jdraw. `Close All' and `Save All' are new. They apply to all open canvases, whereas `Close' and `Save' apply only to the current canvas.

  2. The new `Edit' menu is also a combination of jdraw and prototyper, plus new items. `Duplicate' comes from jdraw, and `Find ...' comes from the prototyper. `Spell Check ...' is new; it opens a standard spell check dialog that goes through all of the text in all components and drawings. The commands at the bottom of the current jdraw menu, starting with `Flip Horizontal', have all been moved to the new `Structure' menu. The new Edit->Command ...' item opens a simple BeanShell editor where the user can type in a scripting command. The `Preferences ...' item opens a simple preferences editing window which we can discuss at some later point. I'm thinking that it can just be a very simple text-style editor. The `Edit->Mode' command at the end was moved from the current prototyper `Tools' menu.

  3. The `Tools' menu is mostly from the current prototyper, with a few modifications. The `Menu Editor' is changed to a more general `Property Editor'. The way it works is to display a property editor for the currently selected drawing or component. If the currently selected component is a menu bar or menu, the property editor is a menu editor. There are other specific property editors for other components, which will be simpler versions of the property editors in netbeans. I'll do details of these soon. The ``Slide Show' item is new in the `Tools' menu; it opens a dialog that has the same commands as are as in the current `Slide Show' menu, but laid out in a dialog. We'll work out the details soon. The `Navigator' item in the current `Tools' menu is changed to `Explorer' in the new menu. Finally, the `Mode' item in the current prototyper `Tools' menu has been moved to the new `Edit' menu.

  4. The new `Structure' menu comes from the current `Structure' Edit', and `Align' menus in jdraw, and the `View', `Transform', and `Align' menus in the prototyper. `Group' and `Ungroup' are from jdraw. (See the note below about how they apply differently to drawings versus components). The `Regroup' command is new; it allows the user to run `Ungroup', change one or more elements of the group, then put them back together in the original group. Conceptually, `Regroup' undoes the most recent `Ungroup' command, even if there were edits or deletions made in between `Regroup' and `Ungroup'. The four `Flip' and `Rotate 90' commands were formerly in the jdraw `Edit' menu. The `Transform' commands are moved from the jdraw `Edit' menu and the prototyper `Transform' menu. The `Arrange' commands are moved from the jdraw `Structure' menu and `Transform->Arrange' prototyper menu. The `Align' commands are the same as in the current jdraw and prototyper, but they're moved from a top-level menu to a second-level pull-right menu. The `Number of Drawings' command is a rename of `Number of Graphics' from jdraw, and `Number of Components' does the same thing for components in the prototyper.

  5. The new `Style' menu has items from the current jdraw `Text', `Brush', and `Pattern' menus, and the current prototyper `Fill' menu, with some significant reformatting. A `Text' menu was missing from the prototyper, but should have been there. The first three items in the new `Style' menu are from jdraw `Text', with reformatting. Specifically, the inline font-size and text-style items in the current jdraw menu have been put into pull-right menus instead. The `Style->Brush' and `Style->Fill' are the current jdraw `Brush' and `Pattern' menus. They supersede what's in the current prototyper `Fill' menu.

  6. The new `View' menu has items from the jdraw `Options' menu and the prototyper `View' menu. `Zoom In' and `Zoom Out' are called `Reduce' and `Enlarge' in the jdraw `Options' menu. `Normal Size' is from jdraw `Options'. `Center Page' is new; it puts the current page in the center of the canvas (see below for more on paging). `Home' is from jdraw; it scrolls the drawing canvas to the upper left corner, so that the vertical scrollbar (if present) is all the way at the top and the horizontal scrollbar is all the way to the left. The `Hide Drawing' and `Hide Components' commands are show/hide toggles that do the same thing as the `Show/Hide' buttons in the toolbars; they've been moved off the toolbars into the menus. `Hide Text' is new; it's a show/hide toggle for all text graphics, and all text inside components, such as button names and label text. `Show Grouping' is also new; it puts a light grey rectangle around all groups, including nested groups. The `Layers ...' and `Page ...' commands are from the jdraw `Options' menu. The `Windows ->' pull right menu has a list of all open canvas windows. (Plus see below for more about how it's different in the prototyper versus jdraw).

An important feature of the new menu layout is that the menus for the prototyping tool are a proper superset of the jdraw menus. Here are the specific differences between the prototyper versus jdraw menus:

  1. There is no `File->Generate ...' command in jdraw (and the menu separator above it is not there).
  2. There is no `Edit->Mode' command in jdraw (and the menu separator above it is not there).
  3. There is no `Structure->Components' command in jdraw.
  4. There is no `View->Hide Components' command in jdraw.
  5. There is no `Tools' menu in jdraw.
  6. The first item in the `View->Windows' menu in jdraw is `Toolbar', followed by a separator. This is a checkbox menu item that has the same use as the `Drawing Toolbar' item in the `Tools' menu of the prototyper. Since jdraw has no `Tools' menu, the show/hide menu item for it goes in the `View->Windows' menu.
What this means is that the prototyper acts like a "plug in" to jdraw, the way we discussed in our last meeting.

Clarification of Drawing and Component Interaction (gfisher, 19mar03)

When any drawing initiates within an internal frame, it is constrained to stay within that internal frame. This form of constrained drawing works the same as drawing outside the boundary of a jdraw canvas works now. Namely, when the user drags the mouse outside of the internal frame boundary, the drawing continues, but it cannot be seen outside of the constrained area. If the user leaves the mouse button down while dragging outside but then moves back inside, the drawing continues where it left off. An internal frame should have scroll bars added when a drawn objects goes beyond its boundaries, in the same way that canvas scrollbars work.

When the user performs lassoing, it applies separately to drawing objects and components. Specifically, the lassoing behavior is based on which arrow tool the user has chosen, the one in the drawing tools or the one in the component tools. When lassoing graphics, components are ignored, and vice versa. When the user clicks on a graphic or component, it automatically chooses the arrow tool in the appropriate toolbar. This means that when the user starts lassoing, either graphics or components will be active.

Some Code Generation Ideas (gfisher, 19mar03)

Here are some basic ideas on how Java code generation can work.

  1. When an align command and group command are followed in immediate succession on a set of components, this successive pair of commands has a special effect. Namely, it places the components in a horizontal or vertical box, with the appropriate alignment.

  2. All of the drawing objects are collected into a single jpeg image and placed in the background of the generated GUI. Any boxes created by align/group command pairs are turned into javax.swing.Boxes.

  3. The page layout information in the drawing editor is totally ignored during code generation. This page information is strictly for formatting on a printer.

New name for the Prototyping Tool (gfisher, 19mar03)

How about "ProtoJ" as the name for the prototyping tool?