/*
* Created on Aug 17, 2004
*
*/
package is.idega.idegaweb.marathon.presentation;
import is.idega.idegaweb.marathon.business.ConverterUtility;
import is.idega.idegaweb.marathon.data.Distance;
import is.idega.idegaweb.marathon.util.IWMarathonConstants;
import java.util.Locale;
import com.idega.idegaweb.IWResourceBundle;
import com.idega.presentation.IWContext;
import com.idega.presentation.Table;
import com.idega.presentation.text.Text;
import com.idega.presentation.ui.CheckBox;
import com.idega.presentation.ui.DropdownMenu;
import com.idega.presentation.ui.TextInput;
import com.idega.user.presentation.UserGroupTab;
import com.idega.util.LocaleUtil;
/**
* @author birna
*
*/
public class RunDistanceTab extends UserGroupTab{
private static final String PARAMETER_USE_CHIP = "use_chip";
private static final String PARAMETER_FAMILY_DISCOUNT = "family_discount";
private static final String PARAMETER_ALLOWS_GROUPS = "allows_groups";
private static final String PARAMETER_PRICE_ISK = "price_isk";
private static final String PARAMETER_PRICE_EUR = "price_eur";
private static final String PARAMETER_CHILDREN_PRICE_ISK = "children_price_isk";
private static final String PARAMETER_CHILDREN_PRICE_EUR = "children_price_eur";
private static final String PARAMETER_NUMBER_OF_SPLITS = "number_of_splits";
private TextInput priceISK;
private TextInput priceEUR;
private TextInput childrenPriceISK;
private TextInput childrenPriceEUR;
private CheckBox useChip;
private CheckBox familyDiscount;
private CheckBox allowsGroups;
private DropdownMenu numberOfSplits;
private Text priceISKText;
private Text priceEURText;
private Text childrenPriceISKText;
private Text childrenPriceEURText;
private Text useChipText;
private Text familyDiscountText;
private Text allowsGroupsText;
private Text numberOfSplitsText;
public RunDistanceTab() {
super();
IWContext iwc = IWContext.getInstance();
IWResourceBundle iwrb = getResourceBundle(iwc);
setName(iwrb.getLocalizedString("run_tab.distance_name", "Distance info"));
}
/* (non-Javadoc)
* @see com.idega.util.datastructures.Collectable#collect(com.idega.presentation.IWContext)
*/
public boolean collect(IWContext iwc) {
if (iwc != null) {
Boolean useChip = new Boolean(iwc.isParameterSet(PARAMETER_USE_CHIP));
Boolean familyDiscount = new Boolean(iwc.isParameterSet(PARAMETER_FAMILY_DISCOUNT));
Boolean allowsGroups = new Boolean(iwc.isParameterSet(PARAMETER_ALLOWS_GROUPS));
String priceISK = iwc.getParameter(PARAMETER_PRICE_ISK);
String priceEUR = iwc.getParameter(PARAMETER_PRICE_EUR);
String childPriceISK = iwc.getParameter(PARAMETER_CHILDREN_PRICE_ISK);
String childPriceEUR = iwc.getParameter(PARAMETER_CHILDREN_PRICE_EUR);
String numberOfSplits = iwc.getParameter(PARAMETER_NUMBER_OF_SPLITS);
fieldValues.put(PARAMETER_USE_CHIP, useChip);
fieldValues.put(PARAMETER_FAMILY_DISCOUNT, familyDiscount);
fieldValues.put(PARAMETER_ALLOWS_GROUPS, allowsGroups);
if (priceISK != null) {
fieldValues.put(PARAMETER_PRICE_ISK, new Float(priceISK));
}
if (priceEUR != null) {
fieldValues.put(PARAMETER_PRICE_EUR, new Float(priceEUR));
}
if (childPriceISK != null) {
fieldValues.put(PARAMETER_CHILDREN_PRICE_ISK, new Float(childPriceISK));
}
if(childPriceEUR != null){
fieldValues.put(PARAMETER_CHILDREN_PRICE_EUR, new Float(childPriceEUR));
}
if(numberOfSplits != null){
fieldValues.put(PARAMETER_NUMBER_OF_SPLITS, new Integer(numberOfSplits));
}
updateFieldsDisplayStatus();
return true;
}
return false;
}
/* (non-Javadoc)
* @see com.idega.user.presentation.UserTab#initFieldContents()
*/
public void initFieldContents() {
try {
Distance distance = ConverterUtility.getInstance().convertGroupToDistance(new Integer(getGroupId()));
fieldValues.put(PARAMETER_USE_CHIP, new Boolean(distance.isUseChip()));
fieldValues.put(PARAMETER_FAMILY_DISCOUNT, new Boolean(distance.isFamilyDiscount()));
fieldValues.put(PARAMETER_ALLOWS_GROUPS, new Boolean(distance.isAllowsGroups()));
fieldValues.put(PARAMETER_PRICE_ISK, new Float(distance.getPrice(LocaleUtil.getIcelandicLocale())));
fieldValues.put(PARAMETER_PRICE_EUR, new Float(distance.getPrice(Locale.ENGLISH)));
fieldValues.put(PARAMETER_CHILDREN_PRICE_ISK, new Float(distance.getChildrenPrice(LocaleUtil.getIcelandicLocale())));
fieldValues.put(PARAMETER_CHILDREN_PRICE_EUR, new Float(distance.getChildrenPrice(Locale.ENGLISH)));
fieldValues.put(PARAMETER_NUMBER_OF_SPLITS, new Integer(distance.getNumberOfSplits()));
updateFieldsDisplayStatus();
}
catch (Exception e) {
System.err.println("RunDistanceTab error initFieldContents, GroupId : " + getGroupId());
}
}
/* (non-Javadoc)
* @see com.idega.user.presentation.UserTab#initializeFieldNames()
*/
public void initializeFieldNames() {
}
/* (non-Javadoc)
* @see com.idega.user.presentation.UserTab#initializeFields()
*/
public void initializeFields() {
priceISK = new TextInput(PARAMETER_PRICE_ISK);
priceISK.setAsFloat("Not a valid price");
priceEUR = new TextInput(PARAMETER_PRICE_EUR);
priceEUR.setAsFloat("Not a valid price");
childrenPriceISK = new TextInput(PARAMETER_CHILDREN_PRICE_ISK);
childrenPriceISK.setAsFloat("Not a valid price");
childrenPriceEUR = new TextInput(PARAMETER_CHILDREN_PRICE_EUR);
childrenPriceEUR.setAsFloat("Not a valid price");
useChip = new CheckBox(PARAMETER_USE_CHIP);
familyDiscount = new CheckBox(PARAMETER_FAMILY_DISCOUNT);
allowsGroups = new CheckBox(PARAMETER_ALLOWS_GROUPS);
numberOfSplits = new DropdownMenu(PARAMETER_NUMBER_OF_SPLITS);
numberOfSplits.addMenuElement(0, "0");
numberOfSplits.addMenuElement(1, "1");
numberOfSplits.addMenuElement(2, "2");
}
/* (non-Javadoc)
* @see com.idega.user.presentation.UserTab#initializeFieldValues()
*/
public void initializeFieldValues() {
fieldValues.put(PARAMETER_USE_CHIP, new Boolean(false));
fieldValues.put(PARAMETER_FAMILY_DISCOUNT, new Boolean(false));
fieldValues.put(PARAMETER_ALLOWS_GROUPS, new Boolean(false));
fieldValues.put(PARAMETER_PRICE_ISK, new Float(0));
fieldValues.put(PARAMETER_PRICE_EUR, new Float(0));
fieldValues.put(PARAMETER_CHILDREN_PRICE_ISK, new Float(0));
fieldValues.put(PARAMETER_CHILDREN_PRICE_EUR, new Float(0));
fieldValues.put(PARAMETER_NUMBER_OF_SPLITS, new Integer(0));
updateFieldsDisplayStatus();
}
/* (non-Javadoc)
* @see com.idega.user.presentation.UserTab#initializeTexts()
*/
public void initializeTexts() {
IWContext iwc = IWContext.getInstance();
IWResourceBundle iwrb = getResourceBundle(iwc);
priceISKText = new Text(iwrb.getLocalizedString("run_tab.price_ISK", "Price (ISK)"));
priceISKText.setBold();
priceEURText = new Text(iwrb.getLocalizedString("run_tab.price_EUR", "Price (EUR)"));
priceEURText.setBold();
childrenPriceISKText = new Text(iwrb.getLocalizedString("run_tab.children_price_ISK", "Children price (ISK)"));
childrenPriceISKText.setBold();
childrenPriceEURText = new Text(iwrb.getLocalizedString("run_tab.children_price_ISK", "Children price (EUR)"));
childrenPriceEURText.setBold();
useChipText = new Text(iwrb.getLocalizedString("run_tab.use_chip", "Uses chips"));
useChipText.setBold();
familyDiscountText = new Text(iwrb.getLocalizedString("run_tab.family_discount", "Uses family discount"));
familyDiscountText.setBold();
allowsGroupsText = new Text(iwrb.getLocalizedString("run_tab.allows_groups", "Allows groups"));
allowsGroupsText.setBold();
numberOfSplitsText = new Text(iwrb.getLocalizedString("run_tab.number_of_splits", "Number of splits"));
numberOfSplitsText.setBold();
}
/* (non-Javadoc)
* @see com.idega.user.presentation.UserTab#lineUpFields()
*/
public void lineUpFields() {
resize(1, 1);
setCellpadding(0);
setCellspacing(0);
Table table = new Table(2, 4);
table.setCellpadding(5);
table.setCellspacing(0);
table.setWidth(1, "50%");
table.setWidth(2, "50%");
table.setWidth(Table.HUNDRED_PERCENT);
table.add(priceISKText, 1, 1);
table.add(Text.getBreak(), 1, 1);
table.add(priceISK, 1, 1);
table.add(childrenPriceISKText, 2, 1);
table.add(Text.getBreak(), 2, 1);
table.add(childrenPriceISK, 2, 1);
table.add(priceEURText, 1, 2);
table.add(Text.getBreak(), 1, 2);
table.add(priceEUR, 1, 2);
table.add(childrenPriceEURText, 2, 2);
table.add(Text.getBreak(), 2, 2);
table.add(childrenPriceEUR, 2, 2);
table.mergeCells(1, 3, 2, 3);
table.add(numberOfSplitsText, 1, 3);
table.add(Text.getNonBrakingSpace(), 1, 3);
table.add(numberOfSplits, 1, 3);
table.mergeCells(1, 4, 2, 4);
table.add(useChip, 1, 4);
table.add(Text.getNonBrakingSpace(), 1, 4);
table.add(useChipText, 1, 4);
table.add(Text.getBreak(), 1, 4);
table.add(familyDiscount, 1, 4);
table.add(Text.getNonBrakingSpace(), 1, 4);
table.add(familyDiscountText, 1, 4);
table.add(Text.getBreak(), 1, 4);
table.add(allowsGroups, 1, 4);
table.add(Text.getNonBrakingSpace(), 1, 4);
table.add(allowsGroupsText, 1, 4);
add(table, 1, 1);
}
/* (non-Javadoc)
* @see com.idega.util.datastructures.Collectable#store(com.idega.presentation.IWContext)
*/
public boolean store(IWContext iwc) {
try {
if (getGroupId() > -1) {
Distance distance = ConverterUtility.getInstance().convertGroupToDistance(new Integer(getGroupId()));
distance.setUseChip(((Boolean) fieldValues.get(PARAMETER_USE_CHIP)).booleanValue());
distance.setFamilyDiscount(((Boolean) fieldValues.get(PARAMETER_FAMILY_DISCOUNT)).booleanValue());
distance.setAllowsGroups(((Boolean) fieldValues.get(PARAMETER_ALLOWS_GROUPS)).booleanValue());
distance.setPriceInISK(((Float) fieldValues.get(PARAMETER_PRICE_ISK)).floatValue());
distance.setPriceInEUR(((Float) fieldValues.get(PARAMETER_PRICE_EUR)).floatValue());
distance.setChildrenPriceInISK(((Float) fieldValues.get(PARAMETER_CHILDREN_PRICE_ISK)).floatValue());
distance.setChildrenPriceInEUR(((Float) fieldValues.get(PARAMETER_CHILDREN_PRICE_EUR)).floatValue());
distance.setNumberOfSplits(((Integer) fieldValues.get(PARAMETER_NUMBER_OF_SPLITS)).intValue());
distance.store();
}
}
catch (Exception e) {
//return false;
e.printStackTrace(System.err);
throw new RuntimeException("update group exception");
}
return true;
}
/* (non-Javadoc)
* @see com.idega.user.presentation.UserTab#updateFieldsDisplayStatus()
*/
public void updateFieldsDisplayStatus() {
useChip.setChecked(((Boolean) fieldValues.get(PARAMETER_USE_CHIP)).booleanValue());
familyDiscount.setChecked(((Boolean) fieldValues.get(PARAMETER_FAMILY_DISCOUNT)).booleanValue());
allowsGroups.setChecked(((Boolean) fieldValues.get(PARAMETER_ALLOWS_GROUPS)).booleanValue());
priceISK.setContent(((Float) fieldValues.get(PARAMETER_PRICE_ISK)).toString());
priceEUR.setContent(((Float) fieldValues.get(PARAMETER_PRICE_EUR)).toString());
childrenPriceISK.setContent(((Float) fieldValues.get(PARAMETER_CHILDREN_PRICE_ISK)).toString());
childrenPriceEUR.setContent(((Float) fieldValues.get(PARAMETER_CHILDREN_PRICE_EUR)).toString());
numberOfSplits.setSelectedElement(((Integer) fieldValues.get(PARAMETER_NUMBER_OF_SPLITS)).intValue());
}
public String getBundleIdentifier() {
return IWMarathonConstants.IW_BUNDLE_IDENTIFIER;
}
}