Last modified 16 years ago
Last modified on 12/13/08 20:03:45
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
BASE_LAYOUT_R0
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 - 429, 431 and 432
Testing
Comments
Log
Analysis: Pap - done(15m)
Review: 3.5 by Tanya - 15min
Design:
Implementation:
Testing: