Package no.ugland.utransprod.gui.handlers

Source Code of no.ugland.utransprod.gui.handlers.SearchAttributeViewHandler$ArticleSelectionListener

package no.ugland.utransprod.gui.handlers;

import java.awt.event.ActionEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JRadioButton;
import javax.swing.ListModel;
import javax.swing.ListSelectionModel;
import javax.swing.SwingUtilities;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.TableColumn;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;

import no.ugland.utransprod.dao.hibernate.QuerySettings;
import no.ugland.utransprod.gui.AttributeCriteriaView;
import no.ugland.utransprod.gui.Closeable;
import no.ugland.utransprod.gui.IconEnum;
import no.ugland.utransprod.gui.JDialogAdapter;
import no.ugland.utransprod.gui.ProTransMain;
import no.ugland.utransprod.gui.WindowInterface;
import no.ugland.utransprod.gui.buttons.CancelButton;
import no.ugland.utransprod.gui.model.ArticleTypeTreeNode;
import no.ugland.utransprod.gui.model.ArticleTypeTreeTableModel;
import no.ugland.utransprod.gui.model.OrderLineAttributeCriteria;
import no.ugland.utransprod.gui.model.OrderLineTreeNode;
import no.ugland.utransprod.gui.model.OrderLineTreeTableModel;
import no.ugland.utransprod.gui.model.OrderModel;
import no.ugland.utransprod.gui.model.OrderWrapper;
import no.ugland.utransprod.model.ArticleType;
import no.ugland.utransprod.model.ArticleTypeArticleType;
import no.ugland.utransprod.model.ArticleTypeAttribute;
import no.ugland.utransprod.model.Attribute;
import no.ugland.utransprod.model.Order;
import no.ugland.utransprod.model.OrderLine;
import no.ugland.utransprod.model.OrderLineAttribute;
import no.ugland.utransprod.service.ArticleTypeManager;
import no.ugland.utransprod.service.OrderLineManager;
import no.ugland.utransprod.service.enums.LazyLoadArticleTypeEnum;
import no.ugland.utransprod.util.ModelUtil;
import no.ugland.utransprod.util.Util;

import org.jdesktop.swingx.JXTreeTable;

import com.jgoodies.binding.PresentationModel;
import com.jgoodies.binding.adapter.BasicComponentFactory;
import com.jgoodies.binding.adapter.ComboBoxAdapter;
import com.jgoodies.binding.beans.PropertyConnector;
import com.jgoodies.binding.list.ArrayListModel;
import com.jgoodies.binding.list.SelectionInList;
import com.toedter.calendar.JDateChooser;
import com.toedter.calendar.JYearChooser;

/**
* H�ndterer artikkels�k
* @author atle.brekka
*/
public class SearchAttributeViewHandler implements Closeable {
    /**
     *
     */
    private final ArrayListModel articleList;

    /**
     *
     */
    private final SelectionInList articleSelectionList;

    /**
     *
     */
    private JButton buttonSelect;

    /**
     *
     */
    private JButton buttonDeselect;

    /**
     *
     */
    private JXTreeTable treeTableArticles;

    /**
     *
     */
    private JXTreeTable treeTableChosen;

    /**
     *
     */
    private OrderLineTreeTableModel<Order, OrderModel> treeTableModelChosen;

    /**
     *
     */
    private List<OrderLine> criterias = new ArrayList<OrderLine>();

    /**
     *
     */
    private JButton buttonSearch;

    /**
     *
     */
    private JDateChooser dateChooserFrom;

    /**
     *
     */
    private JDateChooser dateChooserTo;

    /**
     *
     */
    private List<Order> orderLines = new ArrayList<Order>();

    /**
     *
     */
    private Integer numberOfOrders;

    /**
     *
     */
    private boolean canceled = false;

    /**
     *
     */
    QuerySettings querySettings;

    /**
     *
     */
    private PresentationModel queryPresentationModel;

    /**
     *
     */
    public SearchAttributeViewHandler() {
        ArticleTypeManager articleTypeManager = (ArticleTypeManager) ModelUtil
                .getBean("articleTypeManager");
        querySettings = new QuerySettings();
        queryPresentationModel = new PresentationModel(querySettings);

        List<ArticleType> articles = articleTypeManager.findAllTopLevel();
        if (articles != null) {
            lazyLoadArticles(articles);
        } else {
            articles = new ArrayList<ArticleType>();
        }
        ArticleType constructionType = getConstructionType();
        if (constructionType != null) {
            articles.add(constructionType);
        }
        articleList = new ArrayListModel(articles);
        articleSelectionList = new SelectionInList((ListModel) articleList);
    }

    /**
     * @return ordrelinjer
     */
    public List<Order> getOrderLines() {
        return orderLines;
    }

    /**
     * Lager �rvelger for fra �r
     * @return �rvelger
     */
    public JYearChooser getYearChooserFrom() {
        JYearChooser yearChooser = new JYearChooser();
        PropertyConnector connYear = new PropertyConnector(yearChooser, "year",
                queryPresentationModel
                        .getModel(QuerySettings.PROPERTY_YEAR_FROM), "value");

        connYear.updateProperty1();
        return yearChooser;
    }

    /**
     * Lager �rvelger for til �r
     * @return �rvelger
     */
    public JYearChooser getYearChooserTo() {
        JYearChooser yearChooser = new JYearChooser();
        PropertyConnector connYear = new PropertyConnector(
                yearChooser,
                "year",
                queryPresentationModel.getModel(QuerySettings.PROPERTY_YEAR_TO),
                "value");

        connYear.updateProperty1();
        return yearChooser;
    }

    /**
     * Lager komboboks for fra uke
     * @return komboboks
     */
    public JComboBox getComboBoxWeeksFrom() {
        return new JComboBox(new ComboBoxAdapter(Util.getWeeks(),
                queryPresentationModel
                        .getModel(QuerySettings.PROPERTY_WEEK_FROM)));
    }

    /**
     * Lager komboboks for uke til
     * @return komboboks
     */
    public JComboBox getComboBoxWeeksTo() {
        return new JComboBox(
                new ComboBoxAdapter(Util.getWeeks(), queryPresentationModel
                        .getModel(QuerySettings.PROPERTY_WEEK_TO)));
    }

    /**
     * @return artikkel
     */
    private ArticleType getConstructionType() {
        ArticleType article = null;
        ArticleTypeManager articleTypeManager = (ArticleTypeManager) ModelUtil
                .getBean("articleTypeManager");
        List<Attribute> attributes = articleTypeManager
                .findAllConstructionTypeAttributes();
        if (attributes != null && attributes.size() != 0) {
            article = new ArticleType();
            Set<ArticleTypeAttribute> constructionTypeAttributes = new HashSet<ArticleTypeAttribute>();
            article.setArticleTypeName("Garasjetype");
            ArticleTypeAttribute articleTypeAttribute;
            for (Attribute attribute : attributes) {
                articleTypeAttribute = new ArticleTypeAttribute();
                articleTypeAttribute.setArticleType(article);
                articleTypeAttribute.setAttribute(attribute);
                constructionTypeAttributes.add(articleTypeAttribute);
            }
            article.setArticleTypeAttributes(constructionTypeAttributes);
        }
        return article;

    }

    /**
     * Lazy laster artikler
     * @param articles
     */
    private void lazyLoadArticles(List<ArticleType> articles) {
        ArticleTypeManager articleTypeManager = (ArticleTypeManager) ModelUtil
                .getBean("articleTypeManager");
        for (ArticleType article : articles) {
            articleTypeManager.lazyLoad(article, new LazyLoadArticleTypeEnum[] {
                    LazyLoadArticleTypeEnum.ARTICLE_TYPE_ARTICLE_TYPE_REF,
                    LazyLoadArticleTypeEnum.ARTICLE_TYPE_ARTICLE_TYPE,
                    LazyLoadArticleTypeEnum.ATTRIBUTE});
        }
    }

    /**
     * Lager tretabell for artikler
     * @return tretabell
     */
    public JXTreeTable getTreeTableArticles() {
        treeTableArticles = new JXTreeTable(new ArticleTypeTreeTableModel(
                articleList));
        treeTableArticles.getSelectionModel().addListSelectionListener(
                new ArticleSelectionListener());
        treeTableArticles.addMouseListener(new DoubleClickHandler());

        treeTableArticles.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        return treeTableArticles;
    }

    /**
     * Stter kolonnebredde for tretabell for valgte attributter
     */
    void initTreeTableChosenColumns() {
        // Artikkel
        TableColumn col = treeTableChosen.getColumnModel().getColumn(0);
        col.setPreferredWidth(130);
    }

    /**
     * Lager tretabell fro valgte attributter
     * @return tretabell
     */
    public JXTreeTable getTreeTableChosen() {
        treeTableModelChosen = new OrderLineTreeTableModel<Order, OrderModel>(
                null);
        treeTableChosen = new JXTreeTable(treeTableModelChosen);
        treeTableChosen.getSelectionModel().addListSelectionListener(
                new ArticleSelectionListener());
        treeTableChosen.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        initTreeTableChosenColumns();
        return treeTableChosen;
    }

    /**
     * Lager knapp for � velge attributt
     * @return knapp
     */
    public JButton getButtonSelect() {
        buttonSelect = new JButton(new SelectAction());
        buttonSelect.setEnabled(false);
        return buttonSelect;
    }

    /**
     * Lager knapp mfor � fjerne attributt
     * @return knapp
     */
    public JButton getButtonDeselect() {
        buttonDeselect = new JButton(new DeselectAction());
        buttonDeselect.setEnabled(false);
        return buttonDeselect;
    }

    /**
     * Lager s�keknapp
     * @param window
     * @return knapp
     */
    public JButton getButtonSearch(WindowInterface window) {
        buttonSearch = new JButton(new SearchAction(window));
        buttonSearch.setIcon(IconEnum.ICON_SEARCH.getIcon());
        return buttonSearch;
    }

    /**
     * Lager raioknapp for fakturadato
     * @return radioknapp
     */
    public JRadioButton getRadioButtonInvoiceDate() {
        JRadioButton radioButtonInvoiceDate = BasicComponentFactory
                .createRadioButton(queryPresentationModel
                        .getModel(QuerySettings.PROPERTY_DATE_ENUM_STRING),
                        "INVOICE_DATE", "Fakturadato");
        return radioButtonInvoiceDate;
    }

    /**
     * Lager radioknapp for ordredato
     * @return radioknapp
     */
    public JRadioButton getRadioButtonOrderDate() {
        return BasicComponentFactory.createRadioButton(queryPresentationModel
                .getModel(QuerySettings.PROPERTY_DATE_ENUM_STRING),
                "ORDER_DATE", "Ordredato");
    }

    /**
     * Lager radioknapp for transportuke
     * @return radioknapp
     */
    public JRadioButton getRadioButtonTransportWeek() {
        return BasicComponentFactory.createRadioButton(queryPresentationModel
                .getModel(QuerySettings.PROPERTY_DATE_ENUM_STRING),
                "TRANSPORT_WEEK", "Transportuke");
    }

    /**
     * Lager radioknapp for "eller"
     * @return radioknapp
     */
    public JRadioButton getRadioButtonOr() {
        JRadioButton radioButtonOr = BasicComponentFactory.createRadioButton(
                queryPresentationModel
                        .getModel(QuerySettings.PROPERTY_OPERAND_ENUM_STRING),
                "OR", "Eller");
        return radioButtonOr;
    }

    /**
     * Lager radioknapp for "og"
     * @return radioknapp
     */
    public JRadioButton getRadioButtonAnd() {
        JRadioButton radioButtonAnd = BasicComponentFactory.createRadioButton(
                queryPresentationModel
                        .getModel(QuerySettings.PROPERTY_OPERAND_ENUM_STRING),
                "AND", "Og");
        return radioButtonAnd;
    }

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

    /**
     * Lager renskeknapp
     * @return knapp
     */
    public JButton getButtonClear() {
        JButton buttonClear = new JButton(new ClearAction());
        buttonClear.setIcon(IconEnum.ICON_CLEAR.getIcon());
        return buttonClear;
    }

    /**
     * Lager datovelger for fra dato
     * @return datovelger
     */
    public JDateChooser getDateChooserFrom() {
        dateChooserFrom = new JDateChooser();

        PropertyConnector connDate = new PropertyConnector(dateChooserFrom,
                "date", queryPresentationModel
                        .getModel(QuerySettings.PROPERTY_DATE_FROM), "value");

        connDate.updateProperty1();

        return dateChooserFrom;
    }

    /**
     * Lager datovelger for til dato
     * @return datovelger
     */
    public JDateChooser getDateChooserTo() {
        dateChooserTo = new JDateChooser();
        PropertyConnector connDate = new PropertyConnector(dateChooserTo,
                "date", queryPresentationModel
                        .getModel(QuerySettings.PROPERTY_DATE_TO), "value");

        if (queryPresentationModel.getValue(QuerySettings.PROPERTY_DATE_TO) != null) {
            connDate.updateProperty1();
        }
        return dateChooserTo;
    }

    /**
     * Initierere hendelseh�ndtering
     */
    public void initEventHandling() {

        articleSelectionList.addPropertyChangeListener(
                SelectionInList.PROPERTYNAME_SELECTION_EMPTY,
                new EmptySelectionListener());

    }

    /**
     * Setter enablement av komponenter
     */
    void setComponentEnablement() {
        TreePath path = treeTableArticles.getPathForRow(treeTableArticles
                .getSelectedRow());
        buttonSelect.setEnabled(false);

        if (path != null) {
            TreeNode selectedNode = (ArticleTypeTreeNode) path
                    .getLastPathComponent();
            if (selectedNode.isLeaf()) {
                buttonSelect.setEnabled(true);
            }
        }

        path = treeTableChosen.getPathForRow(treeTableChosen.getSelectedRow());
        buttonDeselect.setEnabled(false);

        if (path != null) {
            TreeNode selectedNode = (OrderLineTreeNode) path
                    .getLastPathComponent();
            if (selectedNode.isLeaf()) {
                buttonDeselect.setEnabled(true);
            }
        }
    }

    /**
     * Setter referanse til ordrelinjer
     * @param articleType
     * @param orderLineRef
     * @param orderLines
     * @param usedArticles
     * @return ordrelinje
     */
    private OrderLine setOrderLineRefs(ArticleType articleType,
            OrderLine orderLineRef, List<OrderLine> orderLines,
            List<ArticleType> usedArticles) {
        OrderLine orderLine = null;

        if (articleType != null && usedArticles.contains(articleType)) {
            orderLine = new OrderLine();
            orderLine.setArticleType(articleType);
            orderLine.setOrderLineRef(orderLineRef);

            if (orderLines != null && orderLines.contains(orderLine)) {
                orderLine = orderLines.get(orderLines.indexOf(orderLine));
            } else {

                if (orderLineRef != null) {
                    Set<OrderLine> orderLineRefs;
                    if (orderLineRef.getOrderLines() != null) {
                        orderLineRef.getOrderLines().add(orderLine);
                    } else {
                        orderLineRefs = new HashSet<OrderLine>();
                        orderLineRefs.add(orderLine);
                        orderLineRef.setOrderLines(orderLineRefs);
                    }

                }

                if (orderLines != null) {
                    orderLines.add(orderLine);
                }
            }

            Set<ArticleTypeArticleType> articleTypeArticleTypes = articleType
                    .getArticleTypeArticleTypes();

            if (articleTypeArticleTypes != null) {

                for (ArticleTypeArticleType articleTypeArticleType : articleTypeArticleTypes) {
                    orderLine = setOrderLineRefs(articleTypeArticleType
                            .getArticleTypeRef(), orderLine, orderLines,
                            usedArticles);
                }
            }

        }

        if (orderLine != null) {
            return orderLine;
        }
        return orderLineRef;
    }

    /**
     * Henter ordrelinje
     * @param leaf
     * @param orderLines1
     * @param usedArticles
     * @return ordrelinje
     */
    private OrderLine getOrderLine(ArticleTypeTreeNode leaf,
            List<OrderLine> orderLines1, List<ArticleType> usedArticles) {
        ArticleTypeTreeNode parent = leaf.getParent();
        Object object = parent.getObject();
        ArticleType articleType=null;
        if (object instanceof ArticleTypeArticleType) {
            articleType = ((ArticleTypeArticleType) object).getArticleTypeRef();
        } else if(object instanceof ArticleType){
            articleType = (ArticleType) object;
        }
        if (usedArticles == null) {
            usedArticles = new ArrayList<ArticleType>();
        }
        if(articleType!=null){
        usedArticles.add(articleType);
        }

        //if (parent.getParent() == null) {
        if (parent.getParent() != null&&parent.getParent().getObject() instanceof ArrayListModel) {
            return setOrderLineRefs(articleType, null, orderLines1,
                    usedArticles);
        }
        return getOrderLine(parent, orderLines1, usedArticles);
    }

    /**
     * Velg attributt
     */
    @SuppressWarnings("unchecked")
    void doSelect() {
        TreePath path = treeTableArticles.getPathForRow(treeTableArticles
                .getSelectedRow());

        if (path != null) {
            ArticleTypeTreeNode selectedNode = (ArticleTypeTreeNode) path
                    .getLastPathComponent();
            if (selectedNode.isLeaf()) {
                ArticleTypeAttribute attribute = (ArticleTypeAttribute) selectedNode
                        .getObject();
                OrderLineAttributeCriteria orderLineAttribute = new OrderLineAttributeCriteria();
                List<OrderLine> orderLines1 = new ArrayList<OrderLine>();

                Object object = treeTableModelChosen.getRoot();

                if (object != null
                        && ((OrderLineTreeNode) object).getObject() != null) {
                    OrderWrapper<Order, OrderModel> orderWrapper = (OrderWrapper<Order, OrderModel>) ((OrderLineTreeNode) object)
                            .getObject();
                    orderLines1 = orderWrapper.getOrderLines();
                }

                OrderLine orderLine = getOrderLine(selectedNode, orderLines1,
                        null);

                if (criterias.contains(orderLine)) {
                    orderLine = criterias.get(criterias.indexOf(orderLine));

                } else {
                    criterias.add(orderLine);
                }

                Set<OrderLineAttribute> orderLineAttributes;
                if (orderLine.getOrderLineAttributes() != null) {
                    orderLineAttributes = orderLine.getOrderLineAttributes();
                } else {
                    orderLineAttributes = new HashSet<OrderLineAttribute>();
                    orderLine.setOrderLineAttributes(orderLineAttributes);
                }

                orderLineAttribute.setArticleTypeAttribute(attribute);

                if (orderLine.getOrderLineAttributes().contains(
                        orderLineAttribute)) {
                    List<OrderLineAttribute> atts = new ArrayList<OrderLineAttribute>(
                            orderLine.getOrderLineAttributes());
                    orderLineAttribute = (OrderLineAttributeCriteria) atts
                            .get(atts.indexOf(orderLineAttribute));
                } else {
                    orderLineAttributes.add(orderLineAttribute);
                }

                AttributeCriteriaViewHandler attributeCriteriaViewHandler = new AttributeCriteriaViewHandler();
                AttributeCriteriaView attributeCriteriaView = new AttributeCriteriaView(
                        orderLineAttribute, attributeCriteriaViewHandler);
                WindowInterface dialogAttributes = new JDialogAdapter(
                        new JDialog(ProTransMain.PRO_TRANS_MAIN, "Attributter",
                                true));
                dialogAttributes.setName("OrderLineAttributeView");
                dialogAttributes.add(attributeCriteriaView
                        .buildPanel(dialogAttributes));
                dialogAttributes.pack();
                Util.locateOnScreenCenter(dialogAttributes);
                dialogAttributes.setVisible(true);
                dialogAttributes.dispose();

                if (object == null
                        || ((OrderLineTreeNode) object).getObject() == null) {
                    Order order = new Order();
                    order.setOrderLines(new HashSet<OrderLine>(orderLines1));
                    // OrderWrapper orderWrapper = new OrderWrapper(order);
                    OrderWrapper orderWrapper = new OrderWrapper(
                            new OrderModel(order, false, false, false,null,null));
                    treeTableModelChosen = new OrderLineTreeTableModel(
                            orderWrapper);
                    treeTableChosen.setTreeTableModel(treeTableModelChosen);
                }
                treeTableModelChosen.fireChanged();

            }
        }
    }

    /**
     * Utf�r attributts�k
     */
    /**
     *
     */
    void doSearch() {
        orderLines.clear();
        OrderLineManager orderLineManager = (OrderLineManager) ModelUtil
                .getBean("orderLineManager");
        numberOfOrders = orderLineManager.countByDate(querySettings);
        List<Order> orderLinesConstrcutionTypeArticleAttribute = null;
        orderLinesConstrcutionTypeArticleAttribute = orderLineManager
                .findByConstructionTypeArticleAttributes(criterias,
                        querySettings);
        if (orderLinesConstrcutionTypeArticleAttribute != null) {
            orderLines.addAll(orderLinesConstrcutionTypeArticleAttribute);
        }
    }

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

        /**
         *
         */
        public SelectAction() {
            super("Velg...");
        }

        /**
         * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
         */
        public void actionPerformed(ActionEvent arg0) {
            doSelect();
            setComponentEnablement();
            initTreeTableChosenColumns();
        }
    }

    /**
     * Fjern attributt
     */
    @SuppressWarnings("unchecked")
    void doDeselect() {
        TreePath path = treeTableChosen.getPathForRow(treeTableChosen
                .getSelectedRow());

        if (path != null) {
            OrderLineTreeNode selectedNode = (OrderLineTreeNode) path
                    .getLastPathComponent();
            if (selectedNode.isLeaf()) {
                OrderLineAttribute attribute = (OrderLineAttribute) selectedNode
                        .getObject();
                OrderLine orderLine = (OrderLine) selectedNode.getParent()
                        .getObject();

                orderLine.getOrderLineAttributes().remove(attribute);

                if (orderLine.getOrderLineAttributes().size() == 0) {
                    criterias.remove(orderLine);

                    Object object = treeTableModelChosen.getRoot();

                    OrderWrapper<Order, OrderModel> orderWrapper = (OrderWrapper<Order, OrderModel>) ((OrderLineTreeNode) object)
                            .getObject();

                    orderWrapper.getOrderLines().remove(orderLine);

                }
                treeTableModelChosen.fireChanged();
            }
        }
    }

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

        /**
         *
         */
        public DeselectAction() {
            super("Ta bort");
        }

        /**
         * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
         */
        public void actionPerformed(ActionEvent arg0) {
            doDeselect();
            setComponentEnablement();
            initTreeTableChosenColumns();

        }
    }

    /**
     * S�k
     * @author atle.brekka
     */
    private class SearchAction extends AbstractAction {
        /**
         *
         */
        private static final long serialVersionUID = 1L;

        /**
         *
         */
        private WindowInterface window;

        /**
         * @param aWindow
         */
        public SearchAction(WindowInterface aWindow) {
            super("S�k");
            window = aWindow;
        }

        /**
         * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
         */
        public void actionPerformed(ActionEvent arg0) {
            String errorString = querySettings.checkSettings();
            if (errorString != null) {
                Util.showErrorDialog(window, "Feil", errorString);
            } else {
                doSearch();
                window.setVisible(false);
            }

        }
    }

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

    /**
     * H�ndterer selektering i tabelltre
     * @author atle.brekka
     */
    class EmptySelectionListener implements PropertyChangeListener {

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

        }

    }

    /**
     * H�ndterer selektering av artikkel
     * @author atle.brekka
     */
    class ArticleSelectionListener implements ListSelectionListener {

        /**
         * @see javax.swing.event.ListSelectionListener#valueChanged(javax.swing.event.ListSelectionEvent)
         */
        public void valueChanged(ListSelectionEvent e) {

            setComponentEnablement();

        }

    }

    /**
     * H�ndterer dobbeltklikk
     */
    public void doDoubleClick() {
        doSelect();
        setComponentEnablement();
        initTreeTableChosenColumns();

    }

    /**
     * @return antall ordre
     */
    public Integer getNumberOfOrders() {
        return numberOfOrders;
    }

    /**
     * @return true dersom dialog er kansellert
     */
    public boolean isCanceled() {
        return canceled;
    }

    /**
     * @return presentasjnsmodell
     */
    public PresentationModel getPresentationModel() {
        return queryPresentationModel;
    }

    /**
     * Rensk vindu
     */
    void doClear() {
        criterias.clear();
        treeTableModelChosen = new OrderLineTreeTableModel<Order, OrderModel>(
                null);
        treeTableChosen.setTreeTableModel(treeTableModelChosen);
    }

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

        /**
         *
         */
        public ClearAction() {
            super("Rensk");
        }

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

        }
    }

    /**
     * @return utvalgskriterier
     */
    public String getFilterString() {
        return querySettings.toString() + " " + criteriasToString();
    }

    /**
     * @return utvalgskriterier som streng
     */
    @SuppressWarnings("unchecked")
    private String criteriasToString() {
        StringBuffer toStringBuffer = new StringBuffer();
        List<OrderLineAttributeCriteria> attributes;
        if (criterias != null) {
            for (OrderLine orderLine : criterias) {
                toStringBuffer.append("[").append(
                        orderLine.getGeneratedArticlePath()).append(";");
                attributes = new ArrayList(orderLine.getOrderLineAttributes());

                for (OrderLineAttributeCriteria attribute : attributes) {
                    toStringBuffer.append("(").append(
                            attribute.getAttributeName()).append(":").append(
                            attribute.getAttributeValueFrom()).append("-")
                            .append(
                                    Util.nullToString(attribute
                                            .getAttributeValueTo()));
                    toStringBuffer.append(")");
                }

                toStringBuffer.append("]");
            }
        }
        return toStringBuffer.toString();
    }

    /**
     * H�ndterer dobbeltklikk
     * @author atle.brekka
     */
    class DoubleClickHandler extends MouseAdapter {

        /**
         * @see java.awt.event.MouseAdapter#mouseClicked(java.awt.event.MouseEvent)
         */
        @SuppressWarnings("unchecked")
        @Override
        public void mouseClicked(MouseEvent e) {
            if (SwingUtilities.isLeftMouseButton(e) && e.getClickCount() == 2) {
                doDoubleClick();
            }
        }
    }
}
TOP

Related Classes of no.ugland.utransprod.gui.handlers.SearchAttributeViewHandler$ArticleSelectionListener

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.