ホスト色マッピングのカスタマイズ

ビューの色へのホストの色のマッピングは、テンプレート・クラスの getColorMapper() メソッドによって戻される IColorMapper オブジェクトによって制御されます。このメソッドのデフォルト・インプリメンテーションでは、DefaultColorMapper タイプのオブジェクトを戻します。以下の色マッパー・クラスが、ZIETrans によって提供されています。
  • com.ibm.hats.rcp.ui.templates.DefaultColorMapper
  • com.ibm.hats.rcp.ui.templates.WhiteBackgroundColorMapper

DefaultColorMapper は、非ホワイト背景色を持つテンプレートで使用する必要があります。これは、ホワイト・ホスト・フィールドの色をホワイトにマッピングしているためです。WhiteBackgroundColorMapper は、ホワイトまたは明るい背景色を持つテンプレートで使用する必要があります。これは、このマッパーが、ホワイト・ホスト・フィールドの色を黒にマッピングし、より暗い色 (デフォルト色マッパーと比較して) を使用しているためです。

IColorMapper オブジェクトの mapColor() メソッドは、ホスト色を SWT RGB 値にマッピングします。このメソッドは、「前景色を有効にする」設定が有効になっている場合に、ZIETrans フィールド・ウィジェットから通常は呼び出されます。表 1 は、このメソッドに提供可能なホスト色値をリストします。
表 1. mapColor メソッドに提供される色
ホストの色 説明
0 空白
1
2
3 シアン
4
5 マジェンタ
6 茶 (3270)、黄色 (5250)
7 白 (通常の輝度)
8 グレー
9 明るい青
10 明るい緑
11 明るいシアン
12 明るい赤
13 明るいマジェンタ
14
15 ホワイト (高輝度)
色がテンプレートによってマッピングされる方法を変更するには、2 つの方法があります。
  1. IColorMapper インターフェースを実装するクラスを作成し、mapColor() メソッドを実装し、このクラスの新規インスタンスを戻すようにテンプレートを更新します。
  2. 提供されている色マッパー・クラスのいずれかを拡張してクラスを作成し、mapColor() メソッドをオーバーライドし、このクラスの新規インスタンスを戻すようにテンプレートを更新します。
ZIETrans が提供するクラスのいずれかを拡張する場合は、mapColor() メソッドをオーバーライドする必要があります。以下のコード・サンプルでは、青 (ホスト色 1) およびマジェンタ (ホスト色 5) ホスト・フィールドの色を変更する方法を示しています。
public class MyCustomColorMapper extends DefaultColorMapper {

	public RGB mapColor(int hostColor) {
		RGB rgb = null;
		
		if (hostColor == 1) {
			rgb = new RGB(100, 100, 100);
		} else if (hostColor == 5) { 
			rgb = new RGB(255, 0, 0); 	
		} else {
			rgb = super.mapColor(hostColor);
		}
		
		return rgb;
	}

}
以下のコード・サンプルは、カスタム色マッパーを戻すように、テンプレート・クラスの getColorMapper() メソッドを実装する方法を示しています。
注:
  1. このメソッドは、既にテンプレートに存在している場合があります。存在している場合には、現在のメソッドを以下のコードに置き換えます。
    public IColorMapper getColorMapper() {
            return new MyCustomColorMapper();
        }
  2. 色マッピングは、テンプレート・レベルで制御されています。色が変換レベルでマッピングされる方法を変更する場合、新規テンプレートを作成する必要があります。このテンプレートにより、既存のテンプレートを拡張し、このテンプレートを使用するように画面のカスタマイズを構成することができます。