kr.pe.sinnori.gui.screen.SubProjectPartConfigPopup.java Source code

Java tutorial

Introduction

Here is the source code for kr.pe.sinnori.gui.screen.SubProjectPartConfigPopup.java

Source

/*
 * Created by JFormDesigner on Sun Nov 30 01:28:48 KST 2014
 */

package kr.pe.sinnori.gui.screen;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import kr.pe.sinnori.common.exception.ConfigValueInvalidException;
import kr.pe.sinnori.common.util.SequencedProperties;
import kr.pe.sinnori.gui.config.SinnoriConfigInfo;
import kr.pe.sinnori.gui.table.ConfigItemKeyRenderer;
import kr.pe.sinnori.gui.table.ConfigItemValue;
import kr.pe.sinnori.gui.table.ConfigItemValueEditor;
import kr.pe.sinnori.gui.table.ConfigItemValueRenderer;
import kr.pe.sinnori.gui.table.ConfigItemTableModel;

import com.jgoodies.forms.factories.*;
import com.jgoodies.forms.layout.*;

/**
 * @author Jonghoon Won
 */
@SuppressWarnings("serial")
public class SubProjectPartConfigPopup extends JDialog {
    private Logger log = LoggerFactory.getLogger(SubProjectPartConfigPopup.class);

    private String mainProjectName;
    private SinnoriConfigInfo sinnoriConfigInfo;
    private String selectedSubProjectName;
    private ConfigItemTableModel subProjectPartTableModel;

    public SubProjectPartConfigPopup(Frame owner, String mainProjectName, SinnoriConfigInfo sinnoriConfigInfo,
            String selectedSubProjectName, ConfigItemTableModel subProjectPartTableModel, int rowHavingBadValue,
            String targetKeyHavingBadValue) {
        super(owner, true);

        int maxRow = subProjectPartTableModel.getRowCount();
        if (rowHavingBadValue >= maxRow) {
            log.warn("parameter rowHavingBadValue[{}] is greater than maxRow[{}]", rowHavingBadValue, maxRow);
            JOptionPane.showMessageDialog(this, "parameter focusRow is greater than maxRow");
            this.dispose();
        }

        initComponents();

        this.mainProjectName = mainProjectName;
        this.sinnoriConfigInfo = sinnoriConfigInfo;
        this.selectedSubProjectName = selectedSubProjectName;
        this.subProjectPartTableModel = subProjectPartTableModel;

        /** Post-Creation Code Start */
        mainProjectNameValueLabel.setText(this.mainProjectName);
        subProjectNameValueLabel.setText(this.selectedSubProjectName);
        subProjectPartTable.setModel(this.subProjectPartTableModel);

        // commonConfigTable.setModel(commonConfigItemTableModel);
        subProjectPartTable.getColumnModel().getColumn(0).setCellRenderer(new ConfigItemKeyRenderer());

        subProjectPartTable.getColumnModel().getColumn(1).setResizable(false);
        subProjectPartTable.getColumnModel().getColumn(1).setPreferredWidth(250);

        subProjectPartTable.getColumnModel().getColumn(1).setCellRenderer(new ConfigItemValueRenderer());
        subProjectPartTable.getColumnModel().getColumn(1).setCellEditor(new ConfigItemValueEditor(new JCheckBox()));
        subProjectPartTable.setRowHeight(38);
        subProjectPartScrollPane.repaint();

        if (rowHavingBadValue >= 0) {
            subProjectPartTable.changeSelection(rowHavingBadValue, 1, false, false);
            subProjectPartTable.editCellAt(rowHavingBadValue, 1);
            JOptionPane.showMessageDialog(this, new StringBuilder("Please check the value of key[")
                    .append(targetKeyHavingBadValue).append("]").toString());
        }
        /** Post-Creation Code End */
    }

    private void okButtonActionPerformed(ActionEvent e) {
        SequencedProperties newSinnoriConfig = new SequencedProperties();
        int maxRow = subProjectPartTableModel.getRowCount();
        log.info("dbcpConnPoolName={}, maxRow={}", selectedSubProjectName, maxRow);

        for (int i = 0; i < maxRow; i++) {
            Object tableModelValue = subProjectPartTableModel.getValueAt(i, 1);

            if (!(tableModelValue instanceof ConfigItemValue)) {
                log.error(
                        "subProjectName[{}] ConfigItemTableModel[{}][{}]'s value is not instanc of ConfigItemValue class",
                        selectedSubProjectName, i, 1);
                System.exit(1);
            }

            ConfigItemValue configItemCellValue = (ConfigItemValue) tableModelValue;
            String targetKey = configItemCellValue.getTargetKey();
            String targetValue = configItemCellValue.getValueOfComponent();

            log.info("dbcpConnPoolName={}, row index={}, targetKey={}, targetValue={}", selectedSubProjectName, i,
                    targetKey, targetValue);

            newSinnoriConfig.put(targetKey, targetValue);

            boolean isValidation = true;
            try {
                isValidation = sinnoriConfigInfo.isValidation(targetKey, newSinnoriConfig);

                if (isValidation) {
                    sinnoriConfigInfo.getNativeValueAfterBreakChecker(targetKey, newSinnoriConfig);
                }

            } catch (ConfigValueInvalidException e1) {
                String errorMessage = e1.getMessage();
                log.warn("targetKey={}, errormessage={}", targetKey, errorMessage);

                subProjectPartTable.changeSelection(i, 1, false, false);
                subProjectPartTable.editCellAt(i, 1);

                JOptionPane.showMessageDialog(this, new StringBuilder("Please check the value of key[")
                        .append(targetKey).append("]").toString());
                return;
            }
        }

        this.dispose();
    }

    private void initComponents() {
        // JFormDesigner - Component initialization - DO NOT MODIFY  //GEN-BEGIN:initComponents
        // Generated using JFormDesigner non-commercial license
        dialogPane = new JPanel();
        contentPanel = new JPanel();
        mainProjectNameLinePanel = new JPanel();
        mainProjectNameTitleLabel = new JLabel();
        mainProjectNameValueLabel = new JLabel();
        subProjectNameLinePanel = new JPanel();
        subProjectNameTitleLabel = new JLabel();
        subProjectNameValueLabel = new JLabel();
        subProjectPartScrollPane = new JScrollPane();
        subProjectPartTable = new JTable();
        buttonBar = new JPanel();
        okButton = new JButton();

        //======== this ========
        Container contentPane = getContentPane();
        contentPane.setLayout(new BorderLayout());

        //======== dialogPane ========
        {
            dialogPane.setBorder(Borders.createEmptyBorder("7dlu, 7dlu, 7dlu, 7dlu"));
            dialogPane.setLayout(new BorderLayout());

            //======== contentPanel ========
            {
                contentPanel.setLayout(new FormLayout("${growing-button}", "2*(default, $lgap), 90dlu:grow"));

                //======== mainProjectNameLinePanel ========
                {
                    mainProjectNameLinePanel.setLayout(new FormLayout("default, $lcgap, default:grow", "default"));

                    //---- mainProjectNameTitleLabel ----
                    mainProjectNameTitleLabel.setText("\uc8fc \ud504\ub85c\uc81d\ud2b8 \uc774\ub984 :");
                    mainProjectNameLinePanel.add(mainProjectNameTitleLabel, CC.xy(1, 1));

                    //---- mainProjectNameValueLabel ----
                    mainProjectNameValueLabel.setText("sample_test");
                    mainProjectNameLinePanel.add(mainProjectNameValueLabel, CC.xy(3, 1));
                }
                contentPanel.add(mainProjectNameLinePanel, CC.xy(1, 1));

                //======== subProjectNameLinePanel ========
                {
                    subProjectNameLinePanel.setLayout(new FormLayout("default, $lcgap, default:grow", "default"));

                    //---- subProjectNameTitleLabel ----
                    subProjectNameTitleLabel.setText("\uc11c\ube0c \ud504\ub85c\uc81d\ud2b8 \uc774\ub984 :");
                    subProjectNameLinePanel.add(subProjectNameTitleLabel, CC.xy(1, 1));

                    //---- subProjectNameValueLabel ----
                    subProjectNameValueLabel.setText("sample_test_sub1");
                    subProjectNameLinePanel.add(subProjectNameValueLabel, CC.xy(3, 1));
                }
                contentPanel.add(subProjectNameLinePanel, CC.xy(1, 3));

                //======== subProjectPartScrollPane ========
                {

                    //---- subProjectPartTable ----
                    subProjectPartTable
                            .setModel(new DefaultTableModel(new Object[][] { { null, null }, { null, null }, },
                                    new String[] { "\ud0a4", "\uac12" }) {
                                Class<?>[] columnTypes = new Class<?>[] { String.class, Object.class };

                                @Override
                                public Class<?> getColumnClass(int columnIndex) {
                                    return columnTypes[columnIndex];
                                }
                            });
                    subProjectPartScrollPane.setViewportView(subProjectPartTable);
                }
                contentPanel.add(subProjectPartScrollPane, CC.xy(1, 5));
            }
            dialogPane.add(contentPanel, BorderLayout.CENTER);

            //======== buttonBar ========
            {
                buttonBar.setBorder(Borders.createEmptyBorder("5dlu, 0dlu, 0dlu, 0dlu"));
                buttonBar.setLayout(new FormLayout("$glue, $button", "pref"));

                //---- okButton ----
                okButton.setText("Close");
                okButton.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        okButtonActionPerformed(e);
                    }
                });
                buttonBar.add(okButton, CC.xy(2, 1));
            }
            dialogPane.add(buttonBar, BorderLayout.SOUTH);
        }
        contentPane.add(dialogPane, BorderLayout.CENTER);
        pack();
        setLocationRelativeTo(getOwner());
        // JFormDesigner - End of component initialization  //GEN-END:initComponents
    }

    // JFormDesigner - Variables declaration - DO NOT MODIFY  //GEN-BEGIN:variables
    // Generated using JFormDesigner non-commercial license
    private JPanel dialogPane;
    private JPanel contentPanel;
    private JPanel mainProjectNameLinePanel;
    private JLabel mainProjectNameTitleLabel;
    private JLabel mainProjectNameValueLabel;
    private JPanel subProjectNameLinePanel;
    private JLabel subProjectNameTitleLabel;
    private JLabel subProjectNameValueLabel;
    private JScrollPane subProjectPartScrollPane;
    private JTable subProjectPartTable;
    private JPanel buttonBar;
    private JButton okButton;
    // JFormDesigner - End of variables declaration  //GEN-END:variables
}