/* * RtpTrafficDialog.java * * Created on 4 Декабрь 2008 г., 10:33 */ package org.mobicents.media.server.testsuite.gui.graph; import java.io.IOException; import java.util.List; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.plot.PlotOrientation; import org.jfree.data.xy.XYDataset; import org.jfree.data.xy.XYSeries; import org.jfree.data.xy.XYSeriesCollection; import org.mobicents.media.server.testsuite.general.AbstractCall; import org.mobicents.media.server.testsuite.general.rtp.RtpPacket; /** * * @author kulikov */ public class RtpTrafficGraph extends javax.swing.JDialog { /** A return status code - returned if Cancel button has been pressed */ public static final int RET_CANCEL = 0; /** A return status code - returned if OK button has been pressed */ public static final int RET_OK = 1; private AbstractCall call; /** Creates new form RtpTrafficDialog */ public RtpTrafficGraph(java.awt.Frame parent, boolean modal, AbstractCall call) throws IOException { super(parent, modal); this.call = call; initComponents(); List<RtpPacket> packets = call.getRtp(); XYSeries j = new XYSeries("Jitter"); for (int i = 0; i < packets.size() - 1; i++) { RtpPacket p1 = packets.get(i); RtpPacket p2 = packets.get(i + 1); j.add(i, p2.getTime().getTime() - p1.getTime().getTime()); } XYDataset dataset = new XYSeriesCollection(j); JFreeChart chart = ChartFactory.createXYLineChart("Jitter chart", // Title "Jitter", // X-Axis label "Time", // Y-Axis label dataset, // Dataset PlotOrientation.VERTICAL, true, true, true // Show legend ); org.jfree.chart.ChartPanel chartPanel = new ChartPanel(chart); desktop.removeAll(); desktop.add(chartPanel, java.awt.BorderLayout.CENTER); } private void printErrors(int[] errors, int count) { for (int i = 0; i < count; i++) { System.out.println(errors[i]); } } /** @return the return status of this dialog - one of RET_OK or RET_CANCEL */ public int getReturnStatus() { return returnStatus; } /** 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() { jPanel1 = new javax.swing.JPanel(); closeButton = new javax.swing.JButton(); desktop = new javax.swing.JPanel(); setTitle("RTP Traffic"); addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { closeDialog(evt); } }); jPanel1.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT)); closeButton.setText("Close"); closeButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { closeButtonActionPerformed(evt); } }); jPanel1.add(closeButton); getContentPane().add(jPanel1, java.awt.BorderLayout.SOUTH); desktop.setLayout(new java.awt.BorderLayout()); getContentPane().add(desktop, java.awt.BorderLayout.CENTER); pack(); }// </editor-fold>//GEN-END:initComponents /** Closes the dialog */ private void closeDialog(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_closeDialog doClose(RET_CANCEL); }//GEN-LAST:event_closeDialog private void closeButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_closeButtonActionPerformed doClose(RET_OK); }//GEN-LAST:event_closeButtonActionPerformed private void doClose(int retStatus) { returnStatus = retStatus; setVisible(false); dispose(); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton closeButton; private javax.swing.JPanel desktop; private javax.swing.JPanel jPanel1; // End of variables declaration//GEN-END:variables private int returnStatus = RET_CANCEL; }