Personal tools

Labs/Jetpack/JEP/12

From MozillaWiki

Jump to: navigation, search
DRAFT
This page is not complete.

Contents

JEP 12 - jetpack.selection

  • Champion: Aza Raskin <aza at mozilla dot com>
  • Status: Implementing
  • Type: API Track
  • Created: 24 June 2009
  • Reference Implementation: jetpack.future.import("selection")
  • JEP Index

Introduction and Rationale

Performing a selection is one of fundamental computer-human interactions, acting as a close proxy for a users locus of attention. Even at the time of the writing of this JEP, numerous Jetpacks have already implemented disparate ways of getting and detecting selections.

Jetpacks should be able to set, get, and listen for selection events.

Proposal

The functions to manipulate and access the selection lives in jetpack.selection.

Getting and Setting the Selection

Getting and setting the selection live in a family of getters and setters, dependent on the format. For the first version of .selection we include to formats: text, and html.

Setting the selection

jetpack.selection.text = "Hello";
jetpack.selection.html = "<b>Hello</b>";


Getting the selection

var textOfSel = jetpack.selection.text;
var htmlOfSel = jetpack.selection.html;

Eventually, one may be able to do jetpack.selection.fragment which would let you manipulate the selection live. That is, however, outside the scope of JEP 12.

onSelection

A very common desire is to perform some sort of action when a selection is made. Often that is looking up the selection, or creating an actionable nib. jetpack.selection.onSelection enables Jetpack authors to easily get notified when a selection is made.

jetpack.selection.onSelection( callback );

Arguments

  • callback: Is the function to be called when a selection is made. It receives no arguments. Instead, use jetpack.selection.*.

To remove an event handler is done the normal Jetpack way:

jetpack.selection.onSelection.unbind( callback );

Arguments

  • callback: A pointer to the event handler to be unbound.

Example

jetpack.selection.onSelection(function(){
  var html = jetpack.selection.html;
  jetpack.selection.html = ">>>" + html + "<<<";
});