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 }