Package jdumper.ui

Source Code of jdumper.ui.JDCumlativeStatFrame$TableModel

package jdumper.ui;
import jpcap.packet.*;
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;
import java.util.Vector;

import jdumper.stat.JDStatisticsTaker;
import jdumper.ui.graph.PieGraph;

public class JDCumlativeStatFrame extends JDStatFrame implements ListSelectionListener
{
  JTable table;
  TableModel model=null;
  PieGraph pieGraph=null;
 
  JDStatisticsTaker staker;
  int statType=0;
 
  public static JDCumlativeStatFrame openWindow(java.util.List<Packet> packets,JDStatisticsTaker staker){
    JDCumlativeStatFrame frame=new JDCumlativeStatFrame(packets,staker);
    frame.setVisible(true);
    return frame;
  }
 
  JDCumlativeStatFrame(java.util.List<Packet> packets,JDStatisticsTaker staker){
    super(staker.getName());
    this.staker=staker;
    staker.analyze(packets);
   
    getContentPane().setLayout(new BoxLayout(getContentPane(),BoxLayout.Y_AXIS));

    model=new TableModel();
    table=new JTable(model);
    table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    JTableHeader header = table.getTableHeader();
    Dimension dim = header.getPreferredSize();
    dim.height=20;
    header.setPreferredSize(dim);
    JScrollPane tablePane=new JScrollPane(table);
    dim=table.getMinimumSize();
    dim.height+=25;
    tablePane.setPreferredSize(dim);
   
    if(staker.getLabels().length>1){
      pieGraph=new PieGraph(staker.getLabels(),staker.getValues(0));
      JSplitPane splitPane=new JSplitPane(JSplitPane.VERTICAL_SPLIT);
      splitPane.setTopComponent(tablePane);
      splitPane.setBottomComponent(pieGraph);
     
      getContentPane().add(splitPane);
     
      table.getSelectionModel().addListSelectionListener(this);
    }else{
      getContentPane().add(tablePane);
    }
   
    setSize(400,400);

    /*addInternalFrameListener(new InternalFrameAdapter(){
      public void internalFrameClosing(InternalFrameEvent evt){
        setVisible(false);
      }
    });*/
   
  }
 
  void fireUpdate(){
    int sel=table.getSelectedRow();
    if(pieGraph!=null) pieGraph.changeValue(staker.getValues(statType));
    if(model!=null) model.update();
    if(sel>=0) table.setRowSelectionInterval(sel,sel);
    repaint();
  }
 
  public void addPacket(Packet p){
    staker.addPacket(p);
  }
 
  public void clear(){
    staker.clear();
    if(pieGraph!=null) pieGraph.changeValue(staker.getValues(statType));
    if(model!=null) model.update();
  }
 
  public void valueChanged(ListSelectionEvent evt){
    if(evt.getValueIsAdjusting()) return;
   
    ListSelectionModel lsm=(ListSelectionModel)evt.getSource();
    if(lsm.isSelectionEmpty()) statType=0;
    else statType=lsm.getMinSelectionIndex();
    pieGraph.changeValue(staker.getValues(statType));
  }
 
  class TableModel extends AbstractTableModel{
    String[] labels;
    Object[][] values;
    TableModel(){
      labels=new String[staker.getLabels().length+1];
      labels[0]=new String();
      System.arraycopy(staker.getLabels(),0,labels,1,staker.getLabels().length);
     
      String[] types=staker.getStatTypes();
      values=new Object[types.length][staker.getLabels().length+1];
      for(int i=0;i<values.length;i++){
        values[i][0]=types[i];
        long[] v=staker.getValues(i);
        for(int j=0;j<v.length;j++)
          values[i][j+1]=new Long(v[j]);
      }
    }
    public String getColumnName(int c){return labels[c];}
    public int getColumnCount(){ return labels.length; }
    public int getRowCount(){ return values.length; }
    public Object getValueAt(int row,int column){ return values[row][column]; }
    void update(){
      String[] types=staker.getStatTypes();
      values=new Object[types.length][staker.getLabels().length+1];
      for(int i=0;i<values.length;i++){
        values[i][0]=types[i];
        long[] v=staker.getValues(i);
        for(int j=0;j<v.length;j++)
          values[i][j+1]=new Long(v[j]);
      }
      fireTableDataChanged();
    }
  }
}
TOP

Related Classes of jdumper.ui.JDCumlativeStatFrame$TableModel

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.