Package no.ugland.utransprod.gui

Source Code of no.ugland.utransprod.gui.AssemblyPlannerView

package no.ugland.utransprod.gui;

import java.awt.BorderLayout;
import java.awt.Component;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTextField;
import javax.swing.ScrollPaneConstants;

import no.ugland.utransprod.gui.handlers.AssemblyPlannerViewHandler;
import no.ugland.utransprod.gui.model.ColorEnum;
import no.ugland.utransprod.model.ProductAreaGroup;
import no.ugland.utransprod.model.Supplier;
import no.ugland.utransprod.util.InternalFrameBuilder;
import no.ugland.utransprod.util.Util;
import no.ugland.utransprod.util.YearWeek;

import org.jdesktop.swingx.JXTable;

import com.jgoodies.binding.adapter.BasicComponentFactory;
import com.jgoodies.binding.beans.BeanAdapter;
import com.jgoodies.binding.beans.PropertyConnector;
import com.jgoodies.binding.list.SelectionInList;
import com.jgoodies.forms.builder.DefaultFormBuilder;
import com.jgoodies.forms.builder.PanelBuilder;
import com.jgoodies.forms.debug.FormDebugPanel;
import com.jgoodies.forms.factories.ButtonBarFactory;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.FormLayout;
import com.jgoodies.forms.layout.RowSpec;
import com.toedter.calendar.JYearChooser;

/**
* Vindu for planlegging av montering
* @author atle.brekka
*/
public class AssemblyPlannerView implements Viewer {
    private JYearChooser yearChooser;

    private JComboBox comboBoxWeeks;

    private AssemblyPlannerViewHandler viewHandler;

    private YearWeek yearWeek;

    private JButton buttonSearchOrder;

    private JLabel labelSearchResult;

    private JButton buttonRefresh;

    private JButton buttonPrint;

    private JButton buttonCancel;

    private JPanel panelAssemblies;

    private JPanel panelTeams;

    private JPanel panelAssembliesMain;

    private JPanel panelTeamsMain;

    private JScrollBar teamVerticalScrollBar;

    private WindowInterface currentWindow;

    private JLabel labelWarning;

    private Map<Supplier, Integer> supplierRowSizes = new Hashtable<Supplier, Integer>();

    private JXTable tableDeviation;

  private JComboBox comboBoxProductAreaGroup;

  private ProductAreaGroup productAreaGroup;

  private Component orderPanelView;
  private JTextField textFieldGreen;
  private JTextField textFieldYellow;
  private JTextField textFieldRed;

    /**
     * @param handler
     */
    public AssemblyPlannerView(final AssemblyPlannerViewHandler handler) {
        viewHandler = handler;
    }

    /**
     * Initierer komponenter
     * @param window
     */
    private void initComponents(final WindowInterface window) {
      textFieldGreen=new JTextField("montert");
      textFieldGreen.setHorizontalAlignment(JTextField.CENTER);
      textFieldGreen.setBackground(ColorEnum.GREEN.getColor());
     
      textFieldYellow=new JTextField("sendt mangler");
      textFieldYellow.setHorizontalAlignment(JTextField.CENTER);
      textFieldYellow.setBackground(ColorEnum.YELLOW.getColor());
     
      textFieldRed=new JTextField("overtid");
      textFieldRed.setHorizontalAlignment(JTextField.CENTER);
      textFieldRed.setBackground(ColorEnum.RED.getColor());
        panelAssembliesMain = new JPanel(new BorderLayout());
        panelTeamsMain = new JPanel(new BorderLayout());
        yearWeek = new YearWeek();
        BeanAdapter yearWeekAdapter = new BeanAdapter(yearWeek, true);
        yearChooser = new JYearChooser();
        yearWeekAdapter.addPropertyChangeListener(viewHandler
                .getWeekChangeListener(yearWeek, window));
       
        orderPanelView=viewHandler.getOrderPanelView().buildPanel(window, "150",viewHandler.getRightClickListener(), "130", true);

        SelectionInList weekSelectionList = viewHandler
                .getWeekSelectionList(yearWeekAdapter);
        comboBoxWeeks = BasicComponentFactory.createComboBox(weekSelectionList);
        comboBoxWeeks.setSelectedItem(Util.getCurrentWeek());
        weekSelectionList.addValueChangeListener(viewHandler
                .getWeekChangeListener(yearWeek, window));

        buttonRefresh = viewHandler.getRefreshButton(window);
        buttonCancel = viewHandler.getCancelButton(window);
        buttonPrint = viewHandler.getPrintButton(window);

        buttonSearchOrder = viewHandler.getButtonSearchOrder(window, this);
        labelSearchResult = viewHandler.getLabelSearchResult();

        labelWarning = viewHandler.getLabelWarning();
        tableDeviation = viewHandler.getTableDeviation(window);
        comboBoxProductAreaGroup = viewHandler.getComboBoxProductAreaGroup();
        productAreaGroup=(ProductAreaGroup)comboBoxProductAreaGroup.getSelectedItem();
        viewHandler.setAssemblyPlannerView(this);

    }

    /**
     * Initierer hendelseh�ndtering
     * @param window
     */
    private void initEventHandling(final WindowInterface window) {
        PropertyConnector connYear = new PropertyConnector(yearChooser, "year",
                yearWeek, YearWeek.PROPERTY_YEAR);
        connYear.updateProperty2();
    }

    /**
     * Bygger vindu
     * @param window
     * @return panel
     */
   /* public final JComponent buildPanelOld(final WindowInterface window) {
        currentWindow = window;
        initComponents(window);
        initEventHandling(window);
       
       
        FormLayout layout = new FormLayout(
                "10dlu,p,3dlu,30dlu,3dlu,20dlu,3dlu,30dlu,3dlu,30dlu,3dlu,p,3dlu,350dlu:grow",
                "10dlu,p,3dlu,p,3dlu,10dlu,3dlu,fill:200dlu:grow,3dlu,fill:80dlu:grow,10dlu,p,3dlu");

        //PanelBuilder builder = new PanelBuilder(layout);
         PanelBuilder builder = new PanelBuilder(new FormDebugPanel(),layout);
        CellConstraints cc = new CellConstraints();
        builder.addLabel("�r:", cc.xy(2, 2));
        builder.add(yearChooser, cc.xy(4, 2));
        builder.addLabel("Uke:", cc.xy(6, 2));
        builder.add(comboBoxWeeks, cc.xy(8, 2));
        builder.add(buttonSearchOrder, cc.xyw(2, 4, 5));
        builder.add(labelWarning, cc.xyw(8, 4, 3));
        builder.add(labelSearchResult, cc.xyw(2, 6, 7));
        builder.add(buildOrderPanel(window), cc.xyw(2, 8, 9));

        builder.add(buildDeviationPanel(window), cc.xyw(2, 10, 9));

        builder.addLabel("Lag:", cc.xy(12, 2));
        panelTeams = buildAssemblyTeamPanel(true, yearWeek);
        panelTeamsMain.add(panelTeams, BorderLayout.CENTER);
        JScrollPane scrollPaneTeam = new JScrollPane(panelTeamsMain);
        scrollPaneTeam
                .setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);
        builder.add(scrollPaneTeam, cc.xywh(12, 4, 1, 7));
        teamVerticalScrollBar = scrollPaneTeam.getVerticalScrollBar();
        panelAssemblies = buildAssembliesWeekPanel(window, true);
        panelAssembliesMain.add(panelAssemblies, BorderLayout.CENTER);
        builder.add(panelAssembliesMain, cc.xywh(14, 2, 1, 9));
       
        builder.add(ButtonBarFactory.buildCenteredBar(buttonPrint,
                buttonRefresh, buttonCancel), cc.xyw(2, 12, 13));
        return builder.getPanel();
    }*/
   
    public final JComponent buildPanel(final WindowInterface window) {
        currentWindow = window;
        initComponents(window);
        initEventHandling(window);
       
        JPanel leftPane=buildLeftPane(window);
        JPanel rightPane=buildRightPane(window);
        JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, leftPane, rightPane);
        splitPane.setOneTouchExpandable(true);
//        splitPane.setResizeWeight(0.1);
       
        FormLayout layout = new FormLayout(
                "10dlu,fill:p:grow",
                "10dlu,fill:p:grow,3dlu,p");
       

        PanelBuilder builder = new PanelBuilder(layout);
//        PanelBuilder builder = new PanelBuilder(new FormDebugPanel(),layout);
        CellConstraints cc = new CellConstraints();
       
        builder.add(splitPane,cc.xy(2, 2));
        builder.add(ButtonBarFactory.buildCenteredBar(buttonPrint,
                buttonRefresh, buttonCancel), cc.xy(2,4));
        return builder.getPanel();
    }
   
    private JPanel buildRightPane(WindowInterface window){
      FormLayout layout = new FormLayout(
                "p,3dlu,p:grow",
                "15dlu,3dlu,p,3dlu,fill:140dlu:grow");
        PanelBuilder builder = new PanelBuilder(layout);
//         PanelBuilder builder = new PanelBuilder(new FormDebugPanel(),layout);
        CellConstraints cc = new CellConstraints();
       
        builder.addLabel("Lag:", cc.xy(1, 3));
        panelTeams = buildAssemblyTeamPanel(true, yearWeek);
        panelTeamsMain.add(panelTeams, BorderLayout.CENTER);
        JScrollPane scrollPaneTeam = new JScrollPane(panelTeamsMain);
        scrollPaneTeam
                .setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);
        builder.add(scrollPaneTeam, cc.xy(1, 5));
        teamVerticalScrollBar = scrollPaneTeam.getVerticalScrollBar();
        panelAssemblies = buildAssembliesWeekPanel(window, true);
        panelAssembliesMain.add(panelAssemblies, BorderLayout.CENTER);
        builder.add(panelAssembliesMain, cc.xywh(3, 1,1,5));
       
        return builder.getPanel();
    }
   
    private JPanel buildLeftPane(WindowInterface window){
      FormLayout layout = new FormLayout(
                "p:grow",
                "p,3dlu,fill:120dlu:grow,3dlu,fill:100dlu:grow");
        PanelBuilder builder = new PanelBuilder(layout);
        //PanelBuilder builder = new PanelBuilder(new FormDebugPanel(),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(comboBoxWeeks, cc.xy(7, 1));
        builder.addLabel("Produktomr�de:", cc.xyw(11, 1, 1));
       
        builder.add(ButtonBarFactory.buildLeftAlignedBar(buttonSearchOrder,buttonReport), cc.xyw(1, 3, 10));
        builder.add(comboBoxProductAreaGroup, cc.xyw(11, 3, 1));
       
        builder.add(labelSearchResult, cc.xyw(1, 5, 9));*/
        builder.add(buildFilterPanel(),cc.xy(1, 1));
       
        builder.add(orderPanelView, cc.xy(1, 3));
       
        builder.add(buildDeviationPanel(window), cc.xy(1, 5));
       
       
        return builder.getPanel();
    }

    private Component buildFilterPanel() {
      FormLayout layout = new FormLayout(
                "p,3dlu,30dlu,3dlu,p,3dlu,p,3dlu,10dlu,p",
                "p,3dlu,p,3dlu,10dlu");
        PanelBuilder builder = new PanelBuilder(layout);
        //PanelBuilder builder = new PanelBuilder(new FormDebugPanel(),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(comboBoxWeeks, cc.xy(7, 1));
        builder.addLabel("Produktomr�de:",cc.xy(10, 1));
        builder.add(comboBoxProductAreaGroup,cc.xy(10, 3));
        builder.add(buttonSearchOrder, cc.xyw(1, 3, 5));
        builder.add(labelWarning, cc.xyw(7, 3, 3));
        builder.add(labelSearchResult, cc.xyw(1, 5, 7));
        return builder.getPanel();
  }

  /**
     * Lager panel med avvik
     * @param window
     * @return panel
     */
    private Component buildDeviationPanel(final WindowInterface window) {
        FormLayout layout = new FormLayout("130dlu:grow", "p,3dlu,50dlu:grow");
        PanelBuilder builder = new PanelBuilder(layout);
        // PanelBuilder builder = new PanelBuilder(new FormDebugPanel(),layout);
        CellConstraints cc = new CellConstraints();

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

        return builder.getPanel();
    }

    /**
     * Bygger panel med monteringer for alle monteringsteam
     * @param window
     * @param starting
     * @return panel
     */
    private JPanel buildAssembliesWeekPanel(final WindowInterface window,
            final boolean starting) {
        FormLayout layout = new FormLayout("348dlu:grow",
                "p,3dlu,p,2dlu,fill:300dlu:grow");
        PanelBuilder builder = new PanelBuilder(layout);
//         PanelBuilder builder = new PanelBuilder(new FormDebugPanel(),layout);
        CellConstraints cc = new CellConstraints();
        builder.add(buildColorInfoPanel(),cc.xy(1, 1));
        JScrollPane scrollPaneWeek = new JScrollPane(buildWeekPanel());
        scrollPaneWeek
                .setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);

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

        JScrollPane scrollPaneAssembly = new JScrollPane(
                buildAssemblyWeekPanel(window, starting));
        scrollPaneAssembly.getHorizontalScrollBar().addAdjustmentListener(
                viewHandler.getHorizontalAdjustmentListener(scrollPaneWeek
                        .getHorizontalScrollBar()));
        scrollPaneAssembly.getVerticalScrollBar().addAdjustmentListener(
                viewHandler
                        .getVerticalAdjustmentListener(teamVerticalScrollBar));

        builder.add(scrollPaneAssembly, cc.xy(1, 5));
        return builder.getPanel();
    }

    private Component buildColorInfoPanel() {
      FormLayout layout = new FormLayout("52dlu,3dlu,52dlu,3dlu,52dlu",
                "p");
        PanelBuilder builder = new PanelBuilder(layout);
//         PanelBuilder builder = new PanelBuilder(new FormDebugPanel(),layout);
        CellConstraints cc = new CellConstraints();
        builder.add(textFieldGreen,cc.xy(1, 1));
        builder.add(textFieldYellow,cc.xy(3, 1));
        builder.add(textFieldRed,cc.xy(5, 1));
        return builder.getPanel();
  }

  /**
     * Bygger panel med monteringer for alle uker som skal vise
     * @param window
     * @param starting
     * @return panel
     */
    private JPanel buildAssemblyWeekPanel(final WindowInterface window,
            final boolean starting) {
        int weekStart = yearWeek.getWeek() - 1;
        int weekStop = yearWeek.getWeek() + 1;
        String columnLayout = "p,p,p,p,p";
        if (weekStart == 0) {
            weekStart = 1;
            columnLayout = "p,p,p,";
        }
        if (weekStop == 54) {
            weekStop = 53;
            columnLayout = "p,p,p,";
        }

        FormLayout layout = new FormLayout(columnLayout, "");
        DefaultFormBuilder builder = new DefaultFormBuilder(layout);
        YearWeek currentYearWeek = new YearWeek();
        currentYearWeek.setYear(yearWeek.getYear());

        builder.appendRow(new RowSpec("center:3dlu"));
        builder.nextRow();

        int weekCounter = 0;
        List<Supplier> suppliers = viewHandler.getSuppliers(yearWeek,productAreaGroup);
        for (Supplier supplier : suppliers) {
            weekCounter = 0;
            for (int i = weekStart; i <= weekStop; i++) {
                weekCounter++;
                currentYearWeek.setWeek(i);

                builder.appendRow(new RowSpec("fill:p"));
                builder.append(viewHandler.getAssemblyTeamOrderView(supplier,
                        currentYearWeek, weekCounter, starting,productAreaGroup).buildPanel(
                        window, supplierRowSizes.get(supplier)));
            }
        }

        return builder.getPanel();
    }

    /**
     * Bygger panel som viser uketallene til uker som skal vises
     * @return panel
     */
    private JComponent buildWeekPanel() {
        StringBuffer layoutBuffer = new StringBuffer();
        for (int i = 0; i <= 2; i++) {
            layoutBuffer.append("150dlu,p,");
        }
        layoutBuffer.append("150dlu");
        FormLayout layout = new FormLayout(layoutBuffer.toString(), "");
        DefaultFormBuilder builder = new DefaultFormBuilder(layout);
        int weekStart = yearWeek.getWeek() - 1;
        int weekStop = yearWeek.getWeek() + 1;
        if (weekStart == 0) {
            weekStart = 1;
        }
        if (weekStop == 54) {
            weekStop = 53;
        }
        for (int j = weekStart; j <= weekStop; j++) {
            builder.append("Uke " + j);
        }
        return builder.getPanel();
    }

    private JPanel buildAssemblyTeamPanel(final boolean starting, final YearWeek yearWeek1) {
        FormLayout layout = new FormLayout("80dlu", "");
        DefaultFormBuilder builder = new DefaultFormBuilder(layout);
        int counter = 0;

        List<Supplier> suppliers = viewHandler.getSuppliers(yearWeek1,productAreaGroup);
        for (Supplier supplier : suppliers) {
            counter++;
            int maxOrderSize = viewHandler.getMaxNumbersOfOrders(supplier,
                    yearWeek1, starting,productAreaGroup);
            if (maxOrderSize == 0) {
                maxOrderSize = 1;
            }

            int rowSize = (25 * maxOrderSize) + 30;

            supplierRowSizes.put(supplier, rowSize);

            String rowSizeSpec = "center:" + rowSize + "dlu";
            builder.appendRow(new RowSpec(rowSizeSpec));
            builder.append(new JLabel(supplier.getSupplierName()));
        }
        builder.appendRow(new RowSpec("top:15dlu"));
        return builder.getPanel();
    }

    /**
     * Bygger panel for ordre
     * @param window
     * @return panel
     */
    /*private Component buildOrderPanel(final WindowInterface window) {
        return viewHandler.getOrderPanelView(this).buildPanel(window, "200",
                viewHandler.getRightClickListener(), "130", true);
    }*/

    /**
     * @see no.ugland.utransprod.gui.Viewer#buildWindow()
     */
    public final WindowInterface buildWindow() {
        WindowInterface window = InternalFrameBuilder
                .buildInternalFrame(viewHandler.getWindowTitle(), viewHandler
                        .getWindowSize(), true);
        window.add(buildPanel(window), BorderLayout.CENTER);

        return window;
    }

    /**
     * Ved forandring av uke m� hele vinduet genereres p� nytt
     * @param newYearWeek
     */
    public final void changeWeek(final YearWeek newYearWeek) {
        supplierRowSizes.clear();
        if (newYearWeek != null) {
            yearWeek.setWeek(newYearWeek.getWeek());
            yearWeek.setYear(newYearWeek.getYear());
        }

        panelTeamsMain.remove(panelTeams);
        panelTeams = buildAssemblyTeamPanel(false, yearWeek);
        panelTeamsMain.add(panelTeams);

        panelTeamsMain.repaint();
        panelTeamsMain.validate();

        panelTeamsMain.getParent().repaint();
        panelTeamsMain.getParent().validate();

        panelAssembliesMain.remove(panelAssemblies);
        panelAssemblies = buildAssembliesWeekPanel(currentWindow, false);
        panelAssembliesMain.add(panelAssemblies);

        panelAssembliesMain.repaint();
        panelAssembliesMain.validate();

        panelAssembliesMain.getParent().repaint();
        panelAssembliesMain.getParent().validate();

    }

    /**
     * @see no.ugland.utransprod.gui.Viewer#getTitle()
     */
    public final String getTitle() {
        return viewHandler.getWindowTitle();
    }

    /**
     * @see no.ugland.utransprod.gui.Viewer#initWindow()
     */
    public final void initWindow() {
        viewHandler.init();

    }

    /**
     * @see no.ugland.utransprod.gui.Viewer#cleanUp()
     */
    public void cleanUp() {

    }

    /**
     * @see no.ugland.utransprod.gui.Viewer#useDispose()
     */
    public final boolean useDispose() {
        return viewHandler.getDisposeOnClose();
    }

  public void setProductAreaGroup(ProductAreaGroup group) {
    productAreaGroup=group;
   
  }
}
TOP

Related Classes of no.ugland.utransprod.gui.AssemblyPlannerView

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.