code:JSドキュメント
powered by CoffeeScript, PHP, jQuery, jQuery-UI
code:JSとは
「code:JS」はCoffeeScriptを使い、viewベースでWebアプリケーションを作成するための、フレームワーク/クラス群です。
このクラスライブラリを作った動機は、Webアプリ開発をやったりiOSアプリ開発をしていると、しばらく関わっていない技術のことを忘れていまい、いざ開発にかかろうとした際にすぐにコーディングには取りかかれず、言語仕様や開発手法・設計などを思い出すことに時間を奪われ、これが何回も続くかと思うと気が遠くなったことに端を発します。
そのため、iOSアプリケーション開発などで用いられている「viewベースアプリケーション開発」と呼ばれる様々なパーツを画面に並べることで、画面設計を行い機能を実装していく開発手法を、そのままWebアプリケーションでも行えるようなクラスライブラリを作成しました。
ライブラリの各クラス構成や、Viewベースの概念はiOSのViewを参考にしています。
Webアプリケーションの作成はsandboxになっており、アプリケーションが操作出来るディレクトリを制限しています。
アプリケーション内で使う画像データなども、各アプリケーションのディレクトリ内の決まった場所に配置することでクラス内で使うことが出来るような仕様になっています。
code:JSには以下のプロダクトが必須になっています。
  • PHP(CGI, CLI) 5.3以降
  • CoffeeScript 1.2以降
  • SQLite 3.7以降
  • php5-sqlite
  • ImageMagick
  • code:JSインストール
    github(https://github.com/digitarhythm/codeJS)からサーバー上にcloneしてください。
    httpdのDocumentRoot配下である必要はありません。
    cloneした後に、「[code:JSインストールディレクトリ]/bin」にあるコマンドに実行権限をつけてください。
    「[code:JSインストールディレクトリ]/bin」にpathを通しておくと、コマンドを実行する時に便利です(aliasでもいいですが)。
    code:JSチュートリアル
    まず、code:JSフレームワークをインストールするサーバーにログインし、設置するディレクトリまで移動してgithubからcloneしてください。
    $ git clone https://github.com/digitarhythm/codeJS
    そうすると「codeJS」ディレクトリ配下に必要なディレクトリ/ファイルが生成されます。
    生成されたのを確認した後、「[code:JSインストールディレクトリ]/bin」配下のコマンドに実行権限を付けてください。
    「[code:JSインストールディレクトリ]/bin」にpathを通しておくと、コマンドを実行する時に便利です。
    コマンドの使い方については次の章に詳細があります。

    次に、Webアプリケーションを作成するドキュメントルート配下の適当なディレクトリに移動して、サンドボックス生成コマンドを実行します。
    $ codejs new testapps
    フレームワークに必要なプロダクトが足りない場合はエラーになります。
    エラーが出ずに実行が終了すると、指定した名前のディレクトリが出来ています。
    このディレクトリの中にある「appscode」ディレクトリ内にCoffeeScriptでWebアプリケーションを作成していきます。

    「appscode」ディレクトリ内にはデフォルトでは「applicationMain.coffee」が入っています。
    このファイルが、iOSにおける「appDelegate.m」に相当します。

    この「applicationMain.coffee」のコメントの下に、コメントと同じインデントでアプリケーションの初期化処理を記述していきます。
    iOSでの「rootViewController.view」に相当するのが「@rootView」になります。
    Viewを生成し、画面に表示するにはViewの基幹クラス「JSView」を継承したオブジェクトを生成し、「@rootView」にaddSubview()します。

    iOSではViewの中にボタンを配置したり、他のViewを配置したりするためカスタムのViewを生成して画面デザインを行うことが多いですが、code:JSでも同じ形でプログラミングしていきます。
    カスタムのViewを生成するためには、JSViewを継承したクラスファイルを作成します。
    $ codejs derive JSView testView
    上記コマンドを実行すると、「appscode」ディレクトリに指定した名前(例の場合は「textView.coffee」)のクラスファイルが生成されています。

    この新しく生成したクラスファイルを使ってViewを作成するために先ほどの「applicationMain.coffee」を変更します。

    しかしこのままではCoffeeScriptがコンパイルされていないため、コーディングが反映されません。
    コンパイルは、Webアプリケーションのトップディレクトリ配下で、
    $ codejs build
    というコマンドを実行します。
    これで、ユーザーファイルの更新を監視し、自動的にコンパイルされるようになります。
    (監視が走りっぱなしになるので、コマンドライン作業は他のターミナルを使ってください)

    コンパイルでエラーが出なければ、WebアプリケーションディレクトリのトップをWebブラウザで開くと、グレーのウィンドウが表示されていると思います。
    code:JSコマンドリファレンス

    code:JSは各アプリケーション毎に作成したサンドボックス内でアプリケーションのすべてが完結します。
    そのため、アプリケーションに対する各種の操作は専用のコマンドを使って行います。
    基本的には「codejs」というコマンドがフロントエンドになっているので、パラーメタ無しで実行するとusageが出るので、それを見て実行出来ます。
    ですので、cloneしたcode:JSの中にある「bin」ディレクトリにパスを通しておくと作業効率が上がります。

    【新規プロジェクト生成】
    「[code:JSルート]/bin」にパスが通った状態で、

    $ codejs new [プロジェクト名]

    を実行すると、カレントディレクトリ配下に「プロジェクト名」のディレクトリが作成されます(マルチバイト非推奨)。

    【ユーザースクリプトコンパイル】
    ユーザーが「[プロジェクトルート]/appscode」配下に生成したCoffeeScriptファイルはコンパイルをしなければ実行出来ません。
    スクリプトをコンパイルしたいプロジェクトのルートで、

    $ codejs build

    を実行すると、ユーザーディレクトリを監視し、更新があったファイルを自動的にコンパイルされます。
    コマンドは実行され続けるのでコンソールを奪います。
    他のコンソール作業が必要な場合は、新しいコンソールを立ち上げてください。

    【システムファイル更新】
    code:JSシステムのファイルを更新したい場合は、ライブラリの再構築を行わないと過去に作成したプロジェクトに更新が反映されません。
    システム更新を反映したいプロジェクトのルートで、

    $ codejs update

    を実行すると、code:JSのシステムスクリプトがコンパイルされ実行したディレクトリのプロジェクトに反映されます。
    jQueryUIのテーマを変更した場合もこのコマンドで反映させます。

    【新規クラス作成】
    少なくとも、すべてのクラスが「JSObject」を継承しなければならないため、新規にクラスを生成するには雛形が必要になります。
    そこで、新規にクラスを作成する時は、クラスを作成したプロジェクトのルートで、

    $ codejs derive [継承するクラス名] [新規クラス名]

    を実行します。
    「[プロジェクトルート]/appscode」配下に、指定した名前のクラスファイルが出来ているのでこれを修正してアプリケーションを構築していきます。

    【jQueryUIのテーマ変更】
    「[code:JSルート]/configs/system.ini」にjQueryUIのテーマへのリンク先一覧が記載されているので、「[プロジェクトルート]/configs/system.ini」の「jqueryui-theme」を書き換え、上記の「codejs update」コマンドを実行すると、index.phpファイルが再生成され、CSSへのリンク先が書き変わるのでテーマの変更が反映されます。

    グローバル

    code:JSにはシステムが用意したスーパーグローバル変数があります。

    IPADDRESS

    クライアントのIPアドレスが格納されています。

    GLOBAL

    すべてのクラスで使用出来るオブジェクト(連想配列)です。
    これに設定した値はすべてのクラスで参照することが出来ます。


    ユーティリティ関数

    JSRectや、JSSize, JSPoint, JSString等は複数の値を持つことが出来るので、「生成→値代入」という2ステップを踏む事になります。
    この2ステップを補助するための関数が用意されています。

    JSLog(string, arg...)

    文字列をコンソールに表示します。
    複数の変数をフォーマットに合わせて整形して表示します。
    フォーマットは「%@」が変数で置換されます。
    例)JSLog("hoge=%@, foo=%@, bar=%@", hoge, foo, bar)

    引数
    string
    文字列

    返値
    なし

    isConfirm(string)

    アラートに文字列を表示して「OK」「Cancel」を選択させます。

    引数
    string
    文字列

    返値
    0:Cancelが押された
    1:OKが押された

    getCookieValue(string)

    文字列で指定したCookieの値を取得します。

    引数
    string
    文字列

    返値
    Cookieの値

    JSRectMake(int, int, int, int)

    引数で渡した、「x座標」、「y座標」、「width」、「height」の要素を持ったJSRectオブジェクトを返します。

    引数
    int:x座標
    int:y座標
    int:width
    int:height

    返値
    JSRectオブジェクト

    JSPointMake(int, int)

    引数で渡した、「x座標」、「y座標」の要素を持ったJSPointオブジェクトを返します。

    引数
    int:x座標
    int:y座標

    返値
    JSPointオブジェクト

    JSSizeMake(int, int)

    引数で渡した、「width」、「height」の要素を持ったJSSizeオブジェクトを返します。

    引数
    int:width
    int:height

    返値
    JSSizeオブジェクト

    JSMakeRange(int, int)

    引数で渡した、「location」、「length」の要素を持ったJSRangeオブジェクトを返します。

    引数
    int:location
    int:length

    返値
    JSRangeオブジェクト

    getApplicationFrame()

    ブラウザのスクロールバーを含まないサイズを返す。
    返値はJSRectで返るが、座標は常に(0, 0)が入っている。

    引数
    無し

    返値
    JSRectオブジェクト

    getBounds()

    ブラウザのスクロールバーを含んだサイズを返す。
    返値はJSRectで返るが、座標は常に(0, 0)が入っている。

    引数
    無し

    返値
    JSRectオブジェクト

    JSColor(string)

    「black」「red」「blue」などの文字コードや「#nnnnnn」の16進数色コードを指定します。
    透明には「clearColor」も使えます。

    引数
    string:色コード

    返値
    JSで使える色コード

    JSSearchPathForDirectoriesInDomains(string)

    sandbox内の指定したディレクトリへのパスを返します。
    JSLibraryDirectory:Webブラウザからはアクセス出来ないライブラリ領域へのパス。システム情報などブラウザで閲覧させたくないファイルを置くディレクトリへのパス。
    JSSystemDirectory:Webブラウザからアクセス出来るシステム領域へのパス。画像ファイルなどのブラウザからアクセスする必要のあるファイルを置くディレクトリへのパス。
    JSDocumentDirectory:アプリケーションで作成するファイルなどを保存するディレクトリへのパス。画像ファイル以外のアプリケーションが作成するファイルを保存するディレクトリへのパス。
    JSPictureDirectory:アプリケーションで保存した画像ファイルディレクトリへのパス。アプリケーションの画像ファイルアップロード機能でアップされた画像の保存されたディレクトリへのパス。

    引数
    string:ディレクトリ種別

    返値
    指定したディレクトリへの、sandboxトップからのパス

    objectNum(object)

    渡されたオブジェクトの要素数を返します。

    引数
    object:要素数を数えるオブジェクト

    返値
    なし

    code:JSクラス仕様書
    すべてのクラスが「JSObject」を基幹クラスとして継承しています。
    すべてのパーツが「JSView」を継承しています。
    クラスの持つインスタンス変数は基本的にはすべて読み取り専用です。
    値を変更する場合は用意されているsetterメソッドを使用してください。
    直接値を変更した場合は、動作が不安定になるか、最悪の場合はWebアプリがクラッシュします。
    値を変更出来ないインスタンス変数は、変数名が「_(アンダースコア)」で始まっています。
    変数名がアンダースコアで始まっていない変数の値は直接変更することが出来ます。
    例)JSPointクラスの「x」と「y」
    JSViewや、JSViewを継承している画面表示に関するクラスの「_(アンダースコア)」で始まるインスタンス変数は、値を直接書き換えても変更は反映されません。
    (値を変更した後に「viewDidAppear」メソッドを呼ぶことで反映されますがお勧め出来ません)

     JSObject

    (object)JSObject(void)

    スーパースーパークラス。
    すべてのクラスがこのクラスを継承しているため、下記のインスタンス変数はすべてのオブジェクトが持っています。


    インスタンス変数

    (string)_objectID

    オブジェクト毎のユニークID。
    自分自身のオブジェクト。
    CoffeeScriptでは「@」にはthisが入っていますが、「@_self」にも同じものが入っています。
    これは、viewベースプログラミングでの、自分自身へのview追加をソース上で分かりやすくするために定義してあります。


    インスタンスメソッド

    無し

     JSFileManager
    JSObject→JSFileManager

    (object)JSFileManager(void)

    サーバー上のファイルをやりとりするクラス。
    サーバー上のsandbox内にあるファイルを読み込んだり、ファイル一覧を取得します。


    使用例

    path = JSSearchPathForDirectoriesInDomains("JSLibraryDirectory")
    stringWithContentsOfFile(path+"/sample.txt", @method)
    fileList(path, ["jpg", "png", "gif"], @method)
    thumbnailList(path, @method)


    インスタンス変数

    無し


    インスタンスメソッド

    stringWithContentsOfFile(string, method)

    サーバー上のsandbox内にあるファイルを読み込みます。
    「Library」等のWebブラウザで開くことの出来ないディレクトリにあるファイルを指定することも出来ます。

    引数
    string
    読み込むファイルを指定します。
    基本的には「JSSearchPathForDirectoriesInDomains()で取得したパス+ディレクトリ名+ファイル名」を渡します。
    method
    読み込みが終わった後に呼び出されるメソッドを指定します。
    そのまま無名関数を記述することも出来ます。
    呼ばれたメソッドは引数として読み込まれたテキストが渡されます。

    返値
    無し

    fileList(string, array, method)

    サーバー上のsandbox配下のディレクトリのファイル一覧を取得します。
    一覧生成後に呼び出されるメソッドには結果がJSON形式で引数として渡されます。
    結果のJSONには、「result」という変数で受け取った場合、
    result['file']:ファイル一覧
    result['dir']:ディレクトリ一覧
    という形で格納されています。

    引数
    string
    ファイルリストを取得したいディレクトリへのパス
    基本的には「JSSearchPathForDirectoriesInDomains()で取得したパス+ディレクトリ名」を渡します。
    array
    ファイルリストで取得するファイルのフィルター情報
    ファイルリストに含めたいファイルの拡張子を配列に列挙して渡します。
    method
    読み込みが終わった後に呼び出されるメソッドを指定します。
    そのまま無名関数を記述することも出来ます。
    呼ばれたメソッドは引数として一覧をJSON形式で渡されます。

    返値
    無し

    thumbnailList(stirng, method)

    指定したパスの画像ファイル一覧を取得します。
    抽出される画像は「png」「jpg」「jpeg」「gif」の拡張子を持つファイルです。
    一覧生成後に呼び出されるメソッドには結果がJSON形式で引数として渡されます。
    結果のJSONには、「result」という変数で受け取った場合、
    result['file']:画像ファイル一覧
    result['dir']:ディレクトリ一覧
    という形で格納されています。

    引数
    string
    画像ファイルリストを取得したいディレクトリへのパス
    基本的には「JSSearchPathForDirectoriesInDomains()で取得したパス+ディレクトリ名」を渡します。
    method
    読み込みが終わった後に呼び出されるメソッドを指定します。
    そのまま無名関数を記述することも出来ます。
    呼ばれたメソッドは引数として一覧をJSON形式で渡されます。

    返値
    無し

    writeToFile(string, string, method)

    指定したテキストを指定したファイルに保存します。
    保存が終わった後に呼ばれる処理を設定出来ます。

    引数
    string
    保存するファイル名を指定します。
    「JSSearchPathForDirectoriesInDomains()」でサンドボック上の適切なパスを取得し、それにファイル名を付加し指定します。
    string
    保存するテキストデータを指定します。
    文字コードは「UTF-8」限定です。
    method
    ファイルの保存が終わった時に実行されるメソッドを指定します。
    そのまま無名関数を記述することも出来ます。
    呼ばれたメソッドは引数としてエラーコードが渡されます。
    エラーコードは、
    0:保存エラー
    1:正常終了
    になります。

    返値
    無し

    removeItemAtPath(string, method)

    指定したファイルを削除します。

    引数
    string
    削除するファイル名を指定します。
    「JSSearchPathForDirectoriesInDomains()」でサンドボック上の適切なパスを取得し、それにファイル名を付加し指定します。
    method
    ファイルの削除が終わった時に実行されるメソッドを指定します。
    そのまま無名関数を記述することも出来ます。
    呼ばれたメソッドは引数としてエラーコードが渡されます。
    エラーコードは、
    0:保存エラー
    1:正常終了
    になります。

    返値
    無し

    moveItemAtPath(string, string, method)

    指定したファイルを指定したパスへ移動します。

    引数
    string
    移動するファイル名を指定します。
    「JSSearchPathForDirectoriesInDomains()」でサンドボック上の適切なパスを取得し、それにファイル名を付加し指定します。
    string
    移動先のディレクトリを指定します。
    「JSSearchPathForDirectoriesInDomains()」でサンドボック上の適切なパスを取得し、それに適切なディレクトリ名を付加し指定します。
    method
    ファイルの移動が終わった時に実行されるメソッドを指定します。
    そのまま無名関数を記述することも出来ます。
    呼ばれたメソッドは引数としてエラーコードが渡されます。
    エラーコードは、
    0:保存エラー
    1:正常終了
    になります。

    返値
    無し

     JSImage
    JSObject→JSImage

    (object)JSImage(string)

    画像ハンドルクラス。
    iOSでは画像そのものを保持していますが、code:JSでは画像ファイルへのパスになります。
    「imageWriteToSavedPicture()」で保存すると、保持しているパスの画像を、sandbox配下の指定したディレクトリへコピーする動作になります。
    このクラスは、JSImageViewで表示する画像指定に使うのが主な使い道になります。
    code:JSでは、アプリケーション側でディレクトリ構造を把握する必要が無いため、このオブジェクトに渡すパスは、「JSSearchPathForDirectoriesInDomains()」で取得したパスに画像ファイル名を付けて指定します。

    初期化引数

    string
    画像ファイルパス
    使用する画像へのパスを指定します。
    基本的には「JSSearchPathForDirectoriesInDomains()で取得したパス+ディレクトリ名+画像ファイル名」を渡します。


    使用例

    path = JSSearchPathForDirectoriesInDomains("JSPictureDirectory")+"/image.png"
    img = new JSImage(path)
    imgview = new JSImageView(img)


    インスタンス変数

    (string)_imagepath

    画像ファイルへアクセスするためのパス。


    インスタンスメソッド

    imageNamed(string)

    サンドボックス内の画像ファイル相対パス

    引数
    string
    サンドボックス内での画像ファイルへの相対パス。

    返値
    無し

    imageWriteToSavedPicture(string, method)

    保持しているパスの画像を、sandbox配下の指定したディレクトリにコピーします。

    引数
    string
    sandbox配下の画像をコピーするディレクトリ+ファイル名。
    method
    画像コピーが終了した時に実行される処理(無名関数可)。

    返値
    無し

     JSPoint
    JSObject→JSPoint

    (object)JSPoint(void)

    座標クラス。
    主に座標値を扱う際のインスタンスとして用います。
    インスタンス変数として「x」と「y」を持っています。
    「JSPointMake(x, y)」という関数を使うことで座標値を持ったJSPointオブジェクトを作成することが出来ます。


    使用例

    pt = new JSPoint()
    pt.x = 320
    pt.y = 240


    インスタンス変数

    (int)x

    x座標

    (int)y

    y座標

    インスタンスメソッド

    無し

     JSRange
    JSObject→JSRange

    (object)JSRange(void)

    範囲管理クラス。
    配列の要素指定や、テキストの文字位置指定等に使用します。
    このクラスは結果を受け取る以外に、インスタンスを生成する場合は「JSMakeRange(int, int)」関数を使用して生成します。


    使用例

    range = JSMakeRange(0, 16)


    インスタンス変数

    (int)location

    スタート位置

    (int)length

    長さ

    インスタンスメソッド

    無し

     JSResponder
    JSObject→JSResponder

    (object)JSResponder(void)

    レスポンダー管理クラス。
    イベントを受け取るクラスが継承しています。


    インスタンス変数

    無し


    インスタンスメソッド

    locationView(void)

    viewに対するマウスの位置を取得する。

    引数
    無し

    返値
    JSPointオブジェクト
    自分自身のviewに対するマウスポインターの位置を返します。


    デリゲートメソッド

    didBrowserResize()

    ブラウザがリサイズされた時に呼び出されます。

    引数
    無し

    返値
    無し

    touchesBegan(void)

    自分自信のviewに対してマウスダウン(タップ)された場合に呼び出されます。

    引数
    event
    マウスダウン(タップ)された時のeventオブジェクト。

    返値
    無し

    touchesMoved(void)

    自分自信のviewに対してマウスダウン(タップ)された状態でマウスが動かされた場合に呼び出されます。

    引数
    event
    マウスダウン(タップ)された時のeventオブジェクト。

    返値
    無し

    touchesEnded(void)

    自分自信のviewに対してマウスダウン(タップ)されていたものが解除された場合に呼び出されます。

    引数
    event
    マウスダウン(タップ)された時のeventオブジェクト。

    返値
    無し

    touchesCanceld(void)

    自分自信のviewに対してマウスダウン(タップ)されたものが解除された場合に呼び出されます。

    引数
    event
    マウスダウン(タップ)された時のeventオブジェクト。

    返値
    無し

     JSSize
    JSObject→JSSize

    (object)JSSize(void)

    サイズ管理クラス。
    インスタンス変数として「width」と「height」を持っています。
    「JSSizeMake(x, y)」という関数を使うことで横幅、縦幅を持ったJSSizeオブジェクトを作成することが出来ます。


    使用例

    size = new JSSize()
    size.width = 320
    size.height = 240


    インスタンス変数

    (int)width



    (int)height

    高さ

    インスタンスメソッド

    無し

     JSTableViewController
    JSObject→JSTableViewController

    (object)JSTableView(void)

    テーブルビューコントローラー。
    テーブルビューオブジェクトをひとつ持ち、テーブルビューのデリゲートメソッドを受け持つクラス。
    通常はこのクラスを継承したクラスの中でテーブルビューの振る舞いを定義して使用します。


    初期化引数

    なし


    使用例

    tableviewcontroller = new JSTableViewController()
    @_self.addSubview(tableviewcontroller.tableView)

    インスタンス変数

    (JSTableViewオブジェクト)_tableView
    JSTableViewオブジェクト。



     JSUserCookies
    JSObject→JSUserCookies

    (object)JSUserCookies(void)

    Cookies操作クラス
    文字列、もしくは配列(オブジェクト)変数をCookieに格納することが出来ます。
    値はCookieに格納されるので、各端末毎の値になります。
    値の寿命は365日になります。

    使用例

    cookieobj = new JSUserCookies()
    cookieobj.setObject("foo", "bar")
    cookieobj.stringForKey("bar")
    cookieobj.removeFromObjectFromKey("bar")

    インスタンス変数

    無し

    インスタンスメソッド

    setObject(value, key)

    キーを指定して値を保存します。

    引数
    value
    保存する値を指定します。
    指定出来る値は文字列になります。
    key
    保存する値に対応するキーを文字列で指定します。

    返値
    無し

    stringForKey(key)

    キーを指定して値を取り出します。

    引数
    key
    取り出す値のキーを指定します。

    返値
    無し


    removeObjectForKey(key)

    指定したキーの値を削除します。

    引数
    key
    削除する値のキーを指定します。

    返値
    無し


     JSUserDefaults
    JSObject→JSUserDefaults

    (object)JSUserDefaults(void)

    UserDefaultsクラス。
    文字列、もしくは配列(オブジェクト)変数を格納することが出来ます。
    データはSQLiteに格納されるためサーバー毎の値になり、Webアプリケーションをリロードしても、次に開いた時に値が消えることがありません。

    使用例

    ud = new JSUserDefaults()
    ud.setObject("foo", "bar")
    ud.stringForKey "bar", (data)->
        alert(data)
    ud.removeFromObjectFromKey("bar")

    インスタンス変数

    無し

    インスタンスメソッド

    setObject(value, key)

    キーを指定して値を保存します。

    引数
    value
    保存する値を指定します。
    指定出来る値は文字列か、配列(オブジェクト)になります。
    配列(オブジェクト)はJSONに変換後、SQLiteに保存されますが、このクラスを使用する時にそれを意識することはありません。
    key
    保存する値に対応するキーを文字列で指定します。

    返値
    無し

    stringForKey(key, action)

    キーを指定して値を取り出します。
    取り出した値は指定したメソッドに渡されます。

    引数
    key
    取り出す値のキーを指定します。
    action
    取り出した値を渡すメソッドを指定します。
    無名関数を指定することも出来ます。

    返値
    無し


    removeObjectForKey(key)

    指定したキーの値を削除します。

    引数
    key
    削除する値のキーを指定します。

    返値
    無し


     JSView
    JSObject→JSResponder→JSView

    (object)JSView(JSRectオブジェクト)

    View管理クラス。
    画面に表示に使用するパーツのクラスはすべてこのクラスを継承しています。
    生成時にJSRectオブジェクトを渡すことで、生成時にViewのサイズを指定することが出来ます。
    生成時に引数を省略するとサイズが640x480のビューが生成されます。
    背景色はJSColor()関数で指定します。
    iOSと違う大きな点としては、addSubview()する前のViewに、さらにaddSubview()するとViewが表示されないことがあります。
    出来る限りaddSubview()されるViewは、addSubview()してから行ってください。

    初期化引数

    JSRectオブジェクト
    ビューのサイズをJSRectクラスのオブジェクトで指定します。


    使用例

    view = new JSView(JSRectMake(0, 0, 320, 240))
    view.addSubview(subview)
    view.setFrame(JSRectMake(0, 0, 640, 480))
    view.setBackgroundColor(JSColor("clearColor"))
    view.setAlpha(0.5)
    view.setCornerRadius(4)
    view.setBorderColor(JSColor("black"))
    view.setBorderWidth(1)
    view.setClipToBounds(true)
    view.setUserInteractionEnabled(true)
    view.setDraggable(true)
    view.setResizable(true)
    view.setHidden(true)
    view.setContainment(true)
    view.bringSubviewToFront(subview)
    view.removeFromSuperview()
    view.removeTapGesture(1)
    view.addTapGesture(@method)
    view.animateWithDuration(0.5, {alpha:0.0}, @method)
    view.setShadow(true)

    インスタンス変数

    (object)_parent

    親view

    (string)_viewSelector
    jQueryで使用するセレクター
    「"#"+_objectID」が入っています。

    (string)_bgColor

    背景色

    (float)_alpha

    透過量

    (int)_cornerRadius

    角の丸み

    (JSColorの返値)_borderColor

    枠の色

    (int)_borderWidth

    枠の太さ

    (bool)_clipToBounds

    view外の表示

    (bool)_draggable

    viewのドラッグ

    (bool)_resizable

    viewのリサイズ

    (bool)_containment

    ドラッグ時のはみ出し

    (array)_objlist

    ぶら下がっているview(子View)

    (bool)_hidden

    非表示設定。「true」だと非表示になる。

    (bool)_shadow

    影設定。「true」でViewに影が付く。

    (bool)_userInteractionEnabled

    タップやダブルタップに反応するか。

    (bool)_contentMode

    viewの表示方法。
    JSViewContentModeScaleAspectFit:Aspect比を保ったまま画像の縦と横で長いほうを親viewに合わせる
    JSViewContentModeScaleAspectFill:親viewをすべて埋め尽くす形で画像を表示する

    インスタンスメソッド

    addSubview(object)

    サブビューを追加します。
    対象ととなるビューの上に表示したいビューのオブジェクトを渡すと画面に表示されます。
    addSubview()出来るのはJSView及び、JSViewを継承しているクラスのインスタンスに限ります。
    追加したviewをドラッグして外に出せるかの「_conteinment」は、追加された親viewの設定が反映されます。
    (親viewが「_conteinment = true」だった場合は、追加された子viewにはみ出し禁止属性がつきます)

    引数
    object
    子ビューとして画面に表示するオブジェクト

    返値
    なし

    setFrame(JSRectオブジェクト)

    ビューのサイズをJSRectオブジェクトで指定します。
    addSubbiew()されていた場合、即座に変更が反映されます。

    引数
    JSRectオブジェクト
    ビューのサイズ。

    返値
    なし

    setBackgroundColor(JSColor()の返値)

    ビューの背景色を設定します。

    引数
    JSColor()の返値
    Viewの背景色をJSColor()で指定します。
    色の指定は「JSColor()」関数の返値を指定します。
    (「clearColor」は透明色です)

    返値
    なし

    setAlpha(float)

    Viewの透過度を0.0〜1.0で指定します。

    引数
    float
    透過度。

    返値
    なし

    setCornerRadius(int)

    Viewの角の丸みを数値で指定します。

    引数
    int
    角の丸み

    返値
    なし

    setBorderColor(JSColor()の返値)

    Viewの枠の色をで指定します。
    色の指定は「JSColor()」関数の返値を指定します。
    枠を表示させるにはこの設定と、枠の太さの設定が必要です。

    引数
    JSColor()の返値
    ビューの枠色

    返値
    なし

    setClipToBounds(bool)

    Viewの外に出た子Viewをクリッピングするか指定します。
    trueでクリッピングされます。
    「JSImageView」に関しては、このメソッドで設定するインスタンス変数「_clipToBounds」は常にtrueです。

    引数
    bool
    addSubview()された子ビューが、自分自身のビュー領域の外へはみ出した場合の子ビューを、クリッピングして描画するかどうかを指定します。
    「true」でクリッピングされます、「false」だとそのままはみ出して描画されます。

    返値
    なし

    setUserInteractionEnabled(bool)

    ビューがクリックやダブルクリックに反応するか指定します。

    引数
    bool
    「true」の場合は、クリックやタップに反応します。
    addTapGesture()を設定しても、このパラメータが「false」の場合は反応しません。

    返値
    なし

    setDraggable(bool, [axis], [float])

    Viewをマウスで掴んで移動出来るようにするか指定します。
    trueでドラッグ出来るようになります。

    引数
    bool
    「true」を設定するとドラッグ出来るようになります。
    「false」を設定するとドラッグ出来なくなります。

    string
    "x"を指定するとx方向だけのドラッグになります。
    "y"を指定するとy方向だけのドラッグになります。
    省略するか、falseを指定するとx方向、y方向両方のドラッグになります。

    float
    ドラッグしている時の透過度を0.0〜1.0の範囲で指定します。
    省略すると、0.5が指定されます。

    返値
    なし

    setResizable(bool, [float])

    Viewをマウスで掴んでサイズを帰られるようにするか指定します。
    trueで変更出来るようになります。

    引数
    bool
    「true」を設定するとサイズ変更出来るようになります。
    「false」を設定するとサイズ変更出来なくなります。

    float
    リサイズしている時の透過度を0.0〜1.0の範囲で指定します。
    省略すると、1.0が指定されます。

    返値
    なし

    setHidden(bool)

    Viewを表示するか指定します。

    引数
    「true」を設定すると画面に表示されません。
    「false」を設定すると画面に表示されます。
    クリックやタップのアクションを設定していても、「false」が設定されていると反応しません。

    返値
    なし

    setContainment(bool)

    子Viewが親viewの領域の外へドラッグ出来るかどうかを設定します。

    引数
    bool
    「true」を設定すると、親ビューの外へ子ビューを移動出来なくなります。
    「false」を設定すると制限が無くなります。
    jQueryでは、指定したエレメントが外に出るか/出ないかの設定ですが、code:JSでは設定したビューの子ビューに対して設定が反映されます。

    返値
    なし

    bringSubviewToFront(view_object)

    JSViewもしくは、JSViewを継承しているオブジェクトを表示上の最前面に移動します。

    引数
    object
    指定した子ビューを表示上の最前面に移動します。

    返値
    なし

    removeTapGesture(int)

    指定した回数のクリックで実行されるアクションを削除します。

    引数
    int
    削除するアクションが実行されるクリックの回数を指定します。
    「1」だとシングルクリック、「2」だとダブルクリックのアクションを削除します。

    返値
    なし

    removeFromSuperview(void)

    このメソッドを呼び出したビューをデータ上/表示上において削除します。
    削除するビューの子ビューもすべて削除されます。

    引数
    なし

    返値
    なし

    addTapGesture(method, int)

    ビューがクリックされた場合の挙動を定義します。
    呼ばれたmethodの引数に、クリックされたviewと、クリックされた時のeventが渡されます。

    引数
    method
    実行されるメソッド
    int
    クリックの回数

    返値
    なし

    animateWithDuration(float, 連想配列, method)

    Viewをアニメーションさせます。

    【例】
    view = new JSView(JSRectMake(0, 0, 320, 240))
    animateWithDuration 0.5,
        alpha: 0.0,
    =>
        view.removeFromSuperview()

    上記の例では、新たに生成したビュー「view」にアニメーションを設定しています。
    設定されているアニメーション設定は「0.5秒で、現在のalpha値を0.0にし、最後にviewを削除しています。
    「delete」は同じクラス内で定義さているインスタンスメソッドになります。
    「delete」の定義では引数「sender」を指定しておくと、呼ばれた際に中にはクリックされたviewが格納されています。
    このメソッドは、「constructor」では実行されません。
    必ず「viewDidAppear」内、もしくは「viewDidAppear」が実行された後に呼び出してください。
    引数
    float
    アニメーションさせる秒数を浮動小数点で渡します。
    jQueryでは1/1000秒単位で指定しますが、code:JSでは秒単位で指定します。
    連想配列
    変化させる要素を連想配列で渡します。
    基本的には、jQueryのanimationメソッドに準じます。
    method
    アニメーション終了後に実行されるメソッド(省略可)

    返値
    なし

    setShadow(bool)

    引数
    bool
    ビューに影を付けるか指定します。
    「true」を設定すると影が付きます。
    「false」を設定すると影が付きます。

    返値
    なし

     JSAlertView
    JSObject→JSResponder→JSView→JSAlertViewbr

    (object)JSAlertView(string, string, array)

    jQueryの「Dialog」を使用して、確認用ダイアログの表示や、パラメータ入力ダイアログを表示します。
    「JSAlertViewStyleDefault」の場合は、デフォルトではメッセージと「OK」ボタンのみが表示されます。
    インスタンス変数「cancel」を「true」にすることで「Cancel」ボタンが表示されます。
    この場合は「clickedButtonAtIndex」に渡される引数は、ダイアログ上でクリックされたボタンの番号/入力されたデータの配列と、JSAlertViewオブジェクトになります。
    「JSAlertViewStylePlainTextInput」の場合は、指定した配列の要素分の入力された文字列が配列で渡されます。
    デフォルトで「Cancel」ボタンは表示されます。


    初期化引数

    string
    ダイアログのタイトルバーに表示するタイトルを文字列で指定します。

    string
    ダイアログの説明文を文字列で指定します。

    array
    ダイアログで入力を促す項目の名称を文字列の配列で指定します。
    「JSAlertViewStyleDefault」では省略可能です。


    使用例

    例1
    alert = new JSAlertView("確認", "閉じてもよろしいですか?")
    alert.delegate = @_self
    view.addSubview(alert)
    alert.show()

    例2
    alert = new JSAlertView("情報入力", "プロフィール入力", ["年齢", "性別", "出身地", "趣味"])
    alert.setData(["20", "Male", "Tokyo", "camera"]) alert.delegate = @_self
    alert.setAlertViewStyle("JSAlertViewStylePlainTextInput") view.addSubview(alert)
    alert.show()


    インスタンス変数

    _style

    アラートビューのスタイルを設定します。
    このスタイルによって表示されるアラートの種類が変わります。
    JSAlertViewStyleDefault:タイトルとメッセージを表示し、「OK」と「Cancel」のボタンクリックを促します。
    JSAlertViewStylePlainTextInput:指定した項目の文字入力を促すアラートダイアログを表示します。

    delegate

    アラートダイアログの「OK」がクリックされた時の、処理を委譲するオブジェクトを設定します。
    基本的には、この変数に設定されているオブジェクトで定義されている「clickedButtonAtIndex」が呼び出されます。

    cancel

    アラートダイアログに「Cancel」ボタンを表示するか設定します。
    「true」を設定すると「Cancel」ボタンが表示されます。
    「false」を設定すると表示されません。
    デフォルトは「false」です。
    この設定は「addSubview()」する前に設定しなければいけません。


    インスタンスメソッド

    setAlertViewStyle(string, string, array)

    アラーとダイアログのスタイルを設定します。
    JSAlertViewStyleDefault:指定したタイトルとメッセージを表示し、「OK」と「Cancel」のボタンクリックを促します(上記の例1)。
    JSAlertViewStylePlainTextInput:指定したタイトルとメッセージを表示し、指定した項目の文字入力と「OK」と「Cancel」のボタンクリックを促します。
    「JSAlertViewStylePlainTextInput」の場合は、第三引数として配列を指定すると、その配列の要素の分だけ文字入力を促します(上記の例2)。

    引数
    string
    ダイアログタイトル。
    string
    ダイアログメッセージ。
    array
    「JSAlertViewStylePlainTextInput」の場合に入力させるテキストフィールドのタイトル。
    「JSAlertViewStyleDefault」の場合は省略可。

    返値
    なし

    setData(array)

    「JSAlertViewStylePlainTextInput」の時に、デフォルトで表示しておく文字列を設定します。
    入力を促す項目の数と同じだけのデフォルト値が必要です。

    引数
    array
    「JSAlertViewStylePlainTextInput」の時に、デフォルトで表示しておく文字列の配列。

    返値
    なし

    show(void)

    アラートダイアログを表示します。
    このJSAlertViewは、「addSubview()」しただけでは画面には表示されません。
    このメソッドを呼び出したタイミングで表示されます。
    一回表示した後は、「OK」か「Cancel」がクリックされた時にオブジェクトは開放されます。

    引数
    なし

    返値
    なし


    デリゲートメソッド

    clickedButtonAtIndex(int, object)

    表示したアラートダイアログのボタンがクリックされた時に呼ばれるメソッド。

    引数
    int
    0:「Cancel」が押された
    1:「OK」が押された
    sender
    ダイアログ自体のJSAlertViewオブジェクト。

    返値
    無し

     JSControl
    JSObject→JSResponder→JSView→JSControl

    (object)JSControl(JSRectオブジェクト)

    JSViewのタップアクションと、表示の有効/無効をコントロールします。
    このクラス単体で使うことはほとんどありません。

    初期化引数

    JSRectオブジェクト
    ビューのサイズをJSRectクラスのオブジェクトで指定します。

    インスタンス変数

    _enable

    タップアクションと、表示の有効/無効の状態を表します。
    true:有効。画面に表示され、タップアクションに反応します。
    false:無効。画面に表示されず、タップアクションに反応しません。


    インスタンスメソッド

    addTarget(method)

    ビューがタップされた場合に実行されるメソッド(無名関数でも可)を設定します。

    引数
    method
    ビューがタップされた場合に実行されるメソッド(無名関数でも可)。
    インスタンス変数「_enable」がfalseの場合は実行されません。

    返値
    なし

    setEnable(bool)

    ビューのタップアクションと、表示の有効/無効を設定します。

    引数
    method
    タップアクションと、表示の有効/無効の状態を設定します。
    true:有効。画面に表示され、タップアクションに反応します。
    false:無効。画面に表示されず、タップアクションに反応しません。

    返値
    なし

     JSGLView
    JSObject→JSResponder→JSView→JSGLView

    (object)JSGLView(JSRectオブジェクト, string, float, bool)

    Three.jsを用いたWebGL用のビューを生成します。
    実際のWebGLのコーディングに関しては、WebGLのドキュメントを見てください。

    初期化引数

    JSRectオブジェクト
    ビューのサイズをJSRectクラスのオブジェクトで指定します。

    string
    ビューの背景色を、JSColor()で指定します。

    float
    ビューの透過度を浮動小数点数で指定します。

    bool
    アンチエイリアシングを行うかをtrue/falseで指定します。


    使用例

    geometry = new THREE.SphereGeometry(1, 32, 16)
    geometry.computeFaceNormals()
    geometry.computeVertexNormals()
    material = new THREE.MeshPhongMaterial
        color: 0xffffff
        ambient: 0xffffff
        specular: 0xffffff
        shininess:100
        metal:true
    @_mesh = new THREE.Mesh(geometry, material)
    @_scene.add(@_mesh)
    @render()

    インスタンス変数

    (float)_perspective

    画角。
    通情は、10〜70の値を設定します。

    (float)_camera_x

    カメラのX座標。

    (float)_camera_y

    カメラのY座標。

    (float)_camera_z

    カメラのZ座標。

    (float)_lookat_x

    カメラの注視点X座標。

    (float)_lookat_y

    カメラの注視点Y座標。

    (float)_lookat_z

    カメラの注視点Z座標。

    (string)_lightcolor

    ライトの色。
    6桁の16進数で指定します。

    (float)_lightdir_x

    ライトの向きX

    (float)_lightdir_y

    ライトの向きY

    (float)_lightdir_z

    ライトの向きZ

    (float)_ambientLightColor

    環境光の色。
    6桁の16進数で指定します。


    インスタンスメソッド

    setCamera(float, float, float, float, float, float, float)

    Three.jsのカメラを設定します。

    引数
    float
    カメラの画角。
    通情は10〜70の値を指定します。
    float
    カメラのX座標。
    float
    カメラのY座標。
    float
    カメラのZ座標。
    float
    カメラの注視点X座標。
    float
    カメラの注視点Y座標。
    float
    カメラの注視点Z座標。

    返値
    なし

    setLight(,float float, float, float)

    ライトの情報を設定します。

    引数
    float
    ライトの色。
    6桁の16進数で指定します。
    float
    引数の説明
    float
    引数の説明
    float
    引数の説明

    返値
    なし

    setAmbient(float)

    環境光の色を設定します。

    引数
    float
    環境光の色。
    6桁の16進数で指定します。

    返値
    なし

    render(void)

    Three.jsのシーンをレンダリングします。
    このメソッドを呼ぶと、requestAnimationFrame()で「enterFrame()」というメソッドが呼ばれるので、そこにオブジェクトの値を変更する処理を書いておくとアニメーションさせられたりします。

    引数
    なし

    返値
    なし

     JSImageView
    JSObject→JSResponder→JSView→JSImageView

    (object)JSImageView(JSRectオブジェクト)

    画像を表示するビューです。
    このクラスで生成したオブジェクトは、「_userInteractionEnabled」が「false」になっています。


    初期化引数

    JSRectオブジェクト
    ビューのサイズをJSRectクラスのオブジェクトで指定します。


    使用例

    path = JSSearchPathForDirectoriesInDomains("JSPictureDirectory")
    img = new JSImage(path+"/sample.png")
    imgview = new JSImageView()
    imgview.setImage(img)
    view.addSubview(imgview)


    インスタンス変数

    _contentMode

    画像の表示方法。


    インスタンスメソッド

    setImage(JSImageオブジェクト)

    ビューに表示する画像をJSImageオブジェクトで指定します。

    引数
    JSImageオブジェクト
    ビューに表示させる画像を設定した、JSImageオブジェクトを渡します。

    返値
    なし

    setContentMode(string)

    画像の表示方法を設定します。

    引数
    string
    画像の表示方法を渡します。
    JSViewContentModeNormal:画像を上寄せで全体が表示されます。(デフォルト)
    JSViewContentModeScaleAspectFit:画像のアスペクト比を保って全体が表示されます。
    JSViewContentModeScaleAspectFill:画像のアスペクト比を保ってビュー全体に表示されます(画像の全ては表示されません)。

    返値
    なし


     JSLabel
    JSObject→JSResponder→JSView→JSLabel

    (object)JSLabel(JSRectオブジェクト)

    クラスの説明

    初期化引数

    JSRectオブジェクト
    ラベルのサイズをJSRectクラスのオブジェクトで指定します。


    使用例

    label = new JSLabel(JSRectMake(4, 4, 80, 24))
    view.addSubview(label)


    インスタンス変数

    (int)_textSize

    テキストの文字サイズ。

    (string)_textColor

    テキストの文字色。
    JSColor()の返値で指定します。

    (string)_textAlignment

    テキストの水平方向の位置。

    (string)_text

    ラベルに表示されている文字列。


    インスタンスメソッド

    setText(string)

    ラベルに表示するテキストを設定します。

    引数
    string
    ラベルに表示するテキストを指定します。

    返値
    なし

    setTextSize(int)

    ラベルに表示するテキストのフォントサイズを設定します。

    引数
    float
    ラベルに表示するテキストのフォントサイズを指定します。

    返値
    なし

    setTextColor(string)

    ラベルに表示するテキストの文字色を設定します。

    引数
    string
    ラベルに表示するテキストの文字色をJSColor()の返値で指定します。

    返値
    なし

    setTextAlignment(string)

    ラベルに表示するテキストの水平位置を設定します。

    引数
    string
    ラベルに表示するテキストの水平位置を指定します。
    JSTextAlignmentLeft:左寄せ
    JSTextAlignmentCenter:中央
    JSTextAlignmentRight:右寄せ

    返値
    なし


     JSRect
    JSObject→JSRect

    (object)JSRect(void)

    座標と領域を持ったクラス。


    使用例

    rect = new JSRect()
    rect.origin.x = 0
    rect.origin.y = 0
    rect.size.width = 320
    rect.size.height = 240

    上記コードでもJSRectオブジェクトは生成出来ますが、通情は、
    rect = JSRectMake(0, 0, 320, 240)
    というライブラリ関数を使ってオブジェクトを生成します。


    インスタンス変数

    JSPointオブジェクト

    座標値。
    JSPointは、「x」と「y」のインスタンス変数を持っています。

    JSSizeオブジェクト

    領域値。
    JSSizeは、「width」と「height」のインスタンス変数を持っています。


    インスタンスメソッド

    なし


     JSScrollView
    JSObject→JSResponder→JSView→JSScrollView

    (object)JSScrollView(JSRectオブジェクト)

    ビューからはみ出た領域の表示方法を制御します。
    このクラスを単独で使用することはほとんどありません。


    初期化引数

    JSRectオブジェクト
    ビューのサイズをJSRectクラスのオブジェクトで指定します。


    インスタンス変数

    (bool)_scroll

    ビューからはみ出した領域がある場合の表示方法。


    インスタンスメソッド

    setScroll(bool)

    ビューからはみ出た領域がある場合の表示方法を設定します。

    引数
    bool
    ビューからはみ出た領域がある場合の表示方法をbool値で指定します。
    true:スクロールして表示します。
    false:表示されません。

    返値
    なし

     JSTableView
    JSObject→JSResponder→JSView→JSScrollView→JSTableView

    (object)JSTableView(JSRectオブジェクト)

    連続したビューの表示(テーブルビュー)クラス。


    初期化引数

    JSRectオブジェクト
    テーブルビューのサイズをJSRectクラスのオブジェクトで指定します。
    サイズの指定を省略するとビューのサイズがブラウザ(スマートフォンでは画面)全体になります。


    使用例

    tableview = new JSTableView()
    @_self.addSubview(tableview)


    インスタンス変数

    (int)_rowHeight

    デフォルトのセルの高さ。

    (string)_title

    タイトルを表示するためのJSLabelオブジェクト。
    このオブジェクトのメソッドを実行することでタイトルの見栄えを変更することが出来る。

    (object)delegate

    テーブルビューに関するイベントが発生した時にデリゲートメソッドが呼ばれるオブジェクト。

    (object)dataSource

    テーブルビューに表示するためのデータを設定するデリゲートメソッドが呼ばれるオブジェクト。


    インスタンスメソッド

    setRowHeight(int)

    デフォルトのセルの高さを設定します。
    「heightForRowAtIndexPath」で指定しない場合はこの値が使用されます。

    引数
    int
    デフォルトのセルの高さを指定します。

    返値
    なし

    reloadData(void)

    テーブルビューに表示しているデータ配列の内容を更新した場合は、このメソッドを呼ぶことで表示を更新させます。

    引数
    なし

    返値
    なし

    デリゲートメソッド

    heightForRowAtIndexPath(void)

    JSTableViewCellの高さを返す。
    これを設定しない場合はデフォルト値「24」が使用される。

    引数
    無し

    返値
    セルの高さ(int)

    numberOfSectionsInTableView(void)

    JSTableViewに含まれるセクションの数を返す。

    引数
    無し

    返値
    セクションの数(int)

    numberOfRowsInSection(void)

    各セクションに含まれるセルの数を返す。

    引数
    無し

    返値
    セルの数(int)

    cellForRowAtIndexPath(int)

    渡されたセル番号に対応するセルオブジェクトを生成して返す。

    引数
    セル番号(int)

    返値
    セルオブジェクト(JSTableViewCell)

    didSelectRowAtIndexPath(int)

    セルがタップされた時に実行される。

    引数
    セル番号(int)

    返値
    無し

     JSWindow
    JSObject→JSResponder→JSView→JSWindow

    (object)JSWindow(JSRectオブジェクト)

    JSViewを継承した基本的なビュークラス。


    初期化引数

    JSRectオブジェクト
    ビューのサイズをJSRectクラスのオブジェクトで指定します。


    使用例

    window = new JSWindow(JSRectMake(0, 0, 320, 240))
    view.addSubview(window)


    インスタンス変数

    なし


    インスタンスメソッド

    なし


     JSButton
    JSObject→JSResponder→JSView→JSControl→JSButton

    (object)JSButton(JSRectオブジェクト)

    jQueryUIを用いたボタンオブジェクト。
    ボタンが押された時に実行される処理を設定するのは、「JSControl」の「addTarget」なので、ここには出てこない。


    初期化引数

    JSRectオブジェクト
    ビューのサイズをJSRectクラスのオブジェクトで指定します。


    使用例

    button = new JSButton(JSRectMake(0, 0, 80, 24))
    button.setButtonTitle("ボタンタイトル")
    button.addTarget =>
        alert('hoge')
    view.addSubview(button)


    インスタンス変数

    (string)_buttonTitle

    ボタンに表示するテキスト。

    (string)_style

    ボタンの種類(機能)。

    (int)_textSize

    ボタンに表示するテキストのサイズ。

    (string)icon

    ボタンに表示するアイコン。
    これにアイコンを指定した場合は、ボタンにテキストは表示されない。
    指定するアイコンはjQueryUIのアイコン名を指定する。

    (array)filter

    アップロード可能なファイルの拡張子をリストで渡す。

    (string)savedir

    ボタンのタイプが「JSFormButtonStyleFileUpload」だった場合に、ファイルがアップロードされるディレクトリを、アプリケーションルートからの相対パスで指定する。

    (array)filter

    ボタンのタイプが「JSFormButtonStyleFileUpload」だった場合に、アップロードできるファイルの拡張子を指定する。
    指定の必要が無い場合はなにも指定しない。

    (object)delegate

    ボタンのタイプが「JSFormButtonStyleFileUpload」だった場合に、ファイルのアップロードが終わった時に「didFileUpload()」が呼ばれるオブジェクト。
    「didFileUpload()」が呼ばれた時は、引数としてアップロードされた画像のフルパスが「path」というメンバーに入ったオブジェクトが渡されます。


    インスタンスメソッド

    setButtonTitle(string)

    ボタンに表示させるテキストを設定します。

    引数
    string
    ボタンに表示させるテキストを指定。

    返値
    なし

    setTextSize(int)

    ボタンに表示させるテキストのサイズを設定します。

    引数
    int
    ボタンに表示させるテキストのサイズを指定。

    返値
    なし

    setStyle(string)

    ボタンをクリックした時に特殊な処理を行わせる設定をします。

    引数
    string
    このメソッドで設定を行わない場合は、「_style」には「JSFormButtonStyleNormal」が格納され、通常のボタンとして機能します。
    このメソッドで「JSFormButtonStyleFileUpload」を設定した場合は、ボタンをクリックするとデフォルトでは「[アプリケーションルート]/Media/Picture」にファイルをアップロードするボタンになります。
    メンバー変数「savedir」にディレクトリを指定すると、そのディレウトリにアップロードされます。

    返値
    なし


    デリゲートメソッド

    didFileUpload(void)

    ボタンのタイプが「JSFormButtonStyleFileUpload」だった場合に、画像のアップロードが終わった時に呼ばれるメソッド。

    引数
    無し

    返値
    無し

    didUploadStart(void)

    ボタンのタイプが「JSFormButtonStyleFileUpload」だった場合に、ボタンがクリックされた時に呼ばれるメソッド。

    引数
    無し

    返値
    無し

     JSImagePicker
    JSObject→JSResponder→JSView→JSScrollView→JSImagePicker

    (object)JSImagePicker(void)

    「[アプリケーションルート]/Media/Picture」にある画像を選択するビューを表示します。
    通常はボタンが押されたりした時のアクションとして使用します。
    このビューは「addSubview」した途端に表示されます。


    使用例

    button = new JSButton()
    button.delegate = @_self
    button.addTarget =>
        pick = new JSImagePicker()
        view.addSubview(pick)


    インスタンス変数

    _thumbnail_width

    サムネイル画像の幅。

    _thumbnail_height

    サムネイル画像の高さ。

    delegate

    画像を選択した時に「didPickedImage」メソッドが呼ばれるオブジェクト。
    「didPickedImage」が呼ばれた時は、アプリケーションルートまでのパスが省かれた画像ファイルのパスが、引数として渡されます。
    例)Media/Picture/sample.png


    インスタンスメソッド

    なし


    デリゲートメソッド

    didPickedImage(string)

    画像が選択された場合、引数に画像へのパスが渡された状態で呼び出されます。

    引数
    string
    選択された画像へのパス。

    返値
    無し


     JSListView
    JSObject→JSResponder→JSView→JSScrollView→JSListView

    (object)JSListView(JSRectオブジェクト)

    jQueryUIを使った並べ替え可能なリスト表示ビュー。


    初期化引数

    JSRectオブジェクト
    ビューのサイズをJSRectクラスのオブジェクトで指定します。


    使用例

    list = new JSListView(JSRectMake(0, 0, 320, 240))
    list.setListData(["ほげほげ", "ふがふが", "foobar"])
    list.setStyle("JSListStyleStandard")
    list.setTextSize(12)
    view.addSubview(list)


    インスタンス変数

    _listData

    リストに表示する要素の文字列配列。
    「JSListStyleSortable」の時は、「sortReflection()」を実行するまでは更新されません。

    _action

    「JSListStyleStandard」と「JSListStyleDropdown」の時に、項目がクリックされた時に実行される処理(無名関数可)。
    インスタンスメソッド「addTarget()」で設定。


    _style

    リストの種類。

    _textSize

    リストに表示するテキストのフォントサイズ。


    インスタンスメソッド

    setListData(array)

    リストに表示する文字列配列。

    引数
    array
    各リストに表示するテキストを文字列配列という形で渡します。

    返値
    なし

    count(void)

    リストの要素数。

    引数
    なし

    返値
    int
    リストの要素数

    objectAtIndex(int)

    指定した添字番号のデータを返します。

    引数
    int
    取得したいデータのリスト番号。

    返値
    string
    指定した添字番号のリストデータ

    getSelect(void)

    選択されている要素の番号を返す。

    引数
    無し

    返値
    int
    選択されている要素番号。

    setSelect(int)

    指定した添字番号のリストを選択状態にします。

    引数
    int
    選択したいリストの添字番号。

    返値
    なし

    sortReflection(void)

    「JSListStyleSortable」の時に、ソートされたリストに上から順番にナンバリングし直します。
    ソートした後にこのメソッドを呼ばないと、リスト表示に使っている配列の添字情報が更新されません。

    引数
    なし

    返値
    なし

    setTextSize(int)

    リストに表示するテキストのフォントサイズを設定します。

    引数
    int
    設定するフォントサイズ。

    返値
    なし

    addTarget(method)

    「JSListStyleStandard」と「JSListStyleDropdown」の時に、項目がクリックされた際に実行される処理を設定します(無名関数可)。
    処理が呼び出される時は、クリックされたリストの添字番号が渡される。

    引数
    method
    「JSListStyleStandard」と「JSListStyleDropdown」の時に、項目がクリックされた際に実行される処理(無名関数可)。

    返値
    なし

    setStyle(string)

    リストの種類(機能)を設定します。

    引数
    string
    リストの種類(機能)。
    JSListStyleStandard:設定された配列のデータを一覧状態で表示して、選択を促します。
    JSListStyleDropdown:設定された配列のデータを一行で表示し、クリックされるとドロップダウンして、選択を促します。
    JSListStyleSortable:jQueryUIの「sortable」を使用し、リストの並べ替え機能を提供します。

    返値
    なし

    reload(void)

    リストを再描画します。
    「addSubview」されている場合は即時更新されます。

    引数
    なし

    返値
    なし


     JSMenuView
    JSObject→JSResponder→JSView→JSScrollView→JSMenuView

    (object)JSMenuView(JSRectオブジェクト)

    jQueryUIを使ったドロップダウン式のメニューです。
    メニューを選択すると、「addTarget()」で指定したメソッドが選択されたメニューの番号(上から0, 1, 2...)を渡されて呼ばれます。


    初期化引数

    JSRectオブジェクト
    ビューのサイズをJSRectクラスのオブジェクトで指定します。


    使用例

    menu = new JSMenuView(JSRectMake(0, 0, 120, ))


    インスタンス変数

    _textSize

    メニューに表示するテキストのフォントサイズ。


    インスタンスメソッド

    addTarget(method)

    メニューを選択した時に実行される処理を設定します。

    引数
    method
    メニューを選択した時に実行される処理を指定します(無名関数可)。
    処理が呼び出される時に、選択された項目の添字番号が渡されます。

    返値
    なし

    addMenuItem(array)

    メニューに表示する項目名を設定します。

    引数
    array
    メニューに表示する項目名を配列で指定します。

    返値
    なし

    closeMenu(void)

    メニューを閉じます。

    引数
    なし

    返値
    なし


     JSSwitch
    JSObject→JSResponder→JSView→JSControl→JSSwitch

    (object)JSSwitch(JSRectオブジェクト)

    jQueryUIのスイッチウィジェットを設置します。


    初期化引数

    スイッチの位置とサイズを表すJSRectオブジェクトを渡します。


    使用例

    switch = new JSSwitch()
    view.addSubview(switch)


    インスタンス変数

    なし


    インスタンスメソッド

    setValue(bool)

    スイッチの状態を設定します。
    「true」でONにします。
    「false」でOFFにします。

    引数
    bool
    設定するスイッチの状態。

    返値
    なし

    getValue(void)

    現在のスイッチの状態を取得します。

    引数
    なし

    返値
    bool
    スイッチの状態。


     JSTextField
    JSObject→JSResponder→JSView→JSControl→JSTextField

    (object)JSTextField(JSRectオブジェクト)

    編集可能な一行のテキストビュー。


    初期化引数

    JSRectオブジェクト
    ビューのサイズをJSRectクラスのオブジェクトで指定します。


    使用例

    textfield = new JSTextField(JSRectMake(0, 0, 120, 24))
    view.addSubview(textfield)


    インスタンス変数

    (int)_textSize

    編集不可状態でのテキストのフォントサイズ。

    (string)_textColor

    編集不可状態でのテキストカラー。
    JSColor()で指定します。

    (string)_textAlignment

    編集不可状態でのテキストの水平位置。

    (string)_text

    表示されるテキスト。

    (bool)_editable

    編集可能/不可能状態。

    (bool)_focus

    フォーカス状態


    インスタンスメソッド

    setText(string)

    テキストフィールドのテキストを設定します。

    引数
    string
    テキストフィールドに表示するテキストを指定します。

    返値
    なし

    setTextSize(int)

    編集不可状態のテキストフィールドに表示するテキストのフォントサイズを設定します。

    引数
    int
    編集不可状態のテキストフィールドに表示するテキストのフォントサイズを指定します。

    返値
    なし

    setTextColor(string)

    編集不可状態のテキストフィールドのテキストカラーを設定します。

    引数
    float
    編集不可状態のテキストフィールドのテキストカラーをJSColor()で指定します。

    返値
    なし

    setTextAlignment(string)

    編集不可状態のテキストフィールドのテキストの水平位置を設定します。

    引数
    string
    編集不可状態のテキストフィールドのテキストの水平位置を設定します。
    JSTextAlignmentLeft:左寄せ
    JSTextAlignmentCenter:中央
    JSTextAlignmentRight:右寄せ

    返値
    なし

    setEditable(bool)

    テキストの編集可能/不可能状態を設定します。

    引数
    bool
    テキストの編集可能/不可能状態を設定します。
    true:編集可能
    false:編集不可

    返値
    なし

    setDidKeyPressEvent(action)

    キーが押された時に呼び出されるメソッドを指定します。
    そのまま無名関数を記述することも出来ます。
    呼ばれたメソッドは引数として押されたキーコードが渡されます。

    引数
    action
    メソッドを指定します。
    そのまま無名関数を記述することも出来ます。

    返値
    なし

    setFocus(bool)

    テキストフィールドのフォーカスを設定します。
    falseを設定するとキーボードが非表示になります。

    引数
    bool
    フォーカス状態を指定します。

    返値
    なし


     JSTextView
    JSObject→JSResponder→JSView→JSScrollView→JSTextView

    (object)JSTextView(JSRectオブジェクト)

    編集可能な複数行テキストビュー。
    デフォルトでは、編集可能状態になっています。


    初期化引数

    JSRectオブジェクト
    ビューのサイズをJSRectクラスのオブジェクトで指定します。


    使用例

    textview = new JSTextView(JSRectMake(0, 0, 320, 240))
    view.addSubview(textview)


    インスタンス変数

    (bool)_editable

    編集可能/不可能の状態。

    (int)_textSize

    編集不可状態でのテキストサイズ。

    (string)_textColor

    編集不可状態でのテキストカラー。
    JSColor()で指定します。

    (string)_textAlignment

    編集不可状態でのテキストの水平位置。

    (string)_text

    テキストビューに表示するテキスト。

    (int)_writingMode

    テキストの縦書き/横書き。

    (float)_lineHeight

    テキストの行間サイズ。
    デフォルトは1.0


    インスタンスメソッド

    setWritingMode(int)

    テキストの縦書き/横書きを設定します。
    webkit系のブラウザ専用のメソッドになります。
    縦書きの編集にはバグがあるため、縦書きを指定すると強制的に編集不可モードになります。
    縦書きモードにした後に編集可にした場合の動作はどうなるかわかりません。

    引数
    int
    テキストの縦書き/横書きを設定します。
    0:横書き
    1:縦書き

    返値
    なし

    getText(void)

    メソッドの説明
    引数
    なし

    返値
    string
    テキストビューのテキストデータを返します。

    setText(string)

    テキストビューに表示するテキストを設定します。

    引数
    string
    テキストビューに表示するテキストを指定します。

    返値
    なし

    setTextSize(int)

    編集不可状態のテキストサイズを設定します。

    引数
    int
    編集不可状態のテキストサイズを指定します。

    返値
    なし

    setTextColor(string)

    編集不可状態のテキストカラーを設定します。

    引数
    string
    編集不可状態のテキストカラーを指定します。
    JSColor()で指定します。

    返値
    なし

    setEditable(bool)

    テキストビューの編集可能/不可能状態を設定します。
    縦書きモードにした場合は自動的に編集不可になります。

    引数
    bool
    テキストビューの編集可能/不可能状態を指定します。
    true:編集可能
    false:編集不可

    返値
    なし

    setTextAlignment(string)

    編集不可状態のテキストの水平位置を設定します。

    引数
    string
    編集不可状態のテキストの水平位置を指定します。
    JSTextAlignmentLeft:左寄せ
    JSTextAlignmentCenter:中央
    JSTextAlignmentRight:右寄せ

    返値
    なし

    setTextVerticalAlignment(string)

    編集不可状態のテキストの垂直位置を設定します。

    引数
    string
    編集不可状態のテキストの垂直位置を指定します。
    JSTextVerticalAlignmentTop:上寄せ
    JSTextVerticalAlignmentMiddle:中央
    JSTextVerticalAlignmentBottom:下寄せ

    返値
    なし

    setTextLineHeight(float)

    テキストの行間サイズを設定します。
    デフォルトは1.0です。

    引数
    float
    行間サイズを指定します。

    返値
    なし