/* * 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 * is 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. */ package com.smartgwt.sample.showcase.client.tabs; import com.smartgwt.client.types.Side; import com.smartgwt.client.types.TabTitleEditEvent; import com.smartgwt.client.util.SC; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.IButton; import com.smartgwt.client.widgets.Img; import com.smartgwt.client.widgets.events.ClickEvent; import com.smartgwt.client.widgets.events.ClickHandler; import com.smartgwt.client.widgets.layout.HLayout; import com.smartgwt.client.widgets.layout.VLayout; import com.smartgwt.client.widgets.tab.Tab; import com.smartgwt.client.widgets.tab.TabSet; import com.smartgwt.client.widgets.tab.events.CloseClickHandler; import com.smartgwt.client.widgets.tab.events.TabCloseClickEvent; import com.smartgwt.client.widgets.tab.events.TabTitleChangedEvent; import com.smartgwt.client.widgets.tab.events.TabTitleChangedHandler; import com.smartgwt.sample.showcase.client.PanelFactory; import com.smartgwt.sample.showcase.client.ShowcasePanel; public class TabsEditableTitlesSample extends ShowcasePanel { private static final String DESCRIPTION = "Optionally, titles can be directly edited in place by your application's end users. " + "This TabSet specifies canEditTabTitles - double-click a tab title to edit it. Individual tabs can override the TabSet behavior; " + "in this example, the \"Can't change me\" tab has canEditTitle set to false. Your code can cancel the user changes - try editing " + "the \"123-Yellow\" tab to a title that doesn't begin with \"123-\" "; public static class Factory implements PanelFactory { private String id; public Canvas create() { TabsEditableTitlesSample panel = new TabsEditableTitlesSample(); id = panel.getID(); return panel; } public String getID() { return id; } public String getDescription() { return DESCRIPTION; } } public Canvas getViewPanel() { final TabSet tabSet = new TabSet(); tabSet.setTabBarPosition(Side.TOP); tabSet.setTabBarAlign(Side.LEFT); tabSet.setWidth(500); tabSet.setHeight(200); tabSet.setCanEditTabTitles(true); tabSet.setTitleEditEvent(TabTitleEditEvent.DOUBLECLICK); tabSet.setTitleEditorTopOffset(2); Tab tab1 = new Tab("Blue"); tab1.setIcon("pieces/16/pawn_blue.png", 16); tab1.setCanClose(true); Img img1 = new Img("pieces/48/pawn_blue.png", 48, 48); tab1.setPane(img1); Tab tab2 = new Tab("Green"); tab2.setIcon("pieces/16/pawn_green.png", 16); Img img2 = new Img("pieces/48/pawn_green.png", 48, 48); tab2.setPane(img2); final Tab validatedTab = new Tab("123-Yellow"); validatedTab.setIcon("pieces/16/pawn_yellow.png", 16); final Img validatedTabImg = new Img("pieces/48/pawn_yellow.png", 48, 48); validatedTab.setPane(validatedTabImg); final Tab uneditableTab = new Tab("Can't Change Me"); uneditableTab.setIcon("pieces/16/pawn_red.png", 16); uneditableTab.setCanEditTitle(false); Img uneditableTabImg = new Img("pieces/48/pawn_red.png", 48, 48); uneditableTab.setPane(uneditableTabImg); tabSet.addTab(tab1); tabSet.addTab(tab2); tabSet.addTab(validatedTab); tabSet.addTab(uneditableTab); tabSet.addTabTitleChangedHandler(new TabTitleChangedHandler() { @Override public void onTabTitleChanged(TabTitleChangedEvent event) { Tab tab = event.getTab(); if (tab.equals(validatedTab) && (event.getNewTitle() == null || !event.getNewTitle().substring(0, 4).equals("123-"))) { SC.warn("Tab title must start with the prefix \"123-\""); event.cancel(); } } }); return tabSet; } public String getIntro() { return DESCRIPTION; } }