バージョン 5.0 以前の Curl IDE をバージョン 6.0 にアップグレードする場合は、この章にある内容からバージョン 5.0 でアプレットが動作するために必要な項目を特定してください。その上で「
バージョン 6.0 の新機能」のセクションに行き、バージョン 5.0 から 6.0 への変更点のまとめを参照してください。
バージョン 5.0 では、Curl統合開発環境 (IDE) およびビジュアル
レイアウト エディタ (VLE : Visual Layout Editor) の機能が拡張されました。
また、GUI Toolkit の新しいコントロールそして新しいデータアクセス API が追加されました。
Curl RTE は
Mercury 社提供の
QuickTest Professional を使用する自動テストをサポートします。
Curl RTEは重要な更新がないかを定期的にチェックする自動アップデート機能が追加されました。 この機能はオプション機能であり、コントロールパネルにて有効化することができます。
Curl 言語のアプレットでは、Mercury QuickTest Professional バージョン 9 (別個購入)
により
自動テストを実行することができます。
テスト スクリプトを記録し実行することにより、機能テストおよび回帰テストを自動化することができます。
GUI Toolkit の API は、テスト可能なアプレットを簡単に作成するため拡張されました。
GUI Toolkit の標準コントロールは、スクリプトのオブジェクト モデルをサポートするため機能強化されました。
Curl RTE には、重要な更新を定期的に確認してインストールする自動更新機能が追加されました。この機能はオプションで、Curl コントロール パネルから有効にすることができます。
このセクションでは、バージョン 5.0 で変更された API の概要を説明します。
- 新しい IDE の起動ページから、ドキュメント、ツール、および最近開いたプロジェクトやファイルにすばやくアクセスできるようになりました。
- VLE パレットの新しい[メニュー] タブを使用して、メニューやメニューに関連するオブジェクトをレイアウトに追加できます。「レイアウトにおけるメニューの使用」を参照してください。
- VLE パレットの新しい [形状] タブを使用して、レイアウトに形状を追加できます。「レイアウトにおける形状の使用」を参照してください。
- VLE コントロールパレットの新しいボタンを使用して、VLE レイアウトで TreeControl を使用できます。「TreeControl のプロパティの編集」を参照してください。
- VLE では、入力メソッドの動作を制御する次のプロパティが使用できます。これらのオプションは、キーボード入力を通常受け取るコントロールのプロパティ シートと、Dialog、HttpForm などの一般にはコントロール グループを保持するコンテナに含まれています。これらのオプションが含まれたプロパティ シートを持つオブジェクトは、次のとおりです。
- VLE 複合オブジェクト機能を使用すると、VLE でグラフィック階層を構築できます。これらのグラフィック階層は、VLE パレットに追加したり、VLE レイアウトで組み込みの VLE オブジェクトのように使用したりできます。「複合オブジェクトの構築」を参照してください。
ここでは、リリース 4.0 の Curl® 実行環境 (RTE)、Curl言語と API、および Curl 統合開発環境 (IDE) の新しい機能を説明します。
- 4.0 RTE では、グラフィカル オブジェクトをページ境界にまたがって分割するためのアルゴリズムの改善など、ドキュメントの印刷機能が改善されました。
- エンド ユーザーは、Windows® エクスプローラから Curl アプレットへファイルをドラッグ アンド ドロップできるようになりました。「ファイルのドラッグ」を参照してください。
- Web ブラウザ ウィンドウに常駐しない、高度なアプリケーションを構築し起動できる機能が搭載されました。この独立型アプレット ファイルのファイル拡張子は .dcurl で、text/vnd.curl.dcurl MIME 型を使用します。「独立型アプレット」を参照してください。
- 4.0 RTE は、署名付きアプレットをサポートします。「コード署名」を参照してください。
- リリース 4.0 のコンパイラでは、変換リソースを指定せずに lmessage や hlmessage などのローカライゼーション マクロを使用できます。3.0 RTE でアプリケーションを実行する場合は、変換リソースを指定する必要があります。
try および
catch に加えられたコンパイラの変更により、
try でのフロー制御のサポートが向上しました。
try ステートメントは、
finally 本体ではなく、その本体と
catch 句の本体に基づいて値を生成します。
switch と同様、値が生成されるのは、try 本体の最後のステートメントとすべての catch 本体が値を生成する場合、例外をスローする場合、または戻り値を返す場合だけです。
1 つ以上の
next 句は、
continue ステートメントのターゲットとして使用できます。
continue ステートメントは、それ自体がある本体の最後に制御を移します。次の
next ステートメントか、
next ステートメントがそれ以上存在しない場合はループの最後に制御が移ります。
- Curl 4.0 言語コンパイラでは、allow-implicit-downcasts?
= true の場合、スーパークラスから #サブクラスへ暗黙的にダウンキャストできます。「コンパイラ ディレクティブ」を参照してください。
次の機能が、バージョン 4.0 の Curl™ API に追加されました。詳細ドキュメントを参照するには、リンクをクリックしてください。
次に示すパッケージは、全く新しいパッケージです。
次に示す API が RecordGrid と関連クラスに追加され、より柔軟性が高まりました。
RecordGrid の行や列のダブルクリック、または Enter キーの操作に応じて、RecordGrid からアクション イベントを起動できるようになりました。この動作は ListBox や TreeControl の動作に似ています。
次の機能は、独立型アプレットをサポートするために追加されました。これらの機能は、あらゆる種類のアプレットでインポートして使用可能なライブラリを作成する場合にも役立ちます。
新しくパラメータ化された両端キュー クラス Dequeue-of が、CURL.LANGUAGE.CONTAINERS パッケージに追加されました。
HTTP "charset" パラメータにアクセスできるようになりました。
さまざまなスタイルで線を描画するためのサポートが追加されました。
印刷制御を強化する API が追加されました。
ニーモニックを使用したボタン ラベルをサポートする新しいクラスが追加されました。複数の標準ボタンが導入されました。ボタンの外観を制御する新しいオプションが追加されました。
Label
mark-mnemonic
ensure-min-size
ok-button
cancel-button
yes-button
no-button
apply-button
done-button
CommandButton.label-inset
CommandButton.show-focus?
RadioButton.label-inset
RadioButton.show-focus?
CheckButton.label-inset
CheckButton.show-focus?
disabled-text-sunken?
disabled-color
StringDataModelMovableRange.move-point-to-previous-paragraph-start
StringDataModelMovableRange.move-point-to-next-paragraph-start
StringDataModelMovableRange.widen-to-paragraph
StandardRichTextAreaUI.create-main-panel
StandardRichTextAreaUI.create-formatting-panel
StandardRichTextAreaUI.create-formatting-panel-elements
Tooltip API にいくつかの機能が追加されました。
View API に次の機能が追加されました。
次のイベント プロパティがパブリックになりました。
GuiWindowEvent.event-time
CompositionChangeEvent.string
CompositionChangeEvent.reading-string
CompositionChangeEvent.caret-index
CompositionChangeEvent.clauses
PointerEnvelopeEvent.contents
PointerScroll.axis
PointerScroll.amount
- 新しい careful コンパイラ ディレクティブを使用できます。IDE は、作成するすべてのファイルにこのディレクティブを挿入します。
- Curl IDE ドキュメント ビューアに、ドキュメントの全文検索などの新しいナビゲーション機能および検索機能が加わりました。「ナビゲーション ペイン」を参照してください。
- IDE プロファイラを使用して、Curl言語アプリケーションのパフォーマンスを分析できます。「アプレットのプロファイリング」を参照してください。
- IDE の http 監視機能には、Curl言語アプレットが生成する http トラフィックを監視するメカニズムがあります。「Http 監視」を参照してください。
- IDE のソース コード管理には、Windows プラットフォームで広く使用されているソース コード管理システムへのインターフェイスがあります。「ソース コード管理」を参照してください。
- IDE エディタで複数のプロジェクトを開くことができるようになりました。
- ビジュアル レイアウト エディタ (VLE) で複数のファイルを開くことができるようになりました。
- ビジュアル レイアウト エディタ (VLE) のパレット拡張機能を作成できるエディタが Curl IDE に搭載されました。このエディタには、IDE の [ツール] メニューの [VLE 機能拡張エディタ] を選択してアクセスできます。
新機能はすべて追加機能であり、既存のクラスはほとんど変更されていないため、4.0 アプレットを 5.0 にアップグレードするのは簡単です。ただし、次に説明する 2 つの例外があります。
RecordGrid および関連クラスの実装が大幅に変更されました。IDE で提供される「
オープン ソース コード」の
RecordGrid または関連クラスの変更バージョンを作成した場合は、まず新しいソース コードから、変更を再実装しなければならない場合があります。
バージョン 3.0 のアプレットを バージョン 4.0 にアップグレードする場合は、次のセクションをよく読み、必要な変更内容について確認してください。
プロジェクトを新しい API バージョンに簡単にアップグレードできるように、IDE の [プロジェクト] メニューに [API バージョンの変更...]コマンドが追加されました。このコマンドを使用すると、検索と置換がグローバルに実行されるため、現在のプロジェクトを構成するソース ファイル内の API バージョンの文字列を簡単に更新できます。プロジェクト ファイル自体も更新されます。
Exception 階層が変更されました。
Throwable は
Exception の異名になり、
Exception.message が
Exception.value に置き換わります。マクロ
api-version-switch を使用し、3.0 と 4.0 の両バージョンの API についてコードが例外を適切に処理できます。次のコード例を参照してください。
catch e:IOException do
{api-version-switch
case "4+" do
{popup-message e.message}
else
{popup-message e.value}
}
ファイルの読み書き用、および Curl IDE で編集されたファイル用の既定の文字エンコードが
utf8 になりました。以前の既定の文字エンコーディング (windows-latin-1) を使用したバージョン 3.0 のソース コード ファイルには、新しい既定の文字エンコーディング (utf8) では無効な文字が含まれている可能性があるため、実行時にトランスコーディング エラーが発生します。改行しない空白文字が含まれている API ドキュメントから署名を貼り付けると、このような状況が発生します。アプリケーション コードで
read-open や
write-open などの API 呼び出しを使用してテキスト ファイルの読み取りや書き込みを行う場合で、バージョン 3.0 の既定の文字エンコーディングに従う場合は、バージョン 4.0 では文字エンコーディングを明示的に指定する必要があります。
IDE を使用してバージョン 3.0 のソース コード ファイルを編集する場合は、ファイルに含まれている文字が ASCII 文字だけの場合を除き、
curl-file-attributes を使用して文字エンコーディングを指定する必要があります。
バージョン 4.0 のコンパイラは、問題を引き起こす可能性のある型変換の報告について、より厳密になりました。また、バージョン 3.0 のコンパイラで使用できた一部のコンストラクションが拒否されます。バージョン 3.0 では
asa が不要であった場合でも、バージョン 4.0 では必要となる場合があります。
バージョン 4.0 のコンパイラは、文字列から列挙体への暗黙的な変換をレポートします。
次のコードはバージョン 3.0 では使用できましたが、バージョン 4.0 では拒否されます。定義されている
FontWeight に対応しない値がプロシージャに渡される可能性があるため、型エラーが発生します。値が正しいことがわかっている場合は、
asa FontWeight を追加してコンパイラに通知します。
{define-proc {test x:String}:FontWeight
{return x}
}
{test "bold"}
次の場合は、どちらのバージョンでも許可されます。コンパイラは、文字列が使用可能な値を持つことを識別できます。これは、文字列形式は短く、より簡単に読み取り/書き込みを行えるためです。
{define-proc {test2}:FontWeight
let x:String = "bold"
{return x}
}
{test2}
たとえば、次のコード
{let mistake:bool =
{if-non-null {String "oops"} then true else false}
}
では、
SyntaxError: null を String と比較できません。 null と String 値の両方を受け入れる場合は #String を使用します。 が発生します。
Curl 4.0 言語コンパイラは、Null になる可能性のあるプロシージャ型が Null にはならないプロシージャ型と比較される場合にも、
SyntaxError を生成します。
バージョン 3.0 以前の API で使用できた一部の GUI Toolkit クラスが改善され、バージョンが変わりました。古いバージョンは、
CURL.GUI.OLD というパッケージを使用して、バージョン 4.0 API でも使用できます。古いバージョンの使用は推奨されておらず、将来のバージョンで削除される予定です。古いクラスのドキュメントは、バージョン 4.0 の IDE には含まれていません。ただし、バージョン 3.0 と 4.0 の両方の IDE がインストールされている場合は、「
[ファイル] メニュー」の [新規ドキュメント ビューア] から 3.0 ドキュメント ビューアを開いて、3.0 API リファレンスを表示できます。
次のクラスが含まれます。
3.0 TabContainer と関連クラス
- TabContainer
- TabPane
- TabContainerUI
- StandardTabContainerUI
- TabPackingPolicy
- TabPlacement
3.0 TreeControl と関連クラス
- TreeControl
- BaseTreeNode
- TreeNode
- TreeNodeState
既存のバージョン 3.0 のアプレットがあり、それをバージョン 3.0 と 4.0 の両方の API で実行できるようにするには、次の形式のインポートをアプレットに追加します。
{api-version-switch
case "4.0" do
{import TreeControl, TreeNode from CURL.GUI.OLD, override? = true}
}
古いクラスをすべてインポートすることも、必要なクラスだけをインポートすることもできます。詳細については、
import を参照してください。
次のセッターは 4.0 API から削除されました。これらのセッターは重複しています。これらのプロパティは、UI やヘルパー オブジェクトではなくコントロールに対して設定できます。
setter public StandardComboBoxUI.dropdown-height
setter public StandardDropdownListUI.dropdown-height
setter public abstract ComboBoxUI.dropdown-height
setter public abstract DropdownListUI.dropdown-height
setter public StandardDropdownHelper.dropdown-height
setter public StandardDropdownHelper.dropdown-width
4.0 API では、メニュー項目およびボタンにラベルを表示するための
Label クラスが新しく導入されました。ラベルとして指定された
String は、
Label に自動変換されます。ラベル文字列のアンパサンド (&) 文字は、その次の文字をラベルのニーモニックとしてマークします。ニーモニック文字は、ボタンまたはメニューで下線付きで表示されます。
メニュー項目およびコントロールの text-breakable? の既定値は、3.0 では true でしたが、リリース 4.0 では false になりました。ラベルを複数行に折り返す場合は、コントロールで text-breakable? = true を指定する必要があります。
Copyright © 1998-2008 Sumisho Computer Systems Corp.
All rights reserved.
Curl, the Curl logo, Surge, and the Surge logo are trademarks of Sumisho
Computer Systems Corp. that are registered in the United States. Surge
Lab, the Surge Lab logo, and the Surge Lab Visual Layout Editor (VLE)
logo are trademarks of Sumisho Computer Systems Corp.