aboutsummaryrefslogtreecommitdiffstats
path: root/src/com/itmill/toolkit/ui/Link.java
diff options
context:
space:
mode:
authorJoonas Lehtinen <joonas.lehtinen@itmill.com>2006-11-01 09:11:32 +0000
committerJoonas Lehtinen <joonas.lehtinen@itmill.com>2006-11-01 09:11:32 +0000
commit13af8cba414fbb6f02ef458a86c5afcad70c5275 (patch)
tree959ccae1696d9c208124ec3982f166bca6c28f0a /src/com/itmill/toolkit/ui/Link.java
parentde5565e87dc08be0a577c663bb2e009d0838c872 (diff)
downloadvaadin-framework-13af8cba414fbb6f02ef458a86c5afcad70c5275.tar.gz
vaadin-framework-13af8cba414fbb6f02ef458a86c5afcad70c5275.zip
Refactoring: Enably -> IT Mill Toolkit
svn changeset:92/svn branch:toolkit
Diffstat (limited to 'src/com/itmill/toolkit/ui/Link.java')
-rw-r--r--src/com/itmill/toolkit/ui/Link.java256
1 files changed, 256 insertions, 0 deletions
diff --git a/src/com/itmill/toolkit/ui/Link.java b/src/com/itmill/toolkit/ui/Link.java
new file mode 100644
index 0000000000..c09859dcda
--- /dev/null
+++ b/src/com/itmill/toolkit/ui/Link.java
@@ -0,0 +1,256 @@
+/* *************************************************************************
+
+ IT Mill Toolkit
+
+ Development of Browser User Intarfaces Made Easy
+
+ Copyright (C) 2000-2006 IT Mill Ltd
+
+ *************************************************************************
+
+ This product is distributed under commercial license that can be found
+ from the product package on license/license.txt. Use of this product might
+ require purchasing a commercial license from IT Mill Ltd. For guidelines
+ on usage, see license/licensing-guidelines.html
+
+ *************************************************************************
+
+ For more information, contact:
+
+ IT Mill Ltd phone: +358 2 4802 7180
+ Ruukinkatu 2-4 fax: +358 2 4802 7181
+ 20540, Turku email: info@itmill.com
+ Finland company www: www.itmill.com
+
+ Primary source for information and releases: www.itmill.com
+
+ ********************************************************************** */
+
+package com.itmill.toolkit.ui;
+
+import com.itmill.toolkit.terminal.PaintException;
+import com.itmill.toolkit.terminal.PaintTarget;
+import com.itmill.toolkit.terminal.Resource;
+
+/** Link component.
+ * Link is used to create external or internal URL links.
+ *
+ * Internal links can be used to create action items, which
+ * change the state to application to one of the predefined states.
+ * For example, a link can be created for existing MenuTree items.
+ *
+ * @author IT Mill Ltd.
+ * @version @VERSION@
+ * @since 3.0
+ */
+public class Link extends AbstractComponent {
+
+ /* Target window border type constant: No window border */
+ public static final int TARGET_BORDER_NONE = Window.BORDER_NONE;
+ /* Target window border type constant: Minimal window border */
+ public static final int TARGET_BORDER_MINIMAL = Window.BORDER_MINIMAL;
+ /* Target window border type constant: Default window border */
+ public static final int TARGET_BORDER_DEFAULT = Window.BORDER_DEFAULT;
+
+ private Resource resource = null;
+ private Window window = null;
+ private String targetName;
+ private int targetBorder = TARGET_BORDER_DEFAULT;
+ private int targetWidth = -1;
+ private int targetHeight = -1;
+
+ /** Creates a new link. */
+ public Link() {
+
+ }
+ /** Creates a new link to a window. */
+ public Link(Window window) {
+
+ // Set the link caption to match window caption
+ setCaption(window.getCaption());
+
+ // Set the target
+ setTargetName(window.getName());
+
+ setTargetName(window.getName());
+ setTargetWidth(window.getWidth());
+ setTargetHeight(window.getHeight());
+ setTargetBorder(window.getBorder());
+ }
+
+ /** Creates a new instance of Link */
+ public Link(String caption, Resource resource) {
+ setCaption(caption);
+ this.resource = resource;
+ }
+
+ /** Creates a new instance of Link that opens a new window.
+ *
+ *
+ * @param caption 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 Width of the target window.
+ * @param height Height of the target window.
+ * @param border Borget style of the target window.
+ *
+ */
+ public Link(
+ String caption,
+ Resource resource,
+ String targetName,
+ int width,
+ int height,
+ int border) {
+ setCaption(caption);
+ this.resource = resource;
+ setTargetName(targetName);
+ setTargetWidth(width);
+ setTargetHeight(height);
+ setTargetBorder(border);
+ }
+
+ /** Get component UIDL tag.
+ * @return Component UIDL tag as string.
+ */
+ public String getTag() {
+ return "link";
+ }
+
+ /** Paint the content of this component.
+ * @param event PaintEvent.
+ * @throws PaintException The paint operation failed.
+ */
+ public void paintContent(PaintTarget target) throws PaintException {
+
+ if (window != null)
+ target.addAttribute("src", window.getURL().toString());
+ else if (resource != null)
+ target.addAttribute("src", resource);
+ else
+ return;
+
+ // Target window name
+ String name = getTargetName();
+ if (name != null && name.length()>0)
+ target.addAttribute("name", name);
+
+ // Target window size
+ if (getTargetWidth() >= 0)
+ target.addAttribute("width", getTargetWidth());
+ if (getTargetHeight() >= 0)
+ target.addAttribute("height", getTargetHeight());
+
+ // Target window border
+ switch (getTargetBorder()) {
+ case TARGET_BORDER_MINIMAL :
+ target.addAttribute("border", "minimal");
+ break;
+ case TARGET_BORDER_NONE :
+ target.addAttribute("border", "none");
+ break;
+ }
+ }
+
+ /** Returns the target window border.
+ * @return int
+ */
+ public int getTargetBorder() {
+ return targetBorder;
+ }
+
+ /** Returns the target window height or -1 if not set.
+ * @return int
+ */
+ public int getTargetHeight() {
+ return targetHeight < 0 ? -1 : targetHeight;
+ }
+
+ /** Returns the target window name. Empty name of null implies that
+ * the target is opened to the window containing the link.
+ * @return String
+ */
+ public String getTargetName() {
+ return targetName;
+ }
+
+ /** Returns the target window width or -1 if not set.
+ * @return int
+ */
+ public int getTargetWidth() {
+ return targetWidth < 0 ? -1 : targetWidth;
+ }
+
+ /** Sets the border of the target window.
+ * @param targetBorder The targetBorder to set
+ */
+ public void setTargetBorder(int targetBorder) {
+ if (targetBorder == TARGET_BORDER_DEFAULT
+ || targetBorder == TARGET_BORDER_MINIMAL
+ || targetBorder == TARGET_BORDER_NONE) {
+ this.targetBorder = targetBorder;
+ requestRepaint();
+ }
+ }
+
+ /** Sets the target window height.
+ * @param targetHeight The targetHeight to set
+ */
+ public void setTargetHeight(int targetHeight) {
+ this.targetHeight = targetHeight;
+ requestRepaint();
+ }
+
+ /** Sets the target window name.
+ * @param targetName The targetName to set
+ */
+ public void setTargetName(String targetName) {
+ this.targetName = targetName;
+ requestRepaint();
+ }
+
+ /** Sets the target window width.
+ * @param targetWidth The targetWidth to set
+ */
+ public void setTargetWidth(int targetWidth) {
+ this.targetWidth = targetWidth;
+ requestRepaint();
+ }
+ /** Returns the resource this link opens.
+ * @return Resource
+ */
+ public Resource getResource() {
+ return resource;
+ }
+
+ /** Returns the window this link opens.
+ * @return Window
+ */
+ public Window getWindow() {
+ return window;
+ }
+
+ /** Sets the resource this link opens.
+ * @param resource The resource to set
+ */
+ public void setResource(Resource resource) {
+ this.resource = resource;
+ if (resource != null) {
+ window = null;
+ }
+ requestRepaint();
+ }
+
+ /** Sets the window this link opens.
+ * @param window The window to set
+ */
+ public void setWindow(Window window) {
+ this.window = window;
+ if (window != null) {
+ this.resource = null;
+ }
+ requestRepaint();
+ }
+
+}