Package no.ugland.utransprod.gui.handlers

Source Code of no.ugland.utransprod.gui.handlers.KeyReportViewHandler

package no.ugland.utransprod.gui.handlers;

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.util.ArrayList;
import java.util.List;

import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.ListModel;

import no.ugland.utransprod.ProTransException;
import no.ugland.utransprod.gui.Closeable;
import no.ugland.utransprod.gui.IconEnum;
import no.ugland.utransprod.gui.JDialogAdapter;
import no.ugland.utransprod.gui.WindowInterface;
import no.ugland.utransprod.gui.buttons.CancelButton;
import no.ugland.utransprod.gui.model.ReportEnum;
import no.ugland.utransprod.model.ProductArea;
import no.ugland.utransprod.service.ProductAreaManager;
import no.ugland.utransprod.util.ModelUtil;
import no.ugland.utransprod.util.Threadable;
import no.ugland.utransprod.util.Util;
import no.ugland.utransprod.util.report.NokkelReport;
import no.ugland.utransprod.util.report.ReportViewer;

import com.jgoodies.binding.PresentationModel;
import com.jgoodies.binding.adapter.AbstractTableAdapter;
import com.jgoodies.binding.adapter.ComboBoxAdapter;
import com.jgoodies.binding.beans.Model;
import com.jgoodies.binding.beans.PropertyConnector;
import com.toedter.calendar.JYearChooser;

/**
* H�ndterer n�kkelrapporter
*
* @author atle.brekka
*/
public class KeyReportViewHandler implements Closeable {
  private PresentationModel presentationModel;

  KeyReportSetting keyReportSetting;

  private boolean disposeOnClose = true;

  private static List<String> productAreaList;

  /**
   * @param aDatabaseManager
   */
  public KeyReportViewHandler() {
    keyReportSetting = new KeyReportSetting();
    keyReportSetting.setWeek(Util.getCurrentWeek());
    presentationModel = new PresentationModel(keyReportSetting);
    productAreaList = new ArrayList<String>();
    initProductAreaList();
  }

  /**
   * Initierer liste med produktomr�der
   */
  private void initProductAreaList() {
    if (productAreaList.size() == 0) {
      ProductAreaManager productAreaManager = (ProductAreaManager) ModelUtil
          .getBean("productAreaManager");
      List<ProductArea> productAreas = productAreaManager.findAll();
      if (productAreas != null) {
        for (ProductArea productArea : productAreas) {
          productAreaList.add(productArea.getProductArea());
        }

      }
    }
  }

  /**
   * Lager �rvelger
   *
   * @return �rvelger
   */
  public JYearChooser getYearChooser() {
    JYearChooser yearChooser = new JYearChooser();
    PropertyConnector conn = new PropertyConnector(yearChooser, "year",
        presentationModel.getModel(KeyReportSetting.PROPERTY_YEAR),
        "value");
    conn.updateProperty2();
    return yearChooser;
  }

  /**
   * Lager komboboks for uke
   *
   * @return komboboks
   */
  public JComboBox getComboBoxWeek() {
    JComboBox comboBox = new JComboBox(new ComboBoxAdapter(Util.getWeeks(),
        presentationModel.getModel(KeyReportSetting.PROPERTY_WEEK)));
    comboBox.setName("ComboBoxWeek");
    return comboBox;
  }

  /**
   * Lager komboboks for rapporttyper
   *
   * @return komboboks
   */
  public JComboBox getComboBoxReportType() {
    JComboBox comboBox = new JComboBox(new ComboBoxAdapter(ReportEnum
        .getKeyReports(), presentationModel
        .getModel(KeyReportSetting.PROPERTY_REPORT_TYPE)));
    comboBox.setName("ComboBoxReportType");
    return comboBox;
  }

  /**
   * Lager komboboks for produktomr�de
   *
   * @return komboboks
   */
  public JComboBox getComboBoxProductArea() {
    JComboBox comboBox = new JComboBox(new ComboBoxAdapter(productAreaList,
        presentationModel
            .getModel(KeyReportSetting.PROPERTY_PRODUCT_AREA)));
    comboBox.setName("ComboBoxProductArea");
    return comboBox;
  }

  /**
   * Lager knapp for � vise rapport
   *
   * @param window
   * @return knapp
   */
  public JButton getButtonShowReport(WindowInterface window) {
    JButton button = new JButton(new ShowReportAction(window));
    button.setIcon(IconEnum.ICON_PRINT.getIcon());
    button.setName("ButtonShowReport");
    return button;
  }

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

  /**
   * Holder p� rapportsettinger
   *
   * @author atle.brekka
   */
  public class KeyReportSetting extends Model {
    private static final long serialVersionUID = 1L;

    public static final String PROPERTY_YEAR = "year";

    public static final String PROPERTY_WEEK = "week";

    public static final String PROPERTY_REPORT_TYPE = "reportType";

    public static final String PROPERTY_PRODUCT_AREA = "productArea";

    private Integer year;

    private Integer week;

    private ReportEnum reportType;

    private String productArea;

    /**
     * Henter rapporttype
     *
     * @return rapporttype
     */
    public ReportEnum getReportType() {
      return reportType;
    }

    /**
     * Setter rapporttype
     *
     * @param reportType
     */
    public void setReportType(ReportEnum reportType) {
      ReportEnum oldType = getReportType();
      this.reportType = reportType;
      firePropertyChange(PROPERTY_REPORT_TYPE, oldType, reportType);
    }

    /**
     * @return produktomr�de
     */
    public String getProductArea() {
      return productArea;
    }

    /**
     * @param productArea
     */
    public void setProductArea(String productArea) {
      String oldArea = getProductArea();
      this.productArea = productArea;
      firePropertyChange(PROPERTY_PRODUCT_AREA, oldArea, productArea);
    }

    /**
     * Henter uke
     *
     * @return uke
     */
    public Integer getWeek() {
      return week;
    }

    /**
     * Setter uke
     *
     * @param week
     */
    public void setWeek(Integer week) {
      Integer oldWeek = getWeek();
      this.week = week;
      firePropertyChange(PROPERTY_WEEK, oldWeek, week);
    }

    /**
     * Henter �r
     *
     * @return �r
     */
    public Integer getYear() {
      return year;
    }

    /**
     * Setter �r
     *
     * @param year
     */
    public void setYear(Integer year) {
      Integer oldYear = getYear();
      this.year = year;
      firePropertyChange(PROPERTY_YEAR, oldYear, year);
    }
  }

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

    private WindowInterface window;

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

    /**
     * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
     */
    public void actionPerformed(ActionEvent arg0) {
      if (keyReportSetting.getReportType() == null) {
        Util.showErrorDialog(window, "Ikke valgt rapport",
            "Det m� velges en rapporttype!");
        return;
      }

      if (keyReportSetting.getProductArea() == null) {
        Util.showErrorDialog(window, "Ikke valgt produktomr�de",
            "Det m� velges et produktomr�de!");
        return;
      }
      window
          .setSize(new Dimension((int) window.getSize().getWidth(),
              250));
      Util.runInThreadWheel(window.getRootPane(), new Printer(window),
          null);

    }
  }

  /**
   * Henter vindustittel
   *
   * @return tittel
   */
  public String getWindowTitle() {
    return "N�kkeltallrapport";
  }

  /**
   * Genererer rapport
   *
   * @author atle.brekka
   */
  private class Printer implements Threadable {
    private WindowInterface owner;

    /**
     * @param aOwner
     */
    public Printer(WindowInterface aOwner) {
      owner = aOwner;
    }

    /**
     * @see no.ugland.utransprod.util.Threadable#doWhenFinished(java.lang.Object)
     */
    public void doWhenFinished(Object object) {
      owner.setSize(getWindowSize());
    }

    public Object doWork(Object[] params, JLabel labelInfo) {
      labelInfo.setText("Genererer rapport...");
      ReportViewer reportViewer = new ReportViewer(keyReportSetting
          .getReportType().getReportName());
      WindowInterface window;
      window = new JDialogAdapter(Util.getDialog(owner, keyReportSetting
          .getReportType().getReportName(), false));

      window.add(reportViewer.buildPanel(window));

      try {

        NokkelReport nokkelReport = new NokkelReport(keyReportSetting
            .getYear(), keyReportSetting.getWeek(),
            keyReportSetting.getProductArea());
        List<NokkelReport> reportList = new ArrayList<NokkelReport>();
        reportList.add(nokkelReport);
        reportViewer.generateProtransReportFromBean(reportList,
            getWindowTitle(), keyReportSetting.getReportType(),
            null, keyReportSetting.getReportType()
                .getReportFileName());
        window.pack();
        Util.locateOnScreenCenter(window);
        window.setVisible(true);
      } catch (ProTransException e) {
        e.printStackTrace();
      }

      return null;
    }

    /**
     * @see no.ugland.utransprod.util.Threadable#enableComponents(boolean)
     */
    public void enableComponents(boolean enable) {
    }

  }

  /**
   * Henter vindusst�rrelse
   *
   * @return vindusst�rrelse
   */
  public Dimension getWindowSize() {
    return new Dimension(330, 150);
  }

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

  /**
   * Tabellmodell for n�kkelrapport. Dette er bare en tom modell for � vise
   * rapport
   *
   * @author atle.brekka
   */
  public final class KeyReportTableModel extends AbstractTableAdapter {
    private static final long serialVersionUID = 1L;

    /**
     * @param listModel
     */
    public KeyReportTableModel(ListModel listModel) {
      super(listModel, new String[] { "TMP" });
    }

    /**
     * @see javax.swing.table.TableModel#getValueAt(int, int)
     */
    public Object getValueAt(int row, int arg1) {
      return getRow(row);
    }

  }

  /**
   * Sjekker om dialog skal kj�re dispose
   *
   * @return true dersom dispose
   */
  public boolean getDisposeOnClose() {
    return disposeOnClose;
  }
}
TOP

Related Classes of no.ugland.utransprod.gui.handlers.KeyReportViewHandler

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.