/*
* RHQ Management Platform
* Copyright (C) 2005-2008 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation version 2 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
package org.rhq.enterprise.gui.legacy.action;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.util.ImageButtonBean;
import org.apache.struts.validator.ValidatorForm;
/**
* A subclass of <code>ValidatorForm</code> that adds convenience methods for dealing with image-based form buttons.
*/
public class BaseValidatorForm extends ValidatorForm {
//-------------------------------------instance variables
private ImageButtonBean add;
private ImageButtonBean cancel;
private ImageButtonBean create;
private ImageButtonBean delete;
private ImageButtonBean ok;
private ImageButtonBean okassign;
private Integer pageSize;
private ImageButtonBean reset;
private ImageButtonBean remove;
private ImageButtonBean enable;
private ImageButtonBean userset;
private ImageButtonBean install;
private ImageButtonBean manualUninstall;
private ImageButtonBean uninventory;
/**
* Holds value of property pn.
*/
private Integer pn;
//-------------------------------------constructors
public BaseValidatorForm() {
super();
this.add = new ImageButtonBean();
this.cancel = new ImageButtonBean();
this.create = new ImageButtonBean();
this.delete = new ImageButtonBean();
this.ok = new ImageButtonBean();
this.okassign = new ImageButtonBean();
this.pageSize = null;
this.reset = new ImageButtonBean();
this.remove = new ImageButtonBean();
this.enable = new ImageButtonBean();
this.userset = new ImageButtonBean();
this.install = new ImageButtonBean();
this.manualUninstall = new ImageButtonBean();
this.uninventory = new ImageButtonBean();
}
//-------------------------------------public methods
public void setAdd(ImageButtonBean add) {
this.add = add;
}
public ImageButtonBean getAdd() {
return this.add;
}
public void setCancel(ImageButtonBean cancel) {
this.cancel = cancel;
}
public ImageButtonBean getCancel() {
return this.cancel;
}
public void setCreate(ImageButtonBean create) {
this.create = create;
}
public ImageButtonBean getCreate() {
return this.create;
}
public void setDelete(ImageButtonBean delete) {
this.delete = delete;
}
public ImageButtonBean getDelete() {
return this.delete;
}
public void setOk(ImageButtonBean ok) {
this.ok = ok;
}
public ImageButtonBean getOk() {
return this.ok;
}
public Integer getPs() {
return this.pageSize;
}
public void setPs(Integer pageSize) {
this.pageSize = pageSize;
}
public void setRemove(ImageButtonBean remove) {
this.remove = remove;
}
public ImageButtonBean getRemove() {
return this.remove;
}
public void setReset(ImageButtonBean reset) {
this.reset = reset;
}
public ImageButtonBean getReset() {
return this.reset;
}
public void setEnable(ImageButtonBean enable) {
this.enable = enable;
}
public ImageButtonBean getEnable() {
return this.enable;
}
public void setUserset(ImageButtonBean userset) {
this.userset = userset;
}
public ImageButtonBean getUserset() {
return this.userset;
}
public void setInstall(ImageButtonBean install) {
this.install = install;
}
public ImageButtonBean getInstall() {
return this.install;
}
public ImageButtonBean getManualUninstall() {
return this.manualUninstall;
}
/**
* Setter for property p.
*
* @param pn New value of property p.
*/
public void setPn(Integer pn) {
this.pn = pn;
}
/**
* Getter for property p.
*
* @return Value of property p.
*/
public Integer getPn() {
return this.pn;
}
/**
* Sets the okAdd.
*
* @param okAdd The okAdd to userset
*/
public void setOkassign(ImageButtonBean okAdd) {
this.okassign = okAdd;
}
/**
* @return ImageButtonBean
*/
public ImageButtonBean getOkassign() {
return okassign;
}
public void setUninventory(ImageButtonBean value) {
this.uninventory = value;
}
public ImageButtonBean getUninventory() {
return this.uninventory;
}
public boolean isAddClicked() {
return getAdd().isSelected();
}
public boolean isCancelClicked() {
return getCancel().isSelected();
}
public boolean isCreateClicked() {
return getCreate().isSelected();
}
public boolean isDeleteClicked() {
return getDelete().isSelected();
}
public boolean isOkClicked() {
return getOk().isSelected();
}
public boolean isOkAssignClicked() {
return getOkassign().isSelected();
}
public boolean isRemoveClicked() {
return getRemove().isSelected();
}
public boolean isResetClicked() {
return getReset().isSelected();
}
public boolean isEnableClicked() {
return getEnable().isSelected();
}
public boolean isUsersetClicked() {
return getUserset().isSelected();
}
public boolean isInstallClicked() {
return getInstall().isSelected();
}
public boolean isManualUninstallClicked() {
return getManualUninstall().isSelected();
}
@Override
public void reset(ActionMapping mapping, HttpServletRequest request) {
super.reset(mapping, request);
this.pageSize = null;
}
/**
* Only validate if 1) the form's ok or okassign button was clicked and 2) the mapping specifies an input form to
* return to. condition #2 can be false when a form has failed validation and has forwarded to the input page; the
* ok button request parameter will still be userset, but the prepare action for the input page will not have
* (another) input page specified.
*/
@Override
public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
if (shouldValidate(mapping, request)) {
ActionErrors errs = super.validate(mapping, request);
return errs;
} else {
return null;
}
}
/* Only validate if
* 1) the form's ok or okassign button was clicked and 2) the mapping specifies an input form to return to.
*
* Child classes should call this to decide whether or not to perform custom validation steps.
*/
protected boolean shouldValidate(ActionMapping mapping, HttpServletRequest request) {
return (isOkClicked() || isOkAssignClicked()) && (mapping.getInput() != null);
}
@Override
public String toString() {
StringBuffer s = new StringBuffer();
s.append("add=");
s.append(add);
s.append(" cancel=");
s.append(cancel);
s.append(" create=");
s.append(create);
s.append(" delete=");
s.append(delete);
s.append(" ok=");
s.append(ok);
s.append(" remove=");
s.append(remove);
s.append(" reset=");
s.append(reset);
s.append(" enable=");
s.append(enable);
s.append(" userset=");
s.append(userset);
s.append(" pageSize=");
s.append(pageSize);
s.append(" install=");
s.append(install);
s.append(" uninventory=");
s.append(uninventory);
return s.toString();
}
}