alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

What this is

This file is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Other links

The source code

/*
 *                 Sun Public License Notice
 * 
 * The contents of this file are subject to the Sun Public License
 * Version 1.0 (the "License"). You may not use this file except in
 * compliance with the License. A copy of the License is available at
 * http://www.sun.com/
 * 
 * The Original Code is NetBeans. The Initial Developer of the Original
 * Code is Sun Microsystems, Inc. Portions Copyright 1997-2004 Sun
 * Microsystems, Inc. All Rights Reserved.
 */

package org.netbeans.modules.db.explorer.dlg;

import java.sql.*;
import java.awt.*;
import java.awt.event.*;
import java.io.InputStream;
import java.util.*;
import java.beans.*;

import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.TableModelEvent;
import javax.swing.table.*;
import javax.swing.text.DefaultCaret;
import javax.swing.text.JTextComponent;

import org.openide.*;
import org.openide.DialogDescriptor;
import org.openide.DialogDisplayer;
import org.openide.util.NbBundle;

import org.netbeans.lib.ddl.impl.*;
import org.netbeans.lib.ddl.util.*;
import org.netbeans.modules.db.explorer.*;
import org.netbeans.modules.db.util.*;
import org.netbeans.modules.db.explorer.infos.*;
import org.netbeans.modules.db.explorer.nodes.*;

public class AddTableColumnDialog {
    boolean result = false;
    Dialog dialog = null;
    Specification spec;
    Map ixmap;
    Map ix_uqmap;
    String colname = null;
    transient private static final String tempStr = new String();
    JTextField colnamefield, colsizefield, colscalefield, defvalfield;
    JTextArea checkfield;
    JComboBox coltypecombo, idxcombo;
    JCheckBox pkcheckbox, ixcheckbox, checkcheckbox, nullcheckbox, uniquecheckbox;
    DataModel dmodel = new DataModel();
    private ResourceBundle bundle = NbBundle.getBundle("org.netbeans.modules.db.resources.Bundle"); //NOI18N

    public AddTableColumnDialog(final Specification spe, final DatabaseNodeInfo nfo) {
        spec = spe;
        try {
            JLabel label;
            JPanel pane = new JPanel();
            pane.setBorder(new EmptyBorder(new Insets(12, 12, 5, 11)));
            GridBagLayout layout = new GridBagLayout();
            GridBagConstraints con;
            pane.setLayout (layout);

            TextFieldListener fldlistener = new TextFieldListener(dmodel);
            IntegerFieldListener intfldlistener = new IntegerFieldListener(dmodel);

            // Column name

            label = new JLabel(bundle.getString("AddTableColumnName")); //NOI18N
            label.setDisplayedMnemonic(bundle.getString("AddTableColumnName_Mnemonic").charAt(0));
            label.getAccessibleContext().setAccessibleDescription(bundle.getString("ACS_AddTableColumnNameA11yDesc"));
            con = new GridBagConstraints ();
            con.gridx = 0;
            con.gridy = 0;
            con.gridwidth = 1;
            con.gridheight = 1;
            con.anchor = GridBagConstraints.WEST;
            con.insets = new java.awt.Insets (0, 0, 0, 0);
            con.weightx = 0.0;
            con.weighty = 0.0;
            pane.add(label, con);

            con = new GridBagConstraints ();
            con.gridx = 1;
            con.gridy = 0;
            con.gridwidth = 3;
            con.gridheight = 1;
            con.fill = GridBagConstraints.HORIZONTAL;
            con.insets = new java.awt.Insets (0, 12, 0, 0);
            con.weightx = 1.0;
            con.weighty = 0.0;
            colnamefield = new JTextField(35);
            colnamefield.setName(ColumnItem.NAME);
            colnamefield.addFocusListener(fldlistener);
            colnamefield.setToolTipText(bundle.getString("ACS_AddTableColumnNameTextFieldA11yDesc"));
            colnamefield.getAccessibleContext().setAccessibleName(bundle.getString("ACS_AddTableColumnNameTextFieldA11yName"));
            label.setLabelFor(colnamefield);
            pane.add(colnamefield, con);

            // Column type

            Map tmap = spec.getTypeMap();
            Vector ttab = new Vector(tmap.size());
            Iterator iter = tmap.keySet().iterator();
            while (iter.hasNext()) {
                String iterkey = (String)iter.next();
                String iterval = (String)tmap.get(iterkey);
                ttab.add(new TypeElement(iterkey, iterval));
            }

            ColumnItem item = new ColumnItem();
            item.setProperty(ColumnItem.TYPE, ttab.elementAt(0));
            dmodel.addRow(item);

            label = new JLabel(bundle.getString("AddTableColumnType")); //NOI18N
            label.setDisplayedMnemonic(bundle.getString("AddTableColumnType_Mnemonic").charAt(0));
            label.getAccessibleContext().setAccessibleDescription(bundle.getString("ACS_AddTableColumnTypeA11yDesc"));
            con = new GridBagConstraints ();
            con.gridx = 0;
            con.gridy = 1;
            con.gridwidth = 1;
            con.gridheight = 1;
            con.anchor = GridBagConstraints.WEST;
            con.insets = new java.awt.Insets (12, 0, 0, 0);
            con.weightx = 0.0;
            con.weighty = 0.0;
            pane.add(label, con);

            con = new GridBagConstraints ();
            con.gridx = 1;
            con.gridy = 1;
            con.gridwidth = 3;
            con.gridheight = 1;
            con.fill = GridBagConstraints.HORIZONTAL;
            con.insets = new java.awt.Insets (12, 12, 0, 0);
            con.weightx = 1.0;
            con.weighty = 0.0;
            coltypecombo = new JComboBox(ttab);
            coltypecombo.addActionListener(new ComboBoxListener(dmodel));
            coltypecombo.setName(ColumnItem.TYPE);
            coltypecombo.setToolTipText(bundle.getString("ACS_AddTableColumnTypeComboBoxA11yDesc"));
            coltypecombo.getAccessibleContext().setAccessibleName(bundle.getString("ACS_AddTableColumnTypeComboBoxA11yName"));
            label.setLabelFor(coltypecombo);
            pane.add(coltypecombo, con);

            // Column size

            label = new JLabel(bundle.getString("AddTableColumnSize")); //NOI18N
            label.setDisplayedMnemonic(bundle.getString("AddTableColumnSize_Mnemonic").charAt(0));
            label.getAccessibleContext().setAccessibleDescription(bundle.getString("ACS_AddTableColumnSizeA11yDesc"));
            con = new GridBagConstraints ();
            con.gridx = 0;
            con.gridy = 2;
            con.gridwidth = 1;
            con.gridheight = 1;
            con.anchor = GridBagConstraints.WEST;
            con.insets = new java.awt.Insets (12, 0, 0, 0);
            con.weightx = 0.0;
            con.weighty = 0.0;
            pane.add(label, con);

            con = new GridBagConstraints ();
            con.gridx = 1;
            con.gridy = 2;
            con.gridwidth = 1;
            con.gridheight = 1;
            con.fill = GridBagConstraints.HORIZONTAL;
            con.insets = new java.awt.Insets (12, 12, 0, 0);
            con.weightx = 1.0;
            con.weighty = 0.0;
            colsizefield = new ValidableTextField(new TextFieldValidator.integer());
            colsizefield.setName(ColumnItem.SIZE);
            colsizefield.addFocusListener(intfldlistener);
            colsizefield.setToolTipText(bundle.getString("ACS_AddTableColumnSizeTextFieldA11yDesc"));
            colsizefield.getAccessibleContext().setAccessibleName(bundle.getString("ACS_AddTableColumnSizeTextFieldA11yName"));
            label.setLabelFor(colsizefield);
            pane.add(colsizefield, con);

            // Column scale

            label = new JLabel(bundle.getString("AddTableColumnScale")); //NOI18N
            label.setDisplayedMnemonic(bundle.getString("AddTableColumnScale_Mnemonic").charAt(0));
            label.getAccessibleContext().setAccessibleDescription(bundle.getString("ACS_AddTableColumnScaleA11yDesc"));
            con = new GridBagConstraints ();
            con.gridx = 2;
            con.gridy = 2;
            con.gridwidth = 1;
            con.gridheight = 1;
            con.anchor = GridBagConstraints.WEST;
            con.insets = new java.awt.Insets (12, 12, 0, 0);
            con.weightx = 0.0;
            con.weighty = 0.0;
            pane.add(label, con);

            con = new GridBagConstraints ();
            con.gridx = 3;
            con.gridy = 2;
            con.gridwidth = 1;
            con.gridheight = 1;
            con.fill = GridBagConstraints.HORIZONTAL;
            con.insets = new java.awt.Insets (12, 12, 0, 0);
            con.weightx = 1.0;
            con.weighty = 0.0;
            colscalefield = new ValidableTextField(new TextFieldValidator.integer());
            colscalefield.setName(ColumnItem.SCALE);
            colscalefield.addFocusListener(intfldlistener);
            colscalefield.setToolTipText(bundle.getString("ACS_AddTableColumnScaleTextFieldA11yDesc"));
            colscalefield.getAccessibleContext().setAccessibleName(bundle.getString("ACS_AddTableColumnScaleTextFieldA11yName"));
            label.setLabelFor(colscalefield);
            pane.add(colscalefield, con);

            // Column default value

            label = new JLabel(bundle.getString("AddTableColumnDefault")); //NOI18N
            label.setDisplayedMnemonic(bundle.getString("AddTableColumnDefault_Mnemonic").charAt(0));
            label.getAccessibleContext().setAccessibleDescription(bundle.getString("ACS_AddTableColumnDefaultA11yDesc"));
            con = new GridBagConstraints ();
            con.gridx = 0;
            con.gridy = 3;
            con.gridwidth = 1;
            con.gridheight = 1;
            con.anchor = GridBagConstraints.WEST;
            con.insets = new java.awt.Insets (12, 0, 0, 0);
            con.weightx = 0.0;
            con.weighty = 0.0;
            pane.add(label, con);

            con = new GridBagConstraints ();
            con.gridx = 1;
            con.gridy = 3;
            con.gridwidth = 3;
            con.gridheight = 1;
            con.fill = GridBagConstraints.HORIZONTAL;
            con.insets = new java.awt.Insets (12, 12, 0, 0);
            con.weightx = 1.0;
            con.weighty = 0.0;
            defvalfield = new JTextField(35);
            defvalfield.setName(ColumnItem.DEFVAL);
            defvalfield.addFocusListener(fldlistener);
            defvalfield.setToolTipText(bundle.getString("ACS_AddTableColumnDefaultTextFieldA11yDesc"));
            defvalfield.getAccessibleContext().setAccessibleName(bundle.getString("ACS_AddTableColumnDefaultTextFieldA11yName"));
            label.setLabelFor(defvalfield);
            layout.setConstraints(defvalfield, con);
            pane.add(defvalfield);

            // Check subpane

            JPanel subpane = new JPanel();
            subpane.setBorder(new TitledBorder(bundle.getString("AddTableColumnConstraintsTitle"))); //NOI18N
            GridBagLayout sublayout = new GridBagLayout();
            subpane.setLayout(sublayout);

            ActionListener cbxlistener = new CheckBoxListener(dmodel);

            con = new GridBagConstraints ();
            con.gridx = 0;
            con.gridy = 0;
            con.gridwidth = 1;
            con.gridheight = 1;
            con.anchor = GridBagConstraints.WEST;
            con.insets = new java.awt.Insets (0, 0, 0, 0);
            con.weightx = 0.0;
            con.weighty = 0.0;
            pkcheckbox = new JCheckBox(" "+bundle.getString("AddTableColumnConstraintPKTitle")); //NOI18N
            pkcheckbox.setName(ColumnItem.PRIMARY_KEY);
            pkcheckbox.addActionListener(cbxlistener);
            pkcheckbox.setMnemonic(bundle.getString("AddTableColumnConstraintPKTitle_Mnemonic").charAt(0));
            pkcheckbox.setToolTipText(bundle.getString("ACS_AddTableColumnConstraintPKTitleA11yDesc"));
            subpane.add(pkcheckbox, con);

            con = new GridBagConstraints ();
            con.gridx = 1;
            con.gridy = 0;
            con.gridwidth = 1;
            con.gridheight = 1;
            con.anchor = GridBagConstraints.WEST;
            con.insets = new java.awt.Insets (0, 12, 0, 0);
            con.weightx = 0.0;
            con.weighty = 0.0;
            uniquecheckbox = new JCheckBox(" "+bundle.getString("AddTableColumnConstraintUniqueTitle")); //NOI18N
            uniquecheckbox.setName(ColumnItem.UNIQUE);
            uniquecheckbox.addActionListener(cbxlistener);
            uniquecheckbox.setMnemonic(bundle.getString("AddTableColumnConstraintUniqueTitle_Mnemonic").charAt(0));
            uniquecheckbox.setToolTipText(bundle.getString("ACS_AddTableColumnConstraintUniqueTitleA11yDesc"));
            subpane.add(uniquecheckbox, con);

            con = new GridBagConstraints ();
            con.gridx = 2;
            con.gridy = 0;
            con.gridwidth = 1;
            con.gridheight = 1;
            con.anchor = GridBagConstraints.WEST;
            con.insets = new java.awt.Insets (0, 12, 0, 0);
            con.weightx = 0.0;
            con.weighty = 0.0;
            nullcheckbox = new JCheckBox(" "+bundle.getString("AddTableColumnConstraintNullTitle")); //NOI18N
            nullcheckbox.setName(ColumnItem.NULLABLE);
            nullcheckbox.addActionListener(cbxlistener);
            nullcheckbox.setMnemonic(bundle.getString("AddTableColumnConstraintNullTitle_Mnemonic").charAt(0));
            nullcheckbox.setToolTipText(bundle.getString("ACS_AddTableColumnConstraintNullTitleA11yDesc"));
            subpane.add(nullcheckbox, con);

            // Insert subpane

            con = new GridBagConstraints ();
            con.gridx = 0;
            con.gridy = 4;
            con.gridwidth = 4;
            con.gridheight = 1;
            con.fill = GridBagConstraints.HORIZONTAL;
            con.insets = new java.awt.Insets (12, 0, 0, 0);
            con.weightx = 1.0;
            con.weighty = 0.0;
            pane.add(subpane, con);

            // are there primary keys?
            boolean isPK = false;
            try {
                String table = (String)nfo.get(DatabaseNode.TABLE);
                DriverSpecification drvSpec = nfo.getDriverSpecification();

                drvSpec.getPrimaryKeys(table);
                ResultSet rs = drvSpec.getResultSet();

                if( rs != null ) {
                    if(rs.next())
                        isPK = true;
                    rs.close();
                }
                
            } catch (Exception e) {
                org.openide.ErrorManager.getDefault().notify(org.openide.ErrorManager.INFORMATIONAL, e);
            }

            // Index name combo

            con = new GridBagConstraints ();
            con.gridx = 0;
            con.gridy = 5;
            con.gridwidth = 1;
            con.gridheight = 1;
            con.anchor = GridBagConstraints.NORTHWEST;
            con.insets = new java.awt.Insets (12, 0, 0, 0);
            con.weightx = 0.0;
            con.weighty = 0.0;
            ixcheckbox = new JCheckBox(" "+bundle.getString("AddTableColumnIndexName")); //NOI18N
            ixcheckbox.setName(ColumnItem.INDEX);
            ixcheckbox.addActionListener(cbxlistener);
            ixcheckbox.setMnemonic(bundle.getString("AddTableColumnIndexName_Mnemonic").charAt(0));
            ixcheckbox.setToolTipText(bundle.getString("ACS_AddTableColumnIndexNameA11yDesc"));
            pane.add(ixcheckbox, con);

            try {
                String table = (String)nfo.get(DatabaseNode.TABLE);
                DriverSpecification drvSpec = nfo.getDriverSpecification();

                drvSpec.getIndexInfo(table, false, false);
                ResultSet rs = drvSpec.getResultSet();
                HashMap rset = new HashMap();
                
                ixmap = new HashMap();
                ix_uqmap = new HashMap();
                String ixname;
                while (rs.next()) {
                    rset = drvSpec.getRow();
                    ixname = (String) rset.get(new Integer(6));
                    if (ixname != null) {
                        Vector ixcols = (Vector)ixmap.get(ixname);
                        if (ixcols == null) {
                            ixcols = new Vector();
                            ixmap.put(ixname,ixcols);
                            boolean uq = !Boolean.valueOf( (String)rset.get( new Integer(4) ) ).booleanValue();
                            if(uq)
                                ix_uqmap.put( ixname, ColumnItem.UNIQUE );
                        }

                        ixcols.add((String) rset.get(new Integer(9)));
                    }
                    rset.clear();
                }
                rs.close();
            } catch (Exception e) {
                //
            }

            con = new GridBagConstraints ();
            con.gridx = 1;
            con.gridy = 5;
            con.gridwidth = 3;
            con.gridheight = 1;
            con.fill = GridBagConstraints.HORIZONTAL;
            con.insets = new java.awt.Insets (12, 12, 0, 0);
            con.weightx = 1.0;
            con.weighty = 0.0;
            idxcombo = new JComboBox(new Vector(ixmap.keySet()));
            idxcombo.setToolTipText(bundle.getString("ACS_AddTableColumnIndexNameComboBoxA11yDesc"));
            idxcombo.getAccessibleContext().setAccessibleName(bundle.getString("ACS_AddTableColumnIndexNameComboBoxA11yName"));
            idxcombo.getAccessibleContext().setAccessibleDescription(bundle.getString("ACS_AddTableColumnIndexNameComboBoxA11yDesc"));
            //idxcombo.setSelectedIndex(0);
            pane.add(idxcombo, con);

            // Check title and textarea

            con = new GridBagConstraints ();
            con.gridx = 0;
            con.gridy = 6;
            con.gridwidth = 1;
            con.gridheight = 1;
            con.anchor = GridBagConstraints.NORTHWEST;
            con.insets = new java.awt.Insets (12, 0, 0, 0);
            con.weightx = 0.0;
            con.weighty = 0.0;
            checkcheckbox = new JCheckBox(" "+bundle.getString("AddTableColumnConstraintCheckTitle")); //NOI18N
            checkcheckbox.setName(ColumnItem.CHECK);
            checkcheckbox.addActionListener(cbxlistener);
            checkcheckbox.setMnemonic(bundle.getString("AddTableColumnCheckTitle_Mnemonic").charAt(0));
            checkcheckbox.setToolTipText(bundle.getString("ACS_AddTableColumnCheckTitleA11yDesc"));
            pane.add(checkcheckbox, con);

            con = new GridBagConstraints ();
            con.gridx = 1;
            con.gridy = 6;
            con.gridwidth = 3;
            con.gridheight = 1;
            con.fill = GridBagConstraints.BOTH;
            con.insets = new java.awt.Insets (12, 12, 0, 0);
            con.weightx = 1.0;
            con.weighty = 1.0;
            checkfield = new JTextArea(3, 35);
            checkfield.setName(ColumnItem.CHECK_CODE);
            checkfield.addFocusListener(fldlistener);
            checkfield.setToolTipText(bundle.getString("ACS_AddTableColumnCheckTextAreaA11yDesc"));
            checkfield.getAccessibleContext().setAccessibleName(bundle.getString("ACS_AddTableColumnCheckTextAreaA11yName"));
            checkfield.getAccessibleContext().setAccessibleDescription(bundle.getString("ACS_AddTableColumnCheckTextAreaA11yDesc"));
            JScrollPane spane = new JScrollPane(checkfield);
            pane.add(spane, con);

            checkcheckbox.setSelected(false);
            checkcheckbox.setSelected(false);
            nullcheckbox.setSelected(true);
            uniquecheckbox.setSelected(false);
            pkcheckbox.setEnabled(!isPK);
            idxcombo.setEnabled(idxcombo.getItemCount()>0);
            ixcheckbox.setEnabled(idxcombo.isEnabled());
            
            item.addPropertyChangeListener(new PropertyChangeListener() {
                                               public void propertyChange(PropertyChangeEvent evt) {
                                                   String pname = evt.getPropertyName();
                                                   Object nval = evt.getNewValue();
                                                   if (nval instanceof Boolean) {
                                                       boolean set = ((Boolean)nval).booleanValue();
                                                       if (pname.equals(ColumnItem.PRIMARY_KEY)) {
                                                           pkcheckbox.setSelected(set);
                                                           //idxcombo.setEnabled(!set);
                                                           //ixcheckbox.setEnabled(!set);
                                                           //ixcheckbox.setSelected(set);
                                                       } else if (pname.equals(ColumnItem.INDEX)) {
                                                           ixcheckbox.setSelected(set);
                                                       } else if (pname.equals(ColumnItem.UNIQUE)) {
                                                           uniquecheckbox.setSelected(set);
                                                           idxcombo.setEnabled(!set);
                                                           ixcheckbox.setEnabled(!set);
                                                           ixcheckbox.setSelected(set);
                                                           if(set) {
                                                               idxcombo.addItem(tempStr);
                                                               idxcombo.setSelectedItem(tempStr);
                                                           } else {
                                                               idxcombo.removeItem(tempStr);
                                                               idxcombo.setEnabled(idxcombo.getItemCount()>0);
                                                               ixcheckbox.setEnabled(idxcombo.isEnabled());
                                                           }
                                                       } else if (pname.equals(ColumnItem.NULLABLE)) {
                                                           nullcheckbox.setSelected(set);
                                                       }
                                                   }
                                               }
                                           });

            ActionListener listener = new ActionListener() {
                      public void actionPerformed(ActionEvent event) {
                          if (event.getSource() == DialogDescriptor.OK_OPTION) {
                              result = validate();

                              CommandBuffer cbuff = new CommandBuffer();

                              if (result) {
                                  try {
                                      boolean use_idx = false;
                                      String tablename = nfo.getTable();
                                      colname = colnamefield.getText();
                                      ColumnItem citem = (ColumnItem)dmodel.getData().elementAt(0);
                                      AddColumn cmd = spec.createCommandAddColumn(tablename);
                                      cmd.setObjectOwner((String)nfo.get(DatabaseNodeInfo.SCHEMA));
                                      org.netbeans.lib.ddl.impl.TableColumn col = null;
                                      if (citem.isPrimaryKey()) {
                                          col = (org.netbeans.lib.ddl.impl.TableColumn)cmd.createPrimaryKeyColumn(colname);
                                      } else if (citem.isUnique()) {
                                          col = (org.netbeans.lib.ddl.impl.TableColumn)cmd.createUniqueColumn(colname);
                                      } else col = (org.netbeans.lib.ddl.impl.TableColumn)cmd.createColumn(colname);
                                      if (citem.isIndexed()&&!citem.isUnique()&&!citem.isPrimaryKey()) use_idx = true;
                                      col.setColumnType(Specification.getType(citem.getType().getType()));
                                      col.setColumnSize(citem.getSize());
                                      col.setDecimalSize(citem.getScale());
                                      col.setNullAllowed(citem.allowsNull());
                                      if (citem.hasDefaultValue()) col.setDefaultValue(citem.getDefaultValue());

                                      if (citem.hasCheckConstraint()) {
                                          // add COLUMN constraint (without constraint name)
                                          col.setCheckCondition(citem.getCheckConstraint());
                                      }
                                      cbuff.add(cmd);

                                      if (use_idx) {

                                          String idxname = (String)idxcombo.getSelectedItem();
                                          String isUQ = new String();
                                          if (ixmap.containsKey(idxname)) {
                                              if(ix_uqmap.containsKey(idxname))
                                                                isUQ = ColumnItem.UNIQUE;
                                              DropIndex dropIndexCmd = spec.createCommandDropIndex(idxname);
                                              dropIndexCmd.setTableName(tablename);
                                              dropIndexCmd.setObjectOwner((String)nfo.get(DatabaseNodeInfo.SCHEMA));
                                              cbuff.add(dropIndexCmd);
                                          }

                                          CreateIndex xcmd = spec.createCommandCreateIndex(tablename);
                                          xcmd.setIndexName(idxname);
                                          xcmd.setIndexType(isUQ);
                                          xcmd.setObjectOwner((String)nfo.get(DatabaseNodeInfo.SCHEMA));
                                          Enumeration enu = ((Vector)ixmap.get(idxname)).elements();
                                          while (enu.hasMoreElements()) {
                                              xcmd.specifyColumn((String)enu.nextElement());
                                          }
                                          xcmd.specifyColumn(citem.getName());
                                          cbuff.add(xcmd);
                                      }

                                      cbuff.execute();

                                      // was execution of commands with or without exception?
                                      if(!cbuff.wasException()) {
                                          // dialog is closed after successfully add column
                                          dialog.setVisible(false);
                                          dialog.dispose();
                                      }
                                      //dialog is not closed after unsuccessfully add column

                                } catch (Exception e) {
                                    e.printStackTrace();
                                }
                              } else {
                                  String msg = bundle.getString("EXC_InsufficientAddColumnInfo");
                                  DialogDisplayer.getDefault().notify(
                                    new NotifyDescriptor.Message(msg, NotifyDescriptor.ERROR_MESSAGE));
                              }
                          }
                      }
                  };

            pane.getAccessibleContext().setAccessibleDescription(bundle.getString("ACS_AddTableColumnDialogA11yDesc"));
                  
            DialogDescriptor descriptor = new DialogDescriptor(pane, bundle.getString("AddColumnDialogTitle"), true, listener); //NOI18N
            // inbuilt close of the dialog is only after CANCEL button click
            // after OK button is dialog closed by hand
            Object [] closingOptions = {DialogDescriptor.CANCEL_OPTION};
            descriptor.setClosingOptions(closingOptions);
            dialog = DialogDisplayer.getDefault().createDialog(descriptor);
            dialog.setResizable(true);
        } catch (MissingResourceException e) {
            e.printStackTrace();
        }
    }

    public boolean run() {
        if (dialog != null) dialog.setVisible(true);
        return result;
    }

    private boolean validate() {
        Vector cols = dmodel.getData();
        String colname = colnamefield.getText();
        if (colname == null || colname.length()<1)
            return false;

        Enumeration colse = cols.elements();
        while(colse.hasMoreElements())
            if (!((ColumnItem)colse.nextElement()).validate())
                return false;

        return true;
    }

    public String getColumnName() {
        return colname;
    }

    class CheckBoxListener implements ActionListener {
        private DataModel data;

        CheckBoxListener(DataModel data) {
            this.data = data;
        }

        public void actionPerformed(ActionEvent event) {
            JCheckBox cbx = (JCheckBox)event.getSource();
            String code = cbx.getName();
            data.setValue(cbx.isSelected() ? Boolean.TRUE : Boolean.FALSE, code, 0);
        }
    }

    class ComboBoxListener implements ActionListener {
        private DataModel data;

        ComboBoxListener(DataModel data) {
            this.data = data;
        }

        public void actionPerformed(ActionEvent event) {
            JComboBox cbx = (JComboBox)event.getSource();
            String code = cbx.getName();
            data.setValue(cbx.getSelectedItem(), code, 0);
        }
    }

    class TextFieldListener implements FocusListener {
        private DataModel data;

        TextFieldListener(DataModel data) {
            this.data = data;
        }

        public void focusGained(FocusEvent event) {
        }

        public void focusLost(FocusEvent event) {
            JTextComponent fld = (JTextComponent)event.getSource();
            String code = fld.getName();
            data.setValue(fld.getText(), code, 0);
        }
    }

    class IntegerFieldListener implements FocusListener {
        private DataModel data;

        IntegerFieldListener(DataModel data) {
            this.data = data;
        }

        public void focusGained(FocusEvent event) {
        }

        public void focusLost(FocusEvent event) {
            JTextComponent fld = (JTextComponent)event.getSource();
            String code = fld.getName();
            String numero = fld.getText();
            Integer ival;
            if (numero == null || numero.length()==0) numero = "0"; //NOI18N
            ival = new Integer(numero);
            data.setValue(ival, code, 0);
        }
    }
}
... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.