Package bibliothek.gui.dock.facile.action

Source Code of bibliothek.gui.dock.facile.action.CloseAction

/*
* 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) 2007 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.facile.action;

import javax.swing.Icon;

import bibliothek.gui.DockController;
import bibliothek.gui.DockStation;
import bibliothek.gui.Dockable;
import bibliothek.gui.dock.action.ActionContentModifier;
import bibliothek.gui.dock.action.DockActionIcon;
import bibliothek.gui.dock.action.DockActionText;
import bibliothek.gui.dock.action.ListeningDockAction;
import bibliothek.gui.dock.action.actions.SimpleButtonAction;

/**
* This action shows an icon for "close". When the action is trigged,
* the {@link #close(Dockable) close}-method is invoked with the
* {@link Dockable} to close. This method will then remove the <code>Dockable</code>
* from it's parent.
* @author Benjamin Sigg
*/
public class CloseAction extends SimpleButtonAction implements ListeningDockAction{
    private DockActionIcon icon;
    private DockActionIcon iconHover;
    private DockActionIcon iconPressed;
   
    private DockActionText text;
    private DockActionText tooltip;
   
    /**
     * Sets the icon and the text of this action.
     * @param controller The controller from which this action should read
     * properties, might be <code>null</code> and can be changed by the
     * method {@link #setController(DockController) setController}
     */
    public CloseAction( DockController controller ){
      text = new DockActionText( "close", this ){
      protected void changed( String oldValue, String newValue ){
        setText( newValue )
      }
    };
      tooltip = new DockActionText( "close.tooltip", this ){
      protected void changed( String oldValue, String newValue ){
        setTooltip( newValue )
      }
    };
        icon = new DockActionIcon( "close", this ){
      protected void changed( Icon oldValue, Icon newValue ){
        setIcon( newValue )
      }
    };
    iconHover = new DockActionIcon( "close.hover", this ){
      protected void changed( Icon oldValue, Icon newValue ){
        setIcon( ActionContentModifier.NONE_HOVER, newValue )
      }
    };
    iconPressed = new DockActionIcon( "close.pressed", this ){
      protected void changed( Icon oldValue, Icon newValue ){
        setIcon( ActionContentModifier.NONE_PRESSED, newValue )
      }
    };
       
        setController( controller );
    }
   
    /**
     * Gets the {@link DockActionIcon} which is responsible for automatically setting the close
     * icon.
     * @return the object that sets the icon
     */
    public DockActionIcon getCloseIcon(){
    return icon;
  }
   
    /**
     * Gets the {@link DockActionIcon} which is responsible for automatically setting the close icon
     * when the mouse is hovering over the button.
     * @return the object that sets the icon
     */
    public DockActionIcon getCloseIconHover(){
    return iconHover;
  }
   
    /**
     * Gets the {@link DockActionIcon} which is responsible for automatically setting the close icon
     * if the mouse is pressed.
     * @return the object that sets the icon
     */
    public DockActionIcon getCloseIconPressed(){
    return iconPressed;
  }
   
    public void setController( DockController controller ) {
        icon.setController( controller );
        iconHover.setController( controller );
        iconPressed.setController( controller );
        text.setController( controller );
        tooltip.setController( controller );
    }
   
    @Override
    public void action( Dockable dockable ) {
        close( dockable );
    }
   
    /**
     * Invoked when the <code>dockable</code> has to be closed. The
     * default-behaviour of this method is to remove the {@link Dockable}
     * from it's parent, if there is a parent.
     * @param dockable The {@link Dockable} to close
     */
    protected void close( Dockable dockable ){
        DockStation parent = dockable.getDockParent();
        if( parent != null )
            parent.drag( dockable );
    }
}
TOP

Related Classes of bibliothek.gui.dock.facile.action.CloseAction

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.