code: protected void setPressed(final boolean pressed, final Request request) {
  		if (pressed && isDisabled()) {
  			// Protect against client-side tampering of disabled/read-only fields.
  			LOG.warn("A disabled button has been triggered. " + getText() + ". " + getId());
  			return;
  		}
  
  		if (pressed != isPressed()) {
  			getOrCreateComponentModel().isPressed = pressed;
  		}
  
  		// If an action has been supplied then execute it, but only after
  		// handle request has been performed on the entire component tree.
  		if (pressed) {
  			final Action action = getAction();
  			if (action == null) {
  				// Reset focus only if the current Request is an Ajax request.
  				if (AjaxHelper.isCurrentAjaxTrigger(this)) {
  					// Need to run the "afterActionExecute" as late as possible.
  					Runnable later = new Runnable() {
  						@Override
  						public void run() {
  							focusMe();
  						}
  					};
  					invokeLater(later);
  				}
  			} else {
  				final ActionEvent event = new ActionEvent(this, getActionCommand(),
  						getActionObject());
  
  				Runnable later = new Runnable() {
  					@Override
  					public void run() {
  						beforeActionExecute(request);
  						action.execute(event);
  						afterActionExecute(request);
  					}
  				};
  
  				invokeLater(later);
  			}
  		}
  	}
docs: Sets whether this button is pressed. You probably do not want to invoke this manually, it is called from
  {@link #handleRequest}. If the button is pressed its Action is queued so it is invoked after the entire request
  has been handled.
  
  @param pressed true for pressed, false for not pressed
  @param request the Request that is being responded to