view src/ConnectionManager/src/connectionmanager/DatabaseDialog.java @ 3:960fe1aa1c10 database-connection-manager

Add LTPDADatabaseConnectionManager implementation. Java code
author Daniele Nicolodi <nicolodi@science.unitn.it>
date Mon, 05 Dec 2011 16:20:06 +0100
parents
children 11e3ed9d2115
line wrap: on
line source

package connectionmanager;

import java.util.HashSet;
import javax.swing.DefaultComboBoxModel;
import javax.swing.table.TableModel;

public class DatabaseDialog extends javax.swing.JDialog {

  public boolean cancelled = true;
  public String hostname;
  public String database;
  private TableModel model;

  public DatabaseDialog(javax.swing.JDialog parent, TableModel model) {
    super(parent, true);
    this.model = model;
    initComponents();
    initHostnameCombo();
    initDatabaseCombo();
    super.setLocationRelativeTo(parent);
    super.getRootPane().setDefaultButton(okButton);
    if (hostnameCombo.getModel().getSize() == 1) {
      databaseCombo.requestFocus();
    }
  }

  @SuppressWarnings("unchecked")
  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
  private void initComponents() {

    jLabel10 = new javax.swing.JLabel();
    jLabel9 = new javax.swing.JLabel();
    databaseCombo = new javax.swing.JComboBox();
    okButton = new javax.swing.JButton();
    cancelButton = new javax.swing.JButton();
    hostnameCombo = new javax.swing.JComboBox();

    setTitle("Database connection");
    setLocationByPlatform(true);
    setModal(true);
    setResizable(false);

    jLabel10.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
    jLabel10.setText("Database:");

    jLabel9.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
    jLabel9.setText("Hostname:");

    databaseCombo.setEditable(true);

    okButton.setText("Ok");
    okButton.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
        okButtonActionPerformed(evt);
      }
    });

    cancelButton.setText("Cancel");
    cancelButton.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
        cancelButtonActionPerformed(evt);
      }
    });

    hostnameCombo.setEditable(true);
    hostnameCombo.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
        hostnameComboActionPerformed(evt);
      }
    });

    org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
      layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
      .add(layout.createSequentialGroup()
        .addContainerGap()
        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
          .add(layout.createSequentialGroup()
            .add(jLabel9)
            .add(18, 18, 18)
            .add(hostnameCombo, 0, 240, Short.MAX_VALUE))
          .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
            .add(cancelButton)
            .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
            .add(okButton))
          .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
            .add(jLabel10)
            .add(21, 21, 21)
            .add(databaseCombo, 0, 240, Short.MAX_VALUE)))
        .addContainerGap())
    );
    layout.setVerticalGroup(
      layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
      .add(layout.createSequentialGroup()
        .addContainerGap()
        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
          .add(hostnameCombo, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
          .add(jLabel9))
        .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
          .add(databaseCombo, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
          .add(jLabel10))
        .add(18, 18, 18)
        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
          .add(cancelButton)
          .add(okButton))
        .addContainerGap())
    );

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

    private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelButtonActionPerformed
      cancelled = true;
      doClose();
    }//GEN-LAST:event_cancelButtonActionPerformed

    private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okButtonActionPerformed
      cancelled = false;
      hostname = (String) hostnameCombo.getSelectedItem();
      database = (String) databaseCombo.getSelectedItem();
      doClose();
    }//GEN-LAST:event_okButtonActionPerformed

    private void hostnameComboActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_hostnameComboActionPerformed
      initDatabaseCombo();
    }//GEN-LAST:event_hostnameComboActionPerformed

  private void initHostnameCombo() {
    HashSet<String> hostnames = new HashSet<String>();
    int rows = model.getRowCount();
    for (int i = 0; i < rows; i++) {
      hostnames.add((String) model.getValueAt(i, 0));
    }
    hostnameCombo.setModel(new DefaultComboBoxModel(hostnames.toArray()));
  }

  private void initDatabaseCombo() {
    HashSet<String> databases = new HashSet<String>();
    hostname = (String) hostnameCombo.getSelectedItem();
    int rows = model.getRowCount();
    for (int i = 0; i < rows; i++) {
      if (hostname.equals((String) model.getValueAt(i, 0))) {
        databases.add((String) model.getValueAt(i, 1));
      }
    }
    databaseCombo.setModel(new DefaultComboBoxModel(databases.toArray()));
  }

  private void doClose() {
    setVisible(false);
    dispose();

  }
  // Variables declaration - do not modify//GEN-BEGIN:variables
  private javax.swing.JButton cancelButton;
  private javax.swing.JComboBox databaseCombo;
  private javax.swing.JComboBox hostnameCombo;
  private javax.swing.JLabel jLabel10;
  private javax.swing.JLabel jLabel9;
  private javax.swing.JButton okButton;
  // End of variables declaration//GEN-END:variables
}