A small tool for �sketching UIs
A small tool for sketching UIs
Have an editor to quickly create simple UI-sketches, �usable e.g. for discussing how an interface should look like.
Jan writes:
how about we try this:
[Tool created sketch of UI]
Anna writes:
I think a vertical layout is better, like so:
[Tool created sketch of UI]
add comment
A small tool for sketching UIs
Rough sketch of what it might look like, showing the three tools/modes.
Select
New UI element
New annotation
A small tool for sketching UIs
It should be simple and compact to be embeddable in other tools (e.g. fossil, gitea, mattermost etc.)
Add a UI sketch!
Metaphor
RELEVANT FEATURES
Autogrouping: No grouping or stack management
This actually works and has been done before:
Zoom to cursor, panning etc.
Contextual UI
�Prior art: A lot, but most closely to this idea: Whimsical uses such a contextual UI.
COLLABORATION MODEL
Collaboration model
Collaboration model
build upon this sketch
Collaboration model
Using a copy-and-build-upon model of collaboration, we gain the following advantages: �
ALTERNATIVES
Whimsical
Balsamiq
Draw.io
Excalidraw
IMPLEMENTATION: DETAILS FOR DEVS
More backend-y stuff I tried or thought about. It is written in the context of drawing apps, so I guess, just like understanding a web app usually needs knowledge of concepts like routers, requests, etc. it might be hard to grasp without knowledge of drawing apps.
Repository
It does only a part of it yet, but if you want to try:
Expect it to barely look better than this!
OOP
Hotdraw, morphic and OOP
�Classic Examples:
Some approaches not used so far
Canvas and figures
Layers of rendered elements
(Entirely internal, this is nothing the user deals with)
typical UI elements like „duplicate this element“-button or „select size“
handles: scaling, changing size etc.: little boxes to drag/drop
element previews, snaplines
document itself
Notes on language and tools
Selection
Tools
Commands
Open questions: Rendering
Open questions: Rendering 2
Open questions: Overlays, previews
Open questions: Overlays, previews
…via Transient mode: During drag, changes are transient
onDragStart(){
state.transientMode(true) …
onDragMove(){� selection.move(…�onDragEnd(){
state.transientMode(false)
commandManager.apply(…
…probably via Memento-Pattern on the complete state?
Open questions: Overlays, previews
Strategy: Dragging a copy, updating model on drop.
On Dragstart, make the original view invisible; create a copy that is rendered on top. Drag this copy. When dragging is done, destroy the copy and change the position of the original.��(Works pretty well in MVC, had problems in declarative-reactive paradigms)
Open questions: Abstracting auto grouping
Most models of graphics work based positions, manual grouping and stack management. Here, we would only have the user-issued position. Should figuring out the grouping happen: �
– before I construct commands (so the commands themselves operate on the stack-grouping model; more deterministic)
– after I issue the commands (so the commands just contain the positions, the grouping is part of the drawing-object behavior; more reflecting user action)�
…I tend to choose the latter one (but I will probably need escape hatches then)
Open questions: Storage format
Theory: Why such a tool?