Package no.ugland.utransprod.gui.handlers

Source Code of no.ugland.utransprod.gui.handlers.ExcelReportViewHandler$ShowExcelAction

package no.ugland.utransprod.gui.handlers;

import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.ActionEvent;

import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JPanel;

import no.ugland.utransprod.ProTransException;
import no.ugland.utransprod.gui.Closeable;
import no.ugland.utransprod.gui.IconEnum;
import no.ugland.utransprod.gui.WindowInterface;
import no.ugland.utransprod.gui.buttons.CancelButton;
import no.ugland.utransprod.util.ModelUtil;
import no.ugland.utransprod.util.Util;
import no.ugland.utransprod.util.excel.ExcelManager;
import no.ugland.utransprod.util.excel.ExcelReportEnum;
import no.ugland.utransprod.util.excel.ExcelReportSetting;
import no.ugland.utransprod.util.excel.ExcelUtil;

import com.jgoodies.binding.PresentationModel;
import com.jgoodies.binding.adapter.ComboBoxAdapter;
import com.jgoodies.binding.beans.PropertyConnector;
import com.jgoodies.forms.builder.PanelBuilder;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.FormLayout;
import com.toedter.calendar.JYearChooser;

/**
* Hjelpeklasse for generering av excelrapporter
*
* @author atle.brekka
*/
public class ExcelReportViewHandler implements Closeable {
  /**
     *
     */
  protected PresentationModel presentationModel;

  /**
     *
     */
  protected JYearChooser yearChooser;

  /**
     *
     */
  protected JComboBox comboBoxWeekFrom;

  /**
     *
     */
  protected JComboBox comboBoxWeekTo;

  /**
     *
     */
  protected JComboBox comboBoxReportType;

  protected JComboBox comboBoxProductArea;

  protected ExcelReportEnum excelReportEnum;
  private Dimension windowSize;

  public ExcelReportViewHandler(ExcelReportEnum excelReportType,
      Dimension aWindowSize) {
    windowSize = aWindowSize;
    presentationModel = new PresentationModel(new ExcelReportSetting(
        excelReportType));
    excelReportEnum = excelReportType;
  }

  /**
   * Lager �rsvelger
   *
   * @return �rsvelger
   */
  public JYearChooser getYearChooser() {
    JYearChooser yearChooser1 = new JYearChooser();
    PropertyConnector conn = new PropertyConnector(yearChooser1, "year",
        presentationModel.getModel(ExcelReportSetting.PROPERTY_YEAR),
        "value");
    conn.updateProperty2();
    yearChooser1.setName("YearChooser");
    return yearChooser1;
  }

  /**
   * Henter comboboks for uke fra
   *
   * @return comboboks med uker
   */
  public JComboBox getComboBoxWeekFrom() {
    JComboBox comboBox = new JComboBox(new ComboBoxAdapter(Util.getWeeks(),
        presentationModel
            .getModel(ExcelReportSetting.PROPERTY_WEEK_FROM)));
    comboBox.setName("ComboBoxWeekFrom");
    comboBox.setSelectedItem(Util.getCurrentWeek());
    return comboBox;
  }

  public JComboBox getComboBoxWeekTo() {
    JComboBox comboBox;
    comboBox = new JComboBox(
        new ComboBoxAdapter(Util.getWeeks(), presentationModel
            .getModel(ExcelReportSetting.PROPERTY_WEEK_TO)));
    if (!excelReportEnum.useTo()) {// dersom til ikke skal brukes kobles
      // til og fra
      PropertyConnector conn = new PropertyConnector(presentationModel
          .getModel(ExcelReportSetting.PROPERTY_WEEK_FROM), "value",
          presentationModel
              .getModel(ExcelReportSetting.PROPERTY_WEEK_TO),
          "value");
      conn.updateProperty2();

    }
    comboBox.setName("ComboBoxWeekTo");
    return comboBox;
  }

  /**
   * Henter comboboks med alle rapporttyper dersom ikke rapporttype er
   * allerede satt. Dersom rapporttype er satt blir det ikke lage noe
   * comboboks
   *
   * @return comboboks med rapporttyper
   */
  public JComboBox getComboBoxReportType() {
    if (presentationModel
        .getValue(ExcelReportSetting.PROPERTY_EXCEL_REPORT_TYPE) == ExcelReportEnum.PRODUCTIVITY_PACK) {
      return new JComboBox(new ComboBoxAdapter(ExcelReportEnum
          .getProductivityReports(), presentationModel
          .getModel(ExcelReportSetting.PROPERTY_EXCEL_REPORT_TYPE)));
    }
    return null;
  }

  public JComboBox getComboBoxProductArea(boolean addEmpty) {
    JComboBox comboBox = Util.createComboBoxProductArea(presentationModel
        .getModel(ExcelReportSetting.PROPERTY_PRODUCT_AREA), addEmpty);
    comboBox.setName("ComboBoxProductArea");
    return comboBox;
  }

  /**
   * Lager knapp for � vise excelrapport
   *
   * @param window
   * @return knapp
   */
  public JButton getButtonShowExcel(WindowInterface window) {
    JButton button = new JButton(new ShowExcelAction(window));
    button.setIcon(IconEnum.ICON_EXCEL.getIcon());
    button.setName("ButtonShowExcel");
    return button;
  }

  /**
   * @see no.ugland.utransprod.gui.Closeable#canClose(java.lang.String,
   *      no.ugland.utransprod.gui.WindowInterface)
   */
  public boolean canClose(String actionString, WindowInterface window) {
    return true;
  }

  /**
   * Lager avbrytknapp
   *
   * @param window
   * @return knapp
   */
  public JButton getButtonCancel(WindowInterface window) {
    return new CancelButton(window, this, true);
  }

  /**
   * Henter vindusst�rrels
   *
   * @return vindusst�rrelse
   */
  public Dimension getWindowSize() {
    if (windowSize != null) {
      return windowSize;
    }
    if (excelReportEnum.useFrom()) {
      if (excelReportEnum.useTo()) {
        if (presentationModel
            .getValue(ExcelReportSetting.PROPERTY_EXCEL_REPORT_TYPE) == null) {
          return new Dimension(320, 150);
        } else if (excelReportEnum.useProductArea()) {
          return new Dimension(350, 130);
        }
        return new Dimension(320, 110);
      }
      return new Dimension(250, 130);
    }

    return new Dimension(250, 110);
  }

  /**
   * Henter vindustittel
   *
   * @return vindustittel
   */

  public String getWindowTitle() {
    return excelReportEnum.getReportName();
  }

  /**
   * Viser excelrapport
   *
   * @author atle.brekka
   */
  private class ShowExcelAction extends AbstractAction {
    /**
         *
         */
    private static final long serialVersionUID = 1L;

    /**
         *
         */
    private WindowInterface window;

    /**
     * @param aWindow
     */
    public ShowExcelAction(WindowInterface aWindow) {
      super("Excel");
      window = aWindow;
    }

    /**
     * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
     */
    public void actionPerformed(ActionEvent arg0) {
      try {
        ExcelReportSetting excelReportSetting = (ExcelReportSetting) presentationModel
            .getBean();
        generateExcel(window, excelReportSetting);
      } catch (ProTransException e) {
        Util.showErrorDialog(window, "Feil", e.getMessage());
        e.printStackTrace();
      }
    }

  }

  public void generateExcel(WindowInterface window,
      ExcelReportSetting excelReportSetting) throws ProTransException {

    if (checkParameters(excelReportSetting, window)) {
      if (continueGenerateExcel(excelReportSetting, window)) {
        ExcelUtil excelUtil = new ExcelUtil();
        excelUtil.generateExcel(excelReportSetting, window);
      }
    }
  }

  private boolean continueGenerateExcel(
      ExcelReportSetting excelReportSetting, WindowInterface window) {
    ExcelManager excelManager = (ExcelManager) ModelUtil
        .getBean(excelReportEnum.getExcelManagerName());
    CheckObject checkObject = excelManager.checkExcel(excelReportSetting);

    if (checkObject != null && checkObject.getMsg().length() != 0) {
      return handleCheckObject(window, checkObject);
    }
    return true;

  }

  private boolean handleCheckObject(WindowInterface window,
      CheckObject checkObject) {
    boolean returnValue;
    if (checkObject.canContinue()) {
      returnValue = handleCanContinue(window, checkObject.getMsg());
    } else {
      returnValue = false;
      Util
          .showErrorDialog((Component) null, "Feil", checkObject
              .getMsg());
    }
    return returnValue;
  }

  private boolean handleCanContinue(WindowInterface window, String msg) {
    boolean doContinue = Util.showConfirmDialog(window.getComponent(),
        "Feil?", msg + " Vil du fortsette?");
    return doContinue;
  }

  /**
   * Sjekker om alle parametre for rapport er satt
   *
   * @param setting
   * @param window
   * @return true dersom alt er satt
   */
  protected boolean checkParameters(ExcelReportSetting setting,
      WindowInterface window) {
    String errorString = null;
    if (excelReportEnum.useFrom() && setting.getWeekFrom() == null) {
      errorString = "Det m� velges fra uke";
    } else if (excelReportEnum.useTo() && setting.getWeekTo() == null) {
      errorString = "Det m� velges til uke";
    } else if (setting.getExcelReportType() == null) {
      errorString = "Det m� velges rapport";
    } else if (excelReportEnum.useProductArea()
        && setting.getProductArea() == null) {
      errorString = "Det m� velges produktomr�de";
    }

    if (errorString != null) {
      Util.showErrorDialog(window, "Rapportparametre", errorString);
      return false;
    }
    return true;

  }

  /**
   * Initierer komponeter
   *
   * @param window
   */
  protected void initComponents(WindowInterface window, boolean addEmpty) {
    yearChooser = getYearChooser();
    comboBoxWeekFrom = getComboBoxWeekFrom();
    comboBoxWeekTo = getComboBoxWeekTo();
    comboBoxReportType = getComboBoxReportType();
    comboBoxProductArea = getComboBoxProductArea(addEmpty);
  }

  /**
   * Lager vindu med utvalgskritrier
   *
   * @param window
   * @return panel
   */
  public JPanel buildConstraintPanel(WindowInterface window, boolean addEmpty) {
    initComponents(window, addEmpty);
    FormLayout layout = new FormLayout(
        "p,3dlu,30dlu,3dlu,p:grow,3dlu,30dlu,3dlu,p,3dlu,30dlu",
        "p,3dlu,p,3dlu,p");
    PanelBuilder builder = new PanelBuilder(layout);
    // PanelBuilder builder = new PanelBuilder(new FormDebugPanel(),layout);
    CellConstraints cc = new CellConstraints();

    if (excelReportEnum.useFrom()) {
      builder.addLabel("�r:", cc.xy(1, 1));
      builder.add(yearChooser, cc.xy(3, 1));
      if (excelReportEnum.useTo()) {
        builder.addLabel("Fra uke:", cc.xy(5, 1));
        builder.addLabel("Til uke:", cc.xy(9, 1));
        builder.add(comboBoxWeekTo, cc.xy(11, 1));
      } else {
        builder.addLabel("Uke:", cc.xy(5, 1));
      }
      builder.add(comboBoxWeekFrom, cc.xy(7, 1));
    }

    if (comboBoxReportType != null) {
      builder.addLabel("Rapport:", cc.xyw(1, 3, 3));
      builder.add(comboBoxReportType, cc.xyw(5, 3, 7));
    }
    if (excelReportEnum.useProductArea()) {
      builder.addLabel("Produktomr�de:", cc.xyw(1, 5, 5));
      builder.add(comboBoxProductArea, cc.xyw(6, 5, 6));
    }

    return builder.getPanel();
  }
}
TOP

Related Classes of no.ugland.utransprod.gui.handlers.ExcelReportViewHandler$ShowExcelAction

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.