twaver.network
Class ElementUI<T extends Element>

java.lang.Object
  extended by twaver.core.network.BaseUI<T>
      extended by twaver.network.ElementUI<T>
Type Parameters:
T - 网元类型
All Implemented Interfaces:
twaver.core.network.IUI<T,Canvas,Paint>, Identifiable
Direct Known Subclasses:
LinkUI, NodeUI

public class ElementUI<T extends Element>
extends twaver.core.network.BaseUI<T>
implements Identifiable

网元呈现类,用于网元在拓扑图中的呈现,由一个主体和多个孩子UI元素构成


Field Summary
protected  LabelUI alarm
          告警标签
protected  UI<?> body
          网元主体元素
protected  boolean isLayouting
          是否正在对孩子节点作布局
protected  LabelUI label
          文本标签
protected  Network network
          拓扑图
 
Fields inherited from class twaver.core.network.BaseUI
anchorPoint, bodyOffsetX, bodyOffsetY, bounds, data, invalidateAnchorPointFlag, invalidateLocationFlag, invalidateRenderFlag, invalidateSizeFlag, location, stateOutline, stateOutlineColor, visible
 
Constructor Summary
ElementUI(T data, Network network)
          网元UI类,用于网元在拓扑图中的绘制,由一个主体和多个孩子UI元素构成
 
Method Summary
 void addChild(UI<?> child)
          添加孩子元素
protected  boolean checkAttachments(java.lang.String propertyName, PropertyChangeEvent evt)
          检查附件元素,网元增加,删除或者更新附件时,会回调此方法,用于同步相应的UI元素
protected  void createAttachmentUI(Attachment<?> attachment)
          创建附件UI元素,加入为孩子
protected  void createChildren()
          创建孩子元素,比如文本标签,告警标签等等
protected  boolean doValidate()
          执行生效动作,比如孩子元素的位置布局,范围大小的确定等等
protected  void drawChildren(Canvas canvas, Paint paint)
          绘制孩子元素,仅限不置顶也不置底显示的孩子元素,其他元素将单独绘制,如置顶显示的元素通过drawShowOnTop(Canvas, Paint)绘制,置底显示的在drawSendToBottomChildren(Canvas, Paint)
protected  void drawSendToBottomChildren(Canvas canvas, Paint paint)
          绘制显示在主体之下的孩子元素
 boolean drawShowOnTop(Canvas canvas, Paint paint)
          绘制置顶显示的孩子元素
 UI<?> getBody()
          网元主体元素
 Rect getBodyBounds()
          获取网元主体范围
 boolean getBooleanStyle(java.lang.String name)
          获取boolean类型的样式属性
 java.util.List<UI<?>> getChildren()
          孩子UI元素
 int getColorStyle(java.lang.String name)
          获取颜色样式属性
 float getFloatStyle(java.lang.String name)
          获取浮点数类型的样式属性
 int getId()
          元素编号,唯一标识
 Insets getInsetsStyle(java.lang.String styleName)
          获取Insets类型的样式值
 int getIntStyle(java.lang.String name)
          获取整型样式属性
 Network getNetwork()
           
 IShader getShaderStyle(java.lang.String name)
          获取着色器类型的样式属性
 java.lang.String getStringStyle(java.lang.String name)
          获取字符串类型的样式属性
 java.lang.Object getStyle(java.lang.String name)
          获取网元样式属性
 Rect getUIBounds()
          UI的整体范围,包括所有文本,告警以及挂载UI所占的空间
 boolean hasChildOnTop()
          是否有孩子元素需要置顶显示,置顶显示的元素呈现在所有网元之上,比如设置文本标签置顶,可以使用下面的代码
 UI<?> hitTest(Point point)
          获取该坐标点位置的UI元素,如果不与任何UI元素相交,则返回null
protected  void initialize()
          初始化UI类,用于添加设置图形样式,创建孩子元素
 boolean intersect(Point point)
          是否与指定点相交
 boolean invalidateStyle(java.lang.String styleName)
          无效样式
 boolean invalidateStyles()
          无效网元所有样式,网元UI中的样式会被重新加载
 void invalidateUI()
          无效网元,通知系统进行重绘
 boolean isInitialized()
          是否已经初始化
 boolean isVisible()
          是否可见
 void layout()
          对网元上挂载的UI元素作布局,确定各自的相对位置,比如文本标签的位置,告警冒泡的问题,定制附件的位置等等
protected  void measure()
          测定主体的尺寸
protected  void onBodyChange()
          主体UI元素更改时,回调此函数,比如网元内容类型从image改为shape时,主体元素会从ImageUI换成ShapeUI
protected  void onDraw(Canvas canvas, Paint paint)
          绘制网元,包括主体和孩子元素
protected  void onDrawBody(Canvas canvas, Paint paint, boolean drawSelectionOnBody, boolean drawStateOutlineOnBody)
          绘制网元主体
 boolean onElementPropertyChange(PropertyChangeEvent evt)
          网元属性变化时,回调该函数,如果UI尚未初始化完成,程序会直接返回,不对UI作处理,否则会调用#onElementPropertyChange(String, PropertyChangeEvent)
protected  boolean onElementPropertyChange(java.lang.String propertyName, PropertyChangeEvent evt)
          网元属性变化时,调用此函数
 void removeChild(UI<?> child)
          删除孩子元素
protected  void resetStyles()
          重新加载网元UI的所有样式
 boolean setBody(UI<?> body)
          设置网元的主体UI元素
 void setChildIndex(UI<?> child, int index)
          设置孩子元素的绘制次序
 boolean setLayoutByAnchorPoint(boolean layoutByAnchorPoint)
          是否按挂载布局,不同节点是按挂载点布局,ShapeNode类型则不是
 boolean setRenderColor(int renderColor)
          设置渲染色
 boolean setSelected(boolean selected)
          设置网元呈现选中效果
 boolean setSelectionBorder(float selectionBorderRadius)
          设置选中边框宽度,也就是选中阴影的半径
 boolean setSelectionBorderColor(int selectionBorderColor)
          设置选中边框颜色
 boolean validate()
           
 
Methods inherited from class twaver.core.network.BaseUI
checkBackground, checkOutline, draw, drawBackgroundAndBorder, drawBody, drawStateOutline, drawStateOutline, getAnchorPoint, getAnchorPosition, getAngle, getBackgroundColor, getBounds, getCornerRadius, getData, getLocation, getMeasuredHeight, getMeasuredWidth, getOffset, getOutlineColor, getOutlineWidth, getRenderColor, getSelectionBorder, getSelectionBorderColor, getStateOutline, getStateOutlineColor, intersect, intersectPointer, invalidateAnchorPoint, invalidateLocation, invalidatePointer, invalidateRender, invalidateSize, isDrawBackground, isDrawOutline, isDrawStateOutline, isInvalidate, isInvalidateAnchorPoint, isInvalidateLocation, isInvalidateSize, isLayoutByAnchorPoint, isRelativeLocation, isRotatable, isSelected, isShowOnTop, measureAnchorPosition, onDrawBackgroundAndBorder, perLocation, resetPaint, resetShape, setAnchorPosition, setBackgroundColor, setBackgroundShader, setBounds, setBounds, setCornerRadius, setData, setLocation, setLocation, setMeasuredSize, setOffset, setOutline, setOutlineColor, setPadding, setPointerVisible, setPointerWidth, setRotatable, setShowOnTop, setStateOutline, setStateOutlineColor, setVisible, styleSelectionPaint, toAbsoluteRect, toLocalPoint, toLocalRect, validateLocation, validatePointer, validateRender
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

network

protected Network network
拓扑图


label

protected LabelUI label
文本标签


alarm

protected LabelUI alarm
告警标签


body

protected UI<?> body
网元主体元素


isLayouting

protected boolean isLayouting
是否正在对孩子节点作布局

See Also:
layout()
Constructor Detail

ElementUI

public ElementUI(T data,
                 Network network)
网元UI类,用于网元在拓扑图中的绘制,由一个主体和多个孩子UI元素构成

Parameters:
data - 网元
network - 拓扑图
Method Detail

isInitialized

public boolean isInitialized()
是否已经初始化

Returns:
是否已经初始化
See Also:
initialize()

initialize

protected void initialize()
初始化UI类,用于添加设置图形样式,创建孩子元素

See Also:
isInitialized(), createChildren(), resetStyles()

createChildren

protected void createChildren()
创建孩子元素,比如文本标签,告警标签等等

See Also:
initialize()

resetStyles

protected void resetStyles()
重新加载网元UI的所有样式


onElementPropertyChange

public boolean onElementPropertyChange(PropertyChangeEvent evt)
网元属性变化时,回调该函数,如果UI尚未初始化完成,程序会直接返回,不对UI作处理,否则会调用#onElementPropertyChange(String, PropertyChangeEvent)

Parameters:
evt - 网元属性变化事件
Returns:
是否需要重绘该网元
See Also:
onElementPropertyChange(String, PropertyChangeEvent)

onElementPropertyChange

protected boolean onElementPropertyChange(java.lang.String propertyName,
                                          PropertyChangeEvent evt)
网元属性变化时,调用此函数

Parameters:
propertyName - 属性名
evt - 属性变化事件
Returns:
是否需要重绘
See Also:
onElementPropertyChange(PropertyChangeEvent)

invalidateStyle

public boolean invalidateStyle(java.lang.String styleName)
无效样式

Parameters:
styleName - 样式名称
Returns:
是否需要重绘

getId

public int getId()
Description copied from interface: Identifiable
元素编号,唯一标识

Specified by:
getId in interface Identifiable
Returns:
元素的唯一标识

getNetwork

public Network getNetwork()
Returns:
拓扑图组件

layout

public void layout()
对网元上挂载的UI元素作布局,确定各自的相对位置,比如文本标签的位置,告警冒泡的问题,定制附件的位置等等


getUIBounds

public Rect getUIBounds()
UI的整体范围,包括所有文本,告警以及挂载UI所占的空间

Returns:
UI的整体范围

addChild

public void addChild(UI<?> child)
添加孩子元素

Parameters:
child -

removeChild

public void removeChild(UI<?> child)
删除孩子元素

Parameters:
child -

setChildIndex

public void setChildIndex(UI<?> child,
                          int index)
设置孩子元素的绘制次序

Parameters:
child -
index -

hitTest

public UI<?> hitTest(Point point)
获取该坐标点位置的UI元素,如果不与任何UI元素相交,则返回null

Parameters:
point -
Returns:
该坐标点位置的UI元素

getChildren

public java.util.List<UI<?>> getChildren()
孩子UI元素

Returns:
孩子UI元素集合

setBody

public boolean setBody(UI<?> body)
设置网元的主体UI元素

Parameters:
body -
Returns:
是否设置成功

getBody

public UI<?> getBody()
网元主体元素

Returns:
网元主体元素

onBodyChange

protected void onBodyChange()
主体UI元素更改时,回调此函数,比如网元内容类型从image改为shape时,主体元素会从ImageUI换成ShapeUI

See Also:
Node.setContentType(int)

setLayoutByAnchorPoint

public boolean setLayoutByAnchorPoint(boolean layoutByAnchorPoint)
是否按挂载布局,不同节点是按挂载点布局,ShapeNode类型则不是

Overrides:
setLayoutByAnchorPoint in class twaver.core.network.BaseUI<T extends Element>
See Also:
ShapeNode

validate

public boolean validate()
Specified by:
validate in interface twaver.core.network.IUI<T extends Element,Canvas,Paint>
Overrides:
validate in class twaver.core.network.BaseUI<T extends Element>

invalidateStyles

public boolean invalidateStyles()
无效网元所有样式,网元UI中的样式会被重新加载

Returns:
是否设置成功
See Also:
Network.invalidateStyles(Element)

doValidate

protected boolean doValidate()
执行生效动作,比如孩子元素的位置布局,范围大小的确定等等

Returns:
是否需要生效
See Also:
layout(), measure()

measure

protected void measure()
测定主体的尺寸

Specified by:
measure in class twaver.core.network.BaseUI<T extends Element>

onDraw

protected void onDraw(Canvas canvas,
                      Paint paint)
绘制网元,包括主体和孩子元素

Overrides:
onDraw in class twaver.core.network.BaseUI<T extends Element>
See Also:
drawSendToBottomChildren(Canvas, Paint), onDrawBody(Canvas, Paint, boolean, boolean), drawChildren(Canvas, Paint)

drawSendToBottomChildren

protected void drawSendToBottomChildren(Canvas canvas,
                                        Paint paint)
绘制显示在主体之下的孩子元素

Parameters:
canvas -
paint -
See Also:
onDraw(Canvas, Paint)

onDrawBody

protected void onDrawBody(Canvas canvas,
                          Paint paint,
                          boolean drawSelectionOnBody,
                          boolean drawStateOutlineOnBody)
绘制网元主体

Specified by:
onDrawBody in class twaver.core.network.BaseUI<T extends Element>
Parameters:
canvas -
paint -
drawSelectionOnBody - 绘制主体选中效果
drawStateOutlineOnBody - 绘制主体外边框

hasChildOnTop

public boolean hasChildOnTop()
是否有孩子元素需要置顶显示,置顶显示的元素呈现在所有网元之上,比如设置文本标签置顶,可以使用下面的代码
 node.setStyle(Styles.LABEL_ON_TOP, true);
 

Returns:
是否有孩子元素需要置顶显示,twaver内部绘制网元时会用到该属性
See Also:
drawShowOnTop(Canvas, Paint), Styles.LABEL_ON_TOP, Styles.ALARM_ON_TOP, Styles.LINK_BUNDLE_LABEL_ON_TOP, Attachment.setShowOnTop(boolean), BaseUI.setShowOnTop(boolean)

drawShowOnTop

public boolean drawShowOnTop(Canvas canvas,
                             Paint paint)
绘制置顶显示的孩子元素

Parameters:
canvas -
paint -
Returns:
是否有置顶显示的孩子元素
See Also:
hasChildOnTop(), Styles.LABEL_ON_TOP, Styles.ALARM_ON_TOP, Styles.LINK_BUNDLE_LABEL_ON_TOP, Attachment.setShowOnTop(boolean), BaseUI.setShowOnTop(boolean)

drawChildren

protected void drawChildren(Canvas canvas,
                            Paint paint)
绘制孩子元素,仅限不置顶也不置底显示的孩子元素,其他元素将单独绘制,如置顶显示的元素通过drawShowOnTop(Canvas, Paint)绘制,置底显示的在drawSendToBottomChildren(Canvas, Paint)

Parameters:
canvas -
paint -
See Also:
addChild(UI), removeChild(UI)

getInsetsStyle

public Insets getInsetsStyle(java.lang.String styleName)
获取Insets类型的样式值

Parameters:
styleName - 样式名称
Returns:
样式属性
See Also:
Network.getInsetsStyle(Element, String)

getBooleanStyle

public boolean getBooleanStyle(java.lang.String name)
获取boolean类型的样式属性

Parameters:
name - 样式名称
Returns:
样式属性
See Also:
Network.getBooleanStyle(Element, String)

getColorStyle

public int getColorStyle(java.lang.String name)
获取颜色样式属性

Parameters:
name - 样式名称
Returns:
样式属性
See Also:
Network.getColorStyle(Element, String)

getFloatStyle

public float getFloatStyle(java.lang.String name)
获取浮点数类型的样式属性

Parameters:
name - 样式名称
Returns:
样式属性
See Also:
Network.getFloatStyle(Element, String)

getIntStyle

public int getIntStyle(java.lang.String name)
获取整型样式属性

Parameters:
name - 样式名称
Returns:
样式属性
See Also:
Network.getIntStyle(Element, String)

getStringStyle

public java.lang.String getStringStyle(java.lang.String name)
获取字符串类型的样式属性

Parameters:
name - 样式名称
Returns:
样式属性
See Also:
Network.getStringStyle(Element, String)

getShaderStyle

public IShader getShaderStyle(java.lang.String name)
获取着色器类型的样式属性

Parameters:
name - 样式名称
Returns:
样式属性
See Also:
Network.getShaderStyle(Element, String)

getStyle

public java.lang.Object getStyle(java.lang.String name)
获取网元样式属性

Parameters:
name - 样式名称
Returns:
样式属性
See Also:
Network.getElementStyle(Element, String)

setSelectionBorderColor

public boolean setSelectionBorderColor(int selectionBorderColor)
设置选中边框颜色

Overrides:
setSelectionBorderColor in class twaver.core.network.BaseUI<T extends Element>
Parameters:
selectionBorderColor - 选中边框颜色

setRenderColor

public boolean setRenderColor(int renderColor)
设置渲染色

Overrides:
setRenderColor in class twaver.core.network.BaseUI<T extends Element>

setSelectionBorder

public boolean setSelectionBorder(float selectionBorderRadius)
设置选中边框宽度,也就是选中阴影的半径

Overrides:
setSelectionBorder in class twaver.core.network.BaseUI<T extends Element>

setSelected

public boolean setSelected(boolean selected)
设置网元呈现选中效果

Overrides:
setSelected in class twaver.core.network.BaseUI<T extends Element>
See Also:
Network.getSelectionModel()

intersect

public boolean intersect(Point point)
是否与指定点相交

Specified by:
intersect in interface twaver.core.network.IUI<T extends Element,Canvas,Paint>
Overrides:
intersect in class twaver.core.network.BaseUI<T extends Element>

createAttachmentUI

protected void createAttachmentUI(Attachment<?> attachment)
创建附件UI元素,加入为孩子

Parameters:
attachment - 附件元素
See Also:
Attachment, Element.addAttachment(Attachment)

checkAttachments

protected boolean checkAttachments(java.lang.String propertyName,
                                   PropertyChangeEvent evt)
检查附件元素,网元增加,删除或者更新附件时,会回调此方法,用于同步相应的UI元素

Parameters:
propertyName - 属性名
evt - 属性变化事件
Returns:
是否需要重绘附件
See Also:
Element.addAttachment(Attachment), Element.removeAttachment(String), Element.updateAttachment(Attachment)

getBodyBounds

public Rect getBodyBounds()
获取网元主体范围

Returns:
网元主体范围

invalidateUI

public void invalidateUI()
无效网元,通知系统进行重绘


isVisible

public boolean isVisible()
是否可见

Specified by:
isVisible in interface twaver.core.network.IUI<T extends Element,Canvas,Paint>
Overrides:
isVisible in class twaver.core.network.BaseUI<T extends Element>