Package clips.administrator.expenditure

Source Code of clips.administrator.expenditure.PanelExpTypesEdit

/*
* PanelExpTypesEdit.java
*
* Created on 13 Март 2008 г., 18:42
*/
package clips.administrator.expenditure;

import cli_fmw.delegate.directory.DirectoryItem;
import clips.delegate.directory.complex.DirectoryExpenditureType;
import clips.delegate.directory.complex.DirectoryExpenditureTypeItem;
import cli_fmw.delegate.directory.complex.DirectoryLocator;
import cli_fmw.delegate.DelegateLine2;
import clips.delegate.directory.simple.expenditureMetric.DirectoryExpenditureMetricItem;
import beans.directory.expenditure.entity.ExpenditureTypeDetails;
import cli_fmw.main.ClipsException;
import cli_fmw.main.MainWindow;
import cli_fmw.main.PageContainer;
import cli_fmw.main.PageGeneric;
import cli_fmw.main.PrintCreators;
import cli_fmw.main.Printable;
import cli_fmw.utils.Selector;
import cli_fmw.utils.MessageBox;
import cli_fmw.utils.SelectorEditableExceptional;
import cli_fmw.utils.table_config_states.StateSaver;
import clips.delegate.directory.simple.expenditureMetric.DirectoryExpenditureMetric;
import javax.swing.DefaultCellEditor;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JOptionPane;
import javax.swing.table.TableColumn;

/**
* Панель редактирования справочника материалов
* @author  petr
*/
public class PanelExpTypesEdit extends PageGeneric implements Printable {

    private DirectoryExpenditureType directory; // справочник
    private JComboBox cbMetric = new JComboBox(); // комбо-бокс для выбора метрики
    private SelectorEditableExceptional<DirectoryExpenditureTypeItem> cache;

    /** Creates new form PanelExpTypesEdit */
    public PanelExpTypesEdit(PageContainer container) throws ClipsException {
        super(container);
        initComponents();
        directory = DirectoryLocator.getDirectory(DirectoryExpenditureType.class, false);
        cache = directory.getItems();
        DirectoryExpenditureMetric ds = DirectoryLocator.getDirectory(DirectoryExpenditureMetric.class);
        Selector ii = ds.getItems();
        DefaultComboBoxModel model = new DefaultComboBoxModel();// модель комбобокса
        for (int i = 0; i < ii.size(); i++) {
            model.addElement((DirectoryItem) ii.get(i));// заполнение модели
        }
        cbMetric.setModel(model); // комбобокс на панели
        cbNewExpenMetrics.setModel(model); // комбобокс в окне создания нового материала
        resetTable();//обновление таблицы
    StateSaver.attachTo(this);
    }

    /**
     * Обновление таблицы
     */
    private void resetTable() {
        TableModelExpenditureTypes model = new TableModelExpenditureTypes(cache, cbMetric); //заполнение модели таблицы
        tblExpTypes.setModel(model); // установка модели
        tblExpTypes.setSelectionMode(0); // выбирать можно только одну строку
        // вешаем на последнюю колонку редактирование через комбобокс
        TableColumn metricColumn = tblExpTypes.getColumnModel().getColumn(1);
        metricColumn.setCellEditor(new DefaultCellEditor(cbMetric));
    }

    /** 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.
     */
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        panelNewExpenType = new javax.swing.JPanel();
        jPanel4 = new javax.swing.JPanel();
        jPanel5 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        tfNewExpenTitle = new javax.swing.JTextField();
        jPanel6 = new javax.swing.JPanel();
        jLabel2 = new javax.swing.JLabel();
        cbNewExpenMetrics = new javax.swing.JComboBox();
        jPanel2 = new javax.swing.JPanel();
        jPanel1 = new javax.swing.JPanel();
        btAddExp = new javax.swing.JButton();
        btRemoveExp = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        tblExpTypes = new cli_fmw.utils.sorted_table.SortedTable();

        jPanel4.setLayout(new java.awt.GridLayout(1, 0, 20, 0));

        jPanel5.setLayout(new java.awt.GridLayout(2, 0, 0, 2));

        jLabel1.setText("Название");
        jPanel5.add(jLabel1);
        jPanel5.add(tfNewExpenTitle);

        jPanel4.add(jPanel5);

        jPanel6.setLayout(new java.awt.GridLayout(2, 0));

        jLabel2.setText("Метрика");
        jPanel6.add(jLabel2);

        jPanel6.add(cbNewExpenMetrics);

        jPanel4.add(jPanel6);

        javax.swing.GroupLayout panelNewExpenTypeLayout = new javax.swing.GroupLayout(panelNewExpenType);
        panelNewExpenType.setLayout(panelNewExpenTypeLayout);
        panelNewExpenTypeLayout.setHorizontalGroup(
            panelNewExpenTypeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelNewExpenTypeLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE, 487, Short.MAX_VALUE)
                .addContainerGap())
        );
        panelNewExpenTypeLayout.setVerticalGroup(
            panelNewExpenTypeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelNewExpenTypeLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5));
        setLayout(new java.awt.BorderLayout(5, 5));

        jPanel2.setLayout(new java.awt.BorderLayout());

        jPanel1.setLayout(new java.awt.GridLayout(1, 0, 10, 0));

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

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

        jPanel2.add(jPanel1, java.awt.BorderLayout.EAST);

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

        jScrollPane1.setViewportView(tblExpTypes);

        add(jScrollPane1, java.awt.BorderLayout.CENTER);
    }// </editor-fold>//GEN-END:initComponents
    /**
     * Добавление нового типа
     * @param evt
     */
    private void btAddExpActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btAddExpActionPerformed
        cbNewExpenMetrics.setSelectedItem(null); // ничего не выбрано
        tfNewExpenTitle.setText("");//название не задано
        // спрашиваем подтверждение
        int res = JOptionPane.showConfirmDialog(MainWindow.mainWindow, panelNewExpenType, "Создание нового материала", JOptionPane.OK_CANCEL_OPTION);
        if (res == JOptionPane.OK_OPTION) { // если подтверждение есть
            try {// пробуем добавить новый итем в справочник
                DirectoryExpenditureTypeItem item = new DirectoryExpenditureTypeItem(new ExpenditureTypeDetails());
                item.setTitle(tfNewExpenTitle.getText());//название
                item.setMetrics((DirectoryExpenditureMetricItem) cbNewExpenMetrics.getSelectedItem());//метрика
                cache.append(item);//добвавляем в справочник
                resetTable(); // обновляем таблицу
            } catch (ClipsException ex) {
                MessageBox.showException(ex);
            }
        }
    }//GEN-LAST:event_btAddExpActionPerformed

    /**
     * Удаление выбранного типа
     * @param evt
     */
    private void btRemoveExpActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btRemoveExpActionPerformed
        // спрашиваем подтверждение
        if (MessageBox.showConfirmYesNo(MessageBox.C_DEL_EXPENDITURE)==MessageBox.ANSWER_OK) {// если подтверждение есть
            try {// пробуем удалить итем из справочника
                cache.remove(tblExpTypes.getSelectedRowSorted());
                directory = DirectoryLocator.getDirectory(DirectoryExpenditureType.class);
                cache = directory.getItems();
                resetTable();//обновляем таблицу
            } catch (ClipsException ex) {
                MessageBox.showException(ex);
            }
        }
    }//GEN-LAST:event_btRemoveExpActionPerformed

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btAddExp;
    private javax.swing.JButton btRemoveExp;
    private javax.swing.JComboBox cbNewExpenMetrics;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JPanel jPanel5;
    private javax.swing.JPanel jPanel6;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JPanel panelNewExpenType;
    private cli_fmw.utils.sorted_table.SortedTable tblExpTypes;
    private javax.swing.JTextField tfNewExpenTitle;
    // End of variables declaration//GEN-END:variables
    public String getPageIcon() {
        return null;
    }

    @Override
    public String getPageTitle() {
        return "Cправочник материалов";
    }

    @Override
    public DelegateLine2 getDelegate() {
        return null;
    }

    @Override
    public boolean readyForPrint() {
        return true;
    }

    @Override
    public void print() {
        if (readyForPrint()) {
            if (tblExpTypes.isEditing()) {
                tblExpTypes.getCellEditor().stopCellEditing();
            }
            String title = "Справочник материалов";
            PrintCreators.createGeneratedReport(title, null, null, null, tblExpTypes.getModel(), getClass());
        }
    }
}
TOP

Related Classes of clips.administrator.expenditure.PanelExpTypesEdit

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.