TADASHI OMOTE
tadas****@gmail*****
2010年 3月 19日 (金) 00:15:50 JST
矢野さん さっそくの回答ありがとうございました。 いただいた回答で解決しました。 正直、「あ・・・」って感じでした。 なぜか、Nodeを作る時にしこまないとみたいな固定観念にはまってて・・・お恥ずかしいです。 回答をいただいてから、LinkTreeのソースを見直してみると、腹にはまりました。 結局、 tree = new LinkTree("tree_menu",createTreeModel()){ private static final long serialVersionUID = -6349179755428413114L; @Override protected void onNodeLinkClicked(Object node, BaseTree tree, AjaxRequestTarget target){ if(tree.isLeaf(node)){ setResponsePage(pageSelecter.get(node.toString())); } } }; みたいにして、nodeの名称をキーにして、Pageクラスを引っ張るMAP(pageSelecter)を用意したら、思っていた動きになったので、 後は、これをベースにしてもう少し洗練させてみます。 ありがとうございました。 表 正 (おもて ただし) --------------------------------------------------------------------------------------------------------------------------------------------------------------- >矢野です。 >すみません,私はLinkTreeについてほぼ無知なので明確な回答はできないのですが,クリックされたら何か起きればいい(それが画面遷移であれなんであれ)ということであれば,LinkTreeクラスのonNodeLinkClickedメソッドをオーバーライドすると,ノードがクリックされるたびにそのメソッドが呼ばれると思います。 >そこで,ノードがリーフであることを確認したうえで,setResponsePage()すれば,画面遷移するのではないかと推測しています。 >ちなみにノードがリーフ(葉)であるかどうかは,NodeのisLeaf()メソッドでチェックできるみたいです。 >とりあえずいま分かる範囲で書いてみました。Treeなら俺に任せろ,という人の回答を期待したい。 >On 2010/03/18, at 0:40, TADASHI OMOTE wrote: > こんにちは。 > 表(おもて) と言います。 > > 初歩的な質問で恥ずかしいのですが、どなたかにご教授いただければと思い投稿させていただきます。 > > (質問) > LinkTreeを使って簡単なメニューを作ろうとしています。 > 単純にTreeでメニューを表示させ、クリックで指定画面へ遷移させるだけの簡単なものです。 > 「wicket-examples」を参考にして、とりあえずTreeを表示させるところまではできました。 > ソース的には、 > > tree = new LinkTree("tree_menu",createTreeModel()); > add(tree); > > で、 > protected TreeModel createTreeModel(){ > List<Object> list01 = new ArrayList<Object>(); > list01.add("Menu1")); > List<Object> list02 = new ArrayList<Object>(); > list02.add("Menu1-1"); > list02.add("Menu1-2"); > list01.add(list02); > list01.add("Menu2"); > return convertToTreeModel(list01); > } > private TreeModel convertToTreeModel(List<Object> list){ > TreeModel model = null; > DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode("ROOT"); > add(rootNode, list); > model = new DefaultTreeModel(rootNode); > return model; > } > @SuppressWarnings("unchecked") > private void add(DefaultMutableTreeNode parent, List<Object> sub){ > for (Iterator<Object> i = sub.iterator(); i.hasNext();){ > Object o = i.next(); > if (o instanceof List){ > DefaultMutableTreeNode child = new DefaultMutableTreeNode("subtree"); > parent.add(child); > add(child, (List<Object>)o); > }else { > DefaultMutableTreeNode child = new DefaultMutableTreeNode(o.toString()); > parent.add(child); > } > } > } > のような感じです。( ほとんど・・sampleのまんま・・ですが) > ここで、(o instanceof List) でないNodeに onclick イベントを仕込んで、画面遷移をおこしたいのですが、 > どうやればよいのかわからず、はまっています。 > > よろしくお願いいたします。 > > _______________________________________________ > Wicket-ja-user mailing list > Wicke****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user --------------------------------------------------- 矢野 勉(やの つとむ) 電子メール: t_yano****@me***** ---------------------------------------------------