/////////////////////////////////////////////////////////////////////////////
//
// 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.plugins.skillmatrix;
import java.util.Date;
import org.apache.log4j.Logger;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.spring.injection.annot.SpringBean;
import org.hibernate.Hibernate;
import org.projectforge.user.PFUserDO;
import org.projectforge.web.user.UserSelectPanel;
import org.projectforge.web.wicket.AbstractEditForm;
import org.projectforge.web.wicket.bootstrap.GridSize;
import org.projectforge.web.wicket.components.DatePanel;
import org.projectforge.web.wicket.components.DatePanelSettings;
import org.projectforge.web.wicket.components.LabelValueChoiceRenderer;
import org.projectforge.web.wicket.components.MaxLengthTextArea;
import org.projectforge.web.wicket.flowlayout.FieldsetPanel;
/**
* This is the edit formular page.
* @author Werner Feder (werner.feder@t-online.de)
*/
public class TrainingAttendeeEditForm extends AbstractEditForm<TrainingAttendeeDO, TrainingAttendeeEditPage>
{
private static final long serialVersionUID = 6814668114853472909L;
private static final Logger log = Logger.getLogger(TrainingAttendeeEditForm.class);
private FieldsetPanel ratingFs, certificateFs;
private LabelValueChoiceRenderer<String> ratingChoiceRenderer, certificateChoiceRenderer;
@SpringBean(name = "trainingAttendeeDao")
private TrainingAttendeeDao trainingAttendeeDao;
@SpringBean(name = "skillDao")
private SkillDao skillDao;
/**
* @param parentPage
* @param data
*/
public TrainingAttendeeEditForm(final TrainingAttendeeEditPage parentPage, final TrainingAttendeeDO data)
{
super(parentPage, data);
}
@Override
public void init()
{
super.init();
gridBuilder.newSplitPanel(GridSize.COL50);
// Training
FieldsetPanel fs = gridBuilder.newFieldset(TrainingAttendeeDO.class, "training");
TrainingDO training = data.getTraining();
if (Hibernate.isInitialized(training) == false) {
training = trainingAttendeeDao.getTraingDao().getOrLoad(training.getId());
data.setTraining(training);
}
final TrainingSelectPanel trainingSelectPanel = new TrainingSelectPanel(fs.newChildId(),
new PropertyModel<TrainingDO>(data, "training"), parentPage, "trainingId");
trainingSelectPanel.setDefaultFormProcessing(false);
trainingSelectPanel.init().withAutoSubmit(true).setRequired(true);
fs.add(trainingSelectPanel);
// Attendee
fs = gridBuilder.newFieldset(TrainingAttendeeDO.class, "attendee");
PFUserDO attendee = data.getAttendee();
if (Hibernate.isInitialized(attendee) == false) {
attendee = trainingAttendeeDao.getUserDao().getOrLoad(attendee.getId());
data.setAttendee(attendee);
}
final UserSelectPanel attendeeSelectPanel = new UserSelectPanel(fs.newChildId(), new PropertyModel<PFUserDO>(data, "attendee"),
parentPage, "attendeeId");
fs.add(attendeeSelectPanel.setRequired(true));
attendeeSelectPanel.init();
if (isNew() == true) {
trainingSelectPanel.setFocus();
} else {
attendeeSelectPanel.setFocus();
}
{ // Rating
ratingFs = gridBuilder.newFieldset(TrainingAttendeeDO.class, "rating");
ratingChoiceRenderer = new LabelValueChoiceRenderer<String>();
ratingFs.addDropDownChoice(new PropertyModel<String>(data, "rating"), ratingChoiceRenderer.getValues(), ratingChoiceRenderer)
.setNullValid(true);
}
{ // Certificate
certificateFs = gridBuilder.newFieldset(TrainingAttendeeDO.class, "certificate");
certificateChoiceRenderer = new LabelValueChoiceRenderer<String>();
certificateFs.addDropDownChoice(new PropertyModel<String>(data, "certificate"), certificateChoiceRenderer.getValues(),
certificateChoiceRenderer).setNullValid(true);
}
{
// startDate
fs = gridBuilder.newFieldset(TrainingDO.class, "startDate");
fs.add(new DatePanel(fs.newChildId(), new PropertyModel<Date>(data, "startDate"), DatePanelSettings.get().withTargetType(
java.sql.Date.class)));
}
{
// EndDate
fs = gridBuilder.newFieldset(TrainingDO.class, "endDate");
fs.add(new DatePanel(fs.newChildId(), new PropertyModel<Date>(data, "endDate"), DatePanelSettings.get().withTargetType(
java.sql.Date.class)));
}
{ // Description
fs = gridBuilder.newFieldset(TrainingAttendeeDO.class, "description");
fs.add(new MaxLengthTextArea(fs.getTextAreaId(), new PropertyModel<String>(data, "description"))).setAutogrow();
}
}
/**
* @see org.projectforge.web.wicket.AbstractEditForm#onBeforeRender()
*/
@Override
public void onBeforeRender()
{
super.onBeforeRender();
final TrainingDO training = data.getTraining();
if (training != null) {
if (training.getRatingArray() != null) {
ratingChoiceRenderer.clear().setValueArray(training.getRatingArray());
ratingFs.setVisible(true);
} else ratingFs.setVisible(false);
if (training.getCertificateArray() != null) {
certificateChoiceRenderer.clear().setValueArray(training.getCertificateArray());
certificateFs.setVisible(true);
} else certificateFs.setVisible(false);
}
}
/**
* @see org.projectforge.web.wicket.AbstractEditForm#getLogger()
*/
@Override
protected Logger getLogger()
{
return log;
}
}