identified 4 primary user interaction styles:
Direct Manipulation is what we use for highly interactive tasks (wordprocessors, drawing programs, games, etc).
Okay, I have seen pretty darn accurate design descriptions of the first 3, but:
Is there a prototyping/design technique that can capture the essence of Direct Manipulation?
was coined by BenShneiderman
and expanded upon in the book 'DirectManipulationInterfaces?
' by Hutchins, Hollan and Norman, NakedObjects
seem to represent a fusion of the author's ideas on ExpressiveSystems?
and object oriented UI design. "Expressive Systems" book.
- The actual citation is E.L. Hutchins, J.D. Hollan, and D.A. Norman, "Direct manipulation Interfaces", in User centered system design, D. A. Norman and S. W. Draper Eds., Lawrence Erlbaum Associates Inc, Hillsdale, NJ, pp. 87-124, 1985.
- "Expressive Systems" book: http://www.nakedobjects.org/downloads.html#book [BrokenLink]
I think JohnVlissides UnidrawFramework
- http://www.vectaport.com/ivtools/unidrawinfo.html (source, paper, and thesis)
captured a lot of the essence of direct-manipulation user interfaces:
- the necessity of a subject/view pattern,
- the use of pull-down comands and a pallete of tools,
- the use of a selection list and rubber-band manipulators.
How to grow them yourself by starting with a fully working example program and perturbing it. How to derive new layers of application frameworks on top of a generic foundation.
idraw, ibuild, and schem were the three example programs that showed a single layer could be built on top of the UnidrawFramework
, the first example of a LayeredApplicationFramework
] showed that it could be stacked even higher. Other direct-manipulation environments to investigate: HotDraw
(Smalltalk), SGraphics (Java), Fresco/Parmesan (C++) (FrescoFramework
), EZDraw (C++). I think their basic premise (Vlissides and his adviser Mark Linton) was that no one should have to write one of these things from scratch, so they were going to do it and share the result in a way that could be built upon by others.
The "Self" [http://research.sun.com/self/
] programming environment (see SelfLanguage
) did some serious pioneering work in direct manipulation. You should be able to find at least some description of it in the literature. Note that the "Morphic" UI system was originally developed in the context of Self and later ported to SqueakSmalltalk
has run with those ideas -- they call it "Morphic".
From what I have seen of those environments, I get the impression that DirectManipulation
is, at best, oversold, but that's just MHO.
Btw, look for TooledComposite
in the September 99 issue of CppReport
Tools and Materials by Dirk Riehle and Heinz Züllighoven is a pattern language for writing direct manipulation programs. See "A Pattern Language for Tool Construction and Integration Based on the Tools and Materials Metaphor."
A newer DirectManipulation
technique, "pick-and-drop", is creating a buzz due to plenary mention at CHI 2004 (previously presented at CHI 98, apparently). Pick-and-drop allows e.g. moving an object to another system's screen via drag and drop.
Most (all the ones I know of, anyway) 3d modelling programes (Blender, 3dMax, Maya) use this concept extensively).
See also: VisAd