I would remove the right-click at all from normal interaction and leave it for
advanced users only.

While I'm not a big fan of the right-click either (try right-clicking on a touchscreen or tablet!), it does give us another "word" while using the language of the mouse. As long as it serves one, dedicated purpose, it doesn't bother me as much. Even better, label the right mouse button with an actual icon, like so:

http://www.jesseross.com/clients/etoile/hardware/mouse_diagram.png

In this diagram I have assumed that the right click pulls up a circular menu, and is thus labeled with a circular menu icon.

Considering mouse as our virtual hand, then the left click
should be "use the tool in hand/bare hand". From my point of view, the
right-click should be used for one of the following:
- bringing up a transient tool palette (circular/rectangular menu)
- bringing up a contextual menu (people are used to this from other
environments), everything in the menu should be accessible in other means (not like in many GTK/Gnome apps, where there are functions available only through
contextual menu)
- switch between pointer and another tool (here I am recosidering my thoughts
about his behaviour I have mentioned on the Wiki about pick&drop)

Rather than have a right click switch tools, I much prefer the display format in your game screenshot, where the tools are always present. Much like the Photoshop toolbar, having the tools present serves as an additional indicator of which is currently selected and, thus, what mode you are in.

Also, I think that the transient menu should serve as shortcut to the main menu
or other more complex action/tool picker.

I had considered that myself -- having the vertical menu accessible through the circular (transient) menu allows us to hide and show that menu easily.

Here's my proposal:
Both types have their advantages, so we should use both. Circular menus
should be used for items which don't change regularly and have few
top-level options, vertical menus should be use items which can change
regularly and have a lot of items. It makes the most sense for me to
use vertical menus to manage Component interaction with Objects (Text,
Table, Image, Audio, Person, Video, etc), and use circular menus to
manage interaction with the organizational items, such as Projects,
Documents, and Shelves and Applets.


I am confused here.

Sorry, I'll try to explain better. We have two "classes" of objects, which I termed "Containers" and "Content" in a different email. A container holds content: Projects (and Folders, if we have them), Documents and the Shelf are all examples of containers. I would include Applets (like OS X's Dashboard Widgets) in this group as well, since they are more like utility applications and are closely tied into the identity of the Shelf. Content includes the building blocks used to create a document: Text Objects, Image Objects, Table Objects, Audio Objects, People Objects, Video Objects, etc.

Containers are well defined by us regarding their use -- there are a limited number of things we can do with a container: make a new one, destroy it, add metadata to it, inspect its properties, etc. Content, however, we want to be flexible -- we want developers to invent novel ways of manipulating Object information via pluggable Components. Remember, Components include most of the menu items you would now find in GNUstep applications without the duplication of effort. For example, you might have a Select All Component that selects all the information in a document regardless of whether you're dealing with text or objects or people. Or, you might have a Color Adjustment Component that that can be used to change the color on an image or the color of text. We have no idea how many Components might be installed by a user.

Since circular menus are best for things where you know the number of items, and know that there will be not many items. Vertical menus are best for when you have lots of items and need flexibility. Since the number of menu items operating on containers are few, I would suggest that circular menus are the primary method of menu interaction with containers. Since we don't know how many installed Components a user might have, vertical menus make the most sense for interacting with Objects.

Here are my initial ideas for items in the circular menus (I'm sure
there are things I haven't thought of yet):

Project
-----------------------------
  - New
  -- Project
  -- Document
  -- Object
  -- Annotation
  - Duplicate
  - Hide/Show Annotations
  - Preferences
  -- Background
  -- Metadata


I would remove the "New" item. Creating new object in a project is dragging a
prototype/template into the project container.

This might be a good way as well.


Hide/Show annotations is too specific. I want Hide/Show images or hide/show green text in Lucida font with size <12pt. Or why do you think it should be
here?

I visualize Annotations as the scribbles you make over a Project to comment on it or show the relationships between items. I see this almost like a Shelf, that can be turned on or off. Maybe I'm wrong in that assumption?

Instead of "Preferences" I would use "Inspect" and the inspector panel will
pop-up. So my suggestion for default actions would be:

- duplicate
- destroy
- inspect

That would be fine too -- but I would prefer Destroy was Delete and it was handled through the Delete key on the keyboard... or else we have two different ways to do the exact same thing. The Delete key is already there, lets use it ad a dedicated key.

Document
-----------------------------
  - New Object
  - Duplicate
  - Save Checkpoint
  - Publish
  - View Checkpoint History
  - Synchronize (for multi-user documents)
  - Preferences
  -- Size
  -- Margins
  -- Metadata


New object - not necessary.

What exactly means "Save chackpoint"? I have several interpretations of that,
so
I would like to know yours.

See http://dromasoftware.com/etoile/mediawiki/index.php? title=Precognitive_FAQ where I talk about Versioning. A Checkpoint is a term that was introduced in the Etoile presentation "Making Computers Suck Less" by David and Nicolas. A checkpoint is simply a saved version of a document at a specific point in time. Because we assume that documents are always saved, if we want to create and track different versions of a document, we press the Save Checkpoint menu item and the document at that point in time is explicitly recorded. This is really only important in memory-lacking systems. On a system with a lot of memory, all points from the beginning of a document's life to the end is saved -- on memory-lacking systems, the most recent version of a document is preserved, as well as all checkpoints, while stages in between may be dropped as memory gets reduced.

What is "Publish" in this cotnext?

Publish is like Export -- it saves the document to a specific format for transfer to a non-Etoile system: PDF, Word Doc, Photoshop, etc. It could also be used to strip out all of the checkpoints from a document's history if you want to give a file to another Etoile user but don't want them to see what you had in the document previously.

What is "View checkpoint history"?

It lets you see the different saved versions of a document.

My suggestions:
- duplicate
- destroy
- sync
- inspect

Again, all fine except for Destroy, which should be Delete and should be handled by the Delete key.

Shelf
-----------------------------
  - New Applet


What is that?

We probably wouldn't need it, actually, since you could just download a new Applet and move it from the downloaded location to the Shelf, we wouldn't need it. Nevermind. :)

Applet
-----------------------------
  - Preferences
  -- Sticky
  -- (Additional Preferences as they relate to the specific Applet)


What is "Sticky"?

If you want an Applet to remain on screen when you hide the Shelf, you make it sticky. This could either be a preference, or a certain button that is toggled on.

All Objects would have two default items in their vertical menus:
Install New Component, and Link (to pipe data from one Object to
another). All others would be customizable.


What is "Install new component"?

I've changed my mind on this -- Components should just be downloaded and dragged and dropped into a vertical menu list in order to install them.

I agree with the "link", however, this is more complicated that it seems to
be...

I believe it. Remember, I just come up with the ideas... :)

You may notice that some standard menu items are missing: Undo, Redo,
Delete, Pick, Drop (or Cut, Copy, Paste). I suggest that these be made
Dedicated Keys.


Undo/redo/pick/drop/cut/copy/paste... should be global tools in global tool
shelf.

How is this better/easier than using dedicated keys?

Dedicated Keys
==============================

  - Zoom In
  - Zoom Out

Global magnifier tool - magnifier mouse cursor, accessible by a key.

  - Search (Search Again would be Shift-Search)

Global search tool.

With a search, you're already typing, though, so it makes more sense to have a Search key than a search tool you have to click on with the mouse.

  - Hide/Show Shelf

For advanced users + indicator of hidden shelf.

Yes -- the screen darkens when the Shelf is active.

- Scroll (for moving through a zoomed-in Project, I'll explain below)

In old applications it was called "pan" and the tools was "panning tool"
indicated by an open hand/palm cursor.

  - Pick (Pick a Copy would be Shift-Pick)
  - Drop (Drop a Copy would be Shift-Drop)

Tool with appropriate mouse cursor.

  - Undo
  - Redo

Global actions.

Note: You might notice that there are two kinds of things: Tools and actions.

They all seem like actions to me... what is the difference?

Folders vs Projects
==============================
It has been said that we may use Folders as well as Projects. What is
the advantage to having both? Having two types of containers, when
Projects offer much more functionality over Folders, seems like it
would confuse the user.



What is the difference between project and folder? What are properties of folder
and properties of a project?

Projects are Folders that when activated/opened expand to the entire width and height of the screen. Thus, you can only view one project at a time. When it fills the whole screen, the Project can be annotated -- marked up with drawings and text which act as metadata.

See http://jesseross.com/clients/etoile/ui/project_based/01/ for a demo on how Projects would work.

Hot Corners
==============================

... for advanced users.

Yeah -- user customizable, like Expose.

The four corners are good hot spots for frequently used commands. I
would recommend that the corners be activated on click so as to prevent
accidental activation. I have assigned commands to three of the four
corners:

Upper Left: Zoom Out
Upper Right: Zoom In to current selection

Too far away. I want to finetune the zoom, i have to move over a large screen from one corner to another. What about somehow activated slider where one corner means maximum zoom and the other means minimum zoom and i can finetune
the zoom level?

Remember, I recommend that we have Zoom In and Zoom Out keys too. Maybe we don't even need Zoom In and Zoom Out hotspots. The Zoom In and Zoom Out keys should do a full jump from Project to Project or Project to Document. Maybe Shift-Zoom In and Shift-Zoom Out zoom by a smaller increment... maybe 10% of a regular Zoom In or Zoom Out.

Thanks for the good outline. Perhaps few images can help...

I intend to make some... drawings/mockups will definitely help... :)


J.



Reply via email to