Package org.projectforge.web.orga

Source Code of org.projectforge.web.orga.ContractEditForm

/////////////////////////////////////////////////////////////////////////////
//
// Project ProjectForge Community Edition
//         www.projectforge.org
//
// Copyright (C) 2001-2014 Kai Reinhard (k.reinhard@micromata.de)
//
// ProjectForge is dual-licensed.
//
// This community edition is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License as published
// by the Free Software Foundation; version 3 of the License.
//
// This community edition is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
// Public License for more details.
//
// You should have received a copy of the GNU General Public License along
// with this program; if not, see http://www.gnu.org/licenses/.
//
/////////////////////////////////////////////////////////////////////////////

package org.projectforge.web.orga;

import java.util.Date;
import java.util.List;

import org.apache.log4j.Logger;
import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.PropertyModel;
import org.projectforge.common.NumberHelper;
import org.projectforge.core.ConfigXml;
import org.projectforge.orga.ContractDO;
import org.projectforge.orga.ContractStatus;
import org.projectforge.orga.ContractType;
import org.projectforge.web.wicket.AbstractEditForm;
import org.projectforge.web.wicket.WicketUtils;
import org.projectforge.web.wicket.autocompletion.PFAutoCompleteMaxLengthTextField;
import org.projectforge.web.wicket.autocompletion.PFAutoCompleteTextField;
import org.projectforge.web.wicket.bootstrap.GridSize;
import org.projectforge.web.wicket.components.DatePanel;
import org.projectforge.web.wicket.components.DatePanelSettings;
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.MinMaxNumberField;
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;

public class ContractEditForm extends AbstractEditForm<ContractDO, ContractEditPage>
{
  private static final long serialVersionUID = -2138017238114715368L;

  private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(ContractEditForm.class);

  protected DatePanel datePanel, validFromDatePanel, validUntilDatePanel, dueDatePanel, resubmissionDatePanel, signingDatePanel;

  protected MinMaxNumberField<Integer> numberField;

  public ContractEditForm(final ContractEditPage parentPage, final ContractDO data)
  {
    super(parentPage, data);
  }

  @SuppressWarnings("serial")
  private PFAutoCompleteTextField<String> createAutocompleteTextField(final String property)
  {
    final PFAutoCompleteTextField<String> textField = new PFAutoCompleteMaxLengthTextField(InputPanel.WICKET_ID, new PropertyModel<String>(
        data, property)) {
      @Override
      protected List<String> getChoices(final String input)
      {
        return parentPage.getBaseDao().getAutocompletion(property, input);
      }
    }.withMatchContains(true).withMinChars(2);
    return textField;
  }

  @Override
  protected void init()
  {
    super.init();
    // GRID 50% - BLOCK
    gridBuilder.newSplitPanel(GridSize.COL50);
    {
      // Number
      final FieldsetPanel fs = gridBuilder.newFieldset(getString("legalAffaires.contract.number"));
      fs.add(new DivTextPanel(fs.newChildId(), "C-"));
      numberField = new MinMaxNumberField<Integer>(InputPanel.WICKET_ID, new PropertyModel<Integer>(data, "number"), 0, 99999999);
      numberField.setMaxLength(8);
      WicketUtils.setSize(numberField, 6);
      fs.add(numberField);
      if (NumberHelper.greaterZero(getData().getNumber()) == false) {
        fs.addHelpIcon(getString("fibu.tooltip.nummerWirdAutomatischVergeben"));
      }
    }
    {
      // Date
      final FieldsetPanel fs = gridBuilder.newFieldset(getString("date"));
      datePanel = new DatePanel(fs.newChildId(), new PropertyModel<Date>(data, "date"), DatePanelSettings.get().withTargetType(
          java.sql.Date.class));
      fs.add(datePanel);
    }
    {
      // Title
      final FieldsetPanel fs = gridBuilder.newFieldset(getString("title"));
      fs.add(createAutocompleteTextField("title")).getField().setRequired(true).add(WicketUtils.setFocus());
    }
    {
      // Contract type
      final FieldsetPanel fs = gridBuilder.newFieldset(getString("legalAffaires.contract.type"));
      final List<ContractType> contractTypes = ConfigXml.getInstance().getContractTypes();
      final LabelValueChoiceRenderer<ContractType> typeChoiceRenderer = new LabelValueChoiceRenderer<ContractType>(contractTypes);
      final DropDownChoice<ContractType> typeChoice = new DropDownChoice<ContractType>(fs.getDropDownChoiceId(),
          new PropertyModel<ContractType>(data, "type"), typeChoiceRenderer.getValues(), typeChoiceRenderer);
      typeChoice.setNullValid(false);
      fs.add(typeChoice);
    }
    {
      // Status
      final FieldsetPanel fs = gridBuilder.newFieldset(getString("status"));
      // DropDownChoice for convenient selection of time periods.
      final LabelValueChoiceRenderer<String> statusChoiceRenderer = new LabelValueChoiceRenderer<String>();
      for (final ContractStatus status : ContractStatus.values()) {
        statusChoiceRenderer.addValue(status.name(), getString(status.getI18nKey()));
      }
      final DropDownChoice<String> statusChoice = new DropDownChoice<String>(fs.getDropDownChoiceId(), new PropertyModel<String>(data,
          "status"), statusChoiceRenderer.getValues(), statusChoiceRenderer);
      statusChoice.setNullValid(false);
      fs.add(statusChoice);

    }
    gridBuilder.newSplitPanel(GridSize.COL50);
    {
      // Reference
      final FieldsetPanel fs = gridBuilder.newFieldset(getString("fibu.common.reference"));
      fs.add(new MaxLengthTextField(InputPanel.WICKET_ID, new PropertyModel<String>(data, "reference")));
    }
    {
      // Resubmission date
      final FieldsetPanel fs = gridBuilder.newFieldset(getString("resubmissionOnDate"));
      resubmissionDatePanel = new DatePanel(fs.newChildId(), new PropertyModel<Date>(data, "resubmissionOnDate"), DatePanelSettings.get()
          .withTargetType(java.sql.Date.class));
      fs.add(resubmissionDatePanel);
    }
    {
      // Due date
      final FieldsetPanel fs = gridBuilder.newFieldset(getString("dueDate"));
      dueDatePanel = new DatePanel(fs.newChildId(), new PropertyModel<Date>(data, "dueDate"), DatePanelSettings.get().withTargetType(
          java.sql.Date.class));
      fs.add(dueDatePanel);
    }
    {
      // Signing date
      final FieldsetPanel fs = gridBuilder.newFieldset(getString("legalAffaires.contract.signing"), getString("date"));
      signingDatePanel = new DatePanel(fs.newChildId(), new PropertyModel<Date>(data, "signingDate"), DatePanelSettings.get()
          .withTargetType(java.sql.Date.class));
      fs.add(signingDatePanel);
    }
    {
      // Validity
      final FieldsetPanel fs = gridBuilder.newFieldset(getString("legalAffaires.contract.validity"));
      validFromDatePanel = new DatePanel(fs.newChildId(), new PropertyModel<Date>(data, "validFrom"), DatePanelSettings.get()
          .withTargetType(java.sql.Date.class));
      fs.add(validFromDatePanel);
      fs.add(new DivTextPanel(fs.newChildId(), "-"));
      validUntilDatePanel = new DatePanel(fs.newChildId(), new PropertyModel<Date>(data, "validUntil"), DatePanelSettings.get()
          .withTargetType(java.sql.Date.class));
      fs.add(validUntilDatePanel);
    }
    gridBuilder.newSplitPanel(GridSize.COL50);
    {
      // CocontractorA
      final FieldsetPanel fs = gridBuilder.newFieldset(getString("legalAffaires.contract.coContractorA"));
      fs.add(createAutocompleteTextField("coContractorA"));
    }
    {
      // CopersonA
      final FieldsetPanel fs = gridBuilder.newFieldset(getString("legalAffaires.contract.contractPersonA"));
      fs.add(createAutocompleteTextField("contractPersonA"));
    }
    {
      // SignerA
      final FieldsetPanel fs = gridBuilder.newFieldset(getString("legalAffaires.contract.signerA"));
      fs.add(createAutocompleteTextField("signerA"));
    }
    /* GRID8 */
    gridBuilder.newSplitPanel(GridSize.COL50);
    {
      // CocontractorB
      final FieldsetPanel fs = gridBuilder.newFieldset(getString("legalAffaires.contract.coContractorB"));
      fs.add(createAutocompleteTextField("coContractorB"));
    }
    {
      // CopersonB
      final FieldsetPanel fs = gridBuilder.newFieldset(getString("legalAffaires.contract.contractPersonB"));
      fs.add(createAutocompleteTextField("contractPersonB"));
    }
    {
      // SignerB
      final FieldsetPanel fs = gridBuilder.newFieldset(getString("legalAffaires.contract.signerB"));
      fs.add(createAutocompleteTextField("signerB"));
    }
    /* GRID16 */
    gridBuilder.newGridPanel();
    {
      // Text with JIRA support
      final FieldsetPanel fs = gridBuilder.newFieldset(getString("text"));
      final IModel<String> model = new PropertyModel<String>(data, "text");
      fs.add(new MaxLengthTextArea(TextAreaPanel.WICKET_ID, model));
      fs.addJIRAField(model);
    }
    {
      // Filing
      final FieldsetPanel fs = gridBuilder.newFieldset(getString("filing"));
      fs.add(new MaxLengthTextField(InputPanel.WICKET_ID, new PropertyModel<String>(data, "filing")));
    }
    addCloneButton();
  }

  @Override
  protected Logger getLogger()
  {
    return log;
  }
}
TOP

Related Classes of org.projectforge.web.orga.ContractEditForm

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.