Package no.ugland.utransprod.gui.edit

Source Code of no.ugland.utransprod.gui.edit.EditOrderView$CustomerSelectionHandler

package no.ugland.utransprod.gui.edit;

import java.awt.BorderLayout;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;

import javax.swing.Action;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;

import no.ugland.utransprod.ProTransException;
import no.ugland.utransprod.gui.OrderArticleView;
import no.ugland.utransprod.gui.OrderCostsView;
import no.ugland.utransprod.gui.WindowInterface;
import no.ugland.utransprod.gui.handlers.OrderViewHandler;
import no.ugland.utransprod.gui.model.OrderModel;
import no.ugland.utransprod.model.Customer;
import no.ugland.utransprod.model.Order;
import no.ugland.utransprod.model.ProductAreaGroup;
import no.ugland.utransprod.model.Project;
import no.ugland.utransprod.model.validators.OrderValidator;
import no.ugland.utransprod.util.IconFeedbackPanel;
import no.ugland.utransprod.util.Util;

import org.jdesktop.swingx.JXCollapsiblePane;

import com.jgoodies.binding.adapter.BasicComponentFactory;
import com.jgoodies.binding.adapter.ComboBoxAdapter;
import com.jgoodies.binding.beans.PropertyConnector;
import com.jgoodies.binding.value.BufferedValueModel;
import com.jgoodies.binding.value.ValueModel;
import com.jgoodies.forms.builder.PanelBuilder;
import com.jgoodies.forms.factories.ButtonBarFactory;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.FormLayout;
import com.jgoodies.validation.Validator;
import com.jgoodies.validation.view.ValidationComponentUtils;
import com.toedter.calendar.JDateChooser;
import com.toedter.calendar.JYearChooser;

/**
* Klassesom h�ndterer editeringsvindu for ordre
*
* @author atle.brekka
*/
public class EditOrderView extends AbstractEditView<OrderModel, Order> {
  private JTextField textFieldCustomerNr;

  private JTextField textFieldCustomerFirstName;

  private JTextField textFieldCustomerLastName;

  private JTextField textFieldOrderNr;

  private JTextField textFieldAddress;

  private JTextField textFieldPostalCode;

  private JTextField textFieldPostoffice;

  private JCheckBox checkBoxAssembly;

  private JComboBox comboBoxConstructionType;

  private JComboBox comboBoxTransport;

  private OrderViewHandler orderViewHandler;

  private JComponent panelAssembly;

  private JDateChooser orderDate;

  private JCheckBox checkBoxCosts;

  private JXCollapsiblePane collapsiblePaneCost;

  private JDateChooser dateChooserInvoiced;

  private JCheckBox checkBoxLock;

  private JComboBox comboBoxAssemblyTeam;

  private JYearChooser yearChooser;

  private JComboBox comboBoxAssemblyWeek;

  private JDateChooser agreementDate;

  private JTextField textFieldTelephoneNr;

  private JComboBox comboBoxDeliveryWeek;

  private JDateChooser dateChooserPacklist;

  private JComboBox comboBoxProductArea;

  private JTextField textFieldSalesman;

  private JDateChooser dateChooserPaid;

  private JList listComments;

  private JButton buttonAddComment;

  private JTextField textFieldPackageDate;

  private JTextField textFieldPackedBy;

  private JTextField textFieldGavlDone;

  private JTextField textFieldTakstolDone;

  private JTextField textFieldFrontDone;

  private JTextField textFieldVeggDone;

  private JTextField textFieldAssemblyDone;

  private JTextField textFieldTakstolPackaged;

  private JTextField textFieldRegistered;

  private JDateChooser productionDateChooser;

  private JTextField textFieldLoadingDate;

  private JTextField textFieldProjectNr;

  private JTextField textFieldProjectName;

  private JTextField textFieldCuttingFile;

  private JButton buttonImportCuttingFile;

  private JButton buttonOpenCuttingFile;

  private JTextField textFieldTelephoneNrSite;

  private JTextField textFieldMaxTrossHeight;

  public EditOrderView(final OrderViewHandler handler, final Order order,
      final boolean searchDialog, final Project project) {
    super(searchDialog, new OrderModel(order, searchDialog, true, true,
        project.getProjectNumber(), project.getProjectName()), handler);

    orderViewHandler = handler;
  }

  @Override
  protected final void initEditComponents(final WindowInterface window1) {
    orderViewHandler.checkAddresses(presentationModel, window1);
    comboBoxAssemblyTeam = new JComboBox(
        new ComboBoxAdapter(
            orderViewHandler
                .getSupplierList((ProductAreaGroup) presentationModel
                    .getBufferedValue(OrderModel.PROPERTY_PRODUCT_AREA_GROUP)),
            presentationModel
                .getBufferedModel(OrderModel.PROPERTY_SUPPLIER)));
    comboBoxAssemblyTeam.setName("ComboBoxAssemblyTeam");
    orderViewHandler.addEditComponent(comboBoxAssemblyTeam);

    createAssemblyFields();

    checkBoxLock = orderViewHandler.getCheckBoxLock();
    BufferedValueModel bufferedValueModel = presentationModel
        .getBufferedModel(OrderModel.PROPERTY_CUSTOMER);

    createCustomerFields();
    createOrderFields(window1);
    checkBoxAssembly = BasicComponentFactory.createCheckBox(
        presentationModel
            .getBufferedModel(OrderModel.PROPERTY_DO_ASSEMBLY),
        "Montering");
    checkBoxAssembly.setName("Assembly");
    orderViewHandler.addEditComponent(checkBoxAssembly);

    comboBoxConstructionType = orderViewHandler
        .getComboBoxConstructionType(presentationModel);

    boolean onlyNewTransport = false;
    if (presentationModel.getBufferedValue(OrderModel.PROPERTY_ORDER_ID) == null
        && !search) {
      onlyNewTransport = true;
    }
    comboBoxTransport = new JComboBox(new ComboBoxAdapter(
        orderViewHandler.getTransportList(onlyNewTransport),
        presentationModel
            .getBufferedModel(OrderModel.PROPERTY_TRANSPORT)));
    comboBoxTransport.setName("Transport");
    orderViewHandler.addEditComponent(comboBoxTransport);

    panelAssembly = buildAssemblyPanel();

    panelAssembly.setName("AssemblyPanel");
    panelAssembly.setVisible(false);

    orderDate = new JDateChooser();

    orderDate.setName("OrderDate");
    orderViewHandler.addEditComponent(orderDate);

    collapsiblePaneCost = new JXCollapsiblePane(new BorderLayout());
    Action toggleCostAction = collapsiblePaneCost.getActionMap().get(
        JXCollapsiblePane.TOGGLE_ACTION);

    checkBoxCosts = new JCheckBox(toggleCostAction);
    checkBoxCosts.setText("Kostnader");
    checkBoxCosts.setSelected(true);

    PropertyConnector connOrderDate = new PropertyConnector(orderDate,
        "date",
        presentationModel
            .getBufferedModel(OrderModel.PROPERTY_ORDER_DATE),
        "value");

    connOrderDate.updateProperty1();

    PropertyConnector connAssembly = new PropertyConnector(panelAssembly,
        "visible",
        presentationModel
            .getBufferedModel(OrderModel.PROPERTY_DO_ASSEMBLY),
        "value");
    connAssembly.updateProperty1();

    dateChooserInvoiced = new JDateChooser();
    orderViewHandler.addEditComponent(dateChooserInvoiced);

    PropertyConnector connInvoiceDate = new PropertyConnector(
        dateChooserInvoiced, "date",
        presentationModel
            .getBufferedModel(OrderModel.PROPERTY_INVOICE_DATE),
        "value");

    connInvoiceDate.updateProperty1();

    dateChooserPacklist = new JDateChooser();
    orderViewHandler.addEditComponent(dateChooserPacklist);

    PropertyConnector connPacklistDate = new PropertyConnector(
        dateChooserPacklist, "date",
        presentationModel
            .getBufferedModel(OrderModel.PROPERTY_PACKLIST_READY),
        "value");

    connPacklistDate.updateProperty1();

    agreementDate = new JDateChooser();
    agreementDate.setName("AgreementDate");
    if (!search) {
      agreementDate.setEnabled(false);
    }
    PropertyConnector connAgreementDate = new PropertyConnector(
        agreementDate, "date",
        presentationModel
            .getBufferedModel(OrderModel.PROPERTY_AGREEMENT_DATE),
        "value");

    connAgreementDate.updateProperty1();

    textFieldTelephoneNr = BasicComponentFactory.createTextField(
        presentationModel
            .getBufferedModel(OrderModel.PROPERTY_TELEPHONE_NR),
        !search);
    textFieldTelephoneNr.setName("TelephoneNr");
    orderViewHandler.addEditComponent(textFieldTelephoneNr);

    comboBoxDeliveryWeek = new JComboBox(new ComboBoxAdapter(
        Util.getWeeks(),
        presentationModel
            .getBufferedModel(OrderModel.PROPERTY_DELIVERY_WEEK)));
    comboBoxDeliveryWeek.setName("DeliveryWeek");
    orderViewHandler.addEditComponent(comboBoxDeliveryWeek);

    bufferedValueModel
        .addValueChangeListener(new CustomerSelectionHandler());

    comboBoxProductArea = orderViewHandler
        .getComboBoxProductArea(presentationModel);

    textFieldSalesman = BasicComponentFactory
        .createTextField(presentationModel
            .getBufferedModel(OrderModel.PROPERTY_SALESMAN));
    orderViewHandler.addEditComponent(textFieldSalesman);

    dateChooserPaid = new JDateChooser();
    dateChooserPaid.setName("DateChooserPaid");
    orderViewHandler.addEditComponent(dateChooserPaid);

    PropertyConnector connPaidDate = new PropertyConnector(dateChooserPaid,
        "date",
        presentationModel
            .getBufferedModel(OrderModel.PROPERTY_PAID_DATE),
        "value");

    connPaidDate.updateProperty1();

    listComments = orderViewHandler.getListComments(presentationModel);
    orderViewHandler.addEditComponent(listComments);
    buttonAddComment = orderViewHandler.getButtonAddComment(window1,
        presentationModel);
    orderViewHandler.addEditComponent(buttonAddComment);

    createStatusFields();
    productionDateChooser = orderViewHandler
        .getProductionDateChooser(presentationModel);

    textFieldProjectNr = orderViewHandler
        .getTextFieldProjectNr(presentationModel);
    textFieldProjectName = orderViewHandler
        .getTextFieldProjectName(presentationModel);

    textFieldCuttingFile = orderViewHandler
        .getTextFieldCuttingFile(presentationModel);

    buttonImportCuttingFile = orderViewHandler.getButtonImportCuttingFile(
        window1, presentationModel);

    buttonOpenCuttingFile = orderViewHandler.getButtonOpenCuttingFile(
        presentationModel, window1);

    textFieldTelephoneNrSite = orderViewHandler
        .getTextFieldTelephonenrSite(presentationModel);
    textFieldMaxTrossHeight = orderViewHandler
        .getTextFieldMaxTrossHeight(presentationModel);

    updateCustomerFieldsEnablement();
  }

  private void createOrderFields(final WindowInterface window1) {
    textFieldOrderNr = BasicComponentFactory.createTextField(
        presentationModel
            .getBufferedModel(OrderModel.PROPERTY_ORDER_NR),
        !search);

    textFieldOrderNr.setName("OrderNr");

    addOrderNrChangeListener(window1);

    orderViewHandler.addEditComponent(textFieldOrderNr);

    SwingUtilities.invokeLater(new Runnable() {
      public void run() {
        textFieldOrderNr.requestFocus();
      }
    });

    textFieldAddress = BasicComponentFactory
        .createTextField(
            presentationModel
                .getBufferedModel(OrderModel.PROPERTY_DELIVERY_ADDRESS),
            !search);
    textFieldAddress.setName("Address");
    orderViewHandler.addEditComponent(textFieldAddress);

    textFieldPostalCode = BasicComponentFactory.createTextField(
        presentationModel
            .getBufferedModel(OrderModel.PROPERTY_POSTAL_CODE),
        !search);
    textFieldPostalCode.setName("PostalCode");
    orderViewHandler.addEditComponent(textFieldPostalCode);

    textFieldPostoffice = BasicComponentFactory.createTextField(
        presentationModel
            .getBufferedModel(OrderModel.PROPERTY_POST_OFFICE),
        !search);
    textFieldPostoffice.setName("Postoffice");
    orderViewHandler.addEditComponent(textFieldPostoffice);
  }

  private void createCustomerFields() {
    textFieldCustomerNr = BasicComponentFactory.createTextField(
        presentationModel
            .getBufferedModel(OrderModel.PROPERTY_CUSTOMER_NR),
        !search);

    textFieldCustomerNr.setName("CustomerNr");
    orderViewHandler.addEditComponent(textFieldCustomerNr);

    textFieldCustomerFirstName = BasicComponentFactory
        .createTextField(
            presentationModel
                .getBufferedModel(OrderModel.PROPERTY_CUSTOMER_FIRST_NAME),
            !search);

    textFieldCustomerFirstName.setName("CustomerFirstName");
    orderViewHandler.addEditComponent(textFieldCustomerFirstName);

    textFieldCustomerLastName = BasicComponentFactory
        .createTextField(
            presentationModel
                .getBufferedModel(OrderModel.PROPERTY_CUSTOMER_LAST_NAME),
            !search);
    textFieldCustomerLastName.setName("CustomerLastName");
    orderViewHandler.addEditComponent(textFieldCustomerLastName);
  }

  private void createAssemblyFields() {
    ValueModel yearModel = presentationModel
        .getBufferedModel(OrderModel.PROPERTY_ASSEMBLY_YEAR);

    yearChooser = new JYearChooser();

    yearChooser.setName("AssemblyYear");
    orderViewHandler.addEditComponent(yearChooser);

    PropertyConnector conn = new PropertyConnector(yearChooser, "year",
        yearModel, "value");
    conn.updateProperty2();

    comboBoxAssemblyWeek = new JComboBox(new ComboBoxAdapter(
        Util.getWeeks(),
        presentationModel
            .getBufferedModel(OrderModel.PROPERTY_ASSEMBLY_WEEK)));
    comboBoxAssemblyWeek.setName("AssemblyWeek");
    orderViewHandler.addEditComponent(comboBoxAssemblyWeek);
  }

  private void createStatusFields() {
    textFieldPackageDate = orderViewHandler
        .getTextFieldPackageDate(presentationModel);
    textFieldPackedBy = orderViewHandler
        .getTextFieldPackedBy(presentationModel);
    textFieldGavlDone = orderViewHandler
        .getTextFieldGavlDone(presentationModel);
    textFieldTakstolDone = orderViewHandler
        .getTextFieldTakstolDone(presentationModel);
    textFieldFrontDone = orderViewHandler
        .getTextFieldFrontDone(presentationModel);
    textFieldVeggDone = orderViewHandler
        .getTextFieldVeggDone(presentationModel);
    textFieldAssemblyDone = orderViewHandler
        .getTextFieldAssemblyDone(presentationModel);
    textFieldTakstolPackaged = orderViewHandler
        .getTextFieldTakstolPackaged(presentationModel);
    textFieldRegistered = orderViewHandler
        .getTextFieldRegistered(presentationModel);
    textFieldLoadingDate = orderViewHandler
        .getTextFieldLoadingDate(presentationModel);
  }

  private void addOrderNrChangeListener(final WindowInterface window1) {
    // dersom ny ordre
    if (((OrderModel) presentationModel.getBean()).getOrderId() == null
        && !search) {
      presentationModel.getBufferedModel(OrderModel.PROPERTY_ORDER_NR)
          .addValueChangeListener(
              ((OrderViewHandler) viewHandler)
                  .getOrderNrChangeListener(window1));
    }
  }

  /**
   * Bygger monteringspanel
   *
   * @return panel
   */
  public final JComponent buildAssemblyPanel() {

    FormLayout layout = new FormLayout(
        "min(p;95dlu),3dlu,30dlu,3dlu,p,3dlu,p,3dlu,p,3dlu,85dlu", "p");// ,3dlu,p,3dlu,p");
    PanelBuilder builder = new PanelBuilder(layout);
    CellConstraints cc = new CellConstraints();
    builder.addLabel("�r:", cc.xy(1, 1));
    builder.add(yearChooser, cc.xy(3, 1));
    builder.addLabel("Uke:", cc.xy(5, 1));
    builder.add(comboBoxAssemblyWeek, cc.xy(7, 1));

    builder.addLabel("Monteringsteam:", cc.xy(9, 1));
    builder.add(comboBoxAssemblyTeam, cc.xy(11, 1));
    return builder.getPanel();
  }

  @Override
  protected final JComponent buildEditPanel(final WindowInterface window) {
    FormLayout layout;
    String tabbedPaneSize = "270dlu";
    String commentPaneSize = "80dlu:grow";
    if (search) {
      tabbedPaneSize = "p";
      commentPaneSize = "p";
    }
    layout = new FormLayout("10dlu,145dlu,3dlu,150dlu,3dlu,"
        + tabbedPaneSize + ",10dlu",
        "10dlu,p,3dlu,fill:200dlu:grow,3dlu,15dlu,3dlu,"
            + commentPaneSize + ",5dlu:grow,p:grow,5dlu");
    PanelBuilder builder = new PanelBuilder(layout);
    // PanelBuilder builder = new PanelBuilder(new FormDebugPanel(),layout);
    CellConstraints cc = new CellConstraints();

    if (!search) {
      builder.add(buildCustomerComboPanel(), cc.xy(2, 2));
    }
    builder.add(buildCustomerOrderPanel(), cc.xywh(2, 4, 3, 3));

    if (!search) {
      builder.add(buildCommentsPanel(), cc.xywh(2, 8, 3, 1));
      builder.add(buildTabbedPanel(window), cc.xy(6, 4));

      builder.add(checkBoxCosts, cc.xy(6, 6));
      builder.add(buildCostPanel(window), cc.xy(6, 8));
    }

    if (!search) {
      builder.add(ButtonBarFactory.buildCenteredBar(buttonRefresh,
          buttonSave, buttonCancel), cc.xyw(2, 10, 5));
    } else {
      builder.add(
          ButtonBarFactory.buildCenteredBar(buttonSave, buttonCancel),
          cc.xyw(2, 10, 5));
      window.getRootPane().setDefaultButton(buttonSave);
    }

    if (!search) {
      orderViewHandler.setComponentEnablement();
    }

    return new IconFeedbackPanel(validationResultModel, builder.getPanel());
  }

  public void resetBuffering() {
    presentationModel.triggerFlush();
  }

  /**
   * Bygger tabbedpane med avvik og artikler
   *
   * @param window
   * @return panel
   */
  private JComponent buildTabbedPanel(final WindowInterface window) {
    JTabbedPane tabbedPane = new JTabbedPane();
    tabbedPane.setName("TabbedPaneDeviationArticle");
    tabbedPane.add("Avvik", buildDeviationPane(window));
    tabbedPane.add("Artikler", buildArticlePanel(window));
    tabbedPane.add("Produksjonsdetaljer", buildProductionPanel());
    tabbedPane.add("Filer", buildAttachmentPanel(window));
    return tabbedPane;
  }

  private JPanel buildAttachmentPanel(WindowInterface aWindow) {
    try {
      return orderViewHandler.getAttachmentView(presentationModel)
          .buildPanel(aWindow);
    } catch (ProTransException e) {
      e.printStackTrace();
      Util.showErrorDialog(aWindow, "Feil", e.getMessage());
    }
    return new JPanel();
  }

  /**
   * Bygger avvikspanel
   *
   * @param window
   * @return panel
   */
  private JPanel buildDeviationPane(final WindowInterface window) {
    return orderViewHandler.getDeviationPane(window, presentationModel);

  }

  /**
   * Bygger panel med kundevalg
   *
   * @return panel
   */
  private JPanel buildCustomerComboPanel() {
    FormLayout layout = new FormLayout("p,3dlu,100dlu", "p");
    PanelBuilder builder = new PanelBuilder(layout);

    // PanelBuilder builder = new PanelBuilder(new FormDebugPanel(),layout);
    CellConstraints cc = new CellConstraints();

    builder.add(checkBoxLock, cc.xy(3, 1));

    return builder.getPanel();
  }

  /**
   * Lager panel for kommentarer
   *
   * @return panel
   */
  private JPanel buildCommentsPanel() {
    FormLayout layout = new FormLayout("200dlu,3dlu,p", "p,3dlu,top:50dlu");
    PanelBuilder builder = new PanelBuilder(layout);
    CellConstraints cc = new CellConstraints();

    builder.addLabel("Kommentarer:", cc.xy(1, 1));
    builder.add(new JScrollPane(listComments), cc.xy(1, 3));

    builder.add(buttonAddComment, cc.xy(3, 3));

    return builder.getPanel();
  }

  private JPanel buildCustomerOrderPanel() {
    FormLayout layout = new FormLayout(
        "p,3dlu,80dlu,3dlu,p,3dlu,90dlu",
        "p,3dlu,p,3dlu,p,3dlu,p,3dlu,p,3dlu,p,3dlu,p,3dlu,p,3dlu,p,3dlu,p,3dlu,p,3dlu,p,3dlu,p");

    PanelBuilder builder = new PanelBuilder(layout);
    // PanelBuilder builder = new PanelBuilder(new FormDebugPanel(),layout);
    CellConstraints cc = new CellConstraints();
    builder.addLabel("Ordernr:", cc.xy(1, 1));
    builder.add(textFieldOrderNr, cc.xy(3, 1));
    builder.addLabel("Kundenr:", cc.xy(1, 3));
    builder.add(textFieldCustomerNr, cc.xy(3, 3));
    builder.addLabel("Fornavn:", cc.xy(1, 5));
    builder.add(textFieldCustomerFirstName, cc.xy(3, 5));
    builder.addLabel("Etternavn", cc.xy(1, 7));
    builder.add(textFieldCustomerLastName, cc.xy(3, 7));
    builder.addLabel("Telefon", cc.xy(1, 9));
    builder.add(textFieldTelephoneNr, cc.xy(3, 9));

    builder.addLabel("Tlf byggeplass", cc.xy(1, 11));
    builder.add(textFieldTelephoneNrSite, cc.xy(3, 11));

    builder.addLabel("Leveringsadresse:", cc.xy(1, 13));
    builder.add(textFieldAddress, cc.xy(3, 13));
    builder.addLabel("Postnummer:", cc.xy(1, 15));
    builder.add(textFieldPostalCode, cc.xy(3, 15));
    builder.addLabel("Poststed:", cc.xy(1, 17));
    builder.add(textFieldPostoffice, cc.xy(3, 17));
    builder.addLabel("Selger:", cc.xy(1, 19));
    builder.add(textFieldSalesman, cc.xy(3, 19));
    builder.addLabel("Produktomr�de:", cc.xy(1, 21));
    builder.add(comboBoxProductArea, cc.xy(3, 21));

    builder.addLabel("Ordedato:", cc.xy(5, 1));
    builder.add(orderDate, cc.xy(7, 1));
    builder.addLabel("Avropsdato:", cc.xy(5, 3));
    builder.add(agreementDate, cc.xy(7, 3));
    builder.addLabel("�nsket uke:", cc.xy(5, 5));
    builder.add(comboBoxDeliveryWeek, cc.xy(7, 5));
    builder.addLabel("Konstruksjonstype:", cc.xy(5, 7));
    builder.add(comboBoxConstructionType, cc.xy(7, 7));
    builder.addLabel("Transport:", cc.xy(5, 9));
    builder.add(comboBoxTransport, cc.xy(7, 9));
    builder.addLabel("Fakturert:", cc.xy(5, 11));
    builder.add(dateChooserInvoiced, cc.xy(7, 11));
    builder.addLabel("Pakkliste:", cc.xy(5, 13));
    builder.add(dateChooserPacklist, cc.xy(7, 13));
    builder.addLabel("Betalt:", cc.xy(5, 15));
    builder.add(dateChooserPaid, cc.xy(7, 15));
    builder.addLabel("Produksjonsdato:", cc.xy(5, 17));
    builder.add(productionDateChooser, cc.xy(7, 17));
    if (!search) {
      builder.addLabel("Registrert:", cc.xy(5, 19));
      builder.add(textFieldRegistered, cc.xy(7, 19));
      builder.addLabel("Maksh�yde takstol:", cc.xy(5, 21));
      builder.add(textFieldMaxTrossHeight, cc.xy(7, 21));
      builder.addLabel("Prosjektnr:", cc.xy(1, 23));
      builder.add(textFieldProjectNr, cc.xy(3, 23));
      builder.addLabel("Prosjektnavn:", cc.xy(5, 23));
      builder.add(textFieldProjectName, cc.xy(7, 23));
    }
    builder.add(checkBoxAssembly, cc.xy(1, 25));
    builder.add(panelAssembly, cc.xyw(3, 25, 5));

    return builder.getPanel();
  }

  /**
   * Bygger panel for kostnader
   *
   * @param window
   * @return panel
   */
  private JPanel buildCostPanel(final WindowInterface window) {
    OrderCostsView orderCostsView = new OrderCostsView(
        orderViewHandler.getOrderCostsViewHandler(presentationModel),
        true);
    try {
      collapsiblePaneCost.add(orderCostsView.buildPanel(window),
          BorderLayout.CENTER);
    } catch (ProTransException e) {
      Util.showErrorDialog(window, "Feil", e.getMessage());
      e.printStackTrace();
    }
    collapsiblePaneCost.setName("PanelOrderCosts");
    return collapsiblePaneCost;
  }

  /**
   * Lager panel med produksjonsdetaljer
   *
   * @return panel
   */
  private JPanel buildProductionPanel() {
    FormLayout layout = new FormLayout("p,3dlu,50dlu,3dlu,p,3dlu,80dlu",
        "10dlu,p,3dlu,p,3dlu,p,3dlu,p,3dlu,p,3dlu,p,3dlu,p,3dlu,p,3dlu,p");
    PanelBuilder builder = new PanelBuilder(layout);
    // PanelBuilder builder = new PanelBuilder(layout,new FormDebugPanel());
    CellConstraints cc = new CellConstraints();

    builder.addLabel("Gavl ferdig:", cc.xy(1, 2));
    builder.add(textFieldGavlDone, cc.xy(3, 2));
    builder.addLabel("Takstol produsert:", cc.xy(1, 4));
    builder.add(textFieldTakstolDone, cc.xy(3, 4));
    builder.addLabel("pakket:", cc.xy(5, 4));
    builder.add(textFieldTakstolPackaged, cc.xy(7, 4));
    builder.addLabel("Front ferdig:", cc.xy(1, 6));
    builder.add(textFieldFrontDone, cc.xy(3, 6));
    builder.addLabel("Vegg ferdig:", cc.xy(1, 8));
    builder.add(textFieldVeggDone, cc.xy(3, 8));
    builder.addLabel("Pakket:", cc.xy(1, 10));
    builder.add(textFieldPackageDate, cc.xy(3, 10));
    builder.addLabel("av", cc.xy(5, 10));
    builder.add(textFieldPackedBy, cc.xy(7, 10));
    builder.addLabel("Opplastdato:", cc.xy(1, 12));
    builder.add(textFieldLoadingDate, cc.xy(3, 12));
    builder.addLabel("Kappfil:", cc.xy(1, 14));
    builder.add(textFieldCuttingFile, cc.xy(3, 14));

    if ((Boolean) presentationModel
        .getBufferedValue(OrderModel.PROPERTY_DO_ASSEMBLY)) {
      builder.addLabel("Montert:", cc.xy(1, 16));
      builder.add(textFieldAssemblyDone, cc.xy(3, 16));
    }
    builder.add(ButtonBarFactory.buildCenteredBar(buttonImportCuttingFile,
        buttonOpenCuttingFile), cc.xyw(1, 18, 7));

    return builder.getPanel();
  }

  /**
   * Bygger panel for visning av ordrelinjer
   *
   * @param window
   * @return panel
   */
  private JPanel buildArticlePanel(final WindowInterface window) {
    OrderArticleView<Order, OrderModel> orderArticleView = new OrderArticleView<Order, OrderModel>(
        orderViewHandler.getOrderArticleViewHandler(presentationModel),
        false, true);
    return orderArticleView.buildPanel(window);
  }

  /**
   * @param object
   * @return validator
   * @see no.ugland.utransprod.gui.edit.AbstractEditView#getValidator(java.lang.Object)
   */
  @Override
  protected final Validator getValidator(final OrderModel object,
      final boolean search) {
    return new OrderValidator(object, search);
  }

  /**
   * @see no.ugland.utransprod.gui.edit.AbstractEditView#initComponentAnnotations()
   */
  @Override
  protected final void initComponentAnnotations() {
    ValidationComponentUtils.setMandatory(textFieldCustomerNr, true);
    ValidationComponentUtils.setMessageKey(textFieldCustomerNr,
        "Ordre.kunde");

    ValidationComponentUtils.setMandatory(textFieldOrderNr, true);
    ValidationComponentUtils.setMessageKey(textFieldOrderNr,
        "Ordre.ordrenummer");

    ValidationComponentUtils.setMandatory(textFieldAddress, true);
    ValidationComponentUtils.setMessageKey(textFieldAddress,
        "Ordre.adresse");

    ValidationComponentUtils.setMandatory(textFieldPostalCode, true);
    ValidationComponentUtils.setMessageKey(textFieldPostalCode,
        "Ordre.postnummer");

    ValidationComponentUtils.setMandatory(textFieldPostoffice, true);
    ValidationComponentUtils.setMessageKey(textFieldPostoffice,
        "Ordre.poststed");

    ValidationComponentUtils.setMandatory(comboBoxConstructionType, true);
    ValidationComponentUtils.setMessageKey(comboBoxConstructionType,
        "Ordre.garasjetype");

    ValidationComponentUtils.setMandatory(orderDate, true);
    ValidationComponentUtils.setMessageKey(orderDate, "Ordre.ordredato");

    ValidationComponentUtils.setMandatory(comboBoxAssemblyWeek, true);
    ValidationComponentUtils.setMessageKey(comboBoxAssemblyWeek,
        "Ordre.monteringsuke");

    ValidationComponentUtils.setMandatory(comboBoxAssemblyTeam, true);
    ValidationComponentUtils.setMessageKey(comboBoxAssemblyTeam,
        "Ordre.monteringsteam");

    ValidationComponentUtils.setMandatory(comboBoxProductArea, true);
    ValidationComponentUtils.setMessageKey(comboBoxProductArea,
        "Ordre.produktomr�de");

  }

  /**
   * Oppdaterer enable/disable av felter for kunde
   */
  final void updateCustomerFieldsEnablement() {
    boolean enabled = false;
    Customer customer = (Customer) presentationModel
        .getBufferedValue(OrderModel.PROPERTY_CUSTOMER);
    if (customer == null) {
      enabled = true;
    } else {
      textFieldCustomerNr
          .setText(String.valueOf(customer.getCustomerNr()));
      textFieldCustomerFirstName.setText(customer.getFirstName());
      textFieldCustomerLastName.setText(customer.getLastName());
    }
    textFieldCustomerNr.setEnabled(enabled);
    textFieldCustomerFirstName.setEnabled(enabled);
    textFieldCustomerLastName.setEnabled(enabled);
  }

  /**
   * Klassesom h�ndterer valg av kunde
   *
   * @author atle.brekka
   */
  class CustomerSelectionHandler implements PropertyChangeListener {

    /**
     * @see java.beans.PropertyChangeListener#propertyChange(java.beans.PropertyChangeEvent)
     */
    public void propertyChange(final PropertyChangeEvent evt) {
      updateCustomerFieldsEnablement();

    }

  }

  /**
   * Henter ut gjeldende ordremodell
   *
   * @return ordremodell
   */
  public final OrderModel getOrderModel() {
    return (OrderModel) presentationModel.getBean();
  }

  public final String getDialogName() {
    return "EditOrderView";
  }

  public final String getHeading() {
    return "Ordre";
  }
}
TOP

Related Classes of no.ugland.utransprod.gui.edit.EditOrderView$CustomerSelectionHandler

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.