/* * EditSettings.java * * Created on August 8, 2007, 8:58 AM * * @author pquiring * */ import java.io.*; import java.awt.*; import javax.swing.*; import javaforce.*; import javaforce.voip.*; import javaforce.media.*; import java.awt.event.KeyEvent; import javax.swing.filechooser.FileNameExtensionFilter; /** Dialog to allow user to edit settings. */ public class EditSettings extends javax.swing.JDialog { private boolean useH263 = false; //Disable for now until RTPH263 is complete /** Creates new form EditSettings */ private EditSettings(java.awt.Frame parent, boolean modal) { super(parent, modal); initComponents(); JF.assignHotKey(this, bCancel, KeyEvent.VK_ESCAPE); JF.assignHotKey(this, bSave, KeyEvent.VK_ENTER); setPosition(); byte data[] = null; try { InputStream is = getClass().getClassLoader().getResourceAsStream("readme.txt"); int len = is.available(); data = new byte[len]; is.read(data); } catch (Exception e) { JFLog.log("err:load readme.txt Failed:" + e); System.exit(0); } about.setText(new String(data)); about.setCaretPosition(0); setComponentOrientation(((parent == null) ? javax.swing.JOptionPane.getRootFrame() : parent).getComponentOrientation()); if (parent != null) setLocationRelativeTo(parent); disabled_audio_codecs.setModel(disabledAudioCodecsList); enabled_audio_codecs.setModel(enabledAudioCodecsList); disabled_video_codecs.setModel(disabledVideoCodecsList); enabled_video_codecs.setModel(enabledVideoCodecsList); loadSettings(); if (!Settings.isLinux && !Settings.isWindows) { useNativeVideo.setEnabled(false); } bits.setText("Make sure you use the " + (JF.is64Bit() ? "64" : "32") + "bit Codec Pack."); if (Settings.hasFFMPEG) download.setEnabled(false); updateKeyStatus(); } /** 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() { soundGroup = new javax.swing.ButtonGroup(); videoGroup = new javax.swing.ButtonGroup(); natGroup = new javax.swing.ButtonGroup(); bSave = new javax.swing.JButton(); bCancel = new javax.swing.JButton(); tabs = new javax.swing.JTabbedPane(); general = new javax.swing.JPanel(); jPanel10 = new javax.swing.JPanel(); jLabel35 = new javax.swing.JLabel(); speakerThreshold = new javax.swing.JTextField(); jLabel36 = new javax.swing.JLabel(); speakerDelay = new javax.swing.JTextField(); jPanel11 = new javax.swing.JPanel(); checkVersion = new javax.swing.JCheckBox(); disableLogging = new javax.swing.JCheckBox(); hideWhenMinimized = new javax.swing.JCheckBox(); alwaysOnTop = new javax.swing.JCheckBox(); smallerFont = new javax.swing.JCheckBox(); usePublish = new javax.swing.JCheckBox(); autohold = new javax.swing.JCheckBox(); jLabel51 = new javax.swing.JLabel(); sipExpires = new javax.swing.JTextField(); exitWhenClosed = new javax.swing.JCheckBox(); reinvite = new javax.swing.JCheckBox(); jPanel1 = new javax.swing.JPanel(); jLabel21 = new javax.swing.JLabel(); dndCodeOn = new javax.swing.JTextField(); jLabel22 = new javax.swing.JLabel(); dndCodeOff = new javax.swing.JTextField(); jPanel2 = new javax.swing.JPanel(); selectOutRingtone = new javax.swing.JButton(); jLabel34 = new javax.swing.JLabel(); inRingtone = new javax.swing.JComboBox(); outRingtone = new javax.swing.JComboBox(); jLabel65 = new javax.swing.JLabel(); selectInRingtone = new javax.swing.JButton(); audio = new javax.swing.JPanel(); jPanel13 = new javax.swing.JPanel(); jLabel20 = new javax.swing.JLabel(); audioInput = new javax.swing.JComboBox(); audioOutput = new javax.swing.JComboBox(); jLabel19 = new javax.swing.JLabel(); jPanel15 = new javax.swing.JPanel(); jScrollPane2 = new javax.swing.JScrollPane(); disabled_audio_codecs = new javax.swing.JList(); move_audio_codec_up = new javax.swing.JButton(); move_audio_codec_down = new javax.swing.JButton(); jScrollPane3 = new javax.swing.JScrollPane(); enabled_audio_codecs = new javax.swing.JList(); jLabel41 = new javax.swing.JLabel(); jLabel42 = new javax.swing.JLabel(); add_audio_codec = new javax.swing.JButton(); remove_audio_codec = new javax.swing.JButton(); jPanel17 = new javax.swing.JPanel(); jLabel30 = new javax.swing.JLabel(); downloadPath = new javax.swing.JTextField(); selectDownloadPath = new javax.swing.JButton(); keepAudioOpen = new javax.swing.JCheckBox(); video = new javax.swing.JPanel(); jPanel14 = new javax.swing.JPanel(); useNativeVideo = new javax.swing.JRadioButton(); disableVideo = new javax.swing.JRadioButton(); jLabel33 = new javax.swing.JLabel(); videoDevice = new javax.swing.JComboBox(); videoFPS = new javax.swing.JSlider(); jLabel32 = new javax.swing.JLabel(); jPanel18 = new javax.swing.JPanel(); jScrollPane4 = new javax.swing.JScrollPane(); disabled_video_codecs = new javax.swing.JList(); move_video_codec_up = new javax.swing.JButton(); move_video_codec_down = new javax.swing.JButton(); jScrollPane5 = new javax.swing.JScrollPane(); enabled_video_codecs = new javax.swing.JList(); jLabel46 = new javax.swing.JLabel(); jLabel47 = new javax.swing.JLabel(); add_video_codec = new javax.swing.JButton(); remove_video_codec = new javax.swing.JButton(); jPanel19 = new javax.swing.JPanel(); jLabel40 = new javax.swing.JLabel(); download = new javax.swing.JButton(); bits = new javax.swing.JLabel(); visitWebSite = new javax.swing.JButton(); jLabel38 = new javax.swing.JLabel(); accts = new javax.swing.JPanel(); jTabbedPane1 = new javax.swing.JTabbedPane(); l1 = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); l1user = new javax.swing.JTextField(); l1host = new javax.swing.JTextField(); jLabel23 = new javax.swing.JLabel(); l1auth = new javax.swing.JTextField(); l1pass = new javax.swing.JPasswordField(); l1disableVideo = new javax.swing.JCheckBox(); l1secure = new javax.swing.JCheckBox(); jLabel29 = new javax.swing.JLabel(); l1sip = new javax.swing.JComboBox(); jLabel56 = new javax.swing.JLabel(); l1key = new javax.swing.JComboBox(); jLabel31 = new javax.swing.JLabel(); l1name = new javax.swing.JTextField(); l2 = new javax.swing.JPanel(); jLabel4 = new javax.swing.JLabel(); l2user = new javax.swing.JTextField(); jLabel5 = new javax.swing.JLabel(); jLabel6 = new javax.swing.JLabel(); l2host = new javax.swing.JTextField(); l2same = new javax.swing.JCheckBox(); l2sameidx = new javax.swing.JComboBox(); jLabel24 = new javax.swing.JLabel(); l2auth = new javax.swing.JTextField(); l2pass = new javax.swing.JPasswordField(); l2disableVideo = new javax.swing.JCheckBox(); l2secure = new javax.swing.JCheckBox(); jLabel37 = new javax.swing.JLabel(); l2sip = new javax.swing.JComboBox(); jLabel57 = new javax.swing.JLabel(); l2key = new javax.swing.JComboBox(); jLabel44 = new javax.swing.JLabel(); l2name = new javax.swing.JTextField(); l3 = new javax.swing.JPanel(); l3same = new javax.swing.JCheckBox(); l3sameidx = new javax.swing.JComboBox(); l3user = new javax.swing.JTextField(); jLabel7 = new javax.swing.JLabel(); jLabel8 = new javax.swing.JLabel(); l3host = new javax.swing.JTextField(); jLabel9 = new javax.swing.JLabel(); jLabel25 = new javax.swing.JLabel(); l3auth = new javax.swing.JTextField(); l3pass = new javax.swing.JPasswordField(); l3disableVideo = new javax.swing.JCheckBox(); l3secure = new javax.swing.JCheckBox(); jLabel52 = new javax.swing.JLabel(); l3sip = new javax.swing.JComboBox(); jLabel58 = new javax.swing.JLabel(); l3key = new javax.swing.JComboBox(); jLabel45 = new javax.swing.JLabel(); l3name = new javax.swing.JTextField(); l4 = new javax.swing.JPanel(); l4same = new javax.swing.JCheckBox(); l4sameidx = new javax.swing.JComboBox(); jLabel10 = new javax.swing.JLabel(); l4user = new javax.swing.JTextField(); jLabel11 = new javax.swing.JLabel(); l4host = new javax.swing.JTextField(); jLabel12 = new javax.swing.JLabel(); jLabel26 = new javax.swing.JLabel(); l4auth = new javax.swing.JTextField(); l4pass = new javax.swing.JPasswordField(); l4disableVideo = new javax.swing.JCheckBox(); l4secure = new javax.swing.JCheckBox(); jLabel53 = new javax.swing.JLabel(); l4sip = new javax.swing.JComboBox(); jLabel59 = new javax.swing.JLabel(); l4key = new javax.swing.JComboBox(); jLabel66 = new javax.swing.JLabel(); l4name = new javax.swing.JTextField(); l5 = new javax.swing.JPanel(); l5same = new javax.swing.JCheckBox(); l5sameidx = new javax.swing.JComboBox(); jLabel13 = new javax.swing.JLabel(); l5user = new javax.swing.JTextField(); jLabel14 = new javax.swing.JLabel(); l5host = new javax.swing.JTextField(); jLabel15 = new javax.swing.JLabel(); jLabel27 = new javax.swing.JLabel(); l5auth = new javax.swing.JTextField(); l5pass = new javax.swing.JPasswordField(); l5disableVideo = new javax.swing.JCheckBox(); l5secure = new javax.swing.JCheckBox(); jLabel54 = new javax.swing.JLabel(); l5sip = new javax.swing.JComboBox(); jLabel60 = new javax.swing.JLabel(); l5key = new javax.swing.JComboBox(); jLabel67 = new javax.swing.JLabel(); l5name = new javax.swing.JTextField(); l6 = new javax.swing.JPanel(); l6same = new javax.swing.JCheckBox(); l6sameidx = new javax.swing.JComboBox(); jLabel16 = new javax.swing.JLabel(); l6user = new javax.swing.JTextField(); jLabel17 = new javax.swing.JLabel(); l6host = new javax.swing.JTextField(); jLabel18 = new javax.swing.JLabel(); jLabel28 = new javax.swing.JLabel(); l6auth = new javax.swing.JTextField(); l6pass = new javax.swing.JPasswordField(); l6disableVideo = new javax.swing.JCheckBox(); l6secure = new javax.swing.JCheckBox(); jLabel55 = new javax.swing.JLabel(); l6sip = new javax.swing.JComboBox(); jLabel61 = new javax.swing.JLabel(); l6key = new javax.swing.JComboBox(); jLabel68 = new javax.swing.JLabel(); l6name = new javax.swing.JTextField(); topology = new javax.swing.JPanel(); jPanel21 = new javax.swing.JPanel(); natNone = new javax.swing.JRadioButton(); natStun = new javax.swing.JRadioButton(); natTurn = new javax.swing.JRadioButton(); natIce = new javax.swing.JRadioButton(); natPrivate = new javax.swing.JCheckBox(); jLabel39 = new javax.swing.JLabel(); natHost = new javax.swing.JTextField(); jLabel49 = new javax.swing.JLabel(); natUser = new javax.swing.JTextField(); jLabel50 = new javax.swing.JLabel(); natPass = new javax.swing.JPasswordField(); rport = new javax.swing.JCheckBox(); received = new javax.swing.JCheckBox(); jPanel22 = new javax.swing.JPanel(); sipRange = new javax.swing.JCheckBox(); sipmin = new javax.swing.JTextField(); jLabel43 = new javax.swing.JLabel(); sipmax = new javax.swing.JTextField(); rtpRange = new javax.swing.JCheckBox(); rtpmin = new javax.swing.JTextField(); jLabel48 = new javax.swing.JLabel(); rtpmax = new javax.swing.JTextField(); eKey = new javax.swing.JPanel(); jLabel62 = new javax.swing.JLabel(); jLabel63 = new javax.swing.JLabel(); keyStatus = new javax.swing.JLabel(); genCertKey = new javax.swing.JButton(); jLabel64 = new javax.swing.JLabel(); dname = new javax.swing.JTextField(); aboutTab = new javax.swing.JPanel(); jScrollPane1 = new javax.swing.JScrollPane(); about = new javax.swing.JTextArea(); help = new javax.swing.JButton(); jButton1 = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("Edit Settings"); setModal(true); bSave.setText("Save"); bSave.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { bSaveActionPerformed(evt); } }); bCancel.setText("Cancel"); bCancel.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { bCancelActionPerformed(evt); } }); jPanel10.setBorder(javax.swing.BorderFactory.createTitledBorder("Speaker Phone Settings")); jLabel35.setText("Threshold:"); jLabel35.setToolTipText("Range: 0-32768 (default = 1000)"); speakerThreshold.setText("1000"); speakerThreshold.setToolTipText("Range: 0-32768 (default = 1000)"); jLabel36.setText("Delay (ms):"); jLabel36.setToolTipText("default = 250"); speakerDelay.setText("250"); speakerDelay.setToolTipText("default = 250"); javax.swing.GroupLayout jPanel10Layout = new javax.swing.GroupLayout(jPanel10); jPanel10.setLayout(jPanel10Layout); jPanel10Layout.setHorizontalGroup( jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel10Layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel35) .addGap(8, 8, 8) .addComponent(speakerThreshold, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabel36) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(speakerDelay, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel10Layout.setVerticalGroup( jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel10Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel35) .addComponent(speakerThreshold, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel36) .addComponent(speakerDelay, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel11.setBorder(javax.swing.BorderFactory.createTitledBorder("Options")); checkVersion.setText("Check for update on startup"); disableLogging.setText("Disable Logging"); hideWhenMinimized.setText("Hide when minimized"); alwaysOnTop.setText("Always on top"); smallerFont.setText("Use Smaller Font"); usePublish.setText("Enable PUBLISH Presence"); usePublish.setToolTipText("Not supported by some PBX systems."); autohold.setText("Auto Hold/Unhold"); autohold.setToolTipText("Auto Hold/Unhold while switching between active lines."); jLabel51.setText("SIP Expires"); jLabel51.setToolTipText("Register account every x seconds (Default=3600)"); sipExpires.setText("3600"); exitWhenClosed.setText("Exit when closed"); reinvite.setText("Enable reinvites"); reinvite.setToolTipText("Reinvites when callee returns multiple codecs."); javax.swing.GroupLayout jPanel11Layout = new javax.swing.GroupLayout(jPanel11); jPanel11.setLayout(jPanel11Layout); jPanel11Layout.setHorizontalGroup( jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel11Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addGroup(jPanel11Layout.createSequentialGroup() .addComponent(jLabel51) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(sipExpires)) .addComponent(hideWhenMinimized) .addComponent(disableLogging) .addComponent(checkVersion)) .addComponent(exitWhenClosed)) .addGap(18, 18, 18) .addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(alwaysOnTop) .addComponent(usePublish) .addComponent(smallerFont) .addComponent(autohold) .addComponent(reinvite)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel11Layout.setVerticalGroup( jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel11Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel11Layout.createSequentialGroup() .addComponent(checkVersion) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(disableLogging) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(hideWhenMinimized) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(exitWhenClosed)) .addGroup(jPanel11Layout.createSequentialGroup() .addComponent(usePublish) .addGap(1, 1, 1) .addComponent(smallerFont) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(alwaysOnTop) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(autohold))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel51) .addComponent(sipExpires, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(reinvite)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Do Not Disturb")); jLabel21.setText("Enable:"); dndCodeOn.setText("*78"); dndCodeOn.setToolTipText("Do not disturb on code"); jLabel22.setText("Disable:"); dndCodeOff.setText("*79"); dndCodeOff.setToolTipText("Do not disturb off code"); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel21) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(dndCodeOn, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabel22) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(dndCodeOff, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel21) .addComponent(dndCodeOn, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel22) .addComponent(dndCodeOff, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap()) ); jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Tones")); selectOutRingtone.setText("Select..."); selectOutRingtone.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { selectOutRingtoneActionPerformed(evt); } }); jLabel34.setText("Ringback:"); jLabel34.setToolTipText("Must be 8000Hz, 16bit, mono, PCM"); inRingtone.setAutoscrolls(true); outRingtone.setAutoscrolls(true); jLabel65.setText("Ringing:"); selectInRingtone.setText("Select..."); selectInRingtone.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { selectInRingtoneActionPerformed(evt); } }); javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setHorizontalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addComponent(jLabel34) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(outRingtone, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGroup(jPanel2Layout.createSequentialGroup() .addComponent(jLabel65) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(inRingtone, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(selectInRingtone, javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(selectOutRingtone, javax.swing.GroupLayout.Alignment.TRAILING)) .addContainerGap()) ); jPanel2Layout.setVerticalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel65) .addComponent(inRingtone, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(selectInRingtone)) .addGap(7, 7, 7) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel34) .addComponent(selectOutRingtone) .addComponent(outRingtone, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); javax.swing.GroupLayout generalLayout = new javax.swing.GroupLayout(general); general.setLayout(generalLayout); generalLayout.setHorizontalGroup( generalLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(generalLayout.createSequentialGroup() .addContainerGap() .addGroup(generalLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jPanel10, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jPanel11, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jPanel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addContainerGap(210, Short.MAX_VALUE)) ); generalLayout.setVerticalGroup( generalLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(generalLayout.createSequentialGroup() .addContainerGap() .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jPanel11, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jPanel10, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGap(283, 283, 283)) ); tabs.addTab("General", general); jPanel13.setBorder(javax.swing.BorderFactory.createTitledBorder("Sound Devices")); jLabel20.setText("Audio Input:"); audioInput.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "<default>" })); audioOutput.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "<default>" })); jLabel19.setText("Audio Output:"); javax.swing.GroupLayout jPanel13Layout = new javax.swing.GroupLayout(jPanel13); jPanel13.setLayout(jPanel13Layout); jPanel13Layout.setHorizontalGroup( jPanel13Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel13Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel13Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel19) .addComponent(jLabel20)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel13Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(audioOutput, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(audioInput, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addContainerGap()) ); jPanel13Layout.setVerticalGroup( jPanel13Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel13Layout.createSequentialGroup() .addGroup(jPanel13Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel19) .addComponent(audioOutput, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel13Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel20) .addComponent(audioInput, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(0, 8, Short.MAX_VALUE)) ); jPanel15.setBorder(javax.swing.BorderFactory.createTitledBorder("Audio Codecs")); disabled_audio_codecs.setModel(new javax.swing.AbstractListModel() { String[] strings = { "..." }; public int getSize() { return strings.length; } public Object getElementAt(int i) { return strings[i]; } }); disabled_audio_codecs.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); jScrollPane2.setViewportView(disabled_audio_codecs); move_audio_codec_up.setText("Up"); move_audio_codec_up.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { move_audio_codec_upActionPerformed(evt); } }); move_audio_codec_down.setText("Down"); move_audio_codec_down.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { move_audio_codec_downActionPerformed(evt); } }); enabled_audio_codecs.setModel(new javax.swing.AbstractListModel() { String[] strings = { "..." }; public int getSize() { return strings.length; } public Object getElementAt(int i) { return strings[i]; } }); enabled_audio_codecs.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); jScrollPane3.setViewportView(enabled_audio_codecs); jLabel41.setText("Disabled"); jLabel42.setText("Enabled"); add_audio_codec.setText("Add ->"); add_audio_codec.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { add_audio_codecActionPerformed(evt); } }); remove_audio_codec.setText("<- Remove"); remove_audio_codec.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { remove_audio_codecActionPerformed(evt); } }); javax.swing.GroupLayout jPanel15Layout = new javax.swing.GroupLayout(jPanel15); jPanel15.setLayout(jPanel15Layout); jPanel15Layout.setHorizontalGroup( jPanel15Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel15Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel15Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 102, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel41)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel15Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(remove_audio_codec, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(add_audio_codec, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel15Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel42) .addGroup(jPanel15Layout.createSequentialGroup() .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel15Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(move_audio_codec_down) .addComponent(move_audio_codec_up, javax.swing.GroupLayout.PREFERRED_SIZE, 61, javax.swing.GroupLayout.PREFERRED_SIZE)))) .addContainerGap(18, Short.MAX_VALUE)) ); jPanel15Layout.setVerticalGroup( jPanel15Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel15Layout.createSequentialGroup() .addGroup(jPanel15Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel41) .addComponent(jLabel42)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel15Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel15Layout.createSequentialGroup() .addComponent(add_audio_codec) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(remove_audio_codec) .addGap(0, 0, Short.MAX_VALUE)) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel15Layout.createSequentialGroup() .addGroup(jPanel15Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jScrollPane3, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel15Layout.createSequentialGroup() .addComponent(move_audio_codec_up) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(move_audio_codec_down) .addGap(0, 11, Short.MAX_VALUE)) .addComponent(jScrollPane2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)) .addContainerGap()))) ); jPanel17.setBorder(javax.swing.BorderFactory.createTitledBorder("Options")); jLabel30.setText("Recording Path:"); selectDownloadPath.setText("Select..."); selectDownloadPath.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { selectDownloadPathActionPerformed(evt); } }); keepAudioOpen.setText("Keep Audio Open"); javax.swing.GroupLayout jPanel17Layout = new javax.swing.GroupLayout(jPanel17); jPanel17.setLayout(jPanel17Layout); jPanel17Layout.setHorizontalGroup( jPanel17Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel17Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel17Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel17Layout.createSequentialGroup() .addComponent(jLabel30) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(downloadPath, javax.swing.GroupLayout.DEFAULT_SIZE, 226, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(selectDownloadPath)) .addGroup(jPanel17Layout.createSequentialGroup() .addComponent(keepAudioOpen) .addGap(0, 0, Short.MAX_VALUE))) .addContainerGap()) ); jPanel17Layout.setVerticalGroup( jPanel17Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel17Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel17Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel30) .addComponent(downloadPath, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(selectDownloadPath)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(keepAudioOpen) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); javax.swing.GroupLayout audioLayout = new javax.swing.GroupLayout(audio); audio.setLayout(audioLayout); audioLayout.setHorizontalGroup( audioLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(audioLayout.createSequentialGroup() .addContainerGap() .addGroup(audioLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) .addComponent(jPanel15, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jPanel13, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jPanel17, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addContainerGap(148, Short.MAX_VALUE)) ); audioLayout.setVerticalGroup( audioLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(audioLayout.createSequentialGroup() .addContainerGap() .addComponent(jPanel15, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jPanel13, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jPanel17, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) ); tabs.addTab("Audio", audio); jPanel14.setBorder(javax.swing.BorderFactory.createTitledBorder("Video System")); videoGroup.add(useNativeVideo); useNativeVideo.setText("Use Native Video [Windows / Linux]"); useNativeVideo.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent evt) { useNativeVideoItemStateChanged(evt); } }); videoGroup.add(disableVideo); disableVideo.setSelected(true); disableVideo.setText("Disable Video"); disableVideo.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent evt) { disableVideoItemStateChanged(evt); } }); jLabel33.setText("Device:"); videoDevice.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "<default>" })); videoFPS.setMajorTickSpacing(5); videoFPS.setMaximum(30); videoFPS.setMinimum(5); videoFPS.setMinorTickSpacing(1); videoFPS.setPaintLabels(true); videoFPS.setPaintTicks(true); videoFPS.setSnapToTicks(true); videoFPS.setValue(10); jLabel32.setText("FPS"); javax.swing.GroupLayout jPanel14Layout = new javax.swing.GroupLayout(jPanel14); jPanel14.setLayout(jPanel14Layout); jPanel14Layout.setHorizontalGroup( jPanel14Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel14Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel14Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(useNativeVideo) .addComponent(disableVideo) .addGroup(jPanel14Layout.createSequentialGroup() .addComponent(jLabel33) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(videoDevice, javax.swing.GroupLayout.PREFERRED_SIZE, 317, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(jPanel14Layout.createSequentialGroup() .addComponent(jLabel32) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(videoFPS, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel14Layout.setVerticalGroup( jPanel14Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel14Layout.createSequentialGroup() .addContainerGap() .addComponent(disableVideo) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(useNativeVideo) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel14Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel33) .addComponent(videoDevice, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel14Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(videoFPS, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel32)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel18.setBorder(javax.swing.BorderFactory.createTitledBorder("Video Codecs")); disabled_video_codecs.setModel(new javax.swing.AbstractListModel() { String[] strings = { "..." }; public int getSize() { return strings.length; } public Object getElementAt(int i) { return strings[i]; } }); disabled_video_codecs.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); jScrollPane4.setViewportView(disabled_video_codecs); move_video_codec_up.setText("Up"); move_video_codec_up.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { move_video_codec_upActionPerformed(evt); } }); move_video_codec_down.setText("Down"); move_video_codec_down.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { move_video_codec_downActionPerformed(evt); } }); enabled_video_codecs.setModel(new javax.swing.AbstractListModel() { String[] strings = { "..." }; public int getSize() { return strings.length; } public Object getElementAt(int i) { return strings[i]; } }); enabled_video_codecs.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); jScrollPane5.setViewportView(enabled_video_codecs); jLabel46.setText("Disabled"); jLabel47.setText("Enabled"); add_video_codec.setText("Add ->"); add_video_codec.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { add_video_codecActionPerformed(evt); } }); remove_video_codec.setText("<- Remove"); remove_video_codec.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { remove_video_codecActionPerformed(evt); } }); javax.swing.GroupLayout jPanel18Layout = new javax.swing.GroupLayout(jPanel18); jPanel18.setLayout(jPanel18Layout); jPanel18Layout.setHorizontalGroup( jPanel18Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel18Layout.createSequentialGroup() .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(jPanel18Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jScrollPane4, javax.swing.GroupLayout.PREFERRED_SIZE, 102, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel46)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel18Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(remove_video_codec, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(add_video_codec, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel18Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel47) .addGroup(jPanel18Layout.createSequentialGroup() .addComponent(jScrollPane5, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel18Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(move_video_codec_down) .addComponent(move_video_codec_up, javax.swing.GroupLayout.PREFERRED_SIZE, 61, javax.swing.GroupLayout.PREFERRED_SIZE))))) ); jPanel18Layout.setVerticalGroup( jPanel18Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel18Layout.createSequentialGroup() .addGroup(jPanel18Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel46) .addComponent(jLabel47)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel18Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel18Layout.createSequentialGroup() .addComponent(add_video_codec) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(remove_video_codec) .addGap(0, 0, Short.MAX_VALUE)) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel18Layout.createSequentialGroup() .addGroup(jPanel18Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jScrollPane5, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel18Layout.createSequentialGroup() .addComponent(move_video_codec_up) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(move_video_codec_down) .addGap(0, 0, Short.MAX_VALUE)) .addComponent(jScrollPane4, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)) .addContainerGap()))) ); jLabel40.setText("To use H.263/H.264/VP8 codecs you must download / install the Codec Pack"); download.setText("Download / Install"); download.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { downloadActionPerformed(evt); } }); bits.setText("Make sure you use the ??bit Codec Pack."); visitWebSite.setText("Visit WebSite"); visitWebSite.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { visitWebSiteActionPerformed(evt); } }); jLabel38.setText("Visit the website for more info or download and install now."); javax.swing.GroupLayout jPanel19Layout = new javax.swing.GroupLayout(jPanel19); jPanel19.setLayout(jPanel19Layout); jPanel19Layout.setHorizontalGroup( jPanel19Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel19Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel19Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel19Layout.createSequentialGroup() .addComponent(visitWebSite) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(download)) .addComponent(bits) .addComponent(jLabel40) .addComponent(jLabel38)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel19Layout.setVerticalGroup( jPanel19Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel19Layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel40) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabel38) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(bits) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(jPanel19Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(download) .addComponent(visitWebSite)) .addContainerGap()) ); javax.swing.GroupLayout videoLayout = new javax.swing.GroupLayout(video); video.setLayout(videoLayout); videoLayout.setHorizontalGroup( videoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(videoLayout.createSequentialGroup() .addContainerGap() .addGroup(videoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(jPanel14, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jPanel19, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jPanel18, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addContainerGap(166, Short.MAX_VALUE)) ); videoLayout.setVerticalGroup( videoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(videoLayout.createSequentialGroup() .addContainerGap() .addComponent(jPanel14, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(2, 2, 2) .addComponent(jPanel18, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jPanel19, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(75, Short.MAX_VALUE)) ); tabs.addTab("Video", video); jLabel1.setText("Username"); jLabel1.setToolTipText("Username / Extension / Phone Number"); jLabel2.setText("Password"); jLabel2.setToolTipText("SIP Password"); jLabel3.setText("Domain"); jLabel3.setToolTipText("Domain / Host / IP"); jLabel23.setText("Auth name"); jLabel23.setToolTipText("Alternative Authorization Username (optional)"); l1disableVideo.setText("Disable Video"); l1secure.setText("Enable Encryption"); l1secure.setToolTipText("SRTP"); jLabel29.setText("SIP Transport"); l1sip.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "UDP", "TCP", "TLS" })); jLabel56.setText("Encryption Key Exchange"); l1key.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "SDP", "DTLS" })); jLabel31.setText("Display name"); jLabel31.setToolTipText("Display Name (optional)"); javax.swing.GroupLayout l1Layout = new javax.swing.GroupLayout(l1); l1.setLayout(l1Layout); l1Layout.setHorizontalGroup( l1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(l1Layout.createSequentialGroup() .addContainerGap() .addGroup(l1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(l1Layout.createSequentialGroup() .addGroup(l1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(l1secure) .addComponent(l1disableVideo) .addGroup(l1Layout.createSequentialGroup() .addComponent(jLabel29) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(l1sip, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(l1Layout.createSequentialGroup() .addComponent(jLabel56) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(l1key, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGap(0, 356, Short.MAX_VALUE)) .addGroup(l1Layout.createSequentialGroup() .addGroup(l1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel23) .addComponent(jLabel1) .addComponent(jLabel2) .addComponent(jLabel3) .addComponent(jLabel31)) .addGap(32, 32, 32) .addGroup(l1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(l1name) .addComponent(l1pass, javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(l1auth, javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(l1user) .addComponent(l1host)))) .addContainerGap()) ); l1Layout.setVerticalGroup( l1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(l1Layout.createSequentialGroup() .addContainerGap() .addGroup(l1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel31) .addComponent(l1name, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(l1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel1) .addComponent(l1user, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(l1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel23) .addComponent(l1auth, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(l1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel2) .addComponent(l1pass, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(l1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel3) .addComponent(l1host, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(l1disableVideo) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(l1secure) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(l1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel29) .addComponent(l1sip, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(l1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel56) .addComponent(l1key, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(189, Short.MAX_VALUE)) ); jTabbedPane1.addTab("Line1", l1); jLabel4.setText("Username"); jLabel5.setText("Password"); jLabel6.setText("Domain"); l2same.setText("same as "); l2same.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent evt) { l2sameItemStateChanged(evt); } }); l2sameidx.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Line 1", "Line 3", "Line 4", "Line 5", "Line 6" })); jLabel24.setText("Auth name"); l2disableVideo.setText("Disable Video"); l2secure.setText("Enable Encryption"); l2secure.setToolTipText("SRTP"); jLabel37.setText("SIP Transport"); l2sip.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "UDP", "TCP", "TLS" })); jLabel57.setText("Encryption Key Exchange"); l2key.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "SDP", "DTLS" })); jLabel44.setText("Display name"); javax.swing.GroupLayout l2Layout = new javax.swing.GroupLayout(l2); l2.setLayout(l2Layout); l2Layout.setHorizontalGroup( l2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(l2Layout.createSequentialGroup() .addContainerGap() .addGroup(l2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(l2Layout.createSequentialGroup() .addGroup(l2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(l2secure) .addComponent(l2disableVideo) .addGroup(l2Layout.createSequentialGroup() .addComponent(l2same) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(l2sameidx, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(l2Layout.createSequentialGroup() .addComponent(jLabel37) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(l2sip, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(l2Layout.createSequentialGroup() .addComponent(jLabel57) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(l2key, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGap(0, 356, Short.MAX_VALUE)) .addGroup(l2Layout.createSequentialGroup() .addGroup(l2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel24) .addComponent(jLabel5) .addComponent(jLabel6) .addComponent(jLabel4) .addComponent(jLabel44)) .addGap(18, 18, 18) .addGroup(l2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(l2name) .addComponent(l2pass, javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(l2auth, javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(l2user) .addComponent(l2host)))) .addContainerGap()) ); l2Layout.setVerticalGroup( l2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(l2Layout.createSequentialGroup() .addContainerGap() .addGroup(l2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(l2same) .addComponent(l2sameidx, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(l2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel44) .addComponent(l2name, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(l2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel4) .addComponent(l2user, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(l2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel24) .addComponent(l2auth, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(l2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel5) .addComponent(l2pass, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(l2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel6) .addComponent(l2host, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(l2disableVideo) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(l2secure) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(l2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel37) .addComponent(l2sip, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(l2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel57) .addComponent(l2key, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(158, Short.MAX_VALUE)) ); jTabbedPane1.addTab("Line2", l2); l3same.setText("same as "); l3same.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent evt) { l3sameItemStateChanged(evt); } }); l3sameidx.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Line 1", "Line 2", "Line 4", "Line 5", "Line 6" })); jLabel7.setText("Username"); jLabel8.setText("Password"); jLabel9.setText("Domain"); jLabel25.setText("Auth name"); l3disableVideo.setText("Disable Video"); l3secure.setText("Enable Encryption"); l3secure.setToolTipText("SRTP"); jLabel52.setText("SIP Transport"); l3sip.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "UDP", "TCP", "TLS" })); jLabel58.setText("Encryption Key Exchange"); l3key.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "SDP", "DTLS" })); jLabel45.setText("Display name"); javax.swing.GroupLayout l3Layout = new javax.swing.GroupLayout(l3); l3.setLayout(l3Layout); l3Layout.setHorizontalGroup( l3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(l3Layout.createSequentialGroup() .addContainerGap() .addGroup(l3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(l3Layout.createSequentialGroup() .addGroup(l3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(l3secure) .addComponent(l3disableVideo) .addGroup(l3Layout.createSequentialGroup() .addComponent(l3same) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(l3sameidx, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(l3Layout.createSequentialGroup() .addComponent(jLabel52) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(l3sip, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(l3Layout.createSequentialGroup() .addComponent(jLabel58) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(l3key, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGap(0, 356, Short.MAX_VALUE)) .addGroup(l3Layout.createSequentialGroup() .addGroup(l3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel25) .addComponent(jLabel7) .addComponent(jLabel8) .addComponent(jLabel9) .addComponent(jLabel45)) .addGap(18, 18, 18) .addGroup(l3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(l3name) .addComponent(l3pass, javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(l3auth, javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(l3user) .addComponent(l3host)))) .addContainerGap()) ); l3Layout.setVerticalGroup( l3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(l3Layout.createSequentialGroup() .addContainerGap() .addGroup(l3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(l3same) .addComponent(l3sameidx, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(l3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel45) .addComponent(l3name, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(l3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel7) .addComponent(l3user, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(l3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel25) .addComponent(l3auth, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(l3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel8) .addComponent(l3pass, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(l3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel9) .addComponent(l3host, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(l3disableVideo) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(l3secure) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(l3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel52) .addComponent(l3sip, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(l3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel58) .addComponent(l3key, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(158, Short.MAX_VALUE)) ); jTabbedPane1.addTab("Line3", l3); l4same.setText("same as "); l4same.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent evt) { l4sameItemStateChanged(evt); } }); l4sameidx.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Line 1", "Line 2", "Line 3", "Line 5", "Line 6" })); jLabel10.setText("Username"); jLabel11.setText("Password"); jLabel12.setText("Domain"); jLabel26.setText("Auth name"); l4disableVideo.setText("Disable Video"); l4secure.setText("Enable Encryption"); l4secure.setToolTipText("SRTP"); jLabel53.setText("SIP Transport"); l4sip.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "UDP", "TCP", "TLS" })); jLabel59.setText("Encryption Key Exchange"); l4key.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "SDP", "DTLS" })); jLabel66.setText("Display name"); javax.swing.GroupLayout l4Layout = new javax.swing.GroupLayout(l4); l4.setLayout(l4Layout); l4Layout.setHorizontalGroup( l4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(l4Layout.createSequentialGroup() .addContainerGap() .addGroup(l4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(l4Layout.createSequentialGroup() .addGroup(l4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(l4secure) .addGroup(l4Layout.createSequentialGroup() .addComponent(l4same) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(l4sameidx, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(l4disableVideo) .addGroup(l4Layout.createSequentialGroup() .addComponent(jLabel53) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(l4sip, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(l4Layout.createSequentialGroup() .addComponent(jLabel59) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(l4key, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGap(0, 356, Short.MAX_VALUE)) .addGroup(l4Layout.createSequentialGroup() .addGroup(l4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel26) .addComponent(jLabel11) .addComponent(jLabel12) .addComponent(jLabel10) .addComponent(jLabel66)) .addGap(18, 18, 18) .addGroup(l4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(l4name) .addComponent(l4pass, javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(l4auth, javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(l4user) .addComponent(l4host)))) .addContainerGap()) ); l4Layout.setVerticalGroup( l4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(l4Layout.createSequentialGroup() .addContainerGap() .addGroup(l4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(l4same) .addComponent(l4sameidx, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(l4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel66) .addComponent(l4name, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(l4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel10) .addComponent(l4user, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(l4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel26) .addComponent(l4auth, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(l4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel11) .addComponent(l4pass, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(l4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel12) .addComponent(l4host, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(l4disableVideo) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(l4secure) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(l4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel53) .addComponent(l4sip, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(l4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel59) .addComponent(l4key, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(158, Short.MAX_VALUE)) ); jTabbedPane1.addTab("Line4", l4); l5same.setText("same as "); l5same.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent evt) { l5sameItemStateChanged(evt); } }); l5sameidx.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Line 1", "Line 2", "Line 3", "Line 4", "Line 6" })); jLabel13.setText("Username"); jLabel14.setText("Password"); jLabel15.setText("Domain"); jLabel27.setText("Auth name"); l5disableVideo.setText("Disable Video"); l5secure.setText("Enable Encryption"); l5secure.setToolTipText("SRTP"); jLabel54.setText("SIP Transport"); l5sip.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "UDP", "TCP", "TLS" })); jLabel60.setText("Encryption Key Exchange"); l5key.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "SDP", "DTLS" })); jLabel67.setText("Display name"); javax.swing.GroupLayout l5Layout = new javax.swing.GroupLayout(l5); l5.setLayout(l5Layout); l5Layout.setHorizontalGroup( l5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(l5Layout.createSequentialGroup() .addContainerGap() .addGroup(l5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(l5Layout.createSequentialGroup() .addGroup(l5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(l5secure) .addComponent(l5disableVideo) .addGroup(l5Layout.createSequentialGroup() .addComponent(l5same) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(l5sameidx, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(l5Layout.createSequentialGroup() .addComponent(jLabel54) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(l5sip, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(l5Layout.createSequentialGroup() .addComponent(jLabel60) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(l5key, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGap(0, 356, Short.MAX_VALUE)) .addGroup(l5Layout.createSequentialGroup() .addGroup(l5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel27) .addComponent(jLabel14) .addComponent(jLabel15) .addComponent(jLabel13) .addComponent(jLabel67)) .addGap(18, 18, 18) .addGroup(l5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(l5name) .addComponent(l5pass, javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(l5auth, javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(l5user) .addComponent(l5host, javax.swing.GroupLayout.Alignment.TRAILING)))) .addContainerGap()) ); l5Layout.setVerticalGroup( l5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(l5Layout.createSequentialGroup() .addContainerGap() .addGroup(l5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(l5same) .addComponent(l5sameidx, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(l5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel67) .addComponent(l5name, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(l5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel13) .addComponent(l5user, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(l5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel27) .addComponent(l5auth, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(l5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel14) .addComponent(l5pass, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(l5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel15) .addComponent(l5host, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(l5disableVideo) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(l5secure) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(l5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel54) .addComponent(l5sip, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(l5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel60) .addComponent(l5key, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(158, Short.MAX_VALUE)) ); jTabbedPane1.addTab("Line5", l5); l6same.setText("same as "); l6same.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent evt) { l6sameItemStateChanged(evt); } }); l6sameidx.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Line 1", "Line 2", "Line 3", "Line 4", "Line 5", "Line 6" })); jLabel16.setText("Username"); jLabel17.setText("Password"); jLabel18.setText("Domain"); jLabel28.setText("Auth name"); l6disableVideo.setText("Disable Video"); l6secure.setText("Enable Encryption"); l6secure.setToolTipText("SRTP"); jLabel55.setText("SIP Transport"); l6sip.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "UDP", "TCP", "TLS" })); jLabel61.setText("Encryption Key Exchange"); l6key.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "SDP", "DTLS" })); jLabel68.setText("Display name"); javax.swing.GroupLayout l6Layout = new javax.swing.GroupLayout(l6); l6.setLayout(l6Layout); l6Layout.setHorizontalGroup( l6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(l6Layout.createSequentialGroup() .addContainerGap() .addGroup(l6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(l6Layout.createSequentialGroup() .addGroup(l6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(l6secure) .addGroup(l6Layout.createSequentialGroup() .addComponent(l6same) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(l6sameidx, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(l6disableVideo) .addGroup(l6Layout.createSequentialGroup() .addComponent(jLabel55) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(l6sip, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(l6Layout.createSequentialGroup() .addComponent(jLabel61) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(l6key, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGap(0, 356, Short.MAX_VALUE)) .addGroup(l6Layout.createSequentialGroup() .addGroup(l6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel28) .addComponent(jLabel17) .addComponent(jLabel18) .addComponent(jLabel16) .addComponent(jLabel68)) .addGap(18, 18, 18) .addGroup(l6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(l6name) .addComponent(l6pass, javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(l6auth, javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(l6user) .addComponent(l6host)))) .addContainerGap()) ); l6Layout.setVerticalGroup( l6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(l6Layout.createSequentialGroup() .addContainerGap() .addGroup(l6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(l6same) .addComponent(l6sameidx, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(l6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel68) .addComponent(l6name, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(l6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel16) .addComponent(l6user, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(l6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel28) .addComponent(l6auth, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(l6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel17) .addComponent(l6pass, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(l6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel18) .addComponent(l6host, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(l6disableVideo) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(l6secure) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(l6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel55) .addComponent(l6sip, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(l6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel61) .addComponent(l6key, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(158, Short.MAX_VALUE)) ); jTabbedPane1.addTab("Line6", l6); javax.swing.GroupLayout acctsLayout = new javax.swing.GroupLayout(accts); accts.setLayout(acctsLayout); acctsLayout.setHorizontalGroup( acctsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(acctsLayout.createSequentialGroup() .addContainerGap() .addComponent(jTabbedPane1) .addContainerGap()) ); acctsLayout.setVerticalGroup( acctsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(acctsLayout.createSequentialGroup() .addContainerGap() .addComponent(jTabbedPane1) .addContainerGap()) ); tabs.addTab("Accounts", accts); jPanel21.setBorder(javax.swing.BorderFactory.createTitledBorder("Firewall Traversal")); natGroup.add(natNone); natNone.setText("None (use local IP)"); natGroup.add(natStun); natStun.setText("STUN (detect public IP/port)"); natGroup.add(natTurn); natTurn.setText("TURN (relay RTP data)"); natGroup.add(natIce); natIce.setText("ICE (STUN + TURN)"); natPrivate.setText("Use STUN even if SIP Server is on private network"); natPrivate.setToolTipText("Private networks include 192.168.x.x, 10.x.x.x and 172.16-31.x.x"); jLabel39.setText("Server:"); jLabel49.setText("User:"); jLabel50.setText("Pass:"); rport.setText("Use rport (detect public port)"); rport.setToolTipText("Determine public port as seen by server."); received.setText("Use received (detect public IP)"); received.setToolTipText("Determine public IP as seen by server."); javax.swing.GroupLayout jPanel21Layout = new javax.swing.GroupLayout(jPanel21); jPanel21.setLayout(jPanel21Layout); jPanel21Layout.setHorizontalGroup( jPanel21Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel21Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel21Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(received) .addGroup(jPanel21Layout.createSequentialGroup() .addGroup(jPanel21Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel39) .addComponent(jLabel49) .addComponent(jLabel50)) .addGap(4, 4, 4) .addGroup(jPanel21Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(natUser, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 197, Short.MAX_VALUE) .addComponent(natHost) .addComponent(natPass))) .addComponent(natNone) .addComponent(natStun) .addComponent(natTurn) .addComponent(natIce) .addComponent(rport) .addComponent(natPrivate)) .addContainerGap(28, Short.MAX_VALUE)) ); jPanel21Layout.setVerticalGroup( jPanel21Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel21Layout.createSequentialGroup() .addContainerGap() .addComponent(natNone) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(natStun) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(natTurn) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(natIce) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(jPanel21Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel39) .addComponent(natHost, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel21Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel49) .addComponent(natUser, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel21Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel50) .addComponent(natPass, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(natPrivate) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(received) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(rport) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel22.setBorder(javax.swing.BorderFactory.createTitledBorder("Port Ranges")); sipRange.setText("SIP Port Range"); sipRange.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent evt) { sipRangeStateChanged(evt); } }); sipmin.setText("5070"); sipmin.setEnabled(false); jLabel43.setText("to"); sipmax.setText("5199"); sipmax.setEnabled(false); rtpRange.setText("RTP Port Range"); rtpRange.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent evt) { rtpRangeStateChanged(evt); } }); rtpmin.setText("32768"); rtpmin.setEnabled(false); jLabel48.setText("to"); rtpmax.setText("65535"); rtpmax.setEnabled(false); javax.swing.GroupLayout jPanel22Layout = new javax.swing.GroupLayout(jPanel22); jPanel22.setLayout(jPanel22Layout); jPanel22Layout.setHorizontalGroup( jPanel22Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel22Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel22Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(rtpRange) .addComponent(sipRange)) .addGap(18, 18, 18) .addGroup(jPanel22Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(rtpmin, javax.swing.GroupLayout.DEFAULT_SIZE, 64, Short.MAX_VALUE) .addComponent(sipmin)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel22Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel43) .addComponent(jLabel48)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel22Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(sipmax) .addComponent(rtpmax, javax.swing.GroupLayout.DEFAULT_SIZE, 66, Short.MAX_VALUE)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel22Layout.setVerticalGroup( jPanel22Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel22Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel22Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(sipRange) .addComponent(sipmin, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel43) .addComponent(sipmax, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel22Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(rtpRange) .addComponent(rtpmin, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel48) .addComponent(rtpmax, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); javax.swing.GroupLayout topologyLayout = new javax.swing.GroupLayout(topology); topology.setLayout(topologyLayout); topologyLayout.setHorizontalGroup( topologyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(topologyLayout.createSequentialGroup() .addContainerGap() .addGroup(topologyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(jPanel22, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jPanel21, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addContainerGap(249, Short.MAX_VALUE)) ); topologyLayout.setVerticalGroup( topologyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(topologyLayout.createSequentialGroup() .addContainerGap() .addComponent(jPanel21, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jPanel22, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(83, Short.MAX_VALUE)) ); tabs.addTab("Topology", topology); jLabel62.setText("In order to use DTLS Key Exchange you must generate a Certificate / Key pair"); jLabel63.setText("Your current key is : "); keyStatus.setText("???"); genCertKey.setText("Generate Self-Signed Cert/Key Pair"); genCertKey.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { genCertKeyActionPerformed(evt); } }); jLabel64.setText("dname"); dname.setText("CN=jphonelite.sourceforge.net, OU=user, O=jphonelite, C=CA"); javax.swing.GroupLayout eKeyLayout = new javax.swing.GroupLayout(eKey); eKey.setLayout(eKeyLayout); eKeyLayout.setHorizontalGroup( eKeyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(eKeyLayout.createSequentialGroup() .addContainerGap() .addGroup(eKeyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(eKeyLayout.createSequentialGroup() .addComponent(jLabel64) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(dname)) .addGroup(eKeyLayout.createSequentialGroup() .addGroup(eKeyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel62) .addGroup(eKeyLayout.createSequentialGroup() .addComponent(jLabel63) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(keyStatus)) .addComponent(genCertKey)) .addGap(0, 181, Short.MAX_VALUE))) .addContainerGap()) ); eKeyLayout.setVerticalGroup( eKeyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(eKeyLayout.createSequentialGroup() .addContainerGap() .addComponent(jLabel62) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(eKeyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel63) .addComponent(keyStatus)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(genCertKey) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(eKeyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel64) .addComponent(dname, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(370, Short.MAX_VALUE)) ); tabs.addTab("Keys", eKey); about.setColumns(20); about.setEditable(false); about.setRows(5); about.setText("..."); jScrollPane1.setViewportView(about); javax.swing.GroupLayout aboutTabLayout = new javax.swing.GroupLayout(aboutTab); aboutTab.setLayout(aboutTabLayout); aboutTabLayout.setHorizontalGroup( aboutTabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 576, Short.MAX_VALUE) .addGroup(aboutTabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(aboutTabLayout.createSequentialGroup() .addContainerGap() .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 556, Short.MAX_VALUE) .addContainerGap())) ); aboutTabLayout.setVerticalGroup( aboutTabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 470, Short.MAX_VALUE) .addGroup(aboutTabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(aboutTabLayout.createSequentialGroup() .addContainerGap() .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 448, Short.MAX_VALUE) .addContainerGap())) ); tabs.addTab("About", aboutTab); help.setText("Online Help"); help.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { helpActionPerformed(evt); } }); jButton1.setText("Donate"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(tabs) .addGroup(layout.createSequentialGroup() .addComponent(bSave) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(bCancel) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jButton1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(help))) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(tabs, javax.swing.GroupLayout.PREFERRED_SIZE, 498, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(bSave) .addComponent(bCancel) .addComponent(help) .addComponent(jButton1)) .addContainerGap()) ); pack(); }// </editor-fold>//GEN-END:initComponents private void bSaveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bSaveActionPerformed if (!validFields()) return; saveSettings(); Settings.saveSettings(); dispose(); }//GEN-LAST:event_bSaveActionPerformed private void bCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bCancelActionPerformed dispose(); }//GEN-LAST:event_bCancelActionPerformed private void selectDownloadPathActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_selectDownloadPathActionPerformed selectDownloadPath(); }//GEN-LAST:event_selectDownloadPathActionPerformed private void add_audio_codecActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_add_audio_codecActionPerformed int idx = disabled_audio_codecs.getSelectedIndex(); if (idx == -1) return; enabledAudioCodecsList.addElement((String)disabledAudioCodecsList.remove(idx)); }//GEN-LAST:event_add_audio_codecActionPerformed private void remove_audio_codecActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_remove_audio_codecActionPerformed int idx = enabled_audio_codecs.getSelectedIndex(); if (idx == -1) return; disabledAudioCodecsList.addElement((String)enabledAudioCodecsList.remove(idx)); }//GEN-LAST:event_remove_audio_codecActionPerformed private void move_audio_codec_upActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_move_audio_codec_upActionPerformed int idx = enabled_audio_codecs.getSelectedIndex(); if ((idx == -1) || (idx == 0)) return; enabledAudioCodecsList.add(idx-1, (String)enabledAudioCodecsList.remove(idx)); }//GEN-LAST:event_move_audio_codec_upActionPerformed private void move_audio_codec_downActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_move_audio_codec_downActionPerformed int cnt = enabledAudioCodecsList.getSize(); int idx = enabled_audio_codecs.getSelectedIndex(); if ((idx == -1) || (idx == cnt-1)) return; enabledAudioCodecsList.add(idx+1, (String)enabledAudioCodecsList.remove(idx)); }//GEN-LAST:event_move_audio_codec_downActionPerformed private void move_video_codec_upActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_move_video_codec_upActionPerformed int idx = enabled_video_codecs.getSelectedIndex(); if ((idx == -1) || (idx == 0)) return; enabledVideoCodecsList.add(idx-1, (String)enabledVideoCodecsList.remove(idx)); }//GEN-LAST:event_move_video_codec_upActionPerformed private void move_video_codec_downActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_move_video_codec_downActionPerformed int cnt = enabledVideoCodecsList.getSize(); int idx = enabled_video_codecs.getSelectedIndex(); if ((idx == -1) || (idx == cnt-1)) return; enabledVideoCodecsList.add(idx+1, (String)enabledVideoCodecsList.remove(idx)); }//GEN-LAST:event_move_video_codec_downActionPerformed private void add_video_codecActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_add_video_codecActionPerformed int idx = disabled_video_codecs.getSelectedIndex(); if (idx == -1) return; enabledVideoCodecsList.addElement((String)disabledVideoCodecsList.remove(idx)); }//GEN-LAST:event_add_video_codecActionPerformed private void remove_video_codecActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_remove_video_codecActionPerformed int idx = enabled_video_codecs.getSelectedIndex(); if (idx == -1) return; disabledVideoCodecsList.addElement((String)enabledVideoCodecsList.remove(idx)); }//GEN-LAST:event_remove_video_codecActionPerformed private void downloadActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_downloadActionPerformed if (MediaCoder.download()) { if (MediaCoder.init()) { download.setEnabled(false); Settings.hasFFMPEG = true; } } }//GEN-LAST:event_downloadActionPerformed private void disableVideoItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_disableVideoItemStateChanged updateVideo(); }//GEN-LAST:event_disableVideoItemStateChanged private void useNativeVideoItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_useNativeVideoItemStateChanged updateVideo(); }//GEN-LAST:event_useNativeVideoItemStateChanged private void visitWebSiteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_visitWebSiteActionPerformed try { java.awt.Desktop.getDesktop().browse(new java.net.URI("http://javaforce.sourceforge.net/codecpack.php")); } catch (Exception e) { JFLog.log(e); } }//GEN-LAST:event_visitWebSiteActionPerformed private void sipRangeStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_sipRangeStateChanged boolean state = sipRange.isSelected(); sipmin.setEnabled(state); sipmax.setEnabled(state); }//GEN-LAST:event_sipRangeStateChanged private void rtpRangeStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_rtpRangeStateChanged boolean state = rtpRange.isSelected(); rtpmin.setEnabled(state); rtpmax.setEnabled(state); }//GEN-LAST:event_rtpRangeStateChanged private void l2sameItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_l2sameItemStateChanged boolean state = !l2same.isSelected(); l2name.setEnabled(state); l2user.setEnabled(state); l2auth.setEnabled(state); l2pass.setEnabled(state); l2host.setEnabled(state); l2disableVideo.setEnabled(state); l2secure.setEnabled(state); l2sip.setEnabled(state); l2key.setEnabled(state); }//GEN-LAST:event_l2sameItemStateChanged private void l3sameItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_l3sameItemStateChanged boolean state = !l3same.isSelected(); l3name.setEnabled(state); l3user.setEnabled(state); l3auth.setEnabled(state); l3pass.setEnabled(state); l3host.setEnabled(state); l3disableVideo.setEnabled(state); l3secure.setEnabled(state); l3sip.setEnabled(state); l3key.setEnabled(state); }//GEN-LAST:event_l3sameItemStateChanged private void l4sameItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_l4sameItemStateChanged boolean state = !l4same.isSelected(); l4name.setEnabled(state); l4user.setEnabled(state); l4auth.setEnabled(state); l4pass.setEnabled(state); l4host.setEnabled(state); l4disableVideo.setEnabled(state); l4secure.setEnabled(state); l4sip.setEnabled(state); l4key.setEnabled(state); }//GEN-LAST:event_l4sameItemStateChanged private void l5sameItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_l5sameItemStateChanged boolean state = !l5same.isSelected(); l5name.setEnabled(state); l5user.setEnabled(state); l5auth.setEnabled(state); l5pass.setEnabled(state); l5host.setEnabled(state); l5disableVideo.setEnabled(state); l5secure.setEnabled(state); l5sip.setEnabled(state); l5key.setEnabled(state); }//GEN-LAST:event_l5sameItemStateChanged private void l6sameItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_l6sameItemStateChanged boolean state = !l6same.isSelected(); l6name.setEnabled(state); l6user.setEnabled(state); l6auth.setEnabled(state); l6pass.setEnabled(state); l6host.setEnabled(state); l6disableVideo.setEnabled(state); l6secure.setEnabled(state); l6sip.setEnabled(state); l6key.setEnabled(state); }//GEN-LAST:event_l6sameItemStateChanged private void genCertKeyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_genCertKeyActionPerformed genKeys(); }//GEN-LAST:event_genCertKeyActionPerformed private void selectInRingtoneActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_selectInRingtoneActionPerformed selectInRingtoneFilename(); }//GEN-LAST:event_selectInRingtoneActionPerformed private void selectOutRingtoneActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_selectOutRingtoneActionPerformed selectOutRingtoneFilename(); }//GEN-LAST:event_selectOutRingtoneActionPerformed private void helpActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_helpActionPerformed JF.openURL("http://javaforce.sourceforge.net/help.php"); }//GEN-LAST:event_helpActionPerformed private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed JF.donate(); }//GEN-LAST:event_jButton1ActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JTextArea about; private javax.swing.JPanel aboutTab; private javax.swing.JPanel accts; private javax.swing.JButton add_audio_codec; private javax.swing.JButton add_video_codec; private javax.swing.JCheckBox alwaysOnTop; private javax.swing.JPanel audio; private javax.swing.JComboBox audioInput; private javax.swing.JComboBox audioOutput; private javax.swing.JCheckBox autohold; private javax.swing.JButton bCancel; private javax.swing.JButton bSave; private javax.swing.JLabel bits; private javax.swing.JCheckBox checkVersion; private javax.swing.JCheckBox disableLogging; private javax.swing.JRadioButton disableVideo; private javax.swing.JList disabled_audio_codecs; private javax.swing.JList disabled_video_codecs; private javax.swing.JTextField dname; private javax.swing.JTextField dndCodeOff; private javax.swing.JTextField dndCodeOn; private javax.swing.JButton download; private javax.swing.JTextField downloadPath; private javax.swing.JPanel eKey; private javax.swing.JList enabled_audio_codecs; private javax.swing.JList enabled_video_codecs; private javax.swing.JCheckBox exitWhenClosed; private javax.swing.JButton genCertKey; private javax.swing.JPanel general; private javax.swing.JButton help; private javax.swing.JCheckBox hideWhenMinimized; private javax.swing.JComboBox inRingtone; private javax.swing.JButton jButton1; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel10; private javax.swing.JLabel jLabel11; private javax.swing.JLabel jLabel12; private javax.swing.JLabel jLabel13; private javax.swing.JLabel jLabel14; private javax.swing.JLabel jLabel15; private javax.swing.JLabel jLabel16; private javax.swing.JLabel jLabel17; private javax.swing.JLabel jLabel18; private javax.swing.JLabel jLabel19; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel20; private javax.swing.JLabel jLabel21; private javax.swing.JLabel jLabel22; private javax.swing.JLabel jLabel23; private javax.swing.JLabel jLabel24; private javax.swing.JLabel jLabel25; private javax.swing.JLabel jLabel26; private javax.swing.JLabel jLabel27; private javax.swing.JLabel jLabel28; private javax.swing.JLabel jLabel29; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel30; private javax.swing.JLabel jLabel31; private javax.swing.JLabel jLabel32; private javax.swing.JLabel jLabel33; private javax.swing.JLabel jLabel34; private javax.swing.JLabel jLabel35; private javax.swing.JLabel jLabel36; private javax.swing.JLabel jLabel37; private javax.swing.JLabel jLabel38; private javax.swing.JLabel jLabel39; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel40; private javax.swing.JLabel jLabel41; private javax.swing.JLabel jLabel42; private javax.swing.JLabel jLabel43; private javax.swing.JLabel jLabel44; private javax.swing.JLabel jLabel45; private javax.swing.JLabel jLabel46; private javax.swing.JLabel jLabel47; private javax.swing.JLabel jLabel48; private javax.swing.JLabel jLabel49; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel50; private javax.swing.JLabel jLabel51; private javax.swing.JLabel jLabel52; private javax.swing.JLabel jLabel53; private javax.swing.JLabel jLabel54; private javax.swing.JLabel jLabel55; private javax.swing.JLabel jLabel56; private javax.swing.JLabel jLabel57; private javax.swing.JLabel jLabel58; private javax.swing.JLabel jLabel59; private javax.swing.JLabel jLabel6; private javax.swing.JLabel jLabel60; private javax.swing.JLabel jLabel61; private javax.swing.JLabel jLabel62; private javax.swing.JLabel jLabel63; private javax.swing.JLabel jLabel64; private javax.swing.JLabel jLabel65; private javax.swing.JLabel jLabel66; private javax.swing.JLabel jLabel67; private javax.swing.JLabel jLabel68; private javax.swing.JLabel jLabel7; private javax.swing.JLabel jLabel8; private javax.swing.JLabel jLabel9; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel10; private javax.swing.JPanel jPanel11; private javax.swing.JPanel jPanel13; private javax.swing.JPanel jPanel14; private javax.swing.JPanel jPanel15; private javax.swing.JPanel jPanel17; private javax.swing.JPanel jPanel18; private javax.swing.JPanel jPanel19; private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel21; private javax.swing.JPanel jPanel22; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPane2; private javax.swing.JScrollPane jScrollPane3; private javax.swing.JScrollPane jScrollPane4; private javax.swing.JScrollPane jScrollPane5; private javax.swing.JTabbedPane jTabbedPane1; private javax.swing.JCheckBox keepAudioOpen; private javax.swing.JLabel keyStatus; private javax.swing.JPanel l1; private javax.swing.JTextField l1auth; private javax.swing.JCheckBox l1disableVideo; private javax.swing.JTextField l1host; private javax.swing.JComboBox l1key; private javax.swing.JTextField l1name; private javax.swing.JPasswordField l1pass; private javax.swing.JCheckBox l1secure; private javax.swing.JComboBox l1sip; private javax.swing.JTextField l1user; private javax.swing.JPanel l2; private javax.swing.JTextField l2auth; private javax.swing.JCheckBox l2disableVideo; private javax.swing.JTextField l2host; private javax.swing.JComboBox l2key; private javax.swing.JTextField l2name; private javax.swing.JPasswordField l2pass; private javax.swing.JCheckBox l2same; private javax.swing.JComboBox l2sameidx; private javax.swing.JCheckBox l2secure; private javax.swing.JComboBox l2sip; private javax.swing.JTextField l2user; private javax.swing.JPanel l3; private javax.swing.JTextField l3auth; private javax.swing.JCheckBox l3disableVideo; private javax.swing.JTextField l3host; private javax.swing.JComboBox l3key; private javax.swing.JTextField l3name; private javax.swing.JPasswordField l3pass; private javax.swing.JCheckBox l3same; private javax.swing.JComboBox l3sameidx; private javax.swing.JCheckBox l3secure; private javax.swing.JComboBox l3sip; private javax.swing.JTextField l3user; private javax.swing.JPanel l4; private javax.swing.JTextField l4auth; private javax.swing.JCheckBox l4disableVideo; private javax.swing.JTextField l4host; private javax.swing.JComboBox l4key; private javax.swing.JTextField l4name; private javax.swing.JPasswordField l4pass; private javax.swing.JCheckBox l4same; private javax.swing.JComboBox l4sameidx; private javax.swing.JCheckBox l4secure; private javax.swing.JComboBox l4sip; private javax.swing.JTextField l4user; private javax.swing.JPanel l5; private javax.swing.JTextField l5auth; private javax.swing.JCheckBox l5disableVideo; private javax.swing.JTextField l5host; private javax.swing.JComboBox l5key; private javax.swing.JTextField l5name; private javax.swing.JPasswordField l5pass; private javax.swing.JCheckBox l5same; private javax.swing.JComboBox l5sameidx; private javax.swing.JCheckBox l5secure; private javax.swing.JComboBox l5sip; private javax.swing.JTextField l5user; private javax.swing.JPanel l6; private javax.swing.JTextField l6auth; private javax.swing.JCheckBox l6disableVideo; private javax.swing.JTextField l6host; private javax.swing.JComboBox l6key; private javax.swing.JTextField l6name; private javax.swing.JPasswordField l6pass; private javax.swing.JCheckBox l6same; private javax.swing.JComboBox l6sameidx; private javax.swing.JCheckBox l6secure; private javax.swing.JComboBox l6sip; private javax.swing.JTextField l6user; private javax.swing.JButton move_audio_codec_down; private javax.swing.JButton move_audio_codec_up; private javax.swing.JButton move_video_codec_down; private javax.swing.JButton move_video_codec_up; private javax.swing.ButtonGroup natGroup; private javax.swing.JTextField natHost; private javax.swing.JRadioButton natIce; private javax.swing.JRadioButton natNone; private javax.swing.JPasswordField natPass; private javax.swing.JCheckBox natPrivate; private javax.swing.JRadioButton natStun; private javax.swing.JRadioButton natTurn; private javax.swing.JTextField natUser; private javax.swing.JComboBox outRingtone; private javax.swing.JCheckBox received; private javax.swing.JCheckBox reinvite; private javax.swing.JButton remove_audio_codec; private javax.swing.JButton remove_video_codec; private javax.swing.JCheckBox rport; private javax.swing.JCheckBox rtpRange; private javax.swing.JTextField rtpmax; private javax.swing.JTextField rtpmin; private javax.swing.JButton selectDownloadPath; private javax.swing.JButton selectInRingtone; private javax.swing.JButton selectOutRingtone; private javax.swing.JTextField sipExpires; private javax.swing.JCheckBox sipRange; private javax.swing.JTextField sipmax; private javax.swing.JTextField sipmin; private javax.swing.JCheckBox smallerFont; private javax.swing.ButtonGroup soundGroup; private javax.swing.JTextField speakerDelay; private javax.swing.JTextField speakerThreshold; private javax.swing.JTabbedPane tabs; private javax.swing.JPanel topology; private javax.swing.JRadioButton useNativeVideo; private javax.swing.JCheckBox usePublish; private javax.swing.JPanel video; private javax.swing.JComboBox videoDevice; private javax.swing.JSlider videoFPS; private javax.swing.ButtonGroup videoGroup; private javax.swing.JButton visitWebSite; // End of variables declaration//GEN-END:variables private DefaultListModel disabledAudioCodecsList = new DefaultListModel(); private DefaultListModel enabledAudioCodecsList = new DefaultListModel(); private DefaultListModel disabledVideoCodecsList = new DefaultListModel(); private DefaultListModel enabledVideoCodecsList = new DefaultListModel(); /** Pops up the EditSettings dialog window and returns when the dialog is closed. */ public static void editSettings(java.awt.Frame parent) { EditSettings dialog = new EditSettings(parent, true); dialog.setVisible(true); //doesn't return until dialog is closed } private boolean validFieldNumber(String str, int min, int max) { if (!validField(str)) return false; for(int a=0;a<str.length();a++) if ((str.charAt(a) < '0') || (str.charAt(a) > '9')) return false; int value = JF.atoi(str); if ((value < min) || (value > max)) return false; return true; } private boolean validFieldHexNumber(String str) { if (!validField(str)) return false; if (str.length() != 6) return false; for(int a=0;a<str.length();a++) { if ( ((str.charAt(a) < '0') || (str.charAt(a) > '9')) && ((str.charAt(a) < 'A') || (str.charAt(a) > 'F')) && ((str.charAt(a) < 'a') || (str.charAt(a) > 'f')) ) return false; } return true; } private boolean validField(String str) { if (str.length() == 0) return false; if (str.indexOf('\"') != -1) return false; if (str.indexOf('\'') != -1) return false; return true; } public final static int MIN = 16; public final static int MAX = 256; private boolean validFields() { if (getAudioCodecs() == null) { JF.showError("Error", "Must enable at least one audio codec"); return false; } //check if port ranges are valid int smin = JF.atoi(sipmin.getText()); int smax = JF.atoi(sipmax.getText()); if (sipRange.isSelected()) { if ((smin <= 0) || (smax <= 0) || (smin > 65535) || (smax > 65535) || (smin > smax) || (smax-smin < 32)) { JF.showError("Error", "SIP Port Range must include at least 32 ports"); return false; } if (Settings.isLinux && smin < 1024) { JF.showError("Error", "SIP Port Range must be > 1024 for Linux"); return false; } } int rmin = JF.atoi(rtpmin.getText()); int rmax = JF.atoi(rtpmax.getText()); if (rtpRange.isSelected()) { if ((rmin <= 0) || (rmax <= 0) || (rmin > 65535) || (rmax > 65535) || (rmin > rmax) || (rmax-rmin < 128)) { JF.showError("Error", "RTP Port Range must include at least 128 ports"); return false; } if ((rmin & 0x1) == 0x1) { JF.showError("Error", "RTP Port Range must start on an even port"); return false; } if (Settings.isLinux && rmin < 1024) { JF.showError("Error", "RTP Port Range must be > 1024 for Linux"); return false; } } if (sipRange.isSelected() && rtpRange.isSelected()) { if ( (smin >= rmin && smin <= rmax) || (smax >= rmin && smax <= rmax) || (smin <= rmin && smax >= rmax) ) { JF.showError("Error", "SIP and RTP Port Ranges must not overlap"); return false; } } int sipexpires = JF.atoi(sipExpires.getText()); if (sipexpires < 60 || sipexpires > 3600) { JF.showError("Error", "SIP Expires must be 60 to 3600 seconds."); return false; } return true; } private void loadSettings() { int idx; l1name.setText(Settings.current.lines[0].name); l1user.setText(Settings.current.lines[0].user); l1auth.setText(Settings.current.lines[0].auth); l1pass.setText(Settings.getPassword(Settings.current.lines[0].pass)); l1host.setText(Settings.current.lines[0].host); l1disableVideo.setSelected(Settings.current.lines[0].disableVideo); l1secure.setSelected(Settings.current.lines[0].srtp); l1sip.setSelectedIndex(Settings.current.lines[0].transport); l1key.setSelectedIndex(Settings.current.lines[0].dtls ? 1 : 0); l2name.setText(Settings.current.lines[1].name); l2user.setText(Settings.current.lines[1].user); l2auth.setText(Settings.current.lines[1].auth); l2pass.setText(Settings.getPassword(Settings.current.lines[1].pass)); l2host.setText(Settings.current.lines[1].host); l2same.setSelected(Settings.current.lines[1].same != -1); l2disableVideo.setSelected(Settings.current.lines[1].disableVideo); l2secure.setSelected(Settings.current.lines[1].srtp); l2sip.setSelectedIndex(Settings.current.lines[1].transport); l2key.setSelectedIndex(Settings.current.lines[1].dtls ? 1 : 0); idx = Settings.current.lines[1].same; if (idx != -1) l2sameidx.setSelectedIndex((idx > 0 ? idx-1 : idx)); else l2sameidx.setSelectedIndex(0); l3name.setText(Settings.current.lines[2].name); l3user.setText(Settings.current.lines[2].user); l3auth.setText(Settings.current.lines[2].auth); l3pass.setText(Settings.getPassword(Settings.current.lines[2].pass)); l3host.setText(Settings.current.lines[2].host); l3same.setSelected(Settings.current.lines[2].same != -1); l3disableVideo.setSelected(Settings.current.lines[2].disableVideo); l3secure.setSelected(Settings.current.lines[2].srtp); l3sip.setSelectedIndex(Settings.current.lines[2].transport); l3key.setSelectedIndex(Settings.current.lines[2].dtls ? 1 : 0); idx = Settings.current.lines[2].same; if (idx != -1) l3sameidx.setSelectedIndex((idx > 1 ? idx-1 : idx)); else l3sameidx.setSelectedIndex(0); l4name.setText(Settings.current.lines[3].name); l4user.setText(Settings.current.lines[3].user); l4auth.setText(Settings.current.lines[3].auth); l4pass.setText(Settings.getPassword(Settings.current.lines[3].pass)); l4host.setText(Settings.current.lines[3].host); l4same.setSelected(Settings.current.lines[3].same != -1); l4disableVideo.setSelected(Settings.current.lines[3].disableVideo); l4secure.setSelected(Settings.current.lines[3].srtp); l4sip.setSelectedIndex(Settings.current.lines[3].transport); l4key.setSelectedIndex(Settings.current.lines[3].dtls ? 1 : 0); idx = Settings.current.lines[3].same; if (idx != -1) l4sameidx.setSelectedIndex((idx > 2 ? idx-1 : idx)); else l4sameidx.setSelectedIndex(0); l5name.setText(Settings.current.lines[4].name); l5user.setText(Settings.current.lines[4].user); l5auth.setText(Settings.current.lines[4].auth); l5pass.setText(Settings.getPassword(Settings.current.lines[4].pass)); l5host.setText(Settings.current.lines[4].host); l5same.setSelected(Settings.current.lines[4].same != -1); l5disableVideo.setSelected(Settings.current.lines[4].disableVideo); l5secure.setSelected(Settings.current.lines[4].srtp); l5sip.setSelectedIndex(Settings.current.lines[4].transport); l5key.setSelectedIndex(Settings.current.lines[4].dtls ? 1 : 0); idx = Settings.current.lines[4].same; if (idx != -1) l5sameidx.setSelectedIndex((idx > 3 ? idx-1 : idx)); else l5sameidx.setSelectedIndex(0); l6name.setText(Settings.current.lines[5].name); l6user.setText(Settings.current.lines[5].user); l6auth.setText(Settings.current.lines[5].auth); l6pass.setText(Settings.getPassword(Settings.current.lines[5].pass)); l6host.setText(Settings.current.lines[5].host); l6same.setSelected(Settings.current.lines[5].same != -1); l6disableVideo.setSelected(Settings.current.lines[5].disableVideo); l6secure.setSelected(Settings.current.lines[5].srtp); l6sip.setSelectedIndex(Settings.current.lines[5].transport); l6key.setSelectedIndex(Settings.current.lines[5].dtls ? 1 : 0); idx = Settings.current.lines[5].same; if (idx != -1) l6sameidx.setSelectedIndex(idx); else l6sameidx.setSelectedIndex(0); downloadPath.setText(Settings.current.downloadPath); inRingtone.addItem("Standard Ring"); inRingtone.addItem("North America Backtone"); inRingtone.addItem("Europe Backtone"); if (Settings.current.inRingtone.equals("*RING")) { inRingtone.setSelectedIndex(0); } else if (Settings.current.inRingtone.equals("*NA")) { inRingtone.setSelectedIndex(1); } else if (Settings.current.inRingtone.equals("*UK")) { inRingtone.setSelectedIndex(2); } else { inRingtone.addItem(Settings.current.inRingtone); inRingtone.setSelectedIndex(3); } outRingtone.addItem("Standard Ring"); outRingtone.addItem("North America Backtone"); outRingtone.addItem("Europe Backtone"); if (Settings.current.outRingtone.equals("*RING")) { outRingtone.setSelectedIndex(0); } else if (Settings.current.outRingtone.equals("*NA")) { outRingtone.setSelectedIndex(1); } else if (Settings.current.outRingtone.equals("*UK")) { outRingtone.setSelectedIndex(2); } else { outRingtone.addItem(Settings.current.outRingtone); outRingtone.setSelectedIndex(3); } dndCodeOn.setText(Settings.current.dndCodeOn); dndCodeOff.setText(Settings.current.dndCodeOff); speakerThreshold.setText("" + Settings.current.speakerThreshold); speakerDelay.setText("" + Settings.current.speakerDelay); checkVersion.setSelected(Settings.current.checkVersion); disableLogging.setSelected(Settings.current.disableLogging); hideWhenMinimized.setSelected(Settings.current.hideWhenMinimized); exitWhenClosed.setSelected(Settings.current.exitWhenClosed); alwaysOnTop.setSelected(Settings.current.alwaysOnTop); keepAudioOpen.setSelected(Settings.current.keepAudioOpen); smallerFont.setSelected(Settings.current.smallerFont); usePublish.setSelected(Settings.current.usePublish); reinvite.setSelected(Settings.current.reinvite); autohold.setSelected(Settings.current.autohold); //audio codecs if ((Settings.current.audioCodecs == null) || (Settings.current.audioCodecs.length() == 0)) { Settings.current.audioCodecs = "G729,PCMU"; } disabledAudioCodecsList.clear(); enabledAudioCodecsList.clear(); String codecs[] = Settings.current.getAudioCodecs(); for(int a=0;a<codecs.length;a++) { if (codecs[a].equals("PCMU")) enabledAudioCodecsList.addElement("g711u"); if (codecs[a].equals("PCMA")) enabledAudioCodecsList.addElement("g711a"); if (codecs[a].equals("GSM")) enabledAudioCodecsList.addElement("gsm"); if (codecs[a].equals("G722")) enabledAudioCodecsList.addElement("g722"); if (codecs[a].equals("G729")) enabledAudioCodecsList.addElement("g729a"); } if (!Settings.current.hasAudioCodec(RTP.CODEC_G711u)) { disabledAudioCodecsList.addElement("g711u"); } if (!Settings.current.hasAudioCodec(RTP.CODEC_G711a)) { disabledAudioCodecsList.addElement("g711a"); } if (!Settings.current.hasAudioCodec(RTP.CODEC_GSM)) { disabledAudioCodecsList.addElement("gsm"); } if (!Settings.current.hasAudioCodec(RTP.CODEC_G722)) { disabledAudioCodecsList.addElement("g722"); } if (!Settings.current.hasAudioCodec(RTP.CODEC_G729a)) { disabledAudioCodecsList.addElement("g729a"); } //video codecs if ((Settings.current.videoCodecs == null) || (Settings.current.videoCodecs.length() == 0)) { Settings.current.videoCodecs = "VP8,H264,H263-1998,H263-2000,JPEG"; } disabledVideoCodecsList.clear(); enabledVideoCodecsList.clear(); codecs = Settings.current.getVideoCodecs(); for(int a=0;a<codecs.length;a++) { if (codecs[a].equals("JPEG")) enabledVideoCodecsList.addElement("JPEG"); if (useH263) { if (codecs[a].equals("H263")) enabledVideoCodecsList.addElement("H.263"); } if (codecs[a].equals("H263-1998")) enabledVideoCodecsList.addElement("H.263(1998)"); if (codecs[a].equals("H263-2000")) enabledVideoCodecsList.addElement("H.263(2000)"); if (codecs[a].equals("H264")) enabledVideoCodecsList.addElement("H.264"); if (codecs[a].equals("VP8")) enabledVideoCodecsList.addElement("VP8"); } if (!Settings.current.hasVideoCodec(RTP.CODEC_JPEG)) { disabledVideoCodecsList.addElement("JPEG"); } if (useH263) { if (!Settings.current.hasVideoCodec(RTP.CODEC_H263)) { disabledVideoCodecsList.addElement("H.263"); } } if (!Settings.current.hasVideoCodec(RTP.CODEC_H263_1998)) { disabledVideoCodecsList.addElement("H.263(1998)"); } if (!Settings.current.hasVideoCodec(RTP.CODEC_H263_2000)) { disabledVideoCodecsList.addElement("H.263(2000)"); } if (!Settings.current.hasVideoCodec(RTP.CODEC_H264)) { disabledVideoCodecsList.addElement("H.264"); } if (!Settings.current.hasVideoCodec(RTP.CODEC_VP8)) { disabledVideoCodecsList.addElement("VP8"); } disableVideo.setSelected(!Settings.current.nativeVideo); useNativeVideo.setSelected(Settings.current.nativeVideo); switch (Settings.current.nat) { case 0: natNone.setSelected(true); break; case 1: natNone.setSelected(true); break; case 2: natStun.setSelected(true); break; case 3: natTurn.setSelected(true); break; case 4: natIce.setSelected(true); break; } natPrivate.setSelected(Settings.current.natPrivate); natHost.setText(Settings.current.natHost); natUser.setText(Settings.current.natUser); natPass.setText(Settings.current.natPass); sipRange.setSelected(Settings.current.sipRange); sipmin.setText(Integer.toString(Settings.current.sipmin)); sipmax.setText(Integer.toString(Settings.current.sipmax)); rtpRange.setSelected(Settings.current.rtpRange); rtpmin.setText(Integer.toString(Settings.current.rtpmin)); rtpmax.setText(Integer.toString(Settings.current.rtpmax)); sipExpires.setText(Integer.toString(Settings.current.sipexpires)); received.setSelected(Settings.current.received); rport.setSelected(Settings.current.rport); updateAudio(); updateVideo(); } private void saveSettings() { Settings.current.lines[0].name = l1name.getText(); Settings.current.lines[0].user = l1user.getText(); Settings.current.lines[0].auth = l1auth.getText(); Settings.current.lines[0].pass = "crypto(1," + Settings.encodePassword(l1pass.getPassword()) + ")"; Settings.current.lines[0].host = l1host.getText(); Settings.current.lines[0].same = -1; Settings.current.lines[0].disableVideo = l1disableVideo.isSelected(); Settings.current.lines[0].srtp = l1secure.isSelected(); Settings.current.lines[0].transport = l1sip.getSelectedIndex(); Settings.current.lines[0].dtls = l1key.getSelectedIndex() == 1; Settings.current.lines[1].name = l2name.getText(); Settings.current.lines[1].user = l2user.getText(); Settings.current.lines[1].auth = l2auth.getText(); Settings.current.lines[1].pass = "crypto(1," + Settings.encodePassword(l2pass.getPassword()) + ")"; Settings.current.lines[1].host = l2host.getText(); Settings.current.lines[1].disableVideo = l2disableVideo.isSelected(); Settings.current.lines[1].srtp = l2secure.isSelected(); Settings.current.lines[1].transport = l2sip.getSelectedIndex(); Settings.current.lines[1].dtls = l2key.getSelectedIndex() == 1; if (l2same.isSelected()) Settings.current.lines[1].same = l2sameidx.getSelectedIndex(); else Settings.current.lines[1].same = -1; if (Settings.current.lines[1].same > 0) Settings.current.lines[1].same++; Settings.current.lines[2].name = l3name.getText(); Settings.current.lines[2].user = l3user.getText(); Settings.current.lines[2].auth = l3auth.getText(); Settings.current.lines[2].pass = "crypto(1," + Settings.encodePassword(l3pass.getPassword()) + ")"; Settings.current.lines[2].host = l3host.getText(); Settings.current.lines[2].disableVideo = l3disableVideo.isSelected(); Settings.current.lines[2].srtp = l3secure.isSelected(); Settings.current.lines[2].transport = l3sip.getSelectedIndex(); Settings.current.lines[2].dtls = l3key.getSelectedIndex() == 1; if (l3same.isSelected()) Settings.current.lines[2].same = l3sameidx.getSelectedIndex(); else Settings.current.lines[2].same = -1; if (Settings.current.lines[2].same > 1) Settings.current.lines[2].same++; Settings.current.lines[3].name = l4name.getText(); Settings.current.lines[3].user = l4user.getText(); Settings.current.lines[3].auth = l4auth.getText(); Settings.current.lines[3].pass = "crypto(1," + Settings.encodePassword(l4pass.getPassword()) + ")"; Settings.current.lines[3].host = l4host.getText(); Settings.current.lines[3].disableVideo = l4disableVideo.isSelected(); Settings.current.lines[3].srtp = l4secure.isSelected(); Settings.current.lines[3].transport = l4sip.getSelectedIndex(); Settings.current.lines[3].dtls = l4key.getSelectedIndex() == 1; if (l4same.isSelected()) Settings.current.lines[3].same = l4sameidx.getSelectedIndex(); else Settings.current.lines[3].same = -1; if (Settings.current.lines[3].same > 2) Settings.current.lines[3].same++; Settings.current.lines[4].name = l5name.getText(); Settings.current.lines[4].user = l5user.getText(); Settings.current.lines[4].auth = l5auth.getText(); Settings.current.lines[4].pass = "crypto(1," + Settings.encodePassword(l5pass.getPassword()) + ")"; Settings.current.lines[4].host = l5host.getText(); Settings.current.lines[4].disableVideo = l5disableVideo.isSelected(); Settings.current.lines[4].srtp = l5secure.isSelected(); Settings.current.lines[4].transport = l5sip.getSelectedIndex(); Settings.current.lines[4].dtls = l5key.getSelectedIndex() == 1; if (l5same.isSelected()) Settings.current.lines[4].same = l5sameidx.getSelectedIndex(); else Settings.current.lines[4].same = -1; if (Settings.current.lines[4].same > 3) Settings.current.lines[4].same++; Settings.current.lines[5].name = l6name.getText(); Settings.current.lines[5].user = l6user.getText(); Settings.current.lines[5].auth = l6auth.getText(); Settings.current.lines[5].pass = "crypto(1," + Settings.encodePassword(l6pass.getPassword()) + ")"; Settings.current.lines[5].host = l6host.getText(); Settings.current.lines[5].disableVideo = l6disableVideo.isSelected(); Settings.current.lines[5].srtp = l6secure.isSelected(); Settings.current.lines[5].transport = l6sip.getSelectedIndex(); Settings.current.lines[5].dtls = l6key.getSelectedIndex() == 1; if (l6same.isSelected()) Settings.current.lines[5].same = l6sameidx.getSelectedIndex(); else Settings.current.lines[5].same = -1; Settings.current.downloadPath = downloadPath.getText(); switch (inRingtone.getSelectedIndex()) { case 0: Settings.current.inRingtone = "*RING"; break; case 1: Settings.current.inRingtone = "*NA"; break; case 2: Settings.current.inRingtone = "*UK"; break; case 3: Settings.current.inRingtone = (String)inRingtone.getSelectedItem(); break; } switch (outRingtone.getSelectedIndex()) { case 0: Settings.current.outRingtone = "*RING"; break; case 1: Settings.current.outRingtone = "*NA"; break; case 2: Settings.current.outRingtone = "*UK"; break; case 3: Settings.current.outRingtone = (String)outRingtone.getSelectedItem(); break; } Settings.current.dndCodeOn = dndCodeOn.getText(); Settings.current.dndCodeOff = dndCodeOff.getText(); try { Settings.current.speakerThreshold = Integer.valueOf(speakerThreshold.getText()); } catch (Exception e1) { Settings.current.speakerThreshold = 1000; } try { Settings.current.speakerDelay = Integer.valueOf(speakerDelay.getText()); } catch (Exception e1) { Settings.current.speakerDelay = 1000; } Settings.current.checkVersion = checkVersion.isSelected(); Settings.current.disableLogging = disableLogging.isSelected(); Settings.current.hideWhenMinimized = hideWhenMinimized.isSelected(); Settings.current.exitWhenClosed = exitWhenClosed.isSelected(); Settings.current.alwaysOnTop = alwaysOnTop.isSelected(); Settings.current.keepAudioOpen = keepAudioOpen.isSelected(); Settings.current.smallerFont = smallerFont.isSelected(); Settings.current.usePublish = usePublish.isSelected(); Settings.current.reinvite = reinvite.isSelected(); Settings.current.autohold = autohold.isSelected(); Settings.current.audioCodecs = getAudioCodecs(); Settings.current.videoCodecs = getVideoCodecs(); if (disableVideo.isSelected()) Settings.current.nativeVideo = false; if (useNativeVideo.isSelected()) Settings.current.nativeVideo = true; Settings.current.audioInput = (String)audioInput.getSelectedItem(); Settings.current.audioOutput = (String)audioOutput.getSelectedItem(); Settings.current.videoDevice = (String)videoDevice.getSelectedItem(); // Settings.current.videoResolution = (String)videoResolution.getSelectedItem(); Settings.current.videoFPS = videoFPS.getValue(); if (natNone.isSelected()) Settings.current.nat = 0; if (natStun.isSelected()) Settings.current.nat = 2; if (natTurn.isSelected()) Settings.current.nat = 3; if (natIce.isSelected()) Settings.current.nat = 4; Settings.current.natPrivate = natPrivate.isSelected(); Settings.current.natHost = natHost.getText(); Settings.current.natUser = natUser.getText(); Settings.current.natPass = new String(natPass.getPassword()); Settings.current.sipRange = sipRange.isSelected(); Settings.current.sipmin = JF.atoi(sipmin.getText()); Settings.current.sipmax = JF.atoi(sipmax.getText()); Settings.current.rtpRange = rtpRange.isSelected(); Settings.current.rtpmin = JF.atoi(rtpmin.getText()); Settings.current.rtpmax = JF.atoi(rtpmax.getText()); Settings.current.sipexpires = JF.atoi(sipExpires.getText()); Settings.current.received = received.isSelected(); Settings.current.rport = rport.isSelected(); } private void selectDownloadPath() { JFileChooser chooser = new JFileChooser(); chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); chooser.setMultiSelectionEnabled(false); chooser.setCurrentDirectory(new File(downloadPath.getText())); if (chooser.showOpenDialog(this) != JFileChooser.APPROVE_OPTION) return; downloadPath.setText(chooser.getSelectedFile().toString().replaceAll("\\\\", "/")); } private void selectInRingtoneFilename() { JFileChooser chooser = new JFileChooser(); chooser.setFileSelectionMode(JFileChooser.FILES_ONLY); chooser.setMultiSelectionEnabled(false); chooser.setCurrentDirectory(new File(JF.getUserPath())); chooser.setFileFilter(new FileNameExtensionFilter("WAV", "wav")); if (chooser.showOpenDialog(this) != JFileChooser.APPROVE_OPTION) return; String fn = chooser.getSelectedFile().toString().replaceAll("\\\\", "/"); if (inRingtone.getItemCount() == 4) { inRingtone.removeItemAt(3); } inRingtone.addItem(fn); inRingtone.setSelectedIndex(3); } private void selectOutRingtoneFilename() { JFileChooser chooser = new JFileChooser(); chooser.setFileSelectionMode(JFileChooser.FILES_ONLY); chooser.setMultiSelectionEnabled(false); chooser.setCurrentDirectory(new File(JF.getUserPath())); chooser.setFileFilter(new FileNameExtensionFilter("WAV", "wav")); if (chooser.showOpenDialog(this) != JFileChooser.APPROVE_OPTION) return; String fn = chooser.getSelectedFile().toString().replaceAll("\\\\", "/"); if (outRingtone.getItemCount() == 4) { outRingtone.removeItemAt(3); } outRingtone.addItem(fn); outRingtone.setSelectedIndex(3); } private void setPosition() { Dimension d = getSize(); Rectangle s = GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds(); setLocation(s.width/2 - d.width/2, s.height/2 - d.height/2); } private String getAudioCodecs() { int cnt = enabledAudioCodecsList.getSize(); if (cnt == 0) return null; StringBuilder sb = new StringBuilder(); for(int a=0;a<cnt;a++) { if (sb.length() > 0) sb.append(","); String codec = (String)enabledAudioCodecsList.get(a); if (codec.equals("g711u")) sb.append("PCMU"); if (codec.equals("g711a")) sb.append("PCMA"); if (codec.equals("gsm")) sb.append("GSM"); if (codec.equals("g722")) sb.append("G722"); if (codec.equals("g729a")) sb.append("G729"); } return sb.toString(); } private String getVideoCodecs() { int cnt = enabledVideoCodecsList.getSize(); if (cnt == 0) return null; StringBuilder sb = new StringBuilder(); for(int a=0;a<cnt;a++) { if (sb.length() > 0) sb.append(","); String codec = (String)enabledVideoCodecsList.get(a); if (codec.equals("JPEG")) sb.append("JPEG"); if (useH263) { if (codec.equals("H.263")) sb.append("H263"); } if (codec.equals("H.263(1998)")) sb.append("H263-1998"); if (codec.equals("H.263(2000)")) sb.append("H263-2000"); if (codec.equals("H.264")) sb.append("H264"); if (codec.equals("VP8")) sb.append("VP8"); } return sb.toString(); } private void updateAudio() { AudioOutput output = new AudioOutput(); String mixers[] = output.listDevices(); if (Settings.current.audioOutput == null) Settings.current.audioOutput = ""; audioOutput.setModel(new javax.swing.DefaultComboBoxModel(mixers)); for(int a=0;a<mixers.length;a++) { if (Settings.current.audioOutput.equalsIgnoreCase(mixers[a])) { audioOutput.setSelectedIndex(a); break; } } AudioInput input = new AudioInput(); mixers = input.listDevices(); if (Settings.current.audioInput == null) Settings.current.audioInput = ""; audioInput.setModel(new javax.swing.DefaultComboBoxModel(mixers)); for(int a=0;a<mixers.length;a++) { if (Settings.current.audioInput.equalsIgnoreCase(mixers[a])) { audioInput.setSelectedIndex(a); break; } } } private void updateVideo() { String devices[]; if (useNativeVideo.isSelected()) { Camera camera = new Camera(); if (camera.init()) { devices = camera.listDevices(); camera.uninit(); } else { devices = new String[] { "<undefined>"}; } } else { devices = new String[] { "<disabled>"}; } if (Settings.current.videoDevice == null) Settings.current.videoDevice = ""; videoDevice.setModel(new javax.swing.DefaultComboBoxModel(devices)); for(int a=0;a<devices.length;a++) { if (Settings.current.videoDevice.equalsIgnoreCase(devices[a])) { videoDevice.setSelectedIndex(a); break; } } //TODO : probe available resModes from api String resModes[] = { "<default>", "160x120", "320x240", "640x480" }; /* videoResolution.setModel(new javax.swing.DefaultComboBoxModel(resModes)); for(int a=0;a<resModes.length;a++) { if (Settings.current.videoResolution.equalsIgnoreCase(resModes[a])) { videoResolution.setSelectedIndex(a); break; } } */ videoFPS.setValue(Settings.current.videoFPS); } private void updateKeyStatus() { String fn = JF.getUserPath() + "/.jphone.key"; keyStatus.setText("???"); if (!new File(fn).exists()) { keyStatus.setText("file not found"); return; } KeyMgmt key = new KeyMgmt(); try { key.open(new FileInputStream(fn), "password".toCharArray()); if (key.getCRT("jphonelite") == null) { keyStatus.setText("missing certificate"); return; } if (key.getKEY("jphonelite", "password".toCharArray()) == null) { keyStatus.setText("missing private key"); return; } keyStatus.setText("valid"); } catch (FileNotFoundException e) { keyStatus.setText("file not found"); } catch (Exception e) { JFLog.log(e); keyStatus.setText("invalid"); } } private void genKeys() { if (KeyMgmt.keytool(new String[] { "-genkey", "-debug", "-alias", "jphonelite", "-keypass", "password", "-storepass", "password", "-keystore", JF.getUserPath() + "/.jphone.key", "-validity", "3650", "-dname", dname.getText(), "-keyalg" , "RSA", "-keysize", "2048" })) { //"Generated self-signed SSL Certificate"; } else { //"KeyTool Error"; } updateKeyStatus(); } }