/////////////////////////////////////////////////////////////////////////////
//
// 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.poll;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import org.apache.log4j.Logger;
import org.apache.wicket.markup.html.form.RequiredTextField;
import org.apache.wicket.markup.html.form.TextArea;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.spring.injection.annot.SpringBean;
import org.projectforge.access.AccessChecker;
import org.projectforge.plugins.poll.attendee.PollAttendeeDO;
import org.projectforge.plugins.poll.attendee.PollAttendeeDao;
import org.projectforge.user.PFUserDO;
import org.projectforge.web.common.MultiChoiceListHelper;
import org.projectforge.web.user.UsersComparator;
import org.projectforge.web.user.UsersProvider;
import org.projectforge.web.wicket.AbstractEditForm;
import org.projectforge.web.wicket.autocompletion.PFAutoCompleteTextField;
import org.projectforge.web.wicket.bootstrap.GridSize;
import org.projectforge.web.wicket.flowlayout.FieldsetPanel;
import com.vaynberg.wicket.select2.Select2MultiChoice;
/**
*
* @author Johannes Unterstein (j.unterstein@micromata.de)
* @author M. Lauterbach (m.lauterbach@micromata.de)
*
*/
public class PollEditForm extends AbstractEditForm<PollDO, PollEditPage>
{
private static final long serialVersionUID = 1268981578238971117L;
private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(PollEditForm.class);
@SpringBean(name = "accessChecker")
protected AccessChecker accessChecker;
@SpringBean(name = "pollAttendeeDao")
protected PollAttendeeDao pollAttendeeDao;
// @SpringBean(name = "pollEventDao")
// protected PollEventDao pollEventDao;
/**
* @param parentPage
* @param data
*/
public PollEditForm(final PollEditPage parentPage, final PollDO data)
{
super(parentPage, data);
}
/**
* @see org.projectforge.web.wicket.AbstractEditForm#init()
*/
@Override
protected void init()
{
super.init();
final Collection<PFUserDO> attendeePFUserList = new ArrayList<PFUserDO>();
final Collection<String> emailList = new ArrayList<String>();
for (final PollAttendeeDO attendee : pollAttendeeDao.getListByPoll(data)) {
if (attendee.getUser() != null) {
attendeePFUserList.add(attendee.getUser());
} else {
if (attendee.getEmail() != null) {
emailList.add(attendee.getEmail());
}
}
}
gridBuilder.newSplitPanel(GridSize.COL50);
// new title
final FieldsetPanel fsTitle = gridBuilder.newFieldset(getString("plugins.poll.new.title"));
final RequiredTextField<String> title = new RequiredTextField<String>(fsTitle.getTextFieldId(), new PropertyModel<String>(this.data, "title"));
fsTitle.add(title);
// new location
final FieldsetPanel fsLocation = gridBuilder.newFieldset(getString("plugins.poll.new.location"));
final PFAutoCompleteTextField<String> location = new PFAutoCompleteTextField<String>(fsLocation.getTextFieldId(), new PropertyModel<String>(
this.data, "location")) {
private static final long serialVersionUID = -2309992819521957913L;
@Override
protected List<String> getChoices(final String input)
{
return getBaseDao().getAutocompletion("location", input);
}
};
fsLocation.add(location);
// new description
final FieldsetPanel fsDesc = gridBuilder.newFieldset(getString("plugins.poll.new.description"));
final TextArea<String> desc = new TextArea<String>(fsDesc.getTextAreaId(), new PropertyModel<String>(this.data, "description"));
fsDesc.add(desc);
// attendee list
final FieldsetPanel fsAttendee = gridBuilder.newFieldset(getString("plugins.poll.attendee.users"));
final UsersProvider usersProvider = new UsersProvider();
final MultiChoiceListHelper<PFUserDO> attendeeHelper = new MultiChoiceListHelper<PFUserDO>().setComparator(new UsersComparator())
.setFullList(usersProvider.getSortedUsers());
attendeeHelper.setAssignedItems(attendeePFUserList);
final Select2MultiChoice<PFUserDO> attendees = new Select2MultiChoice<PFUserDO>(fsAttendee.getSelect2MultiChoiceId(),
new PropertyModel<Collection<PFUserDO>>(attendeeHelper, "assignedItems"), usersProvider);
fsAttendee.add(attendees);
// new email list
// TODO email list
}
/**
* @see org.projectforge.web.wicket.AbstractEditForm#getLogger()
*/
@Override
protected Logger getLogger()
{
return log;
}
}