perspective.storeLocations();
// read the last known location of all elements
XElement xinvisible = root.getElement( "invisible" );
if( xinvisible != null ){
PropertyTransformer transformer = frontend.getPropertyTransformer();
for( XElement xdockable : xinvisible.getElements( "dockable" )){
String key = xdockable.getString( "key" );
CDockablePerspective dockable = perspective.getDockable( key );
if( dockable == null ){
XElement xcontent = xdockable.getElement( "content" );
if( xcontent != null ){
PerspectiveElement element = conversion.convert( conversion.getSituation().readCompositionXML( xcontent ) );
if( element instanceof CommonElementPerspective ){
dockable = ((CommonElementPerspective)element).getElement().asDockable();
if( dockable != null ){
perspective.putDockable( dockable );
}
}
}
}
if( dockable != null ){
XElement xlocation = xdockable.getElement( "location" );
String locationRoot = xlocation.getString( "root" );
DockableProperty location = transformer.readXML( xlocation );
Path mode = new Path( xlocation.getString( "mode" ));
ExtendedMode extendedMode = perspective.getLocationManager().getMode( mode );
if( extendedMode != null ){
dockable.getLocationHistory().add( extendedMode, new Location( mode, locationRoot, location ) );