Specifications/Clipboard
Visual Spec
The clipboard lives within the left edge of the frame, and as such has all the associated visual characteristics of the tray. The real visual detail is needed for the clippings within the clipboard itself, which will take the form of radio buttons with the selected clipping being rendered with a 61px button-gray rounded rect.
Clippings
The clipboard may contain both Clippings and Objects, the distinction between which should be understood as provided blow. I'll use lowercase "clippings" to refer to both types in general.
Clippings: are temporary objects that result from copying image, text, or any other data from within another larger context such as a paint or write activity. More specifically, Clippings tend to represent a part of a larger whole. These temporary clippings have no associated activity ID, and no permanence on the system beyond the clipboard. They have an associated mime type, but do not have an associated title or icon. As such, they will receive one of the standard clipping icons (and titles) provided by the system.
Objects: have generally have slightly more permanence on the system, in varying levels, but more specifically represent the notion of wholeness. Examples of several forms of Objects are an image copied from Browse (it is a whole image, with an associated title), an instrument copied from within TamTam (the entire instrument sound, not just an audio clipping from it), or an instance of an activity object (a painting I made, a story I wrote, etc. as copied from the Journal). Objects will always have a title, and may additionally have an associated icon. In some cases the icon will be directly associated with the Object, such as when it comes from the Journal; in other cases, an activity may have to provide an icon when the copy is performed.
Obviously the distinction is slightly fuzzy, but the guiding principle is the association of a title with an Object; its name gives it a greater sense of permanence. In any case, they behave nearly identical apart from their visual treatment, with a few exceptions as indicated throughout this specification.
Kinds
The following list indicates the 6 "primitive types" of data, with data of course being the most generic.
- Text
- Image
- Video
- Audio
- URL
- Data
Titles
Clippings, which don't have an associated title, will be titled with the name of the clipping type itself eg. "Text clipping", "Image clipping" etc. Objects, of course, have their own associated titles eg. "A drawing of my house", "Family Photo", etc. The API for the clipboard will allow an activity to provide a title for the clipping when appropriate.
Icons
Clippings have generic icons as provided by the system. Clipping icons, which are of course created by the child on his/her own laptop, should always be rendered in the child's chosen XO colors.
Clipping icons go here
Objects may have a specific icon associated with them, and the clipboard API should allow activities to specify one when appropriate. This icon should always be colored, but may not be colored in the child's own XO colors. If the Object comes from the Journal, from a BBoard, or even from within an activity having an identity associated with another XO, the colors of the original creator should be reflected in the clipboard. On the other hand, any Object which has no associated owner should take on the child's own XO colors. The visual style of these icons will match that of all Object icons.
Note that some Objects may not actually have a specific icon. For instance, an image copied from Browse has a title but no particular icon at all. When no icon is specified, the standard clipping icon will be used, regardless of the association of a title with the Object.
Previews
Since the clipboard contains a number of recent clippings, previews should be used whenever possible to make browsing for the correct clipping simple. The appropriate preview will depend upon the type of the clipping. For each type we will define a default preview, and in all cases it will be possible for the activity to provide an image and/or a string to replace the default. The default previews follow:
Text: The head of the string up to the nearest word boundary beneath n characters. When the preview does not represent the entire copied string, it should end with an ellipsis.
Image: A thumbnail of the image
Video: A thumbnail still from the video at some time t from the beginning of the clip
Audio: A visual of the waveform for the audio clip, and/or a live audio preview.
URL: The URL string
Data: For data which we cannot otherwise display, we'll simply provide the icon and name of the activity the clipping was created from to give it context eg. "Copied from TamTam"
Palette example images go here
Interaction Spec
The clipboard is specified in such a way that it will behave identically to those on current operating systems, while at the same time providing additional support for advanced users including drag and drop support and history.
Copying
A child may place an object on the clipboard in a couple of convenient ways. First, the traditional CTRL-C shortcut will copy the current selection to the clipboard; both the ctrl-X and ALT-C shortcuts will provide "copy and erase" functionality, placing the selection on the clipboard in the same manner, and removing it from the context from which it was "cut". Additionally, since objects support direct manipulation, the child may simply drag a photo, file, or selection onto the clipboard edge of the frame in order to copy it. Any activity which supports copy and paste operations should also provide an "Edit" toolbar containing buttons for this functionality.
As items are placed on the clipboard, they are arranged temporally in a "push-through" stack, the most recent clipping appearing at the top of the stack (the upper end of the clipboard). Once the clipboard reaches a predefined limit (fills the left edge of the frame), the elements at the bottom of the stack will begin to drop off, making room for the new ones and preventing the clipboard from growing indefinitely in size and memory consumption.
Selecting a source
With the presence of a clipboard which contains multiple clippings, it becomes necessary to add a means for selecting an active clipping as the source for any paste command. Any invocation of a copy or copy-and-erase shortcut will automatically place the resulting clipping at the top of the stack, selecting it as the source, so that a subsequent paste command behaves as expected. Likewise, any item dragged to the clipboard will become the newly selected source. This maintains consistency with current single-item clipboards.
A source can be manually selected as well, with a single click on any object in the clipboard selecting it.
Pasting
Pasting will be supported with CTRL-V in the usual manner. The paste operation will not change the selected source, such that subsequent pastes will repeatedly paste the same clipping. Again, drag'n'drop support will allow the child to drag any clipping out of the clipboard to paste it in another location, such as within another activity, on a friend, or to a Bulletin Board. The clipping that is chosen as the source for a drag need not be first selected as the source, nor should the dragged item become the source as a result of the drag operation.
The clipboard will also support an alternate paste-and-remove operation, attached to the ALT-V shortcut. This will paste the currently selected source and remove the clipping from the clipboard in one step. When the clipping is removed, the previous clipping (the one that was below it in the stack) will become the new source, essentially popping the clipping of the stack if the selected source is at the top. In this manner, one could copy three items and subsequently paste all three in a row.
Elements may also be removed explicitly by the user via their secondary rollover palette.
Actions
Paste:
Paste & remove:
Open with >:
Keep in Journal:
Remove: