EN · DE · RU · FR · ES

#3097: TeamCalFilterDialog.java

projectforge-wicket/src/main/java/org/projectforge/web/teamcal/dialog/TeamCalFilterDialog.java Typ: Java · Rolle: Kalender · Quelle: projectforge-wicket/src/main/java/org/projectforge/web/teamcal/dialog/TeamCalFilterDialog.java 477 Zeilen · 372 Code · 60 Kommentare · 45 leer
Bean für Filter-/Suchkriterien für TeamCalDialog-Abfragen. Erweitert BaseSearchFilter, um typisierte Abfrageparameter für Listenansichten und Excel-Exporte bereitzustellen.

Codestruktur

Paket: org.projectforge.web.teamcal.dialog

Klassen: TeamCalFilterDialog

Erweitert: ModalDialog

Methoden (28): renderHead, handleCloseEvent, onCancelButtonSubmit, onCloseButtonSubmit, onClose, init, callback, redraw, redrawTimesheetsUserControls, onUpdate, redrawOptionControls, open, openNew, myClose, addFilterFieldset, getObject, setObject, onInitialize, addTeamCalsChoiceFieldset, onUpdate, addDefaultCalenderSelection, getDisplayValue, getModel, onBeforeRender, onUpdate...

Felder (15): serialVersionUID, selectedCalendars, templateName, timesheetsCalendar, filter, backupFilter, calendarColorPanel, defaultCalendarSelect, teamCalsChoice, optionsControls, optionsFieldset, timesheetUserControls, timesheetUserFieldset, calendarPageSupport, serialVersionUID

Importe: 43 Pakete

Quellcode (gekürzt)

package org.projectforge.web.teamcal.dialog;

import de.micromata.wicket.ajax.AjaxCallback;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
import org.apache.wicket.ajax.form.OnChangeAjaxBehavior;
import org.apache.wicket.extensions.markup.html.form.select.IOptionRenderer;
import org.apache.wicket.extensions.markup.html.form.select.Select;
import org.apache.wicket.extensions.markup.html.form.select.SelectOptions;
import org.apache.wicket.markup.head.CssHeaderItem;
import org.apache.wicket.markup.head.IHeaderResponse;
import org.apache.wicket.markup.head.JavaScriptReferenceHeaderItem;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.model.ResourceModel;
import org.projectforge.Constants;
import org.projectforge.business.teamcal.admin.TeamCalDao;
import org.projectforge.business.teamcal.admin.model.TeamCalDO;
import org.projectforge.business.teamcal.event.right.TeamEventRight;
import org.projectforge.business.teamcal.filter.TeamCalCalendarFilter;
import org.projectforge.business.teamcal.filter.TemplateEntry;
import org.projectforge.business.user.UserGroupCache;
import org.projectforge.business.user.UserRightId;
import org.projectforge.framework.persistence.api.UserRightService;
import org.projectforge.framework.persistence.user.api.ThreadLocalUserContext;
import org.projectforge.framework.persistence.user.entities.PFUserDO;
import org.projectforge.web.WicketSupport;
import org.projectforge.web.calendar.CalendarPageSupport;
import org.projectforge.web.dialog.ModalDialog;
import org.projectforge.web.fibu.ISelectCallerPage;
import org.projectforge.web.user.UserSelectPanel;
import org.projectforge.web.wicket.WicketUtils;
import org.projectforge.web.wicket.bootstrap.GridSize;
import org.projectforge.web.wicket.components.AjaxMaxLengthEditableLabel;
import org.projectforge.web.wicket.components.SingleButtonPanel;
import org.projectforge.web.wicket.flowlayout.DivPanel;
import org.projectforge.web.wicket.flowlayout.FieldsetPanel;
import org.projectforge.web.wicket.flowlayout.Heading3Panel;
import org.projectforge.web.wicket.flowlayout.SelectPanel;
import org.wicketstuff.select2.Select2MultiChoice;

import java.util.*;

/**
 * @author M. Lauterbach (m.lauterbach@micromata.de)
 * @author K. Reinhard (k.reinhard@micromata.de)
 */
public class TeamCalFilterDialog extends ModalDialog
{
  private static final long serialVersionUID = 8687197318833240410L;

  private final List<TeamCalDO> selectedCalendars;

  private AjaxMaxLengthEditableLabel templateName;

  // Anpassung (Attrappe) zur Anzeige von "Zeiterfassung" als Auswahloption
  private final TeamCalDO timesheetsCalendar = new TeamCalDO();

  private final TeamCalCalendarFilter filter;

  private TeamCalCalendarFilter backupFilter;

  private TeamCalFilterDialogCalendarColorPanel calendarColorPanel;

  private Select<Long> defaultCalendarSelect;

  private Select2MultiChoice<TeamCalDO> teamCalsChoice;

  private WebMarkupContainer optionsControls;

  private FieldsetPanel optionsFieldset;

  private WebMarkupContainer timesheetUserControls;

  private FieldsetPanel timesheetUserFieldset;

  private final transient TeamEventRight teamEventRight;

  private CalendarPageSupport calendarPageSupport;

  /**
   * @param id
   * @param filter
   */
  public TeamCalFilterDialog(final String id, final TeamCalCalendarFilter filter)
  {
    super(id);
    this.filter = filter;
    setTitle(new ResourceModel("plugins.teamcal.calendar.filterDialog.title"));
    setBigWindow().setShowCancelButton().wantsNotificationOnClose().setEscapeKeyEnabled(false);
    selectedCalendars = new LinkedList<TeamCalDO>();
    teamEventRight = (TeamEventRight) WicketSupport.get(UserRightService.class).getRight(UserRightId.PLUGIN_CALENDAR_EVENT);
  }

  @Override
  public void renderHead(final IHeaderResponse response)
  {
    super.renderHead(response);
    response.render(CssHeaderItem.forUrl("scripts/spectrum/spectrum.css"));
    response.render(JavaScriptReferenceHeaderItem.forUrl("scripts/spectrum/spectrum.js"));
  }

  /**
   * @see org.projectforge.web.dialog.ModalDialog#handleCloseEvent(org.apache.wicket.ajax.AjaxRequestTarget)
   */
  @Override
  protected void handleCloseEvent(final AjaxRequestTarget target)
  {
    myClose(target);
  }

  /**
   * @see org.projectforge.web.dialog.ModalDialog#onCancelButtonSubmit(org.apache.wicket.ajax.AjaxRequestTarget)
   */
  @Override
// ... (gekürzt, insgesamt 455 Zeilen)

Git-Verlauf

868d6abb7 2025 -> 2026
63081666f Quellcode-Dateiköpfe: 2024 -> 2025.
1b50060c3 BaseDao: umbenannt: get -> find, save -> insert, getList -> select, load -> select
67805f2fc ThreadLocalUserContext.user -> ThreadLocalUserContext.loggedInUser (umbenannt, um Missverständnisse im Code zu vermeiden).
b095e6f7d !!!!! Große Änderung der Transaktionsverwaltung: Verwendet PfPersistenceContext so weit wie möglich wieder (noch nicht abgeschlossen). Tests laufen noch nicht.