List of usage examples for com.google.gwt.user.client.ui SplitterResizedHandler SplitterResizedHandler
SplitterResizedHandler
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); }