入れ子マネージャーでのグラフィック・オブジェクトの処理

入れ子マネージャーに格納されたグラフィック・オブジェクトの操作に使用する API は、上位レベルのマネージャーでの操作に使用するものと同じです。例えば、入れ子マネージャー内でオブジェクトの移動または形状変更を行うには、IlvManager クラスの moveObject または reshapeObject メソッドを使用します。またグラフィック・オブジェクトのバウンディング・ボックスを変更するグラフィック・オブジェクトのプロパティーを変更する場合、IlvManagerapplyToObject メソッドを使用します。入れ子マネージャーに対する唯一の相違点は、グラフィック・オブジェクトが入れ子マネージャーに格納されている場合には、そのサイズを変更したり移動するとマネージャーそのもののサイズも、マネージャーの階層を上へ再帰的に進んで変更される点です。
IlvManager クラスは、入れ子マネージャーでグラフィック・オブジェクトを処理する際の便利なメソッドを提供します。これらのメソッドには、true に設定することでそのメソッドがこのマネージャーの入れ子マネージャーにも適用される、traverse パラメーターがあります。
traverse パラメーターを true に設定して次のメソッドを使用すると、マネージャーの階層にあるすべてのオブジェクトにアクセスできます。
  • 階層のオブジェクトの総数を返すには、次のメソッドを使用します。
    int getCardinal(boolean traverse)  
    
  • すべてのオブジェクトの列挙を返すには、次のメソッドを使用します。
    IlvGraphicEnumeration getObjects(boolean traverse)  
    
  • 特定の点の下にオブジェクトを配置する場合は、次のメソッドを使用します。
    IlvGraphic getObject(IlvPoint p, IlvManagerView view, boolean traverse)  
    
  • 最後に、オブジェクトの階層を走査して、 次の関数を適用します。
    void map(IlvApplyObject f, Object arg, boolean traverse)  
    
    このメソッドは、traverse パラメーターが true に設定されている場合、階層のすべてのオブジェクトに関数 f を適用します。
    void mapIntersects(IlvApplyObject f, Object arg,IlvRect rect, IlvTransformer 
    t, boolean traverse)  
    
    このメソッドは、入れ子マネージャーの階層にある指定の矩形と交差するすべてのグラフィック・オブジェクトに関数を適用します。
    void mapInside(IlvApplyObject f, Object arg, IlvRect rect, IlvTransformer t, 
    boolean traverse)  
    
    このメソッドは、入れ子マネージャーの階層にある指定の矩形内にあるすべてのグラフィック・オブジェクトに関数を適用します。
メソッドの中には、入れ子マネージャーの階層にあるオブジェクトの選択と選択解除ができるものがあります。詳細は、「入れ子マネージャーの選択」を参照してください。