Package clips.directory.editors.checkUpType

Source Code of clips.directory.editors.checkUpType.DlgEditFieldForXML$MetaIWTypesTableModel

/*
* DlgEditFieldForXML.java
*
* Created on 13 Август 2008 г., 15:23
*/
package clips.directory.editors.checkUpType;

import cli_fmw.delegate.directory.complex.DirectoryLocator;
import clips.delegate.doctor.checkup.FieldForXML;
import cli_fmw.directory.editors.writer.DialogIntelWriterEditor;
import cli_fmw.main.ClipsException;
import cli_fmw.main.audit.AuditManager;
import cli_fmw.utils.ErrorValue;
import cli_fmw.utils.MessageBox;
import cli_fmw.utils.ModalDialog;
import cli_fmw.utils.SelectorEditableExceptional;
import cli_fmw.utils.sorted_table.SortedTable;
import cli_fmw.utils.sorted_table.renderer.LabelRenderer;
import cli_fmw.utils.sorted_table.renderer.SortedErrorRenderer;
import cli_fmw.utils.table_config_states.StateSaver;
import clips.delegate.directory.simple.iwtype.DirectoryIWType;
import clips.delegate.directory.simple.iwtype.DirectoryIWTypeItem;
import clips.main.ClipsConfig;
import framework.beans.directory.DirectoryItemDetails;
import java.awt.Component;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.DefaultListModel;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JComponent;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableCellRenderer;

/**
* редактируем список фиелдов
* @author  lacoste
*/
public class DlgEditFieldForXML extends ModalDialog {

    private ArrayList<FieldForXML> fields = new ArrayList<FieldForXML>();
    private Set<Integer> iwIDs = new HashSet<Integer>();
    private DefaultListModel model;
    private DirectoryIWType directoryIWT;

    /** Creates new form DlgEditFieldForXML */
    public DlgEditFieldForXML(java.awt.Window parent, ArrayList<FieldForXML> field, Set<Integer> iwID, AuditManager am) throws ClipsException {
        super(parent, "Редактор полей осмотра/анализа", am);
        initComponents();
        directoryIWT = DirectoryLocator.getDirectory(DirectoryIWType.class);

//        Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize();
//        Rectangle dlgSize = this.getBounds();
//        this.setLocation((scrSize.width - dlgSize.width) / 2, (scrSize.height - dlgSize.height) / 2);

        this.fields = field;
        this.iwIDs = iwID;

        formList();
        tabMetaIWTypes.setModel(new MetaIWTypesTableModel());
        tabMetaIWTypes.setDefaultRenderer(Object.class, new LabelRenderer() {

            @Override
            protected void modifyErrorTableCellRendererComponent(JTable table, Object value, int row, int col) throws ClipsException {
                if (value instanceof BufferedImage) {
                    Icon icon = new ImageIcon((BufferedImage) value);
                    render().setIcon(icon);
                    render().setText("");
                }else{
                    render().setIcon(null);
                }
            }
        });
        tabMetaIWTypes.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        jScrollPane2.addComponentListener(new ComponentAdapter() {

            @Override
            public void componentResized(ComponentEvent e) {
                resizeImages();
            }


        });
        StateSaver.attachTo(this);
    }

    private void resizeImages() {
        for (int i = 0; i < fields.size(); i++) {
            FieldForXML fieldForXML = fields.get(i);
            if (fieldForXML.getType() == FieldForXML.Type.image) {
                tabMetaIWTypes.setRowHeight(i, tabMetaIWTypes.getCellRect(i, 0, false).width);
            }
        }
    }

    private void formList() throws ClipsException {
        model = new DefaultListModel();
        SelectorEditableExceptional<DirectoryIWTypeItem> items = directoryIWT.getItems();
        for (int i = 0; i < items.size(); i++) {
            DirectoryIWTypeItem item = items.get(i);
            if (!iwIDs.contains(item.getID())) {
                model.addElement(item);
            }
        }
        lstIWTypes.setModel(model);
    }

    public ArrayList<FieldForXML> getFieldList() {
        return fields;
    }

    public Object[] getIwID() {
        return iwIDs.toArray();
    }

    /** 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() {

        jPanel1 = new javax.swing.JPanel();
        jPanel2 = new javax.swing.JPanel();
        btOk = new javax.swing.JButton();
        btCancel = new javax.swing.JButton();
        jSplitPane1 = new javax.swing.JSplitPane();
        jPanel4 = new javax.swing.JPanel();
        jPanel11 = new javax.swing.JPanel();
        btEditor = new javax.swing.JButton();
        btUp = new javax.swing.JButton();
        btDown = new javax.swing.JButton();
        jPanel3 = new javax.swing.JPanel();
        btAdd = new javax.swing.JButton();
        btImage = new javax.swing.JButton();
        btDel = new javax.swing.JButton();
        jScrollPane2 = new javax.swing.JScrollPane();
        tabMetaIWTypes = new cli_fmw.utils.sorted_table.SortedTable();
        jPanel6 = new javax.swing.JPanel();
        jPanel5 = new javax.swing.JPanel();
        btAddType = new javax.swing.JButton();
        btDeleteType = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        lstIWTypes = new javax.swing.JList();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

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

        btOk.setText("Принять");
        btOk.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btOkActionPerformed(evt);
            }
        });
        jPanel2.add(btOk);

        btCancel.setText("Отмена");
        btCancel.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btCancelActionPerformed(evt);
            }
        });
        jPanel2.add(btCancel);

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

        jPanel4.setLayout(new java.awt.BorderLayout(5, 5));

        jPanel11.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT));

        btEditor.setText("Редактор");
        btEditor.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btEditorActionPerformed(evt);
            }
        });
        jPanel11.add(btEditor);

        btUp.setText("Вверх");
        btUp.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btUpActionPerformed(evt);
            }
        });
        jPanel11.add(btUp);

        btDown.setText("Вниз");
        btDown.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btDownActionPerformed(evt);
            }
        });
        jPanel11.add(btDown);

        jPanel4.add(jPanel11, java.awt.BorderLayout.SOUTH);

        jPanel3.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));

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

        btImage.setText("Изображение...");
        btImage.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btImageActionPerformed(evt);
            }
        });
        jPanel3.add(btImage);

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

        jPanel4.add(jPanel3, java.awt.BorderLayout.NORTH);

        jScrollPane2.setViewportView(tabMetaIWTypes);

        jPanel4.add(jScrollPane2, java.awt.BorderLayout.CENTER);

        jSplitPane1.setRightComponent(jPanel4);

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

        jPanel5.setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 1, 5, 1));

        btAddType.setText("Добавить");
        btAddType.setActionCommand("<html>Добавить <BR>   группу</html>");
        btAddType.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btAddTypeActionPerformed(evt);
            }
        });
        jPanel5.add(btAddType);

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

        jPanel6.add(jPanel5, java.awt.BorderLayout.SOUTH);

        jScrollPane1.setPreferredSize(new java.awt.Dimension(180, 154));

        jScrollPane1.setViewportView(lstIWTypes);

        jPanel6.add(jScrollPane1, java.awt.BorderLayout.CENTER);

        jSplitPane1.setLeftComponent(jPanel6);

        jPanel1.add(jSplitPane1, java.awt.BorderLayout.CENTER);

        getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);

        pack();
    }// </editor-fold>//GEN-END:initComponents

private void btOkActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btOkActionPerformed
    if (tabMetaIWTypes.isEditing()) {
        tabMetaIWTypes.getCellEditor().stopCellEditing();
    }
    setDlgResult(ModalDialog.DLG_OK);
    dispose();
}//GEN-LAST:event_btOkActionPerformed

private void btAddActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btAddActionPerformed
    int k = lstIWTypes.getSelectedIndex();
    if (k >= 0) {
        try {
            FieldForXML ffxml = new FieldForXML();
            DirectoryIWTypeItem type = (DirectoryIWTypeItem) model.getElementAt(k);
            ffxml.id = type.getID();
            ffxml.title = type.getTitle();
            iwIDs.add(type.getID());
            fields.add(ffxml);
            tabMetaIWTypes.updateUI();
            formList();
        } catch (ClipsException ex) {
            MessageBox.showException(ex);
        }
    }
}//GEN-LAST:event_btAddActionPerformed

private void btDelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btDelActionPerformed
    int k = tabMetaIWTypes.getSelectedRowSorted();
    if (k > -1) {
        FieldForXML ffxml = fields.get(k);
        try {
            iwIDs.remove(ffxml.getIWType().getID());
        } catch (ClipsException ex) {
            //тут либо не найден элемент либо доступ к полю запрещён
            //но дропать эксепшн совсем - некультурно, поэтому
            ex.printStackTrace();
        }
        fields.remove(ffxml);
        tabMetaIWTypes.updateUI();
        try {
            formList();
        } catch (ClipsException ex) {
            MessageBox.showException(ex);
        }
    }
}//GEN-LAST:event_btDelActionPerformed

private void btCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btCancelActionPerformed
    setDlgResult(ModalDialog.DLG_CANCEL);
    dispose();
}//GEN-LAST:event_btCancelActionPerformed

private void btUpActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btUpActionPerformed
    int pos = tabMetaIWTypes.getSelectedRowSorted();
    if (pos > 0) {
        FieldForXML get = fields.get(pos);
        fields.set(pos, fields.get(pos - 1));
        fields.set(pos - 1, get);
        tabMetaIWTypes.getSelectionModel().setSelectionInterval(pos - 1, pos - 1);
    }
    tabMetaIWTypes.updateUI();
}//GEN-LAST:event_btUpActionPerformed

private void btDownActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btDownActionPerformed
    int pos = tabMetaIWTypes.getSelectedRowSorted();
    if (pos < fields.size() - 1) {
        FieldForXML get = fields.get(pos);
        fields.set(pos, fields.get(pos + 1));
        fields.set(pos + 1, get);
        tabMetaIWTypes.getSelectionModel().setSelectionInterval(pos + 1, pos + 1);
    }
}//GEN-LAST:event_btDownActionPerformed

private void btEditorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btEditorActionPerformed
    try {
        int row = tabMetaIWTypes.getSelectedRowSorted();
        System.out.println("SIZE " + tabMetaIWTypes.getRowCount());
        System.out.println("ROW " + row);
        System.out.println("ROWCOUNT " + tabMetaIWTypes.getSelectedRowCount());
        if (row >= 0 && row < fields.size()) {
            DialogIntelWriterEditor dlg = new DialogIntelWriterEditor(this, fields.get(row).getIWType(), getAuditManager());
            dlg.setVisible(true);
            formList();
        }
    } catch (ClipsException ex) {
        MessageBox.showException(ex);
    }
}//GEN-LAST:event_btEditorActionPerformed

private void btAddTypeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btAddTypeActionPerformed
    try {
        String result = JOptionPane.showInputDialog("Введите название");
        if (result == null) {
            return;
        }
        DirectoryItemDetails details = new DirectoryItemDetails();
        details.title = result;
        DirectoryIWTypeItem newItem = new DirectoryIWTypeItem(details);
        directoryIWT.getItems().append(newItem);
        formList();
        lstIWTypes.setSelectedValue(newItem, true);
    } catch (ClipsException ex) {
        MessageBox.showException(ex);
    }
}//GEN-LAST:event_btAddTypeActionPerformed

private void btDeleteTypeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btDeleteTypeActionPerformed
    try {
        DirectoryIWTypeItem selectedType = (DirectoryIWTypeItem) lstIWTypes.getSelectedValue();
        if (selectedType == null) {
            return;
        }
        directoryIWT.getItems().remove(selectedType);
        formList();
    } catch (ClipsException ex) {
        MessageBox.showException(ex);
    }
}//GEN-LAST:event_btDeleteTypeActionPerformed

private void btImageActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btImageActionPerformed
    try {
        JFileChooser dlg = new JFileChooser();
        ClipsConfig cfg = ClipsConfig.getInstance();
        dlg.setCurrentDirectory(cfg.getRegisterExportPath());
        dlg.setFileSelectionMode(JFileChooser.FILES_ONLY);
        dlg.setMultiSelectionEnabled(false);
        dlg.setFileFilter(new FileNameExtensionFilter("изображения", "jpg", "jpeg", "bmp", "png", "gif"));
        int res = dlg.showOpenDialog(this);
        if (res == JFileChooser.OPEN_DIALOG) {
            try {
                File file = dlg.getSelectedFile();
                BufferedImage img = ImageIO.read(file);
                FieldForXML ffxml = new FieldForXML(FieldForXML.Type.image);
                ffxml.id = 0;
                ffxml.title = "изображение";
                ffxml.setObject(img);
                fields.add(ffxml);
                tabMetaIWTypes.updateUI();
                formList();
                resizeImages();
            } catch (IOException ex) {
                throw new ClipsException("Невозможно открыть изображение", ex);
            }
        }
    } catch (ClipsException ex) {
        MessageBox.showException(ex);
    }
}//GEN-LAST:event_btImageActionPerformed
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btAdd;
    private javax.swing.JButton btAddType;
    private javax.swing.JButton btCancel;
    private javax.swing.JButton btDel;
    private javax.swing.JButton btDeleteType;
    private javax.swing.JButton btDown;
    private javax.swing.JButton btEditor;
    private javax.swing.JButton btImage;
    private javax.swing.JButton btOk;
    private javax.swing.JButton btUp;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel11;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JPanel jPanel5;
    private javax.swing.JPanel jPanel6;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JSplitPane jSplitPane1;
    private javax.swing.JList lstIWTypes;
    private cli_fmw.utils.sorted_table.SortedTable tabMetaIWTypes;
    // End of variables declaration//GEN-END:variables

    class MetaIWTypesTableModel extends AbstractTableModel {

        @Override
        public int getRowCount() {
            return fields.size();
        }

        @Override
        public int getColumnCount() {
            return 2;
        }

        @Override
        public Object getValueAt(int rowIndex, int columnIndex) {
            if (columnIndex == 0) {
                try {
                    if (fields.get(rowIndex).getType() == FieldForXML.Type.image) {
                        return fields.get(rowIndex).getObject();
                    } else {
                        return directoryIWT.getItemFromID(fields.get(rowIndex).id).getTitle();
                    }
                } catch (ClipsException ex) {
                    return new ErrorValue(ex);
                }
            } else {
                return fields.get(rowIndex).title;
            }
        }

        @Override
        public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
            fields.get(rowIndex).title = aValue.toString();
        }

        @Override
        public String getColumnName(int column) {
            if (column == 0) {
                return "Тип";
            } else {
                return "Ваше название";
            }
        }

        @Override
        public boolean isCellEditable(int rowIndex, int columnIndex) {
            if (columnIndex == 0) {
                return false;
            } else {
                return true;
            }
        }
    }
}
TOP

Related Classes of clips.directory.editors.checkUpType.DlgEditFieldForXML$MetaIWTypesTableModel

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.