Package no.ugland.utransprod.gui.handlers

Source Code of no.ugland.utransprod.gui.handlers.SupplierViewHandler$EmployeeAction

package no.ugland.utransprod.gui.handlers;

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.List;
import java.util.regex.Pattern;

import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.ListModel;
import javax.swing.table.TableModel;

import no.ugland.utransprod.gui.EmployeeView;
import no.ugland.utransprod.gui.JDialogAdapter;
import no.ugland.utransprod.gui.Login;
import no.ugland.utransprod.gui.ProTransMain;
import no.ugland.utransprod.gui.WindowInterface;
import no.ugland.utransprod.gui.edit.AbstractEditView;
import no.ugland.utransprod.gui.edit.EditSupplierView;
import no.ugland.utransprod.gui.model.ApplicationUserModel;
import no.ugland.utransprod.gui.model.SupplierModel;
import no.ugland.utransprod.model.ProductAreaGroup;
import no.ugland.utransprod.model.Supplier;
import no.ugland.utransprod.model.SupplierProductAreaGroup;
import no.ugland.utransprod.model.SupplierType;
import no.ugland.utransprod.service.ManagerRepository;
import no.ugland.utransprod.service.SupplierManager;
import no.ugland.utransprod.service.SupplierTypeManager;
import no.ugland.utransprod.service.enums.LazyLoadEnum;
import no.ugland.utransprod.util.ModelUtil;
import no.ugland.utransprod.util.UserUtil;
import no.ugland.utransprod.util.Util;

import org.jdesktop.swingx.JXTable;
import org.jdesktop.swingx.decorator.Filter;
import org.jdesktop.swingx.decorator.FilterPipeline;
import org.jdesktop.swingx.decorator.PatternFilter;

import com.jgoodies.binding.PresentationModel;
import com.jgoodies.binding.adapter.AbstractTableAdapter;
import com.jgoodies.binding.adapter.BasicComponentFactory;
import com.jgoodies.binding.adapter.ComboBoxAdapter;
import com.jgoodies.binding.list.ArrayListModel;
import com.jgoodies.binding.list.SelectionInList;

/**
* H�ndterer leverand�rer
*
* @author atle.brekka
*
*/
public class SupplierViewHandler extends
    DefaultAbstractViewHandler<Supplier, SupplierModel> {
  /**
   *
   */
  private static final long serialVersionUID = 1L;

  /**
   *
   */
  private ArrayListModel supplierTypeList;

  private ManagerRepository managerRepository;
  private ArrayListModel productAreaGroupArray;
  private SelectionInList productAreaGroupSelectionList;

  private JButton buttonDeleteProductAreaGroup;
  private JCheckBox checkBoxShowInactive;

  /**
   * @param userType
   */
  public SupplierViewHandler(Login login, ManagerRepository aManagerRepository) {
    super("Leverand�rer", aManagerRepository.getSupplierManager(), login
        .getUserType(), true);
    managerRepository = aManagerRepository;

    productAreaGroupArray = new ArrayListModel();
    productAreaGroupSelectionList = new SelectionInList(
        (ListModel) productAreaGroupArray);
   
    productAreaGroupSelectionList.addPropertyChangeListener(
        SelectionInList.PROPERTYNAME_SELECTION_EMPTY,
        new EmptyListenerProductAreaGroup());
  }

  /**
   * Lager tekstfelt for navn
   *
   * @param presentationModel
   * @return tekstfelt
   */
  public JTextField getTextFieldSupplierName(
      PresentationModel presentationModel) {
    JTextField textField = BasicComponentFactory
        .createTextField(presentationModel
            .getBufferedModel(SupplierModel.PROPERTY_SUPPLIER_NAME));
    textField.setEnabled(hasWriteAccess());
    textField.setName("TextFieldSupplierName");
    return textField;
  }

  /**
   * Lager tekstfelt for beskrivelse
   *
   * @param presentationModel
   * @return tekstfelt
   */
  public JTextField getTextFieldSupplierDescription(
      PresentationModel presentationModel) {
    JTextField textField = BasicComponentFactory
        .createTextField(presentationModel
            .getBufferedModel(SupplierModel.PROPERTY_SUPPLIER_DESCRIPTION));
    textField.setEnabled(hasWriteAccess());
    textField.setName("TextFieldSupplierDescription");
    return textField;
  }

  /**
   * Lager tekstfelt for telefon
   *
   * @param presentationModel
   * @return tekstfelt
   */
  public JTextField getTextFieldPhone(PresentationModel presentationModel) {
    JTextField textField = BasicComponentFactory
        .createTextField(presentationModel
            .getBufferedModel(SupplierModel.PROPERTY_PHONE));
    textField.setEnabled(hasWriteAccess());
    textField.setName("TextFieldPhone");
    return textField;
  }

  /**
   * Lager tekstfelt for fax
   *
   * @param presentationModel
   * @return tekstfelt
   */
  public JTextField getTextFieldFax(PresentationModel presentationModel) {
    JTextField textField = BasicComponentFactory
        .createTextField(presentationModel
            .getBufferedModel(SupplierModel.PROPERTY_FAX));
    textField.setEnabled(hasWriteAccess());
    textField.setName("TextFieldFax");
    return textField;
  }

  /**
   * Lager tekstfelt for adresse
   *
   * @param presentationModel
   * @return tekstfelt
   */
  public JTextField getTextFieldAddress(PresentationModel presentationModel) {
    JTextField textField = BasicComponentFactory
        .createTextField(presentationModel
            .getBufferedModel(SupplierModel.PROPERTY_ADDRESS));
    textField.setEnabled(hasWriteAccess());
    textField.setName("TextFieldAddress");
    return textField;
  }

  /**
   * Lager tekstfelt for postnummer
   *
   * @param presentationModel
   * @return tekstfelt
   */
  public JTextField getTextFieldPostalCode(PresentationModel presentationModel) {
    JTextField textField = BasicComponentFactory
        .createTextField(presentationModel
            .getBufferedModel(SupplierModel.PROPERTY_POSTAL_CODE));
    textField.setEnabled(hasWriteAccess());
    textField.setName("TextFieldPostalCode");
    return textField;
  }

  /**
   * Lager tekstfelt for poststed
   *
   * @param presentationModel
   * @return tekstfelt
   */
  public JTextField getTextFieldPostOffice(PresentationModel presentationModel) {
    JTextField textField = BasicComponentFactory
        .createTextField(presentationModel
            .getBufferedModel(SupplierModel.PROPERTY_POST_OFFICE));
    textField.setEnabled(hasWriteAccess());
    textField.setName("TextFieldPostOffice");
    return textField;
  }

  /**
   * Lager komboboks for leverand�rtype
   *
   * @param presentationModel
   * @return komboboks
   */
  public JComboBox getComboBoxSupplierType(PresentationModel presentationModel) {
    SupplierTypeManager supplierTypeManager = (SupplierTypeManager) ModelUtil
        .getBean("supplierTypeManager");
    supplierTypeList = new ArrayListModel(supplierTypeManager.findAll());
    JComboBox comboBox = new JComboBox(
        new ComboBoxAdapter(
            (ListModel) supplierTypeList,
            presentationModel
                .getBufferedModel(SupplierModel.PROPERTY_SUPPLIER_TYPE)));
    comboBox.setEnabled(hasWriteAccess());
    comboBox.setName("ComboBoxSupplierType");
    return comboBox;
  }

  public JCheckBox getCheckBoxInactive(PresentationModel presentationModel) {
    JCheckBox checkBox = BasicComponentFactory
        .createCheckBox(
            presentationModel
                .getBufferedModel(SupplierModel.PROPERTY_INACTIVE_BOOL),
            "Inaktiv");
    checkBox.setName("CheckBoxInactive");
    return checkBox;
  }

  /**
   * Lager knapp for ansatte
   *
   * @return knapp
   */
  public JButton getButtonEmployee() {
    return new JButton(new EmployeeAction());
  }

  public JButton getButtonAddProductAreaGroup(
      PresentationModel presentationModel, WindowInterface window) {
    return new JButton(new AddProductAreaGroupAction(presentationModel,
        window));
  }

  public JButton getButtonDeleteProductAreaGroup(PresentationModel presentationModel) {
    buttonDeleteProductAreaGroup= new JButton(new DeleteProductAreaGroupAction(presentationModel));
    buttonDeleteProductAreaGroup.setEnabled(false);
    return buttonDeleteProductAreaGroup;
  }

  /**
   * @param object
   * @return feilmelding
   * @see no.ugland.utransprod.gui.handlers.AbstractViewHandler#checkDeleteObject(java.lang.Object)
   */
  @Override
  public CheckObject checkDeleteObject(Supplier supplier) {
    if (((SupplierManager) overviewManager).hasOrderCosts(supplier)) {
      return new CheckObject(
          "Kan ikke slette leverand�r som er knyttet opp mot kostnader!",
          false);
    }
    return null;
  }

  /**
   * @param object
   * @param presentationModel
   * @param window
   * @return feilmelsing
   * @see no.ugland.utransprod.gui.handlers.AbstractViewHandler#checkSaveObject(java.lang.Object,
   *      com.jgoodies.binding.PresentationModel,
   *      no.ugland.utransprod.gui.WindowInterface)
   */
  @Override
  public CheckObject checkSaveObject(SupplierModel object,
      PresentationModel presentationModel, WindowInterface window) {
    return null;
  }

  /**
   * @see no.ugland.utransprod.gui.handlers.AbstractViewHandler#getAddRemoveString()
   */
  @Override
  public String getAddRemoveString() {
    return "leverand�r";
  }

  /**
   * @see no.ugland.utransprod.gui.handlers.AbstractViewHandler#getClassName()
   */
  @Override
  public String getClassName() {
    return "Supplier";
  }

  /**
   * @see no.ugland.utransprod.gui.handlers.AbstractViewHandler#getNewObject()
   */
  @Override
  public Supplier getNewObject() {
    return new Supplier();
  }

  /**
   * @see no.ugland.utransprod.gui.handlers.AbstractViewHandler#getTableModel(no.ugland.utransprod.gui.WindowInterface)
   */
  @Override
  public TableModel getTableModel(WindowInterface window) {
    return new SupplierTableModel(objectSelectionList);
  }

  /**
   * @see no.ugland.utransprod.gui.handlers.AbstractViewHandler#getTableWidth()
   */
  @Override
  public String getTableWidth() {
    return "150dlu";
  }

  /**
   * @see no.ugland.utransprod.gui.handlers.AbstractViewHandler#getTitle()
   */
  @Override
  public String getTitle() {
    return "Leverand�rer";
  }

  /**
   * @see no.ugland.utransprod.gui.handlers.AbstractViewHandler#getWindowSize()
   */
  @Override
  public Dimension getWindowSize() {
    return new Dimension(800, 500);
  }

  /**
   * Legger til ny leverand�r
   *
   * @param window
   *
   * @return leverand�r
   */
  public Supplier insertNewSupplier(WindowInterface window) {
    Supplier supplier = new Supplier();
    openEditView(supplier, false, window);
    return supplier;
  }

  /**
   * @see no.ugland.utransprod.gui.handlers.AbstractViewHandler#setColumnWidth(org.jdesktop.swingx.JXTable)
   */
  @Override
  public void setColumnWidth(JXTable table) {
    // navn
    table.getColumnExt(0).setPreferredWidth(170);
    // telefon
    table.getColumnExt(1).setPreferredWidth(70);
    // beskrivelse
    table.getColumnExt(2).setPreferredWidth(100);
    // type
    table.getColumnExt(3).setPreferredWidth(150);
  }

  /**
   * Tabellmodell for leverand�r
   *
   * @author atle.brekka
   *
   */
  public static final class SupplierTableModel extends AbstractTableAdapter {

    /**
     *
     */
    private static final long serialVersionUID = 1L;

    /**
     *
     */
    private static final String[] COLUMNS = { "Navn", "Telefon",
        "Beskrivelse", "Type","Inaktiv","Aktiv" };

    /**
     * @param listModel
     */
    public SupplierTableModel(ListModel listModel) {
      super(listModel, COLUMNS);
    }

    /**
     * Henter verdi
     *
     * @param rowIndex
     * @param columnIndex
     * @return verdi
     */
    public Object getValueAt(int rowIndex, int columnIndex) {
      Supplier supplier = (Supplier) getRow(rowIndex);
      switch (columnIndex) {
      case 0:
        return supplier.getSupplierName();
      case 1:
        return supplier.getPhone();
      case 2:
        return supplier.getSupplierDescription();
      case 3:
        return supplier.getSupplierType();
      case 4:
        return supplier.getInactive()==null||supplier.getInactive()==0?Boolean.FALSE:Boolean.TRUE;
      case 5:
        return supplier.getInactive()==null||supplier.getInactive()==0?"nei":"ja";
      default:
        throw new IllegalStateException("Unknown column");
      }

    }

    /**
     * @see javax.swing.table.AbstractTableModel#getColumnClass(int)
     */
    @Override
    public Class<?> getColumnClass(int columnIndex) {
      switch (columnIndex) {
      case 0:
      case 1:
      case 2:
      case 5:
        return String.class;
      case 3:
        return SupplierType.class;
      case 4:
        return Boolean.class;
      default:
        throw new IllegalStateException("Unknown column");
      }
    }

  }

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

    public EmployeeAction() {
      super("Ansatte...");

    }

    /**
     * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
     */
    public void actionPerformed(ActionEvent arg0) {
      Supplier supplier = (Supplier) objectSelectionList
          .getElementAt(table
              .convertRowIndexToModel(objectSelectionList
                  .getSelectionIndex()));
      EmployeeViewHandler employeeViewHandler = new EmployeeViewHandler(
          supplier, userType, managerRepository.getEmployeeManager(),
          managerRepository.getEmployeeTypeManager());
      EmployeeView employeeView = new EmployeeView(
          employeeViewHandler);

      JDialog dialog = new JDialog(ProTransMain.PRO_TRANS_MAIN,
          employeeView.getTitle(), true);
      WindowInterface window = new JDialogAdapter(dialog);
      window.add(employeeView.buildPanel(window));

      window.pack();
      window.setSize(employeeViewHandler.getWindowSize());

      Util.locateOnScreenCenter(window);
      window.setVisible(true);

    }
  }

  private class AddProductAreaGroupAction extends AbstractAction {
    private static final long serialVersionUID = 1L;
    private PresentationModel presentationModel;
    private WindowInterface window;

    public AddProductAreaGroupAction(PresentationModel aPresentationModel,
        WindowInterface awindow) {
      super("Legg til produktomr�de");
      presentationModel = aPresentationModel;
      window = awindow;
    }

    /**
     * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
     */
    public void actionPerformed(ActionEvent arg0) {
      Supplier supplier = ((SupplierModel) presentationModel.getBean())
          .getObject();

      List<ProductAreaGroup> groups = Util.getProductAreaGroupList();

      ProductAreaGroup selectedGroup = (ProductAreaGroup) JOptionPane
          .showInputDialog(window.getComponent(),
              "Velg produktomr�de", "Legg til produktomr�de",
              JOptionPane.INFORMATION_MESSAGE, null, groups
                  .toArray(), null);

      if (selectedGroup != null) {
        if (selectedGroup.getProductAreaGroupName().equalsIgnoreCase(
            "Alle")) {
          Util.showErrorDialog(window, "Ugyldig valg",
              "Kan ikke velge alle");
          return;
        }
        SupplierProductAreaGroup supplierGroup = new SupplierProductAreaGroup(
            supplier, selectedGroup);
        productAreaGroupArray.add(supplierGroup);
        presentationModel
            .setBufferedValue(
                SupplierModel.PROPERTY_SUPPLIER_PRODUCT_AREA_GROUPS_LIST,
                productAreaGroupArray);
        ((ApplicationUserModel) presentationModel.getBean())
            .firePropertyChanged();
      }

    }
  }

  private class DeleteProductAreaGroupAction extends AbstractAction {
    private static final long serialVersionUID = 1L;
    private PresentationModel presentationModel;

    public DeleteProductAreaGroupAction(PresentationModel aPresentationModel) {
      super("Fjern produktomr�de");
      presentationModel = aPresentationModel;
    }

    /**
     * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
     */
    public void actionPerformed(ActionEvent arg0) {
      SupplierProductAreaGroup group = (SupplierProductAreaGroup) productAreaGroupSelectionList
          .getSelection();
      if (group != null) {
        productAreaGroupArray.remove(group);

        presentationModel
            .setBufferedValue(
                SupplierModel.PROPERTY_SUPPLIER_PRODUCT_AREA_GROUPS_LIST,
                productAreaGroupArray);
      }

    }
  }

  /**
   * @see no.ugland.utransprod.gui.handlers.AbstractViewHandler#hasWriteAccess()
   */
  @Override
  public Boolean hasWriteAccess() {
    return UserUtil.hasWriteAccess(userType, "Leverand�rer");
  }

  /**
   * @param handler
   * @param object
   * @param searching
   * @return view
   * @see no.ugland.utransprod.gui.handlers.AbstractViewHandler#getEditView(no.ugland.utransprod.gui.handlers.AbstractViewHandler,
   *      java.lang.Object, boolean)
   */
  @Override
  protected AbstractEditView<SupplierModel, Supplier> getEditView(
      AbstractViewHandler<Supplier, SupplierModel> handler,
      Supplier object, boolean searching) {
    managerRepository.getSupplierManager().lazyLoad(
        object,
        new LazyLoadEnum[][] { {
            LazyLoadEnum.SUPPLIER_PRODUCT_AREA_GROUPS,
            LazyLoadEnum.NONE } });
    return new EditSupplierView(searching, object, this);
  }

  public JList getListProductAreaGroup(PresentationModel presentationModel) {
    productAreaGroupArray.clear();
    productAreaGroupArray
        .addAll((List<SupplierProductAreaGroup>) presentationModel
            .getBufferedValue(SupplierModel.PROPERTY_SUPPLIER_PRODUCT_AREA_GROUPS_LIST));
    JList list = BasicComponentFactory
        .createList(productAreaGroupSelectionList);
    return list;
  }
 
  class EmptyListenerProductAreaGroup implements PropertyChangeListener {

    /**
     * @see java.beans.PropertyChangeListener#propertyChange(java.beans.PropertyChangeEvent)
     */
    public void propertyChange(PropertyChangeEvent arg0) {
      buttonDeleteProductAreaGroup.setEnabled(productAreaGroupSelectionList
          .hasSelection());

    }

  }
 
  public JCheckBox getCheckBoxShowInactive() {
    checkBoxShowInactive = new JCheckBox("Vis inaktive");
    checkBoxShowInactive.setSelected(true);
    checkBoxShowInactive.setName("CheckBoxFilterShowInactive");
    checkBoxShowInactive.addActionListener(new FilterInactiveListener());
    return checkBoxShowInactive;
  }
  private void handleShowInactive() {
    table.clearSelection();
    objectSelectionList.clearSelection();
   
    if(checkBoxShowInactive.isSelected()){
      table.setFilters(null);
    }else{
      Filter filterApplied = new PatternFilter("nei",
          Pattern.CASE_INSENSITIVE, 5);
      FilterPipeline filterPipeline = new FilterPipeline(filterApplied);
      table.setFilters(filterPipeline);
    }
   
  }

 
  class FilterInactiveListener implements ActionListener {

    /**
     * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
     */
    public void actionPerformed(final ActionEvent arg0) {
      handleShowInactive();

    }

   

  }
}
TOP

Related Classes of no.ugland.utransprod.gui.handlers.SupplierViewHandler$EmployeeAction

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.