地図レベル
ベース・テキスト方向を地図レベルで制御するための地図に固有の Java クラスはありません。
ベース・テキスト方向をこのレベルで制御するには、JViews Framework のマネージャーを使用することができます。
このクラスを使用して、レイヤーを含む地図全体に対するベース・テキスト方向を設定することができます。
次に例を示します。
IlvManager によるベース・テキスト方向の設定
IlvManager myMgr = new IlvManager(); /* top level manager responsible for controlling ALL graphical elements of map */ myMgr.setBaseTextDirection(IlvBidiUtil.RIGHT_TO_LEFT);
すべてのテキスト・オブジェクト、ラベル、および注釈がベース・テキスト方向 DIRECTION_INHERITED を持っている場合は、このクラスを使用することにより、地図のすべてのレイヤーにあるこれらのどのオブジェクトに対しても同じようにベース・テキスト方向が動的に変更されるようにすることができます。
このようなテキスト関連オブジェクトはすべて同じベース・テキスト方向を継承します。ここでいう同じベース・テキスト方向とは、例 IlvManager によるベース・テキスト方向の設定 と同様のコードを使用してプログラムでトップレベルに割り当てられるものです。
レイヤー・レベル
JViews Maps でのベース・テキスト方向は地図レイヤー・スタイルの属性として定義されるもので、レイヤーごとに個別に変更することができます。
次に例を示します。
IlvMapStyle layerStyle = layer.getStyle(); if (style instanceof IlvMapTextStyle) // text object style (IlvMapTextStyle) layerStyle.setBaseTextDirection(IlvBidiUtil.RIGHT_TO_LEFT); else if(style instanceof IlvMapLabelStyle) // labels, including annotations (IlvMapLabelStyle) layerStyle.setBaseTextDirection(IlvBidiUtil.RIGHT_TO_LEFT); else if(style instanceof IlvGridStyle) // grid (IlvGridStyle) layerStyle.setBaseTextDirection(IlvBidiUtil.RIGHT_TO_LEFT);
ベース・テキスト方向: 適切な JViews Maps コンポーネント
特定のコンポーネントに対するベース・テキスト方向の指定が最も高い優先度となります。
特定のコンポーネントに対してベース・テキスト方向が DIRECTION_INHERITED として定義されたときのみ、より高いレベルからの値が使用されます。
ベース・テキスト方向が指定されるレベル | 指定が適用される追加レベル | コメント |
---|---|---|
地図 | すべてのレイヤー。 | トップレベル |
レイヤー | そのレイヤーに属するすべてのテキスト。例えば、テキスト・データ・オブジェクト、データ・オブジェクト・ラベル、注釈ラベル、グリッド・ラベルなど。 |
実行時における動的変更の有効化
地図のすべてのテキスト要素の値を同じにするか、または 1 つの特定のベース・テキスト方向値を地図の特定のテキスト要素に割り当てるように、ベース・テキスト方向を動的に設定することができます。
すべてのテキスト要素に一貫したベース・テキスト方向の動的設定
地図レイヤーのテキスト関連要素 (テキスト・データ・オブジェクト、データ・オブジェクト・ラベル。注釈ラベル、グリッド・オブジェクトのラベルなど) でベース・テキスト方向の値を次のいずれかに設定すると、明示的または静的な割り当てとなります。
- 左から右
- 右から左
- コンテキスト
特定の要素についてこれらの設定に影響を及ぼす可能性がある唯一の外部要因は、Java API の呼び出しです。
ベース・テキスト方向を次のいずれかの値に設定すると、実行時にベース・テキスト方向が外部から影響を受ける可能性があります。
- 継承
- 例えば、テキスト要素が埋め込まれている地図の基本指定を変更すると、地図内のテキスト要素のベース・テキスト方向の値がその変更の影響を受けます。
- コンポーネント方向
- 例えば、地図が埋め込まれているコンテナーの GUI 方向の変更は、地図内のテキスト要素のベース・テキスト方向に影響を及ぼします。
実行時におけるこのような変更によって、地図に含まれるすべてのテキスト要素のベース・テキスト方向に一貫して動的に影響を及ぼすことができます。
このような実行時の動的変更の場合は、以下の条件を満たす必要があります。
- 地図レイヤーのベース・テキスト方向プロパティーに明示的な値が割り当てられていない。
- 最高レベルのベース・テキスト方向の値を変更するのに API が使用される。例えば、次のものなど。
IlvManager myMgr = new IlvManager(); /* top level manager responsible for controlling ALL graphical elements of map */ myMgr.setBaseTextDirection(IlvBidiUtil.RIGHT_TO_LEFT);
特定のテキスト要素への 1 つの特定のベース・テキスト方向値の動的割り当て
ベース・テキスト方向を指定できる最低レベルはレイヤーです。
次の例は、レイヤーに固有のベース・テキスト方向値を割り当てる方法を示しています。
IlvMapStyle layerStyle = layer.getStyle(); if (style instanceof IlvMapTextStyle) // text object style (IlvMapTextStyle) layerStyle.setBaseTextDirection(IlvBidiUtil.RIGHT_TO_LEFT); else if(style instanceof IlvMapLabelStyle) // labels, including annotations (IlvMapLabelStyle) layerStyle.setBaseTextDirection(IlvBidiUtil.RIGHT_TO_LEFT); else if(style instanceof IlvGridStyle) // grid (IlvGridStyle) layerStyle.setBaseTextDirection(IlvBidiUtil.RIGHT_TO_LEFT);