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

net.sourceforge.squirrel_sql.plugins.dbdiff.prefs.DBDiffPreferencesPanel Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (C) 2011 Rob Manning
 * [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
 */

package net.sourceforge.squirrel_sql.plugins.dbdiff.prefs;

import java.awt.Component;
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.ButtonGroup;
import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.border.Border;
import javax.swing.border.CompoundBorder;
import javax.swing.border.EmptyBorder;
import javax.swing.border.TitledBorder;

import net.sourceforge.squirrel_sql.client.util.IOptionPanel;
import net.sourceforge.squirrel_sql.fw.util.StringManager;
import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory;

public class DBDiffPreferencesPanel extends JPanel implements IOptionPanel
{

	/**
	 * serialVersionUID
	 */
	private static final long serialVersionUID = 1L;

	DBDiffPreferenceBean _prefs = null;

	IPluginPreferencesManager pluginPreferencesManager = null;

	JRadioButton tabularPresentationRadioButton = null;

	JRadioButton sideBySidePresentationRadioButton = null;

	JRadioButton internalDiffWindowRadioButton = null;

	JRadioButton externalDiffToolRadionButton = null;

	JLabel externalDiffToolCommandLabel = null;

	JTextField externalDiffToolCommandTextField = null;

	JCheckBox sortColumnsCheckBox = null; 
	
	/** Internationalized strings for this class. */
	private static final StringManager s_stringMgr =
		StringManagerFactory.getStringManager(DBDiffPreferencesPanel.class);

	public DBDiffPreferencesPanel(IPluginPreferencesManager pluginPreferencesManager)
	{

		super();
		this.pluginPreferencesManager = pluginPreferencesManager;
		_prefs = (DBDiffPreferenceBean) pluginPreferencesManager.getPreferences();
		createGUI();
		loadData();
	}

	private void createGUI()
	{
		this.setLayout(new GridBagLayout());
		final GridBagConstraints c = new GridBagConstraints();
		c.gridx = 0; // Column 0
		c.gridy = 0; // Row 0
		c.fill = GridBagConstraints.BOTH;
		c.weightx = 1;
		c.weighty = .40;
		add(createTopPanel(), c);

	}

	private JPanel createTopPanel()
	{
		final JPanel result = new JPanel(new GridBagLayout());
		// i18n[DBDiffPreferencesPanel.presentationOptionsBorderLabel=Presentation Options]
		final String tranferOptionsBorderLabel =
			s_stringMgr.getString("DBDiffPreferencesPanel.presentationOptionsBorderLabel");
		result.setBorder(getTitledBorder(tranferOptionsBorderLabel));
		final String cbLabel =
			s_stringMgr.getString("DBDiffPreferencesPanel.tabularPresentationRadioButtonLabel");
		tabularPresentationRadioButton = new JRadioButton(cbLabel);

		addSideBySidePresentationRadionButton(result, 0, 0);

		final ButtonGroup tabularsidebyside = new ButtonGroup();
		tabularsidebyside.add(tabularPresentationRadioButton);
		tabularsidebyside.add(sideBySidePresentationRadioButton);

		addInternalDiffWindowRadionButton(result, 0, 1);
		addExternalDiffToolRadioButton(result, 0, 2);

		final ButtonGroup internalExternalButtonGroup = new ButtonGroup();
		internalExternalButtonGroup.add(internalDiffWindowRadioButton);
		internalExternalButtonGroup.add(externalDiffToolRadionButton);

		addexternalDiffToolCommandLabel(result, 0, 3);
		addExternalDiffToolCommandTextField(result, 1, 3);

		addSortColumnsCheckBoxLabel(result, 0, 4);
		
		addTabularPresentationRadioButton(result, 0, 5);

		return result;
	}

	private void addSortColumnsCheckBoxLabel(JPanel panel, int col, int row)
	{
		final GridBagConstraints c = new GridBagConstraints();
		c.gridx = col;
		c.gridy = row;
		c.gridwidth = 2; // Span across two columns
		c.insets = new Insets(5, 20, 0, 0);
		c.anchor = GridBagConstraints.WEST;
		final String sortColumnsCheckBoxLabel = 
			s_stringMgr.getString("DBDiffPreferencesPanel.sortColumnsForSideBySideComparisonLabel");
		final String sortColumnsCheckBoxToolTip =
			s_stringMgr.getString("DBDiffPreferencesPanel.sortColumnsForSideBySideComparisonToolTip");
		sortColumnsCheckBox = new JCheckBox(sortColumnsCheckBoxLabel);
		sortColumnsCheckBox.setToolTipText(sortColumnsCheckBoxToolTip);
		panel.add(sortColumnsCheckBox, c);
	}

	private void addTabularPresentationRadioButton(JPanel panel, int col, int row)
	{
		final GridBagConstraints c = new GridBagConstraints();
		c.gridx = col;
		c.gridy = row;
		c.gridwidth = 2; // Span across two columns
		c.anchor = GridBagConstraints.WEST;
		final String cbToolTipText =
			s_stringMgr.getString("DBDiffPreferencesPanel.tabularPresentationRadioButtonToolTipText");
		tabularPresentationRadioButton.setToolTipText(cbToolTipText);
		tabularPresentationRadioButton.addActionListener(new ActionListener()
		{

			@Override
			public void actionPerformed(ActionEvent e)
			{
				if (e.getSource() == tabularPresentationRadioButton)
				{
					internalDiffWindowRadioButton.setEnabled(false);
					externalDiffToolRadionButton.setEnabled(false);
					externalDiffToolCommandLabel.setEnabled(false);
					externalDiffToolCommandTextField.setEnabled(false);
				}

			}

		});
		panel.add(tabularPresentationRadioButton, c);
	}

	private void addSideBySidePresentationRadionButton(JPanel panel, int col, int row)
	{
		final GridBagConstraints c = new GridBagConstraints();
		c.gridx = col;
		c.gridy = row;
		c.gridwidth = 2; // Span across two columns
		c.insets = new Insets(10, 0, 0, 0);
		c.anchor = GridBagConstraints.WEST;
		final String cbLabelStr =
			s_stringMgr.getString("DBDiffPreferencesPanel.sideBySidePresentationRadionButtonLabel");
		final String toolTipText =
			s_stringMgr.getString("DBDiffPreferencesPanel.sideBySidePresentationRadionButtonToolTip");
		sideBySidePresentationRadioButton = new JRadioButton(cbLabelStr);
		sideBySidePresentationRadioButton.setToolTipText(toolTipText);
		sideBySidePresentationRadioButton.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				if (e.getSource() == sideBySidePresentationRadioButton)
				{
					if (!internalDiffWindowRadioButton.isSelected() && !externalDiffToolRadionButton.isSelected())
					{
						internalDiffWindowRadioButton.setSelected(true);
					}
					internalDiffWindowRadioButton.setEnabled(true);
					externalDiffToolRadionButton.setEnabled(true);
					externalDiffToolCommandLabel.setEnabled(true);
					externalDiffToolCommandTextField.setEnabled(true);
				}
			}
		});
		panel.add(sideBySidePresentationRadioButton, c);
	}

	private void addExternalDiffToolRadioButton(JPanel panel, int col, int row)
	{
		final GridBagConstraints c = new GridBagConstraints();
		c.gridx = col;
		c.gridy = row;
		c.gridwidth = 2; // Span across two columns
		c.insets = new Insets(5, 20, 0, 0);
		c.anchor = GridBagConstraints.WEST;
		final String cbLabelStr =
			s_stringMgr.getString("DBDiffPreferencesPanel.externalDiffToolRadionButtonLabel");
		final String toolTipText =
			s_stringMgr.getString("DBDiffPreferencesPanel.externalDiffToolRadionButtonToolTip");
		externalDiffToolRadionButton = new JRadioButton(cbLabelStr);
		externalDiffToolRadionButton.setToolTipText(toolTipText);
		externalDiffToolRadionButton.addActionListener(new ActionListener()
		{
			@Override
			public void actionPerformed(ActionEvent e)
			{
				if (e.getSource() == externalDiffToolRadionButton)
				{
					externalDiffToolCommandLabel.setEnabled(true);
					externalDiffToolCommandTextField.setEnabled(true);
				}
			}

		});
		panel.add(externalDiffToolRadionButton, c);
	}

	private void addInternalDiffWindowRadionButton(JPanel panel, int col, int row)
	{
		final GridBagConstraints c = new GridBagConstraints();
		c.gridx = col;
		c.gridy = row;
		c.gridwidth = 2; // Span across two columns
		c.insets = new Insets(5, 20, 0, 0);
		c.anchor = GridBagConstraints.WEST;
		final String cbLabelStr =
			s_stringMgr.getString("DBDiffPreferencesPanel.internalDiffWindowRadionButtonLabel");
		final String toolTipText =
			s_stringMgr.getString("DBDiffPreferencesPanel.internalDiffWindowRadionButtonToolTip");
		internalDiffWindowRadioButton = new JRadioButton(cbLabelStr);
		internalDiffWindowRadioButton.setToolTipText(toolTipText);
		internalDiffWindowRadioButton.addActionListener(new ActionListener()
		{
			@Override
			public void actionPerformed(ActionEvent e)
			{
				if (e.getSource() == internalDiffWindowRadioButton)
				{
					externalDiffToolCommandLabel.setEnabled(false);
					externalDiffToolCommandTextField.setEditable(false);
				}
			}
		});
		panel.add(internalDiffWindowRadioButton, c);
	}

	private void addexternalDiffToolCommandLabel(JPanel panel, int col, int row)
	{
		final GridBagConstraints c = new GridBagConstraints();
		c.gridx = col;
		c.gridy = row;
		c.insets = new Insets(5, 45, 0, 0);
		final String commitLabel = s_stringMgr.getString("DBDiffPreferencesPanel.externalDiffToolCommandLabel");
		externalDiffToolCommandLabel = new JLabel(commitLabel);
		externalDiffToolCommandLabel.setHorizontalAlignment(SwingConstants.RIGHT);
		final String commitlabelToolTipText =
			s_stringMgr.getString("DBDiffPreferencesPanel.externalDiffToolCommandToolTip");
		externalDiffToolCommandLabel.setToolTipText(commitlabelToolTipText);
		panel.add(externalDiffToolCommandLabel, c);
	}

	private void addExternalDiffToolCommandTextField(JPanel panel, int col, int row)
	{
		final GridBagConstraints c = new GridBagConstraints();
		c.gridx = col;
		c.gridy = row;
		c.ipadx = 40; // Increases component width by 20 pixels
		c.insets = new Insets(5, 5, 0, 0);
		c.anchor = GridBagConstraints.WEST;
		externalDiffToolCommandTextField = new JTextField(10);
		externalDiffToolCommandTextField.setHorizontalAlignment(SwingConstants.LEFT);
		final String commitlabelToolTipText =
			s_stringMgr.getString("DBDiffPreferencesPanel.externalDiffToolCommandToolTip");
		externalDiffToolCommandTextField.setToolTipText(commitlabelToolTipText);
		panel.add(externalDiffToolCommandTextField, c);
	}

	private Border getTitledBorder(String title)
	{
		final CompoundBorder border =
			new CompoundBorder(new EmptyBorder(10, 10, 10, 10), new TitledBorder(title));
		return border;
	}

	private void loadData()
	{
		if (_prefs.isUseTabularDiffPresenation())
		{
			tabularPresentationRadioButton.setSelected(true);
		}
		else
		{
			sideBySidePresentationRadioButton.setSelected(true);
			if (_prefs.isUseExternalGraphicalDiffTool())
			{
				externalDiffToolRadionButton.setSelected(true);
				externalDiffToolCommandLabel.setEnabled(true);
				externalDiffToolCommandTextField.setEnabled(true);
			}
			else
			{
				internalDiffWindowRadioButton.setSelected(true);
				externalDiffToolCommandLabel.setEnabled(false);
				externalDiffToolCommandTextField.setEnabled(false);
			}
		}

	}

	private void save()
	{
		_prefs.setUseTabularDiffPresenation(tabularPresentationRadioButton.isSelected());
		_prefs.setUseExternalGraphicalDiffTool(externalDiffToolRadionButton.isSelected());
		if (externalDiffToolRadionButton.isSelected())
		{
			_prefs.setGraphicalToolCommand(externalDiffToolCommandTextField.getText());
		}
		_prefs.setSortColumnsForSideBySideComparison(sortColumnsCheckBox.isSelected());
		
		pluginPreferencesManager.savePrefs();
	}

	/**
	 * @see net.sourceforge.squirrel_sql.client.util.IOptionPanel#applyChanges()
	 */
	@Override
	public void applyChanges()
	{
		save();
	}

	/**
	 * @see net.sourceforge.squirrel_sql.client.util.IOptionPanel#getPanelComponent()
	 */
	@Override
	public Component getPanelComponent()
	{
		return this;
	}

	/**
	 * @see net.sourceforge.squirrel_sql.client.util.IOptionPanel#getHint()
	 */
	@Override
	public String getHint()
	{
		// i18n[DBDiffPreferencesPanel.hint=DB Diff]
		return s_stringMgr.getString("DBDiffPreferencesPanel.hint");
	}

	/**
	 * @see net.sourceforge.squirrel_sql.client.util.IOptionPanel#getTitle()
	 */
	@Override
	public String getTitle()
	{
		// i18n[DBDiffPreferencesPanel.title=DB Diff]
		return s_stringMgr.getString("DBDiffPreferencesPanel.title");
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy