Package org.projectforge.web.fibu

Source Code of org.projectforge.web.fibu.ReportObjectivesForm

/////////////////////////////////////////////////////////////////////////////
//
// 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.fibu;

import java.util.Date;

import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.FormComponent;
import org.apache.wicket.markup.html.form.upload.FileUploadField;
import org.apache.wicket.markup.html.form.validation.IFormValidator;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.util.lang.Bytes;
import org.projectforge.common.DateHolder;
import org.projectforge.web.wicket.AbstractStandardForm;
import org.projectforge.web.wicket.components.DatePanel;
import org.projectforge.web.wicket.components.DatePanelSettings;
import org.projectforge.web.wicket.components.SingleButtonPanel;
import org.projectforge.web.wicket.flowlayout.DivPanel;
import org.projectforge.web.wicket.flowlayout.DivTextPanel;
import org.projectforge.web.wicket.flowlayout.FieldsetPanel;
import org.projectforge.web.wicket.flowlayout.FileUploadPanel;

public class ReportObjectivesForm extends AbstractStandardForm<ReportObjectivesFilter, ReportObjectivesPage>
{
  private static final long serialVersionUID = -2262096357903710703L;

  private static final String KEY_REPORT_FILTER = "ReportObjectivesForm:filter";

  protected FileUploadField fileUploadField;

  protected ReportObjectivesFilter filter;

  private ReportObjectivesPanel reportObjectivesPanel;

  private DatePanel fromDatePanel, toDatePanel;

  private final FormComponent< ? >[] dependentFormComponents = new FormComponent[2];

  public ReportObjectivesForm(final ReportObjectivesPage parentPage)
  {
    super(parentPage);
    initUpload(Bytes.megabytes(10));
  }

  @SuppressWarnings("serial")
  @Override
  protected void init()
  {
    super.init();
    add(new IFormValidator() {
      @Override
      public FormComponent< ? >[] getDependentFormComponents()
      {
        return dependentFormComponents;
      }

      @Override
      public void validate(final Form< ? > form)
      {
        final Date fromDate = fromDatePanel.getConvertedInput();
        final Date toDate = toDatePanel.getConvertedInput();
        if (toDate != null && fromDate != null && fromDate.after(toDate) == true) {
          toDatePanel.getDateField().error(getString("fibu.buchungssatz.error.invalidTimeperiod"));
        }
      }
    });
    filter = getFilter();
    gridBuilder.newGridPanel();
    {
      final FieldsetPanel fs = new FieldsetPanel(gridBuilder.getPanel(), getString("file"), "*.xml") {
        @Override
        public boolean isVisible()
        {
          return parentPage.getReportStorage() == null;
        }
      };
      fileUploadField = new FileUploadField(FileUploadPanel.WICKET_ID);
      fs.add(new FileUploadPanel(fs.newChildId(), fileUploadField));
      fs.add(new SingleButtonPanel(fs.newChildId(), new Button(SingleButtonPanel.WICKET_ID, new Model<String>("import")) {
        @Override
        public final void onSubmit()
        {
          parentPage.importReportObjectivs();
        }
      }, getString("import"), SingleButtonPanel.NORMAL));
    }
    {
      final FieldsetPanel fs = new FieldsetPanel(gridBuilder.getPanel(), getString("timePeriod")) {
        @Override
        public boolean isVisible()
        {
          return reportObjectivesPanel.isVisible();
        }
      };
      fs.add(fromDatePanel = new DatePanel(fs.newChildId(), new PropertyModel<Date>(filter, "fromDate"), DatePanelSettings.get()
          .withRequired(true)));
      dependentFormComponents[0] = fromDatePanel;
      fs.add(new DivTextPanel(fs.newChildId(), " - "));
      fs.add(toDatePanel = new DatePanel(fs.newChildId(), new PropertyModel<Date>(filter, "toDate"), DatePanelSettings.get()));
      dependentFormComponents[1] = toDatePanel;
      final Button createReportButton = new Button(SingleButtonPanel.WICKET_ID, new Model<String>("createReport")) {
        @Override
        public final void onSubmit()
        {
          parentPage.createReport();
        }
      };
      setDefaultButton(createReportButton);
      fs.add(new SingleButtonPanel(fs.newChildId(), createReportButton, getString("fibu.kost.reporting.createReport"),
          SingleButtonPanel.DEFAULT_SUBMIT));
      fs.add(new SingleButtonPanel(fs.newChildId(), new Button(SingleButtonPanel.WICKET_ID, new Model<String>("clear")) {
        @Override
        public final void onSubmit()
        {
          parentPage.clear();
        }
      }, getString("fibu.kost.reporting.clearStorage"), SingleButtonPanel.RESET));
    }
    final DivPanel panel = gridBuilder.getPanel();
    panel.add(reportObjectivesPanel = new ReportObjectivesPanel(panel.newChildId(), parentPage));
  }

  protected ReportObjectivesFilter getFilter()
  {
    if (filter != null) {
      return filter;
    }
    filter = (ReportObjectivesFilter) parentPage.getUserPrefEntry(KEY_REPORT_FILTER);
    if (filter != null) {
      return filter;
    }
    filter = new ReportObjectivesFilter();
    final DateHolder day = new DateHolder();
    day.setBeginOfYear();
    filter.setFromDate(day.getDate());
    day.setEndOfYear();
    filter.setToDate(day.getDate());
    parentPage.putUserPrefEntry(KEY_REPORT_FILTER, filter, true);
    return filter;
  }
}
TOP

Related Classes of org.projectforge.web.fibu.ReportObjectivesForm

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.