EN · DE · RU · FR · ES

#3097 : TeamCalFilterDialog.java

projectforge-wicket/src/main/java/org/projectforge/web/teamcal/dialog/TeamCalFilterDialog.java Type : Java · Rôle : Calendrier · Source : projectforge-wicket/src/main/java/org/projectforge/web/teamcal/dialog/TeamCalFilterDialog.java 477 lignes · 372 code · 60 commentaires · 45 vides
Bean de critères de filtre/recherche pour les requêtes TeamCalDialog. Étend BaseSearchFilter pour fournir des paramètres de requête typés pour les vues de liste et les exportations Excel.

Structure du code

Paquetage : org.projectforge.web.teamcal.dialog

Classes : TeamCalFilterDialog

Étend : ModalDialog

Méthodes (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...

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

Importations : 43 paquetages

Code source (abrégé)

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;

  // Adaptation (factice) pour afficher "Feuilles de temps" comme option de sélection
  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
// ... (tronqué, total 455 lignes)

Historique Git

868d6abb7 2025 -> 2026
63081666f En-têtes des fichiers source : 2024 -> 2025.
1b50060c3 BaseDao : renommé : get -> find, save -> insert, getList -> select, load -> select
67805f2fc ThreadLocalUserContext.user -> ThreadLocalUserContext.loggedInUser (renommé pour éviter les malentendus dans le code).
b095e6f7d !!!!! Changement majeur de la gestion des transactions : réutilisation de PfPersistenceContext autant que possible (pas encore terminé). Les tests ne fonctionnent pas encore.