import org.primefaces.util.HTML;
import java.util.logging.Logger;
import javax.faces.event.AjaxBehaviorEvent;
import javax.faces.event.FacesEvent;
import java.util.Collections;
import java.util.Collection;
import java.util.Arrays;
import java.util.Map;
import org.primefaces.component.button.Button;
import org.primefaces.event.data.PageEvent;
import org.primefaces.util.Constants;
import org.primefaces.event.SelectEvent;
private static final Collection<String> EVENT_NAMES = Collections.unmodifiableCollection(Arrays.asList("click","dialogReturn"));
private final static Logger logger = Logger.getLogger(CommandButton.class.getName());
@Override
public Collection<String> getEventNames() {
return EVENT_NAMES;
}
@Override
public String getDefaultEventName() {
return "click";
}
@Override
public void queueEvent(FacesEvent event) {
FacesContext context = getFacesContext();
if(event instanceof AjaxBehaviorEvent) {
Map<String,String> params = context.getExternalContext().getRequestParameterMap();
String eventName = params.get(Constants.RequestParams.PARTIAL_BEHAVIOR_EVENT_PARAM);
if(eventName.equals("dialogReturn")) {
AjaxBehaviorEvent behaviorEvent = (AjaxBehaviorEvent) event;
Map<String,Object> session = context.getExternalContext().getSessionMap();
String dcid = params.get(this.getClientId(context) + "_pfdlgcid");
Object selectedValue = session.get(dcid);
session.remove(dcid);
event = new SelectEvent(this, behaviorEvent.getBehavior(), selectedValue);
super.queueEvent(event);
}
else if(eventName.equals("click")) {
super.queueEvent(event);
}
}
else {
super.queueEvent(event);
}
}
public String resolveIcon() {
String icon = getIcon();
if(icon == null) {
icon = getImage();
if(icon != null)
logger.info("image attribute is deprecated to define an icon, use icon attribute instead.");
}
return icon;
}
public String resolveStyleClass() {
String icon = resolveIcon();
Object value = getValue();
String styleClass = "";
if(value != null && icon == null) {
styleClass = HTML.BUTTON_TEXT_ONLY_BUTTON_CLASS;
}
else if(value != null && icon != null) {
styleClass = getIconPos().equals("left") ? HTML.BUTTON_TEXT_ICON_LEFT_BUTTON_CLASS : HTML.BUTTON_TEXT_ICON_RIGHT_BUTTON_CLASS;
}
else if(value == null && icon != null) {
styleClass = HTML.BUTTON_ICON_ONLY_BUTTON_CLASS;
}
if(isDisabled()) {
styleClass = styleClass + " ui-state-disabled";
}
String userStyleClass = getStyleClass();
if(userStyleClass != null) {
styleClass = styleClass + " " + userStyleClass;
}
return styleClass;
}
public String resolveMobileStyleClass() {
String icon = getIcon();
String iconPos = getIconPos();
Object value = getValue();
String styleClass = "ui-btn ui-shadow ui-corner-all";
if(value != null && icon != null) {
styleClass = styleClass + " " + icon + " ui-btn-icon-" + iconPos;
} else if(value == null && icon != null) {
styleClass = styleClass + " " + icon + " ui-btn-icon-notext";
}
if(isDisabled()) {
styleClass = styleClass + " ui-state-disabled";
}
String userStyleClass = getStyleClass();
if(userStyleClass != null) {
styleClass = styleClass + " " + userStyleClass;
}
return styleClass;
}
public boolean isPartialSubmitSet() {
return (getStateHelper().get(PropertyKeys.partialSubmit) != null) || (this.getValueExpression("partialSubmit") != null);
}
public boolean isResetValuesSet() {
return (getStateHelper().get(PropertyKeys.resetValues) != null) || (this.getValueExpression("resetValues") != null);
}
private String confirmationScript;
public String getConfirmationScript() {
return this.confirmationScript;
}
public void setConfirmationScript(String confirmationScript) {
this.confirmationScript = confirmationScript;
}
public boolean requiresConfirmation() {
return this.confirmationScript != null;
}
public boolean isAjaxified() {
return !getType().equals("reset") && !getType().equals("button") && isAjax();
}