DriverEditorDialog.java :  » Database-Client » SQL-Workbench » workbench » gui » profiles » Java Open Source

Java Open Source » Database Client » SQL Workbench 
SQL Workbench » workbench » gui » profiles » DriverEditorDialog.java
/*
 * DriverEditorDialog.java
 *
 * This file is part of SQL Workbench/J, http://www.sql-workbench.net
 *
 * Copyright 2002-2008, Thomas Kellerer
 * No part of this code maybe reused without the permission of the author
 *
 * To contact the author please send an email to: support@sql-workbench.net
 *
 */
package workbench.gui.profiles;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.ActionMap;
import javax.swing.InputMap;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.border.EtchedBorder;

import workbench.gui.actions.EscAction;
import workbench.gui.components.WbButton;
import workbench.resource.ResourceMgr;
import workbench.resource.Settings;

public class DriverEditorDialog extends JDialog
  implements ActionListener
{
  private JPanel dummyPanel;
  private JPanel buttonPanel;
  private JButton okButton;
  private DriverlistEditorPanel driverListPanel;
  private JButton cancelButton;
  private boolean cancelled = true;
  private EscAction escAction;

  public DriverEditorDialog(Frame parent)
  {
    super(parent, true);
    initComponents();

    this.getRootPane().setDefaultButton(this.okButton);
    InputMap im = this.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
    ActionMap am = this.getRootPane().getActionMap();
    escAction = new EscAction(this);
    escAction.addToInputMap(im, am);

    if (!Settings.getInstance().restoreWindowSize(this))
    {
      this.setSize(600,400);
    }
    driverListPanel.restoreSettings();
    
    // when invoked from the connection dialog, it seems that under
    // Linux the dialog is not visible (because it's behind the connection
    // dialog), so we're trying to make this window visible
    EventQueue.invokeLater(new Runnable()
    {
      public void run()
      {
        toFront();
        requestFocus();
      }
    });
  }

  private void initComponents()
  {
    driverListPanel = new workbench.gui.profiles.DriverlistEditorPanel();
    buttonPanel = new JPanel();
    okButton = new WbButton(ResourceMgr.getString(ResourceMgr.TXT_OK));
    cancelButton = new WbButton(ResourceMgr.getString(ResourceMgr.TXT_CANCEL));
    dummyPanel = new JPanel();

    setTitle(ResourceMgr.getString("TxtDriverEditorWindowTitle"));
    setModal(true);
    setName("DriverEditorDialog");
    addWindowListener(new WindowAdapter()
    {
      public void windowClosing(WindowEvent evt)
      {
        closeDialog(evt);
      }
    });


    driverListPanel.setBorder(new EtchedBorder());
    getContentPane().add(driverListPanel, BorderLayout.CENTER);

    buttonPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));

    okButton.setFont(null);
    okButton.addActionListener(this);
    buttonPanel.add(okButton);

    cancelButton.addActionListener(this);
    buttonPanel.add(cancelButton);

    getContentPane().add(buttonPanel, BorderLayout.SOUTH);

    dummyPanel.setMaximumSize(new Dimension(2, 2));
    dummyPanel.setMinimumSize(new Dimension(1, 1));
    dummyPanel.setPreferredSize(new Dimension(2, 2));
    getContentPane().add(dummyPanel, BorderLayout.NORTH);

  }

  public void actionPerformed(ActionEvent e)
  {
    if (e.getSource() == okButton)
    {
      okButtonActionPerformed(e);
    }
    else if (e.getSource() == cancelButton || e.getActionCommand().equals(escAction.getActionName()))
    {
      cancelButtonActionPerformed(e);
    }
  }
  private void cancelButtonActionPerformed(ActionEvent evt)
  {
    this.cancelled = true;
    this.closeDialog();
  }

  /**
   *  Sets the driver name to be pre-selected in the list
   */
  public void setDriverName(String name)
  {
    if (this.driverListPanel != null && name != null)
    {
      this.driverListPanel.selectDriver(name);
    }
  }
  
  private void okButtonActionPerformed(ActionEvent evt)
  {
    try
    {
      this.driverListPanel.saveItem();
      this.cancelled = false;
      this.closeDialog();
    }
    catch (Exception e)
    {
      e.printStackTrace();
    }
  }

  public boolean isCancelled() { return this.cancelled; }

  /** Closes the dialog */
  private void closeDialog(WindowEvent evt)
  {
    this.closeDialog();
  }

  public void closeDialog()
  {
    Settings.getInstance().storeWindowSize(this);
    driverListPanel.saveSettings();
    setVisible(false);
    dispose();
  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.