package studio.ui;
import studio.kdb.Server;
import studio.core.AuthenticationManager;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JColorChooser;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import kx.c;
public class ServerForm extends EscapeDialog {
private int result= DialogResult.CANCELLED;
private Server s;
private JFrame frame;
public ServerForm(JFrame frame)
{
this(frame, new Server());
}
public ServerForm(JFrame frame,Server server){
super(frame);
this.frame=frame;
s=new Server(server);
initComponents();
logicalName.setText(s.getName());
hostname.setText(s.getHost());
String u= s.getUsername();
if(u.trim().length()==0)
u=System.getProperty("user.name");
username.setText(u);
port.setText(""+s.getPort());
password.setText(s.getPassword());
DefaultComboBoxModel dcbm= (DefaultComboBoxModel)authenticationMechanism.getModel();
String [] am;
try {
am = AuthenticationManager.getInstance().getAuthenticationMechanisms();
for(int i= 0;i < am.length; i++)
{
dcbm.addElement(am[i]);
if(s.getAuthenticationMechanism().equals(am[i]))
dcbm.setSelectedItem(am[i]);
}
}
catch (IOException ex) {
ex.printStackTrace();
}
catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
catch (InstantiationException ex) {
ex.printStackTrace();
}
catch (IllegalAccessException ex) {
ex.printStackTrace();
}
catch (NoSuchMethodException ex) {
ex.printStackTrace();
}
catch (IllegalArgumentException ex) {
ex.printStackTrace();
}
catch (InvocationTargetException ex) {
ex.printStackTrace();
}
logicalName.setToolTipText("The logical name for the server");
hostname.setToolTipText("The hostname or ip address for the server");
port.setToolTipText("The port for the server");
username.setToolTipText("The username used to connect to the server");
password.setToolTipText("The password used to connect to the server");
authenticationMechanism.setToolTipText("The authentication mechanism to use");
// testConnection.setSelected(true);
SampleTextOnBackgroundTextField.setBackground(s.getBackgroundColor());
SampleTextOnBackgroundTextField.setEditable(false);
addWindowListener(new WindowAdapter()
{
public void windowOpened(WindowEvent e)
{
logicalName.requestFocus();
}
});
getRootPane().setDefaultButton(okButton);
}
/** 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() {
logicalNameLabel = new javax.swing.JLabel();
logicalName = new javax.swing.JTextField();
hostnameLabel = new javax.swing.JLabel();
hostname = new javax.swing.JTextField();
portLabel = new javax.swing.JLabel();
port = new javax.swing.JTextField();
usernameLabel = new javax.swing.JLabel();
username = new javax.swing.JTextField();
passwordLabel = new javax.swing.JLabel();
okButton = new javax.swing.JButton();
cancelButton = new javax.swing.JButton();
jSeparator1 = new javax.swing.JSeparator();
jSeparator2 = new javax.swing.JSeparator();
password = new javax.swing.JPasswordField();
jLabel1 = new javax.swing.JLabel();
jSeparator3 = new javax.swing.JSeparator();
EditColorButton = new javax.swing.JButton();
SampleTextOnBackgroundTextField = new javax.swing.JTextField();
authenticationMechanism = new javax.swing.JComboBox();
passwordLabel1 = new javax.swing.JLabel();
logicalNameLabel.setText("Name");
hostnameLabel.setText("Host");
portLabel.setText("Port");
usernameLabel.setText("Username");
passwordLabel.setText("Password");
okButton.setText("Ok");
okButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
onOk(evt);
}
});
cancelButton.setText("Cancel");
cancelButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
onCancel(evt);
}
});
jLabel1.setText("Color");
EditColorButton.setText("Edit Color");
EditColorButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
onColor(evt);
}
});
SampleTextOnBackgroundTextField.setText("Sample text on background");
SampleTextOnBackgroundTextField.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
SampleTextOnBackgroundTextFieldActionPerformed(evt);
}
});
passwordLabel1.setText("Auth. Method");
org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(layout.createSequentialGroup()
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(layout.createSequentialGroup()
.add(20, 20, 20)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(logicalNameLabel)
.add(hostnameLabel)
.add(portLabel)
.add(passwordLabel)))
.add(layout.createSequentialGroup()
.addContainerGap()
.add(passwordLabel1))
.add(layout.createSequentialGroup()
.addContainerGap()
.add(jLabel1)))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(SampleTextOnBackgroundTextField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 393, Short.MAX_VALUE)
.add(authenticationMechanism, 0, 393, Short.MAX_VALUE)
.add(password, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 393, Short.MAX_VALUE)
.add(username, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 393, Short.MAX_VALUE)
.add(port, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 393, Short.MAX_VALUE)
.add(hostname, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 393, Short.MAX_VALUE)
.add(logicalName, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 393, Short.MAX_VALUE))
.addContainerGap())
.add(layout.createSequentialGroup()
.add(20, 20, 20)
.add(usernameLabel)
.addContainerGap(446, Short.MAX_VALUE))
.add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
.addContainerGap(41, Short.MAX_VALUE)
.add(jSeparator2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 467, Short.MAX_VALUE)
.add(20, 20, 20))
.add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
.addContainerGap(41, Short.MAX_VALUE)
.add(jSeparator1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 467, Short.MAX_VALUE)
.add(20, 20, 20))
.add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
.addContainerGap(41, Short.MAX_VALUE)
.add(jSeparator3, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 467, Short.MAX_VALUE)
.add(20, 20, 20))
.add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
.addContainerGap(78, Short.MAX_VALUE)
.add(EditColorButton)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 165, Short.MAX_VALUE)
.add(cancelButton)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(okButton)
.add(20, 20, 20))
);
layout.setVerticalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(layout.createSequentialGroup()
.addContainerGap()
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(logicalNameLabel)
.add(logicalName, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(jSeparator1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 10, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(hostnameLabel)
.add(hostname, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(portLabel)
.add(port, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(jSeparator2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 10, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(usernameLabel)
.add(username, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE, false)
.add(passwordLabel)
.add(password, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(authenticationMechanism, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.add(passwordLabel1))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(jSeparator3, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 10, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(jLabel1)
.add(SampleTextOnBackgroundTextField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(okButton)
.add(cancelButton)
.add(EditColorButton))
.addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
}// </editor-fold>//GEN-END:initComponents
private void onOk(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_onOk
logicalName.setText(logicalName.getText().trim());
hostname.setText(hostname.getText().trim());
username.setText(username.getText().trim());
port.setText(port.getText().trim());
password.setText(new String(password.getPassword()).trim());
if(logicalName.getText().length() == 0)
{
JOptionPane.showMessageDialog(this,
"The server's name cannot be empty",
"Studio for kdb+",
JOptionPane.ERROR_MESSAGE);
logicalName.requestFocus();
return;
}
boolean clash=false;
if( clash)
{
JOptionPane.showMessageDialog(this,
"A server already exists with that name.",
"Studio for kdb+",
JOptionPane.ERROR_MESSAGE);
logicalName.requestFocus();
return;
}
else {
s.setName(logicalName.getText().trim());
s.setHost(hostname.getText().trim());
s.setUsername(username.getText().trim());
if(port.getText().length() == 0)
s.setPort(0);
else
s.setPort(Integer.parseInt(port.getText()));
s.setPassword(new String(password.getPassword()).trim());
DefaultComboBoxModel dcbm= (DefaultComboBoxModel)authenticationMechanism.getModel();
s.setAuthenticationMechanism((String)dcbm.getSelectedItem());
/* if( testConnection.isSelected())
{
c c= null;
try
{
c=new c(s.getHost(),s.getPort(),s.getUsername());
c.reconnect();
}
catch(k4.c.K4Exception e)
{
JOptionPane.showMessageDialog(this,
"Failed to connect due to invalid username or password.",
"Studio for kdb+",
JOptionPane.ERROR_MESSAGE);
}
catch(IOException e)
{
JOptionPane.showMessageDialog(this,
"Failed to connect due to network error : " + e.getMessage(),
"Studio for kdb+",
JOptionPane.ERROR_MESSAGE);
}
finally
{
if( c != null)
try{c.close();}catch(Exception e){};
}
}
*/ }
dispose();
result= DialogResult.ACCEPTED;
}//GEN-LAST:event_onOk
public int getResult(){return result;}
public Server getServer(){return s;}
private void onCancel(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_onCancel
dispose();
}//GEN-LAST:event_onCancel
Color c;
private void onColor(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_onColor
final JColorChooser chooser = new JColorChooser();
// chooser.setPreviewPanel(new CustomPane());
c= SampleTextOnBackgroundTextField.getBackground();
JDialog dialog = JColorChooser.createDialog(this,
"Select background color for editor", true, chooser, new ActionListener() {
public void actionPerformed(ActionEvent e)
{
c=chooser.getColor();
}
}, null);
dialog.setVisible(true);
SampleTextOnBackgroundTextField.setBackground(c);
s.setBackgroundColor(c);
}//GEN-LAST:event_onColor
private void SampleTextOnBackgroundTextFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_SampleTextOnBackgroundTextFieldActionPerformed
// TODO add your handling code here:
}//GEN-LAST:event_SampleTextOnBackgroundTextFieldActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton EditColorButton;
private javax.swing.JTextField SampleTextOnBackgroundTextField;
private javax.swing.JComboBox authenticationMechanism;
private javax.swing.JButton cancelButton;
private javax.swing.JTextField hostname;
private javax.swing.JLabel hostnameLabel;
private javax.swing.JLabel jLabel1;
private javax.swing.JSeparator jSeparator1;
private javax.swing.JSeparator jSeparator2;
private javax.swing.JSeparator jSeparator3;
private javax.swing.JTextField logicalName;
private javax.swing.JLabel logicalNameLabel;
private javax.swing.JButton okButton;
private javax.swing.JPasswordField password;
private javax.swing.JLabel passwordLabel;
private javax.swing.JLabel passwordLabel1;
private javax.swing.JTextField port;
private javax.swing.JLabel portLabel;
private javax.swing.JTextField username;
private javax.swing.JLabel usernameLabel;
// End of variables declaration//GEN-END:variables
}