Curl Sonntag とは

logo_sonntag.png

 

 

 

Curl Sonntag とは

Curl Sonntag (カールゾンターク)とは、画面単位でプログラムを整理するためのCurlによるMVCフレームワークで、オープンソースとして提供しております。(ライセンス:Apache2.0)ソースコード及びバイナリファイルは、SourceForgeからダウンロードすることができます。

SourceForge.net(ダウンロード)

Curl Sonntagを使った開発では、1画面毎に以下の3種類のクラスを作ります。

  • ScreenGraphic (グラフィック)
  • Screen (スクリーン)
  • ScreenCommand (コマンド)

 

son1.jpg

アプリケーションのUIに応じて、1つのウィンドウを複数の画面として開発することもできます。

例えば、以下のようなヘッダー・メニュー・ボディに分かれたレイアウト構成の場合は、

son2.jpg

タブペインの場合は、

son3.jpg

のように画面を分割定義することができます。 

グラフィックとは(ScreenGraphic)

デザインをする人が、画面レイアウトを定義するクラスとなります。

  • ロジックは基本的に持たない
  • 動的なレイアウトはスクリーン(Screen)で実装

グラフィックを作成するには、VLE(ビジュアル・レイアウト・エディタ)で作成したクラスか、グラフィカルオブジェクト(FrameやCanvasを継承したもの)のようなPure Curlクラスで定義します。具体的には、以下のようなクラス定義となります。

|| グラフィカルオブジェクト
{define-class public LoginGraphic {inherits Frame}
  ・・・
}

|| VLEレイアウト
{define-layout-class public OrderEntryLayout
  ・・・
}

 

スクリーンとは(Screen)

画面毎のアプリケーションロジックを持つクラスとなります。このスクリーンクラス内で、画面の初期化やグラフィックへのアクセスなどを記述し、グラフィックの操作をカプセル化します。

スクリーンを作成するには、フレームワークのクラスを継承したクラスを定義します。例えば、VLEで作成したグラフィックの場合は「inherits {VScreen-of XxxxLayout}」のように、VLEで作成せずスクラッチでコーディングしたグラフィックの場合は「inherits {Screen-of XxxxGraphic}」のようにVScreen-ofまたはScreen-ofを継承します。(Xxxxはグラフィッククラス名です)

|| グラフィッククラスがグラフィカルオブジェクト
{define-class public LoginScreen
  {inherits {Screen-of LoginGraphic}}
  ・・・
}

|| グラフィッククラスがVLEレイアウト
{define-class public OrderEntryScreen
  {inherits {VScreen-of OrderEntryLayout}}
  ・・・
}

 

コマンドとは(ScreenCommand)

画面上の操作に応じた処理ごと(ボタンを押下したときの処理、イベントハンドラなど)にひとつずつ作成するもので、ロジックを記述します。

コマンドを作成するには、フレームワークのマクロ(define-screen-command)で定義します。

{define-screen-command
    login of screen:LoginScreen
 do
    ・・・|| ここから処理を記述
}

{define-screen-command
    login of screen:LoginScreen
    {enabled? ・・・}
 do
    ・・・|| ここから処理を記述
}