2016-06-17 6 views
0

私はJustinmindのAPIを使ってプラグインを開発しています。私が必要とするのは、基本的にIDで要素を見つけることです。しかし、APIにはfindById()のようなメソッドはありません。ドキュメント全体を検索したので、 hereです。私はメソッドを作成しなければならないと仮定します。私は、このページをデザインするでしょう複合オブジェクト内のオブジェクトを見つける

enter image description here

:問題は

は、私は次のページのレイアウトを持っていると仮定しJustinmindするために、特定のではないですが、ここで私は、問題とJustinmindにおける一般的な構造の詳細を説明していますJustinmind以下hieararchyのように:Justinmind APIで

Screen 
----Image 
----Group 
--------Button 
------------Image 
------------Label 
--------Button 
------------Image 
------------Label 
--------Button 
------------Image 
------------Label 
--------Button 
------------Image 
------------Label 
--------Button 
------------Image 
------------Label 
--------Button 
------------Image 
------------Label 
----Text 
----Text 
----Text 

、画面がICanvasオブジェクトです。画面はmyScreenという変数に保存されています。次に、getApiRoot()は、ページの一番上のコンポーネントを返します。その後、すべてのコンポーネントは子であり、getApiChildren()メソッドを介してアクセスできます。

List<IComponent> components = myScreen.getApiRoot().getApiChildren(); 

上記のコードは、画像、グループ、テキスト、つまり1次検索コンポーネントを返します。たとえば、次のように私は、最初のボタンのラベル(概要)にアクセスすることができます。

IComponent group = components.get(1); //Returns the Group 
IComponent button1 = group.getApiChildren().get(0); //Returns the first button group, which is the first child of group 
IComponent label1 = button1.getApiChildren().get(1); //Returns the label, which is the second child of the first button group 

を見ての通り、私はいつもgetApiChildren()メソッドによってコンポーネントにアクセスします。そして、これは大規模かつ動的なページではあまり実行可能ではありません。例えば、私が書いているプラ​​グインは、ラベルがボタングループにないときに警告を発するでしょう。ラベルの存在を確認するには、getApiChildren()メソッドですべての画面コンポーネントをトラバースする必要があります。

私は木を経由して、それを表現することができます

enter image description here

しかし、この構造は常に変化します。ツリーやハッシュマップを構築する必要がありますか?非常に複雑なオブジェクトの中でオブジェクトを見つける最良の方法は何ですか?

答えて

1

私はjustinmindを知らない。しかし、あなたがJavaで複雑なオブジェクトのグラフを持っているなら、このライブラリhttp://commons.apache.org/proper/commons-jxpath/を試して、XPATH構文を使ってあなたのクエリを指定することができます。

+0

実現可能なソリューションのように見えます。私はそれを試してみる、ありがとう! –

関連する問題