[[BackLinksMenu]] [[TicketQuery(summary=BOOK_FULL_SCREEN_MODE_R0, format=table, col=summary|owner|status|type|component|priority|effort|importance, rows=description|analysis_owners|analysis_reviewers|analysis_score|design_owners|design_reviewers|design_score|implementation_owners|implementation_reviewers|implementation_score|test_owners|test_reviewers|test_score|)]] = Analysis = == Overview == Full screen mode shows the currently viewed document (usually it's a book) in full screen. It is useful for presentations. == Task requirements == * In full screen mode only the contents of current document window are displayed. If current document is a book, current page and the bottom bar are displayed. * Left and right flaps and the tab bar are hidden. * Menus are hidden too, but all keyboard shortcuts should work (for example, Ctrl+S should save the book). Invokation: * View menu > Full screen (Create a View menu first) * Keyboard shortcut: * In Sophie 1 F5 or command-option-P is used. * The same shortcut should be used for returning to previous mode. == Task result == The result should be source code. == Implementation idea == * Users should see only the contents of current document window's JInternalFrame. * Create a boolean property fullScreenMode in MainWindow. * (true = full screen mode, false = normal mode) * Create a View menu and a Full Screen menu item. * When selected, the fullScreenMode property is toggled. * Modify the setup methods of each affected visual element - MDMainWindow, DefaultDocumentsDesktop, etc., == Related == * [wiki:BOOK_VIEW_MODES] * [wiki:APP_LAYOUT_MYDOGGY_R0] * [wiki:BASE_LAYOUT_R0] * [wiki:APP_BASIC_MENUS_R0] == How to demo == * Run Sophie2 * Select Full Screen mode * Return to normal mode = Design = * Create a boolean property fullScreenMode in MainWindow. * (true = full screen mode, false = normal mode) * Implement it in DefaultMainWindow. * Create a &View menu in {{{main.app.menus}}}. * Create a &Full Screen menu item in the View menu. * Make the main window's JFrame in full screen when fullScreenMode is true * In MDMainWindow.globalContainer modify the {{{configureFrameSettings(JFrame gcf)}}} method * When fullScreenMode is true: * use {{{gcf.setUndecorated(true)}}} to remove the window title bar, border and all other decorations * resize it to screen's dimensions * move it to the top left corner * Hide/show the left and right flap * .............. * Hide/show the tab bar * in DefaultDocumentsDesktop.swingComponent, setup method, add the tab bar only if fullScreenMode is false. * Maximize current document's window and hide its title bar * in DefaultDocumentWindow.swingComponent, setup method, set different settings for the JInternalFrame * for full screen mode: * {{{res.setMaximum(true);}}} * {{{res.setMaximizable(false);}}} * {{{res.setIconifiable(false);}}} * {{{res.setClosable(false);}}} * {{{res.setResizable(false);}}} * Hide the title bar: {{{ ((BasicInternalFrameUI)res.getUI()).setNorthPane(null); }}} = Implementation = ^(Implementation results should be described and linked here (from the wiki or the repository))^ = Testing = = Comments = It will be nice to have zoom support in full screen mode while presenting. Testers should test situations like these: * Press the keyboard shortcut for full screen mode while dragging a frame. * Press Alt+Tab in full screen mode.