Version 1.1.0

Version 1.1.0p1 is available.

I’ve deprecated some interfaces and methods, and added a few new features.

Supporing JDesktopPane/JInternalFrame
See the example /basics/core/JDesktopPane in the tutorials-project.

Filters for SingleCDockableFactory
A SingleCDockableFactory can now create more than just one Dockable. If you want you can structure your application such that there is only one factory.

See the example /basics/common/SingleCDocakbleFactory in the tutorials-project.

Updated Combiner
The Combiner is responsible for merging Dockables if the user drops one Dockable over another, e.g. by creating a StackDockStation. The interface is now more general.
Have a look in this thread to see how a Combiner can be replaced, e.g. with a Combiner that creates a SplitDockStation instead of a StackDockStation.

[ul]
[li] API: SingleCDockableBackupFactory replaced by SingleCDockableFactory
[/li][li] API: CControl now supports filters for SingleCDockableFactories. With a filter one factory can create many Dockables. There is no longer a need to know all of the identifiers that were used when storing a layout.
[/li] MultipleCDockableFactory will not receive such support: clients with content that changes can already use the factories layout-object to implement their own filtering/backup mechanism.
[li] API: DefaultFlapWindowFactory now detects JDesktopPanes and automatically uses a JInternalDialog instead of a JDialog as window for the FlapDockStation.
[/li][li] API: Added support for JDesktopPane and JInternalFrames. The FlapDockStation will automatically detect them, for the ScreenDockStation special factories and strategies have to be set (the Internal… classes).
[/li][li] API: Changed the interface “Combiner”. The interface has now much more control of how two Dockables are going to be merged, it can now also paint on the station to help the user understand of what is going to happen once the mouse is released
[/li][*] API: Added “SplitCombiner”, a Combiner that creates SplitDockStations instead of StackDockStations. [/ul]

Version 1.1.0p2 is available.

Perspectives
The layout (location, size and relations of Dockables and DockStations) is available in different formats: on one hand there are the Dockables and DockStations themselves. Then the layout can be stored as xml-file or as binary-file. Finally there is a special intermediate format used to convert one format into another format.

With version 1.1.0p2 a new format has been added to the group: perspectives. Perspectives are designed to set up a layout in source code without the need to create any Dockables or DockStations. While some basic algorithms are stored in the Core project, the whole API is clearly aimed at clients that are using the Common project.

Some interfaces needed new methods to support perspectives. If a client does not use perspectives, then these methods can safely be ignored (e.g. just throw an exception as implementation).

There are three examples in the “tutorial” project, all stored in “Guide/Common”. They should explain enough details to fully utilize the new API.

Have a look at the method “CControl.getPerspectives()”, it is the entry point into the perspective-API.

Changes
[ul]
[li]! API: PlaceholderList is now abstract and has more generic arguments. There are two new subclasses: DockablePlaceholderList and PerspectivePlaceholderList.
[/li][li]! API: DockFactory has additional methods and generic arguments to deal with PerspectiveElements
[/li][li]! API: various classes and interfaces needed new generic parameters or needed to be made abstract in order to implement the perspective mechanism. Clients should not be affected (much) by these changes as these classes/interfaces are mostly used in a layer that is not interesting for clients.
[/li][li]- API: New perspective API in Core and Common: an additional view of the layout. This one can be easily modified through source code.
[/li][li]- API: Many PreferenceModels now grant access to the Preference objects such that clients can modify them directly
[/li][li]- API: CControl.initExternalizeArea can now be overriden by clients to create a custom ScreenDockStation for externalized items
[/li][li]- Bugfix: DockFrontend no longer stores the same Dockable twice if root-stations are nested
[/li][li]! API: Common now stores the identifier of the working-area which owns a SingleCDockable and changes the working-area property when loading a layout. This is necessary for perspectives which would otherwise work very unintuitive.
[/li][li]- Bugfix: The history of the location of a MultipleCDockable is now loaded and applied but only if the MultipleCDockable can be created while loading a persistent layout.
[/li][li]- API: MultipleCDockables now also use placeholders. However, all placeholders for a MultipleCDockable are removed if the MultipleCDockable is closed (unless the MissingCDockableStrategy tells otherwise)
[/li][li]- Bugfix: ScreenDockStation and its strategies now properly support multi monitor environments (I hope, at least on my test machine). The default BoundaryRestriction is now “MEDIUM” instead of “FREE”.
[/li][/ul]

Version 1.1.0p3 is available.

Theme Properties Management
In this version management of the properties that are related to the DockTheme has been updated. A new class called “ThemeManager” is now responsible for distributing the properties. See “DockController.getThemeManager”. Components of the framework no longer access the DockTheme directly, but ask the ThemeManager for a property. That allows the ThemeManager to replace or modify properties.

Clients can use the ThemeManager to override properties without the need of subclassing or even accessing the DockTheme. Further more, since the ThemeManager is based on the UIProperties (also known from the ColorManager and the FontManager), clients can better tell which component is using which property. In other words: clients can replace/modify properties depending on the location where they will be used, this allows much more flexibility than the old system.

There are two new properties, also managed by the ThemeManager, the “BackgroundPaint” and the “BorderModifier”.
Almost all Components of the framework use instances of “BackgroundPaint” to paint their content. With BackgroundPaint clients can create pseudo-transparent applications, like the example “BackgroundExample” (Basics/Core/Background) in the tutorial project proves. See also the attachment to this post.
Almost all Components do no longer set Borders directly, but first contact a “BorderModifer” which may modify the Border. This allows clients to replace most borders without the need to subclass or even access the component which paints the border.

Note: The SecureXYZ-classes did not get an update to support these new properties because these classes will become obsolete in the next release anyways.

Other stuff
There have been some bugfixes and CGridPerspective behaves a bit more intuitive. There is still work required for the perspective API.

Changes
[ul]
[li] ! API: UIProperties now depend on an UIScheme. Basically the UIScheme is a self filling map and UIProperties acts as (mutable) cache. ColorScheme now depends on UIScheme and several methods that were related to ColorScheme got obsolete and were removed.
[/li][li] - API: DockTheme is now managed by a specialized class ThemeManager and no longer by DockController.
[/li][li] ! API: While the interface DockTheme was not changed, many of its methods should no longer be invoked directly. Instead the ThemeManager and the DockProperties should be used.
[/li][li] - Bugfix: DefaultCControlRegister, adding a CContentArea did not have any effect.
[/li][li] - Bugfix: changing properties like maximizeable of a CDockable did not update the actions
[/li][li] - Bugfix: did run FindBug and found some bugs of lesser importance
[/li][li] - API: New interface BackgroundPaint allows clients to paint the background of the Components of this framework
[/li][li] - Bugfix: several bugs related to perspectives
[/li][li] - API: CGridPerspective now initializes its grid with content and support placeholders
[/li][li] - API: New border “ScreenDockWindowBorder” for windows of a ScreenDockStation. The new border gives a visual feedback to the user whether he currently is hovering or dragging the window. Colors can be replaced throught the ColorManager, and the entire border can be replaced as well.
[/li][li] - API: New interface BorderModifier allows clients to replace most of the borders of the framework (see also ThemeManager)
[/li][li] - Bugfix: MediumBoundaryRestriction ensure that a window has a size of at least 100x50, this prevents a window from disappearing because it is too small
[/li][li] - Bugfix: CDockables keep focus when extended mode changes
[/li][/ul]

Future
There are two goals for the next release:
[ul]
[li]The perspective API needs some more work and testing.
[/li][li]It is time to get rid of the SecureXYZ-classes. Instead of using different classes in normal applications and applets, there will be a property to switch the behavior.
[/li][/ul]

Version 1.1.0p4

Restricted Environment
All the classes from the “secure” package are now obsolete. Instead there is a PropertyKey “DockController.RESTRICTED_ENVIRONMENT” (also available through DockController.set/getSecureEnvironment) which allows to enable/disable restricted environment.

From now on every application that runs as application also runs as applet or in webstart without the need for any modification.

Focus
Focus management has been updated. There is now an interface FocusController. The VetoFocusListener is now added to this controller instead of the MouseFocusObserver.

There is also a new interface “FocusStrategy” that tells what Component to focus on a Dockable. The default strategy tries to focus the last focused Component (focus stays at the same place if possible). Clients can change the strategy through FocusController.setStrategy. Unfortunatelly the focus is not yet transfered correctly in all situations.

Button-title
One of the more visible changes: the button-title shown on a FlapDockStation has been updated. The exact behavior of the button can be modified through the property “FlapDockStation.BUTTON_CONTENT” (the enumeration ButtonContent is now a class and offers more options).

If a DockStation is a child of a FlapDockStation, then the button-title shows now a button for each Dockable of that child DockStation. Clicking the button will focus the Dockable.

Groups
The new CGroupBehavior (CControl.setGroupBehavior) allows CDockables to be grouped. Grouped Dockables stick together, e.g. if one Dockable is minimized so are the others. The default behavior assumes that all Dockables on the same StackDockStation belong together.

Full list
[ul]
[li]! API: There is a new property “restricted environment” in DockController. If that property is set to true, then the framework configures itself such that it can run in a restricted environment like an applet. All the Secure… classes have been rendered obsolete due to this new property. The obsolete classes will remain for this version in the framework to keep backwards compatibility, they will however be removed in the next version.
[/li][li]! API: SplitDockStationFactory now stores whether the SplitDockStation did have a fullscreen-action or not. The method SplitDockStationFactory.createStation has been modified.
[/li][li]! API: renamed classes/interfaces/methods:
[/li] FocusController -> VisibilityFocusObserver,
DockController.getFocusObserver -> DockController.getMouseFocusObserver
new interface “FocusController”
[li]! API: FocusVetoListener is now added to FocusController instead of MouseFocusObserver and will now be asked to veto a focus change for any change that is initialized by the framework itself.
[/li][li]- API: New interface FocusStrategy allows the framework to select a special Component of a Dockable to receive the focus
[/li][li]- API: CDockable has new method “getFocusComponent”, AbstractCDockable has new method “setFocusDockable”. With these methods a FocusStrategy decides which component to focus when focus is transfered to a CDockable
[/li][li]- API: Due to the new DefaultFocusStrategy focusing is now more pretictable: a click on a title or tab means that the framework tries to focus the previously focused Component (on the selected Dockable) again.
[/li][li]! API: The enum “FlapDockStation.ButtonContent” is now defined as class “ButtonContent” in its own file. The old constants remain and clients only have to update their imports.
[/li][li]- API: The button-title of a FlapDockStation now supports DockStations: one button is painted for each child, pressing that button will focus the child. The button also support drag and drop operations.
[/li][li]! API: The preferences have been updated to handle the additional options for button-titles: the ButtonContentPreference got replaced by ButtonContentPreferenceModel
[/li][li]- Bugfix: GlassedPane now also check the extended modifiers of MouseEvents and resets its internal state if no button is pressed. Even if some MouseEvents are not properly delivered (e.g. due to a popup-menu opening) the user can continue working by moving around the mouse a bit.
[/li][li]- Bugfix: Several smaller, non critical issues regarding colors, borders and the position of components
[/li][li]- API: The new CGroupBehavior allows clients to group CDockables: grouped CDockables will usually stick together when the user changes the ExtendedMode of one Dockable. The user still can grab the title of one Dockable and drag it away from the others. The StackGroupBehavior is installed as default behavior.
[/li][li]- API: There is now a default icon set of all Dockables and DockStations. The icon can be changed using the PropertyKeys “PropertyKey.DOCKABLE_ICON” and “PropertyKey.DOCK_STATION_ICON”.
[/li][/ul]

Version 1.1.0p5

Text
All the strings that are used by the framework are now collected in the “TextManager” (DockController#getTexts()). Through the TextManager any string can be replaced by clients at any time.

Location and visibility
There is a new method “Dockable#isDockableVisisble” and “CDockable#isDockableVisible” which can tell whether a Dockable is visible to the user.

The “DockStationListener” has an additional method “dockablesRepositioned” which gets informed as soon as a the internal layout of a DockStation changes.

The new listener “DockableStateListener” can be added to a Dockable and receives events whenever the location or visibility changes.

The new listener “CDockableLocationListener” can be added to a CDockable and receives events whenever the location or visibility changes.

Plans for Version 1.1.0p5a and Version 1.1.0p6
All features planed for 1.1.0 are implemented. The next releases are dedicated to bugfixes and updating the documentation. Therefore a feature freeze is declared, and only changes with a very good rationale will make it into the next release. If everything works out as planed :o) the final version 1.1.0 will be ready in about a 4-6 weeks.

Detailed list of changes
[ul]
[li]! API: The IconManager now extends UIProperties, all the icons of the framework must now be accessed through the class “DockIcon” (which is an UIValue).
[/li][li]! API: Icons are now only handled by the IconManager. Both DockUI (Core project) and Resources (Common project) no longer handle any icons. The Common project no longer makes a distingtion between “local” and “foreign” icons.
[/li][li]! Bugfix: The unique identifiers of SplitNodes (a node used by a SplitDockStation) are now checked when a new node is inserted into the tree. The unique identifier of parent nodes may be changed to ensure the identifiers really are unique.
[/li][li]! APi: All the strings that are used by the framework are now collected by the TextManager, which is yet another UIProperties.
[/li][li]! API: DockStationListener has an additional method “dockableRepositioned”
[/li][li]- API: A new listener DockableStateListener can be added to Dockables, the listener receives notifications for events related to changed layouts
[/li][li]- API: Calling ©Dockable.setTitleIcon( null ) now makes the icon invisible, and does no longer restore the default icon.
[/li][li]- Bugfix: Layout could not be stored in byte-array format due to a NullPointerException
[/li][li]- API: CAction and CDecorateableAction are no longer an abstract class as there was no reason to keep them abstract
[/li][li]- API: MenuPieces now have a method “bind” and “unbind” which are automatically called if the root-menu is shown or hidden (see Component.isShown()).
[/li][li]- API: RootMenuPiece now accepts a parent in order to handle “bind” und “unbind” correctly.
[/li][li]! API: The class “bibliothek.gui.dock.support.util.Resources” has been removed. The TextManager now is responsible for all the strings. The bundle is now loaded in CControl.initTexts using a DefaultTextScheme.
[/li][li]- API: FrontendSettingsList now orders its items alphabetically
[/li][li]- Bugfix: Deutsche Übersetzung aktualisiert (German translation updated)
[/li][li]- Bugfix: FocusController now does not select a (more or less) random Component if the caller indicates that Swing itself will issue a focus request in the future. This means that clicking on the dropdown-button of a JCombobBox will not close the popup again because focus is transfered.
[/li][li]! API: CDockableStateListener no longer has one method for each ExtendedMode, instead one method handles all possible ExtendedModes. Clients can extend CDockableAdapter to keep the old API.
[/li][li]- Bugfix: Some StationPaints did not properly use the colors from the ColorManager
[/li][li]- Bugfix: CGlassStationPaint was not applied when using the Glass extension
[/li][li]- API: The new CDockableLocationListener can be used to observe location and visibility (to the user) of a CDockable
[/li][/ul]

Version 1.1.0p6

This version contains bugfixes and not much more.

Stack of minimized dockables
Common: the “normalize” button is now shown for a stack of minimized dockables, the other buttons are hidden. This default behavior can be changed through the CGroupBehavior (which actions may be shown), the ButtonContent (enable actions at all, enabled filtering actions) and the ButtonContentFilter (filters the actions)

[v1.1.0p5a]
[ul]
[li]- Bugfix: StackDockStation and FlapDockStation did not fire dockablesRepositioned if its content was only moved
[/li][/ul]

[v1.1.0p5b]
[ul]
! API: DockSituation can now use a PlaceholderStrategy to load the intermediate format and another strategy to load the final DockElements. The DockFactories had to be modified in order to allow this.
[li]- Bugfix: In Common, placeholders are no longer removed in the intermediate layout
[/li][li]- Bugfix: The FocusStrategy can now decide whether to transfer focus if the user clicked on a non-focusable Component or not. Currently focus is not transfered if the user clicked on a JComboBox
[/li][li]- API: The content-pane of a Dockable is no longer focusable
[/li][/ul]

[v1.1.0p5c]
[ul]
[li]- Bugfix: Perspectives did ignore the “ignoreChildren” tag. DockFactories did throw NPE if called with a perspective that has the “ignoreChildren” tag set to true.
[/li][li]- API: Additional method “isWorkingArea” in “CStationPerspective”.
[/li][li]! API: DockRelocator has two additional methods “getRemote” and “getDirectRemote” with a parameter “forceDrag”. If that parameter is true, then a DnD operation can be forced to start.
[/li][li]- Bugfix: NoStackTheme.Meta, field “meta” was never set.
[/li][/ul]

[v1.1.0p6]
[ul]
[li]- Bugfix: CombinerTarget is created earlier on SplitDockStation in order to allow the Combiner to paint the DnD operation
[/li][li]- Bugfix: Merger can now also be applied on a move operation. The child DockStation in a merge operation only gets removed from its parent if the parent is not the parent DockStation of the operation
[/li][li]! API: CGroupBehavior now creates a CGroupMovement and does not execute its changes directly
[/li][li]! API: CMaximizedBehavior and all associated methods have been removed, the ordinary CGroupBehavior can now perform all necessary tasks
[/li][li]- Bugfix: Maximizing a minimized CDockable on a stack now maximizes the entire stack
[/li][li]- Bugfix: Externalizing a minimized CDockable that has no size makes now sure that the window has a minimum size and (if possible) is not placed at 0/0
[/li][li]- API: Actions of the button of a FlapDockStation can be filtered through the ButtonContent and the ButtonContentFilter. The default implementation will show any action that has the annotation ButtonContentAction.
[/li][li]- API: A stack of minimized CDockable now shows the “normalize” button per default. The exact behavior of which buttons are visible can be configured through the CGroupBehavior, the ButtonContent and the ButtonContentFilter.
[/li][li]- Bugfix: Reordering the children of a dockable DockStation that is shown on a FlapDockStation now also reorders the actions on the button.
[/li][/ul]

Version 1.1.0p6a

Only some small changes, I started to re-read the guides and updating them - something I really don’t like to do…

[v1.1.0p6a]
[ul]
[li]- Bugfix: focus is no longer lost if maximizing a Dockable by pressing ctrl+m
[/li][li]- API: New DefaultFrontendPerspectiveCache, a default implementation of the interface FrontendPerspectiveCache
[/li][li]- Bugfix: Glass Extension now also works if Common is not in the classpath
[/li][li]- Bugfix: The default behavior of CControl was to set always “secure environment = false”. The parameter is now set to the correct value depending on the environment in which an application runs.
[/li][li]- Bugfix: Common, tabs are no longer reordered when maximizing or unmaximizing a stack of Dockables
[/li][li]- Bugfix: FlapDockStation on JDesktopPane, invalid window remembers state and informs FlapDockStation that it cannot be used any longer. This prevents a bug where Dockables were selected but did not show up.
[/li][li]- Bugfix: A NPE was thrown when applying Nimbus and other LookAndFeels
[/li][li]! API: Several methods removed from DockUI including the LocaleListener (this functionality was replaced by the TextManager)
[/li][li]! API: Removed the class Resources in Common (this functionality was replaced by the TextManager)
[/li][/ul]

Version 1.1.0p6c

[ul]
[li] Bugfix: a missing placeholder could result in a NPE due to an array that was not filled up.
[/li][li] Warning: a warning will be printed if a client changes the layout of a DockStation from within a listener. The warning can be disabled either by calling DockUtilities.disableCheckLayoutLock or by using the annotation LayoutLocked.
[/li][/ul]

Version 1.1.0p6d

[ul]
[li]- API: while changing the hierarchy of Dockables and DockStations there is now a lock which prevents concurrent modifications. The lock is called “DockHierarchyLock” and can be acquired by calling DockController.getHierarchyLock. Clients can temporarily disable the lock.
[/li][li]- Bugfix: it is now much harder to remove a CDockable from its working-area by putting it into a stack and moving it around together with this stack
[/li][li]- Bugfix: PlaceholderList did throw NPE when reading an entry with no placeholders and no dockable
[/li][li]- Bugfix: SingleParentRemover now also performs a check when elements have been added, this way invalid new DockStations can be found as well.
[/li][li]- Bugfix: Some CLocations did return a wrong result on “findProperty”.
[/li][/ul]

Version 1.1.0p6e

[ul]
[li] - API: missing getter methods for various CLocations
[/li][li] - Bugfix: CLocation.findProperty should now be consistent for all properties
[/li][li] ! API: renamed method in StackDockComponentParent to prevent conflicts with methods in other interfaces but with the same signature
[/li][li] - API: StackDockStation now sets itself as parent of a Dockable after it has registered the child on itself
[/li][/ul]

Version 1.1.0p7

The end is near :slight_smile: , the Guide for Core is updated and in a presentable version.

I added a way to load perspectives in Common without the need to install root stations first. Missing root CStationPerspectives can now be created by the MissingPerspectiveStategy. This requires some additional data in the layout-files and thus will not work with old layouts. The default setup will handle all the CStations that are implemented in the framework.

[ul]
[li]- API: Added methods to DockHierarchyLock that allow code to be executed directly after the lock has been released.
[/li][li]- API: Added MissingPerspectiveStrategy to CControl, this allows clients to create missing CStationPerspectives
[/li][li]- Bugfix: If a CStationPerspective is missing in a CPerspective, then no NPE will be thrown when loading a layout. Instead the data for the missing station will silently be dropped.
[/li][li]- Bugfix: Making a CDockable visible when a DockAcceptance forbids the location of the CDockable will force the CDockable to appear on the default DockStation - even if that station is forbidden by the DockAcceptance as well.
[/li][li]! API: CControlFactory has now to create CommonStations instead of DockStations.
[/li][li]! API: CommonStation no longer extends CommonDockable, all DockStations used by the Common framework now implement CommonStation
[/li][li]! API: New interface CommonElement, changed the types of several methods in CommonStation/CommonDockable, added generics. The type system should now enforce the correct implementation of all the different methods.
[/li][li]- API: CContentArea is now based on CGridArea and CMinimizedArea which greatly reduces complexity
[/li][li]! API: AdjacentDockFactorys can now also write meta data for PerspectiveElements
[/li][li]- Bugfix: changing the LookAndFeel now again updates all the colors
[/li][li]- Bugfix: Colors.brighter did make a color darker
[/li][/ul]

Version 1.1.0p7a

[ul]
[li]- Bugfix: location of center area of CContentArea is no longer null
[/li][/ul]

Version 1.1.0p7b

I apologize for the bugs I introduced in the last version(s) and hope your work was not interrupted too much. I will be a bit more careful in the future.

[ul]
[li]- Bugfix: DockFrontend.isShown is now more accurate and no longer delayed until all events concerning the DockRegister have been fired. This fixes an issue concerning CLocations that got ignored.
[/li][li]- Bugfix: CContentArea now properly initializes its MinimizeStation and no NPE is thrown when minimizing a CDockable
[/li][li]- Bugfix: The operation to drag a CDockable to a minimize area is no longer overriden by the center area
[/li][/ul]

Version 1.1.0p7c
Finally found and fixed the stupid “shrink” bug…

[ul]
[li] ! API: All methods of the CGroupBehavior now have access to the LocationModeManager, the checks CStackGroupBehavior performs are now more generic and do no longer depend on internal knowledge of when which method is called.
[/li][li] - API: On maximizing, a CSplitDockStationHandle now stores the location of the Dockable that represents the group instead of the Dockable that triggered the action. This allows CStations to represent a group.
[/li][li] - API: DockRegister has a new method “setProtected”. Protected DockStations are never automatically deregistered when their parent is set to null.
[/li][li] - API: DockFrontend.isHiddenRootStation tells whether some DockElement is a root-station and a dockable without parent
[/li][li] - API: CDockable.hasParent tells whether a CDockable is visible and not a root station
[/li][li] - API/Bugfix: Invoking “setVisible” now checks “hasParent” and not “isVisible”, as a result invoking “setVisible(true)” on a root CStation now places the station somewhere.
[/li][li] - API/Bugfix: DockFrontend.show is now also executed for hidden root-stations
[/li][li] - Bugfix: Glass Extension: should now throw less exceptions if a tab is smaller than 1x1 pixels.
[/li][li] - Bugfix: The ArchGradientPainter and CGlassEclipseTabPainter now update their field “wasPreviousSelected” every time “update” is executed. This prevents a bug where the wrong size of the tabs was calculated because of the property having the wrong value.
[/li][li] - Bugfix: Again updated the PlaceholderMap.PlaceholderKey.shrink methods, now they should work
[/li][/ul]

Version 1.1.0p7d
Worked on the guide for Common (not much progress), fixed some small bugs:
[ul]
[li]- Bugfix: CGlassEclipseTabPainter did not update the icon correct, as a result the size of the tab was calculated wrong
[/li][li]! API: the PopupController is now accessible for clients through DockController.getPopupController. Clients can install their custom DockPopupMenuFactories for changing the way the popup menu behaves
[/li][li]! API: DockRelocator is now an interface.
[/li][li]- API: New VetoableDockRelocatorListener can be added to DockRelocator and receives events when something happens that involves a drag and drop operation
[/li][li]- Bugfix: mmodelski found a bug in the ScreenDockStation.drop method. Also added the “drop over ratio” property because of his suggestion.
[/li][/ul]

RC1 / 1.1.0p7e
This is the first release candidate. Unless a meteor crashes the final version 1.1.0 will be uploaded on 25.Apr.

[ul]
[li] - Bugfix: Title-Tooltips are now supported by the EclipseTheme
[/li][li] ! API: moved some methods from MutableCControlRegister to CControlRegister
[/li][li] - API: Added methods to CGrid to add placeholders for SingleCDockables and MultipleCDockables
[/li][li] - API: Divided SimpleDropDownAction into two classes, clients can subclass AbstractSimpleDropDownAction if a custom DockActionSource should be used
[/li][li] - API: CButton is no longer abstract and clients can now add ActionListeners instead of subclassing the action (which is still an option)
[/li][li] - Todo: Reclassified several "todo"s to be in version 1.1.1 instead of 1.1.0, allowing final 1.1.0 to be finished soon.
[/li][/ul]

1.1.0 Final
Final version 1.1.0 is online.

[ul]
[li]- Bugfix: Dropping a Dockable on a FlapDockStation could remove another child if the placeholders had a bad order
[/li][li]- Bugfix: Dropping a Dockable on a SplitDockStation with children that have a fixed size and have an outstanding resize operation now updates the boundaries of the children twice: the first time to reflect the new child, the second time to reflect the resized station
[/li][/ul]