package bibliothek.notes.view.actions;
import javax.swing.Icon;
import bibliothek.extension.gui.dock.theme.eclipse.EclipseTabDockAction;
import bibliothek.gui.DockFrontend;
import bibliothek.gui.Dockable;
import bibliothek.gui.dock.action.ActionGuard;
import bibliothek.gui.dock.action.DefaultDockActionSource;
import bibliothek.gui.dock.action.DockActionIcon;
import bibliothek.gui.dock.action.DockActionSource;
import bibliothek.gui.dock.action.LocationHint;
import bibliothek.gui.dock.action.actions.SimpleButtonAction;
import bibliothek.notes.view.NoteViewManager;
import bibliothek.notes.view.panels.NoteView;
/**
* An action that removes {@link NoteView}s from the dock-tree.
* @author Benjamin Sigg
*
*/
@EclipseTabDockAction
public class Hide extends SimpleButtonAction implements ActionGuard{
/** the result of {@link #getSource(Dockable)} */
private DefaultDockActionSource source;
/** the manager of the graphical representations of the Notes */
private NoteViewManager manager;
/** the icon of this action */
private DockActionIcon icon;
/**
* Creates a new action and {@link ActionGuard}
* @param frontend the frontend used to retrieve icons
* @param manager the manager of the graphical representations of the Notes,
* used to hide a {@link NoteView}
*/
public Hide( DockFrontend frontend, NoteViewManager manager ){
this.manager = manager;
setText( "Hide" );
icon = new DockActionIcon( "close", this ){
protected void changed( Icon oldValue, Icon newValue ){
setIcon( newValue );
}
};
icon.setManager( frontend.getController().getIcons() );
source = new DefaultDockActionSource( new LocationHint( LocationHint.ACTION_GUARD, LocationHint.RIGHT_OF_ALL ));
source.add( this );
}
public DockActionSource getSource( Dockable dockable ){
return source;
}
public boolean react( Dockable dockable ){
return dockable instanceof NoteView;
}
@Override
public void action( Dockable dockable ){
super.action( dockable );
manager.hide( ((NoteView)dockable).getNote() );
}
}