You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
113 lines
2.9 KiB
113 lines
2.9 KiB
|
|
namespace FairyGUI.Utils |
|
{ |
|
/// <summary> |
|
/// |
|
/// </summary> |
|
public class HtmlLink : IHtmlObject |
|
{ |
|
RichTextField _owner; |
|
HtmlElement _element; |
|
SelectionShape _shape; |
|
|
|
EventCallback1 _clickHandler; |
|
EventCallback1 _rolloverHandler; |
|
EventCallback0 _rolloutHandler; |
|
|
|
public HtmlLink() |
|
{ |
|
_shape = new SelectionShape(); |
|
_shape.gameObject.name = "HtmlLink"; |
|
_shape.cursor = "text-link"; |
|
|
|
_clickHandler = (EventContext context) => |
|
{ |
|
_owner.BubbleEvent("onClickLink", _element.GetString("href")); |
|
}; |
|
_rolloverHandler = (EventContext context) => |
|
{ |
|
if (_owner.htmlParseOptions.linkHoverBgColor.a > 0) |
|
_shape.color = _owner.htmlParseOptions.linkHoverBgColor; |
|
}; |
|
_rolloutHandler = () => |
|
{ |
|
if (_owner.htmlParseOptions.linkHoverBgColor.a > 0) |
|
_shape.color = _owner.htmlParseOptions.linkBgColor; |
|
}; |
|
} |
|
|
|
public DisplayObject displayObject |
|
{ |
|
get { return _shape; } |
|
} |
|
|
|
public HtmlElement element |
|
{ |
|
get { return _element; } |
|
} |
|
|
|
public float width |
|
{ |
|
get { return 0; } |
|
} |
|
|
|
public float height |
|
{ |
|
get { return 0; } |
|
} |
|
|
|
public void Create(RichTextField owner, HtmlElement element) |
|
{ |
|
_owner = owner; |
|
_element = element; |
|
_shape.onClick.Add(_clickHandler); |
|
_shape.onRollOver.Add(_rolloverHandler); |
|
_shape.onRollOut.Add(_rolloutHandler); |
|
_shape.color = _owner.htmlParseOptions.linkBgColor; |
|
} |
|
|
|
public void SetArea(int startLine, float startCharX, int endLine, float endCharX) |
|
{ |
|
if (startLine == endLine && startCharX > endCharX) |
|
{ |
|
float tmp = startCharX; |
|
startCharX = endCharX; |
|
endCharX = tmp; |
|
} |
|
_shape.rects.Clear(); |
|
_owner.textField.GetLinesShape(startLine, startCharX, endLine, endCharX, true, _shape.rects); |
|
_shape.Refresh(); |
|
} |
|
|
|
public void SetPosition(float x, float y) |
|
{ |
|
_shape.SetXY(x, y); |
|
} |
|
|
|
public void Add() |
|
{ |
|
//add below _shape |
|
_owner.AddChildAt(_shape, 0); |
|
} |
|
|
|
public void Remove() |
|
{ |
|
if (_shape.parent != null) |
|
_owner.RemoveChild(_shape); |
|
} |
|
|
|
public void Release() |
|
{ |
|
_shape.RemoveEventListeners(); |
|
|
|
_owner = null; |
|
_element = null; |
|
} |
|
|
|
public void Dispose() |
|
{ |
|
_shape.Dispose(); |
|
_shape = null; |
|
} |
|
} |
|
}
|
|
|