ScrollableTabSupport(int tabPlacement) {
      viewport = new ScrollableTabViewport();
      tabPanel = new ScrollableTabPanel();
      viewport.setView(tabPanel);
      viewport.addChangeListener(this);

      scrollForwardButton = createScrollableTabButton(EAST);
      scrollBackwardButton = createScrollableTabButton(WEST);
      //			scrollForwardButton = new ScrollableTabButton(EAST);
      //			scrollBackwardButton = new ScrollableTabButton(WEST);
    }
 public String toString() {
   return new String(
       "viewport.viewSize="
           + viewport.getViewSize()
           + "\n"
           + "viewport.viewRectangle="
           + viewport.getViewRect()
           + "\n"
           + "leadingTabIndex="
           + leadingTabIndex
           + "\n"
           + "tabViewPosition="
           + tabViewPosition);
 }
    public void scrollForward(int tabPlacement) {
      Dimension viewSize = viewport.getViewSize();
      Rectangle viewRect = viewport.getViewRect();

      if (tabPlacement == TOP || tabPlacement == BOTTOM) {
        if (viewRect.width >= viewSize.width - viewRect.x) {
          return; // no room left to scroll
        }
      } else { // tabPlacement == LEFT || tabPlacement == RIGHT
        if (viewRect.height >= viewSize.height - viewRect.y) {
          return;
        }
      }
      setLeadingTabIndex(tabPlacement, leadingTabIndex + 1);
    }
    public void setLeadingTabIndex(int tabPlacement, int index) {
      leadingTabIndex = index;
      Dimension viewSize = viewport.getViewSize();
      Rectangle viewRect = viewport.getViewRect();

      tabViewPosition.x = leadingTabIndex == 0 ? 0 : rects[leadingTabIndex].x;

      if ((viewSize.width - tabViewPosition.x) < viewRect.width) {
        // We've scrolled to the end, so adjust the viewport size
        // to ensure the view position remains aligned on a tab boundary
        Dimension extentSize = new Dimension(viewSize.width - tabViewPosition.x, viewRect.height);
        viewport.setExtentSize(extentSize);
      }

      viewport.setViewPosition(tabViewPosition);
    }