/////////////////////////////////////////////////////////////////////////////
//
// Project ProjectForge Community Edition
// www.projectforge.org
//
// Copyright (C) 2001-2014 Kai Reinhard (k.reinhard@micromata.de)
//
// ProjectForge is dual-licensed.
//
// This community edition 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 3 of the License.
//
// This community edition 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, see http://www.gnu.org/licenses/.
//
/////////////////////////////////////////////////////////////////////////////
package org.projectforge.web.address;
import org.apache.log4j.Logger;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.spring.injection.annot.SpringBean;
import org.projectforge.address.AddressDO;
import org.projectforge.address.AddressDao;
import org.projectforge.address.PersonalAddressDao;
import org.projectforge.web.address.AddressPageSupport.AddressParameters;
import org.projectforge.web.wicket.AbstractEditForm;
import org.projectforge.web.wicket.bootstrap.GridSize;
import org.projectforge.web.wicket.flowlayout.DivPanel;
import org.projectforge.web.wicket.flowlayout.FieldType;
import org.projectforge.web.wicket.flowlayout.FieldsetPanel;
public class AddressEditForm extends AbstractEditForm<AddressDO, AddressEditPage>
{
private static final long serialVersionUID = 3881031215413525517L;
private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(AddressEditForm.class);
@SpringBean(name = "personalAddressDao")
private PersonalAddressDao personalAddressDao;
protected AddressPageSupport addressEditSupport;
private static final String PHONE_NUMBER_FAVORITE_LABEL = "*";
public AddressEditForm(final AddressEditPage parentPage, final AddressDO data)
{
super(parentPage, data);
}
@Override
protected void init()
{
super.init();
addressEditSupport = new AddressPageSupport(this, gridBuilder, (AddressDao) getBaseDao(), personalAddressDao, data);
/* GRID8 - BLOCK */
gridBuilder.newSplitPanel(GridSize.COL50, true).newSubSplitPanel(GridSize.COL50);
addressEditSupport.addName();
addressEditSupport.addFirstName();
final FieldsetPanel fs = (FieldsetPanel)addressEditSupport.addFormOfAddress();
final DivPanel checkBoxPanel = fs.addNewCheckBoxButtonDiv();
checkBoxPanel.addCheckBoxButton(new PropertyModel<Boolean>(addressEditSupport.personalAddress, "favoriteCard"), getString("favorite"),
getString("address.tooltip.vCardList"));
addressEditSupport.addTitle();
addressEditSupport.addWebsite();
// /////////////////
// Second box
// /////////////////
gridBuilder.newSubSplitPanel(GridSize.COL50);
addressEditSupport.addOrganization();
addressEditSupport.addDivision();
addressEditSupport.addPosition();
addressEditSupport.addEmail();
addressEditSupport.addPrivateEmail();
// /////////////////
// Status
// /////////////////
gridBuilder.newSplitPanel(GridSize.COL50, true).newSubSplitPanel(GridSize.COL50);
addressEditSupport.addBirthday();
addressEditSupport.addLanguage();
gridBuilder.newSubSplitPanel(GridSize.COL50);
addressEditSupport.addContactStatus();
addressEditSupport.addAddressStatus();
// /////////////////
// Phone numbers
// /////////////////
gridBuilder.newSubSplitPanel(GridSize.COL50);
addPhoneNumber("businessPhone", "address.phone", "address.business", "favoriteBusinessPhone", FieldType.PHONE_NO);
addPhoneNumber("fax", "address.phoneType.fax", "address.business", "favoriteFax", FieldType.PHONE_NO);
addPhoneNumber("mobilePhone", "address.phoneType.mobile", "address.business", "favoriteMobilePhone", FieldType.MOBILE_PHONE_NO);
gridBuilder.newSubSplitPanel(GridSize.COL50);
addPhoneNumber("privatePhone", "address.phone", "address.private", "favoritePrivatePhone", FieldType.PHONE_NO);
addPhoneNumber("privateMobilePhone", "address.phoneType.mobile", "address.private", "favoritePrivateMobilePhone",
FieldType.MOBILE_PHONE_NO);
// /////////////////
// Addresses
// /////////////////
gridBuilder.newSplitPanel(GridSize.COL50, true).newSubSplitPanel(GridSize.COL100);
addAddress(addressEditSupport.getBusinessAddressParameters());
gridBuilder.newSubSplitPanel(GridSize.COL100);
addAddress(addressEditSupport.getPostalAddressParameters());
gridBuilder.newSplitPanel(GridSize.COL50, true).newSubSplitPanel(GridSize.COL100);
addAddress(addressEditSupport.getPrivateAddressParameters());
gridBuilder.newSubSplitPanel(GridSize.COL100);
addressEditSupport.addFingerPrint();
addressEditSupport.addPublicKey();
gridBuilder.newGridPanel();
addressEditSupport.addComment();
addCloneButton();
}
private void addPhoneNumber(final String property, final String labelKey, final String labelDescriptionKey,
final String favoriteProperty, final FieldType fieldType)
{
final FieldsetPanel fs = (FieldsetPanel)addressEditSupport.addPhoneNumber(property, labelKey, labelDescriptionKey, fieldType);
final DivPanel checkBoxPanel = fs.addNewCheckBoxButtonDiv();
checkBoxPanel
.addCheckBoxButton(new PropertyModel<Boolean>(addressEditSupport.personalAddress, favoriteProperty), PHONE_NUMBER_FAVORITE_LABEL)
.setTooltip(getString("address.tooltip.phonelist"));
}
private void addAddress(final AddressParameters params)
{
addressEditSupport.addAddressText(params.addressType, params.addressTextProperty);
gridBuilder.newSubSplitPanel(GridSize.COL50);
addressEditSupport.addZipCode(params.zipCodeProperty);
addressEditSupport.addCity(params.cityProperty);
gridBuilder.newSubSplitPanel(GridSize.COL50);
addressEditSupport.addCountry(params.countryProperty);
addressEditSupport.addState(params.stateProperty);
}
@Override
protected Logger getLogger()
{
return log;
}
}