package bibliothek.gui.dock.control; import java.awt.event.InputEvent; import bibliothek.gui.DockController; import bibliothek.gui.dock.accept.DockAcceptance; /** * A {@link DockRelocatorMode} that adds itself as a {@link DockAcceptance} * to the {@link DockController} when activated. * @author Benjamin Sigg * */ public abstract class AcceptanceDockRelocatorMode implements DockRelocatorMode, DockAcceptance { /** whether this mode is active */ private boolean active; /** which keys must be pressed in order to activate this mode */ private ModifierMask mask; /** * Creates a new mode. The masks are created by using the * constants "xzy_DOWN_MASK" from {@link InputEvent}. * @param onmask the keys that must be pressed to activate this mode * @param offmask the keys that must not be pressed to activate this mode */ public AcceptanceDockRelocatorMode( int onmask, int offmask ){ mask = new ModifierMask( onmask, offmask ); } /** * Creates a new mode. * @param mask the pattern of keys that must be pressed to activate this * mode */ public AcceptanceDockRelocatorMode( ModifierMask mask ){ if( mask == null ) throw new IllegalArgumentException( "mask must not be null" ); this.mask = mask; } /** * Sets the keys that must be pressed in order to activate this mode. * @param mask the mask */ public void setMask( ModifierMask mask ) { if( mask == null ) throw new IllegalArgumentException( "mask must not be null" ); this.mask = mask; } /** * Gets the mask for this mode. * @return the mask */ public ModifierMask getMask() { return mask; } public void setActive( DockController controller, boolean active ) { if( this.active != active ){ if( active ) controller.addAcceptance( this ); else controller.removeAcceptance( this ); this.active = active; } } public boolean shouldBeActive( DockController controller, int modifiers ) { return mask.matches( modifiers ); } }