Package bibliothek.gui.dock.common.mode.station

Source Code of bibliothek.gui.dock.common.mode.station.ExternalizedCSplitDockStationHandler$Externalized

/*
* Bibliothek - DockingFrames
* Library built on Java/Swing, allows the user to "drag and drop"
* panels containing any Swing-Component the developer likes to add.
*
* Copyright (C) 2013 Benjamin Sigg
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
*
* Benjamin Sigg
* benjamin_sigg@gmx.ch
* CH - Switzerland
*/
package bibliothek.gui.dock.common.mode.station;

import bibliothek.gui.DockController;
import bibliothek.gui.DockStation;
import bibliothek.gui.Dockable;
import bibliothek.gui.dock.ScreenDockStation;
import bibliothek.gui.dock.SplitDockStation;
import bibliothek.gui.dock.common.CLocation;
import bibliothek.gui.dock.common.CStation;
import bibliothek.gui.dock.common.intern.station.CSplitDockStation;
import bibliothek.gui.dock.common.intern.station.CommonDockStation;
import bibliothek.gui.dock.common.mode.CExternalizedModeArea;
import bibliothek.gui.dock.common.mode.CLocationModeManager;
import bibliothek.gui.dock.facile.mode.Location;
import bibliothek.gui.dock.facile.mode.LocationMode;
import bibliothek.gui.dock.facile.mode.ModeAreaListener;
import bibliothek.gui.dock.layout.DockableProperty;
import bibliothek.gui.dock.support.mode.AffectedSet;
import bibliothek.gui.dock.util.DockUtilities;

/**
* The representation of a {@link SplitDockStation} which is a child of a {@link ScreenDockStation},
* meaning the children are part of a {@link CExternalizedModeArea}.
* @author Benjamin Sigg
*/
public class ExternalizedCSplitDockStationHandler extends CSplitDockStationHandle {
  /** what mode to use when unmaximizing children */
  private LocationMode externalMode;
 
  /** the actual {@link CExternalizedModeArea} */
  private Externalized external;
 
  /**
   * Creates a new handler
   * @param station the station that will be represented by <code>this</code>
   * @param manager manager handling all the modes created by <code>this</code>
   */
  public ExternalizedCSplitDockStationHandler( CStation<CSplitDockStation> station, CLocationModeManager manager ){
    super( station, manager );
    external = new Externalized();
  }
 
  @Override
  protected LocationMode getNormalMode(){
    return externalMode;
  }
 
  /**
   * Gets a representation of the {@link SplitDockStation} as {@link CExternalizedModeArea}.
   * @return the representation, always the same object
   */
  public CExternalizedModeArea asExternalized(){
    return external;
  }
 
  private CStation<?> getBaseStation(){
    DockStation parent = getStation().getDockParent();
    while( parent != null ){
      if( parent instanceof CommonDockStation<?, ?> ){
        return ((CommonDockStation<?, ?>)parent).getStation();
      }
    }
    throw new IllegalStateException( "missing parent station" );
  }
 
  /***
   * Represents a {@link SplitDockStation} which is a child of a {@link ScreenDockStation} as
   * a {@link CExternalizedModeArea}.
   * @author Benjamin Sigg
   */
  protected class Externalized implements CExternalizedModeArea{
    public DockableProperty getLocation( Dockable child ){
      return asNormalModeArea().getLocation( child );
    }
 
    public boolean setLocation( Dockable dockable, DockableProperty location, AffectedSet set ){
      return asNormalModeArea().setLocation( dockable, location, set );
    }
 
    public String getUniqueId(){
      return getCStation().getUniqueId();
    }
 
    public boolean autoDefaultArea(){
      return false;
    }
   
    public boolean isLocationRoot(){
      return false;
    }
 
    public boolean isChild( Dockable dockable ){
      return asNormalModeArea().isChild( dockable );
    }
 
    public DockStation getStation(){
      return ExternalizedCSplitDockStationHandler.this.getStation();
    }
 
    public void setController( DockController controller ){
      // ignore
    }
 
    public void setMode( LocationMode mode ){
      externalMode = mode;
    }
 
    public void addModeAreaListener( ModeAreaListener listener ){
      add( new ModeAreaListenerWrapper( this, listener ));
    }
 
    public void removeModeAreaListener( ModeAreaListener listener ){
      remove( new ModeAreaListenerWrapper( this, listener ));
    }
   
    public CLocation getCLocation( Dockable dockable ){
      CStation<?> base = getBaseStation();
      DockStation baseStation = base.getStation();
      DockableProperty property = DockUtilities.getPropertyChain( baseStation, dockable );
      return base.getStationLocation().expandProperty( baseStation.getController(), property );
    }
 
    public CLocation getCLocation( Dockable dockable, Location location ){
      CStation<?> base = getBaseStation();
      DockableProperty property = location.getLocation();
      if( property == null ){
        return base.getStationLocation();
      }
     
      return base.getStationLocation().expandProperty( base.getStation().getController(), property );
    }
 
    public boolean respectWorkingAreas(){
      return false;
    }
  }
}
TOP

Related Classes of bibliothek.gui.dock.common.mode.station.ExternalizedCSplitDockStationHandler$Externalized

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.