ICEfacesのエフェクト
ICEfacesはJavascriptを一切書かないでいくつか用意されたエフェクトをかけることが可能だ。
計算ボタンクリックしたら特定のコンポーネントをハイライト(最初特定の色になったあと、そのあとどんどん薄くなるアニメーション)させてみる。
ページBeanにEffectを返すゲッターを作成する。
public Effect getHighlightEffect(){ return new Highlight("#FF0000"); }
HighlightというクラスがEffectクラスを継承していて、これがハイライトアニメーションを管理してくれるクラスだ。コンストラクタに色を指定する。この場合真っ赤ということになる。
そして色をつけたいコンポーネントにバインド。
実行!
確かにアニメーションするのだが、常にアニメーションをしてしまう。
まず、初回表示にいきなりアニメーション。
そして、何らかのイベントが走るたびにアニメーション。
ふむ。このメソッドが呼ばれるタイミングはわかった。
ではこうするとどうなるだろう。
Highlight effect = new Highlight("#FF0000"); public Effect getHighlightEffect(){ return effect; }
実行!
最初、表示されたときに1度エフェクトが実行されてその後はエフェクトはかからなくなる。
ふむふむ。
エフェクトが実行されたかどうか示すフラグがあるらしい。これをコントロールすると良いのだろう。
つまり、最初の画面表示したときは実行済みフラグをあげておいて、エフェクトをかけたいタイミングで実行済みフラグを下げるというわけだ。
public String button1_action() { Fragment1 f = (Fragment1) getBean("Fragment1"); f.setResult( param1 + param2 ); effect.setFired(false);//エフェクト発火 return null; } Highlight effect = new Highlight("#FF0000"); { effect.setFired(true); } public Effect getHighlightEffect(){ return effect; }
実行!
…当初の思惑通り動いた。
正直ICEfacesのエフェクトはかなり使えると思った。ハイライトだけでも十分強力だ。
あとショーケースのeffectのところとか
http://component-showcase.icefaces.org/component-showcase/showcase.iface