Adds the InlineHyperlink widget, which is just like a Hyperlink, except that it isn't wrapped with an outer div, so it lays out inline. Issue 3056. patch by: ajr review by: rjrjr git-svn-id: https://google-web-toolkit.googlecode.com/svn/releases/1.6@4241 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/user/client/ui/Hyperlink.java b/user/src/com/google/gwt/user/client/ui/Hyperlink.java index 789f855..467a729 100644 --- a/user/src/com/google/gwt/user/client/ui/Hyperlink.java +++ b/user/src/com/google/gwt/user/client/ui/Hyperlink.java
@@ -56,17 +56,14 @@ private static HyperlinkImpl impl = GWT.create(HyperlinkImpl.class); - private Element anchorElem; + private final Element anchorElem = DOM.createAnchor(); private String targetHistoryToken; /** * Creates an empty hyperlink. */ public Hyperlink() { - setElement(DOM.createDiv()); - DOM.appendChild(getElement(), anchorElem = DOM.createAnchor()); - sinkEvents(Event.ONCLICK); - setStyleName("gwt-Hyperlink"); + this(DOM.createDiv()); } /** @@ -98,6 +95,18 @@ setText(text); setTargetHistoryToken(targetHistoryToken); } + + protected Hyperlink(Element elem) { + if (elem == null) { + setElement(anchorElem); + } else { + setElement(elem); + DOM.appendChild(getElement(), anchorElem); + } + + sinkEvents(Event.ONCLICK); + setStyleName("gwt-Hyperlink"); + } public HandlerRegistration addClickHandler(ClickHandler handler) { return addHandler(handler, ClickEvent.getType());
diff --git a/user/src/com/google/gwt/user/client/ui/InlineHyperlink.java b/user/src/com/google/gwt/user/client/ui/InlineHyperlink.java new file mode 100644 index 0000000..40a42cb --- /dev/null +++ b/user/src/com/google/gwt/user/client/ui/InlineHyperlink.java
@@ -0,0 +1,69 @@ +/* + * Copyright 2008 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + +package com.google.gwt.user.client.ui; + +/** + * A widget that serves as an "internal" hyperlink. That is, it is a link to + * another state of the running application. It should behave exactly like + * {@link com.google.gwt.user.client.ui.Hyperlink}, save that it lays out + * as an inline element, not block. + * + * <h3>CSS Style Rules</h3> + * <ul class='css'> + * <li>.gwt-InlineHyperlink { }</li> + * </ul> + */ +public class InlineHyperlink extends Hyperlink { + + /** + * Creates an empty hyperlink. + */ + public InlineHyperlink() { + super(null); + + setStyleName("gwt-InlineHyperlink"); + } + + /** + * Creates a hyperlink with its text and target history token specified. + * + * @param text the hyperlink's text + * @param asHTML <code>true</code> to treat the specified text as html + * @param targetHistoryToken the history token to which it will link + * @see #setTargetHistoryToken + */ + public InlineHyperlink(String text, boolean asHTML, String targetHistoryToken) { + this(); + + if (asHTML) { + setHTML(text); + } else { + setText(text); + } + setTargetHistoryToken(targetHistoryToken); + } + + /** + * Creates a hyperlink with its text and target history token specified. + * + * @param text the hyperlink's text + * @param targetHistoryToken the history token to which it will link + */ + public InlineHyperlink(String text, String targetHistoryToken) { + this(text, false, targetHistoryToken); + } +}