TOPシステム開発> フィールドアシスト
Eclipse 3.2とCallisto
Eclipse 3.2とCallisto

第5回:リッチなシステムを作りこみやすいように進化
著者:ビーブレイクシステムズ  川崎 博之   2006/10/20
前のページ  1  2  3
フィールドアシスト

   JFaceで新たにorg.eclipse.jface.fieldassistパッケージが追加されました。このパッケージは、フィールドに対しての入力補助機能、装飾表示機能を新たに提供します。

   次にこのパッケージに含まれる主なクラスのリストを示します。
ContentProposalAdapter
入力補助アダプタをコントロールに対して提供します。入力候補はポップアップ表示から選択します。
DecoratedField
装飾表示可能なテキストフィールドを提供します。
FieldDecoration
装飾表示の具体的な情報を持つ構造体クラスです。
FieldDecorationRegistry
一般的な装飾表示のテンプレートを保持するクラスです。
SimpleContentProposalProvider
シンプルな入力補助機能を提供するクラスです。
TextContentAdapter
Textクラスで入力補助機能を使いやすくするためのクラスです。

表1:フィールドアシストに含まれるパッケージ

   それでは、実際にフィールドアシストパッケージにあるクラスを使ってどのようなことが実現できるのか、1つずつ紹介していきます。


入力補助

   フィールドに入力する値の候補をポップアップで表示します。ユーザはその候補の中から選択するだけでよく、入力作業が大幅に軽減されます。また、入力値の具体例を表示することによりユーザのスムーズな入力を促す効果も期待できます。

テキスト・フィールドで入力候補を表示
図6:テキスト・フィールドで入力候補を表示

   次に、フィールド内で「Ctrl+Space」で入力候補を表示させるためのサンプルコードを示します。

// 入力候補アダプタ生成
String[] sample = new String[]{"白岩 次郎", "上川
伸彦", "高橋 明", "鹿取 裕樹", "横井 朗", "川﨑 博之"};
SimpleContentProposalProvider proposal = new SimpleContentProposalProvider(sample);
// 入力候補を表示するキー
KeyStroke keyStroke = null;
try {
   keyStroke = KeyStroke.getInstance("Ctrl+Space");
} catch (ParseException e) {
   e.printStackTrace();
}
// 入力候補アダプタをセット
final Text text = (Text) nameDecoratedText.getControl();
new ContentProposalAdapter(text, new TextContentAdapter(), proposal,
keyStroke, null);


テキストフィールドの装飾

   テキストフィールドに様々な装飾を施すことができます。具体的には、フィールド周辺に小さなアイコンを表示させ、ポップアップでメッセージを表示することが可能です。

   次にFieldDecorationRegistryに登録されている標準的な装飾のサンプルコードを4パターン紹介します。

入力補助・デコレーション
電球アイコンで入力補助機能が使用可能であることを表示します。

// 入力補助・デコレーション
final FieldDecoration proposalDecoration =
   FieldDecorationRegistry.getDefault().getFieldDecoration
(FieldDecorationRegistry.DEC_CONTENT_PROPOSAL);
// ポップアップで表示されるメッセージを指定
proposalDecoration.setDescription("入力アシスト機能が使用可能で
す");
// デコレーションを右下に表示するよう設定
decoratedText.addFieldDecoration(proposalDecoration, SWT.RIGHT |
SWT.BOTTOM, false);
// デコレーションを表示
nameDecoratedText.showDecoration(proposalDecoration);



エラー・デコレーション
エラーアイコンでフィールドに入力するべき内容を表示します。

// エラー・デコレーション生成
final FieldDecoration errorDecoration =
   FieldDecorationRegistry.getDefault().getFieldDecoration
(FieldDecorationRegistry.DEC_ERROR);
// エラーの説明文をセット
errorDecoration.setDescription("名前を入力して下さい");
// エラー・デコレーションをセット
decoratedText.addFieldDecoration(errorDecoration, SWT.LEFT |
SWT.TOP, false);
// エラー・デコレーションの動作を定義
text.addModifyListener(new ModifyListener() {

   public void modifyText(ModifyEvent e) {
      Text text = (Text) e.widget;
      // フィールドに入力が無い場合はエラー・デコレーション表示
      if (text.getText().equals("")) {
         decoratedText.showDecoration(errorDecoration);
      } else {
         decoratedText.hideDecoration(errorDecoration);
      }
   }
});



必須・デコレーション
アスタリスクで必須入力であることを表示します。

// 必須・デコレーション
final FieldDecoration requiredDecoration =
FieldDecorationRegistry
   .getDefault().getFieldDecoration
(FieldDecorationRegistry.DEC_REQUIRED);
requiredDecoration.setDescription("必須入力です");
decoratedText.addFieldDecoration(requiredDecoration, SWT.RIGHT |
SWT.TOP, false);



警告・デコレーション
警告アイコンでフィールドに入力制限があることを表示します。

// 警告・デコレーション
final FieldDecoration warningDecoration =
FieldDecorationRegistry.getDefault().getFieldDecoration
(FieldDecorationRegistry.DEC_WARNING);
warningDecoration.setDescription("名前は8文字以内にして下さい");
decoratedText.addFieldDecoration(warningDecoration, SWT.LEFT |
SWT.BOTTOM, false);
decoratedText.hideDecoration(warningDecoration);
// 警告・デコレーションの動作を定義
text.addModifyListener(new ModifyListener() {

   public void modifyText(ModifyEvent e) {
      Text text = (Text) e.widget;
      // 8文字以上の場合は警告・デコレーション表示
      if (text.getText().length() > 8) {
         decoratedText.showDecoration(warningDecoration);
      } else {
         decoratedText.hideDecoration(warningDecoration);
      }
   }
});




まとめ

   今回は、ボタン/テーブル/ツリーでのイメージ表示、展開バー、Text/StyledTextでのテキストのドラッグ&ドロップ、JFaceではテキストフィールドの入力補助、装飾について解説しました。前回と今回で解説した新機能を利用することでより使いやすく、訴求力のあるアプリケーションが作成できると思います。

   次回は最終回ということで、プラグイン開発環境についての新機能を紹介します。

前のページ  1  2  3


ビーブレイクシステムズ  川崎 博之
著者プロフィール
ビーブレイクシステムズ   川崎 博之
芝浦工業大学 工学部卒業。学生時代よりJavaに興味を持ち、Java専業ソフトハウスである黎明期のビーブレイクシステムズに入社し、現在に至る。入社当時はPMから直接厳しい指導を受け、机上の勉強とは違う実際の業務システム開発の難しさに戸惑いを覚えたが現在は主任Java開発者として活躍し、Javaアーキテクトを目指し、日々修行中。

INDEX
第5回:リッチなシステムを作りこみやすいように進化
  はじめに
  展開バー
フィールドアシスト