1 16 package com.google.gwt.user.client.ui; 17 18 import com.google.gwt.user.client.DOM; 19 import com.google.gwt.user.client.Element; 20 import com.google.gwt.user.client.Event; 21 import com.google.gwt.user.client.History; 22 23 48 public class Hyperlink extends Widget implements HasHTML, SourcesClickEvents { 49 50 private Element anchorElem; 51 private ClickListenerCollection clickListeners; 52 private String targetHistoryToken; 53 54 57 public Hyperlink() { 58 setElement(DOM.createDiv()); 59 DOM.appendChild(getElement(), anchorElem = DOM.createAnchor()); 60 sinkEvents(Event.ONCLICK); 61 setStyleName("gwt-Hyperlink"); 62 } 63 64 72 public Hyperlink(String text, boolean asHTML, String targetHistoryToken) { 73 this(); 74 if (asHTML) { 75 setHTML(text); 76 } else { 77 setText(text); 78 } 79 setTargetHistoryToken(targetHistoryToken); 80 } 81 82 88 public Hyperlink(String text, String targetHistoryToken) { 89 this(); 90 setText(text); 91 setTargetHistoryToken(targetHistoryToken); 92 } 93 94 public void addClickListener(ClickListener listener) { 95 if (clickListeners == null) { 96 clickListeners = new ClickListenerCollection(); 97 } 98 clickListeners.add(listener); 99 } 100 101 public String getHTML() { 102 return DOM.getInnerHTML(anchorElem); 103 } 104 105 111 public String getTargetHistoryToken() { 112 return targetHistoryToken; 113 } 114 115 public String getText() { 116 return DOM.getInnerText(anchorElem); 117 } 118 119 public void onBrowserEvent(Event event) { 120 if (DOM.eventGetType(event) == Event.ONCLICK) { 121 if (clickListeners != null) { 122 clickListeners.fireClick(this); 123 } 124 History.newItem(targetHistoryToken); 125 DOM.eventPreventDefault(event); 126 } 127 } 128 129 public void removeClickListener(ClickListener listener) { 130 if (clickListeners != null) { 131 clickListeners.remove(listener); 132 } 133 } 134 135 public void setHTML(String html) { 136 DOM.setInnerHTML(anchorElem, html); 137 } 138 139 146 public void setTargetHistoryToken(String targetHistoryToken) { 147 this.targetHistoryToken = targetHistoryToken; 148 DOM.setElementProperty(anchorElem, "href", "#" + targetHistoryToken); 149 } 150 151 public void setText(String text) { 152 DOM.setInnerText(anchorElem, text); 153 } 154 } 155 | Popular Tags |