Working on my new twitter app, I heavily use SQLite-based templates (kudos to Laurent Jouanneau for that) and implemented search in twits in a so simple way it's fast and beautiful. I would like to share that with you so if you're building an app or extension using SQLite-based templates, you could use it too:

  • let's suppose you have a table of todo list items todolist in your sqlite database desktop.sqlite
  • your table todolist has three columns: text, assignee and importance, all three being varchar
  • you want to be able to search in that beast in all columns

First, you can build a tree representing your table like this:

  <tree seltype="multiple"
        <treecol id="cText" label="Text" flex="1" persist="width ordinal"/>
        <splitter class="tree-splitter" persist="ordinal"/>
        <treecol id="cAssignee" label="Assignee" flex="1" persist="width ordinal"/>
      <splitter class="tree-splitter" persist="ordinal"/>
      <treecol id="cImportance" label="Importance" flex="1" persist="width ordinal"/>
              SELECT *
              FROM todolist
          WHERE (text LIKE :like
OR assignee LIKE :like
OR importance LIKE :like)
          <param name="like" id="like" type="string">%</param>
          <treechildren id="myTodoListTreeChildren">
           <treeitem uri="?">
               <treecell label="?text"/>
                <treecell label="?assignee"/>
                <treecell label="?importance"/>

Then adding a search field to your UI is trivial, thanks to the new cool features of Firefox 3.5:

<textbox type="search" oncommand="SearchKeyword(this)"/>

where your SearchKeyword function is:

function SearchKeyword(aElt)
var like = document.getElementById("like");
var value = aElt.value;
like.textContent = "%" + (value ? value + "%" : "");


That's all. Of course, you could also add a listener on the tree builder to preserve the selection and other cool things but all the magic is above. And it's sooooo simpler than a custom tree view...

/* enjoy */