EN · DE · RU · FR · ES

#3084: TaskTreeForm.java

projectforge-wicket/src/main/java/org/projectforge/web/task/TaskTreeForm.java Тип: Java · Роль: Задача · Источник: projectforge-wicket/src/main/java/org/projectforge/web/task/TaskTreeForm.java 227 строк · 182 кода · 24 комментария · 21 пустая
Реализация формы Wicket для TaskTree. Обрабатывает валидацию формы, логику отправки и привязку полей к сущности.

Структура кода

Пакет: org.projectforge.web.task

Классы: TaskTreeForm, MyCheckBoxPanel

Расширяет: AbstractSecuredForm

Методы (10): init, onSubmit, onSubmit, onSubmit, onSubmit, onBeforeRender, setComponentsVisibility, getSearchFilter, onSubmit, onUpdate

Поля (8): serialVersionUID, searchFilter, actionButtons, cancelButtonPanel, resetButtonPanel, listViewButtonPanel, searchButtonPanel, gridBuilder

Импорты: 15 пакетов

Исходный код (сокращённый)

package org.projectforge.web.task;

import org.apache.wicket.Component;
import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.markup.html.form.FormComponentUpdatingBehavior;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.PropertyModel;
import org.projectforge.Constants;
import org.projectforge.business.task.TaskFilter;
import org.projectforge.web.wicket.AbstractSecuredForm;
import org.projectforge.web.wicket.WicketUtils;
import org.projectforge.web.wicket.bootstrap.GridBuilder;
import org.projectforge.web.wicket.bootstrap.GridSize;
import org.projectforge.web.wicket.components.SingleButtonPanel;
import org.projectforge.web.wicket.flowlayout.*;

public class TaskTreeForm extends AbstractSecuredForm<TaskFilter, TaskTreePage>
{
  private static final long serialVersionUID = -203572415793301622L;

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

  private TaskFilter searchFilter;

  private MyComponentsRepeater<Component> actionButtons;

  private SingleButtonPanel cancelButtonPanel;

  private SingleButtonPanel resetButtonPanel;

  private SingleButtonPanel listViewButtonPanel;

  private SingleButtonPanel searchButtonPanel;

  protected GridBuilder gridBuilder;

  @Override
  @SuppressWarnings("serial")
  protected void init()
  {
    super.init();
    add(createFeedbackPanel());
    gridBuilder = newGridBuilder(this, "flowform");
    {
      gridBuilder.newSplitPanel(GridSize.COL50);
      final FieldsetPanel fs = gridBuilder.newFieldset(getString("searchFilter"));
      final TextField<String> searchField = new TextField<String>(InputPanel.WICKET_ID,
          new PropertyModel<String>(getSearchFilter(),
              "searchString"));
      searchField.add(WicketUtils.setFocus());
      fs.add(new InputPanel(fs.newChildId(), searchField));
      fs.add(new IconPanel(fs.newIconChildId(), IconType.HELP, getString("tooltip.lucene.link")).setOnClickLocation(
          getRequestCycle(),
          Constants.WEB_DOCS_LINK_HANDBUCH_LUCENE, true), FieldSetIconPosition.TOP_RIGHT);
    }
    {
      gridBuilder.newSplitPanel(GridSize.COL50);
      final FieldsetPanel fs = gridBuilder.newFieldset(getString("label.options")).suppressLabelForWarning();
      final DivPanel checkBoxPanel = fs.addNewCheckBoxButtonDiv();
      checkBoxPanel.add(
          new MyCheckBoxPanel(checkBoxPanel.newChildId(), new PropertyModel<Boolean>(getSearchFilter(), "notOpened"),
              getString("task.status.notOpened")));
      checkBoxPanel
          .add(new MyCheckBoxPanel(checkBoxPanel.newChildId(), new PropertyModel<Boolean>(getSearchFilter(), "opened"),
              getString("task.status.opened")));
      checkBoxPanel
          .add(new MyCheckBoxPanel(checkBoxPanel.newChildId(), new PropertyModel<Boolean>(getSearchFilter(), "closed"),
              getString("task.status.closed")));
      checkBoxPanel
          .add(new MyCheckBoxPanel(checkBoxPanel.newChildId(), new PropertyModel<Boolean>(getSearchFilter(), "deleted"),
              getString("deleted")));
    }

    actionButtons = new MyComponentsRepeater<Component>("actionButtons");
    add(actionButtons.getRepeatingView());
    {
      final Button cancelButton = new Button("button", new Model<String>("cancel"))
      {
        @Override
        public final void onSubmit()
        {
          getParentPage().onCancelSubmit();
        }
      };
      cancelButton.setDefaultFormProcessing(false);
      cancelButtonPanel = new SingleButtonPanel(actionButtons.newChildId(), cancelButton, getString("cancel"),
          SingleButtonPanel.CANCEL);
      actionButtons.add(cancelButtonPanel);
    }
    {
      final Button resetButton = new Button("button", new Model<String>("reset"))
      {
        @Override
        public final void onSubmit()
        {
          getParentPage().onResetSubmit();
        }
      };
      resetButton.setDefaultFormProcessing(false);
      resetButtonPanel = new SingleButtonPanel(actionButtons.newChildId(), resetButton, getString("reset"),
          SingleButtonPanel.RESET);
      actionButtons.add(resetButtonPanel);
    }
    {
      final Button listViewButton = new Button("button", new Model<String>("listView"))
      {
        @Override
        public final void onSubmit()
        {
          getParentPage().onListViewSubmit();
        }
      };

      listViewButtonPanel = new SingleButtonPanel(actionButtons.newChildId(), listViewButton, getString("listView"),
          SingleButtonPanel.NORMAL);
      actionButtons.add(listViewButtonPanel);
    }
// ... (сокращено, всего 205 строк)

История Git

868d6abb7 2025 -> 2026
63081666f Заголовки исходных файлов: 2024-> 2025.
a73905c14 Исправление опечаток в каталогах projectforge*/ Найдено с помощью codespell См. c3b0602a893
b6092df09 Авторские права 2023 -> 2024
ab45d51fa Авторские права 2001-2022 -> 2001-2023.