package org.vaadin.smartgwt.server.tab;
import org.vaadin.smartgwt.server.Canvas;
import org.vaadin.smartgwt.server.core.ComponentPropertyPainter;
import org.vaadin.smartgwt.server.core.ComponentReference;
import org.vaadin.smartgwt.server.core.RefDataClass;
import org.vaadin.smartgwt.server.menu.Menu;
import com.vaadin.terminal.PaintException;
import com.vaadin.terminal.PaintTarget;
/*
* Smart GWT (GWT for SmartClient)
* Copyright 2008 and beyond, Isomorphic Software, Inc.
*
* Smart GWT is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License version 3
* as published by the Free Software Foundation. Smart GWT is also
* available under typical commercial license terms - see
* http://smartclient.com/license
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*/
//@formatter:off
/**
* Tabs are specified as objects, not class instances. For example, when
* developing in JavaScript, a typical initialization block for a TabSet would look like
* this:
* <pre>
* TabSet.create({
* tabs: [
* {title: "tab1", pane: "pane1"},
* {title: "tab2"}
* ]
* });
* </pre>
* And in XML:
* <pre>
* <TabSet>
* <tabs>
* <Tab title="tab1" pane="pane1"/>
* <Tab title="tab2"/>
* </tabs>
* </TabSet>
* </pre>
*/
@com.vaadin.ui.ClientWidget(org.vaadin.smartgwt.client.ui.tab.VTab.class)
public class Tab extends RefDataClass { // implements com.smartgwt.client.widgets.tab.events.HasTabDeselectedHandlers, com.smartgwt.client.widgets.tab.events.HasTabSelectedHandlers {
// public static Tab getOrCreateRef(JavaScriptObject jsObj) {
// if(jsObj == null) return null;
// RefDataClass obj = RefDataClass.getRef(jsObj);
// if(obj != null) {
// obj.setJsObj(jsObj);
// return (Tab) obj;
// } else {
// return new Tab(jsObj);
// }
// }
// public Tab(){
// setID(com.smartgwt.client.util.SC.generateID(getClass().getName()));
// }
// public Tab(JavaScriptObject jsObj){
// super(jsObj);
// }
// ********************* Properties / Attributes ***********************
/**
* Determines whether this tab should show an icon allowing the user to dismiss the tab by clicking on it directly. The URL
* for this icon's image will be derived from {@link com.smartgwt.client.widgets.tab.TabSet#getCloseTabIcon closeTabIcon}
* by default, but may be overridden by explicitly specifying {@link com.smartgwt.client.widgets.tab.Tab#getCloseIcon
* closeIcon}. <P> If unset, this property is derived from {@link com.smartgwt.client.widgets.tab.TabSet#getCanCloseTabs
* canCloseTabs}
*
* @param canClose canClose Default value is null
* @see com.smartgwt.client.widgets.tab.TabSet#closeClick
* @see <a href="http://www.smartclient.com/smartgwt/showcase/#layout_tabs_closeable" target="examples">Closeable Tabs Example</a>
*/
public void setCanClose(Boolean canClose) {
setAttribute("canClose", canClose);
}
/**
* Determines whether this tab should show an icon allowing the user to dismiss the tab by clicking on it directly. The URL
* for this icon's image will be derived from {@link com.smartgwt.client.widgets.tab.TabSet#getCloseTabIcon closeTabIcon}
* by default, but may be overridden by explicitly specifying {@link com.smartgwt.client.widgets.tab.Tab#getCloseIcon
* closeIcon}. <P> If unset, this property is derived from {@link com.smartgwt.client.widgets.tab.TabSet#getCanCloseTabs
* canCloseTabs}
*
*
* @return Boolean
* @see com.smartgwt.client.widgets.tab.TabSet#closeClick
* @see <a href="http://www.smartclient.com/smartgwt/showcase/#layout_tabs_closeable" target="examples">Closeable Tabs Example</a>
*/
public Boolean getCanClose() {
return getAttributeAsBoolean("canClose");
}
/**
* If specified, overrides the {@link com.smartgwt.client.widgets.tab.TabSet#getCanEditTabTitles canEditTabTitles} setting,
* for this one tab only.
*
* @param canEditTitle canEditTitle Default value is null
* @see com.smartgwt.client.widgets.tab.TabSet#setCanEditTabTitles
*/
public void setCanEditTitle(Boolean canEditTitle) {
setAttribute("canEditTitle", canEditTitle);
}
/**
* If specified, overrides the {@link com.smartgwt.client.widgets.tab.TabSet#getCanEditTabTitles canEditTabTitles} setting,
* for this one tab only.
*
*
* @return Boolean
* @see com.smartgwt.client.widgets.tab.TabSet#getCanEditTabTitles
*/
public Boolean getCanEditTitle() {
return getAttributeAsBoolean("canEditTitle");
}
/**
* Custom src for the close icon for this tab to display if it is closeable. See {@link
* com.smartgwt.client.widgets.tab.Tab#getCanClose canClose} and {@link
* com.smartgwt.client.widgets.tab.TabSet#getCanCloseTabs canCloseTabs}.
*
* @param closeIcon closeIcon Default value is null
*/
public void setCloseIcon(String closeIcon) {
setAttribute("closeIcon", closeIcon);
}
/**
* Custom src for the close icon for this tab to display if it is closeable. See {@link
* com.smartgwt.client.widgets.tab.Tab#getCanClose canClose} and {@link
* com.smartgwt.client.widgets.tab.TabSet#getCanCloseTabs canCloseTabs}.
*
*
* @return String
*/
public String getCloseIcon() {
return getAttributeAsString("closeIcon");
}
/**
* Size of the {@link com.smartgwt.client.widgets.tab.Tab#getCloseIcon closeIcon} for this tab. If unspecified the icon
* will be sized according to {@link com.smartgwt.client.widgets.tab.TabSet#getCloseTabIconSize closeTabIconSize}
*
* @param closeIconSize closeIconSize Default value is null
*/
public void setCloseIconSize(Integer closeIconSize) {
setAttribute("closeIconSize", closeIconSize);
}
/**
* Size of the {@link com.smartgwt.client.widgets.tab.Tab#getCloseIcon closeIcon} for this tab. If unspecified the icon
* will be sized according to {@link com.smartgwt.client.widgets.tab.TabSet#getCloseTabIconSize closeTabIconSize}
*
*
* @return Integer
*/
public Integer getCloseIconSize() {
return getAttributeAsInt("closeIconSize");
}
/**
* If {@link com.smartgwt.client.widgets.tab.Tab#getIcon icon} is specified, this property may be used to specify a size
* for the icon
*
* @param iconHeight iconHeight Default value is null
*/
public void setIconHeight(Integer iconHeight) {
setAttribute("iconHeight", iconHeight);
}
/**
* If {@link com.smartgwt.client.widgets.tab.Tab#getIcon icon} is specified, this property may be used to specify a size
* for the icon
*
*
* @return Integer
*/
public Integer getIconHeight() {
return getAttributeAsInt("iconHeight");
}
/**
* If {@link com.smartgwt.client.widgets.tab.Tab#getIcon icon} is specified, this property may be used to specify a size
* for the icon. Per side sizing may be specified instead via {@link com.smartgwt.client.widgets.tab.Tab#getIconWidth
* iconWidth} and {@link com.smartgwt.client.widgets.tab.Tab#getIconHeight iconHeight}.
*
* @param iconSize iconSize Default value is null
*/
public void setIconSize(Integer iconSize) {
setAttribute("iconSize", iconSize);
}
/**
* If {@link com.smartgwt.client.widgets.tab.Tab#getIcon icon} is specified, this property may be used to specify a size
* for the icon. Per side sizing may be specified instead via {@link com.smartgwt.client.widgets.tab.Tab#getIconWidth
* iconWidth} and {@link com.smartgwt.client.widgets.tab.Tab#getIconHeight iconHeight}.
*
*
* @return Integer
*/
public Integer getIconSize() {
return getAttributeAsInt("iconSize");
}
/**
* If {@link com.smartgwt.client.widgets.tab.Tab#getIcon icon} is specified, this property may be used to specify a size
* for the icon
*
* @param iconWidth iconWidth Default value is null
*/
public void setIconWidth(Integer iconWidth) {
setAttribute("iconWidth", iconWidth);
}
/**
* If {@link com.smartgwt.client.widgets.tab.Tab#getIcon icon} is specified, this property may be used to specify a size
* for the icon
*
*
* @return Integer
*/
public Integer getIconWidth() {
return getAttributeAsInt("iconWidth");
}
/**
* If {@link com.smartgwt.client.widgets.tab.TabSet#getShowTabPicker showTabPicker} is true for this TabSet, if set this
* property will determine the title of the picker menu item for this tab. If unset, {@link
* com.smartgwt.client.widgets.tab.Tab#getTitle title} will be used instead
*
* @param pickerTitle pickerTitle Default value is null
* @see com.smartgwt.client.widgets.tab.TabSet#setShowTabPicker
* @see com.smartgwt.client.widgets.tab.Tab#setTitle
*/
public void setPickerTitle(String pickerTitle) {
setAttribute("pickerTitle", pickerTitle);
}
/**
* If {@link com.smartgwt.client.widgets.tab.TabSet#getShowTabPicker showTabPicker} is true for this TabSet, if set this
* property will determine the title of the picker menu item for this tab. If unset, {@link
* com.smartgwt.client.widgets.tab.Tab#getTitle title} will be used instead
*
*
* @return String
* @see com.smartgwt.client.widgets.tab.TabSet#getShowTabPicker
* @see com.smartgwt.client.widgets.tab.Tab#getTitle
*/
public String getPickerTitle() {
return getAttributeAsString("pickerTitle");
}
/**
* Specifies the prompt to be displayed when the mouse hovers over the tab.
*
* @param prompt prompt Default value is null
*/
public void setPrompt(String prompt) {
setAttribute("prompt", prompt);
}
/**
* Specifies the prompt to be displayed when the mouse hovers over the tab.
*
*
* @return String
*/
public String getPrompt() {
return getAttributeAsString("prompt");
}
/**
* You can specify an explicit width for the tab using this property. Note that tabs automatically size to make room for
* the full title, but if you want to e.g. specify a uniform width for all tabs in a TabSet, this property enables you to
* do so.
*
* @param width width Default value is 100
*/
// public void setWidth(int width) {
// setAttribute("width", width);
// }
/**
* You can specify an explicit width for the tab using this property. Note that tabs automatically size to make room for
* the full title, but if you want to e.g. specify a uniform width for all tabs in a TabSet, this property enables you to
* do so.
*
*
* @return int
*/
// public int getWidth() {
// return getAttributeAsInt("width");
// }
// ********************* Methods ***********************
// /**
// * Add a tabDeselected handler.
// * <p>
// * Optional handler to fire when a tab is deselected. Returning false will cancel the new selection, leaving this tab
// * selected. As with {@link com.smartgwt.client.widgets.tab.TabSet#addTabSelectedHandler TabSet.tabSelected} this method
// * only fires when the tabset is drawn.
// *
// * @param handler the tabDeselected handler
// * @return {@link HandlerRegistration} used to remove this handler
// */
// public HandlerRegistration addTabDeselectedHandler(com.smartgwt.client.widgets.tab.events.TabDeselectedHandler handler) {
// if(getHandlerCount(com.smartgwt.client.widgets.tab.events.TabDeselectedEvent.getType()) == 0) setupTabDeselectedEvent();
// return doAddHandler(handler, com.smartgwt.client.widgets.tab.events.TabDeselectedEvent.getType());
// }
//
// private native void setupTabDeselectedEvent() /*-{
// var obj = null;
// obj = this.@com.smartgwt.client.core.DataClass::getJsObj()();
// var selfJ = this;
// obj.tabDeselected = $debox($entry(function(){
// var param = {"tabSet" : arguments[0], "tabNum" : arguments[1], "tabPane" : arguments[2], "ID" : arguments[3], "tab" : arguments[4], "newTab" : arguments[5]};
// var event = @com.smartgwt.client.widgets.tab.events.TabDeselectedEvent::new(Lcom/google/gwt/core/client/JavaScriptObject;)(param);
// selfJ.@com.smartgwt.client.core.DataClass::fireEvent(Lcom/google/gwt/event/shared/GwtEvent;)(event);
// var ret = event.@com.smartgwt.client.event.Cancellable::isCancelled()();
// return !ret;
// }));
// }-*/;
// /**
// * Add a tabSelected handler.
// * <p>
// * Optional handler to fire when a tab is selected. As with {@link
// * com.smartgwt.client.widgets.tab.TabSet#addTabSelectedHandler TabSet.tabSelected} this method only fires when the tabset
// * is drawn.
// *
// * @param handler the tabSelected handler
// * @return {@link HandlerRegistration} used to remove this handler
// */
// public HandlerRegistration addTabSelectedHandler(com.smartgwt.client.widgets.tab.events.TabSelectedHandler handler) {
// if(getHandlerCount(com.smartgwt.client.widgets.tab.events.TabSelectedEvent.getType()) == 0) setupTabSelectedEvent();
// return doAddHandler(handler, com.smartgwt.client.widgets.tab.events.TabSelectedEvent.getType());
// }
//
// private native void setupTabSelectedEvent() /*-{
// var obj = null;
// obj = this.@com.smartgwt.client.core.DataClass::getJsObj()();
// var selfJ = this;
// obj.tabSelected = $entry(function(){
// var param = {"tabSet" : arguments[0], "tabNum" : arguments[1], "tabPane" : arguments[2], "ID" : arguments[3], "tab" : arguments[4]};
// var event = @com.smartgwt.client.widgets.tab.events.TabSelectedEvent::new(Lcom/google/gwt/core/client/JavaScriptObject;)(param);
// selfJ.@com.smartgwt.client.core.DataClass::fireEvent(Lcom/google/gwt/event/shared/GwtEvent;)(event);
// });
// }-*/;
// ********************* Static Methods ***********************
// ***********************************************************
// /**
// * Optional ID for the tab, which can later be used to reference the tab. APIs requiring a reference to a tab will accept
// * the tabs ID [including {@link com.smartgwt.client.widgets.tab.TabSet#selectTab TabSet.selectTab}, {@link
// * com.smartgwt.client.widgets.tab.TabSet#updateTab TabSet.updateTab}, {@link
// * com.smartgwt.client.widgets.tab.TabSet#removeTab TabSet.removeTab}].<br> The ID will also be passed to the {@link
// * com.smartgwt.client.widgets.tab.TabSet#addTabSelectedHandler TabSet.tabSelected} and {@link
// * com.smartgwt.client.widgets.tab.TabSet#addTabDeselectedHandler TabSet.tabDeselected} handler functions, if specified.
// * <p> Note that if you provide an ID, it must be globally unique.
// *
// * @param ID ID Default value is null
// */
// public void setID(String ID) {
// IDManager.isValidID(ID);
// setAttribute("ID", ID);
// }
//
// /**
// * Optional ID for the tab, which can later be used to reference the tab. APIs requiring a reference to a tab will accept
// * the tabs ID [including {@link com.smartgwt.client.widgets.tab.TabSet#selectTab TabSet.selectTab}, {@link
// * com.smartgwt.client.widgets.tab.TabSet#updateTab TabSet.updateTab}, {@link
// * com.smartgwt.client.widgets.tab.TabSet#removeTab TabSet.removeTab}].<br> The ID will also be passed to the {@link
// * com.smartgwt.client.widgets.tab.TabSet#addTabSelectedHandler TabSet.tabSelected} and {@link
// * com.smartgwt.client.widgets.tab.TabSet#addTabDeselectedHandler TabSet.tabDeselected} handler functions, if specified.
// * <p> Note that if you provide an ID, it must be globally unique.
// *
// *
// * @return String
// */
// public String getID() {
// return getAttributeAsString("ID");
// }
// /**
// * Specifies the title of the this tab. To change the title after the TabSet has been created, call {@link
// * com.smartgwt.client.widgets.tab.TabSet#setTabTitle TabSet.setTabTitle}.
// *
// * @param title title Default value is null
// */
// public void setTitle(String title) {
// if(tabSet == null || !tabSet.isDrawn()) {
// setAttribute("title", title);
// } else {
// tabSet.setTabTitle(this, title);
// }
// }
//
// /**
// * Specifies the title of the this tab.
// *
// * @return String
// */
// public String getTitle() {
// if(tabSet == null || !tabSet.isDrawn()) {
// return getAttributeAsString("title");
// } else {
// return tabSet.getTab(getID()).getAttributeAsString("title");
// }
// }
//
// /**
// * If specified, this tab will initially be rendered in a disabled state.
// *
// * @param disabled disabled Default value is null
// */
// public void setDisabled(boolean disabled) {
// if(tabSet == null || !tabSet.isDrawn()) {
// setAttribute("disabled", disabled);
// } else {
// if(disabled) {
// tabSet.disableTab(getID());
// } else {
// tabSet.enableTab(getID());
// }
// }
// }
//
// /**
// * If specified, this tab will initially be rendered in a disabled state. To enable or disable tabs on the fly use the
// * {@link com.smartgwt.client.widgets.tab.TabSet#enableTab TabSet.enableTab}, and {@link
// * com.smartgwt.client.widgets.tab.TabSet#disableTab TabSet.disableTab} methods.
// *
// *
// * @return Boolean
// */
// public Boolean getDisabled() {
// if(tabSet == null || !tabSet.isDrawn()) {
// return getAttributeAsBoolean("disabled");
// } else {
// return tabSet.getTab(getID()).getAttributeAsBoolean("disabled");
// }
// }
//
// /**
// * If specified, this tab will show an icon next to the tab title. Note that as with {@link
// * com.smartgwt.client.widgets.Button#getIcon icon}, the URL of a tabs icon will be updated to reflect disabled state.<br>
// * If desired a click handler may be assigned to the icon, which will be fired when the user clicks the tab. This method
// * takes a single parameter <code>tab</code>, a pointer to the tab object.
// *
// * @param icon icon Default value is null
// * @see <a href="http://www.smartclient.com/smartgwt/showcase/#layout_tabs_orientation" target="examples">Orientation Example</a>
// */
// public void setIcon(String icon) {
// if(tabSet == null || !tabSet.isDrawn()) {
// setAttribute("icon", icon);
// } else {
// tabSet.setTabIcon(getID(), icon);
// }
// }
//
// /**
// * If specified, this tab will show an icon next to the tab title. Note that as with {@link
// * com.smartgwt.client.widgets.Button#getIcon icon}, the URL of a tabs icon will be updated to reflect disabled state.<br>
// * If desired a click handler may be assigned to the icon, which will be fired when the user clicks the tab. This method
// * takes a single parameter <code>tab</code>, a pointer to the tab object.
// *
// * @param icon icon Default value is null
// * @param iconWidth the icon width
// * @param iconHeight the icon height
// * @see <a href="http://www.smartclient.com/smartgwt/showcase/#layout_tabs_orientation" target="examples">Orientation Example</a>
// */
// public void setIcon(String icon, int iconWidth, int iconHeight) {
// setIcon(icon);
// setIconWidth(iconWidth);
// setIconHeight(iconHeight);
// }
//
// /**
// * If specified, this tab will show an icon next to the tab title. Note that as with {@link
// * com.smartgwt.client.widgets.Button#getIcon icon}, the URL of a tabs icon will be updated to reflect disabled state.<br>
// * If desired a click handler may be assigned to the icon, which will be fired when the user clicks the tab. This method
// * takes a single parameter <code>tab</code>, a pointer to the tab object.
// *
// * @param icon icon Default value is null
// * @param iconSize the icon size
// * @see <a href="http://www.smartclient.com/smartgwt/showcase/#layout_tabs_orientation" target="examples">Orientation Example</a>
// */
// public void setIcon(String icon, int iconSize) {
// setIcon(icon);
// setIconSize(iconSize);
// }
//
// /**
// * If specified, this tab will show an icon next to the tab title. Note that as with {@link
// * com.smartgwt.client.widgets.Button#getIcon icon}, the URL of a tabs icon will be updated to reflect disabled state.<br>
// * If desired a click handler may be assigned to the icon, which will be fired when the user clicks the tab. This method
// * takes a single parameter <code>tab</code>, a pointer to the tab object.
// *
// *
// * @return String
// * @see <a href="http://www.smartclient.com/smartgwt/showcase/#layout_tabs_orientation" target="examples">Orientation Example</a>
// */
// public String getIcon() {
// if(tabSet == null || !tabSet.isDrawn()) {
// return getAttributeAsString("icon");
// } else {
// return tabSet.getTab(getID()).getAttributeAsString("icon");
// }
// }
public void setCanClose(boolean canClose) {
setAttribute("canClose", canClose);
}
public void setPaneID(String paneID) {
setAttribute("pane", paneID);
}
/**
* Provide a separate style for the title text. If set and the ImgTab is vertical, a "v" will be automatically
* prepended to the style name (hence "tabTitle" -> "vtabTitle").
*
* @param titleStyle the title style
*/
public void setTitleStyle(String titleStyle) {
setAttribute("titleStyle", titleStyle);
}
/**
* A separate style for the title text. If set and the ImgTab is vertical, a "v" will be automatically
* prepended to the style name (hence "tabTitle" -> "vtabTitle").
*
* @return the title style
*/
public String getTitleStyle() {
return getAttribute("titleStyle");
}
// /**
// * Specifies the pane associated with this tab. You can change the pane associated with a given tab after the TabSet
// * has been created by calling {@link com.smartgwt.client.widgets.tab.TabSet#updateTab(int, com.smartgwt.client.widgets.Canvas)}
// *
// * @param pane the tab pane
// */
// public void setPane(Canvas pane) {
// if (tabSet == null || !tabSet.isCreated()) {
// setAttribute("pane", pane.getOrCreateJsObj());
// } else {
// tabSet.updateTab(this, pane);
// }
// }
// /**
// * The pane associated with the tab.
// *
// * @return the tab pane
// */
// public Canvas getPane() {
// return Canvas.getOrCreateRef(getAttributeAsJavaScriptObject("pane"));
// }
/**
* Context menu to show for this tab.
*
* @param contextMenu contextMenu Default value is null
*/
public void setContextMenu(Menu contextMenu) {
setAttribute("contextMenu", contextMenu.getOrCreateJsObj());
}
/**
* Context menu to show for this object, an instance of the Menu widget.
*
* @return Menu
*/
// public Menu getContextMenu() {
// return Menu.getOrCreateRef(getAttributeAsJavaScriptObject("contextMenu"));
// }
private TabSet tabSet;
public TabSet getTabSet() {
return tabSet;
}
public void setTabSet(TabSet tabSet) {
this.tabSet = tabSet;
}
// private static boolean isTab(JavaScriptObject jsObj) {
// Object ref = JSOHelper.getAttributeAsObject((JavaScriptObject) jsObj, SC.REF);
// return ref instanceof Tab;
// }
// private static TabSet getTabSet(JavaScriptObject jsObj) {
// Object ref = JSOHelper.getAttributeAsObject((JavaScriptObject) jsObj, SC.REF);
// if(ref instanceof Tab) {
// return ((Tab) ref).getTabSet();
// } else {
// return null;
// }
// }
//
// /**
// * Returns the live Canvas used to represent this tab in a tabSet.
// * Will return null if this Tab has not been added to a TabSet or if the tabset is not yet drawn.
// * <P>
// * The underlying SmartClient class of the returned canvas depends on {@link #getUseSimpleTabs}.
// * If this property is false, the returned canvas will be a {@link com.smartgwt.client.widgets.tab.ImgTab}
// * instance. If true the canvas will be a {@link com.smartgwt.client.widgets.tab.Button} instance.
// * Note that you can make use of ImgTab APIs by using the <code>getJsObj()</code> and <code>create()</code>
// * APIs to "cast" to the appropriate type - for example:<br>
// * <code>ImgTab liveTab = ImgTab.create(myTabSet.getTabCanvas(2).getJsObj());</code>
// * @return live Canvas for this tab in a tabSet.
// */
// public StatefulCanvas getTabCanvas () {
// if (tabSet == null) return null;
// JavaScriptObject canvasJS = this.getTabCanvasJS(tabSet.getJsObj(), this.getJsObj());
// if (canvasJS == null) return null;
//
// return StatefulCanvas.getOrCreateRef(canvasJS);
// }
// private native JavaScriptObject getTabCanvasJS (JavaScriptObject tabSet, JavaScriptObject tabConfig) /*-{
// if (tabSet == null || tabConfig == null) return null;
// var tab = tabSet.getTab(tabConfig);
// if ($wnd.isc.isA.Canvas(tab)) return tab;
// return null;
// }-*/;
// @formatter:on
// Vaadin integration
private final ComponentPropertyPainter propertyPainter = new ComponentPropertyPainter(this);
private final ComponentReference<Canvas> pane = propertyPainter.addProperty("pane");
private Tab() {
}
public Tab(String title) {
setTitle(title);
}
public Tab(String title, String icon) {
setTitle(title);
setIcon(icon);
}
/**
* Specifies the pane associated with this tab. You can change the pane associated with a given tab after the TabSet has been created by calling
* {@link com.smartgwt.client.widgets.tab.TabSet#updateTab(int, com.smartgwt.client.widgets.Canvas)}
*
* @param pane
* the tab pane
*/
public void setPane(Canvas pane) {
this.pane.set(pane);
}
/**
* The pane associated with the tab.
*
* @return the tab pane
*/
public Canvas getPane() {
return this.pane.get();
}
/**
* If specified, this tab will show an icon next to the tab title. Note that as with {@link com.smartgwt.client.widgets.Button#getIcon icon}, the URL of a
* tabs icon will be updated to reflect disabled state.<br>
* If desired a click handler may be assigned to the icon, which will be fired when the user clicks the tab. This method takes a single parameter
* <code>tab</code>, a pointer to the tab object.
*
* @param icon
* icon Default value is null
* @see <a href="http://www.smartclient.com/smartgwt/showcase/#layout_tabs_orientation" target="examples">Orientation Example</a>
*/
public void setIcon(String icon) {
setAttribute("icon", icon);
}
public void setTitle(String title) {
// if(tabSet == null || !tabSet.isDrawn()) {
setAttribute("title", title);
// } else {
// tabSet.setTabTitle(this, title);
// }
}
@Override
public void paintContent(PaintTarget target) throws PaintException {
propertyPainter.paintContent(target);
super.paintContent(target);
}
}