/*
* 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 : LectureJATKResult.java
*
* Created : 02/03/2009
* Author(s) : Yvain Leyral
*/
package com.orange.atk.graphAnalyser;
/*
* LectureJATKResult.java
*
* Created on 18 novembre 2008, 15:38
*/
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
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.JComboBox;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListCellRenderer;
import javax.swing.ListSelectionModel;
import javax.swing.border.Border;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableModel;
import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.AxisLocation;
import org.jfree.chart.event.ChartChangeEvent;
import org.jfree.chart.event.ChartChangeListener;
import org.jfree.chart.event.ChartProgressEvent;
import org.jfree.chart.event.ChartProgressListener;
import org.jfree.chart.plot.XYPlot;
import org.jfree.ui.NumberCellRenderer;
import com.orange.atk.interpreter.config.ConfigFile;
import com.orange.atk.platform.Platform;
import com.orange.atk.util.FileUtil;
/**
*
* @author ywil8421
*/
public class LectureJATKResult extends JFrame implements ChartChangeListener, ChartProgressListener {
/**
*
*/
private static final long serialVersionUID = -913181162748664117L;
private ChartPanel chartPanel;
CreateGraph analyzerGraphs;
String path = "";
private DefaultListModel listModel;
private DefaultListModel listModelMarker;
Map<String, PerformanceGraph> mapPerfGraph;
Map<String, GraphMarker> mapAction = null;
DefaultComboBoxModel comboModelLeft = null;
DefaultComboBoxModel comboModelRight = null;
private DemoTableModel modeltable;
private listenPerfGraphHandler listenPerf;
private ListSelectionListener listenMarker;
LectureJATKResult frame;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
private String name =null;
/** Creates new form NewJFrame */
public LectureJATKResult() {
listModel = new DefaultListModel();
listModelMarker = new DefaultListModel();
comboModelLeft = new DefaultComboBoxModel();
comboModelRight = new DefaultComboBoxModel();
analyzerGraphs = new CreateGraph();
chartPanel = analyzerGraphs.getChartpanel();
analyzerGraphs.getJfreechart().addChangeListener(this);
analyzerGraphs.getJfreechart().addProgressListener(this);
chartPanel.setDomainZoomable(true);
chartPanel.setRangeZoomable(true);
chartPanel.setAutoscrolls(true);
frame = this;
//init model table
int SERIES_COUNT = 1;
this.modeltable = new DemoTableModel(SERIES_COUNT);
for (int row = 0; row < SERIES_COUNT; row++) {
this.modeltable.setValueAt(
"", row, 0);
this.modeltable.setValueAt(new Double("0"), row, 1);
this.modeltable.setValueAt(new Double("0"), row, 2);
this.modeltable.setValueAt(new Double("0"), row, 3);
}
initComponents();
jTable2.getColumnModel().getColumn(0).setCellRenderer(new ColorRenderertext());
jListGraph.setCellRenderer(new MyCellRenderer());
jComboBoxLeft.setRenderer(new MyCellRenderer());
jComboBoxRight.setRenderer(new MyCellRenderer());
}
/**
* Receives notification of a {@link ChartChangeEvent}.
*
* @param event the event.
*/
public void chartChanged(ChartChangeEvent event) {
if (this.chartPanel != null) {
JFreeChart chart = this.chartPanel.getChart();
if (chart != null) {
XYPlot plot = chart.getXYPlot();
//recupere X
double xx = plot.getDomainCrosshairValue();
if (xx != 0 && mapPerfGraph != null ) {
Set<String> cles = mapPerfGraph.keySet();
Iterator<String> it = cles.iterator();
int index =0;
while (it.hasNext()) {
String cle = (String) it.next();
PerformanceGraph graph = (PerformanceGraph) mapPerfGraph.get(cle);
graph.getY(xx);
double Xvalue =graph.getXvalue();
double xvaluenext =graph.getNextXvalue();
double xvalueprev =graph.getPrevousxValue();
this.modeltable.setValueAt(graph.getSerieName().replace("Series ", ""), index, 0);
this.modeltable.setValueAt(new Double(Xvalue), index,1 );
this.modeltable.setValueAt(new Double(xvaluenext), index,2 );
this.modeltable.setValueAt(new Double(xvalueprev), index,3 );
index++;
}
}
}
}
}
/**
* Handles a chart progress event.
*
* @param event
* the event.
*/
public void chartProgress(ChartProgressEvent event) {
if (event.getType() != ChartProgressEvent.DRAWING_FINISHED) {
return;
}
if (this.chartPanel != null) {
JFreeChart c = this.chartPanel.getChart();
if (c != null) {
XYPlot plot = c.getXYPlot();
double xx = plot.getDomainCrosshairValue();
if (xx != 0 && mapPerfGraph != null ) {
Set<String> cles = mapPerfGraph.keySet();
Iterator<String> it = cles.iterator();
int index =0;
while (it.hasNext()) {
String cle = (String) it.next();
PerformanceGraph graph = (PerformanceGraph) mapPerfGraph.get(cle);
String Name =graph.getSerieName();
graph.getY(xx);
double Yvalue =graph.getYvalue();
double Yvaluenext =graph.getNextyvalue();
double Yvalueprev =graph.getPrevousyValue();
Name= Name.replace("Series ", "");
this.modeltable.setValueAt(Name, index, 0);
this.modeltable.setValueAt(new Double(Yvalue), index,1 );
this.modeltable.setValueAt(new Double(Yvaluenext), index,2 );
this.modeltable.setValueAt(new Double(Yvalueprev), index,3 );
index++;
}
// update the table...
}
}
}
}
/** 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.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jListGraph = new JList(listModel);
jComboBoxLeft = new JComboBox(comboModelLeft);
jComboBoxRight = new JComboBox(comboModelRight);
jListMarker = new JList(listModelMarker);
jTable2 = new javax.swing.JTable();
jMenu1 = new javax.swing.JMenu();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
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);
}
});
jTable2.setModel(modeltable);
jMenu1.setText("File");
JMenuItem jMenuItem1 = new JMenuItem();
jMenuItem1.setText("Open Directory");
jMenuItem1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
openDirectoryAction(evt);
}
});
JMenuItem jMenuItem2 = new JMenuItem();
jMenuItem2.setText("Add a reference Graph");
jMenuItem2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jMenuItemaddGraphActionPerformed(evt);
}
});
JMenuItem jMenuItem3 = new JMenuItem();
jMenuItem3.setText("set Graph color");
jMenuItem3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItemChangecolorActionPerformed(evt);
}
});
JMenuItem jMenuItem4 = new JMenuItem();
jMenuItem4.setText("save config file");
jMenuItem4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItemSaveConfigFileActionPerformed(evt);
}
});
jMenu1.add(jMenuItem1);
jMenu1.add(jMenuItem2);
jMenu1.add(jMenuItem3);
jMenu1.add(jMenuItem4);
JMenuBar jMenuBar1 = new JMenuBar();
jMenuBar1.add(jMenu1);
setJMenuBar(jMenuBar1);
//organise JFRAME
JPanel mainpanel = (JPanel) getContentPane();
mainpanel.setLayout(new BorderLayout());
mainpanel.add(chartPanel, BorderLayout.CENTER);
JPanel toolPanel = new JPanel();
toolPanel.setLayout(new FlowLayout());
toolPanel.add(jComboBoxLeft);
Box graphbox = Box.createVerticalBox();
graphbox.add(new JLabel("List of Graph "));
JScrollPane jspaneGraph = new JScrollPane();
jspaneGraph.setViewportView(jListGraph);
jspaneGraph.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
jspaneGraph.setPreferredSize(new Dimension(150,100));
graphbox.add( jspaneGraph );
// graphbox.setBorder(BorderFactory.createLineBorder(Color.black));
toolPanel.add(graphbox);
Box markerbox = Box.createVerticalBox();
markerbox.add(new JLabel("List of Marker"));
JScrollPane jspaneMarker = new JScrollPane();
jspaneMarker.setViewportView(jListMarker);
jspaneMarker.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
jspaneMarker.setPreferredSize(new Dimension(150,100));
markerbox.add(jspaneMarker );
// markerbox.setBorder(BorderFactory.createLineBorder(Color.black));
toolPanel.add(markerbox);
JScrollPane jspane = new JScrollPane();
jspane.setViewportView(jTable2);
jspane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
jspane.setPreferredSize(new Dimension(300,100));
toolPanel.add(jspane );
toolPanel.add(jComboBoxRight);
mainpanel.add(toolPanel, BorderLayout.NORTH);
pack();
}
/**
* set parameters (used in jpf IHM).
*
* @param path location of the csv file and action.xml
*
*/
public void setParameters(String path) {
//this.setName(path);
this.setTitle(path);
//Try to load default dir
ConfigFile configFile=null;
String JATKpath = Platform.getInstance().getJATKPath();
String pathihmconfig=JATKpath+Platform.FILE_SEPARATOR+"log"+Platform.FILE_SEPARATOR+"ConfigIHM.cfg";
File ihmconfig =new File(pathihmconfig);
configFile = new ConfigFile(ihmconfig);
configFile.setOption("path_READGRAPH", path);
configFile.saveConfigFile();
//clean graph
cleanlistElement();
analyzerGraphs.createMyDataset(path);
mapPerfGraph = analyzerGraphs.getMapPerfGraph();
mapAction = analyzerGraphs.getMapAction();
addPerformanceslist();
addMarkerlist();
//Add listener on list of graph and markers
setListenerMarkerGraph();
//Crosshair Value Renderer jet model
setRendererandModelSeries();
}
/**
* Jmenu add a Graph.
*
*
*/
private void jMenuItemaddGraphActionPerformed(ActionEvent evt) {
new AddGraphDialog(this,true);
}
/**
* Change color.
*
*
*/
private void jMenuItemChangecolorActionPerformed(ActionEvent evt) {
new ChangeColorDialog(this,true,analyzerGraphs.getMapPerfGraph());
}
/**
* save config file.
*
*
*/
private void jMenuItemSaveConfigFileActionPerformed(ActionEvent evt) {
String JATKpath = Platform.getInstance().getJATKPath();
String pathihmconfig=JATKpath+Platform.FILE_SEPARATOR+"log"+Platform.FILE_SEPARATOR+"ConfigIHM.cfg";
//get a value from confile
String Scriptpath =getvalueconfigfile(pathihmconfig, "path_READGRAPH");
PrintStream ps=null;
try {
ps = new PrintStream(new FileOutputStream(Scriptpath+Platform.FILE_SEPARATOR+"Confile2.xml"));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Logger.getLogger(this.getClass() ).warn("Can't Create config file");
return;
}
ps.println("<confile>");
ps.println("<graphlist>");
Set<String> cles = mapPerfGraph.keySet();
Iterator<String> it = cles.iterator();
while (it.hasNext()) {
String cle = (String) it.next();
PerformanceGraph graph = (PerformanceGraph) mapPerfGraph.get(cle);
ps.println("<graph name=\"" + cle+".csv" + "\""
+ " color=\""+getcolor(graph.getColor())+"\""+"/>");
}
ps.println("</graphlist>");
ps.println("<markerlist>");
ps.println("<marker name=\"keyPress\" position=\"0.2\" color=\"gray\"/>");
ps.println("<marker name=\"log\" position=\"0.4\" color=\"gray\"/>");
ps.println("<marker name=\"Action\" position=\"0.5\" color=\"gray\"/>");
ps.println("<marker name=\"Standard Out/Err\" position=\"0.7\" color=\"gray\"/>");
ps.println("<marker name=\"ScreenShot\" position=\"0.9\" color=\"gray\"/>");
ps.println("<marker name=\"Error JATK\" position=\"0.9\" color=\"gray\"/>");
ps.println("</markerlist>");
ps.println("</confile>");
ps.flush();
ps.close();
}
public String getcolor(Color color)
{
Map<String, Color> mapColor =CreateGraph.getMapColor();
if(mapColor.containsValue(color))
{
Set<String> cles = mapColor.keySet();
Iterator<String> it = cles.iterator();
while (it.hasNext()) {
String cle = (String) it.next();
Color tempcolor = mapColor.get(cle);
if(tempcolor.equals(color))
return cle;
}
}
return null;
}
/**
* add a new graph
*
* @param path cvsfilepath path of csv file
* @param path color color of the graph
*/
public void addrefGraph(String cvsfilepath,String color ){
//Try to load default dir
mapPerfGraph = analyzerGraphs.getMapPerfGraph();
mapAction = analyzerGraphs.getMapAction();
File file =new File(cvsfilepath);
cleanlistElement();
String JATKpath = Platform.getInstance().getJATKPath();
String pathihmconfig=JATKpath+Platform.FILE_SEPARATOR+"log"+Platform.FILE_SEPARATOR+"ConfigIHM.cfg";
//get a value from confile
String pclogOutputDir =getvalueconfigfile(pathihmconfig, "path_READGRAPH");
//Check Name if allready exist change it
if(mapPerfGraph.containsKey(file.getName().replace(".csv","")))
new GetinfoDialog(this, true,"Enter new name:",file.getName().replace(".csv",""));
Logger.getLogger(this.getClass() ).debug("New Name is:"+this.getName());
if(!this.getName().endsWith(".csv"))
{
setName(this.getName()+".csv");
}
File newfile =new File(pclogOutputDir+Platform.FILE_SEPARATOR+this.getName());
FileUtil.copyfile(newfile, file);
analyzerGraphs.addrefgraph( pclogOutputDir, newfile, color,this);
analyzerGraphs.fillAllDataset();
//initialize time axis
analyzerGraphs.initializeTimeAxis();
//create Dataset
analyzerGraphs.createDatasets();
addPerformanceslist();
addMarkerlist();
//Add listener on list of graph and markers
setListenerMarkerGraph();
//Crosshair Value Renderer et model
setRendererandModelSeries();
}
/**
* add all graph from a directory
*
*/
private void openDirectoryAction(ActionEvent evt) {
ConfigFile configFile=null;
String JATKpath = Platform.getInstance().getJATKPath();
String pathihmconfig=JATKpath+Platform.FILE_SEPARATOR+"log"+Platform.FILE_SEPARATOR+"ConfigIHM.cfg";
File ihmconfig =new File(pathihmconfig);
configFile = new ConfigFile(ihmconfig);
//get a value from confile
String Scriptpath =getvalueconfigfile(pathihmconfig, "path_READGRAPH");
//open JfileChooser
final JFileChooser fc = new JFileChooser(Scriptpath);
fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
int returnVal = fc.showOpenDialog(jMenu1);
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = fc.getSelectedFile();
Scriptpath=file.getAbsolutePath();
if(Scriptpath!=null)
configFile.setOption("path_READGRAPH", Scriptpath);
configFile.saveConfigFile();
//clean graph
cleanlistElement();
analyzerGraphs.createMyDataset(file.getPath());
mapPerfGraph = analyzerGraphs.getMapPerfGraph();
mapAction = analyzerGraphs.getMapAction();
addPerformanceslist();
addMarkerlist();
//Add listener on list of graph and markers
setListenerMarkerGraph();
//Crosshair Value Renderer et model
setRendererandModelSeries();
}
}
/**
* clean list on with it is possible to select graph and markers to display
*
*/
public void cleanlistElement()
{
if(mapPerfGraph!=null)
listModel.removeAllElements();
if(mapAction!=null)
listModelMarker.removeAllElements();
}
/**
* add all graph from a directory
*
* @param pathihmconfig path of the config file
* @param value value to get in config file
*/
public String getvalueconfigfile(String pathihmconfig,String value)
{
File ihmconfig =new File(pathihmconfig);
try {
ConfigFile configFile;
if(ihmconfig.exists())
{
configFile = new ConfigFile(ihmconfig);
configFile.loadConfigFile();
String result =configFile.getOption(value);
return result;
}
else {
ihmconfig.createNewFile();
Logger.getLogger(this.getClass() ).debug("New config file created");
// configFile = new ConfigFile(ihmconfig);
}
} catch (IOException e) {
e.printStackTrace();
Logger.getLogger(this.getClass() ).debug( e.getMessage());
}
return null;
}
/**
* Add listener on perf Grapg and marker to be able to add and remove graph
*
*/
public void setListenerMarkerGraph(){
listenPerf= new listenPerfGraphHandler();
listenMarker= new listenMarkerHandler();
jListGraph.getSelectionModel().addListSelectionListener(listenPerf);
jListMarker.getSelectionModel().addListSelectionListener(listenMarker);
}
/**
* set renderers
*
*/
public void setRendererandModelSeries(){
int size = analyzerGraphs.getMapPerfGraph().size();
this.modeltable = new DemoTableModel(size);
int row = 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);
this.modeltable.setValueAt(graph.getSerieName().replace("Series ", ""), row, 0);
this.modeltable.setValueAt(new Double("0"), row, 1);
this.modeltable.setValueAt(new Double("0"), row, 2);
this.modeltable.setValueAt(new Double("0"), row, 3);
// this.modeltable.setValueAt(graph.getColor(), row, 4);
row++;
}
}
jTable2.setModel(modeltable);
TableCellRenderer renderer = new NumberCellRenderer();
jTable2.getColumnModel().getColumn(0).setCellRenderer(new ColorRenderertext());
jTable2.getColumnModel().getColumn(1).setCellRenderer(renderer);
jTable2.getColumnModel().getColumn(2).setCellRenderer(renderer);
jTable2.getColumnModel().getColumn(3).setCellRenderer(renderer);
jListGraph.setCellRenderer(new MyCellRenderer());
}
/*
*
* Liste gauche choix du graph
*
*/
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);
}
}
}
/*
* Liste droite choix du graph
*
*/
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);
}
}
}
/**
* add list of performances graphs
*
*/
public void addPerformanceslist() {
if (mapPerfGraph != null) {
Set<String> cles = mapPerfGraph.keySet();
Iterator<String> it = cles.iterator();
while (it.hasNext()) {
String cle = (String) it.next();
listModel.addElement(cle);
}
}
}
/**
* add list markers
*
*/
public void addMarkerlist() {
if (mapAction != null) {
Set<String> cles = mapAction.keySet();
Iterator<String> it = cles.iterator();
while (it.hasNext()) {
String cle = (String) it.next();
listModelMarker.addElement(cle);
}
}
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
//initialise log4j
DOMConfigurator.configure("log4j.xml");
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new LectureJATKResult().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JComboBox jComboBoxLeft;
private javax.swing.JComboBox jComboBoxRight;
private javax.swing.JList jListGraph;
private javax.swing.JList jListMarker;
private javax.swing.JMenu jMenu1;
private javax.swing.JTable jTable2;
// End of variables declaration
class listenPerfGraphHandler implements ListSelectionListener {
public void valueChanged(ListSelectionEvent e) {
ListSelectionModel lsm = (ListSelectionModel) e.getSource();
int index = 0;
if (mapPerfGraph != null && !e.getValueIsAdjusting()) {
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()) {
analyzerGraphs.drawGraph(cle);
comboModelLeft.insertElementAt(cle, comboModelLeft.getSize());
comboModelRight.insertElementAt(cle, comboModelRight.getSize());
}
} else {
//now inactive
if (graph.isActive()) {
analyzerGraphs.undrawGraph(cle);
comboModelLeft.removeElement(cle);
comboModelRight.removeElement(cle);
}
}
index++;
}
frame.pack();
}
}
}
class listenMarkerHandler implements ListSelectionListener {
public void valueChanged(ListSelectionEvent e) {
ListSelectionModel lsm = (ListSelectionModel) e.getSource();
int index = 0;
if (mapAction != null && !e.getValueIsAdjusting()) {
Set<String> cles = mapAction.keySet();
Iterator<String> it = cles.iterator();
while (it.hasNext()) {
String cle = (String) it.next();
GraphMarker marker = (GraphMarker) mapAction.get(cle);
if (lsm.isSelectedIndex(index)) {
//Now Active
if (!marker.isActivate()) {
analyzerGraphs.drawMarker(cle);
}
} else {
//now inactive
if (marker.isActivate()) {
analyzerGraphs.removeMarker(cle);
}
}
index++;
}
}
}
}
@SuppressWarnings("serial")
class ColorRenderertext extends JLabel implements TableCellRenderer {
Border unselectedBorder = null;
Border selectedBorder = null;
boolean isBordered = true;
public ColorRenderertext() {
setOpaque(true); //MUST do this for background to show up.
}
public Component getTableCellRendererComponent(
JTable table, Object value,
boolean isSelected, boolean hasFocus,
int row, int column) {
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());
setToolTipText("RGB value: " + graph.getColor().getRed() + ", "
+ graph.getColor().getGreen() + ", "
+ graph.getColor().getBlue());
if(graph.isActive())
{
setBackground(Color.LIGHT_GRAY);
}
}
}
}
}
return this;
}
}
@SuppressWarnings("serial")
static class DemoTableModel extends AbstractTableModel implements TableModel {
private Object[][] data;
/**
* Creates a new table model
*
* @param rows the row count.
*/
public DemoTableModel(int rows) {
this.data = new Object[rows][7];
}
/**
* Returns the column count.
*
* @return 7.
*/
public int getColumnCount() {
return 4;
}
/**
* Returns the row count.
*
* @return The row count.
*/
public int getRowCount() {
return this.data.length ;
}
/**
* Returns the value at the specified cell in the table.
*
* @param row the row index.
* @param column the column index.
*
* @return The value.
*/
public Object getValueAt(int row, int column) {
return this.data[row][column];
}
/**
* Sets the value at the specified cell.
*
* @param value the value.
* @param row the row index.
* @param column the column index.
*/
public void setValueAt(Object value, int row, int column) {
this.data[row][column] = value;
fireTableDataChanged();
}
/**
* Returns the column name.
*
* @param column the column index.
*
* @return The column name.
*/
public String getColumnName(int column) {
switch(column) {
case 0 : return "Series Name:";
case 1 : return "Y:";
case 2 : return "Y (next):";
case 3 : return "Y (prev)";
// case 4 : return "Color";
}
return null;
}
}
@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(cle))
{
setForeground(graph.getColor());
}
}
}
}
return this;
}
}
}