EN · DE · RU · FR · ES

#3150: UserPrefEditForm.java

projectforge-wicket/src/main/java/org/projectforge/web/user/UserPrefEditForm.java Classe Java, projectforge-wicket/src/main/java/org/projectforge/web/user/UserPrefEditForm.java 363 lignes · 306 code · 38 commentaires · 19 vides
Objectif : Fichier source : projectforge/web/user/UserPrefEditForm.java. UserPrefEditForm.java fait partie de l'application open-source de gestion de projet ProjectForge.

Source (100 premières lignes)

/////////////////////////////////////////////////////////////////////////////
//
// Project ProjectForge Community Edition
//         www.projectforge.org
//
// Copyright (C) 2001-2026 Micromata GmbH, Germany (www.micromata.com)
//
// ProjectForge est sous double licence.
//
// Cette édition communautaire est un logiciel libre ; vous pouvez le redistribuer et/ou
// le modifier selon les termes de la GNU General Public License telle que publiée
// par la Free Software Foundation ; version 3 de la Licence.
//
// Cette édition communautaire est distribuée dans l'espoir qu'elle sera utile,
// mais SANS AUCUNE GARANTIE ; sans même la garantie implicite de
// QUALITÉ MARCHANDE ou d'ADÉQUATION À UN USAGE PARTICULIER. Voir la GNU General
// Public License pour plus de détails.
//
// Vous devriez avoir reçu une copie de la GNU General Public License avec
// ce programme ; sinon, consultez http://www.gnu.org/licenses/.
//
/////////////////////////////////////////////////////////////////////////////

package org.projectforge.web.user;

import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.Component;
import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.markup.html.form.FormComponentUpdatingBehavior;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.validation.IValidatable;
import org.apache.wicket.validation.IValidator;
import org.projectforge.business.fibu.KundeDO;
import org.projectforge.business.fibu.ProjektDO;
import org.projectforge.business.fibu.kost.Kost2DO;
import org.projectforge.business.task.TaskDO;
import org.projectforge.business.user.UserPrefAreaRegistry;
import org.projectforge.business.user.UserPrefDao;
import org.projectforge.common.i18n.I18nEnum;
import org.projectforge.framework.persistence.user.api.ThreadLocalUserContext;
import org.projectforge.framework.persistence.user.api.UserPrefArea;
import org.projectforge.framework.persistence.user.entities.GroupDO;
import org.projectforge.framework.persistence.user.entities.PFUserDO;
import org.projectforge.framework.persistence.user.entities.UserPrefDO;
import org.projectforge.framework.persistence.user.entities.UserPrefEntryDO;
import org.projectforge.web.WicketSupport;
import org.projectforge.web.fibu.Kost2DropDownChoice;
import org.projectforge.web.fibu.NewCustomerSelectPanel;
import org.projectforge.web.fibu.NewProjektSelectPanel;
import org.projectforge.web.task.TaskSelectPanel;
import org.projectforge.web.wicket.AbstractEditForm;
import org.projectforge.web.wicket.WicketUtils;
import org.projectforge.web.wicket.bootstrap.GridSize;
import org.projectforge.web.wicket.components.LabelValueChoiceRenderer;
import org.projectforge.web.wicket.components.MaxLengthTextArea;
import org.projectforge.web.wicket.components.MaxLengthTextField;
import org.projectforge.web.wicket.components.RequiredMaxLengthTextField;
import org.projectforge.web.wicket.flowlayout.DivTextPanel;
import org.projectforge.web.wicket.flowlayout.FieldsetPanel;
import org.projectforge.web.wicket.flowlayout.InputPanel;
import org.projectforge.web.wicket.flowlayout.TextAreaPanel;
import org.slf4j.Logger;

import java.util.HashMap;
import java.util.Map;

public class UserPrefEditForm extends AbstractEditForm<UserPrefDO, UserPrefEditPage>
{
  private static final long serialVersionUID = 6647201995353615498L;

  private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(UserPrefEditForm.class);

  private boolean parameterCreated;

  protected Map<String, Component> dependentsMap = new HashMap<String, Component>();

  /**
   * @param parent       Nécessaire pour l'i18n
   * @param bean         est utilisé pour créer un PropertyModel.
   * @param propertyName est utilisé comme nom de propriété du modèle de propriété.
   * @return
   */
  public static DropDownChoice<UserPrefArea> createAreaDropdownChoice(final Component parent, final String id,
      final Object bean,
      final String propertyName, final boolean nullValid)
  {
    // DropDownChoice area
    final LabelValueChoiceRenderer<UserPrefArea> areaChoiceRenderer = createAreaChoiceRenderer(parent);
    final DropDownChoice<UserPrefArea> areaDropDownChoice = new DropDownChoice<UserPrefArea>(id,
        new PropertyModel<UserPrefArea>(bean,
            propertyName),
        areaChoiceRenderer.getValues(), areaChoiceRenderer);
    areaDropDownChoice.setNullValid(nullValid);
    return areaDropDownChoice;
  }

  public static LabelValueChoiceRenderer<UserPrefArea> createAreaChoiceRenderer(final Component parent)
  {
    // DropDownChoice area

Historique Git

868d6abb7 2025 -> 2026
15a449443 UserPrefEditForm corrigé : création des favoris de tâches.
63081666f En-têtes des fichiers source : 2024 -> 2025.
67805f2fc ThreadLocalUserContext.user -> ThreadLocalUserContext.loggedInUser (renommé pour éviter les malentendus dans le code).
4c04cfd65 CHANGEMENT-MAJEUR ! Migration des identifiants entiers vers des identifiants Long (y compris les clés étrangères, etc.)

868d6abb7

2025 -> 2026
868d6abb75cd191a892911ac8e45058932cf9074
diff --git a/projectforge-wicket/src/main/java/org/projectforge/web/user/UserPrefEditForm.java b/projectforge-wicket/src/main/java/org/projectforge/web/user/UserPrefEditForm.java
index 22e782f38..4caddf244 100644
--- a/projectforge-wicket/src/main/java/org/projectforge/web/user/UserPrefEditForm.java
+++ b/projectforge-wicket/src/main/java/org/projectforge/web/user/UserPrefEditForm.java
@@ -3,7 +3,7 @@
 // Project ProjectForge Community Edition
 //         www.projectforge.org
 //
-// Copyright (C) 2001-2025 Micromata GmbH, Germany (www.micromata.com)
+// Copyright (C) 2001-2026 Micromata GmbH, Germany (www.micromata.com)
 //
 // ProjectForge est sous double licence.
 //

15a449443

UserPrefEditForm corrigé : création des favoris de tâches.
15a4494431aa947ca995f7b9aa2ef4689ffea500
diff --git a/projectforge-wicket/src/main/java/org/projectforge/web/user/UserPrefEditForm.java b/projectforge-wicket/src/main/java/org/projectforge/web/user/UserPrefEditForm.java
index 475b97c98..22e782f38 100644
--- a/projectforge-wicket/src/main/java/org/projectforge/web/user/UserPrefEditForm.java
+++ b/projectforge-wicket/src/main/java/org/projectforge/web/user/UserPrefEditForm.java
@@ -235,8 +235,7 @@ public class UserPrefEditForm extends AbstractEditForm<UserPrefDO, UserPrefEditP
         WicketSupport.get(UserPrefDao.class).updateParameterValueObject(param);
         if (PFUserDO.class.isAssignableFrom(param.getType()) == true) {
           final UserSelectPanel userSelectPanel = new UserSelectPanel(fs.newChildId(),
-              new UserPrefPropertyModel<PFUserDO>(userPrefDao,
-                  param, "valueAsObject"),
+              new UserPrefPropertyModel<PFUserDO>(param, "valueAsObject"),
               parentPage, param.getParameter());
           if (data.getAreaObject() == UserPrefArea.USER_FAVORITE) {
             userSelectPanel.setShowFavorites(false);
@@ -245,8 +244,7 @@ public class UserPrefEditForm extends AbstractEditForm<UserPrefDO, UserPrefEditP
           userSelectPanel.init();
         } else if (TaskDO.class.isAssignableFrom(param.getType()) == true) {
           final TaskSelectPanel taskSelectPanel = new TaskSelectPanel(fs,
-              new UserPrefPropertyModel<TaskDO>(userPrefDao, param,
-                  "valueAsObject"),
+              new UserPrefPropertyModel<TaskDO>(param, "valueAsObject"),
               parentPage, param.getParameter());
           if (data.getAreaObject() == UserPrefArea.TASK_FAVORITE) {
             taskSelectPanel.setShowFavorites(false);
@@ -255,8 +253,7 @@ public class UserPrefEditForm extends AbstractEditForm<UserPrefDO, UserPrefEditP
           taskSelectPanel.init();
         } else if (GroupDO.class.isAssignableFrom(param.getType()) == true) {
           final NewGroupSelectPanel groupSelectPanel = new NewGroupSelectPanel(fs.newChildId(),
-              new UserPrefPropertyModel<GroupDO>(
-                  userPrefDao, param, "valueAsObject"),
+              new UserPrefPropertyModel<GroupDO>(param, "valueAsObject"),
               parentPage, param.getParameter());
           fs.add(groupSelectPanel);
           groupSelectPanel.init();
@@ -286,8 +283,7 @@ public class UserPrefEditForm extends AbstractEditForm<UserPrefDO, UserPrefEditP
           dependentsMap.put(param.getParameter(), kost2DropDownChoice);
         } else if (ProjektDO.class.isAssignableFrom(param.getType()) == true) {
           final NewProjektSelectPanel projektSelectPanel = new NewProjektSelectPanel(fs.newChildId(),
-              new UserPrefPropertyModel<ProjektDO>(
-                  userPrefDao, param, "valueAsObject"),
+              new UserPrefPropertyModel<ProjektDO>(param, "valueAsObject"),
               parentPage, param.getParameter());
           if (data.getAreaObject() == UserPrefArea.PROJEKT_FAVORITE) {
             projektSelectPanel.setShowFavorites(false);
@@ -296,8 +292,7 @@ public class UserPrefEditForm extends AbstractEditForm<UserPrefDO, UserPrefEditP
           projektSelectPanel.init();
         } else if (KundeDO.class.isAssignableFrom(param.getType()) == true) {
           final NewCustomerSelectPanel kundeSelectPanel = new NewCustomerSelectPanel(fs.newChildId(),
-              new UserPrefPropertyModel<KundeDO>(
-                  userPrefDao, param, "valueAsObject"),
+              new UserPrefPropertyModel<KundeDO>(param, "valueAsObject"),
               null, parentPage, param.getParameter());
           if (data.getAreaObject() == UserPrefArea.KUNDE_FAVORITE) {
             kundeSelectPanel.setShowFavorites(false);
@@ -315,7 +310,7 @@ public class UserPrefEditForm extends AbstractEditForm<UserPrefDO, UserPrefEditP
           final LabelValueChoiceRenderer<I18nEnum> choiceRenderer = new LabelValueChoiceRenderer<I18nEnum>(this,
               (I18nEnum[]) param.getType().getEnumConstants());
           final DropDownChoice<I18nEnum> choice = new DropDownChoice<I18nEnum>(fs.getDropDownChoiceId(),
-              new UserPrefPropertyModel<I18nEnum>(userPrefDao, param, "valueAsObject"), choiceRenderer.getValues(),

63081666f

En-têtes des fichiers source : 2024 -> 2025.
63081666f620fb87315f01b817e560e0b2f6a33a
diff --git a/projectforge-wicket/src/main/java/org/projectforge/web/user/UserPrefEditForm.java b/projectforge-wicket/src/main/java/org/projectforge/web/user/UserPrefEditForm.java
index 1131ed597..475b97c98 100644
--- a/projectforge-wicket/src/main/java/org/projectforge/web/user/UserPrefEditForm.java
+++ b/projectforge-wicket/src/main/java/org/projectforge/web/user/UserPrefEditForm.java
@@ -3,7 +3,7 @@
 // Project ProjectForge Community Edition
 //         www.projectforge.org
 //
-// Copyright (C) 2001-2024 Micromata GmbH, Germany (www.micromata.com)
+// Copyright (C) 2001-2025 Micromata GmbH, Germany (www.micromata.com)
 //
 // ProjectForge est sous double licence.
 //

67805f2fc

ThreadLocalUserContext.user -> ThreadLocalUserContext.loggedInUser (renommé pour éviter les malentendus dans le code).
67805f2fc1f3e6a6393accb4a757a8f4049b001c
diff --git a/projectforge-wicket/src/main/java/org/projectforge/web/user/UserPrefEditForm.java b/projectforge-wicket/src/main/java/org/projectforge/web/user/UserPrefEditForm.java
index ceda7663f..1131ed597 100644
--- a/projectforge-wicket/src/main/java/org/projectforge/web/user/UserPrefEditForm.java
+++ b/projectforge-wicket/src/main/java/org/projectforge/web/user/UserPrefEditForm.java
@@ -29,7 +29,6 @@ import org.apache.wicket.markup.html.form.DropDownChoice;
 import org.apache.wicket.markup.html.form.FormComponentUpdatingBehavior;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.PropertyModel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
 import org.apache.wicket.validation.IValidatable;
 import org.apache.wicket.validation.IValidator;
 import org.projectforge.business.fibu.KundeDO;
@@ -146,7 +145,7 @@ public class UserPrefEditForm extends AbstractEditForm<UserPrefDO, UserPrefEditP
     gridBuilder.newSplitPanel(GridSize.COL50);
     {
       // Utilisateur
-      data.setUser(ThreadLocalUserContext.getUser());
+      data.setUser(ThreadLocalUserContext.getLoggedInUser());
       final FieldsetPanel fs = gridBuilder.newFieldset(getString("user")).suppressLabelForWarning();
       fs.add(new DivTextPanel(fs.newChildId(), data.getUser().getFullname()));
     }

4c04cfd65

CHANGEMENT-MAJEUR ! Migration des identifiants entiers vers des identifiants Long (y compris les clés étrangères, etc.)
4c04cfd652210afe373d55f53a5300c85997b109
diff --git a/projectforge-wicket/src/main/java/org/projectforge/web/user/UserPrefEditForm.java b/projectforge-wicket/src/main/java/org/projectforge/web/user/UserPrefEditForm.java
index 1e7d7e946..ceda7663f 100644
--- a/projectforge-wicket/src/main/java/org/projectforge/web/user/UserPrefEditForm.java
+++ b/projectforge-wicket/src/main/java/org/projectforge/web/user/UserPrefEditForm.java
@@ -263,7 +263,7 @@ public class UserPrefEditForm extends AbstractEditForm<UserPrefDO, UserPrefEditP
           groupSelectPanel.init();
         } else if (Kost2DO.class.isAssignableFrom(param.getType()) == true) {
           final UserPrefEntryDO taskParam = data.getUserPrefEntry(param.getDependsOn());
-          Integer taskId = null;
+          Long taskId = null;
           if (taskParam == null) {
             log.error(
                 "Annotation pour les types Kost2DO doit avoir une annotation dependsOn valide. Paramètre de tâche introuvable pour : "
@@ -278,7 +278,7 @@ public class UserPrefEditForm extends AbstractEditForm<UserPrefDO, UserPrefEditP
               (Kost2DO) param.getValueAsObject(), taskId)
           {
             @Override
-            protected void setKost2Id(final Integer kost2Id)
+            protected void setKost2Id(final Long kost2Id)
             {
               param.setValue(String.valueOf(kost2Id));
             }