import com.google.gwt.user.client.ui.ComplexPanel;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.Widget;
+ import com.google.gwt.user.client.ui.impl.FocusImpl;
import com.vaadin.terminal.gwt.client.ApplicationConnection;
import com.vaadin.terminal.gwt.client.BrowserInfo;
-import com.vaadin.terminal.gwt.client.Paintable;
-import com.vaadin.terminal.gwt.client.RenderInformation;
-import com.vaadin.terminal.gwt.client.RenderSpace;
+import com.vaadin.terminal.gwt.client.ComponentConnector;
+import com.vaadin.terminal.gwt.client.ComponentState;
+import com.vaadin.terminal.gwt.client.ConnectorMap;
+ import com.vaadin.terminal.gwt.client.EventId;
+ import com.vaadin.terminal.gwt.client.Focusable;
import com.vaadin.terminal.gwt.client.TooltipInfo;
import com.vaadin.terminal.gwt.client.UIDL;
import com.vaadin.terminal.gwt.client.Util;
import com.vaadin.terminal.gwt.client.VCaption;
+import com.vaadin.terminal.gwt.client.ui.label.VLabel;
- public class VTabsheet extends VTabsheetBase {
+ public class VTabsheet extends VTabsheetBase implements Focusable,
+ FocusHandler, BlurHandler, KeyDownHandler {
private static class VCloseEvent {
private Tab tab;
// Can't use "style" as it's already in use
public static final String TAB_STYLE_NAME = "tabstyle";
- private final Element tabs; // tabbar and 'scroller' container
+ final Element tabs; // tabbar and 'scroller' container
++ Tab focusedTab;
++ int tabulatorIndex = 0;
++
+ private static final FocusImpl focusImpl = FocusImpl.getFocusImplForPanel();
+
private final Element scroller; // tab-scroller element
private final Element scrollerNext; // tab-scroller next button element
private final Element scrollerPrev; // tab-scroller prev button element
*/
private int scrollerIndex = 0;
-- private final TabBar tb = new TabBar(this);
- private final VTabsheetPanel tp = new VTabsheetPanel();
- private final Element contentNode, deco;
++ final TabBar tb = new TabBar(this);
+ final VTabsheetPanel tp = new VTabsheetPanel();
+ final Element contentNode;
- private String height;
- private String width;
+ private final Element deco;
- private boolean waitingForResponse;
-
- private final RenderInformation renderInformation = new RenderInformation();
+ boolean waitingForResponse;
/**
* Previous visible widget is set invisible with CSS (not display: none, but
*/
private Widget previousVisibleWidget;
- private boolean rendering = false;
-
private String currentStyle;
- private void onTabSelected(final int tabIndex) {
+ /**
+ * @return Whether the tab could be selected or not.
+ */
+ private boolean onTabSelected(final int tabIndex) {
if (disabled || waitingForResponse) {
- return;
+ return false;
}
final Object tabKey = tabKeys.get(tabIndex);
if (disabledTabKeys.contains(tabKey)) {
import com.vaadin.terminal.PaintException;
import com.vaadin.terminal.PaintTarget;
import com.vaadin.terminal.Resource;
+import com.vaadin.terminal.gwt.client.ui.AbstractComponentConnector;
+import com.vaadin.terminal.gwt.client.ui.TabsheetBaseConnector;
+import com.vaadin.terminal.gwt.client.ui.TabsheetConnector;
import com.vaadin.terminal.gwt.client.ui.VTabsheet;
import com.vaadin.terminal.gwt.server.CommunicationManager;
+ import com.vaadin.ui.Component.Focusable;
import com.vaadin.ui.themes.Reindeer;
import com.vaadin.ui.themes.Runo;
* @VERSION@
* @since 3.0
*/
-@SuppressWarnings("serial")
-@ClientWidget(VTabsheet.class)
+@ClientWidget(TabsheetConnector.class)
- public class TabSheet extends AbstractComponentContainer {
+ public class TabSheet extends AbstractComponentContainer implements Focusable,
+ FocusNotifier, BlurNotifier {
/**
* List of component tabs (tab contents). In addition to being on this list,