Package org.analyse.merise.gui.panel

Source Code of org.analyse.merise.gui.panel.DictionnairePanel$ActionHandler

/*
* 05/23/2003 - 16:36:28
*
* DictionnairePanel.java - Copyright (C) 2003 Dreux Loic dreuxl@free.fr
*
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation; either version 2 of the License, or any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc., 59 Temple
* Place - Suite 330, Boston, MA 02111-1307, USA.
*/

package org.analyse.merise.gui.panel;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Arrays;

import javax.swing.BorderFactory;
import javax.swing.DefaultCellEditor;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JTable;

import org.analyse.core.gui.action.BasicAction;
import org.analyse.core.modules.AnalysePanel;
import org.analyse.core.util.Constantes;
import org.analyse.core.util.GUIUtilities;
import org.analyse.core.util.Utilities;
import org.analyse.main.Main;
import org.analyse.merise.gui.table.DictionnaireTable;

public class DictionnairePanel extends AnalysePanel
{
    private JPanel toolbar;

    private JComboBox comboBox;

    private JPopupMenu popupTable;

    private BasicAction supprimer;

    private BasicAction monter, descendre;

    private ActionHandler actionHandler;

    private JTable table;

    private DictionnaireTable dictionnaireTable;

    public DictionnairePanel(DictionnaireTable dictionnaireTable)
    {
        super(Constantes.DICO);

        this.dictionnaireTable = dictionnaireTable;

        this.setBorder(BorderFactory.createEmptyBorder(3, 3, 0, 3));

        comboBox = new JComboBox(dictionnaireTable.getTypes().toArray());

        table = new JTable(dictionnaireTable);
        table.getColumn(Utilities.getLangueMessage (Constantes.MESSAGE_TYPE)).setCellEditor(new DefaultCellEditor(comboBox));

        table.getColumnModel().getColumn(3).setMaxWidth(100);
        table.getColumnModel().getColumn(4).setMaxWidth(50);
        table.setRowHeight(4, 1);
        table.setAutoCreateRowSorter(true;   // Bug #456345

        actionHandler = new ActionHandler();

        initAction();
        initPopup();
        initToolbar();

        table.addMouseListener(new MouseHandler());

        this.setLayout(new BorderLayout());
        this.add(BorderLayout.CENTER, new JScrollPane(table));
        this.add(BorderLayout.SOUTH, toolbar);
    }

    private void initToolbar()
    {
        toolbar = new JPanel();
        toolbar.setLayout(new FlowLayout(FlowLayout.CENTER));

        toolbar.add(new JButton(monter) {
            {
                setText("");
                addMouseListener(Main.statusbar.getHandler());
            }
        });
        toolbar.add(new JButton(descendre) {
            {
                setText("");
                addMouseListener(Main.statusbar.getHandler());
            }
        });
    }

    private void initAction()
    {
        supprimer = new BasicAction(Utilities.getLangueMessage (Constantes.MESSAGE_SUPPRIMER),
            Utilities.getLangueMessage (Constantes.MESSAGE_SUPPRIMER_LIGNE),
            Constantes.DELETE, GUIUtilities.getImageIcon(Constantes.FILE_PNG_DELETE), 0, null);
        supprimer.addActionListener(actionHandler);

        monter = new BasicAction(Utilities.getLangueMessage (Constantes.MESSAGE_MONTER),
            Utilities.getLangueMessage (Constantes.MESSAGE_INVERSER_INFORMATION_AVEC_PRECEDENT ),
                Constantes.UP, GUIUtilities.getImageIcon(Constantes.FILE_PNG_UP), 0, null);
        monter.addActionListener(actionHandler);

        descendre = new BasicAction(Utilities.getLangueMessage (Constantes.MESSAGE_DESCENDRE),
            Utilities.getLangueMessage (Constantes.MESSAGE_INVERSER_INFORMATION_AVEC_SUIVANT ),
                Constantes.DOWN, GUIUtilities.getImageIcon(Constantes.FILE_PNG_DOWN), 0, null);
        descendre.addActionListener(actionHandler);
    }

    private void initPopup()
    {
        popupTable = new JPopupMenu();

        popupTable.add(new JMenuItem(monter) {
            {
                addMouseListener(Main.statusbar.getHandler());
            }
        });
        popupTable.add(new JMenuItem(descendre) {
            {
                addMouseListener(Main.statusbar.getHandler());
            }
        });
        popupTable.addSeparator();
        popupTable.add(new JMenuItem(supprimer) {
            {
                addMouseListener(Main.statusbar.getHandler());
            }
        });
    }

    private class MouseHandler extends MouseAdapter
    {
        public void mousePressed(MouseEvent e)
        {
            java.awt.Point point = e.getPoint();

            if (table.getSelectedRowCount() == 0
                    || !table.isRowSelected(table.rowAtPoint(point)))
                table.changeSelection(table.rowAtPoint(point), 0, false, false);
        }

        public void mouseReleased(MouseEvent e)
        {
            //if (e.isPopupTrigger()) Ne marche pas avec le JDK d'IBM
            if (e.getButton() == MouseEvent.BUTTON3)
                popupTable.show(e.getComponent(), e.getX(), e.getY());
        }
    }

    private class ActionHandler implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            String action = e.getActionCommand();
            boolean test;

            if (action.equals(Constantes.DELETE)) {
                String mess;
                int[] indexSelected = table.getSelectedRows();
               
              //modif bellier.l  -   merci pour le code

                for (int i = 0; i < indexSelected.length; i++) {
                  indexSelected[i] =
table.convertRowIndexToModel(indexSelected[i]);
                }
                //==> ca c'est nouveau
               
                Arrays.sort(indexSelected); //Tri croissant des index pour suppression
               
                int nbIndex = indexSelected.length;
               
                if (nbIndex == 1)                 
                    mess = Utilities.getLangueMessage (Constantes.MESSAGE_QUESTION_SUPPRIMER_ELEMENT) ;
                else {
                 
                  Object[] messageArguments = {nbIndex} ;
                  mess = Utilities.getLangueMessageFormatter (Constantes.MESSAGE_QUESTION_SUPPRIMER_ELEMENTS_SELECTIONNES,
                      messageArguments ) ;
                   
                }
                             
                test = false;
                for (int i = 0; i < nbIndex; i++) {
                    if (dictionnaireTable.getUse(indexSelected[i]))
                        test = true;
                }

                if (test && nbIndex == 1)
                    mess += Utilities.getLangueMessage (Constantes.MESSAGE_INFO_DANS_MCD) ;                     
                else if (test)
                    mess += Utilities.getLangueMessage (Constantes.MESSAGE_CERTAINES_INFOS_DANS_MCD) ;
               
                if (JOptionPane.showConfirmDialog(null, mess, Utilities.getLangueMessage (Constantes.MESSAGE_ANALYSESI),
                        JOptionPane.YES_NO_OPTION) != JOptionPane.YES_OPTION)
                    return;
               
                //suppression des lignes
                dictionnaireTable.delLines(indexSelected);
               
            } else if (action.equals(Constantes.UP)) {
              dictionnaireTable.moveLines(table.getSelectedRows(), DictionnaireTable.UP );

            } else if (action.equals(Constantes.DOWN)) {
              dictionnaireTable.moveLines(table.getSelectedRows(), DictionnaireTable.DOWN );

            }
        }
    }
}
TOP

Related Classes of org.analyse.merise.gui.panel.DictionnairePanel$ActionHandler

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.