/* * Software Name : ATK * * Copyright (C) 2007 - 2012 France Télécom * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * ------------------------------------------------------------------ * File Name : RealtimeGraph.java * * Created : 07/09/2009 * Author(s) : Yvain Leyral */ package com.orange.atk.graphAnalyser; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.Iterator; import java.util.Map; import java.util.Set; import javax.swing.Box; import javax.swing.DefaultComboBoxModel; import javax.swing.DefaultListModel; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.ListCellRenderer; import javax.swing.ListSelectionModel; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import org.jfree.chart.ChartPanel; import org.jfree.chart.axis.AxisLocation; import com.orange.atk.platform.Platform; /** * * @author ywil8421 */ @SuppressWarnings("serial") public class RealtimeGraph extends javax.swing.JFrame { private ChartPanel chartPanel; CreateGraph JaTKCharts; String JATKpath = ""; private DefaultListModel listModelGraph; Map<String, PerformanceGraph> mapPerfGraph; Map<String, GraphMarker> mapAction = null; DefaultComboBoxModel comboModelLeft = null; DefaultComboBoxModel comboModelRight = null; private listenPerfGraphHandler listenPerf; private JPanel toolPane; /** Creates new form Paneljavalauncher */ public RealtimeGraph(CreateGraph JaTKCharts) { this.JaTKCharts = JaTKCharts; chartPanel = JaTKCharts.getChartpanel(); listModelGraph = new DefaultListModel(); comboModelLeft = new DefaultComboBoxModel(); comboModelRight = new DefaultComboBoxModel(); mapPerfGraph = JaTKCharts.getMapPerfGraph(); mapAction = JaTKCharts.getMapAction(); chartPanel.setDomainZoomable(true); chartPanel.setRangeZoomable(true); chartPanel.setAutoscrolls(true); JATKpath = Platform.getInstance().getJATKPath(); initComponents(); jListPerfGraph.setCellRenderer(new MyGraphCellRenderer()); jComboBoxLeft.setRenderer(new MyGraphCellRenderer()); jComboBoxRight.setRenderer(new MyGraphCellRenderer()); jListGraph.setCellRenderer(new MyCellRenderer()); addPerformanceslist(); jListPerfGraph.getSelectionModel().addListSelectionListener(new listenPerfGraphHandler()); jListPerfGraph.setSelectionInterval(0,jListPerfGraph.getModel().getSize()-1); this.setTitle("Real Time Graphics"); } public void setListenerMarkerGraph(){ listenPerf= new listenPerfGraphHandler(); jListGraph.getSelectionModel().addListSelectionListener(listenPerf); } public void close() { this.dispose(); } public void addPerformanceslist() { int index = 0; listModelGraph.removeAllElements(); if (mapPerfGraph != null) { Set<String> cles = mapPerfGraph.keySet(); Iterator<String> it = cles.iterator(); while (it.hasNext()) { String cle = (String) it.next(); listModelGraph.insertElementAt(cle, index); index++; } } } // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { jListGraph = new JList(listModelGraph); jPanelroot = new JPanel(); jScrollPaneListGraph = new JScrollPane(); jListPerfGraph = new JList(listModelGraph); jComboBoxLeft = new JComboBox(comboModelLeft); jComboBoxRight = new JComboBox(comboModelRight); setDefaultCloseOperation(DISPOSE_ON_CLOSE); jScrollPaneListGraph.setViewportView(jListPerfGraph); jComboBoxLeft.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jComboBoxLeftActionPerformed(evt); } }); jComboBoxRight.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jComboBoxRightActionPerformed(evt); } }); jPanelroot.setLayout(new BorderLayout()); jPanelroot.add(chartPanel, BorderLayout.CENTER); toolPane = new JPanel(); toolPane.setLayout(new FlowLayout()); toolPane.add(jComboBoxLeft); Box graphlistbox = Box.createVerticalBox(); graphlistbox.add(new JLabel("List of Graph")); graphlistbox.add(jScrollPaneListGraph); toolPane.add(graphlistbox); toolPane.add(jComboBoxRight); jPanelroot.add(toolPane, BorderLayout.NORTH); setContentPane(jPanelroot); //a small size for small screen // setMaximumSize(new Dimension(600,500)); pack(); }// </editor-fold> public void addUrlMarkerCheckBox(){ urlMarkersCheckBox = new JCheckBox("Display Url markers"); urlMarkersCheckBox.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { boolean selected = ((JCheckBox) e.getSource()).isSelected(); JaTKCharts.displayUrlMarkers(selected); } }); toolPane.add(urlMarkersCheckBox); urlMarkersCheckBox.setSelected(true); toolPane.invalidate(); } private void jComboBoxLeftActionPerformed(ActionEvent evt) { if (mapPerfGraph != null) { if (comboModelLeft.getSize() != 0 && comboModelLeft.getSelectedItem() != null) { String cle = comboModelLeft.getSelectedItem().toString(); PerformanceGraph graph = (PerformanceGraph) mapPerfGraph.get(cle); graph.setAxis(false, AxisLocation.BOTTOM_OR_RIGHT); graph.setAxis(true, AxisLocation.BOTTOM_OR_LEFT); } } } private void jComboBoxRightActionPerformed(ActionEvent evt) { if (mapPerfGraph != null) { if (comboModelRight.getSize() != 0 && comboModelRight.getSelectedItem() != null) { String cle = comboModelRight.getSelectedItem().toString(); PerformanceGraph graph = (PerformanceGraph) mapPerfGraph.get(cle); graph.setAxis(false, AxisLocation.BOTTOM_OR_LEFT); graph.setAxis(true, AxisLocation.BOTTOM_OR_RIGHT); } } } // Variables declaration - do not modify private JComboBox jComboBoxLeft; private JComboBox jComboBoxRight; private JList jListPerfGraph; private javax.swing.JList jListGraph; private javax.swing.JPanel jPanelroot; private javax.swing.JScrollPane jScrollPaneListGraph; // End of variables declaration private JCheckBox urlMarkersCheckBox; class listenPerfGraphHandler implements ListSelectionListener { public void valueChanged(ListSelectionEvent e) { ListSelectionModel lsm = (ListSelectionModel) e.getSource(); //TODO usage ? //ArrayList<PerformanceGraph> listGraphCPU = new ArrayList<PerformanceGraph>(); //ArrayList<PerformanceGraph> listGraphMEM = new ArrayList<PerformanceGraph>(); int index = 0; if (mapPerfGraph != null) { Set<String> cles = mapPerfGraph.keySet(); Iterator<String> it = cles.iterator(); while (it.hasNext()) { String cle = (String) it.next(); PerformanceGraph graph = (PerformanceGraph) mapPerfGraph.get(cle); if (lsm.isSelectedIndex(index)) { //Now Active if (!graph.isActive()) { // graph.drawnewline(); JaTKCharts.drawGraph(cle); comboModelLeft.insertElementAt(cle, comboModelLeft.getSize()); comboModelRight.insertElementAt(cle, comboModelRight.getSize()); } //graph.setAxix(true, AxisLocation.BOTTOM_OR_RIGHT); /*if(cle.toLowerCase().contains(PerformanceGraph.memoryLabel)){ if(listGraphMEM.size()>0){ graph.setAxix(false, null); listGraphMEM.add(graph); listGraphMEM.get(0).getNumberaxis().setLabel("Memory ("+graph.getUnit()+")"); listGraphMEM.get(0).getNumberaxis().setAxisLinePaint(Color.BLACK); listGraphMEM.get(0).getNumberaxis().setLabelPaint(Color.black); listGraphMEM.get(0).getNumberaxis().setTickLabelPaint(Color.black); }else{ graph.getNumberaxis().setLabel(graph.getSerieName()); graph.getNumberaxis().setAxisLinePaint(graph.getColor()); graph.getNumberaxis().setTickLabelPaint(graph.getColor()); graph.getNumberaxis().setLabelPaint(graph.getColor()); listGraphMEM.add(graph); } } if(cle.toLowerCase().contains(PerformanceGraph.cpuLabel)){ if(listGraphCPU.size()>0){ graph.setAxix(false, null); listGraphCPU.add(graph); listGraphCPU.get(0).getNumberaxis().setLabel("CPU ("+graph.getUnit()+")"); listGraphCPU.get(0).getNumberaxis().setAxisLinePaint(Color.BLACK); listGraphCPU.get(0).getNumberaxis().setLabelPaint(Color.black); listGraphCPU.get(0).getNumberaxis().setTickLabelPaint(Color.black); }else{ graph.getNumberaxis().setLabel(graph.getSerieName()); graph.getNumberaxis().setAxisLinePaint(graph.getColor()); graph.getNumberaxis().setTickLabelPaint(graph.getColor()); graph.getNumberaxis().setLabelPaint(graph.getColor()); listGraphCPU.add(graph); } }*/ } else { //now inactive if (graph.isActive()) { JaTKCharts.undrawGraph(cle); comboModelLeft.removeElement(cle); comboModelRight.removeElement(cle); } } index++; } /*Range rangeCPU = computeRange(listGraphCPU); if(rangeCPU!=null) PerformanceGraph.setRangeCPU(rangeCPU); Range rangeMEM = computeRange(listGraphMEM); if(rangeMEM!=null) PerformanceGraph.setRangeMEM(rangeMEM); */ } } /*public Range computeRange(ArrayList<PerformanceGraph> listGraph){ Range range=null; double maxRange=0, minRange=0,diff=0; for(PerformanceGraph graph : listGraph){ PlotList plts = graph.getPlts(); if(plts==null) return null; double max = plts.getMax()/plts.getScale(); double min = plts.getMin()/plts.getScale(); if(max<min)//probably no points in the graph return null; if(range==null){ maxRange = max; minRange = min; } else{ maxRange = Math.max(max, maxRange); minRange = Math.min(min, minRange); } diff = (maxRange-minRange)*0.02; if(diff == 0) diff = max * 0.0001; range = new Range((double)minRange-diff,(double)maxRange+diff); if (range.getLength()==0) range = Range.expand(new Range(0.0, 0.5),0.03,0.0); } for(PerformanceGraph graph : listGraph) graph.getNumberaxis().setRange(range); return range; }*/ } @SuppressWarnings("serial") class MyGraphCellRenderer extends JLabel implements ListCellRenderer { public MyGraphCellRenderer() { setOpaque(true); } public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { if(value!=null){ setText(value.toString()); if(isSelected ){ setBackground(Color.LIGHT_GRAY); setForeground(mapPerfGraph.get(value).getColor()); } else{ setBackground(Color.WHITE); setForeground(Color.BLACK); } if (mapPerfGraph != null) { Set<String> cles = mapPerfGraph.keySet(); Iterator<String> it = cles.iterator(); while (it.hasNext()) { String cle = (String) it.next(); PerformanceGraph graph = (PerformanceGraph) mapPerfGraph.get(cle); if(value.equals(graph.getSerieName().replace("Series ", ""))) { setForeground(graph.getColor()); } } } } return this; } } @SuppressWarnings("serial") class MyCellRenderer extends JLabel implements ListCellRenderer { public MyCellRenderer() { setOpaque(true); } public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { if(value!=null){ setText(value.toString()); if(isSelected ) setBackground(Color.LIGHT_GRAY); else setBackground(Color.white); if (mapPerfGraph != null) { Set<String> cles = mapPerfGraph.keySet(); Iterator<String> it = cles.iterator(); while (it.hasNext()) { String cle = (String) it.next(); PerformanceGraph graph = (PerformanceGraph) mapPerfGraph.get(cle); if(value.equals(graph.getSerieName().replace("Series ", ""))) { setForeground(graph.getColor()); } } } } return this; } } }