UIのフォーマッタおよび書式マスクの定義

ビジネス・コンポーネントのエンティティ・オブジェクトおよびビュー・オブジェクトの属性に設定する書式マスクを作成し、UIでの値の表示方法をカスタマイズできます。

コントロール・ヒントで使用するためフォーマッタをドメインにマップするには、次のようにします。

  1. oracle.jbo.format.Formatterクラスの拡張により、新規のフォーマッタを作成します。

    または、oracle.jbo.formatパッケージで提供されているデフォルトのフォーマッタの1つをカスタマイズすることもできます。JDeveloperに用意されているデフォルトのフォーマッタは、java.textパッケージで提供されているフォーマッタを集めたものです。

  2. オプションで、ドメイン・ウィザードを使用して、フォーマッタをマップする新しいドメイン・クラスを作成します。

    書式をマップするために、新しいドメインを作成する必要はありません。ビジネス・コンポーネント・プロジェクトにフォーマッタと同じデータ型のドメインが含まれている場合は、既存のドメインを使用できます。使用可能なデフォルトのドメイン・クラスのリストは、<jdev_home>/system/formatinfo.xmlファイルを参照してください。

  3. <jdev_home>/system/フォルダ内のformatinfo.xmlファイルを編集し、フォーマッタ・クラスをドメイン・クラスにマップします。フォーマッタのXML定義には、DOMAIN CLASS(新規または既存のもの)、名前およびクラスを含むFORMATTER、フォーマッタ・クラスが指定するFORMAT定義のリストが含まれている必要があります。

コントロール・ヒントでの使用のために書式マスクをフォーマッタに追加するには、次のようにします。

  1. <jdev_home>/system/フォルダ内のformatinfo.xmlファイルを編集し、書式マスクをフォーマッタに追加します。書式マスクのXML定義はFORMATTERおよびDOMAIN CLASSに属し、マスクのテキスト指定が含まれています。このテキスト指定は、フォーマッタにより実装されている同じタイプの属性に対して表示する、属性エディタの「コントロール・ヒント」パネルの「書式」ドロップダウン・メニューに表示されます。

コントロール・ヒントとして新しいフォーマッタまたは書式マスクを使用するには、次のようにします。

  1. ビジネス・コンポーネント・プロジェクトを作成します。

    ビジネス・コンポーネント・クライアント・アプリケーションのコントロール・ヒントを定義するには、ビジネス・コンポーネントのエンティティ・オブジェクトおよびビュー・オブジェクトを持つプロジェクトが必要です。

  2. エンティティ属性またはビュー属性エディタで、書式を設定する属性を編集します。

    編集する属性は、フォーマッタによって実装されるクラスと同じタイプである必要があります。タイプが異なると、新しいフォーマッタは「書式の種類」ドロップダウン・リストに表示されません。

  3. ビジネス・コンポーネント・プロジェクトをコンパイルします。

APIを使用して、クライアント・アプリケーション内で属性を書式設定するには、次のようにします。

コントロール・ヒントAPIを使用することで、ビジネス・コンポーネント・クライアントで自動的にFormat Typeコントロール・ヒントを使用しない場合、属性値を書式設定できます。通常、これにはJava UIクライアントが含まれます。この場合、次の作業が必要です。

  1. 属性エディタで属性のコントロール・ヒントを定義します。
  2. 属性オブジェクトのgetFormattedAttribute()メソッドを使用して、書式設定された属性を取得します。
    
    
    import oracle.jbo.*;
    import java.util.Locale;
    
    
    AttributeDef aDef = rs.getViewObject().findAttributeDef(sName);
    Row          row = rs.getCurrentRow();
    Locale       locale = rs.getApplicationModule().getSession().getLocale();
    
    
    if(aDef.getUIHelper().hasFormatInformation(locale))
       obj = aDef.getUIHelper().getFormattedAttribute(row, locale);
    
  3. parseFormattedAttribute()メソッドを使用して、属性から書式設定を取り除きます。
  4. 属性値を表示します。
    
    
    if(aDef.getUIHelper().hasFormatInformation(locale))
       Object value = aDef.getUIHelper().parseFormattedAttribute(sValue, locale);
    

BC4Jクライアントのコントロール・ヒントについて