/** * Sets the {@link Dockable} which should have the focus. This is identical of calling * {@link #setFocusedDockable(FocusRequest)} with a new {@link DefaultFocusRequest}. * @param focusedDockable the element with the focus or <code>null</code> * @param force <code>true</code> if this controller must ensure * that all properties are correct, <code>false</code> if some * optimizations are allowed. Clients normally can set this argument * to <code>false</code>. */ public void setFocusedDockable( Dockable focusedDockable, boolean force ) { setFocusedDockable( new DefaultFocusRequest( focusedDockable, force ) ); }
public FocusVeto setFocusedDockable( DockElementRepresentative source, Component component, boolean force, boolean ensureFocusSet, boolean ensureDockableFocused ){ DefaultFocusRequest request = new DefaultFocusRequest( source, component, force, ensureFocusSet, ensureDockableFocused ); focus( request ); return request.getVeto(); }
public FocusRequest grant( Component component ){ Dockable dockable = getDockable(); if( dockable != null ){ if( ensureFocusSet || ensureDockableFocused ){ return new EnsuringFocusRequest( dockable, ensureDockableFocused, component ); } } if( component == null && controller != null ){ Window root = controller.getRootWindowProvider().searchWindow(); if( root != null ){ // if another dockable gains the focus, then it is going to do that // before this request gets even processed. So this is a backup // executed to ensure that the application does not lose focus return new RepeatingFocusRequest( null, root, isHardRequest() ); } } return null; } }
public boolean validate( FocusController controller ){ this.controller = controller.getController(); if( force ){ return true; } return controller.getFocusedDockable() != getDockable(); }
public boolean acceptable( Component component ){ Dockable dockable = getDockable(); if( ensureDockableFocused && dockable != null ){ return SwingUtilities.isDescendingFrom( component, dockable.getComponent() ); } return true; }
@Override public void dockableUnregistered( DockController controller, Dockable dockable ){ if( dockable == controller.getFocusedDockable() ) controller.setFocusedDockable( new DefaultFocusRequest( null, null, false )); }
public FocusVeto setFocusedDockable( DockElementRepresentative source, Component component, boolean force, boolean ensureFocusSet, boolean ensureDockableFocused ){ DefaultFocusRequest request = new DefaultFocusRequest( source, component, force, ensureFocusSet, ensureDockableFocused ); focus( request ); return request.getVeto(); }
@Override public void dockableUnregistered( DockController controller, Dockable dockable ){ if( dockable == controller.getFocusedDockable() ) controller.setFocusedDockable( new DefaultFocusRequest( null, null, false )); }
/** * Close the currently open popup window and changes the focused * {@link Dockable} to <code>dockable</code>. * @param dockable the element that will own the focus */ public void stop( Dockable dockable ){ close(); controller.setFocusedDockable( new DefaultFocusRequest( dockable, null, false )); }
/** * Close the currently open popup window and changes the focused * {@link Dockable} to <code>dockable</code>. * @param dockable the element that will own the focus */ public void stop( Dockable dockable ){ close(); controller.setFocusedDockable( new DefaultFocusRequest( dockable, null, false )); }
/** * Sets the {@link Dockable} which should have the focus. * @param focusedDockable the element with the focus or <code>null</code> * @param component the {@link Component} which should receive the focus, can be <code>null</code>. * See {@link FocusController#setFocusedDockable(DockElementRepresentative, Component, boolean, boolean, boolean)}. * @param force <code>true</code> if this controller must ensure * that all properties are correct, <code>false</code> if some * optimizations are allowed. Clients normally can set this argument * to <code>false</code>. * @deprecated clients should use {@link #setFocusedDockable(FocusRequest)} instead */ @Deprecated @Todo( compatibility=Compatibility.BREAK_MAJOR, description="remove this method", priority=Todo.Priority.ENHANCEMENT, target=Version.VERSION_1_1_3) public void setFocusedDockable( Dockable focusedDockable, Component component, boolean force ) { setFocusedDockable( new DefaultFocusRequest( focusedDockable, component, force ) ); }
/** * Sets the {@link Dockable} which should have the focus. * @param focusedDockable the element with the focus or <code>null</code> * @param component the {@link Component} which should receive the focus, can be <code>null</code>. * See {@link FocusController#setFocusedDockable(DockElementRepresentative, Component, boolean, boolean, boolean)}. * @param force <code>true</code> if this controller must ensure * that all properties are correct, <code>false</code> if some * optimizations are allowed. Clients normally can set this argument * to <code>false</code>. * @param ensureFocusSet if <code>true</code>, then this method should make sure that either <code>focusedDockable</code> * itself or one of its {@link DockElementRepresentative} is the focus owner * @param ensureDockableFocused if <code>true</code>, then this method should make sure that <code>focusedDockable</code> * is the focus owner. This parameter is stronger that <code>ensureFocusSet</code> * @deprecated clients should use {@link #setFocusedDockable(FocusRequest)} instead */ @Deprecated @Todo( compatibility=Compatibility.BREAK_MAJOR, description="remove this method", priority=Todo.Priority.ENHANCEMENT, target=Version.VERSION_1_1_3) public void setFocusedDockable( Dockable focusedDockable, Component component, boolean force, boolean ensureFocusSet, boolean ensureDockableFocused ) { setFocusedDockable( new DefaultFocusRequest( focusedDockable, component, force, ensureFocusSet, ensureDockableFocused ) ); }
/** * Sets the focused {@link Dockable}. Nothing happens if <code>focusedDockable</code> * is a station and one of its children already has the focus. * @param focusedDockable the element which should have the focus * @param component the {@link Component} which should receive the focus, can be <code>null</code>. * See {@link FocusController#setFocusedDockable(DockElementRepresentative, Component, boolean, boolean, boolean)}. * @see #isOnFocusing() */ public void setAtLeastFocusedDockable( Dockable focusedDockable, Component component ) { Dockable current = getFocusedDockable(); if( current == null ){ setFocusedDockable( new DefaultFocusRequest( focusedDockable, component, false ) ); } else if( !DockUtilities.isAncestor( focusedDockable, current )){ setFocusedDockable( new DefaultFocusRequest( focusedDockable, component, false ) ); } }
public void setSelectedAndGetFocus() { UIManager.DOCKING_CONTROL.getController() .setFocusedDockable(new DefaultFocusRequest(dockable.intern(), this, false, true, false)); }
@Override public void dockableAdded( DockStation station, Dockable dockable ){ if( !controller.getRelocator().isOnPut() ){ Dockable focusedDockable = controller.getFocusedDockable(); if( dockable == focusedDockable || focusedDockable == null ){ if( dockable.isDockableShowing() ){ controller.setFocusedDockable( new DefaultFocusRequest( dockable, null, true )); } } } }
@Override public void dockableAdded( DockStation station, Dockable dockable ){ if( !controller.getRelocator().isOnPut() ){ Dockable focusedDockable = controller.getFocusedDockable(); if( dockable == focusedDockable || focusedDockable == null ){ if( dockable.isDockableShowing() ){ controller.setFocusedDockable( new DefaultFocusRequest( dockable, null, true )); } } } }
public void run(){ DockElementRepresentative element = getDockable( component, event ); if( element != null ){ Dockable dock = element.getElement().asDockable(); if( dock != null ){ controller.setFocusedDockable( new DefaultFocusRequest( dock, component, false, ensureFocus, element.shouldTransfersFocus() )); } } } });
public void run(){ DockElementRepresentative element = getDockable( component, event ); if( element != null ){ Dockable dock = element.getElement().asDockable(); if( dock != null ){ controller.setFocusedDockable( new DefaultFocusRequest( dock, component, false, ensureFocus, element.shouldTransfersFocus() )); } } } });
@Override public void dockableShowingChanged( DockStation station, Dockable dockable, boolean visible ){ if( !controller.isOnFocusing() && !visible && controller.isFocused( dockable ) ){ DockStation parent = dockable.getDockParent(); while( parent != null ){ dockable = parent.asDockable(); if( dockable != null ){ parent = dockable.getDockParent(); if( parent != null ){ if( parent.isChildShowing( dockable )){ controller.setFocusedDockable( new DefaultFocusRequest( dockable, null, false )); return; } } } else break; } controller.setFocusedDockable( new DefaultFocusRequest( null, null, false )); } } }
@Override public void dockableShowingChanged( DockStation station, Dockable dockable, boolean visible ){ if( !controller.isOnFocusing() && !visible && controller.isFocused( dockable ) ){ DockStation parent = dockable.getDockParent(); while( parent != null ){ dockable = parent.asDockable(); if( dockable != null ){ parent = dockable.getDockParent(); if( parent != null ){ if( parent.isChildShowing( dockable )){ controller.setFocusedDockable( new DefaultFocusRequest( dockable, null, false )); return; } } } else break; } controller.setFocusedDockable( new DefaultFocusRequest( null, null, false )); } } }