/* * Copyright 2007 - 2017 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.sf.jailer.ui; import java.awt.Color; import java.awt.event.ActionEvent; import java.net.URI; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JOptionPane; import net.sf.jailer.ui.DbConnectionDialog.ConnectionInfo; /** * "Connect with DB" dialog. * * @author Ralf Wisser */ public class DbConnectionDetailsEditor extends javax.swing.JDialog { /** * <code>true</code> if valid connection is available. */ private boolean isOk = false; /** * The connection to edit. */ private ConnectionInfo ci; /** * Opens detail editor for a connection. * * @param ci the connection * @return <code>true</code> if connection has been edited */ public boolean edit(ConnectionInfo ci) { this.ci = ci; alias.setText(ci.alias); dbUrl.setText(ci.url); user.setText(ci.user); password.setText(ci.password); driverClass.setText(ci.driverClass); jar1.setText(ci.jar1); jar2.setText(ci.jar2); setVisible(true); return isOk; } /** Creates new form DbConnectionDialog * @param forNew */ public DbConnectionDetailsEditor(java.awt.Frame parent, final String jdbcHelpURL, boolean forNew) { super(parent, true); initComponents(); if (forNew) { UIUtil.replace(infoBarLabel, new InfoBar("New Connection", "Enter connection credentials for the database.\n" + "Replace placeholders (\"<...>\") with appropriate URL parameters.")); } else { UIUtil.replace(infoBarLabel, new InfoBar("Edit Connection", "Edit connection credentials for the database.")); } setLocation(120, 170); loadButton1.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(ActionEvent e) { String fn = UIUtil.choseFile(null, ".", "Jdbc Driver", ".jar", DbConnectionDetailsEditor.this, true, true, false); if (fn != null) { jar1.setText(fn); } } }); loadButton2.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(ActionEvent e) { String fn = UIUtil.choseFile(null, ".", "Jdbc Driver", ".jar", DbConnectionDetailsEditor.this, true, true, false); if (fn != null) { jar2.setText(fn); } } }); helpjdbc.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseEntered(java.awt.event.MouseEvent evt) { helpjdbc.setEnabled(false); } public void mouseExited(java.awt.event.MouseEvent evt) { helpjdbc.setEnabled(true); } }); helpjdbc.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { try { BrowserLauncher.openURL(new URI(jdbcHelpURL)); } catch (Exception e) { UIUtil.showException(DbConnectionDetailsEditor.this, "Error", e); } } }); helpjdbc.setIcon(helpIcon); helpjdbc.setText(null); loadButton1.setIcon(loadIcon); loadButton2.setIcon(loadIcon); pack(); setSize(Math.max(570, getWidth()), getHeight()); UIUtil.initPeer(); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { java.awt.GridBagConstraints gridBagConstraints; jPanel1 = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); jLabel5 = new javax.swing.JLabel(); jLabel6 = new javax.swing.JLabel(); jLabel7 = new javax.swing.JLabel(); jLabel8 = new javax.swing.JLabel(); jLabel9 = new javax.swing.JLabel(); jar1 = new javax.swing.JTextField(); jar2 = new javax.swing.JTextField(); driverClass = new javax.swing.JTextField(); dbUrl = new javax.swing.JTextField(); user = new javax.swing.JTextField(); jPanel2 = new javax.swing.JPanel(); okButton = new javax.swing.JButton(); cancelButton = new javax.swing.JButton(); testConnectionButton = new javax.swing.JButton(); jLabel11 = new javax.swing.JLabel(); password = new javax.swing.JPasswordField(); helpjdbc = new javax.swing.JLabel(); alias = new javax.swing.JTextField(); infoBarLabel = new javax.swing.JLabel(); loadButton1 = new javax.swing.JButton(); loadButton2 = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("Database Connection"); getContentPane().setLayout(new java.awt.CardLayout()); jPanel1.setLayout(new java.awt.GridBagLayout()); jLabel1.setText(" Alias "); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 10; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; jPanel1.add(jLabel1, gridBagConstraints); jLabel2.setText(" JDBC Driver JAR "); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 20; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; jPanel1.add(jLabel2, gridBagConstraints); jLabel3.setText(" secondary JAR "); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 40; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; jPanel1.add(jLabel3, gridBagConstraints); jLabel4.setText(" "); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridy = 15; jPanel1.add(jLabel4, gridBagConstraints); jLabel5.setText(" "); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 45; jPanel1.add(jLabel5, gridBagConstraints); jLabel6.setText(" Driver-Class"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 50; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; jPanel1.add(jLabel6, gridBagConstraints); jLabel7.setText(" DB-URL"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 60; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; jPanel1.add(jLabel7, gridBagConstraints); jLabel8.setText(" User"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 70; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; jPanel1.add(jLabel8, gridBagConstraints); jLabel9.setText(" Password"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 80; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; jPanel1.add(jLabel9, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 20; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.weightx = 1.0; jPanel1.add(jar1, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 40; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.weightx = 1.0; jPanel1.add(jar2, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 50; gridBagConstraints.gridwidth = 3; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.weightx = 1.0; jPanel1.add(driverClass, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 60; gridBagConstraints.gridwidth = 3; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.weightx = 1.0; jPanel1.add(dbUrl, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 70; gridBagConstraints.gridwidth = 3; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.weightx = 1.0; jPanel1.add(user, gridBagConstraints); jPanel2.setLayout(new java.awt.GridBagLayout()); okButton.setText(" Ok "); okButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { okButtonActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 0; gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTHEAST; gridBagConstraints.insets = new java.awt.Insets(4, 4, 0, 4); jPanel2.add(okButton, gridBagConstraints); cancelButton.setText(" Cancel "); cancelButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { cancelButtonActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 0; gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTHEAST; gridBagConstraints.insets = new java.awt.Insets(4, 0, 0, 0); jPanel2.add(cancelButton, gridBagConstraints); testConnectionButton.setText(" Test Connection "); testConnectionButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { testConnectionButtonActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTHEAST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(4, 4, 0, 12); jPanel2.add(testConnectionButton, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 100; gridBagConstraints.gridwidth = 4; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.weightx = 1.0; gridBagConstraints.weighty = 1.0; jPanel1.add(jPanel2, gridBagConstraints); jLabel11.setText(" "); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 10; gridBagConstraints.gridy = 10; jPanel1.add(jLabel11, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 80; gridBagConstraints.gridwidth = 3; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.weighty = 1.0; jPanel1.add(password, gridBagConstraints); helpjdbc.setText("help"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 20; gridBagConstraints.insets = new java.awt.Insets(0, 4, 0, 4); jPanel1.add(helpjdbc, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 10; gridBagConstraints.gridwidth = 3; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.weightx = 1.0; jPanel1.add(alias, gridBagConstraints); infoBarLabel.setText("info bar"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; gridBagConstraints.gridwidth = 11; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.insets = new java.awt.Insets(0, 0, 12, 0); jPanel1.add(infoBarLabel, gridBagConstraints); loadButton1.setText(" Browse.."); loadButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { loadButton1ActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 3; gridBagConstraints.gridy = 20; jPanel1.add(loadButton1, gridBagConstraints); loadButton2.setText(" Browse.."); loadButton2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { loadButton2ActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 3; gridBagConstraints.gridy = 40; jPanel1.add(loadButton2, gridBagConstraints); getContentPane().add(jPanel1, "card2"); pack(); }// </editor-fold>//GEN-END:initComponents private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okButtonActionPerformed if (fillConnectionInfo()) { isOk = true; setVisible(false); } }//GEN-LAST:event_okButtonActionPerformed @SuppressWarnings("deprecation") private boolean fillConnectionInfo() { boolean ok = true; Color red = new Color(255, 200, 180); if (alias.getText().trim().length() == 0) { alias.setBackground(red); ok = false; } if (driverClass.getText().trim().length() == 0) { driverClass.setBackground(red); ok = false; } if (dbUrl.getText().trim().length() == 0) { dbUrl.setBackground(red); ok = false; } if (ok) { ci.alias = alias.getText().trim(); ci.driverClass = driverClass.getText().trim(); ci.jar1 = jar1.getText().trim(); ci.jar2 = jar2.getText().trim(); ci.url = dbUrl.getText().trim(); ci.user = user.getText().trim(); ci.password = password.getText().trim(); } return ok; } private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelButtonActionPerformed setVisible(false); }//GEN-LAST:event_cancelButtonActionPerformed private void testConnectionButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_testConnectionButtonActionPerformed if (fillConnectionInfo()) { if (DbConnectionDialog.testConnection(this, ci)) { JOptionPane.showMessageDialog(this, "Successfully established connection.", "Connected", JOptionPane.INFORMATION_MESSAGE); } } }//GEN-LAST:event_testConnectionButtonActionPerformed private void loadButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_loadButton1ActionPerformed }//GEN-LAST:event_loadButton1ActionPerformed private void loadButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_loadButton2ActionPerformed }//GEN-LAST:event_loadButton2ActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables public javax.swing.JTextField alias; private javax.swing.JButton cancelButton; public javax.swing.JTextField dbUrl; public javax.swing.JTextField driverClass; private javax.swing.JLabel helpjdbc; private javax.swing.JLabel infoBarLabel; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel11; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JLabel jLabel7; private javax.swing.JLabel jLabel8; private javax.swing.JLabel jLabel9; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JTextField jar1; private javax.swing.JTextField jar2; private javax.swing.JButton loadButton1; private javax.swing.JButton loadButton2; private javax.swing.JButton okButton; private javax.swing.JPasswordField password; private javax.swing.JButton testConnectionButton; public javax.swing.JTextField user; // End of variables declaration//GEN-END:variables private Icon helpIcon; private Icon loadIcon; { String dir = "/net/sf/jailer/ui/resource"; // load images try { helpIcon = new ImageIcon(getClass().getResource(dir + "/help.png")); } catch (Exception e) { e.printStackTrace(); } try { loadIcon = new ImageIcon(getClass().getResource(dir + "/load.png")); } catch (Exception e) { e.printStackTrace(); } } private static final long serialVersionUID = -492511696901313920L; }