Building Applications with AppleScript and FaceSpan

Building Applications with AppleScript and FaceSpan

by Matt Neuburg, author of AppleScript: The Definitive Guide
04/13/2004

AppleScript is primarily a scripting language; it is intended to let the user communicate with existing applications. Still, having developed a scripting solution with AppleScript, a user might naturally wish to wrap a standard application interface around it. So, how can a user take advantage of AppleScript in order to write a stand-alone application?

In my book, AppleScript: The Definitive Guide, attention is given (at the end of Chapter 2, and as the main subject of Chapter 24) to this very question. But at the time of the book's publication, FaceSpan for Mac OS X did not yet exist, so it was not considered in the repertory of tools one can use for building an application with AppleScript. Now FaceSpan 4.0 has emerged, so in this article, I'll briefly describe how FaceSpan may be used to construct the example applications in chapters 2 and 24 of my book.

What Is FaceSpan?

FaceSpan 4.0 is a small (7MB) Cocoa application in which you build a Cocoa application, using AppleScript as a programming language. You "draw" your interface in a window editor, adding interface elements to a window and specifying some of their physical behavior in an Info Panel (the palette labeled "window" in the lower right of the following figure). Then you write AppleScript code saying what should happen when the user interacts with those interface elements to generate an event (starting up the application, choosing a menu item, pressing a button, and so forth).

FaceSpan uses the same underlying dictionary as AppleScript Studio for referring to and communicating with the parts of the interface (the AppleScriptKit dictionary). Indeed, working in FaceSpan is much like working in AppleScript Studio, except that you are spared having to operate in two different applications: in AppleScript Studio, you "draw" your application's interface in Interface Builder and you write and test your code in Xcode, but FaceSpan is completely self-contained. Some further differences between the two environments will be noted as we go along.

The biggest difference, of course, is that AppleScript Studio is free, whereas FaceSpan costs $200 (or $90 for a limited version that builds applications that require the presence of FaceSpan itself in order to run). The question of whether FaceSpan possesses a sufficient superiority over AppleScript Studio to justify this pricing is a matter for the free market to decide; in other words, only time will tell.

The Disk Lister Example

Let's start with the "disk lister" example on pp. 31-36 of my book. This, you recall, is intended simply to illustrate AppleScript driving an external application (the Finder) from within a stand-alone application. Our application merely displays the names of all mounted drives (or partitions) in a table view in a window. My book shows how to do this using AppleScript Studio, REALbasic, and Cocoa/Objective-C; now we'll add FaceSpan to our box of tools.

Start up FaceSpan and ask for a New Project; call it "Disk Lister," and use the default template. In a moment, the Project Window appears, as shown in the following figure:

Double-click the "main" window listing to open it so we can design our window. Show the Objects Palette if it isn't showing already, open the Tables section, and drag a table view into the main window (see the figure below).

Show the Info Panel if it isn't showing already, and double-click the table view in the "main" window so that the Info Panel is talking about the table view, not the scroll view that contains it. Set the number of columns to 1, and select the column header so that the Info Panel is now talking about the table column. Give that column a title "Your Disks" and an identifier "disks" (see figure below).

Now, adjust the size of the window and the table view as you like them. So much for designing the interface.

Now we'll write the code. In the Project Window, open the script provided for you, Project Script.applescript. You'll find that there is already a launched handler:

on launched theApplication

    open window "main"

end launched

Modify this by adding the very same code that appears on page 32 of my book:

on launched theApplication

    open window "main"

    tell application "Finder" to set L to (name of every disk)

    set ds to make new data source at end of data sources

    set tv to table view 1 of scroll view 1 of window 1

    set col to make new data column at end of data columns of ds ¬

        with properties {name:"disks"}

    repeat with aName in L

        set aRow to make new data row at end of data rows of ds

        set contents of data cell "disks" of aRow to aName

    end repeat

    set data source of tv to ds

end launched

That's all. Press Command-R to save the project and run the built application. After a moment's delay, the Disk Lister application appears and displays its window (see figure below).

A nice feature of FaceSpan is the Object Browser (see figure below) that appears in the Scripting Help drawer attached to script windows. It lists objects in the application's interface, and you can double-click a listing to insert a reference to that object in your code. For example, if we didn't know that we can access our table view as "table view 1 of scroll view 1 of window 1," the Object Browser would tell us how to do it (using names instead of index numbers).

If you were writing this application and you didn't know how to use table views and data sources, you'd read the FaceSpan manual; you would also consult the dictionary, which is displayed in a window (shown below) that looks a little different from how the Script Editor or Xcode presents it.

[1] [2] [3] Next

Close    To Top
  • Prev Article-OS:
  • Next Article-OS:
  • Now: Tutorial for Web and Software Design > OS > Mac > OS Content
    Photoshop Tutorial
     

    Special Effect

      3D Effect
      Photoshop Articles
    Programming Tutorial
     

    C/C++ Tutorial

      Visual Basic
      C# Tutorial
    Database Tutorial
     

    MySQL Tutorial

      MS SQL Tutorial
      Oracle Tutorial
    Geek Tutorial
     

    Blogging Tutorial

      RSS Tutorial
      Podcasting Tutorial
    Graphic Design Tutorial
      Coreldraw Tutorial
      Illustrator Tutorial
      3D Tutorials
    Webmaster Articles
     

    Domain Service

      Web Hosting
      Site Promotion
    Java Tutorial/ Articles
     

    Java Servlets

      JavaEE Tutorial
     

    JavaBeans Tutorial

    XML Tutorial/ Articles
     

    XML Style

      AJAX Tutorial
      XML Mobile
    Flash Tutorial/ Articles
     

    Flash Video

      Action Script
      Flash Articles
    OS Tutorial/ Articles
      Linux Tutorial
      Symbian Tutorial
      MacOS Tutorial
    Personal Tech
      Hardware Tutorial
      Software Tutorial
      Online Auction