Flag レンダラーは、以下の IlvFilterSDMRenderer メソッドを多重定義します。
多重定義されたメソッドは、まず
super
を呼び出し、これはフラグの処理前に同じ名前のスーパークラス・メソッドを呼び出します。フラグの作成
/** * Creates flag. * */ public void addNodeGraphic(IlvSDMEngine engine, java.lang.Object node, IlvGraphic graphic, boolean redraw) { super.addNodeGraphic(engine,node,graphic,redraw); checkNode(engine, node, graphic); }
addNodeGraphic
メソッドは、新規ノードが追加されるとフラグを作成します。フラグの消去および再作成
/** * Recreates flag. * */ public void propertyChanged(IlvSDMEngine engine, java.lang.Object object, java.lang.String propertyName, java.lang.Object oldValue, java.lang.Object newValue, IlvGraphic graphic) { super.propertyChanged(engine,object,propertyName, oldValue,newValue,graphic); if (!engine.getModel().isLink(object)) { cleanNode(engine, graphic); checkNode(engine, object, graphic); } }
プロパティーの変更によって、フラグが変更される場合も、変更されない場合もあります。
そのため、
propertyChanged
メソッドはフラグを消去して再作成します。フラグの消去
/** * Clears flag. * */ public void removeNodeGraphic(IlvSDMEngine engine, java.lang.Object node, IlvGraphic graphic, boolean redraw){ super.removeNodeGraphic(engine, node, graphic, redraw); cleanNode(engine, graphic); }
removeNodeGraphic
メソッドは、ノードが削除されるとフラグを消去します。ノードのフラグの移動
/** * Adjusts flag position. * */ public void nodeGraphicBBoxChanged(IlvSDMEngine engine, java.lang.Object node, IlvGraphic graphic, IlvRect oldBBox, IlvRect newBBox, java.lang.String[] pseudoClasses) { super.nodeGraphicBBoxChanged(engine,node,graphic, oldBBox,newBBox,pseudoClasses); moveNode(newBBox,(IlvGraphic)graphic.getProperty(FLAG_GRAPHICS)); }
nodeGraphicBBoxChanged
メソッドは、ノードのバウンディング・ボックスが変更されると呼び出されます。
なお、x と y が変更される場合もありますが、プロパティー変更イベントは送信されません。