package com.hackerdude.apps.sqlide.dialogs; import java.awt.BorderLayout; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import com.hackerdude.apps.sqlide.xml.HostConfigFactory; import com.hackerdude.apps.sqlide.xml.hostconfig.SqlideHostConfig; /** * Panel that allows the user to specify the connection parameters. * @author David Martinez * @version 1.0 */ public class ConnectionParametersPanel extends JPanel { public final Action ACTION_NEW_CONNECTION = new NewConnectionAction(); public final Action ACTION_DELETE_CONNECTION = new DeleteConnectionAction(); ConnPropertiesTableModel connModel = null; SqlideHostConfig SqlideHostConfig; private BorderLayout borderLayout1 = new BorderLayout(); private JButton btnDeleteConnection = new JButton(ACTION_DELETE_CONNECTION); private GridBagLayout gridBagLayout1 = new GridBagLayout(); private JPanel jPanel3 = new JPanel(); private JPanel jPanel2 = new JPanel(); private JTable tblConnectionParams = new JTable(); private JButton btnNewConnection = new JButton(ACTION_NEW_CONNECTION); private JPanel pnlConnection = new JPanel(); private JScrollPane jScrollPane1 = new JScrollPane(); private JLabel lblConnection = new JLabel(); private BorderLayout borderLayout8 = new BorderLayout(); private BorderLayout borderLayout7 = new BorderLayout(); public ConnectionParametersPanel() { try { jbInit(); } catch(Exception e) { e.printStackTrace(); } } private void jbInit() throws Exception { jPanel3.setLayout(gridBagLayout1); btnDeleteConnection.setText("Delete"); btnDeleteConnection.setMnemonic('D'); this.setLayout(borderLayout1); jPanel2.setLayout(borderLayout8); btnNewConnection.setMnemonic('N'); btnNewConnection.setText("New"); pnlConnection.setLayout(borderLayout7); lblConnection.setText("Connection Parameters"); pnlConnection.add(lblConnection, BorderLayout.NORTH); pnlConnection.add(jPanel2, BorderLayout.SOUTH); pnlConnection.add(jPanel3, BorderLayout.EAST); jPanel3.add(btnNewConnection, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0 ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(5, 5, 0, 5), 12, 0)); jPanel3.add(btnDeleteConnection, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0 ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 5, 143, 5), 0, 0)); pnlConnection.add(jScrollPane1, BorderLayout.CENTER); jScrollPane1.getViewport().add(tblConnectionParams, null); this.add(pnlConnection, BorderLayout.CENTER); } class NewConnectionAction extends AbstractAction { public void actionPerformed(ActionEvent e) { connModel.addRow(); } } class DeleteConnectionAction extends AbstractAction { public void actionPerformed(ActionEvent e) { connModel.removeRow(tblConnectionParams.getSelectedRow()); } } public void setSqlideHostConfig(SqlideHostConfig databaseSpec) { this.SqlideHostConfig = databaseSpec; } public void readFromModel() { connModel = new ConnPropertiesTableModel(HostConfigFactory.connectionPropertiesToMap(SqlideHostConfig.getJdbc().getConnectionProperties()), "Parameter"); tblConnectionParams.setModel(connModel); } /** * TODO: Apply the data model for connection Properties */ public void applyToModel() { SqlideHostConfig.getJdbc().setConnectionProperties(HostConfigFactory.mapToConnectionProperties(connModel.getProperties())); } }