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

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

Introduction

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

Prototype

SplitterResizedHandler

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;/*  www  .j a  v a2  s . 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;//w  w w .  j  a v a  2s .co m

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

From source file:org.rstudio.studio.client.workbench.ui.WorkbenchScreen.java

License:Open Source License

@Inject
public WorkbenchScreen(GlobalDisplay globalDisplay, EventBus eventBus, Session session,
        Provider<PaneManager> pPaneManager, final Edit.Shim edit, Commands commands,
        final Provider<FileMRUList> mruList, FontSizeManager fontSizeManager,
        OptionsLoader.Shim optionsLoader) {

    globalDisplay_ = globalDisplay;/*from   ww w . ja  v a  2  s .c  om*/
    eventBus_ = eventBus;
    session_ = session;
    edit_ = edit;
    optionsLoader_ = optionsLoader;

    if (!BrowseCap.isMacintoshDesktop() || BrowseCap.isCocoaDesktop())
        commands.macPreferences().remove();

    if (!Desktop.isDesktop() || !Desktop.getFrame().supportsFullscreenMode()) {
        commands.toggleFullScreen().remove();
    }

    eventBus_.addHandler(ActivatePaneEvent.TYPE, this);
    eventBus_.addHandler(ShowEditorEvent.TYPE, edit);
    eventBus_.addHandler(ChangeFontSizeEvent.TYPE, new ChangeFontSizeHandler() {
        public void onChangeFontSize(ChangeFontSizeEvent event) {
            FontSizer.setNormalFontSize(Document.get(), event.getFontSize());
            Scheduler.get().scheduleDeferred(new ScheduledCommand() {
                public void execute() {
                    // Causes the console width to be remeasured
                    doOnPaneSizesChanged();
                }
            });
        }
    });
    FontSizer.setNormalFontSize(Document.get(), fontSizeManager.getSize());

    paneManager_ = pPaneManager.get();
    tabsPanel_ = paneManager_.getPanel();
    tabsPanel_.setSize("100%", "100%");
    tabsPanel_.addStyleDependentName("Workbench");

    // Prevent doOnPaneSizesChanged() from being called more than once
    // every N milliseconds. Note that the act of sending the client metrics
    // to the server also has its own buffer, so this one only needs to
    // minimize the expense of doing the calculation, not of sending data to
    // the server.
    paneSizesChangedCommand_ = new TimeBufferedCommand(200) {
        @Override
        protected void performAction(boolean shouldSchedulePassive) {
            assert !shouldSchedulePassive;
            doOnPaneSizesChanged();
        }
    };

    eventBus.addHandler(SessionInitEvent.TYPE, new SessionInitHandler() {
        public void onSessionInit(SessionInitEvent sie) {
            prefetch();
            mruList.get();
        }
    });

    eventBus.addHandler(LastSourceDocClosedEvent.TYPE, new LastSourceDocClosedHandler() {
        public void onLastSourceDocClosed(LastSourceDocClosedEvent event) {
            paneManager_.getSourceLogicalWindow()
                    .onWindowStateChange(new WindowStateChangeEvent(WindowState.HIDE));
        }
    });

    ((PlotsTab) paneManager_.getTab(Tab.Plots)).addResizeHandler(new ResizeHandler() {
        public void onResize(ResizeEvent event) {
            onPaneSizesChanged();
        }
    });
    tabsPanel_.addSplitterResizedHandler(new SplitterResizedHandler() {
        public void onSplitterResized(SplitterResizedEvent event) {
            onPaneSizesChanged();
        }
    });

    // init widget
    initWidget(tabsPanel_);

    commandBinder.bind(commands, this);
}