Sun WorkShop Visual の新機能 ホーム目次前ページへ次ページへ索引


Sun WorkShop Visual 6 の新機能

はじめに

本書では、Sun WorkShop Visual 6 の新機能および主要な変更点について説明します。Sun WorkShop Visual 5 のユーザーズガイドとあわせてご覧ください。参照先として記述されているページ、節、章は、すべて Sun WorkShop Visual 5 のユーザーズガイドのものです。

Sun WorkShop Visual 6 での主な変更個所は以下のとおりです。

  1. Java Swing コードの生成

  2. MFC コード生成の機能改善

  3. ユーザー定義ウィジェット用の Java コード

  4. その他の機能改善

Java Swing コードの生成

Sun WorkShop Visual は Swing コンポーネントセットを使用するためのコードも生成できるようになりました。Swing コンポーネントは JFC (Java Foundation Classes) を使用しているため、ウィンドウシステムに依存しないコンポーネントを作ることができます。また、JFC の機能である「プラグイン可能な Look & Feel」も実現できるため、主要な Java プラットフォーム (Microsoft Windows、Solaris、Macintosh) のいずれの Look & Feel にも対応可能な、単一のユーザーインタフェースを作ることができます。この Look & Feel は、実行時にアプリケーションを再起動しなくても切り替えることができます。Swing によって、一貫性のあるインタフェースを持つ、プラットフォームに依存しないアプリケーションを開発できます。

自分のデザインから Swing コードを生成した場合、CLASSPATH に Swing の jar ファイルのパスも含める必要があります。ただし Java 2 を使用している場合は、その中に Swing コンポーネントが含まれているため、この設定は必要ありません。

自分のデザインから Swing コードを生成するには、図 1 に示すように「Java オプション」ダイアログで Java バージョンとして「Swing」を選択します。このダイアログは、生成する言語として Java を選択して「コード生成」ダイアログを起動し、そこで「Java オプション」ボタンを押すと表示されます。Java のバージョンに「Swing」を選択すると、生成されたアプリケーションは Java 1.0、1.2、および Java 2 と互換性のあるすべてのバージョンで実行できます。

図 1   Swing 生成オプション

リソースパネルには新しい Java アイコンが表示されます。 という、コーヒーカップに「S」という文字が付いたアイコンは、そのリソースが Swing でサポートされていることを示しています。図 2 に、この Swing のアイコンを含むリソースパネルを示します。

図 2   Swing 用のアイコンが表示されたリソースパネル

Motif ウィジェットから Swing コンポーネントへのマッピング

Motif ベースのデザインを Swing コンポーネントを使って Java コードとして生成する場合、Sun WorkShop Visual はデザイン中の各 Motif ウィジェットを Swing コンポーネントにマップしようとします。完全に一致するマップ先がない場合は、Sun WorkShop Visual は自分自身の MWT ライブラリを使用して Swing コンポーネントを「模倣」し、そのウィジェットに対するコードを生成します。次の表に各 Motif ウィジェットのマッピングを示します。

表 1   Swing コード生成のための各 Motif ウィジェットのマッピング
Motif ウィジェット Swing へのマッピング
シェル シェルがアプリケーションシェルか最上位シェルに設定されている場合は、JFrame コンポーネントにマップされる。ダイアログシェルに設定されている場合は、JDialog コンポーネントにマップされる。
メッセージボックス XmNdialogType リソースの値に応じて、2 種類の Java クラスのどちらかにマップできる。XmNdialogType リソースは、メッセージボックスのリソースパネルの「設定」ページで設定可能。
ダイアログの種類が「エラー」、「情報」、「質問」、「警告」、「作業中」のいずれかに設定されている場合は、MWT ライブラリの一部である IconMessagePanel クラスにマップされる。
ダイアログの種類が「メッセージ」に設定されている場合は、MWT ライブラリの一部である MessagePanel クラスにマップされる。
メインウィンドウ JPanel コンポーネントにマップされる。
描画領域 JPanel コンポーネントにマップされる。
ダイアログテンプレート JPanel コンポーネントにマップされる。
メニューバー JMenuBar コンポーネントにマップされる。
ブリテンボード JPanel コンポーネントにマップされる。
コマンド MWT ライブラリの CommandPanel クラスにマップされる。
メニュー JMenu コンポーネントにマップされる。ポップアップメニューは JPopupMenu コンポーネントにマップされる。
フォーム JPanel コンポーネントにマップされる。
選択プロンプト MWT ライブラリの SelectionPanel クラスにマップされる。
ラジオボックス JPanel コンポーネントにマップされる。
区画ウィンドウ 子が 2 つだけの場合は JSplitPane コンポーネントにマップされる。子が 2 つを超える場合は単に Panel コンポーネントにマップされる。
選択ボックス XmNdialogType リソースが「コマンド」に設定されている場合は MWT ライブラリの CommandPanel クラスに、そうでない場合は MWT ライブラリの SelectionPanel クラスにマップされる。
ローカラム XmNrowColumnType リソース設定に応じて、次のようにマップされる。
  1. 「メニューバー」の場合は JMenuBar コンポーネント
  2. 「プルダウンメニュー」の場合は JMenu コンポーネント
  3. 「ポップアップメニュー」の場合は JPopupMenu コンポーネント
  4. 「オプションメニュー」の場合は JComboBox コンポーネント
  5. 上記以外の場合は JPanel コンポーネント
スクロールウィンドウ 「スクロール方針」リソースが「自動」に設定されている場合は、JScrollPane コンポーネントにマップされる。そうでない場合は MWT ライブラリの ScrollablePanel クラスにマップされる。
ファイル選択 JFileChooser コンポーネントにマップされる。
ラベル JLabel コンポーネントにマップされる。
カスケードボタン 親ウィジェットがメニューバーかプルダウンメニューの場合は、親が適切なコンポーネントにマップされるためカスケードボタン自身はマップされない。そうでない場合は、JLabel コンポーネントにマップされる。
テキストフィールド JTextField コンポーネントにマップされる。
プッシュボタン 親ウィジェットがプルダウンメニューの場合は、JMenuItem コンポーネントにマップされる。そうでない場合は、JButton コンポーネントにマップされる。
オプションメニュー オプションメニューの子であるラベルウィジェットにラベル文字列が設定されている場合、JPanel コンポーネントにマップされる。ラベルウィジェットにラベル文字が設定されていない場合は、JComboBox コンポーネントにマップされる。
テキスト JTextArea コンポーネントにマップされる。
トグルボタン プルダウンメニューの子である場合、JCheckBoxMenuItem コンポーネントにマップされる。ラジオボックスウィジェット、またはラジオボタンが有効に設定されているリソースを持つローカラムウィジェットの子である場合、JRadioButton コンポーネントにマップされる。上記のすべてに当てはまらない場合は JCheckBox コンポーネントにマップされる。
セパレータ メニューウィジェットの内部で使用されている場合は、JMenuItem コンポーネントにマップされる。そうでない場合は、JSeparator コンポーネントにマップされる。
スクロールテキスト JTextArea コンポーネントを持つ JScrollPane コンポーネントにマップされる。
描画ボタン JButton コンポーネントにマップされる。
スケール JSlider コンポーネントにマップされる。
リスト JList コンポーネントにマップされる。
矢印ボタン MWT ライブラリの ArrowButton クラスにマップされる。
スクロールバー JScrollBar コンポーネントにマップされる。
スクロールリスト JList コンポーネントを持つ JScrollPane コンポーネントにマップされる。


MFC コード生成の機能改善

Sun WorkShop Visual で作成したデザインから生成される MFC コードの機能は、大幅に改善されました。この内容は、ユーザーインタフェースには影響がありません。以降では、実際の改善内容について詳しく説明します。

イベントハンドラ

ユーザーズガイドの 237 ページの「イベントハンドラ」では、Sun WorkShop Visual でデザイン中のウィジェットにイベントハンドラを追加する方法について説明しています。Motif ウィジェットに使用できる大部分のイベントマスクは、Microsoft Windows コードにマップできます。マッピング内容は次の表のとおりです。

表 2   イベントマスクと、生成される Microsoft Windows コード
Motif イベントマスク Microsoft Windows コード
MouseMotion ボタン押下の有無を問わず、すべてのマウス動作に対応可能な汎用ハンドラを生成
ButtonPress 左ボタン押下、中ボタン押下、右ボタン押下の 3 種類のハンドラをすべて生成
ButtonRelease 左ボタン解放、中ボタン解放、右ボタン解放の 3 種類のハンドラをすべて生成
EnterWindow OnMouseActivate
ExposureMask OnEraseBkgnd
KeyPressMask WM_KEYDOWN
KeyRelease WM_KEYUP
KeymapstateMask WM_SYSKEYUP または WM_SYSKEYDOWN
LeaveWindowMask WM_KILL_FOCUS
ResizeRedirect WM_SIZE
PropertyChangeMask ON_WM_PAINT
VisibilityChangeMask WM_SHOWWINDOW


プロジェクトファイル

図 3 に示すように、「コードオプション」ダイアログにトグルが追加されました。このトグルをオンにすると、Microsoft Visual C++ で使用できるプロジェクトファイルが生成されます。これによって、デザイン用に Microsfot Windows コードを生成するたびにプロジェクトファイルを個別に生成する必要がなくなります。このトグルはデフォルトでオンに設定されています。

生成されるファイルは、これまでどおり以下の 2 種類です。

上記のファイルを使用するには、Microsoft Visual C++ で主要なプロジェクトファイル (接尾辞 .dsw のファイル) を開きます。生成されたプロジェクトファイルは Visual C++ のバージョン 5 および 6 で使用できます。

図 3   「コードオプション」ダイアログ

MFC バージョン 4 用の機能改善

以前のバージョンの Sun WorkShop Visual では MFC 4 機能拡張を利用するには、「コード生成」ダイアログから表示される「コードオプション」ダイアログでトグルをオンに設定しなければなりませんでした。Sun WorkShop Visual 6 では、この機能はリソース mfcFourEnhancements として組み込まれました。このリソースを true に設定すると、MFC バージョン 4 の拡張された作成関数を使用したコードを生成でき、アプリケーションに立体的な Look & Feel を持たせることができます。また、このリソースを true にすることで、ラベルおよびアイコンにビットマップがマップされるため、選択不可にする必要のない 3D ボタンおよびイメージをデザイン中で使用できます。この方法で追加されたイメージは、自分自身の自然なサイズを検知できるため、意図したとおりに Motif デザインを表現することができます。このリソースはデフォルトで true に設定されています。「コードオプション」ダイアログにあった MFC 4 機能拡張のトグルは、このバージョンから削除されました。

アプリケーションシェル

生成された MFC コードで、アプリケーションシェルは CDialog を継承するようになりました。つまり、ダイアログ自体を選択した状態で Enter キーを押すとアプリケーションが閉じます。この動作を使用したくない場合は、OnOK と OnCancel の 2 つのメソッドをそのダイアログのスタブファイルに生成します。これらのメソッドは、スタブファイルに追加したその他のメソッドと同様に、コードを再生成した場合にも保持されます。

Microsoft Windows でのヘルプ

Microsoft Windows コードにマップされる「Activate Help」コールバックを指定できるようになりました。

生成されたアプリケーションを Microsoft Windows 上で実行すると、「Activate Help」コールバックが、指定された URL と事前に定義されたヘルプのパスを使用して、システムのデフォルトの Web ブラウザを起動します。ヘルプのパスは「モジュール」メニューの「ヘルプのデフォルト」で表示される「ヘルプのデフォルト」ダイアログで指定します。デフォルトのパスはアプリケーションに含まれる HTML のルートになります。

HTML ファイルを複数のプラットフォームで開けるようにするには、プラットフォームに応じて HTML のルートへのパスを変更可能にする必要があります。たとえば、c: \program files\myapp\myhtml というパス名は Motif 版ヘルプシステムでは使用できません。このような設定がより簡単にできるように、Sun WorkShop Visual は次の構造をスタブファイルおよび main コードファイルに生成します。

main コードファイルには次のコードが生成されます。

 #ifndef DUAL_PLATFORM

 char * _xd_help_path = "c:\\program files\\myapp\\myhtml\\"

 #else

 extern char * _xd_help_path;

 #endif

スタブファイルには、次のコードが生成されます。

 #ifndef DUAL_PLATFORM

 extern char * _xd_help_path;

 #else

 char * _xd_help_path = "c:\\program files\\myapp\\myhtml\\"

 #endif

この構造は変更および拡張できます。変更した内容はコードを再生成した場合にも保持されます。この構造を利用すると、次の例のようにプラットフォームごとにヘルプのパスを指定することができます。

 #ifndef DUAL_PLATFORM 

 extern char * _xd_help_path; 

 #else 

 #ifdef WIN32

 char * _xd_help_path = "c:\\program files\\myapp\\myhtml\\"

 #else

 char * _xd_help_path = "/opt/myapp/HTML" 

 #endif 

このコードを追加して、アプリケーション用のプロジェクト設定に上記の DUAL_PLATFORM を指定します。絶対パス名を指定したくない場合はこの仕組みを利用して、環境変数や登録されている設定を取り出すこともできます。

スクロールウィンドウのマッピング

「スクロールウィンドウ」ウィジェットの「スクロール方針」リソースが「自動」に設定されている場合は、スクロールウィンドウは生成された MFC コードでは CScrollView にマップされるようになりました。

ユーザー定義ウィジェット用の Java コード

Sun WorkShop Visual は、デザイン中のユーザー定義ウィジェットに対して Java コードを生成します。これには、ユーザー定義ウィジェットから Java コンポーネントへのマッピングを実現するための、特別に構成されたリソースファイルが使用されます。Sun WorkShop Visual に付属しているすべての統合キット (ユーザーズガイドの 720 ページの「事前構成済み統合キットの使用」を参照) には、このリソースファイルが含まれています。

$VISUROOT/user_widgets/<USER_WIDGET_SET>/app-defaults/visu

上記の VISUROOT は Sun WorkShop Visual のインストールディレクトリ、<USER_WIDGET_SET> は使用するウィジェットセットの名前です (XRT や Athena など)。

独自の統合キットを作成した (または今後作成する) 場合、独自のリソースファイルを作成してもかまいません。Java コード生成に関連するリソースは、次の 4 つです。

 visu*xw_<WidgetClassName>.javaClassName

 visu*xw_<WidgetClassName>.java10ClassName

 visu*xw_<WidgetClassName>.java11ClassName

 visu*xw_<WidgetClassName>.javaSwingClassName

生成されたバージョンの Java に特定の Java リソースが見つからない場合は、Sun WorkShop Visual は「javaClassName」を使用します。上の例にある「java10ClassName」や「java11ClassName」に対する値は、デフォルトと同じなので指定する必要はありません。

ウィジェットがリソースファイル中にない場合は、Sun WorkShop Visual は Java のパネルクラス用のコンテナウィジェットの代わりに、そのほかのすべての種類のウィジェットに使用できる Java キャンバスクラスを使用します。Java コード生成に関する詳細については、ユーザーズガイドの第 10 章「Java 用のデザイン」を参照してください。

ユーザー定義ウィジェット用の MFC コード

ユーザー定義ウィジェットに対する MFC コードは、前述の Java コード生成とまったく同じ仕組みで生成されます。Sun WorkShop Visual 6 は、他社製のコンポーネントを C++ クラスにするために以下のリソースを使用します。

 visu*xw_<WidgetClass>.cppClassName

 visu*xw_<WidgetClass>.motifClassName

 visu*xw_<WidgetClass>.motifMfcClassName

 visu*xw_<WidgetClass>.mfcClassName

たとえば、次のように設定します。

 visu*xw_XtXrtLabel.mfcClassName: CStatic

ファイル中に特定の様式が見つからない場合は、デフォルトで「cppClassName」が使用されます。

次の設定では、MFC、MotifXP、Motif の情報がない場合に、すべての様式の C++ に対して MyClass というクラスが生成されます。

 visu*xw_SomeWidgetClass.cppClassName: MyClass

次の設定では、純粋な MFC 以外のすべての様式の C++ に対して AnotherClass というクラスが生成されます。

 visu*xw_SomeWidgetClass.cppClassName: AnotherClass

 visu*xw_SomeWidgetClass.mfcClassName: AnotherMfcClass

その他の機能改善

ここでは、Sun WorkShop Visual バージョン 6 で改善されたその他の機能について説明します。

コード生成ダイアログ

コード生成ダイアログには、次の 2 点の変更があります。

「コード生成」ダイアログには「リセット」ボタンが追加されました。このボタンを押すと、選択された言語のページにあるファイル名がすべて元に戻ります。デフォルトのファイル名であることを示す括弧 < > も表示されます。

「メークファイル・オプション」ダイアログには、図 4 のように「現在の言語のみ」というラベルの付いたトグルボタンが追加されました。ある言語でコードを生成し、続けて別の言語で別のコードを生成すると、生成されたすべてのメークファイルには各言語用に生成されたファイルに対する規則がすべて盛り込まれます。しかし「現在の言語のみ」トグルをオンにすると、現在の言語専用のメークファイルが生成されます。

図 4   「メークファイル・オプション」ダイアログ

デフォルトのヘルプブラウザ

デフォルトのヘルプブラウザは Netscape になりました。以前のデフォルトは Sun WorkShop Visual ヘルプでした。Sun WorkShop Visual ヘルプを使用するには、Sun WorkShop Visual の「ヘルプ」メニューの「ビューア」項目のプルライトメニューから「Sun WorkShop Visual ヘルプを使用」を選択してください。


サン・マイクロシステムズ株式会社
Copyright information. All rights reserved.
目次   |   前ページへ   |   次ページへ   |   索引