Last modified 14 years ago Last modified on 03/19/09 13:13:56

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

Error: Macro TicketQuery(summary=OPEN_BOOKS_TABBAR_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



should have a tab for each open document and a show desktop button like what is in gnome

The opened books tabbar displays the opened books under the Menu Bar. Its is located between the right and left flap and is expanded when they are moved or hid.

  • On the left side of the bar is located the "show desktop" button which minimizes all the books.
  • The books are displayed there in the order of opening starting from the left side of the bar.
  • The book buttons can be dragged on the tabbar to change displaying order
  • Navigation buttons appear when the tabbar width is not enough to show all of the book buttons.
  • The tabbar supports right click. The right click menus are the following:
    • When clicked on a button of the book the menu items are:
      • Minimize - Hides the current book window. It can be shown again via clicking the button in the tabbar or Restore button.
      • Restore - Restore Reduces the book window to the size of the book. If both width and height are bigger than the work area, the book window reduces to the work area including the book title bar. If the book window was previously restored and it's window was resized, it's restored to this position and size.
      • Maximize - maximizes the book window - the book title bar is not shown and takes the whole work area. (Minimize, restore, maximize) are inactive when needed.
      • Close All but Active - Closes all of the opened book windows but the active one. Forces the Save Message box where needed.
      • Close - Closes the current book window. Forces the Save Message box if needed.
    • When right-clicked on empty area of the tabbar the menu items are:
      • Minimize/Restore All - When not all of the book windows are minimized, the minimize menu item appears. When not all book windows are restored, the restore all options appears. Minimize all acts just like the minimize but for all opened books. Menu items (Minimize, restore, maximize) are inactive when needed.
      • Cascade
      • Tile
      • Close All but Active - Same as mentioned before.
      • Close All - Same as mentioned above.

Task requirements

  • Create the tab bar
  • Create the "Show Desktop" button.
  • Connect the existing functionality from the Window menu with the menu items.
  • Create proper extension points and extensions for the menus and menu items.
  • Implement the navigation buttons and they appearance/disappearance.
  • If there is time remaining, implement some non-existing (non-present in Sophie2 right now) features from the overview of this task.
    • At least, make the menu items without the functionality.

Task result

The result of this task is source code.

Implementation idea

The tabbar. source:/trunk/sophie2-platform/doc/spec-diagrams/TabBar.png
The tabbar full with buttons. source:/trunk/sophie2-platform/doc/spec-diagrams/TabBarFull.png
The right click menu (on empty area). source:/trunk/sophie2-platform/doc/spec-diagrams/TabBarMenu.png
The right click menu (on a button). source:/trunk/sophie2-platform/doc/spec-diagrams/TabBarMenuButton.png


How to demo

Show the tabbar and working features.


  • Tabbar will contain buttons and each button will correspond to an open book from the Documents Window.
  • Tabbar is to be shown in the Documents Desktop.
    • Add Own property in the Documents Desktop interface.
  • Create class TabBar that should extend BaseSwingVisualElement. All of the buttons of the tabbar will be put in its swing component.
  • Add AppTabBar class in org.sophie2.main.view module which will be the tabbar of the application.
  • Create class PopupMenu in org.sophie2.base.menus which will be the menu that will appear when the right button of the mouse is pressed.
  • Create class AppTabBarMenu in org.sophie2.main.view.menus which will be the menu that will appear when the right button of the mouse is pressed over the Tabbar.
  • MenuItems are added through an extension point.
  • Add showDesktop property in AppTabBar.
  • Create method minimizeFrames() in DesktopPane for minimizing all open internal frames.
  • Navigation buttons will be implemented next revision.




  • Navigation Buttons are postponed for the next revision. --kyli@2009-03-19