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); }