Package no.ugland.utransprod.gui.handlers

Source Code of no.ugland.utransprod.gui.handlers.TakstolProductionViewHandler$IkkeStartetKappingAction

package no.ugland.utransprod.gui.handlers;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.regex.Pattern;

import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.ListModel;
import javax.swing.table.TableColumn;
import javax.swing.table.TableModel;

import no.ugland.utransprod.gui.Login;
import no.ugland.utransprod.gui.WindowInterface;
import no.ugland.utransprod.gui.action.SetProductionUnitAction;
import no.ugland.utransprod.gui.action.SetProductionUnitActionFactory;
import no.ugland.utransprod.gui.model.ApplyListInterface;
import no.ugland.utransprod.gui.model.Applyable;
import no.ugland.utransprod.gui.model.ColorEnum;
import no.ugland.utransprod.gui.model.TakstolProductionApplyList;
import no.ugland.utransprod.model.Produceable;
import no.ugland.utransprod.model.ProductionUnit;
import no.ugland.utransprod.model.TakstolProductionV;
import no.ugland.utransprod.service.ManagerRepository;
import no.ugland.utransprod.util.Threadable;
import no.ugland.utransprod.util.Util;

import org.apache.commons.lang.StringUtils;
import org.jdesktop.swingx.decorator.ColorHighlighter;
import org.jdesktop.swingx.decorator.Filter;
import org.jdesktop.swingx.decorator.PatternFilter;
import org.jdesktop.swingx.decorator.PatternPredicate;

import com.google.inject.Inject;
import com.jgoodies.binding.adapter.AbstractTableAdapter;
import com.jgoodies.binding.adapter.ComboBoxAdapter;
import com.jgoodies.binding.list.ArrayListModel;
import com.jgoodies.binding.list.SelectionInList;

public class TakstolProductionViewHandler extends ProductionViewHandler
    implements OrderNrProvider {

  private final ArrayListModel productionUnitList;
  private final SelectionInList productionUnitSelectionList;
  private JButton buttonShowTakstolInfo;
  private JButton buttonStartetKapping;
  private ShowTakstolInfoActionFactory showTakstolInfoActionFactory;
  private JButton buttonIkkeStartetKapping;
  private JButton buttonFerdigKappet;
  private JButton buttonIkkeFerdigKappet;

  @Inject
  public TakstolProductionViewHandler(
      final TakstolProductionApplyList productionInterface,
      final Login login, ManagerRepository managerRepository,
      DeviationViewHandlerFactory deviationViewHandlerFactory,
      ShowTakstolInfoActionFactory aShowTakstolInfoActionFactory,
      SetProductionUnitActionFactory setProductionUnitActionFactory) {
    super(productionInterface, "Takstolproduksjon", login, null,
        "produksjon", TableEnum.TABLEPRODUCTIONTAKSTOL,
        managerRepository.getArticleTypeManager().findByName(
            "Takstoler"), managerRepository,
        deviationViewHandlerFactory, setProductionUnitActionFactory);
    showTakstolInfoActionFactory = aShowTakstolInfoActionFactory;
    productionUnitList = new ArrayListModel();
    productionUnitSelectionList = new SelectionInList(
        (ListModel) productionUnitList);
    initProductionUnitList();
  }

  @Override
  protected void setApplied(final Produceable produceable,
      final boolean applied, final WindowInterface window) {
    Util.runInThreadWheel(window.getRootPane(), new SetApplied(applied,produceable,window), null);
//    if (applied) {
//      ProductionUnit productionUnit = setProductionUnit(window,
//          produceable);
//      setProductionUnitForRelatedArticles(produceable, productionUnit,
//          window);
//    }
//    applyListInterface.setApplied(produceable, applied, window);

  }

  private void setProductionUnitForRelatedArticles(Produceable produceable,
      ProductionUnit productionUnit, WindowInterface window) {
    List<Applyable> relatedArticles = produceable.getRelatedArticles();
    if (relatedArticles != null && productionUnit != null) {
      SetProductionUnitAction setProductionUnitAction = setProductionUnitActionFactory
          .create(articleType, null, window);
      for (Applyable applyable : relatedArticles) {
        setProductionUnitAction.setProductionUnitForOrderLine(
            productionUnit, (Produceable) applyable);
      }
    }

  }

  private void initProductionUnitList() {
    List<ProductionUnit> productionUnits = managerRepository
        .getProductionUnitManager().findAll();
    if (productionUnits != null) {
      productionUnitList.addAll(productionUnits);
      productionUnitList.add(0, null);
    }
    productionUnitSelectionList.addPropertyChangeListener(
        SelectionInList.PROPERTYNAME_SELECTION_INDEX,
        new ProductionUnitSelectionListener());
  }

  public final JComboBox getComboBoxProductionUnit() {
    JComboBox comboBox = new JComboBox(new ComboBoxAdapter(
        productionUnitSelectionList));
    comboBox.setName("ComboBoxProductionUnit");
    return comboBox;
  }

  @Override
  protected boolean getButtonApplyEnabled(Produceable produceable) {
    if (produceable.getProbability() != null
        && produceable.getProbability() == 90) {
      return false;
    }
    if (produceable != null
        && (produceable.getProduced() == null || !produceable
            .isRelatedArticlesComplete())) {
      return true;
    }
    return false;
  }

  private class ProductionUnitSelectionListener implements
      PropertyChangeListener {

    public void propertyChange(final PropertyChangeEvent evt) {
      handleFilter();

    }

  }

  final void setAdditionFilters(final List<Filter> filters) {
    ProductionUnit productionUnit = (ProductionUnit) productionUnitSelectionList
        .getSelection();
    if (productionUnit != null) {
      PatternFilter filterProductionUnit = new PatternFilter(
          productionUnit.getProductionUnitName(),
          Pattern.CASE_INSENSITIVE, 8);
      filters.add(filterProductionUnit);
    }
  }

  @Override
  protected TableModel getTableModel(final WindowInterface window) {
    return new TakstolProductionTableModel(getObjectSelectionList());
  }

  @Override
  void setFirstHighlighters() {
    ColorHighlighter bluePattern = new ColorHighlighter(
        new PatternPredicate("[^---]", ProductionColumn.STARTET_KAPPING
            .ordinal()), Color.WHITE, ColorEnum.BLUE.getColor());
    table.addHighlighter(bluePattern);

    ColorHighlighter greenPattern = new ColorHighlighter(
        new PatternPredicate("[^---]", ProductionColumn.KAPPING_FERDIG
            .ordinal()), Color.WHITE, ColorEnum.GREEN.getColor());
    table.addHighlighter(greenPattern);
  }

  @Override
  void setAdditionHighlighters() {
    ColorHighlighter pattern = new ColorHighlighter(new PatternPredicate(
        "[Nei]", ProductionColumn.valueOf("KOMPLETT").ordinal()),
        ColorEnum.YELLOW.getColor(), Color.BLACK);
    table.addHighlighter(pattern);
    ColorHighlighter greyPattern = new ColorHighlighter(
        new PatternPredicate("90", ProductionColumn.valueOf(
            "SANNSYNLIGHET").ordinal()), ColorEnum.GREY.getColor(),
        null);
    table.addHighlighter(greyPattern);

  }

  final class TakstolProductionTableModel extends AbstractTableAdapter {

    private static final long serialVersionUID = 1L;

    public TakstolProductionTableModel(final ListModel listModel) {
      super(listModel, ProductionColumn.getColumnNames());
    }

    /**
     * Henter verdi
     *
     * @param rowIndex
     * @param columnIndex
     * @return verdi
     */
    public Object getValueAt(final int rowIndex, final int columnIndex) {
      Produceable produceable = (Produceable) getRow(rowIndex);
      String columnName = StringUtils.upperCase(
          getColumnName(columnIndex)).replaceAll(" ", "_")
          .replaceAll("\\.", "_");

      return ProductionColumn.valueOf(columnName).getValue(produceable);
    }

    /**
     * @see javax.swing.table.AbstractTableModel#getColumnClass(int)
     */
    @Override
    public Class<?> getColumnClass(final int columnIndex) {
      String columnName = StringUtils.upperCase(
          getColumnName(columnIndex)).replaceAll(" ", "_")
          .replaceAll("\\.", "_");
      return ProductionColumn.valueOf(columnName).getColumnClass();
    }

  }

  private enum ProductionColumn {
    TRANSPORT("Transport") {
      @Override
      public Class<?> getColumnClass() {
        return String.class;
      }

      @Override
      public Object getValue(Produceable produceable) {
        return produceable.getTransportDetails();
      }

      @Override
      public int getColumnWidth() {
        return 100;
      }
    },
    ORDRE("Ordre") {
      @Override
      public Class<?> getColumnClass() {
        return Produceable.class;
      }

      @Override
      public Object getValue(Produceable produceable) {
        return produceable;
      }

      @Override
      public int getColumnWidth() {
        return 200;
      }
    },
    PROD_DATO("Prod.dato") {
      @Override
      public Class<?> getColumnClass() {
        return String.class;
      }

      @Override
      public Object getValue(Produceable produceable) {
        return Util.formatDate(produceable.getProductionDate(),
            Util.SHORT_DATE_FORMAT);
      }

      @Override
      public int getColumnWidth() {
        return 70;
      }
    },
    ANTALL("Antall") {
      @Override
      public Class<?> getColumnClass() {
        return String.class;
      }

      @Override
      public Object getValue(Produceable produceable) {
        if (produceable.getNumberOfItems() != null) {
          return decimalFormat.format(produceable.getNumberOfItems());
        }
        return "";
      }

      @Override
      public int getColumnWidth() {
        return 50;
      }
    },
    SPESIFIKASJON("Spesifikasjon") {
      @Override
      public Class<?> getColumnClass() {
        return String.class;
      }

      @Override
      public Object getValue(Produceable produceable) {
        if (produceable.getOrdln() != null) {
          return produceable.getOrdln().getDescription();
        }
        return Util.removeNoAttributes(produceable.getAttributeInfo());
      }

      @Override
      public int getColumnWidth() {
        return 400;
      }
    },
    OPPLASTING("Opplasting") {
      @Override
      public Class<?> getColumnClass() {
        return String.class;
      }

      @Override
      public Object getValue(Produceable produceable) {
        Date loadingDate = produceable.getLoadingDate();
        if (loadingDate != null) {
          return Util.SHORT_DATE_FORMAT.format(loadingDate);
        }
        return null;
      }

      @Override
      public int getColumnWidth() {
        return 70;
      }
    },
    PRODUSERT("Produsert") {
      @Override
      public Class<?> getColumnClass() {
        return String.class;
      }

      @Override
      public Object getValue(Produceable produceable) {
        if (produceable.getProduced() != null) {
          return Util.SHORT_DATE_FORMAT.format(produceable
              .getProduced());
        }
        return "---";
      }

      @Override
      public int getColumnWidth() {
        return 70;
      }
    },
    PRODUKTOMR�DE("Produktomr�de") {
      @Override
      public Class<?> getColumnClass() {
        return String.class;
      }

      @Override
      public Object getValue(Produceable produceable) {
        if (produceable.getProductAreaGroupName() != null) {
          return produceable.getProductAreaGroupName();
        }
        return "";
      }

      @Override
      public int getColumnWidth() {
        return 60;
      }
    },
    PROD_ENHET("Prod.enhet") {
      @Override
      public Class<?> getColumnClass() {
        return String.class;
      }

      @Override
      public Object getValue(Produceable produceable) {
        return produceable.getProductionUnitName();
      }

      @Override
      public int getColumnWidth() {
        return 70;
      }
    },
    STARTET("Startet") {
      @Override
      public Class<?> getColumnClass() {
        return String.class;
      }

      @Override
      public Object getValue(Produceable produceable) {
        Date started = produceable.getRelatedStartedDate();
        if (started != null) {
          return Util.SHORT_DATE_FORMAT.format(started);
        }
        return "---";
      }

      @Override
      public int getColumnWidth() {
        return 70;
      }
    },
    ARTIKKEL("Artikkel") {
      @Override
      public Class<?> getColumnClass() {
        return String.class;
      }

      @Override
      public Object getValue(Produceable produceable) {
        return produceable.getArticleName();
      }

      @Override
      public int getColumnWidth() {
        return 70;
      }
    },
    KOMPLETT("Komplett") {
      @Override
      public Class<?> getColumnClass() {
        return String.class;
      }

      @Override
      public Object getValue(Produceable produceable) {
        if (produceable.getProduced() != null) {// hovedartikkel pakket
          return produceable.isRelatedArticlesComplete() ? "Ja"
              : "Nei";// sjekker relaterte artikler
        } else {
          if (produceable.isRelatedArticlesStarted()) {
            return "Nei";
          } else {
            return "Ja";
          }
        }
      }

      @Override
      public int getColumnWidth() {
        return 60;
      }
    },
    SANNSYNLIGHET("Sannsynlighet") {
      @Override
      public Class<?> getColumnClass() {
        return Integer.class;
      }

      @Override
      public Object getValue(Produceable produceable) {
        return produceable.getProbability();
      }

      @Override
      public int getColumnWidth() {
        return 50;
      }
    },
    TAKSTOLTEGNER("Takstoltegner") {
      @Override
      public Class<?> getColumnClass() {
        return String.class;
      }

      @Override
      public Object getValue(Produceable produceable) {
        return produceable.getTrossDrawer();
      }

      @Override
      public int getColumnWidth() {
        return 100;
      }
    },
    STARTET_KAPPING("Startet kapping") {
      @Override
      public Class<?> getColumnClass() {
        return String.class;
      }

      @Override
      public int getColumnWidth() {
        return 70;
      }

      @Override
      public Object getValue(Produceable produceable) {
        TakstolProductionV takstol = (TakstolProductionV) produceable;
        Date started = takstol.getCuttingStarted();
        if (started != null) {
          return Util.SHORT_DATE_FORMAT.format(started);
        }
        return "---";
      }
    },
    KAPPING_FERDIG("Kapping ferdig") {
      @Override
      public Class<?> getColumnClass() {
        return String.class;
      }

      @Override
      public int getColumnWidth() {
        return 70;
      }

      @Override
      public Object getValue(Produceable produceable) {
        TakstolProductionV takstol = (TakstolProductionV) produceable;
        Date kappingFerdig = takstol.getCuttingDone();
        if (kappingFerdig != null) {
          return Util.SHORT_DATE_FORMAT.format(kappingFerdig);
        }
        return "---";
      }
    };

    private String columnName;
    private static DecimalFormat decimalFormat;
    static {
      decimalFormat = new DecimalFormat();
      decimalFormat.setDecimalSeparatorAlwaysShown(false);
      decimalFormat.setParseIntegerOnly(true);
    }

    private ProductionColumn(String aColumnName) {
      columnName = aColumnName;

    }

    public String getColumnName() {
      return columnName;
    }

    public static String[] getColumnNames() {
      ProductionColumn[] productionColumns = ProductionColumn.values();

      List<String> columnNameList = new ArrayList<String>();
      for (int i = 0; i < productionColumns.length; i++) {
        columnNameList.add(productionColumns[i].getColumnName());
      }
      String[] columnNames = new String[columnNameList.size()];
      return columnNameList.toArray(columnNames);
    }

    public abstract Object getValue(Produceable produceable);

    public abstract Class<?> getColumnClass();

    public abstract int getColumnWidth();
  }

  public JButton getButtonShowTakstolInfo(WindowInterface window) {
    buttonShowTakstolInfo = new JButton(showTakstolInfoActionFactory
        .create(this, window));
    buttonShowTakstolInfo.setName("ButtonShowTakstolInfo");
    buttonShowTakstolInfo.setEnabled(false);
    return buttonShowTakstolInfo;
  }

  @Override
  protected void buttonsEnabled(final Produceable produceable,
      boolean hasSelection) {
    buttonStartetKapping.setEnabled(false);
    buttonIkkeStartetKapping.setEnabled(false);
    buttonFerdigKappet.setEnabled(false);
    buttonIkkeFerdigKappet.setEnabled(false);
    if (hasSelection) {
      TakstolProductionV takstolProductionV = (TakstolProductionV) produceable;
      if (takstolProductionV.getProbability() != null
          && takstolProductionV.getProbability() == 100
          && takstolProductionV.getCuttingStarted() == null
          && takstolProductionV.getCuttingDone() == null
          && takstolProductionV.getActionStarted() == null
          && takstolProductionV.getProduced() == null) {
        buttonStartetKapping.setEnabled(true);
      }
      if (takstolProductionV.getCuttingStarted() != null
          && takstolProductionV.getActionStarted() == null
          && takstolProductionV.getProduced() == null
          && takstolProductionV.getCuttingDone() == null) {
        buttonIkkeStartetKapping.setEnabled(true);
      }
      if (takstolProductionV.getProbability() != null
          && takstolProductionV.getProbability() == 100
          && takstolProductionV.getCuttingDone() == null
          && takstolProductionV.getActionStarted() == null
          && takstolProductionV.getProduced() == null) {
        buttonFerdigKappet.setEnabled(true);
      }
      if (takstolProductionV.getCuttingDone() != null
          && takstolProductionV.getProduced() == null
          && takstolProductionV.getActionStarted() == null) {
        buttonIkkeFerdigKappet.setEnabled(true);
      }
    }
    if (buttonShowTakstolInfo != null) {
      buttonShowTakstolInfo.setEnabled(hasSelection);
    }
  }

  public String getSelectedOrderNr() {
    Produceable produceable = getSelectedObject();
    return produceable.getOrderNr();
  }

  @Override
  void initColumnWidthExt() {
    List<TableColumn> columns = table.getColumns();
    for (TableColumn col : columns) {
      String columnHeader = StringUtils.replace(StringUtils
          .replace(StringUtils.upperCase(String.valueOf(col
              .getHeaderValue())), " ", "_"), ".", "_");
      ProductionColumn productionColumn = ProductionColumn
          .valueOf(columnHeader);
      table.getColumnExt(productionColumn.getColumnName())
          .setPreferredWidth(productionColumn.getColumnWidth());
    }

  }

  public JButton getButtonStartetKapping(WindowInterface window) {
    buttonStartetKapping = new JButton(new StartetKappingAction());
    buttonStartetKapping.setName("ButtonStartetKapping");
    buttonStartetKapping.setEnabled(false);
    return buttonStartetKapping;
  }

  public JButton getButtonIkkeStartetKapping(WindowInterface window) {
    buttonIkkeStartetKapping = new JButton(new IkkeStartetKappingAction());
    buttonIkkeStartetKapping.setName("ButtonIkkeStartetKapping");
    buttonIkkeStartetKapping.setEnabled(false);
    return buttonIkkeStartetKapping;
  }

  public JButton getButtonFerdigKappet(WindowInterface window) {
    buttonFerdigKappet = new JButton(new FerdigKappetAction());
    buttonFerdigKappet.setName("ButtonFerdigKappet");
    buttonFerdigKappet.setEnabled(false);
    return buttonFerdigKappet;
  }

  public JButton getButtonIkkeFerdigKappet(WindowInterface window) {
    buttonIkkeFerdigKappet = new JButton(new IkkeFerdigKappetAction());
    buttonIkkeFerdigKappet.setName("ButtonIkkeFerdigKappet");
    buttonIkkeFerdigKappet.setEnabled(false);
    return buttonIkkeFerdigKappet;
  }

  @SuppressWarnings("serial")
  private class StartetKappingAction extends AbstractAction {

    public StartetKappingAction() {
      super("Startet kapping");
    }

    public void actionPerformed(ActionEvent e) {
      settStartetKapping(Util.getCurrentDate());

    }

  }

  private void settStartetKapping(Date startetKappingDato) {
    Produceable produceable = getSelectedObject();
    ((TakstolProductionApplyList) applyListInterface).settStartetKapping(
        produceable, startetKappingDato);
  }

  private void settKappingFerdig(Date kappingFerdigDato) {
    Produceable produceable = getSelectedObject();
    ((TakstolProductionApplyList) applyListInterface).settKappingFerdig(
        produceable, kappingFerdigDato);
  }

  @SuppressWarnings("serial")
  private class IkkeStartetKappingAction extends AbstractAction {

    public IkkeStartetKappingAction() {
      super("Ikke startet kapping");
    }

    public void actionPerformed(ActionEvent e) {
      settStartetKapping(null);

    }

  }

  @SuppressWarnings("serial")
  private class FerdigKappetAction extends AbstractAction {

    public FerdigKappetAction() {
      super("Ferdig kappet");
    }

    public void actionPerformed(ActionEvent e) {
      settKappingFerdig(Util.getCurrentDate());

    }

  }

  @SuppressWarnings("serial")
  private class IkkeFerdigKappetAction extends AbstractAction {

    public IkkeFerdigKappetAction() {
      super("Ikke ferdig kappet");
    }

    public void actionPerformed(ActionEvent e) {
      settKappingFerdig(null);

    }

  }
 
  private class SetApplied implements Threadable{
    private boolean applied;
    private Produceable produceable;
    private WindowInterface window;
    public SetApplied(boolean applied,Produceable produceable,WindowInterface window){
      this.applied=applied;
      this.window=window;
      this.produceable=produceable;
    }

    public void enableComponents(boolean enable) {
      // TODO Auto-generated method stub
     
    }

    public Object doWork(Object[] params, JLabel labelInfo) {
      if(applied){
      labelInfo.setText("Setter produsert...");
      }else{
        labelInfo.setText("Setter ikke produsert...");
      }
      if (applied) {
        ProductionUnit productionUnit = setProductionUnit(window,
            produceable);
        setProductionUnitForRelatedArticles(produceable, productionUnit,
            window);
      }
      applyListInterface.setApplied(produceable, applied, window);
      return null;
    }

    public void doWhenFinished(Object object) {
      // TODO Auto-generated method stub
     
    }
   
  }
}
TOP

Related Classes of no.ugland.utransprod.gui.handlers.TakstolProductionViewHandler$IkkeStartetKappingAction

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.