TimesheetEditSelectRecentDialogPanel.javaPaket: org.projectforge.web.timesheet
Klassen: TimesheetEditSelectRecentDialogPanel
Erweitert: ModalDialog
Methoden (10): init, addRecentSheetsTable, populateItem, populateItem, getObject, populateItem, newRowItem, createRecentTimeSheetSelectionLink, onClick, renderHead
Felder (4): serialVersionUID, showCost2Column, parentPage, form
Importe: 32 Pakete
package org.projectforge.web.timesheet;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
import org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable;
import org.apache.wicket.extensions.markup.html.repeater.data.table.HeadersToolbar;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.markup.head.IHeaderResponse;
import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.markup.repeater.OddEvenItem;
import org.apache.wicket.markup.repeater.data.IDataProvider;
import org.apache.wicket.markup.repeater.data.ListDataProvider;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.projectforge.business.common.OutputType;
import org.projectforge.business.task.TaskDO;
import org.projectforge.business.task.formatter.WicketTaskFormatter;
import org.projectforge.business.timesheet.TimesheetDO;
import org.projectforge.business.timesheet.TimesheetDao;
import org.projectforge.business.user.UserFormatter;
import org.projectforge.framework.persistence.user.api.ThreadLocalUserContext;
import org.projectforge.web.WicketSupport;
import org.projectforge.web.dialog.ModalDialog;
import org.projectforge.web.task.TaskPropertyColumn;
import org.projectforge.web.wicket.*;
import org.projectforge.web.wicket.flowlayout.DivPanel;
import org.projectforge.web.wicket.flowlayout.TablePanel;
import java.util.ArrayList;
import java.util.List;
public class TimesheetEditSelectRecentDialogPanel extends ModalDialog
{
private static final long serialVersionUID = -9175062586210446142L;
private final boolean showCost2Column;
private final TimesheetEditPage parentPage;
private final TimesheetEditForm form;
public TimesheetEditSelectRecentDialogPanel(final String id, final String title, final TimesheetEditPage parentPage,
final TimesheetEditForm form, final boolean showCost2Column)
{
super(id);
setTitle(title);
this.parentPage = parentPage;
this.form = form;
this.showCost2Column = showCost2Column;
setBigWindow();
}
/**
* @see org.projectforge.web.dialog.ModalDialog#init()
*/
@Override
public void init()
{
init(new Form<String>(getFormId()));
addRecentSheetsTable();
}
@SuppressWarnings({ "serial" })
private void addRecentSheetsTable()
{
final List<IColumn<TimesheetDO, String>> columns = new ArrayList<IColumn<TimesheetDO, String>>();
final CellItemListener<TimesheetDO> cellItemListener = new CellItemListener<TimesheetDO>()
{
@Override
public void populateItem(final Item<ICellPopulator<TimesheetDO>> item, final String componentId,
final IModel<TimesheetDO> rowModel)
{
final TimesheetDO timesheet = rowModel.getObject();
final int rowIndex = ((Item<?>) item.findParent(Item.class)).getIndex();
String cssClasses = null;
if (timesheet.getDeleted() == true) {
cssClasses = RowCssClass.MARKED_AS_DELETED.getCssClass();
} else if (rowIndex < TimesheetEditPage.SIZE_OF_FIRST_RECENT_BLOCK) {
cssClasses = RowCssClass.IMPORTANT_ROW.getCssClass();
}
if (cssClasses != null) {
item.add(AttributeModifier.append("class", cssClasses));
}
}
};
if (showCost2Column == true) { // Ist möglicherweise unsichtbar, existiert aber immer, wenn Kosten2-Einträge im System vorhanden sind.
columns
.add(new CellItemListenerPropertyColumn<TimesheetDO>(getString("fibu.kost2"), null, "kost2.displayName",
cellItemListener)
{
@Override
public void populateItem(final Item<ICellPopulator<TimesheetDO>> item, final String componentId,
final IModel<TimesheetDO> rowModel)
{
final TimesheetDO timesheet = rowModel.getObject();
final ListSelectActionPanel actionPanel = new ListSelectActionPanel(componentId,
createRecentTimeSheetSelectionLink(timesheet), new Model<String>()
{
@Override
public String getObject()
{
final StringBuilder buf = new StringBuilder();
if (timesheet.getKost2() != null) {
buf.append(timesheet.getKost2().getDisplayName());
}
if (timesheet.getUserId() != null
&& timesheet.getUserId().equals(ThreadLocalUserContext.getLoggedInUserId()) == false) {
if (timesheet.getKost2() != null) {
buf.append(", ");
}
buf.append(WicketSupport.get(UserFormatter.class).getFormattedUser(timesheet.getUserId()));
}
return buf.toString();
}
// ... (gekürzt, insgesamt 233 Zeilen)
868d6abb7 2025 -> 2026 63081666f Quellcode-Dateiköpfe: 2024 -> 2025. 3785f8347 Migration in Arbeit... a72903e36 *.java, *.kt: StringBuffer -> StringBuilder. 67805f2fc ThreadLocalUserContext.user -> ThreadLocalUserContext.loggedInUser (umbenannt, um Missverständnisse im Code zu vermeiden).