I been assigned the task of making hyperlinks work, change color on
hovering and clicking, and being able to enable and disable the
links. I have the color changing part working and I thought I had the
disable/enble working, but now I can not get the onClick to be
reconized. Below is the code to extend the hyperlink so I can add the
enable/disable methods.
public class lawHyperlink extends Hyperlink implements
SourcesClickEvents, HasClickHandlers {
// define the HTML hyperlink
private Html hyperLink;
private final String str;
private static HyperlinkImpl impl = GWT.create(HyperlinkImpl.class);
public lawHyperlink(String s1, String s2) {
str = s1;
hyperLink = new Html("<span class='x-nodrag'>" + s1 + "</span>")
{
protected void onRender(Element target, int index) {
super.onRender(target, index);
el().addEventsSunk(Event.MOUSEEVENTS);
el().addEventsSunk(Event.ONCLICK);
}
};
enabled();
} // end of lawHyperlink constructor
public Html displayHyperlink() {
return hyperLink;
}
public void disabled() {
hyperLink.removeAllListeners();
hyperLink.addStyleName("gwt-Hyperlink-disabled");
hyperLink.setStyleAttribute("color", "#E0E0DA");
} // end of disabled method
public void enabled() {
Listener<BaseEvent> listener = new Listener<BaseEvent>() {
public void handleEvent(BaseEvent be) {
Html h = (Html) be.getSource();
String c = h.el().getStyleAttribute("color");
// Info.display("Listener color before test ", c);
c = c .equals("#ff00ff") ? "#ff0000" : "#FF00FF";
// Info.display("Listener color after test ", c);
h.setStyleAttribute("color", c);
}};
hyperLink.addStyleName("gwt-Hyperlink");
hyperLink.setStyleAttribute("color", "#00ff00");
hyperLink.addListener(Events.OnMouseOver, listener);
hyperLink.addListener(Events.OnMouseOut, listener);
} //end of enabled method
@Override
public HandlerRegistration addClickHandler(ClickHandler handler) {
Info.display("addClickHanler called ", "from lawHyperlink");
return addHandler(handler, ClickEvent.getType());
} // end of addClickHandler method override
@Override
public void onBrowserEvent(Event event) {
super.onBrowserEvent(event);
if (DOM.eventGetType(event) == Event.ONCLICK &&
impl.handleAsClick
(event)) {
History.newItem(getTargetHistoryToken());
DOM.eventPreventDefault(event);
}
} // end of onBrowserEvent method override
} // end of lawHyperlink class definition
I add the onClick handler in another class that puts it on a panel
that gets added to the rootPanel.
lawHyperlink firstPage = new lawHyperlink("|< First Page",
"FirstPage");
firstPage.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
MessageBox.alert("onClick", "Clicked First Page", null);
}});
linkPanel.add(firstPage.displayHyperlink());
Everything displays fine and the trace looks good, but the onClick
event is not being reconized. I believe I'm missing something from my
lawHyperlink class, but I have not been able to determine what. Any
help will be greatly appreciated.
Thanks,
Ray
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Google Web Toolkit" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/Google-Web-Toolkit?hl=en
-~----------~----~----~----~------~----~------~--~---