[[BackLinksMenu]] [[TicketQuery(summary=APP_LAYOUT_ALTERNATIVE_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 == This is a layout implementation made using an alternative docking library(different from !MyDoggy). It is responsible for visualizing the model defined in BASE_LAYOUT. == Task requirements == * Search for an alternative docking library.(one is VLDocking) * Make a Sophie module * It should provide an extension to the corresponding extension point of BASE_LAYOUT lib * It should be able to display the things described in BASE_LAYOUT_R0 * The two layout implementations should be fully replaceable == Task result == The result of this task is source code. == Implementation idea == * Make a class extending !SophieModule * Use available VLDocking code. == Related == [wiki:BASE_LAYOUT_R0][[BR]] [wiki:APP_LAYOUT_MYDOGGY_R0] == How to demo == * Run Sophie 2.0 and show the layout = Design = * Create org.sophie2.layout.vldocking module The new module should depend on org.sophie2.base and org.sophie2.base.layout. It should include all classes related to the concrete !VlDocking layout implementation * Move all existing classes from the messy module which are related to the !VlDocking layout implementation in the new module. * !DockableDesktopScroll * !DockableLayoutElement * Create class !LayoutVlDockingModule which extends !SophieModule and is responsible for the main window to be shown by !VlDocking library. * Create class !VlEngine which implements !LayoutEngine interface (the extension point interface) and provides implementation for the two methods: * show(!MainWindow mainWindow) * hide(!MainWindow mainWindow) * Create class !VlMainWindow which has property mainWindow() for the structure representation of the main window and also properties for every element of this structure. * Create !VlFlap class which should extend !DockableLayoutElement and override the attach(!DockingDesktop desk),detach(!DockingDesktop desk),getDesk() and getDockable() methods. It should have the properties: * flap() used for the Flap structure * tabViews() used for the list of all tab views for this flap * desk() used for the docking desktop where the flap is attached to. If you call set it will attach/detach. * compoundDockable() is the component where the tab views will be attached to. * Create !VlTab class which should extend !DockableLayoutElement and override the attach(!DockingDesktop desk),detach(!DockingDesktop desk),getDesk(), getDockable() and dispose() methods. It should have the properties: * tab() used for the Tab structure * parent() referring to the !VlFlap which is parent of the !VlTab * paletteViews() used for the list of all palettes in the tab. * compoundDockable() is the component where the palette views will be attached to. * Create !VlPalette class which should extend !DockableLayoutElement and override the attach(!DockingDesktop desk),detach(!DockingDesktop desk),getDesk() and getDockable() methods. It should have the properties: * palette() used for the Palette structure (the model) * dockable() is for the dockable component of the palette which will be attached to the compound dockable of the tab. * The demo test org.sophie2.layout.vldocking.!VlDockingDemo.java tests creation, updating, showing and hiding of !VlDockingMainWindow components. = Implementation = * There is a module org.sophie2.layout.vldocking where everything connected with the !VlDocking library is. * Modifications - [changeset:429], [changeset:431] and [changeset:432] = Testing = = Comments = = Log = [[Include(wiki:APP_LAYOUT_ALTERNATIVE_R0_LOG)]]