All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.sourceforge.squirrel_sql.plugins.sqlval.LogonDialog Maven / Gradle / Ivy

package net.sourceforge.squirrel_sql.plugins.sqlval;
/*
 * Copyright (C) 2002-2003 Colin Bell
 * [email protected]
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JPanel;

import net.sourceforge.squirrel_sql.fw.gui.GUIUtils;
import net.sourceforge.squirrel_sql.fw.util.BaseException;
import net.sourceforge.squirrel_sql.fw.util.StringManager;
import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory;
import net.sourceforge.squirrel_sql.fw.util.log.ILogger;
import net.sourceforge.squirrel_sql.fw.util.log.LoggerController;
import net.sourceforge.squirrel_sql.plugins.sqlval.cmd.ConnectCommand;
import net.sourceforge.squirrel_sql.plugins.sqlval.cmd.DisconnectCommand;

import net.sourceforge.squirrel_sql.client.session.ISession;

public class LogonDialog extends JDialog
{
	private static final StringManager s_stringMgr =
		StringManagerFactory.getStringManager(LogonDialog.class);


	/** Logger for this class. */
	private final static ILogger s_log =
		LoggerController.createLogger(LogonDialog.class);

	/** Current session. */
	private final ISession _session;

	private final WebServicePreferences _prefs;

	private final WebServiceSessionProperties _sessionProps;

	/** Application preferences panel. */
	private AppPreferencesPanel _appPrefsPnl;

	/** Confirmation panel. */
	private SessionSettingsPanel _confirmPnl;

	public LogonDialog(ISession session, WebServicePreferences prefs,
				WebServiceSessionProperties sessionProps)
	{
		// i18n[sqlval.logon=SQL Validation Logon]
		super(session.getApplication().getMainFrame(), s_stringMgr.getString("sqlval.logon"), true);

		if (session == null)
		{
			throw new IllegalArgumentException("ISession = null");
		}
		if (prefs == null)
		{
			throw new IllegalArgumentException("WebServicePreferences = null");
		}
		if (sessionProps == null)
		{
			throw new IllegalArgumentException("WebServiceSessionProperties = null");
		}

		_session = session;
		_prefs = prefs;
		_sessionProps = sessionProps;

		createGUI();

		// Close existing session.
		try
		{
			new DisconnectCommand(_session, _prefs, _sessionProps).execute();
		}
		catch (BaseException ex)
		{
			s_log.error(ex);
		}
	}

	/**
	 * Close this dialog.
	 */
	private void performClose()
	{
		dispose();
	}

	/**
	 * OK button pressed so logon to web service.
	 */
	private void performOk()
	{
		_appPrefsPnl.save();
		_confirmPnl.save();

		// Connect.
		ConnectCommand cmd = new ConnectCommand(_session, _prefs, _sessionProps);
		try
		{
			cmd.execute();
			dispose();
		}
		catch (Throwable th)
		{
			final String msg = "Error occured when talking to the web service";
			s_log.error(msg, th);
			_session.getApplication().showErrorDialog(msg, th);
		}
	}

	/**
	 * Create this sheets user interface.
	 */
	private void createGUI()
	{
		setDefaultCloseOperation(DISPOSE_ON_CLOSE);

		final JPanel contentPane = new JPanel(new GridBagLayout());
		contentPane.setBorder(BorderFactory.createEmptyBorder());
		setContentPane(contentPane);

		final GridBagConstraints gbc = new GridBagConstraints();
		gbc.fill = GridBagConstraints.BOTH;
		gbc.insets = new Insets(1, 4, 1, 4);
		gbc.weightx = 1;

		gbc.weighty = 1;
		gbc.gridx = 0;
		gbc.gridy = 0;
		_appPrefsPnl = new AppPreferencesPanel(_prefs);
		contentPane.add(_appPrefsPnl, gbc);

		gbc.weighty = 0;
		++gbc.gridy;
		_confirmPnl = new SessionSettingsPanel(_prefs, _sessionProps);
		contentPane.add(_confirmPnl, gbc);

		++gbc.gridy;
		contentPane.add(createButtonsPanel(), gbc);

		pack();
		GUIUtils.centerWithinParent(this);
		setResizable(true);
	}

	/**
	 * Create panel at bottom containing the buttons.
	 * 
	 * @return	New panel.
	 */
	private JPanel createButtonsPanel()
	{
		JPanel pnl = new JPanel();

		// i18n[sqlval.logonOk=OK]
		JButton okBtn = new JButton(s_stringMgr.getString("sqlval.logonOk"));
		okBtn.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent evt)
			{
				performOk();
			}
		});
		// i18n[sqlval.logonClose=Close]
		JButton closeBtn = new JButton(s_stringMgr.getString("sqlval.logonClose"));
		closeBtn.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent evt)
			{
				performClose();
			}
		});

		GUIUtils.setJButtonSizesTheSame(new JButton[] { okBtn, closeBtn });

		pnl.add(okBtn);
		pnl.add(closeBtn);

		getRootPane().setDefaultButton(okBtn);

		return pnl;
	}
}





© 2015 - 2025 Weber Informatics LLC | Privacy Policy