123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246 |
- /*
- * Copyright 2000-2018 Vaadin Ltd.
- *
- * 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.vaadin.ui;
-
- import java.util.Collection;
-
- import org.jsoup.nodes.Element;
-
- import com.vaadin.server.Resource;
- import com.vaadin.shared.ui.BorderStyle;
- import com.vaadin.shared.ui.link.LinkConstants;
- import com.vaadin.shared.ui.link.LinkState;
- import com.vaadin.ui.declarative.DesignAttributeHandler;
- import com.vaadin.ui.declarative.DesignContext;
-
- /**
- * Link is used to create external or internal URL links.
- *
- * @author Vaadin Ltd.
- * @since 3.0
- */
- @SuppressWarnings("serial")
- public class Link extends AbstractComponent {
-
- /**
- * @deprecated As of 7.0, use {@link BorderStyle#NONE} instead
- */
- @Deprecated
- public static final BorderStyle TARGET_BORDER_NONE = BorderStyle.NONE;
-
- /**
- * @deprecated As of 7.0, use {@link BorderStyle#MINIMAL} instead
- */
- @Deprecated
- public static final BorderStyle TARGET_BORDER_MINIMAL = BorderStyle.MINIMAL;
-
- /**
- * @deprecated As of 7.0, use {@link BorderStyle#DEFAULT} instead
- */
- @Deprecated
- public static final BorderStyle TARGET_BORDER_DEFAULT = BorderStyle.DEFAULT;
-
- /**
- * Creates a new link.
- */
- public Link() {
-
- }
-
- /**
- * Creates a new instance of Link.
- *
- * @param caption
- * @param resource
- */
- public Link(String caption, Resource resource) {
- setCaption(caption);
- setResource(resource);
- }
-
- /**
- * Creates a new instance of Link that opens a new window.
- *
- *
- * @param caption
- * the Link text.
- * @param targetName
- * the name of the target window where the link opens to. Empty
- * name of null implies that the target is opened to the window
- * containing the link.
- * @param width
- * the Width of the target window.
- * @param height
- * the Height of the target window.
- * @param border
- * the Border style of the target window.
- *
- */
- public Link(String caption, Resource resource, String targetName, int width,
- int height, BorderStyle border) {
- setCaption(caption);
- setResource(resource);
- setTargetName(targetName);
- setTargetWidth(width);
- setTargetHeight(height);
- setTargetBorder(border);
- }
-
- @Override
- protected LinkState getState() {
- return (LinkState) super.getState();
- }
-
- @Override
- protected LinkState getState(boolean markAsDirty) {
- return (LinkState) super.getState(markAsDirty);
- }
-
- /**
- * Returns the target window border.
- *
- * @return the target window border.
- */
- public BorderStyle getTargetBorder() {
- return getState(false).targetBorder;
- }
-
- /**
- * Returns the target window height or -1 if not set.
- *
- * @return the target window height.
- */
- public int getTargetHeight() {
- return getState(false).targetHeight < 0 ? -1
- : getState(false).targetHeight;
- }
-
- /**
- * Returns the target window name. Empty name of null implies that the
- * target is opened to the window containing the link.
- *
- * @return the target window name.
- */
- public String getTargetName() {
- return getState(false).target;
- }
-
- /**
- * Returns the target window width or -1 if not set.
- *
- * @return the target window width.
- */
- public int getTargetWidth() {
- return getState(false).targetWidth < 0 ? -1
- : getState(false).targetWidth;
- }
-
- /**
- * Sets the border of the target window.
- *
- * @param targetBorder
- * the targetBorder to set.
- */
- public void setTargetBorder(BorderStyle targetBorder) {
- getState().targetBorder = targetBorder;
- }
-
- /**
- * Sets the target window height.
- *
- * @param targetHeight
- * the targetHeight to set.
- */
- public void setTargetHeight(int targetHeight) {
- getState().targetHeight = targetHeight;
- }
-
- /**
- * Sets the target window name.
- *
- * @param targetName
- * the targetName to set.
- */
- public void setTargetName(String targetName) {
- getState().target = targetName;
- }
-
- /**
- * Sets the target window width.
- *
- * @param targetWidth
- * the targetWidth to set.
- */
- public void setTargetWidth(int targetWidth) {
- getState().targetWidth = targetWidth;
- }
-
- /**
- * Returns the resource this link opens.
- *
- * @return the Resource.
- */
- public Resource getResource() {
- return getResource(LinkConstants.HREF_RESOURCE);
- }
-
- /**
- * Sets the resource this link opens.
- *
- * @param resource
- * the resource to set.
- */
- public void setResource(Resource resource) {
- setResource(LinkConstants.HREF_RESOURCE, resource);
- }
-
- @Override
- public void readDesign(Element design, DesignContext designContext) {
- super.readDesign(design, designContext);
- if (design.hasAttr("target")) {
- setTargetName(DesignAttributeHandler.getFormatter()
- .parse(design.attr("target"), String.class));
- }
- if (design.hasAttr("href")) {
- setResource(DesignAttributeHandler.getFormatter()
- .parse(design.attr("href"), Resource.class));
- }
- }
-
- @Override
- public void writeDesign(Element design, DesignContext designContext) {
- super.writeDesign(design, designContext);
- Link def = designContext.getDefaultInstance(this);
- DesignAttributeHandler.writeAttribute("target", design.attributes(),
- getTargetName(), def.getTargetName(), String.class,
- designContext);
- DesignAttributeHandler.writeAttribute("href", design.attributes(),
- getResource(), def.getResource(), Resource.class,
- designContext);
- }
-
- @Override
- protected Collection<String> getCustomAttributes() {
- Collection<String> a = super.getCustomAttributes();
- a.add("target-name");
- a.add("resource");
- // Add custom attributes, see #19107
- a.add("target");
- a.add("href");
- return a;
- }
- }
|