/*
|
* CDDL HEADER START
|
*
|
* The contents of this file are subject to the terms of the
|
* Common Development and Distribution License, Version 1.0 only
|
* (the "License"). You may not use this file except in compliance
|
* with the License.
|
*
|
* You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
|
* or http://forgerock.org/license/CDDLv1.0.html.
|
* See the License for the specific language governing permissions
|
* and limitations under the License.
|
*
|
* When distributing Covered Code, include this CDDL HEADER in each
|
* file and include the License file at legal-notices/CDDLv1_0.txt.
|
* If applicable, add the following below this CDDL HEADER, with the
|
* fields enclosed by brackets "[]" replaced with your own identifying
|
* information:
|
* Portions Copyright [yyyy] [name of copyright owner]
|
*
|
* CDDL HEADER END
|
*
|
*
|
* Copyright 2010 Sun Microsystems, Inc.
|
* Portions copyright 2011 ForgeRock AS
|
*/
|
|
package org.forgerock.opendj.virtual;
|
|
import java.awt.Font;
|
import java.awt.event.*;
|
import java.sql.SQLException;
|
|
import javax.swing.*;
|
import javax.swing.UIManager.LookAndFeelInfo;
|
import javax.swing.border.Border;
|
import javax.swing.border.EtchedBorder;
|
|
import org.forgerock.opendj.ldap.Connection;
|
import org.forgerock.opendj.ldap.ErrorResultException;
|
import org.forgerock.opendj.ldap.ErrorResultIOException;
|
import org.forgerock.opendj.ldap.LDAPConnectionFactory;
|
import org.forgerock.opendj.ldap.SearchResultReferenceIOException;
|
|
public class GUI implements ActionListener{
|
//Definition of global values and items that are part of the GUI.
|
static JFrame frame = new JFrame("Login Screen");
|
|
private JPanel totalGUI;
|
private JLabel label, label_1, label_2, label_3, label_4, label_5, label_6, lblBasedn, label_8, label_9, lblDirectory, lblDatabase;
|
private JPanel buttonPane;
|
private JButton btnLogin, btnCancel;
|
private Border loweredetched;
|
|
//login pane Normal
|
private JPanel loginPane;
|
private JTextField txtHost, txtPort, txtDatabaseName, txtUsername;
|
private JPasswordField txtPassword;
|
|
//login pane Ldap
|
private JPanel loginPaneLdap;
|
private JTextField txtHostLdap, txtPortLdap,txtBaseDN,txtUsernameLdap;
|
private JPasswordField txtPasswordLdap;
|
|
public JPanel createContentPane (){
|
totalGUI = new JPanel();
|
totalGUI.setLayout(null);
|
|
loweredetched = BorderFactory.createEtchedBorder(EtchedBorder.LOWERED);
|
|
buttonPane = new JPanel();
|
buttonPane.setLayout(null);
|
buttonPane.setBounds(295, 221, 284, 30);
|
totalGUI.add(buttonPane);
|
|
btnLogin = new JButton("Login");
|
btnLogin.setBounds(14, 0, 120, 30);
|
btnLogin.addActionListener(this);
|
buttonPane.add(btnLogin);
|
|
btnCancel = new JButton("Cancel");
|
btnCancel.setBounds(148, 0, 120, 30);
|
btnCancel.addActionListener(this);
|
buttonPane.add(btnCancel);
|
|
loginPane = new JPanel();
|
loginPane.setLayout(null);
|
loginPane.setBounds(6, 6, 285, 203);
|
loginPane.setBorder(loweredetched);
|
totalGUI.add(loginPane);
|
|
label = new JLabel("Host");
|
label.setBounds(11, 43, 99, 30);
|
loginPane.add(label);
|
|
txtHost = new JTextField();
|
txtHost.setColumns(10);
|
txtHost.setBounds(114, 43, 165, 30);
|
loginPane.add(txtHost);
|
|
label_1 = new JLabel("Port");
|
label_1.setBounds(11, 74, 99, 30);
|
loginPane.add(label_1);
|
|
txtPort = new JTextField();
|
txtPort.setColumns(10);
|
txtPort.setBounds(114, 73, 165, 30);
|
loginPane.add(txtPort);
|
|
label_2 = new JLabel("DatabaseName");
|
label_2.setBounds(11, 104, 99, 30);
|
loginPane.add(label_2);
|
|
txtDatabaseName = new JTextField();
|
txtDatabaseName.setColumns(10);
|
txtDatabaseName.setBounds(114, 103, 165, 30);
|
loginPane.add(txtDatabaseName);
|
|
label_3 = new JLabel("Username");
|
label_3.setBounds(11, 135, 99, 30);
|
loginPane.add(label_3);
|
|
txtUsername = new JTextField();
|
txtUsername.setColumns(10);
|
txtUsername.setBounds(114, 133, 165, 30);
|
loginPane.add(txtUsername);
|
|
label_4 = new JLabel("Password");
|
label_4.setBounds(11, 166, 99, 30);
|
loginPane.add(label_4);
|
|
txtPassword = new JPasswordField();
|
txtPassword.setBounds(114, 163, 165, 30);
|
loginPane.add(txtPassword);
|
|
loginPaneLdap = new JPanel();
|
loginPaneLdap.setLayout(null);
|
loginPaneLdap.setBounds(295, 6, 285, 203);
|
loginPaneLdap.setBorder(loweredetched);
|
totalGUI.add(loginPaneLdap);
|
|
label_5 = new JLabel("Host");
|
label_5.setHorizontalAlignment(SwingConstants.LEFT);
|
label_5.setBounds(11, 43, 90, 30);
|
loginPaneLdap.add(label_5);
|
|
txtHostLdap = new JTextField();
|
txtHostLdap.setColumns(10);
|
txtHostLdap.setBounds(114, 43, 165, 30);
|
loginPaneLdap.add(txtHostLdap);
|
|
label_6 = new JLabel("Port");
|
label_6.setHorizontalAlignment(SwingConstants.LEFT);
|
label_6.setBounds(11, 74, 90, 30);
|
loginPaneLdap.add(label_6);
|
|
txtPortLdap = new JTextField();
|
txtPortLdap.setColumns(10);
|
txtPortLdap.setBounds(114, 73, 165, 30);
|
loginPaneLdap.add(txtPortLdap);
|
|
lblBasedn = new JLabel("BaseDN");
|
lblBasedn.setHorizontalAlignment(SwingConstants.LEFT);
|
lblBasedn.setBounds(11, 104, 90, 30);
|
loginPaneLdap.add(lblBasedn);
|
|
txtBaseDN = new JTextField();
|
txtBaseDN.setColumns(10);
|
txtBaseDN.setBounds(114, 103, 165, 30);
|
loginPaneLdap.add(txtBaseDN);
|
|
label_8 = new JLabel("Username");
|
label_8.setHorizontalAlignment(SwingConstants.LEFT);
|
label_8.setBounds(11, 135, 90, 30);
|
loginPaneLdap.add(label_8);
|
|
txtUsernameLdap = new JTextField();
|
txtUsernameLdap.setColumns(10);
|
txtUsernameLdap.setBounds(114, 133, 165, 30);
|
loginPaneLdap.add(txtUsernameLdap);
|
|
label_9 = new JLabel("Password");
|
label_9.setHorizontalAlignment(SwingConstants.LEFT);
|
label_9.setBounds(11, 166, 90, 30);
|
loginPaneLdap.add(label_9);
|
|
txtPasswordLdap = new JPasswordField();
|
txtPasswordLdap.setBounds(114, 163, 165, 30);
|
loginPaneLdap.add(txtPasswordLdap);
|
|
lblDatabase = new JLabel("Database");
|
lblDatabase.setHorizontalAlignment(SwingConstants.CENTER);
|
lblDatabase.setFont(lblDatabase.getFont().deriveFont(lblDatabase.getFont().getStyle() | Font.BOLD, lblDatabase.getFont().getSize() + 2f));
|
lblDatabase.setBounds(1, 6, 270, 16);
|
loginPane.add(lblDatabase);
|
|
lblDirectory = new JLabel("Directory");
|
lblDirectory.setHorizontalAlignment(SwingConstants.CENTER);
|
lblDirectory.setFont(lblDirectory.getFont().deriveFont(lblDirectory.getFont().getStyle() | Font.BOLD, lblDirectory.getFont().getSize() + 2f));
|
lblDirectory.setBounds(1, 6, 270, 16);
|
loginPaneLdap.add(lblDirectory);
|
|
txtHost.setText("localhost");
|
txtPort.setText("3306");
|
txtUsername.setText("root");
|
txtDatabaseName.setText("opendj_db");
|
txtHostLdap.setText("localhost");
|
txtPortLdap.setText("389");
|
txtBaseDN.setText("dc=example,dc=com");
|
txtUsernameLdap.setText("cn=Directory Manager");
|
|
return totalGUI;
|
}
|
|
public void actionPerformed(ActionEvent e) {
|
Object source = e.getSource();
|
JDBCConnectionFactory JDBC = null;
|
LDAPConnectionFactory LDAP = null;
|
if((source == btnLogin))
|
{
|
String aHost = txtHost.getText(); //read aHost from the screen as a string
|
String lHost = txtHostLdap.getText();
|
String aPort = txtPort.getText();
|
String lPort = txtPortLdap.getText();
|
Integer intaPort = null;
|
Integer intlPort = null;
|
String aDatabase = txtDatabaseName.getText();
|
String lBaseDN = txtBaseDN.getText();
|
String aUsername = txtUsername.getText();
|
String lUsername = txtUsernameLdap.getText();
|
try {
|
// aHost = txtHost.getText();
|
if ((aHost.isEmpty()) || (lHost.isEmpty()))
|
//if entry is made then throw error
|
throw new IllegalArgumentException("Enter Host address");
|
else if ((aPort.isEmpty()) || (lPort.isEmpty()))
|
{
|
throw new IllegalArgumentException("Enter port number");
|
}
|
else if ((aDatabase.isEmpty()) || (lBaseDN.isEmpty()))
|
{
|
throw new IllegalArgumentException("Enter database name");
|
}
|
else if ((aUsername.isEmpty()) || lUsername.isEmpty())
|
{
|
throw new IllegalArgumentException("Enter username number");
|
}
|
//otherwise setup connection
|
else
|
{
|
try{
|
intaPort = Integer.parseInt(aPort);
|
intlPort = Integer.parseInt(lPort);
|
|
JDBC = new JDBCConnectionFactory(aHost, intaPort, aDatabase);
|
final Connection jdbcconnection = JDBC.getConnection();
|
jdbcconnection.bind(aUsername, txtPassword.getPassword());
|
|
LDAP = new LDAPConnectionFactory(lHost, intlPort);
|
final Connection ldapconnection = LDAP.getConnection();
|
ldapconnection.bind(lUsername, txtPasswordLdap.getPassword());
|
|
//TODO aanpassen connection failed
|
frame.dispose();
|
new GUIMap(JDBC, LDAP);
|
} catch (NumberFormatException ex){
|
JOptionPane.showMessageDialog(frame, ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
|
} catch (ErrorResultException e1) {
|
e1.printStackTrace();
|
} catch (ErrorResultIOException e1) {
|
e1.printStackTrace();
|
} catch (SearchResultReferenceIOException e1) {
|
e1.printStackTrace();
|
} catch (SQLException e1) {
|
e1.printStackTrace();
|
}
|
}
|
}
|
catch (IllegalArgumentException x) { // catch the error
|
JOptionPane.showMessageDialog(frame, x.getMessage(), "Warning", JOptionPane.ERROR_MESSAGE);
|
}
|
}
|
else if(source == btnCancel)
|
{
|
System.exit(0);
|
}
|
}
|
private static void createAndShowGUI() {
|
|
// JFrame.setDefaultLookAndFeelDecorated(true);
|
try {
|
for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
|
//System.out.println(info.getName());
|
if ("Nimbus".equals(info.getName())) {
|
UIManager.setLookAndFeel(info.getClassName());
|
//System.out.println("Used = " + info.getName());
|
break;
|
} else {
|
UIManager.setLookAndFeel(info.getClassName());
|
}
|
}
|
} catch (Exception e) {
|
//System.out.println(e.toString());
|
}
|
//Create and set up the content pane.
|
GUI gui = new GUI();
|
frame.setContentPane(gui.createContentPane());
|
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
frame.setSize(585, 281);
|
frame.setLocationRelativeTo(null);
|
frame.setVisible(true);
|
frame.setResizable(false);
|
frame.setEnabled(true);
|
}
|
public static void main(String[] args) {
|
//Schedule a job for the event-dispatching thread:
|
//creating and showing this application's GUI.
|
SwingUtilities.invokeLater(new Runnable() {
|
public void run() {
|
createAndShowGUI();
|
}
|
});
|
}
|
}
|