Outliner / help.html

Full commit
<link rel="stylesheet" href="outliner.css" type="text/css"/>
<div class="outliner">
This is a very simple pure JavaScript outliner.
It is only tested with <a href="">Mozilla
Firefox 3.6+</a> and <a href="">Google Chrome 10</a>,
both only under Linux.

Multiline copy/cut and paste only works in Chrome. It might also work
under other WebKit browsers (like <a href="">Apple
Safari</a>), but I haven't tested it and thus not enabled it for browsers other
than Chrome.

A recent browser. <a
Internet Explorer 8 or 9</a> might work when using things like <a
href="">classList.js</a>, but I doubt it.

<tr><td>Up</td>       <td>move to previous line</td></tr>
<tr><td>Down</td>     <td>move to next line</td></tr>
<tr><td>Ctrl+Up</td>  <td>move to previous line on same level</td></tr>
<tr><td>Ctrl+Down</td><td>move to next line on same level</td></tr>
<tr><td>Home</td>     <td>move to begin of line</td></tr>
<tr><td>Ctrl+Home</td><td>move to begin of document</td></tr>
<tr><td>End</td>      <td>move to end of line</td></tr>
<tr><td>Ctrl+End</td> <td>move to end of document</td></tr>

<tr><td>Tab</td>        <td>indent</td></tr>
<tr><td>Shift+Tab</td>  <td>outdent</td></tr>
<tr><td>Enter</td>      <td>split line on current caret position</td></tr>
<tr><td>Shift+Enter</td><td>insert new line above current</td></tr>
<tr><td>Ctrl+Enter</td> <td>insert new indented line</td></tr>
<tr><td>Alt+Enter</td>  <td>insert new line below current</td></tr>
<tr><td>Ctrl+Space</td> <td>expand/collapse nested lines</td></tr>
<tr><td>Alt+R</td>      <td>sort lines of current nesting level</td></tr>
<tr><td>Alt+Shift+R</td><td>reverse sort lines of current nesting level</td></tr>
<tr><td>Alt+U</td>      <td>numeric sort lines of current nesting level</td></tr>
<tr><td>Alt+Shift+U</td><td>reverse numeric sort lines of current nesting level</td></tr>
<tr><td>Backspace</td>  <td>delete character/merge lines</td></tr>
<tr><td>Del</td>        <td>delete character/merge lines</td></tr>
<tr><td>Ctrl+O</td>     <td>open document from local storage</td></tr>
<tr><td>Ctrl+S</td>     <td>save document in local storage</td></tr>
<tr><td>Ctrl+Z</td>     <td>undo</td></tr>
<tr><td>Ctrl+R</td>     <td>redo</td></tr>

<h3>Drag and Drop</h3>
You can drag lines using the handle you also use to collapse/expand nested
lines. This way you can easily move lines and ther nested lines to another
position in the document. Holding Ctrl when starting dragging you will make
a copy of the dragged line. With Ctrl it is also possible to drag the lines
into another outliner window or even a text editor.

You can also drag multiline selections, which will make a copy of the
selected lines at the point of drop. Maybe this behaviour will change to
be like cut and paste instead of copy and paste in the future.

Besides lines from another outliner and plain text you can also drop files
and URLs into the outliner. A HTML 5 enabled browser will be able to read
the files from disk (e.g. Firefox 3.6 and Chrome 6 or newer). Due to
security restrictiony in browsers dropped URLs may be only from the same
domain form which the outliner itself is hosted.

<h3>Save and Open</h3>
Documents are stored in the browsers local storage and not as seperate
files. This is a HMTL 5 feature and only supported by somewhat recent

<strong>Note:</strong> Some browsers (like Firefox) do not persist the local storage for the
file:// protocol. Use the export feature to persit documents in such browsers.

<h3>Import and Export</h3>
Exporting works through on the fly generated data URLs (URLs where the whole
file is embedded encoded in base 64) with the mime type application/octet-stream
so the browser opens a Save As dialog. There is no way to suggest a file name
using data URLs so you have to come up with a meaningful name yourself.

As with dropping files also importing files through a file dialogue is supported
using the HTML 5 File API. Here it is Chrome that does not support this feature
when the outliner is accessed through a file:// URL.

Supported formats are:
<tr><td>JSON</td>      <td>a custom JSON based file format</td></tr>
<tr><td>OPML</td>      <td>OPML only supporting the text attribute</td></tr>
<tr><td>Jree</td>      <td>Jreepad files</td></tr>
<tr><td>Plain Text</td><td>UTF-8 plain text where lines are indented using the tab character</td></tr>

Currently there is no support for columns, formatted text, data type limitation
on lines or formulars. Maybe I will implement this some day. Very likely not.