Example usage for com.google.gwt.user.client.ui SplitterBeforeResizeHandler SplitterBeforeResizeHandler

List of usage examples for com.google.gwt.user.client.ui SplitterBeforeResizeHandler SplitterBeforeResizeHandler

Introduction

In this page you can find the example usage for com.google.gwt.user.client.ui SplitterBeforeResizeHandler SplitterBeforeResizeHandler.

Prototype

SplitterBeforeResizeHandler

Source Link

Usage

From source file:org.rstudio.core.client.layout.DualWindowLayoutPanel.java

License:Open Source License

public DualWindowLayoutPanel(final EventBus eventBus, final LogicalWindow windowA, final LogicalWindow windowB,
        Session session, String clientStateKeyName, final WindowState topWindowDefaultState,
        final int defaultSplitterPos) {
    windowA_ = windowA;//  w  w w. ja v a 2s  .  c  om
    windowB_ = windowB;
    session_ = session;
    setSize("100%", "100%");
    layout_ = new BinarySplitLayoutPanel(new Widget[] { windowA.getNormal(), windowA.getMinimized(),
            windowB.getNormal(), windowB.getMinimized() }, 3);
    layout_.setSize("100%", "100%");

    topWindowStateChangeManager_ = new WindowStateChangeManager(session);
    bottomWindowStateChangeManager_ = new WindowStateChangeHandler() {
        public void onWindowStateChange(WindowStateChangeEvent event) {
            WindowState topState;
            switch (event.getNewState()) {
            case NORMAL:
                topState = NORMAL;
                break;
            case MAXIMIZE:
                topState = MINIMIZE;
                break;
            case MINIMIZE:
                topState = MAXIMIZE;
                break;
            case HIDE:
                topState = EXCLUSIVE;
                break;
            case EXCLUSIVE:
                topState = HIDE;
                break;
            default:
                throw new IllegalArgumentException("Unknown WindowState " + event.getNewState());
            }
            windowA_.onWindowStateChange(new WindowStateChangeEvent(topState));
        }
    };

    hookEvents();

    new WindowLayoutStateValue(session.getSessionInfo().getClientState(), clientStateKeyName,
            topWindowDefaultState, defaultSplitterPos);

    setWidget(layout_);

    if (eventBus != null) {
        layout_.addSplitterBeforeResizeHandler(new SplitterBeforeResizeHandler() {
            public void onSplitterBeforeResize(SplitterBeforeResizeEvent event) {
                // If the splitter ends up causing a minimize operation, then
                // we'll need to have saved the normal height for when the
                // user decides to restore the panel.
                snapMinimizeNormalHeight_ = new NormalHeight(layout_.getSplitterBottom(),
                        layout_.getOffsetHeight(), Window.getClientHeight());

                eventBus.fireEvent(new GlassVisibilityEvent(true));
            }
        });
        layout_.addSplitterResizedHandler(new SplitterResizedHandler() {
            public void onSplitterResized(SplitterResizedEvent event) {
                WindowState topState = resizePanes(layout_.getSplitterBottom());

                // we're already in normal if the splitter is being invoked
                if (topState != WindowState.NORMAL) {
                    topWindowStateChangeManager_.onWindowStateChange(new WindowStateChangeEvent(topState));
                }

                eventBus.fireEvent(new GlassVisibilityEvent(false));
            }
        });
    }
}

From source file:org.rstudio.studio.client.common.NotifyingSplitLayoutPanel.java

License:Open Source License

@Inject
public NotifyingSplitLayoutPanel(int splitterSize, EventBus events) {
    super(splitterSize);

    events_ = events;/*from   www. j a va  2 s. c  om*/

    addSplitterBeforeResizeHandler(new SplitterBeforeResizeHandler() {
        public void onSplitterBeforeResize(SplitterBeforeResizeEvent event) {
            events_.fireEvent(new GlassVisibilityEvent(true));
        }
    });

    addSplitterResizedHandler(new SplitterResizedHandler() {
        public void onSplitterResized(SplitterResizedEvent event) {
            events_.fireEvent(new GlassVisibilityEvent(false));
        }
    });
}