読者です 読者をやめる 読者になる 読者になる

XPages:ナビゲータでコンテナノードの展開省略をコントロールする

IBM-XPages

実装したい機能

以前書いたブログ記事で、コンテナノードを展開省略できるようにしましたが

XPages:ナビゲータで展開省略ができるようにする - ishiitのブログ

今回は展開省略をコントロールします。

 

自分はメニュー(ビューの選択など)にナビゲータを使っています。

そのメニューを階層表示して、階層表示の展開省略を自動化したいのです。

 

 

展開省略をコントロールというのは以下の動作にしたいです

「四国」を展開して、「高知県」をクリックすると、「九州」を省略する

f:id:ishimotohiroaki:20160121105115p:plain

「九州」を展開して、「福岡県」をクリックすると、「四国」を省略する

f:id:ishimotohiroaki:20160121105210p:plain

ナビゲータは以下のようになっています。

f:id:ishimotohiroaki:20160121110217p:plain

 展開省略するところは、コンテナノードで作成するのがポイントです。

ページリンクノードでも展開省略は可能ですが、後で設定するプロパティが存在しません。

 

 

 

 

機能実装

コンテナノードの「expanded」プロパティに設定します

f:id:ishimotohiroaki:20160121110530p:plain

 

URLをみて、指定の場所に入っている文字列を調べます。

文字列が「Kochi」もしくは「Tokusima」のときに「四国」を展開します。

それ以外は省略します。

「コンテナノード - 四国」の「expanded」値の計算は以下のようになります。

url = context.getUrl();
xspurl = url.getSiteRelativeAddress(context);
xspViewKochi = xspurl.substr(5,5);
xspViewTokushima = xspurl.substr(5,9);
if ( xspViewKochi == "Kochi" || xspViewTokushima=="Tokushima") {
 return true;
} else {
 return false;
}

 

「コンテナノード - 九州」の「expanded」値の計算を以下のようになります。

url = context.getUrl();
xspurl = url.getSiteRelativeAddress(context);
xspViewFukuoka = xspurl.substr(5,7);
xspViewKagoshima = xspurl.substr(5,9);
if ( xspViewFukuoka == "Fukuoka" || xspViewTokushima=="Kagoshima") {
 return true;
} else {
 return false;
}

 

 

情報が少なくて苦労しましたが何とかできました。