/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package webcamstudio.components; import java.awt.image.BufferedImage; import webcamstudio.externals.FME; import webcamstudio.streams.Stream; /** * * @author karl */ public class FMESettings extends javax.swing.JFrame implements Stream.Listener { FME thisFME; /** * Creates new form FMESettings * @param fme */ public FMESettings(FME fme) { initComponents(); // for now we keep this not visible lblOW.setVisible(false); lblOH.setVisible(false); spinOutW.setVisible(false); spinOutH.setVisible(false); thisFME = fme; String shortName = ""; String sourceName = thisFME.getName(); System.out.println("sourceName: "+sourceName); if (sourceName.length() > 9) { shortName = sourceName.substring(0, 9)+" ..."; System.out.println("shortName: "+shortName); } else { shortName = sourceName; } lblName.setText(shortName); textURL.setText(thisFME.getUrl()); if (thisFME.getStream().isEmpty()) { textStream.setText(""); textStream.setEnabled(false); } else { textStream.setText(thisFME.getStream()); } if (thisFME.getVbitrate().isEmpty()) { spinVideoRate.setValue(0); spinVideoRate.setEnabled(false); } else { spinVideoRate.setValue(Integer.parseInt(thisFME.getVbitrate())); } if (thisFME.getWidth().isEmpty()) { spinOutW.setValue(0); spinOutW.setEnabled(false); } else { spinOutW.setValue(Integer.parseInt(thisFME.getWidth())); } if (thisFME.getHeight().isEmpty()) { spinOutH.setValue(0); spinOutH.setEnabled(false); } else { spinOutH.setValue(Integer.parseInt(thisFME.getHeight())); } if (thisFME.getAbitrate().isEmpty()) { spinAudioRate.setValue(0); spinAudioRate.setEnabled(false); } else { spinAudioRate.setValue(Integer.parseInt(thisFME.getAbitrate())); } if (thisFME.getMount().isEmpty()) { textMount.setText(""); textMount.setEnabled(false); } else { textMount.setText(thisFME.getMount()); } if (thisFME.getPassword().isEmpty()) { textPsw.setText(""); textPsw.setEnabled(false); } else { textPsw.setText(thisFME.getPassword()); // System.out.println("Password: "+thisFME.getPassword()); } if (thisFME.getPort().isEmpty()) { spinPort.setValue(0); spinPort.setEnabled(false); } else { spinPort.setValue(Integer.parseInt(thisFME.getPort())); } if (thisFME.getKeyInt().isEmpty()) { spinKeyInt.setValue(0); spinKeyInt.setEnabled(false); } else { spinKeyInt.setValue(Integer.parseInt(thisFME.getKeyInt())); } chkHQMode.setSelected(thisFME.getStandard().equals("HQ")); } /** * 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. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { jLabel12 = new javax.swing.JLabel(); lblEncode = new javax.swing.JLabel(); lblVideoRate = new javax.swing.JLabel(); lblAudioRate = new javax.swing.JLabel(); lblrtmpURL = new javax.swing.JLabel(); lblURL = new javax.swing.JLabel(); lblStream = new javax.swing.JLabel(); textURL = new javax.swing.JTextField(); textStream = new javax.swing.JTextField(); spinVideoRate = new javax.swing.JSpinner(); spinAudioRate = new javax.swing.JSpinner(); btnCancel = new javax.swing.JButton(); btnOK = new javax.swing.JButton(); lblMount = new javax.swing.JLabel(); lblPsw = new javax.swing.JLabel(); lblPort = new javax.swing.JLabel(); lblKeyInt = new javax.swing.JLabel(); textMount = new javax.swing.JTextField(); textPsw = new javax.swing.JPasswordField(); spinPort = new javax.swing.JSpinner(); spinKeyInt = new javax.swing.JSpinner(); lblName = new javax.swing.JLabel(); lblOW = new javax.swing.JLabel(); lblOH = new javax.swing.JLabel(); spinOutW = new javax.swing.JSpinner(); spinOutH = new javax.swing.JSpinner(); chkHQMode = new javax.swing.JCheckBox(); jLabel12.setText("jLabel12"); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("FME Settings"); setResizable(false); lblEncode.setFont(new java.awt.Font("Ubuntu", 1, 15)); // NOI18N lblEncode.setText("Encode:"); lblVideoRate.setText("Video Data Rate:"); lblAudioRate.setText("Audio Data Rate:"); lblrtmpURL.setFont(new java.awt.Font("Ubuntu", 1, 15)); // NOI18N lblrtmpURL.setText("RTMP Streaming Url:"); lblURL.setText("URL:"); lblStream.setText("Stream:"); btnCancel.setText("Cancel"); btnCancel.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnCancelActionPerformed(evt); } }); btnOK.setText("OK"); btnOK.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnOKActionPerformed(evt); } }); lblMount.setText("Mount:"); lblPsw.setText("Password:"); lblPort.setText("Port:"); lblKeyInt.setText("KeyInt:"); lblName.setFont(new java.awt.Font("Ubuntu", 1, 24)); // NOI18N lblName.setText("FMEName"); lblOW.setText("Out Width:"); lblOW.setEnabled(false); lblOH.setText("Out Height:"); lblOH.setEnabled(false); spinOutW.setEnabled(false); spinOutH.setEnabled(false); chkHQMode.setFont(new java.awt.Font("Ubuntu", 3, 15)); // NOI18N chkHQMode.setForeground(new java.awt.Color(180, 1, 1)); chkHQMode.setText("HQ Mode"); chkHQMode.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { chkHQModeActionPerformed(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) .addGroup(layout.createSequentialGroup() .addComponent(lblURL) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(textURL)) .addGroup(layout.createSequentialGroup() .addComponent(lblStream) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(textStream)) .addGroup(layout.createSequentialGroup() .addComponent(lblMount) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(textMount)) .addGroup(layout.createSequentialGroup() .addComponent(lblPsw) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(textPsw)) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup() .addComponent(lblKeyInt) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(spinKeyInt)) .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup() .addComponent(lblPort) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(spinPort, javax.swing.GroupLayout.PREFERRED_SIZE, 101, javax.swing.GroupLayout.PREFERRED_SIZE))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(btnOK) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(btnCancel)) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addGroup(layout.createSequentialGroup() .addComponent(lblAudioRate) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(spinAudioRate)) .addGroup(layout.createSequentialGroup() .addComponent(lblVideoRate) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(spinVideoRate, javax.swing.GroupLayout.PREFERRED_SIZE, 74, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(lblEncode) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(lblName, javax.swing.GroupLayout.Alignment.LEADING) .addComponent(lblrtmpURL))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 14, Short.MAX_VALUE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addComponent(lblOH) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(spinOutH, javax.swing.GroupLayout.PREFERRED_SIZE, 74, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addComponent(lblOW) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(spinOutW, javax.swing.GroupLayout.PREFERRED_SIZE, 74, javax.swing.GroupLayout.PREFERRED_SIZE))) .addComponent(chkHQMode, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 95, javax.swing.GroupLayout.PREFERRED_SIZE)))) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(5, 5, 5) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(lblName) .addComponent(chkHQMode)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(lblrtmpURL) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(lblURL) .addComponent(textURL, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(lblStream) .addComponent(textStream, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(lblEncode) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(lblVideoRate) .addComponent(spinVideoRate, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(lblOW) .addComponent(spinOutW, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(lblAudioRate) .addComponent(spinAudioRate, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(spinOutH, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(lblOH)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(lblMount) .addComponent(textMount, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(lblPsw) .addComponent(textPsw, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(lblPort) .addComponent(spinPort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(lblKeyInt) .addComponent(spinKeyInt, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(btnOK) .addComponent(btnCancel)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); pack(); }// </editor-fold>//GEN-END:initComponents private void btnOKActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnOKActionPerformed if (thisFME.getUrl().isEmpty()) { } else { thisFME.setUrl(textURL.getText()); } if (thisFME.getStream().isEmpty()) { } else { thisFME.setStream(textStream.getText()); } if (thisFME.getVbitrate().isEmpty()) { } else { thisFME.setVbitrate(Integer.toString(spinVideoRate.getValue().hashCode())); } // if (thisFME.getWidth().equals("")) { // // } else { // thisFME.setWidth(Integer.toString(spinOutW.getValue().hashCode())); // } // // if (thisFME.getHeight().equals("")) { // // } else { // thisFME.setHeight(Integer.toString(spinOutH.getValue().hashCode())); // } if (thisFME.getAbitrate().isEmpty()) { } else { thisFME.setAbitrate(Integer.toString(spinAudioRate.getValue().hashCode())); } if (thisFME.getMount().isEmpty()) { } else { thisFME.setMount(textMount.getText()); } if (thisFME.getPassword().isEmpty()) { } else { char[] password = textPsw.getPassword(); String psw = String.valueOf(password); thisFME.setPassword(psw); // System.out.println("Password: "+psw); } if (thisFME.getPort().isEmpty()) { } else { thisFME.setPort(Integer.toString(spinPort.getValue().hashCode())); } if (thisFME.getKeyInt().isEmpty()) { } else { thisFME.setKeyInt(Integer.toString(spinKeyInt.getValue().hashCode())); } this.dispose(); }//GEN-LAST:event_btnOKActionPerformed private void btnCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelActionPerformed this.dispose(); }//GEN-LAST:event_btnCancelActionPerformed private void chkHQModeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chkHQModeActionPerformed if (chkHQMode.isSelected()){ thisFME.setStandard("HQ"); } else { thisFME.setStandard("STD"); } }//GEN-LAST:event_chkHQModeActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton btnCancel; private javax.swing.JButton btnOK; private javax.swing.JCheckBox chkHQMode; private javax.swing.JLabel jLabel12; private javax.swing.JLabel lblAudioRate; private javax.swing.JLabel lblEncode; private javax.swing.JLabel lblKeyInt; private javax.swing.JLabel lblMount; private javax.swing.JLabel lblName; private javax.swing.JLabel lblOH; private javax.swing.JLabel lblOW; private javax.swing.JLabel lblPort; private javax.swing.JLabel lblPsw; private javax.swing.JLabel lblStream; private javax.swing.JLabel lblURL; private javax.swing.JLabel lblVideoRate; private javax.swing.JLabel lblrtmpURL; private javax.swing.JSpinner spinAudioRate; private javax.swing.JSpinner spinKeyInt; private javax.swing.JSpinner spinOutH; private javax.swing.JSpinner spinOutW; private javax.swing.JSpinner spinPort; private javax.swing.JSpinner spinVideoRate; private javax.swing.JTextField textMount; private javax.swing.JPasswordField textPsw; private javax.swing.JTextField textStream; private javax.swing.JTextField textURL; // End of variables declaration//GEN-END:variables @Override public void sourceUpdated(Stream stream) { // nothing here. } @Override public void updatePreview(BufferedImage image) { // nothing here. } }