/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/*
* StreamPanel.java
*
* Created on 4-Apr-2012, 4:07:51 PM
*/
package webcamstudio.components;
import java.awt.BasicStroke;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.Painter;
import javax.swing.SpinnerNumberModel;
import javax.swing.UIDefaults;
import webcamstudio.mixers.MasterMixer;
import webcamstudio.streams.Stream;
import webcamstudio.util.Tools;
/**
*
* @author patrick (modified by karl)
*/
public class StreamPanelIPCam extends javax.swing.JPanel implements Stream.Listener, StreamDesktop.Listener{
Stream stream = null;
Viewer viewer = new Viewer();
float volume = 0;
BufferedImage icon = null;
boolean lockRatio = false;
boolean muted = false;
int oldW ;
int oldH ;
/** Creates new form StreamPanel
* @param stream */
public StreamPanelIPCam(Stream stream) {
initComponents();
oldW = stream.getWidth();
oldH = stream.getHeight();
lblCurtain.setVisible(false);
try {
icon = ImageIO.read(getClass().getResource("/webcamstudio/resources/tango/speaker4.png"));
} catch (IOException ex) {
Logger.getLogger(StreamPanel.class.getName()).log(Level.SEVERE, null, ex);
}
UIDefaults sliderDefaults = new UIDefaults();
sliderDefaults.put("Slider.paintValue", true);
sliderDefaults.put("Slider.thumbHeight", 13);
sliderDefaults.put("Slider.thumbWidth", 13);
sliderDefaults.put("Slider:SliderThumb.backgroundPainter", new Painter() {
@Override
public void paint(Graphics2D g, Object object, int w, int h) {
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g.drawImage(icon, 0, -5, null);
}
});
sliderDefaults.put("Slider:SliderTrack.backgroundPainter", new Painter() {
@Override
public void paint(Graphics2D g, Object object, int w, int h) {
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g.setStroke(new BasicStroke(2f));
g.setColor(Color.WHITE);
g.drawRoundRect(0, 2, w-1, 1, 1, 1);
}
});
jSlSpinV.putClientProperty("JComponent.sizeVariant", "small");
jSlSpinV.putClientProperty("Nimbus.Overrides",sliderDefaults);
jSlSpinV.putClientProperty("Nimbus.Overrides.InheritDefaults", false);
jSlSpinV.setOpaque(true);
spinVolume.setVisible(false);
stream.setIsIPCam(true);
viewer.setOpaque(true);
viewer.setVisible(true);
viewer.setBackground(Color.black);
panPreview.add(viewer, BorderLayout.CENTER);
this.stream = stream;
spinX.setValue(stream.getX());
spinY.setValue(stream.getY());
spinW.setValue(stream.getWidth());
spinH.setValue(stream.getHeight());
spinOpacity.setModel(new SpinnerNumberModel(100, 0, 100, 1));
spinOpacity.setValue(stream.getOpacity());
spinVolume.setModel(new SpinnerNumberModel(50, 0, 300, 1));
spinVolume.setValue(stream.getVolume() * 100);
spinZOrder.setValue(stream.getZOrder());
spinH1.setValue(stream.getCaptureHeight());
spinW1.setValue(stream.getCaptureWidth());
spinVDelay.setValue(stream.getVDelay());
spinADelay.setValue(stream.getADelay());
spinVDelay.setEnabled(stream.hasVideo());
jSlSpinVD.setEnabled(stream.hasVideo());
spinADelay.setEnabled(stream.hasAudio());
tglAudio.setSelected(true);
jSlSpinV.setEnabled(!tglAudio.isSelected());
txtWebURL.setText(stream.getWebURL());
ckbProtected.setSelected(stream.getProtected());
txtUser.setEnabled(stream.getProtected());
txtPwd.setEnabled(stream.getProtected());
txtUser.setText(stream.getIPUser());
txtPwd.setText(stream.getIPPwd());
stream.setListener(this);
if (!stream.hasVideo()){
spinX.setEnabled(false);
jSlSpinX.setEnabled(false);
spinY.setEnabled(false);
jSlSpinY.setEnabled(false);
spinW.setEnabled(false);
jSlSpinW.setEnabled(false);
spinH.setEnabled(false);
jSlSpinH.setEnabled(false);
spinH1.setEnabled(false);
jSlSpinCH.setEnabled(false);
spinW1.setEnabled(false);
jSlSpinCW.setEnabled(false);
spinOpacity.setEnabled(false);
jSlSpinO.setEnabled(false);
}
}
public ImageIcon getIcon(){
ImageIcon icon = null;
if (stream.getPreview()!=null){
icon = new ImageIcon(stream.getPreview().getScaledInstance(32, 32, BufferedImage.SCALE_FAST));
}
return icon;
}
public void remove() {
stream.stop();
stream = null;
}
@Override
public void sourceUpdated(Stream stream){
int mixerW = MasterMixer.getInstance().getWidth();
int mixerH = MasterMixer.getInstance().getHeight();
if (jSlSpinX.getValue() > mixerW) {
spinX.setValue(stream.getX());
}
jSlSpinX.setMaximum(mixerW);
if (jSlSpinX.getValue() < - mixerW) {
spinX.setValue(stream.getX());
}
jSlSpinX.setMinimum(- mixerW);
if (jSlSpinY.getValue() > mixerH) {
spinY.setValue(stream.getY());
}
jSlSpinY.setMaximum(mixerH);
if (jSlSpinY.getValue() < - mixerH) {
spinY.setValue(stream.getY());
}
jSlSpinY.setMinimum(- mixerH);
if (jSlSpinW.getValue() > mixerW) {
spinW.setValue(stream.getWidth());
}
jSlSpinW.setMaximum(mixerW);
if (jSlSpinH.getValue() > mixerH) {
spinH.setValue(stream.getHeight());
}
jSlSpinH.setMaximum(mixerH);
spinX.setValue(stream.getX());
spinY.setValue(stream.getY());
spinH.setValue(stream.getHeight());
spinW.setValue(stream.getWidth());
spinW1.setValue(stream.getCaptureWidth());
spinH1.setValue(stream.getCaptureHeight());
spinOpacity.setValue(stream.getOpacity());
spinVolume.setValue(stream.getVolume() * 100);
spinZOrder.setValue(stream.getZOrder());
tglActiveStream.setSelected(stream.isPlaying());
if (stream.isPlaying()){
this.setBorder(BorderFactory.createMatteBorder(2, 2, 2, 2, Color.green));
spinH1.setEnabled(false);
jSlSpinCH.setEnabled(false);
spinW1.setEnabled(false);
jSlSpinCW.setEnabled(false);
spinVDelay.setEnabled(false);
jSlSpinVD.setEnabled(false);
spinADelay.setEnabled(false);
jSlSpinAD.setEnabled(false);
txtWebURL.setEditable(false);
tglAudio.setEnabled(false);
tglPreview.setEnabled(false);
} else {
this.setBorder(BorderFactory.createEmptyBorder());
tglPreview.setEnabled(true);
spinH1.setEnabled(true);
jSlSpinCH.setEnabled(true);
spinW1.setEnabled(true);
jSlSpinCW.setEnabled(true);
spinVDelay.setEnabled(true);
jSlSpinVD.setEnabled(true);
spinADelay.setEnabled(true);
jSlSpinAD.setEnabled(true);
txtWebURL.setEditable(true);
tglAudio.setEnabled(true);
}
tglActiveStream.revalidate();
}
/** 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() {
panPreview = new javax.swing.JPanel();
tglAudio = new javax.swing.JToggleButton();
jSlSpinV = new javax.swing.JSlider();
lblCurtain = new javax.swing.JLabel();
spinX = new javax.swing.JSpinner();
spinY = new javax.swing.JSpinner();
spinW = new javax.swing.JSpinner();
spinH = new javax.swing.JSpinner();
spinOpacity = new javax.swing.JSpinner();
spinVolume = new javax.swing.JSpinner();
tglActiveStream = new javax.swing.JToggleButton();
spinZOrder = new javax.swing.JSpinner();
labelX = new javax.swing.JLabel();
labelY = new javax.swing.JLabel();
labelW = new javax.swing.JLabel();
labelH = new javax.swing.JLabel();
labelO = new javax.swing.JLabel();
labelZ = new javax.swing.JLabel();
labelCW = new javax.swing.JLabel();
spinW1 = new javax.swing.JSpinner();
labelCH = new javax.swing.JLabel();
spinH1 = new javax.swing.JSpinner();
spinVDelay = new javax.swing.JSpinner();
spinADelay = new javax.swing.JSpinner();
labelURL = new javax.swing.JLabel();
txtWebURL = new javax.swing.JTextField();
jSeparator4 = new javax.swing.JSeparator();
jSlSpinX = new javax.swing.JSlider();
jSlSpinY = new javax.swing.JSlider();
jSlSpinCW = new javax.swing.JSlider();
jSlSpinCH = new javax.swing.JSlider();
jSlSpinW = new javax.swing.JSlider();
jSlSpinH = new javax.swing.JSlider();
jSlSpinO = new javax.swing.JSlider();
jSlSpinVD = new javax.swing.JSlider();
jSlSpinAD = new javax.swing.JSlider();
jSlSpinZOrder = new javax.swing.JSlider();
jSeparator5 = new javax.swing.JSeparator();
jSeparator3 = new javax.swing.JSeparator();
jSeparator2 = new javax.swing.JSeparator();
labelVD = new javax.swing.JLabel();
labelAD = new javax.swing.JLabel();
btnUp = new javax.swing.JToggleButton();
btnDown = new javax.swing.JToggleButton();
btnLeft = new javax.swing.JToggleButton();
btnRight = new javax.swing.JToggleButton();
btnPreset = new javax.swing.JButton();
btnZoomIn = new javax.swing.JToggleButton();
btnZoomOut = new javax.swing.JToggleButton();
txtUser = new javax.swing.JTextField();
txtPwd = new javax.swing.JPasswordField();
labelUser = new javax.swing.JLabel();
labelPwd = new javax.swing.JLabel();
ckbProtected = new javax.swing.JCheckBox();
labelProtected = new javax.swing.JLabel();
labelPTZPanel = new javax.swing.JLabel();
jcbLockAR = new javax.swing.JCheckBox();
jSeparator7 = new javax.swing.JSeparator();
tglPreview = new javax.swing.JToggleButton();
setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED));
setMaximumSize(new java.awt.Dimension(286, 356));
setMinimumSize(new java.awt.Dimension(277, 336));
setPreferredSize(new java.awt.Dimension(286, 336));
setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
panPreview.setBackground(new java.awt.Color(113, 113, 113));
panPreview.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED));
panPreview.setToolTipText("Click on the video to Hide/Unhide");
panPreview.setMaximumSize(new java.awt.Dimension(90, 60));
panPreview.setMinimumSize(new java.awt.Dimension(90, 60));
panPreview.setName("panPreview"); // NOI18N
panPreview.setPreferredSize(new java.awt.Dimension(90, 60));
panPreview.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
panPreviewMouseClicked(evt);
}
});
panPreview.setLayout(new java.awt.BorderLayout());
tglAudio.setFont(new java.awt.Font("Ubuntu", 0, 12)); // NOI18N
tglAudio.setIcon(new javax.swing.ImageIcon(getClass().getResource("/webcamstudio/resources/tango/audio-volume-muted.png"))); // NOI18N
tglAudio.setToolTipText("No Audio Switch (Only Video Source)");
tglAudio.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
tglAudio.setMaximumSize(new java.awt.Dimension(40, 32));
tglAudio.setMinimumSize(new java.awt.Dimension(26, 30));
tglAudio.setName("tglAudio"); // NOI18N
tglAudio.setPreferredSize(new java.awt.Dimension(20, 20));
tglAudio.setRolloverIcon(new javax.swing.ImageIcon(getClass().getResource("/webcamstudio/resources/tango/audio-volume-muted.png"))); // NOI18N
tglAudio.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/webcamstudio/resources/tango/audio-volume-selected-muted.png"))); // NOI18N
tglAudio.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tglAudioActionPerformed(evt);
}
});
panPreview.add(tglAudio, java.awt.BorderLayout.PAGE_END);
jSlSpinV.setBackground(new java.awt.Color(0, 0, 0));
jSlSpinV.setForeground(new java.awt.Color(255, 255, 255));
jSlSpinV.setMaximum(200);
jSlSpinV.setToolTipText("Volume Control - Double Click to Mute/Unmute");
jSlSpinV.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
jSlSpinV.setMaximumSize(new java.awt.Dimension(110, 30));
jSlSpinV.setMinimumSize(new java.awt.Dimension(110, 30));
jSlSpinV.setName("jSlSpinV"); // NOI18N
jSlSpinV.setPreferredSize(new java.awt.Dimension(110, 25));
jSlSpinV.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jSlSpinVMouseClicked(evt);
}
});
jSlSpinV.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
jSlSpinVStateChanged(evt);
}
});
panPreview.add(jSlSpinV, java.awt.BorderLayout.PAGE_START);
lblCurtain.setIcon(new javax.swing.ImageIcon(getClass().getResource("/webcamstudio/resources/curtain_small.png"))); // NOI18N
lblCurtain.setToolTipText("Click on the video to Hide/Unhide");
lblCurtain.setName("lblCurtain"); // NOI18N
lblCurtain.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
lblCurtainMouseClicked(evt);
}
});
panPreview.add(lblCurtain, java.awt.BorderLayout.LINE_START);
add(panPreview, new org.netbeans.lib.awtextra.AbsoluteConstraints(7, 7, 110, 120));
spinX.setFont(new java.awt.Font("Tahoma", 0, 8)); // NOI18N
spinX.setName("spinX"); // NOI18N
spinX.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
spinXStateChanged(evt);
}
});
add(spinX, new org.netbeans.lib.awtextra.AbsoluteConstraints(68, 180, 50, -1));
spinY.setFont(new java.awt.Font("Tahoma", 0, 8)); // NOI18N
spinY.setName("spinY"); // NOI18N
spinY.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
spinYStateChanged(evt);
}
});
add(spinY, new org.netbeans.lib.awtextra.AbsoluteConstraints(68, 200, 50, -1));
spinW.setFont(new java.awt.Font("Tahoma", 0, 8)); // NOI18N
spinW.setModel(new javax.swing.SpinnerNumberModel(1, 1, null, 1));
spinW.setName("spinW"); // NOI18N
spinW.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
spinWStateChanged(evt);
}
});
add(spinW, new org.netbeans.lib.awtextra.AbsoluteConstraints(58, 220, 60, -1));
spinH.setFont(new java.awt.Font("Tahoma", 0, 8)); // NOI18N
spinH.setModel(new javax.swing.SpinnerNumberModel(1, 1, null, 1));
spinH.setName("spinH"); // NOI18N
spinH.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
spinHStateChanged(evt);
}
});
add(spinH, new org.netbeans.lib.awtextra.AbsoluteConstraints(58, 240, 60, -1));
spinOpacity.setFont(new java.awt.Font("Tahoma", 0, 8)); // NOI18N
spinOpacity.setModel(new javax.swing.SpinnerNumberModel(0, 0, null, 1));
spinOpacity.setName("spinOpacity"); // NOI18N
spinOpacity.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
spinOpacityStateChanged(evt);
}
});
add(spinOpacity, new org.netbeans.lib.awtextra.AbsoluteConstraints(68, 280, 50, -1));
spinVolume.setFont(new java.awt.Font("Tahoma", 0, 8)); // NOI18N
spinVolume.setName("spinVolume"); // NOI18N
spinVolume.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
spinVolumeStateChanged(evt);
}
});
add(spinVolume, new org.netbeans.lib.awtextra.AbsoluteConstraints(220, 80, 50, -1));
tglActiveStream.setIcon(new javax.swing.ImageIcon(getClass().getResource("/webcamstudio/resources/tango/media-playback-start.png"))); // NOI18N
tglActiveStream.setName("tglActiveStream"); // NOI18N
tglActiveStream.setRolloverEnabled(false);
tglActiveStream.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/webcamstudio/resources/tango/media-playback-stop.png"))); // NOI18N
tglActiveStream.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tglActiveStreamActionPerformed(evt);
}
});
add(tglActiveStream, new org.netbeans.lib.awtextra.AbsoluteConstraints(7, 129, 110, 20));
spinZOrder.setFont(new java.awt.Font("Tahoma", 0, 8)); // NOI18N
spinZOrder.setName("spinZOrder"); // NOI18N
spinZOrder.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
spinZOrderStateChanged(evt);
}
});
add(spinZOrder, new org.netbeans.lib.awtextra.AbsoluteConstraints(68, 300, 50, -1));
labelX.setFont(new java.awt.Font("Tahoma", 0, 8)); // NOI18N
java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("webcamstudio/Languages"); // NOI18N
labelX.setText(bundle.getString("X")); // NOI18N
labelX.setName("labelX"); // NOI18N
add(labelX, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 190, 60, -1));
labelY.setFont(new java.awt.Font("Tahoma", 0, 8)); // NOI18N
labelY.setText(bundle.getString("Y")); // NOI18N
labelY.setName("labelY"); // NOI18N
add(labelY, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 210, 50, -1));
labelW.setFont(new java.awt.Font("Tahoma", 0, 8)); // NOI18N
labelW.setText(bundle.getString("WIDTH")); // NOI18N
labelW.setName("labelW"); // NOI18N
add(labelW, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 230, 52, -1));
labelH.setFont(new java.awt.Font("Tahoma", 0, 8)); // NOI18N
labelH.setText(bundle.getString("HEIGHT")); // NOI18N
labelH.setName("labelH"); // NOI18N
add(labelH, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 250, 40, -1));
labelO.setFont(new java.awt.Font("Tahoma", 0, 8)); // NOI18N
labelO.setText(bundle.getString("OPACITY")); // NOI18N
labelO.setName("labelO"); // NOI18N
add(labelO, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 290, 40, -1));
labelZ.setFont(new java.awt.Font("Tahoma", 0, 8)); // NOI18N
labelZ.setText(bundle.getString("LAYER")); // NOI18N
labelZ.setMaximumSize(new java.awt.Dimension(30, 10));
labelZ.setMinimumSize(new java.awt.Dimension(30, 10));
labelZ.setName("labelZ"); // NOI18N
labelZ.setPreferredSize(new java.awt.Dimension(30, 10));
add(labelZ, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 310, 40, 9));
labelCW.setFont(new java.awt.Font("Tahoma", 0, 8)); // NOI18N
labelCW.setText(bundle.getString("CAPTUREWIDTH")); // NOI18N
labelCW.setName("labelCW"); // NOI18N
add(labelCW, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 340, 50, -1));
spinW1.setFont(new java.awt.Font("Tahoma", 0, 8)); // NOI18N
spinW1.setModel(new javax.swing.SpinnerNumberModel(1, 1, null, 1));
spinW1.setName("spinW1"); // NOI18N
spinW1.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
spinW1StateChanged(evt);
}
});
add(spinW1, new org.netbeans.lib.awtextra.AbsoluteConstraints(70, 330, 50, -1));
labelCH.setFont(new java.awt.Font("Tahoma", 0, 8)); // NOI18N
labelCH.setText(bundle.getString("CAPTUREHEIGHT")); // NOI18N
labelCH.setName("labelCH"); // NOI18N
add(labelCH, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 360, 60, -1));
spinH1.setFont(new java.awt.Font("Tahoma", 0, 8)); // NOI18N
spinH1.setModel(new javax.swing.SpinnerNumberModel(1, 1, null, 1));
spinH1.setName("spinH1"); // NOI18N
spinH1.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
spinH1StateChanged(evt);
}
});
add(spinH1, new org.netbeans.lib.awtextra.AbsoluteConstraints(70, 350, 50, -1));
spinVDelay.setFont(new java.awt.Font("Tahoma", 0, 8)); // NOI18N
spinVDelay.setModel(new javax.swing.SpinnerNumberModel(0, 0, null, 1));
spinVDelay.setToolTipText("Milliseconds");
spinVDelay.setName("spinVDelay"); // NOI18N
spinVDelay.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
spinVDelayStateChanged(evt);
}
});
add(spinVDelay, new org.netbeans.lib.awtextra.AbsoluteConstraints(60, 370, 60, -1));
spinADelay.setFont(new java.awt.Font("Tahoma", 0, 8)); // NOI18N
spinADelay.setModel(new javax.swing.SpinnerNumberModel(0, 0, null, 1));
spinADelay.setToolTipText("Milliseconds");
spinADelay.setName("spinADelay"); // NOI18N
spinADelay.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
spinADelayStateChanged(evt);
}
});
add(spinADelay, new org.netbeans.lib.awtextra.AbsoluteConstraints(60, 390, 60, -1));
labelURL.setFont(new java.awt.Font("Tahoma", 0, 8)); // NOI18N
labelURL.setText(bundle.getString("ENTER_CAM_URL")); // NOI18N
labelURL.setToolTipText("");
labelURL.setName("labelURL"); // NOI18N
add(labelURL, new org.netbeans.lib.awtextra.AbsoluteConstraints(120, 140, 80, -1));
txtWebURL.setFont(new java.awt.Font("Ubuntu Condensed", 0, 12)); // NOI18N
txtWebURL.setToolTipText("Enter Url ...");
txtWebURL.setName("txtWebURL"); // NOI18N
txtWebURL.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusLost(java.awt.event.FocusEvent evt) {
txtWebURLFocusLost(evt);
}
});
add(txtWebURL, new org.netbeans.lib.awtextra.AbsoluteConstraints(7, 152, 272, -1));
jSeparator4.setOrientation(javax.swing.SwingConstants.VERTICAL);
jSeparator4.setName("jSeparator4"); // NOI18N
add(jSeparator4, new org.netbeans.lib.awtextra.AbsoluteConstraints(120, 7, 10, 126));
jSlSpinX.setMajorTickSpacing(10);
jSlSpinX.setMaximum(MasterMixer.getInstance().getWidth());
jSlSpinX.setMinimum(- MasterMixer.getInstance().getWidth());
jSlSpinX.setMinorTickSpacing(1);
jSlSpinX.setValue(0);
jSlSpinX.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
jSlSpinX.setName("jSlSpinX"); // NOI18N
jSlSpinX.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
jSlSpinXStateChanged(evt);
}
});
add(jSlSpinX, new org.netbeans.lib.awtextra.AbsoluteConstraints(127, 180, 150, 20));
jSlSpinY.setMajorTickSpacing(10);
jSlSpinY.setMaximum(MasterMixer.getInstance().getHeight());
jSlSpinY.setMinimum(- MasterMixer.getInstance().getHeight());
jSlSpinY.setMinorTickSpacing(1);
jSlSpinY.setValue(0);
jSlSpinY.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
jSlSpinY.setInverted(true);
jSlSpinY.setName("jSlSpinY"); // NOI18N
jSlSpinY.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
jSlSpinYStateChanged(evt);
}
});
add(jSlSpinY, new org.netbeans.lib.awtextra.AbsoluteConstraints(127, 200, 150, 20));
jSlSpinCW.setMajorTickSpacing(10);
jSlSpinCW.setMaximum(1920);
jSlSpinCW.setMinimum(1);
jSlSpinCW.setMinorTickSpacing(1);
jSlSpinCW.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
jSlSpinCW.setName("jSlSpinCW"); // NOI18N
jSlSpinCW.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
jSlSpinCWStateChanged(evt);
}
});
add(jSlSpinCW, new org.netbeans.lib.awtextra.AbsoluteConstraints(130, 330, 150, 20));
jSlSpinCH.setMajorTickSpacing(10);
jSlSpinCH.setMaximum(1080);
jSlSpinCH.setMinimum(1);
jSlSpinCH.setMinorTickSpacing(1);
jSlSpinCH.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
jSlSpinCH.setName("jSlSpinCH"); // NOI18N
jSlSpinCH.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
jSlSpinCHStateChanged(evt);
}
});
add(jSlSpinCH, new org.netbeans.lib.awtextra.AbsoluteConstraints(130, 350, 150, 20));
jSlSpinW.setMajorTickSpacing(10);
jSlSpinW.setMaximum(MasterMixer.getInstance().getWidth());
jSlSpinW.setMinimum(1);
jSlSpinW.setMinorTickSpacing(1);
jSlSpinW.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
jSlSpinW.setName("jSlSpinW"); // NOI18N
jSlSpinW.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
jSlSpinWStateChanged(evt);
}
});
add(jSlSpinW, new org.netbeans.lib.awtextra.AbsoluteConstraints(127, 220, 150, 20));
jSlSpinH.setMajorTickSpacing(10);
jSlSpinH.setMaximum(MasterMixer.getInstance().getHeight());
jSlSpinH.setMinimum(1);
jSlSpinH.setMinorTickSpacing(1);
jSlSpinH.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
jSlSpinH.setName("jSlSpinH"); // NOI18N
jSlSpinH.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
jSlSpinHStateChanged(evt);
}
});
add(jSlSpinH, new org.netbeans.lib.awtextra.AbsoluteConstraints(127, 240, 150, 20));
jSlSpinO.setValue(100);
jSlSpinO.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
jSlSpinO.setName("jSlSpinO"); // NOI18N
jSlSpinO.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
jSlSpinOStateChanged(evt);
}
});
add(jSlSpinO, new org.netbeans.lib.awtextra.AbsoluteConstraints(127, 280, 150, 20));
jSlSpinVD.setMaximum(10000);
jSlSpinVD.setPaintLabels(true);
jSlSpinVD.setValue(0);
jSlSpinVD.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
jSlSpinVD.setName("jSlSpinVD"); // NOI18N
jSlSpinVD.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
jSlSpinVDStateChanged(evt);
}
});
add(jSlSpinVD, new org.netbeans.lib.awtextra.AbsoluteConstraints(130, 370, 150, 20));
jSlSpinAD.setMaximum(10000);
jSlSpinAD.setPaintLabels(true);
jSlSpinAD.setValue(0);
jSlSpinAD.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
jSlSpinAD.setName("jSlSpinAD"); // NOI18N
jSlSpinAD.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
jSlSpinADStateChanged(evt);
}
});
add(jSlSpinAD, new org.netbeans.lib.awtextra.AbsoluteConstraints(130, 390, 150, 20));
jSlSpinZOrder.setMajorTickSpacing(10);
jSlSpinZOrder.setMaximum(20);
jSlSpinZOrder.setMinimum(-20);
jSlSpinZOrder.setMinorTickSpacing(1);
jSlSpinZOrder.setPaintTicks(true);
jSlSpinZOrder.setSnapToTicks(true);
jSlSpinZOrder.setValue(0);
jSlSpinZOrder.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
jSlSpinZOrder.setName("jSlSpinZOrder"); // NOI18N
jSlSpinZOrder.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
jSlSpinZOrderStateChanged(evt);
}
});
add(jSlSpinZOrder, new org.netbeans.lib.awtextra.AbsoluteConstraints(127, 299, 150, 30));
jSeparator5.setOrientation(javax.swing.SwingConstants.VERTICAL);
jSeparator5.setName("jSeparator5"); // NOI18N
add(jSeparator5, new org.netbeans.lib.awtextra.AbsoluteConstraints(120, 181, 10, 140));
jSeparator3.setName("jSeparator3"); // NOI18N
jSeparator3.setPreferredSize(new java.awt.Dimension(48, 10));
add(jSeparator3, new org.netbeans.lib.awtextra.AbsoluteConstraints(8, 324, 110, 10));
jSeparator2.setOrientation(javax.swing.SwingConstants.VERTICAL);
jSeparator2.setName("jSeparator2"); // NOI18N
add(jSeparator2, new org.netbeans.lib.awtextra.AbsoluteConstraints(120, 330, 10, 80));
labelVD.setFont(new java.awt.Font("Tahoma", 0, 8)); // NOI18N
labelVD.setText(bundle.getString("VIDEO_DELAY")); // NOI18N
labelVD.setName("labelVD"); // NOI18N
add(labelVD, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 380, 60, 9));
labelAD.setFont(new java.awt.Font("Tahoma", 0, 8)); // NOI18N
labelAD.setText(bundle.getString("AUDIO_DELAY")); // NOI18N
labelAD.setName("labelAD"); // NOI18N
add(labelAD, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 400, 60, 9));
btnUp.setIcon(new javax.swing.ImageIcon(getClass().getResource("/webcamstudio/resources/tango/go-up.png"))); // NOI18N
btnUp.setName("btnUp"); // NOI18N
btnUp.setRolloverEnabled(false);
btnUp.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/webcamstudio/resources/tango/media-playback-stop.png"))); // NOI18N
btnUp.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnUpActionPerformed(evt);
}
});
add(btnUp, new org.netbeans.lib.awtextra.AbsoluteConstraints(183, 12, 40, -1));
btnDown.setIcon(new javax.swing.ImageIcon(getClass().getResource("/webcamstudio/resources/tango/go-down.png"))); // NOI18N
btnDown.setName("btnDown"); // NOI18N
btnDown.setRolloverEnabled(false);
btnDown.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/webcamstudio/resources/tango/media-playback-stop.png"))); // NOI18N
btnDown.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnDownActionPerformed(evt);
}
});
add(btnDown, new org.netbeans.lib.awtextra.AbsoluteConstraints(183, 72, 40, -1));
btnLeft.setIcon(new javax.swing.ImageIcon(getClass().getResource("/webcamstudio/resources/tango/go-previous.png"))); // NOI18N
btnLeft.setName("btnLeft"); // NOI18N
btnLeft.setRolloverEnabled(false);
btnLeft.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/webcamstudio/resources/tango/media-playback-stop.png"))); // NOI18N
btnLeft.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnLeftActionPerformed(evt);
}
});
add(btnLeft, new org.netbeans.lib.awtextra.AbsoluteConstraints(145, 42, 40, -1));
btnRight.setIcon(new javax.swing.ImageIcon(getClass().getResource("/webcamstudio/resources/tango/go-next.png"))); // NOI18N
btnRight.setName("btnRight"); // NOI18N
btnRight.setRolloverEnabled(false);
btnRight.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/webcamstudio/resources/tango/media-playback-stop.png"))); // NOI18N
btnRight.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnRightActionPerformed(evt);
}
});
add(btnRight, new org.netbeans.lib.awtextra.AbsoluteConstraints(221, 42, 40, -1));
btnPreset.setIcon(new javax.swing.ImageIcon(getClass().getResource("/webcamstudio/resources/tango/media-record.png"))); // NOI18N
btnPreset.setToolTipText("(Foscam-Axis) Preset1 or (WansCam) HRoll");
btnPreset.setName("btnPreset"); // NOI18N
btnPreset.setRolloverEnabled(false);
btnPreset.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/webcamstudio/resources/tango/media-playback-stop.png"))); // NOI18N
btnPreset.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnPresetActionPerformed(evt);
}
});
add(btnPreset, new org.netbeans.lib.awtextra.AbsoluteConstraints(183, 42, 40, -1));
btnZoomIn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/webcamstudio/resources/tango/list-add.png"))); // NOI18N
btnZoomIn.setToolTipText("Zoom In");
btnZoomIn.setName("btnZoomIn"); // NOI18N
btnZoomIn.setRolloverEnabled(false);
btnZoomIn.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/webcamstudio/resources/tango/media-playback-stop.png"))); // NOI18N
btnZoomIn.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnZoomInActionPerformed(evt);
}
});
add(btnZoomIn, new org.netbeans.lib.awtextra.AbsoluteConstraints(146, 18, 40, 20));
btnZoomOut.setIcon(new javax.swing.ImageIcon(getClass().getResource("/webcamstudio/resources/tango/list-remove.png"))); // NOI18N
btnZoomOut.setToolTipText("Zoom Out");
btnZoomOut.setName("btnZoomOut"); // NOI18N
btnZoomOut.setRolloverEnabled(false);
btnZoomOut.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/webcamstudio/resources/tango/media-playback-stop.png"))); // NOI18N
btnZoomOut.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnZoomOutActionPerformed(evt);
}
});
add(btnZoomOut, new org.netbeans.lib.awtextra.AbsoluteConstraints(220, 18, 40, 20));
txtUser.setFont(new java.awt.Font("Ubuntu Condensed", 0, 10)); // NOI18N
txtUser.setHorizontalAlignment(javax.swing.JTextField.CENTER);
txtUser.setName("txtUser"); // NOI18N
add(txtUser, new org.netbeans.lib.awtextra.AbsoluteConstraints(130, 103, 70, 24));
txtPwd.setFont(new java.awt.Font("Ubuntu Condensed", 0, 10)); // NOI18N
txtPwd.setHorizontalAlignment(javax.swing.JTextField.CENTER);
txtPwd.setName("txtPwd"); // NOI18N
add(txtPwd, new org.netbeans.lib.awtextra.AbsoluteConstraints(205, 103, 70, 24));
labelUser.setFont(new java.awt.Font("Ubuntu Condensed", 0, 10)); // NOI18N
labelUser.setForeground(java.awt.Color.white);
labelUser.setText(bundle.getString("USER")); // NOI18N
labelUser.setName("labelUser"); // NOI18N
add(labelUser, new org.netbeans.lib.awtextra.AbsoluteConstraints(158, 123, 30, -1));
labelPwd.setFont(new java.awt.Font("Ubuntu Condensed", 0, 10)); // NOI18N
labelPwd.setForeground(java.awt.Color.white);
labelPwd.setText(bundle.getString("PWD")); // NOI18N
labelPwd.setName("labelPwd"); // NOI18N
add(labelPwd, new org.netbeans.lib.awtextra.AbsoluteConstraints(222, 123, 50, -1));
ckbProtected.setFont(new java.awt.Font("Ubuntu Condensed", 0, 10)); // NOI18N
ckbProtected.setName("ckbProtected"); // NOI18N
ckbProtected.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ckbProtectedActionPerformed(evt);
}
});
add(ckbProtected, new org.netbeans.lib.awtextra.AbsoluteConstraints(130, 78, -1, -1));
labelProtected.setFont(new java.awt.Font("Ubuntu Condensed", 0, 10)); // NOI18N
labelProtected.setForeground(java.awt.Color.white);
labelProtected.setText("Protected");
labelProtected.setName("labelProtected"); // NOI18N
add(labelProtected, new org.netbeans.lib.awtextra.AbsoluteConstraints(147, 83, -1, -1));
labelPTZPanel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/webcamstudio/resources/IPCam.png"))); // NOI18N
labelPTZPanel.setToolTipText("PTZ Panel");
labelPTZPanel.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
labelPTZPanel.setName("labelPTZPanel"); // NOI18N
labelPTZPanel.setOpaque(true);
add(labelPTZPanel, new org.netbeans.lib.awtextra.AbsoluteConstraints(126, 7, 153, 130));
jcbLockAR.setFont(new java.awt.Font("Tahoma", 0, 8)); // NOI18N
jcbLockAR.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT);
jcbLockAR.setIcon(new javax.swing.ImageIcon(getClass().getResource("/webcamstudio/resources/tango/LockButton-open_small.png"))); // NOI18N
jcbLockAR.setName("jcbLockAR"); // NOI18N
jcbLockAR.setRolloverIcon(new javax.swing.ImageIcon(getClass().getResource("/webcamstudio/resources/tango/LockButton-open_small.png"))); // NOI18N
jcbLockAR.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/webcamstudio/resources/tango/LockButton-close_small.png"))); // NOI18N
jcbLockAR.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jcbLockARActionPerformed(evt);
}
});
add(jcbLockAR, new org.netbeans.lib.awtextra.AbsoluteConstraints(43, 230, -1, -1));
jSeparator7.setName("jSeparator7"); // NOI18N
jSeparator7.setPreferredSize(new java.awt.Dimension(48, 10));
add(jSeparator7, new org.netbeans.lib.awtextra.AbsoluteConstraints(126, 269, 150, 10));
tglPreview.setFont(new java.awt.Font("Ubuntu", 0, 5)); // NOI18N
tglPreview.setIcon(new javax.swing.ImageIcon(getClass().getResource("/webcamstudio/resources/tango/PreviewButton2.png"))); // NOI18N
tglPreview.setToolTipText("Preview Mode");
tglPreview.setName("tglPreview"); // NOI18N
tglPreview.setRolloverIcon(new javax.swing.ImageIcon(getClass().getResource("/webcamstudio/resources/tango/PreviewButton2.png"))); // NOI18N
tglPreview.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/webcamstudio/resources/tango/PreviewButtonSelected4.png"))); // NOI18N
tglPreview.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tglPreviewActionPerformed(evt);
}
});
add(tglPreview, new org.netbeans.lib.awtextra.AbsoluteConstraints(6, 262, 112, 20));
getAccessibleContext().setAccessibleParent(this);
}// </editor-fold>//GEN-END:initComponents
private void tglActiveStreamActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tglActiveStreamActionPerformed
if (tglActiveStream.isSelected()) {
this.setBorder(BorderFactory.createMatteBorder(2, 2, 2, 2, Color.green));
if (txtWebURL.getText() != null) {
stream.setWebURL(txtWebURL.getText());
setToolTipText(txtWebURL.getText());
}
if (stream.getProtected()) {
if (txtUser.getText() != null) {
stream.setIPUser(txtUser.getText());
}
if (txtPwd.getPassword() != null) {
char[] pass = txtPwd.getPassword();
String pwd = new String(pass);
stream.setIPPwd(pwd);
}
}
if (tglAudio.isSelected()) {
stream.setHasAudio(false);
stream.setFakeAudio(false);
} else {
stream.setHasVideo(true);
stream.setHasAudio(true);
}
spinX.setEnabled(stream.hasVideo());
jSlSpinX.setEnabled(stream.hasVideo());
spinY.setEnabled(stream.hasVideo());
jSlSpinY.setEnabled(stream.hasVideo());
spinW1.setEnabled(false);
jSlSpinCW.setEnabled(false);
spinH1.setEnabled(false);
jSlSpinCH.setEnabled(false);
spinW.setEnabled(stream.hasVideo());
jSlSpinW.setEnabled(stream.hasVideo());
spinH.setEnabled(stream.hasVideo());
jSlSpinH.setEnabled(stream.hasVideo());
spinOpacity.setEnabled(stream.hasVideo());
jSlSpinO.setEnabled(stream.hasVideo());
spinVDelay.setEnabled(false);
jSlSpinVD.setEnabled(false);
spinADelay.setEnabled(false);
jSlSpinAD.setEnabled(false);
txtWebURL.setEditable(false);
tglAudio.setEnabled(false);
tglPreview.setEnabled(false);
stream.read();
} else {
this.setBorder(BorderFactory.createEmptyBorder());
tglPreview.setEnabled(true);
spinW1.setEnabled(stream.hasVideo());
jSlSpinCW.setEnabled(stream.hasVideo());
spinH1.setEnabled(stream.hasVideo());
jSlSpinCH.setEnabled(stream.hasVideo());
spinW.setEnabled(stream.hasVideo());
jSlSpinW.setEnabled(stream.hasVideo());
spinH.setEnabled(stream.hasVideo());
jSlSpinH.setEnabled(stream.hasVideo());
spinVDelay.setEnabled(stream.hasVideo());
jSlSpinVD.setEnabled(stream.hasVideo());
spinADelay.setEnabled(stream.hasAudio());
jSlSpinAD.setEnabled(stream.hasAudio());
txtWebURL.setEditable(true);
tglAudio.setEnabled(true);
stream.stop();
}
}//GEN-LAST:event_tglActiveStreamActionPerformed
private void spinOpacityStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_spinOpacityStateChanged
stream.setOpacity((Integer) spinOpacity.getValue());
jSlSpinO.setValue((Integer) spinOpacity.getValue());
}//GEN-LAST:event_spinOpacityStateChanged
private void spinZOrderStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_spinZOrderStateChanged
stream.setZOrder((Integer) spinZOrder.getValue());
jSlSpinZOrder.setValue((Integer) spinZOrder.getValue());
}//GEN-LAST:event_spinZOrderStateChanged
private void spinWStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_spinWStateChanged
int w = (Integer) spinW.getValue();
jSlSpinW.setValue(w);
int h = oldH;
if (lockRatio){
h = (oldH * w) / oldW;
spinH.setValue(h);
jSlSpinH.setValue(h);
}
stream.setWidth(w);
// stream.setHeight(h);
}//GEN-LAST:event_spinWStateChanged
private void spinHStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_spinHStateChanged
int h = (Integer) spinH.getValue();
jSlSpinH.setValue(h);
if (!lockRatio){
oldH = stream.getHeight();
}
stream.setHeight(h);
}//GEN-LAST:event_spinHStateChanged
private void spinXStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_spinXStateChanged
stream.setX((Integer)spinX.getValue());
jSlSpinX.setValue((Integer)spinX.getValue());
}//GEN-LAST:event_spinXStateChanged
private void spinYStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_spinYStateChanged
stream.setY((Integer)spinY.getValue());
jSlSpinY.setValue((Integer)spinY.getValue());
}//GEN-LAST:event_spinYStateChanged
private void spinVolumeStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_spinVolumeStateChanged
String jSVol = spinVolume.getValue().toString().replace(".0", "");
int jVol = Integer.parseInt(jSVol);
jSlSpinV.setValue(jVol);
Object value = spinVolume.getValue();
float v = 0;
if (value instanceof Float){
v = (Float)value;
} else if (value instanceof Integer){
v = ((Number)value).floatValue();
}
stream.setVolume(v/100f);
}//GEN-LAST:event_spinVolumeStateChanged
private void spinW1StateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_spinW1StateChanged
stream.setCaptureWidth((Integer)spinW1.getValue());
jSlSpinCW.setValue((Integer)spinW1.getValue());
}//GEN-LAST:event_spinW1StateChanged
private void spinH1StateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_spinH1StateChanged
stream.setCaptureHeight((Integer)spinH1.getValue());
jSlSpinCH.setValue((Integer)spinH1.getValue());
}//GEN-LAST:event_spinH1StateChanged
private void spinVDelayStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_spinVDelayStateChanged
stream.setVDelay((Integer)spinVDelay.getValue());
jSlSpinVD.setValue((Integer)spinVDelay.getValue());
}//GEN-LAST:event_spinVDelayStateChanged
private void spinADelayStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_spinADelayStateChanged
stream.setADelay((Integer)spinADelay.getValue());
jSlSpinAD.setValue((Integer)spinADelay.getValue());
}//GEN-LAST:event_spinADelayStateChanged
private void txtWebURLFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtWebURLFocusLost
setToolTipText(txtWebURL.getText());
}//GEN-LAST:event_txtWebURLFocusLost
private void jSlSpinXStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jSlSpinXStateChanged
spinX.setValue(jSlSpinX.getValue());
}//GEN-LAST:event_jSlSpinXStateChanged
private void jSlSpinYStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jSlSpinYStateChanged
spinY.setValue(jSlSpinY.getValue());
}//GEN-LAST:event_jSlSpinYStateChanged
private void jSlSpinCWStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jSlSpinCWStateChanged
spinW1.setValue(jSlSpinCW.getValue());
}//GEN-LAST:event_jSlSpinCWStateChanged
private void jSlSpinCHStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jSlSpinCHStateChanged
spinH1.setValue(jSlSpinCH.getValue());
}//GEN-LAST:event_jSlSpinCHStateChanged
private void jSlSpinWStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jSlSpinWStateChanged
int w = (Integer) jSlSpinW.getValue();
spinW.setValue(w);
}//GEN-LAST:event_jSlSpinWStateChanged
private void jSlSpinHStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jSlSpinHStateChanged
spinH.setValue(jSlSpinH.getValue());
}//GEN-LAST:event_jSlSpinHStateChanged
private void jSlSpinOStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jSlSpinOStateChanged
spinOpacity.setValue(jSlSpinO.getValue());
}//GEN-LAST:event_jSlSpinOStateChanged
private void jSlSpinVDStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jSlSpinVDStateChanged
spinVDelay.setValue(jSlSpinVD.getValue());
}//GEN-LAST:event_jSlSpinVDStateChanged
private void jSlSpinADStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jSlSpinADStateChanged
spinADelay.setValue(jSlSpinAD.getValue());
}//GEN-LAST:event_jSlSpinADStateChanged
private void jSlSpinZOrderStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jSlSpinZOrderStateChanged
spinZOrder.setValue(jSlSpinZOrder.getValue());
}//GEN-LAST:event_jSlSpinZOrderStateChanged
private void btnRightActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRightActionPerformed
Process camPTZon = null;
Process camPTZoff = null;
String soloURL = null;
String[] temp = null;
if (stream.getWebURL() != null){
soloURL = stream.getWebURL().replace("http://", "");
temp = soloURL.split("/");
if (btnRight.isSelected()){
if (camPTZoff != null){
camPTZoff.destroy();
}
switch (stream.getPtzBrand()) {
case "foscam":
{
// Foscam compatible commands
String camCmdRight = "wget -qO- http://"+temp[0]+"/decoder_control.cgi?command=4&user="+stream.getIPUser()+"&pwd="+stream.getIPPwd();
// System.out.println("cmdRight: "+camCmdRight);
Runtime rt = Runtime.getRuntime();
try {
camPTZon = rt.exec(camCmdRight);
Tools.sleep(250);
} catch (IOException ex) {
Logger.getLogger(StreamPanelIPCam.class.getName()).log(Level.SEVERE, null, ex);
} break;
}
case "axis":
{
// Axis compatible commands
String camCmdRight = "wget -qO- http://"+temp[0]+"/axis-cgi/com/ptz.cgi?continuouspantiltmove=1,0&user="+stream.getIPUser()+"&pwd="+stream.getIPPwd();
// System.out.println("cmdRight: "+camCmdRight);
Runtime rt = Runtime.getRuntime();
try {
camPTZon = rt.exec(camCmdRight);
Tools.sleep(250);
} catch (IOException ex) {
Logger.getLogger(StreamPanelIPCam.class.getName()).log(Level.SEVERE, null, ex);
} break;
}
case "wanscam":
{
// Wanscam compatible commands
String camCmdRight = "wget -qO- http://"+temp[0]+"/moveptz.xml?dir=right&user="+stream.getIPUser()+"&pwd="+stream.getIPPwd();
// System.out.println("cmdRight: "+camCmdRight);
Runtime rt = Runtime.getRuntime();
try {
camPTZon = rt.exec(camCmdRight);
Tools.sleep(250);
} catch (IOException ex) {
Logger.getLogger(StreamPanelIPCam.class.getName()).log(Level.SEVERE, null, ex);
} break;
}
}
} else {
if (camPTZon != null){
camPTZon.destroy();
}
switch (stream.getPtzBrand()) {
case "foscam":
{
// Foscam compatible commands
String camCmdStopRight = "wget -qO- http://"+temp[0]+"/decoder_control.cgi?command=5&user="+stream.getIPUser()+"&pwd="+stream.getIPPwd();
// System.out.println("cmdStopRight: "+camCmdStopRight);
Runtime rt = Runtime.getRuntime();
try {
camPTZoff = rt.exec(camCmdStopRight);
Tools.sleep(250);
} catch (IOException ex) {
Logger.getLogger(StreamPanelIPCam.class.getName()).log(Level.SEVERE, null, ex);
} camPTZoff.destroy();
break;
}
case "axis":
{
// Axis compatible commands
String camCmdRight = "wget -qO- http://"+temp[0]+"/axis-cgi/com/ptz.cgi?continuouspantiltmove=0,0&user="+stream.getIPUser()+"&pwd="+stream.getIPPwd();
// System.out.println("cmdRight: "+camCmdRight);
Runtime rt = Runtime.getRuntime();
try {
camPTZon = rt.exec(camCmdRight);
Tools.sleep(250);
} catch (IOException ex) {
Logger.getLogger(StreamPanelIPCam.class.getName()).log(Level.SEVERE, null, ex);
} break;
}
case "wanscam":
{
// Wanscam compatible commands
String camCmdStopLeft = "wget -qO- http://"+temp[0]+"/moveptz.xml?dir=stop&user="+stream.getIPUser()+"&pwd="+stream.getIPPwd();
// System.out.println("cmdStopRight: "+camCmdStopLeft);
Runtime rt = Runtime.getRuntime();
try {
camPTZoff = rt.exec(camCmdStopLeft);
} catch (IOException ex) {
Logger.getLogger(StreamPanelIPCam.class.getName()).log(Level.SEVERE, null, ex);
} Tools.sleep(250);
camPTZoff.destroy();
break;
}
}
}
}
}//GEN-LAST:event_btnRightActionPerformed
private void ckbProtectedActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ckbProtectedActionPerformed
if (ckbProtected.isSelected()){
txtUser.setEnabled(true);
txtPwd.setEnabled(true);
if (txtUser.getText() != null) {
stream.setIPUser(txtUser.getText());
}
if (txtPwd.getPassword() != null) {
char[] pass = txtPwd.getPassword();
String pwd = new String(pass);
stream.setIPPwd(pwd);
}
stream.setProtected(true);
} else {
txtUser.setEnabled(false);
txtPwd.setEnabled(false);
stream.setIPPwd(null);
stream.setIPUser(null);
stream.setProtected(false);
}
}//GEN-LAST:event_ckbProtectedActionPerformed
private void btnUpActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnUpActionPerformed
Process camPTZon = null;
Process camPTZoff = null;
String soloURL = null;
String[] temp = null;
if (stream.getWebURL() != null){
soloURL = stream.getWebURL().replace("http://", "");
temp = soloURL.split("/");
if (btnUp.isSelected()){
if (camPTZoff != null){
camPTZoff.destroy();
}
switch (stream.getPtzBrand()) {
case "foscam":
{
// Foscam compatible commands
String camCmdUp = "wget -qO- http://"+temp[0]+"/decoder_control.cgi?command=0&user="+stream.getIPUser()+"&pwd="+stream.getIPPwd();
// System.out.println("cmdUP: "+camCmdUp);
Runtime rt = Runtime.getRuntime();
try {
camPTZon = rt.exec(camCmdUp);
Tools.sleep(250);
} catch (IOException ex) {
Logger.getLogger(StreamPanelIPCam.class.getName()).log(Level.SEVERE, null, ex);
} break;
}
case "axis":
{
// Axis compatible commands
String camCmdRight = "wget -qO- http://"+temp[0]+"/axis-cgi/com/ptz.cgi?continuouspantiltmove=0,1&user="+stream.getIPUser()+"&pwd="+stream.getIPPwd();
// System.out.println("cmdUP: "+camCmdRight);
Runtime rt = Runtime.getRuntime();
try {
camPTZon = rt.exec(camCmdRight);
Tools.sleep(250);
} catch (IOException ex) {
Logger.getLogger(StreamPanelIPCam.class.getName()).log(Level.SEVERE, null, ex);
} break;
}
case "wanscam":
{
// Wanscam compatible commands
String camCmdRight = "wget -qO- http://"+temp[0]+"/moveptz.xml?dir=up&user="+stream.getIPUser()+"&pwd="+stream.getIPPwd();
// System.out.println("cmdUP: "+camCmdRight);
Runtime rt = Runtime.getRuntime();
try {
camPTZon = rt.exec(camCmdRight);
Tools.sleep(250);
} catch (IOException ex) {
Logger.getLogger(StreamPanelIPCam.class.getName()).log(Level.SEVERE, null, ex);
} break;
}
}
} else {
if (camPTZon != null){
camPTZon.destroy();
}
switch (stream.getPtzBrand()) {
case "foscam":
{
// Foscam compatible commands
String camCmdStopUp = "wget -qO- http://"+temp[0]+"/decoder_control.cgi?command=1&user="+stream.getIPUser()+"&pwd="+stream.getIPPwd();
// System.out.println("cmdStopUP: "+camCmdStopUp);
Runtime rt = Runtime.getRuntime();
try {
camPTZoff = rt.exec(camCmdStopUp);
} catch (IOException ex) {
Logger.getLogger(StreamPanelIPCam.class.getName()).log(Level.SEVERE, null, ex);
} Tools.sleep(250);
camPTZoff.destroy();
break;
}
case "axis":
{
// Axis compatible commands
String camCmdRight = "wget -qO- http://"+temp[0]+"/axis-cgi/com/ptz.cgi?continuouspantiltmove=0,0&user="+stream.getIPUser()+"&pwd="+stream.getIPPwd();
// System.out.println("cmdStopUP: "+camCmdRight);
Runtime rt = Runtime.getRuntime();
try {
camPTZon = rt.exec(camCmdRight);
Tools.sleep(250);
} catch (IOException ex) {
Logger.getLogger(StreamPanelIPCam.class.getName()).log(Level.SEVERE, null, ex);
} break;
}
case "wanscam":
{
// Wanscam compatible commands
String camCmdStopLeft = "wget -qO- http://"+temp[0]+"/moveptz.xml?dir=stop&user="+stream.getIPUser()+"&pwd="+stream.getIPPwd();
// System.out.println("cmdStopUP: "+camCmdStopLeft);
Runtime rt = Runtime.getRuntime();
try {
camPTZoff = rt.exec(camCmdStopLeft);
} catch (IOException ex) {
Logger.getLogger(StreamPanelIPCam.class.getName()).log(Level.SEVERE, null, ex);
} Tools.sleep(250);
camPTZoff.destroy();
break;
}
}
}
}
}//GEN-LAST:event_btnUpActionPerformed
private void btnDownActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnDownActionPerformed
Process camPTZon = null;
Process camPTZoff = null;
String soloURL = null;
String[] temp = null;
if (stream.getWebURL() != null){
soloURL = stream.getWebURL().replace("http://", "");
temp = soloURL.split("/");
if (btnDown.isSelected()){
if (camPTZoff != null){
camPTZoff.destroy();
}
switch (stream.getPtzBrand()) {
case "foscam":
{
// Foscam compatible commands
String camCmdDown = "wget -qO- http://"+temp[0]+"/decoder_control.cgi?command=2&user="+stream.getIPUser()+"&pwd="+stream.getIPPwd();
// System.out.println("cmdDown: "+camCmdDown);
Runtime rt = Runtime.getRuntime();
try {
camPTZon = rt.exec(camCmdDown);
Tools.sleep(250);
} catch (IOException ex) {
Logger.getLogger(StreamPanelIPCam.class.getName()).log(Level.SEVERE, null, ex);
} break;
}
case "axis":
{
// Axis compatible commands
String camCmdRight = "wget -qO- http://"+temp[0]+"/axis-cgi/com/ptz.cgi?continuouspantiltmove=0,-1&user="+stream.getIPUser()+"&pwd="+stream.getIPPwd();
// System.out.println("cmdDown: "+camCmdRight);
Runtime rt = Runtime.getRuntime();
try {
camPTZon = rt.exec(camCmdRight);
Tools.sleep(250);
} catch (IOException ex) {
Logger.getLogger(StreamPanelIPCam.class.getName()).log(Level.SEVERE, null, ex);
} break;
}
case "wanscam":
{
// Wanscam compatible commands
String camCmdRight = "wget -qO- http://"+temp[0]+"/moveptz.xml?dir=down&user="+stream.getIPUser()+"&pwd="+stream.getIPPwd();
// System.out.println("cmdDown: "+camCmdRight);
Runtime rt = Runtime.getRuntime();
try {
camPTZon = rt.exec(camCmdRight);
Tools.sleep(250);
} catch (IOException ex) {
Logger.getLogger(StreamPanelIPCam.class.getName()).log(Level.SEVERE, null, ex);
} break;
}
}
} else {
if (camPTZon != null){
camPTZon.destroy();
}
switch (stream.getPtzBrand()) {
case "foscam":
{
// Foscam compatible commands
String camCmdStopDown = "wget -qO- http://"+temp[0]+"/decoder_control.cgi?command=3&user="+stream.getIPUser()+"&pwd="+stream.getIPPwd();
// System.out.println("cmdStopDown: "+camCmdStopDown);
Runtime rt = Runtime.getRuntime();
try {
camPTZoff = rt.exec(camCmdStopDown);
} catch (IOException ex) {
Logger.getLogger(StreamPanelIPCam.class.getName()).log(Level.SEVERE, null, ex);
} Tools.sleep(250);
camPTZoff.destroy();
break;
}
case "axis":
{
// Axis compatible commands
String camCmdRight = "wget -qO- http://"+temp[0]+"/axis-cgi/com/ptz.cgi?continuouspantiltmove=0,0&user="+stream.getIPUser()+"&pwd="+stream.getIPPwd();
// System.out.println("cmdStopDown: "+camCmdRight);
Runtime rt = Runtime.getRuntime();
try {
camPTZon = rt.exec(camCmdRight);
Tools.sleep(250);
} catch (IOException ex) {
Logger.getLogger(StreamPanelIPCam.class.getName()).log(Level.SEVERE, null, ex);
} break;
}
case "wanscam":
{
// Wanscam compatible commands
String camCmdStopLeft = "wget -qO- http://"+temp[0]+"/moveptz.xml?dir=stop&user="+stream.getIPUser()+"&pwd="+stream.getIPPwd();
// System.out.println("cmdStopUP: "+camCmdStopLeft);
Runtime rt = Runtime.getRuntime();
try {
camPTZoff = rt.exec(camCmdStopLeft);
} catch (IOException ex) {
Logger.getLogger(StreamPanelIPCam.class.getName()).log(Level.SEVERE, null, ex);
} Tools.sleep(250);
camPTZoff.destroy();
break;
}
}
}
}
}//GEN-LAST:event_btnDownActionPerformed
private void btnLeftActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnLeftActionPerformed
Process camPTZon = null;
Process camPTZoff = null;
String soloURL = null;
String[] temp = null;
if (stream.getWebURL() != null){
soloURL = stream.getWebURL().replace("http://", "");
temp = soloURL.split("/");
if (btnLeft.isSelected()){
if (camPTZoff != null){
camPTZoff.destroy();
}
switch (stream.getPtzBrand()) {
case "foscam":
{
// Foscam compatible commands
String camCmdLeft = "wget -qO- http://"+temp[0]+"/decoder_control.cgi?command=6&user="+stream.getIPUser()+"&pwd="+stream.getIPPwd();
// System.out.println("cmdLeft: "+camCmdLeft);
Runtime rt = Runtime.getRuntime();
try {
camPTZon = rt.exec(camCmdLeft);
Tools.sleep(250);
} catch (IOException ex) {
Logger.getLogger(StreamPanelIPCam.class.getName()).log(Level.SEVERE, null, ex);
} break;
}
case "axis":
{
// Axis compatible commands
String camCmdRight = "wget -qO- http://"+temp[0]+"/axis-cgi/com/ptz.cgi?continuouspantiltmove=-1,0&user="+stream.getIPUser()+"&pwd="+stream.getIPPwd();
// System.out.println("cmdLeft: "+camCmdRight);
Runtime rt = Runtime.getRuntime();
try {
camPTZon = rt.exec(camCmdRight);
Tools.sleep(250);
} catch (IOException ex) {
Logger.getLogger(StreamPanelIPCam.class.getName()).log(Level.SEVERE, null, ex);
} break;
}
case "wanscam":
{
// Wanscam compatible commands
String camCmdRight = "wget -qO- http://"+temp[0]+"/moveptz.xml?dir=left&user="+stream.getIPUser()+"&pwd="+stream.getIPPwd();
// System.out.println("cmdLeft: "+camCmdRight);
Runtime rt = Runtime.getRuntime();
try {
camPTZon = rt.exec(camCmdRight);
Tools.sleep(250);
} catch (IOException ex) {
Logger.getLogger(StreamPanelIPCam.class.getName()).log(Level.SEVERE, null, ex);
} break;
}
}
} else {
if (camPTZon != null){
camPTZon.destroy();
}
switch (stream.getPtzBrand()) {
case "foscam":
{
// Foscam compatible commands
String camCmdStopLeft = "wget -qO- http://"+temp[0]+"/decoder_control.cgi?command=7&user="+stream.getIPUser()+"&pwd="+stream.getIPPwd();
// System.out.println("cmdStopLeft: "+camCmdStopLeft);
Runtime rt = Runtime.getRuntime();
try {
camPTZoff = rt.exec(camCmdStopLeft);
} catch (IOException ex) {
Logger.getLogger(StreamPanelIPCam.class.getName()).log(Level.SEVERE, null, ex);
} Tools.sleep(250);
camPTZoff.destroy();
break;
}
case "axis":
{
// Axis compatible commands
String camCmdRight = "wget -qO- http://"+temp[0]+"/axis-cgi/com/ptz.cgi?continuouspantiltmove=0,0&user="+stream.getIPUser()+"&pwd="+stream.getIPPwd();
// System.out.println("cmdStopLeft: "+camCmdRight);
Runtime rt = Runtime.getRuntime();
try {
camPTZon = rt.exec(camCmdRight);
Tools.sleep(250);
} catch (IOException ex) {
Logger.getLogger(StreamPanelIPCam.class.getName()).log(Level.SEVERE, null, ex);
} break;
}
case "wanscam":
{
// Wanscam compatible commands
String camCmdStopLeft = "wget -qO- http://"+temp[0]+"/moveptz.xml?dir=stop&user="+stream.getIPUser()+"&pwd="+stream.getIPPwd();
// System.out.println("cmdStopLeft: "+camCmdStopLeft);
Runtime rt = Runtime.getRuntime();
try {
camPTZoff = rt.exec(camCmdStopLeft);
} catch (IOException ex) {
Logger.getLogger(StreamPanelIPCam.class.getName()).log(Level.SEVERE, null, ex);
} Tools.sleep(250);
camPTZoff.destroy();
break;
}
}
}
}
}//GEN-LAST:event_btnLeftActionPerformed
private void btnZoomInActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnZoomInActionPerformed
Process camPTZon = null;
Process camPTZoff = null;
String soloURL = null;
String[] temp = null;
if (stream.getWebURL() != null){
soloURL = stream.getWebURL().replace("http://", "");
temp = soloURL.split("/");
if (btnZoomIn.isSelected()){
if (camPTZoff != null){
camPTZoff.destroy();
}
switch (stream.getPtzBrand()) {
case "foscam":
{
// Foscam compatible commands
String camCmdZoomIn = "wget -qO- http://"+temp[0]+"/decoder_control.cgi?command=16&user="+stream.getIPUser()+"&pwd="+stream.getIPPwd();
// System.out.println("cmdZoomIn: "+camCmdZoomIn);
Runtime rt = Runtime.getRuntime();
try {
camPTZon = rt.exec(camCmdZoomIn);
Tools.sleep(250);
} catch (IOException ex) {
Logger.getLogger(StreamPanelIPCam.class.getName()).log(Level.SEVERE, null, ex);
} break;
}
case "axis":
{
// Axis compatible commands
String camCmdRight = "wget -qO- http://"+temp[0]+"/axis-cgi/com/ptz.cgi?continuouszoommove=1&user="+stream.getIPUser()+"&pwd="+stream.getIPPwd();
// System.out.println("cmdZoomIn: "+camCmdRight);
Runtime rt = Runtime.getRuntime();
try {
camPTZon = rt.exec(camCmdRight);
Tools.sleep(250);
} catch (IOException ex) {
Logger.getLogger(StreamPanelIPCam.class.getName()).log(Level.SEVERE, null, ex);
} break;
}
}
} else {
if (camPTZon != null){
camPTZon.destroy();
}
switch (stream.getPtzBrand()) {
case "foscam":
{
// Foscam compatible commands
String camCmdStopZoomIn = "wget -qO- http://"+temp[0]+"/decoder_control.cgi?command=17&user="+stream.getIPUser()+"&pwd="+stream.getIPPwd();
// System.out.println("cmdStopZoomIn: "+camCmdStopZoomIn);
Runtime rt = Runtime.getRuntime();
try {
camPTZoff = rt.exec(camCmdStopZoomIn);
} catch (IOException ex) {
Logger.getLogger(StreamPanelIPCam.class.getName()).log(Level.SEVERE, null, ex);
} Tools.sleep(250);
camPTZoff.destroy();
break;
}
case "axis":
{
// Axis compatible commands
String camCmdRight = "wget -qO- http://"+temp[0]+"/axis-cgi/com/ptz.cgi?continuouszoommove=0&user="+stream.getIPUser()+"&pwd="+stream.getIPPwd();
// System.out.println("cmdStopZoomIn: "+camCmdRight);
Runtime rt = Runtime.getRuntime();
try {
camPTZon = rt.exec(camCmdRight);
Tools.sleep(250);
} catch (IOException ex) {
Logger.getLogger(StreamPanelIPCam.class.getName()).log(Level.SEVERE, null, ex);
} break;
}
}
}
}
}//GEN-LAST:event_btnZoomInActionPerformed
private void btnZoomOutActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnZoomOutActionPerformed
Process camPTZon = null;
Process camPTZoff = null;
String soloURL = null;
String[] temp = null;
if (stream.getWebURL() != null){
soloURL = stream.getWebURL().replace("http://", "");
temp = soloURL.split("/");
if (btnZoomOut.isSelected()){
if (camPTZoff != null){
camPTZoff.destroy();
}
switch (stream.getPtzBrand()) {
case "foscam":
{
// Foscam compatible commands
String camCmdZoomOut = "wget -qO- http://"+temp[0]+"/decoder_control.cgi?command=18&user="+stream.getIPUser()+"&pwd="+stream.getIPPwd();
// System.out.println("cmdZoomOut: "+camCmdZoomOut);
Runtime rt = Runtime.getRuntime();
try {
camPTZon = rt.exec(camCmdZoomOut);
Tools.sleep(250);
} catch (IOException ex) {
Logger.getLogger(StreamPanelIPCam.class.getName()).log(Level.SEVERE, null, ex);
} break;
}
case "axis":
{
// Axis compatible commands
String camCmdRight = "wget -qO- http://"+temp[0]+"/axis-cgi/com/ptz.cgi?continuouszoommove=-1&user="+stream.getIPUser()+"&pwd="+stream.getIPPwd();
// System.out.println("cmdZoomOut: "+camCmdRight);
Runtime rt = Runtime.getRuntime();
try {
camPTZon = rt.exec(camCmdRight);
Tools.sleep(250);
} catch (IOException ex) {
Logger.getLogger(StreamPanelIPCam.class.getName()).log(Level.SEVERE, null, ex);
} break;
}
}
} else {
if (camPTZon != null){
camPTZon.destroy();
}
switch (stream.getPtzBrand()) {
case "foscam":
{
// Foscam compatible commands
String camCmdStopZoomOut = "wget -qO- http://"+temp[0]+"/decoder_control.cgi?command=19&user="+stream.getIPUser()+"&pwd="+stream.getIPPwd();
// System.out.println("cmdStopZoomOut: "+camCmdStopZoomOut);
Runtime rt = Runtime.getRuntime();
try {
camPTZoff = rt.exec(camCmdStopZoomOut);
} catch (IOException ex) {
Logger.getLogger(StreamPanelIPCam.class.getName()).log(Level.SEVERE, null, ex);
} Tools.sleep(250);
camPTZoff.destroy();
break;
}
case "axis":
{
// Axis compatible commands
String camCmdRight = "wget -qO- http://"+temp[0]+"/axis-cgi/com/ptz.cgi?continuouszoommove=0&user="+stream.getIPUser()+"&pwd="+stream.getIPPwd();
// System.out.println("cmdStopZoomOut: "+camCmdRight);
Runtime rt = Runtime.getRuntime();
try {
camPTZon = rt.exec(camCmdRight);
Tools.sleep(250);
} catch (IOException ex) {
Logger.getLogger(StreamPanelIPCam.class.getName()).log(Level.SEVERE, null, ex);
} break;
}
}
}
}
}//GEN-LAST:event_btnZoomOutActionPerformed
private void btnPresetActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnPresetActionPerformed
Process camPTZon = null;
String soloURL = null;
String[] temp = null;
if (stream.getWebURL() != null){
soloURL = stream.getWebURL().replace("http://", "");
temp = soloURL.split("/");
switch (stream.getPtzBrand()) {
case "foscam":
{
// Foscam compatible commands
String camCmdZoomOut = "wget -qO- http://"+temp[0]+"/decoder_control.cgi?command=31&user="+stream.getIPUser()+"&pwd="+stream.getIPPwd();
// System.out.println("cmdPreset1: "+camCmdZoomOut);
Runtime rt = Runtime.getRuntime();
try {
camPTZon = rt.exec(camCmdZoomOut);
Tools.sleep(250);
} catch (IOException ex) {
Logger.getLogger(StreamPanelIPCam.class.getName()).log(Level.SEVERE, null, ex);
} camPTZon.destroy();
break;
}
case "axis":
{
// Axis compatible commands
String camCmdRight = "wget -qO- http://"+temp[0]+"/axis-cgi/com/ptz.cgi?gotoserverpresetno=1&user="+stream.getIPUser()+"&pwd="+stream.getIPPwd();
// System.out.println("cmdPreset1: "+camCmdRight);
Runtime rt = Runtime.getRuntime();
try {
camPTZon = rt.exec(camCmdRight);
Tools.sleep(250);
} catch (IOException ex) {
Logger.getLogger(StreamPanelIPCam.class.getName()).log(Level.SEVERE, null, ex);
} camPTZon.destroy();
break;
}
case "wanscam":
{
// Wanscam compatible commands
String camCmdStopLeft = "wget -qO- http://"+temp[0]+"/moveptz.xml?dir=leftright&user="+stream.getIPUser()+"&pwd="+stream.getIPPwd();
// System.out.println("cmdPreset1: "+camCmdStopLeft);
Runtime rt = Runtime.getRuntime();
try {
camPTZon = rt.exec(camCmdStopLeft);
} catch (IOException ex) {
Logger.getLogger(StreamPanelIPCam.class.getName()).log(Level.SEVERE, null, ex);
} Tools.sleep(250);
camPTZon.destroy();
break;
}
}
}
}//GEN-LAST:event_btnPresetActionPerformed
private void jSlSpinVMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jSlSpinVMouseClicked
if (evt.getClickCount() == 2 && !evt.isConsumed()) {
evt.consume();
if (muted) {
stream.setVolume(volume);
// System.out.println("Reset Volume to = "+volume);
jSlSpinV.setEnabled(true);
try {
icon = ImageIO.read(getClass().getResource("/webcamstudio/resources/tango/speaker4.png"));
} catch (IOException ex) {
Logger.getLogger(StreamPanel.class.getName()).log(Level.SEVERE, null, ex);
}
UIDefaults sliderDefaults = new UIDefaults();
sliderDefaults.put("Slider.paintValue", true);
sliderDefaults.put("Slider.thumbHeight", 13);
sliderDefaults.put("Slider.thumbWidth", 13);
sliderDefaults.put("Slider:SliderThumb.backgroundPainter", new Painter() {
@Override
public void paint(Graphics2D g, Object object, int w, int h) {
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g.drawImage(icon, 0, -5, null);
}
});
sliderDefaults.put("Slider:SliderTrack.backgroundPainter", new Painter() {
@Override
public void paint(Graphics2D g, Object object, int w, int h) {
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g.setStroke(new BasicStroke(2f));
g.setColor(Color.WHITE);
g.drawRoundRect(0, 2, w-1, 1, 1, 1);
}
});
jSlSpinV.putClientProperty("JComponent.sizeVariant", "small");
jSlSpinV.putClientProperty("Nimbus.Overrides",sliderDefaults);
jSlSpinV.putClientProperty("Nimbus.Overrides.InheritDefaults", false);
muted = false;
} else {
jSlSpinV.setEnabled(false);
Object value = spinVolume.getValue();
float v = 0;
if (value instanceof Float){
v = (Float)value;
} else if (value instanceof Integer){
v = ((Number)value).floatValue();
}
volume = v/100f;
// System.out.println("Stored Volume = "+volume);
stream.setVolume(0);
try {
icon = ImageIO.read(getClass().getResource("/webcamstudio/resources/tango/speaker4-mute.png"));
} catch (IOException ex) {
Logger.getLogger(StreamPanel.class.getName()).log(Level.SEVERE, null, ex);
}
UIDefaults sliderDefaults = new UIDefaults();
sliderDefaults.put("Slider.paintValue", true);
sliderDefaults.put("Slider.thumbHeight", 13);
sliderDefaults.put("Slider.thumbWidth", 13);
sliderDefaults.put("Slider:SliderThumb.backgroundPainter", new Painter() {
@Override
public void paint(Graphics2D g, Object object, int w, int h) {
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g.drawImage(icon, 0, -5, null);
}
});
sliderDefaults.put("Slider:SliderTrack.backgroundPainter", new Painter() {
@Override
public void paint(Graphics2D g, Object object, int w, int h) {
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g.setStroke(new BasicStroke(2f));
g.setColor(Color.GRAY);
g.fillRoundRect(0, 2, w-1, 2, 2, 2);
g.setColor(Color.WHITE);
g.drawRoundRect(0, 2, w-1, 1, 1, 1);
}
});
jSlSpinV.putClientProperty("JComponent.sizeVariant", "small");
jSlSpinV.putClientProperty("Nimbus.Overrides",sliderDefaults);
jSlSpinV.putClientProperty("Nimbus.Overrides.InheritDefaults", false);
muted = true;
}
}
}//GEN-LAST:event_jSlSpinVMouseClicked
private void jSlSpinVStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jSlSpinVStateChanged
spinVolume.setValue(jSlSpinV.getValue());
}//GEN-LAST:event_jSlSpinVStateChanged
private void jcbLockARActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jcbLockARActionPerformed
if (jcbLockAR.isSelected()){
spinH.setEnabled(false);
jSlSpinH.setEnabled(false);
lockRatio = true;
oldW = stream.getWidth();
oldH = stream.getHeight();
} else {
spinH.setEnabled(true);
jSlSpinH.setEnabled(true);
lockRatio = false;
oldW = stream.getWidth();
oldH = stream.getHeight();
}
}//GEN-LAST:event_jcbLockARActionPerformed
private void tglAudioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tglAudioActionPerformed
if (tglAudio.isSelected()){
jSlSpinV.setEnabled(false);
} else {
jSlSpinV.setEnabled(true);
}
}//GEN-LAST:event_tglAudioActionPerformed
private void lblCurtainMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_lblCurtainMouseClicked
lblCurtain.setVisible(false);
viewer.setOpaque(true);
panPreview.add(viewer, BorderLayout.CENTER);
this.repaint();
this.revalidate();
}//GEN-LAST:event_lblCurtainMouseClicked
private void panPreviewMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_panPreviewMouseClicked
panPreview.remove(viewer);
lblCurtain.setOpaque(true);
lblCurtain.setVisible(true);
panPreview.add(lblCurtain);
this.repaint();
this.revalidate();
}//GEN-LAST:event_panPreviewMouseClicked
private void tglPreviewActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tglPreviewActionPerformed
if (tglPreview.isSelected()) {
stream.setPreView(true);
} else {
stream.setPreView(false);
}
}//GEN-LAST:event_tglPreviewActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JToggleButton btnDown;
private javax.swing.JToggleButton btnLeft;
private javax.swing.JButton btnPreset;
private javax.swing.JToggleButton btnRight;
private javax.swing.JToggleButton btnUp;
private javax.swing.JToggleButton btnZoomIn;
private javax.swing.JToggleButton btnZoomOut;
private javax.swing.JCheckBox ckbProtected;
private javax.swing.JSeparator jSeparator2;
private javax.swing.JSeparator jSeparator3;
private javax.swing.JSeparator jSeparator4;
private javax.swing.JSeparator jSeparator5;
private javax.swing.JSeparator jSeparator7;
private javax.swing.JSlider jSlSpinAD;
private javax.swing.JSlider jSlSpinCH;
private javax.swing.JSlider jSlSpinCW;
private javax.swing.JSlider jSlSpinH;
private javax.swing.JSlider jSlSpinO;
private javax.swing.JSlider jSlSpinV;
private javax.swing.JSlider jSlSpinVD;
private javax.swing.JSlider jSlSpinW;
private javax.swing.JSlider jSlSpinX;
private javax.swing.JSlider jSlSpinY;
private javax.swing.JSlider jSlSpinZOrder;
private javax.swing.JCheckBox jcbLockAR;
private javax.swing.JLabel labelAD;
private javax.swing.JLabel labelCH;
private javax.swing.JLabel labelCW;
private javax.swing.JLabel labelH;
private javax.swing.JLabel labelO;
private javax.swing.JLabel labelPTZPanel;
private javax.swing.JLabel labelProtected;
private javax.swing.JLabel labelPwd;
private javax.swing.JLabel labelURL;
private javax.swing.JLabel labelUser;
private javax.swing.JLabel labelVD;
private javax.swing.JLabel labelW;
private javax.swing.JLabel labelX;
private javax.swing.JLabel labelY;
private javax.swing.JLabel labelZ;
private javax.swing.JLabel lblCurtain;
private javax.swing.JPanel panPreview;
private javax.swing.JSpinner spinADelay;
private javax.swing.JSpinner spinH;
private javax.swing.JSpinner spinH1;
private javax.swing.JSpinner spinOpacity;
private javax.swing.JSpinner spinVDelay;
private javax.swing.JSpinner spinVolume;
private javax.swing.JSpinner spinW;
private javax.swing.JSpinner spinW1;
private javax.swing.JSpinner spinX;
private javax.swing.JSpinner spinY;
private javax.swing.JSpinner spinZOrder;
private javax.swing.JToggleButton tglActiveStream;
private javax.swing.JToggleButton tglAudio;
private javax.swing.JToggleButton tglPreview;
private javax.swing.JPasswordField txtPwd;
private javax.swing.JTextField txtUser;
private javax.swing.JTextField txtWebURL;
// End of variables declaration//GEN-END:variables
@Override
public void updatePreview(BufferedImage image) {
viewer.setImage(image);
viewer.setAudioLevel(stream.getAudioLevelLeft(), stream.getAudioLevelRight());
viewer.repaint();
}
@Override
public void selectedSource(Stream source) {
// nothing here.
}
@Override
public void closeSource() {
// nothing here.
}
}