@Inject public WorkbenchScreen( EventBus eventBus, Session session, Provider<PaneManager> pPaneManager, final Edit.Shim edit, Commands commands, final Provider<MRUList> mruList, FontSizeManager fontSizeManager, OptionsLoader.Shim optionsLoader) { eventBus_ = eventBus; session_ = session; edit_ = edit; optionsLoader_ = optionsLoader; 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)); } }); eventBus.addHandler( WorkingDirChangedEvent.TYPE, new WorkingDirChangedHandler() { public void onWorkingDirChanged(WorkingDirChangedEvent event) { updateWorkingDirectory(event.getPath()); } }); ((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); }