wiki:APP_LAYOUT_ALTERNATIVE_R0
Last modified 16 years ago Last modified on 12/13/08 20:03:45

Error: Macro BackLinksMenu(None) failed
compressed data is corrupt

Error: Macro 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|) failed
current transaction is aborted, commands ignored until end of transaction block

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.

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: