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:
-
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.
-
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.
-
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.
-
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.
-
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.
-
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:
-
There is no `File->Generate ...' command in jdraw (and the menu
separator above it is not there).
-
There is no `Edit->Mode' command in jdraw (and the menu separator
above it is not there).
-
There is no `Structure->Components' command in jdraw.
-
There is no `View->Hide Components' command in jdraw.
-
There is no `Tools' menu in jdraw.
-
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.
-
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.
-
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.
-
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?