]> source.dussan.org Git - vaadin-framework.git/commitdiff
Reverted accidental commit
authorJohannes Dahlström <johannes.dahlstrom@vaadin.com>
Mon, 2 Apr 2012 13:35:44 +0000 (13:35 +0000)
committerJohannes Dahlström <johannes.dahlstrom@vaadin.com>
Mon, 2 Apr 2012 13:35:44 +0000 (13:35 +0000)
svn changeset:23384/svn branch:6.8

src/com/vaadin/terminal/gwt/client/ui/VTabsheet.java

index 918ab19173cb6821b6c8476aa8c7240ea7082c74..b77203532f4a78fc5d45549589ac83d135f7d395 100644 (file)
@@ -414,10 +414,6 @@ public class VTabsheet extends VTabsheetBase implements Focusable,
         public void onClick(ClickEvent event) {
             Widget caption = (Widget) event.getSource();
             int index = getWidgetIndex(caption.getParent());
-            // IE needs explicit focus()
-            if (BrowserInfo.get().isIE()) {
-                getTabsheet().focus();
-            }
             getTabsheet().onTabSelected(index);
         }
 
@@ -598,20 +594,18 @@ public class VTabsheet extends VTabsheetBase implements Focusable,
      * @return Whether the tab could be selected or not.
      */
     private boolean onTabSelected(final int tabIndex) {
-        Tab tab = tb.getTab(tabIndex);
-        if (client == null || disabled || waitingForResponse) {
+        if (disabled || waitingForResponse) {
             return false;
         }
-        if (!tab.isEnabledOnServer() || tab.isHiddenOnServer()) {
+        final Object tabKey = tabKeys.get(tabIndex);
+        if (disabledTabKeys.contains(tabKey)) {
             return false;
         }
-        if (activeTabIndex != tabIndex) {
+        if (client != null && activeTabIndex != tabIndex) {
             tb.selectTab(tabIndex);
 
-            // If this TabSheet already has focus, set the new selected tab
-            // as focused.
             if (focusedTab != null) {
-                focusedTab = tab;
+                focusedTab = tb.getTab(tabIndex);
             }
 
             addStyleDependentName("loading");
@@ -628,10 +622,10 @@ public class VTabsheet extends VTabsheetBase implements Focusable,
                 }
             });
             waitingForResponse = true;
+
+            return true;
         }
-        // Note that we return true when tabIndex == activeTabIndex; the active
-        // tab could be selected, it's just a no-op.
-        return true;
+        return false;
     }
 
     public ApplicationConnection getApplicationConnection() {
@@ -1202,11 +1196,6 @@ public class VTabsheet extends VTabsheetBase implements Focusable,
                 - (isScrolledTabs() ? scroller.getOffsetWidth() : 0);
     }
 
-    private boolean isClipped(Tab tab) {
-        return tab.getAbsoluteLeft() + tab.getOffsetWidth() > getAbsoluteLeft()
-                + getOffsetWidth() - scroller.getOffsetWidth();
-    }
-
     @Override
     protected void clearPaintables() {
 
@@ -1345,83 +1334,60 @@ public class VTabsheet extends VTabsheetBase implements Focusable,
             int keycode = event.getNativeEvent().getKeyCode();
 
             if (keycode == getPreviousTabKey()) {
-                selectPreviousTab();
+                int newTabIndex = activeTabIndex;
+                // Find the previous non-disabled tab with wraparound.
+                do {
+                    newTabIndex = (newTabIndex != 0) ? newTabIndex - 1 : tb
+                            .getTabCount() - 1;
+                } while (newTabIndex != activeTabIndex
+                        && !onTabSelected(newTabIndex));
+                activeTabIndex = newTabIndex;
+
+                // Tab scrolling
+                if (isScrolledTabs()) {
+                    int newFirstIndex = tb.scrollLeft(scrollerIndex);
+                    if (newFirstIndex != -1) {
+                        scrollerIndex = newFirstIndex;
+                        updateTabScroller();
+                    }
+                }
+
             } else if (keycode == getNextTabKey()) {
-                selectNextTab();
+                int newTabIndex = activeTabIndex;
+                // Find the next non-disabled tab with wraparound.
+                do {
+                    newTabIndex = (newTabIndex + 1) % tb.getTabCount();
+                } while (newTabIndex != activeTabIndex
+                        && !onTabSelected(newTabIndex));
+                activeTabIndex = newTabIndex;
+
+                if (isClippedTabs()) {
+                    int newFirstIndex = tb.scrollRight(scrollerIndex);
+                    if (newFirstIndex != -1) {
+                        scrollerIndex = newFirstIndex;
+                        updateTabScroller();
+                    }
+                }
+
             } else if (keycode == getCloseTabKey()) {
                 Tab tab = tb.getTab(activeTabIndex);
                 if (tab.isClosable()) {
                     tab.onClose();
+                    removeTab(activeTabIndex);
                 }
             }
         }
     }
 
-    /**
-     * @return The key code of the keyboard shortcut that selects the previous
-     *         tab in a focused tabsheet.
-     */
     protected int getPreviousTabKey() {
         return KeyCodes.KEY_LEFT;
     }
 
-    /**
-     * @return The key code of the keyboard shortcut that selects the next tab
-     *         in a focused tabsheet.
-     */
     protected int getNextTabKey() {
         return KeyCodes.KEY_RIGHT;
     }
 
-    /**
-     * @return The key code of the keyboard shortcut that closes the currently
-     *         selected tab in a focused tabsheet.
-     */
     protected int getCloseTabKey() {
         return KeyCodes.KEY_DELETE;
     }
-
-    private void selectPreviousTab() {
-        int newTabIndex = activeTabIndex;
-        // Find the previous visible and enabled tab if any.
-        do {
-            newTabIndex--;
-        } while (newTabIndex >= 0 && !onTabSelected(newTabIndex));
-
-        if (newTabIndex >= 0) {
-            activeTabIndex = newTabIndex;
-            if (isScrolledTabs()) {
-                // Scroll until the new active tab is visible
-                int newScrollerIndex = scrollerIndex;
-                while (tb.getTab(activeTabIndex).getAbsoluteLeft() < getAbsoluteLeft()
-                        && newScrollerIndex != -1) {
-                    newScrollerIndex = tb.scrollLeft(newScrollerIndex);
-                }
-                scrollerIndex = newScrollerIndex;
-                updateTabScroller();
-            }
-        }
-    }
-
-    private void selectNextTab() {
-        int newTabIndex = activeTabIndex;
-        // Find the next visible and enabled tab if any.
-        do {
-            newTabIndex++;
-        } while (newTabIndex < getTabCount() && !onTabSelected(newTabIndex));
-
-        if (newTabIndex < getTabCount()) {
-            activeTabIndex = newTabIndex;
-            if (isClippedTabs()) {
-                // Scroll until the new active tab is completely visible
-                int newScrollerIndex = scrollerIndex;
-                while (isClipped(tb.getTab(activeTabIndex))
-                        && newScrollerIndex != -1) {
-                    newScrollerIndex = tb.scrollRight(newScrollerIndex);
-                }
-                scrollerIndex = newScrollerIndex;
-                updateTabScroller();
-            }
-        }
-    }
 }