Package clips.directory.editors.matter

Source Code of clips.directory.editors.matter.PanelMatter

/*
* PanelMatter.java
*
* Created on 7 Октябрь 2008 г., 12:28
*/

package clips.directory.editors.matter;

import cli_fmw.delegate.directory.complex.DirectoryLocator;
import clips.delegate.directory.complex.DirectoryVidal;
import clips.delegate.directory.complex.DirectoryVidalItem;
import clips.delegate.directory.filtered.DirectoryMatter;
import clips.delegate.directory.filtered.DirectoryMatterItem;
import clips.directory.DialogDirectoryMatter;
import clips.directory.editors.vidalAtc.TableModelMatter;
import cli_fmw.main.ClipsException;
import cli_fmw.main.MainWindow;
import cli_fmw.utils.MessageBox;
import cli_fmw.utils.ModalDialog;
import cli_fmw.utils.SelectorEditableExceptional;
import cli_fmw.utils.table_config_states.StateSaver;
import cli_fmw.utils.table_config_states.TableState;
import java.util.ArrayList;
import javax.swing.JPanel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

/**
*
* @author  vip
*/
public class PanelMatter extends JPanel implements VidalChangeListener, ListSelectionListener{
    private DirectoryMatter directoryMatter;
    private DirectoryVidalItem vidalItem;
    private boolean selectVidalMode;
    private boolean canBeEdit;
   
    /** Creates new form PanelMatter */
    public PanelMatter(boolean selectVidalMode) throws ClipsException {
        directoryMatter = (DirectoryMatter) DirectoryLocator.getDirectory(DirectoryMatter.class, false);
        DirectoryVidal dv = (DirectoryVidal) DirectoryLocator.getDirectory(DirectoryVidal.class, false);
        canBeEdit = dv.canEdit();

        this.selectVidalMode = selectVidalMode;
        initComponents();
        jPanel12.setVisible(!selectVidalMode);
        tblMatters.getSelectionModel().addListSelectionListener(this);
        updateTableMatter();
    resizeColumn();
    StateSaver.attachTo(this);
    }

    private void setEnabledComponents() {
        btAddMatter.setEnabled(vidalItem != null && canBeEdit);
        btDeleteMatter.setEnabled(tblMatters.getSelectedRowCount() > 0 && canBeEdit);
    }
   
    private void updateTableMatter(){
        ArrayList<DirectoryMatterItem> matterItems = new ArrayList<DirectoryMatterItem>();
        try {
            if (vidalItem != null) {
                SelectorEditableExceptional<DirectoryMatterItem> s = directoryMatter.getFilteredItems(vidalItem);
                for (int i=0;i<s.size();i++){
                    matterItems.add(s.get(i));
                }
            }
            TableModelMatter model = new TableModelMatter(matterItems);
            tblMatters.setModel(model);
            setEnabledComponents();
        } catch (ClipsException ex) {
            MessageBox.showException(ex);
        }
    }

    private void resizeColumn() {
    TableState          state = new TableState();
    state.setPreferredWidth(TableModelMatter.COL_ID,    1);
    state.setPreferredWidth(TableModelMatter.COL_TITLE,    8);
    state.setPreferredWidth(TableModelMatter.COL_DIRTY,    1);
      StateSaver.setDefaultPanelItemState(this, tblMatters, state);
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jPanel12 = new javax.swing.JPanel();
        jPanel13 = new javax.swing.JPanel();
        btDeleteMatter = new javax.swing.JButton();
        btAddMatter = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        tblMatters = new cli_fmw.utils.sorted_table.SortedTable();

        setBorder(javax.swing.BorderFactory.createTitledBorder("Действующие вещества"));
        setLayout(new java.awt.BorderLayout());

        jPanel12.setBorder(javax.swing.BorderFactory.createEmptyBorder(15, 1, 10, 1));
        jPanel12.setLayout(new java.awt.BorderLayout());

        jPanel13.setLayout(new java.awt.GridLayout(1, 2, 5, 0));

        btDeleteMatter.setText("Удалить");
        btDeleteMatter.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btDeleteMatterActionPerformed(evt);
            }
        });
        jPanel13.add(btDeleteMatter);

        btAddMatter.setText("Добавить");
        btAddMatter.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btAddMatterActionPerformed(evt);
            }
        });
        jPanel13.add(btAddMatter);

        jPanel12.add(jPanel13, java.awt.BorderLayout.EAST);

        add(jPanel12, java.awt.BorderLayout.SOUTH);

        jScrollPane1.addComponentListener(new java.awt.event.ComponentAdapter() {
            public void componentResized(java.awt.event.ComponentEvent evt) {
                jScrollPane1ComponentResized(evt);
            }
        });
        jScrollPane1.setViewportView(tblMatters);

        add(jScrollPane1, java.awt.BorderLayout.CENTER);
    }// </editor-fold>//GEN-END:initComponents

private void btDeleteMatterActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btDeleteMatterActionPerformed
    int[] sel = tblMatters.getSelectedRowsSorted();
    if (sel.length>0){
        try {
            SelectorEditableExceptional<DirectoryMatterItem> s = directoryMatter.getFilteredItems(vidalItem);
            for (int i = sel.length-1;i>=0;i--){
                s.remove(sel[i]);
            }           
            updateTableMatter();
        } catch (ClipsException ex) {
            MessageBox.showException(ex);
        }
    }
}//GEN-LAST:event_btDeleteMatterActionPerformed

private void btAddMatterActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btAddMatterActionPerformed
    if (vidalItem != null)    {
        try {
            DialogDirectoryMatter dialog = new DialogDirectoryMatter(MainWindow.mainWindow, directoryMatter, "", true);
            dialog.setVisible(true);
            if (dialog.getDlgResult() == ModalDialog.DLG_OK){
                DirectoryMatterItem newItem = dialog.getSelectedItem();
                if (newItem != null) {
                    SelectorEditableExceptional<DirectoryMatterItem> s
                            =  directoryMatter.getFilteredItems(vidalItem);
                    if (newItem.getID() != 0) {
                        s.append(newItem);
                    }
                }
                updateTableMatter();
            }           
        } catch (ClipsException ex) {
            MessageBox.showException(ex);
        }
    }
}//GEN-LAST:event_btAddMatterActionPerformed

private void jScrollPane1ComponentResized(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_jScrollPane1ComponentResized
}//GEN-LAST:event_jScrollPane1ComponentResized


    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btAddMatter;
    private javax.swing.JButton btDeleteMatter;
    private javax.swing.JPanel jPanel12;
    private javax.swing.JPanel jPanel13;
    private javax.swing.JScrollPane jScrollPane1;
    private cli_fmw.utils.sorted_table.SortedTable tblMatters;
    // End of variables declaration//GEN-END:variables

    @Override
    public void vidalChanged(DirectoryVidalItem vidal) {
        vidalItem = vidal;
        updateTableMatter();
    }

    @Override
    public void valueChanged(ListSelectionEvent e) {
        setEnabledComponents();
    }

}
TOP

Related Classes of clips.directory.editors.matter.PanelMatter

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.