= Analysis = == Overview == Book windows are responsible for displaying books, and book controls. They reside into the main application window. Each book window has it's own tab in the Opened Books Tabbar. == Task requirements == * Book window behavior. * Each !BookWindow is responsible for displaying a single book. * At the time of creation of a window it is bound to a book. * It is then responsible for displaying the current page of the book. * This is done through the extension connected to the !PageArea extension point (if such is present). * Define extension points for: * !BookBottomPanelElement - an element controlling single aspect of the view * Create an !OpenOffice diagram to show the base view of book window == Task result == The result of this task should be source code and an !OpenOffice diagram. == Implementation idea == * Revise the exiting !BookView code * Extend !SophieExtensionPoint class for the extension points == Related == [wiki:BOOK_WINDOW_R0] [[BR]] [wiki:BOOK_BOTTOM_PANEL_R0] [[BR]] [wiki:PAGE_SELECTOR_R0] [[BR]] == How to demo == * Run Sophie2 and show the window. = Design = This is the implemented wiki page: [wiki:BOOK_WINDOW] The !BookView contains a !BookPanel. Every element of the !BookPanel should be defined as an extension of the panel. These include: * !NavigationPanel - contains the previous button, next button and the page number area. * !QuickSearchPanel - contains the search text field, next and previous buttons for next and previous search-matches. * !ShowFrameCheckBoxPanel - contains the 'show frame borders checkbox'. * !ReaderModeCheckBoxPanel - contains the 'reader mode checkbox'. The !SophieExtensions that give the panel its elements are as follows: * new !SimpleSophieExtension(!PanelElementProvider.class, new !NavigationProvider()), * new !SimpleSophieExtension(!PanelElementProvider.class, new !QuickSearchProvider()), * new !SimpleSophieExtension(!PanelElementProvider.class, new !ReaderModeProvider()), * new !SimpleSophieExtension(!PanelElementProvider.class, new !ShowFramesProvider()) Provided these extensions and the corresponding !SophieExtensionPoint the !BookPanel creates the four sub-panels from the !PanelElementProvider. The panels are then added to a !ListPropety and after that the property is iterated and its elements added to the swing component of the !BookPanel. Note: The things described are still in the messy module. They should be extracted in different module. = Implementation = * done according to design. => [source:/trunk/sophie2-platform/modules/org.sophie2.messy/src/main/java/org/sophie2/messy/view/book@396 book package] = Testing = == User documentation == [wiki:ITERATION_04/Release/UserDocumentation/02_WorkingWithSophie/07_BookWindows] == Release documentation == (when you make a new book the book has a window.) == Manual tests == 17 === Main tests === [http://sophie2.org/testlink/index.php Testlink test ids:] 17 === Related tests === [http://sophie2.org/testlink/index.php Testlink test ids:] (none so far) == Reported bugs == ^Give links to the tickets of the bugs found during testing^ = Log = [[Include(wiki:UNPLANNED_BOOK_WINDOW_R0_LOG)]]