package com.ibm.nmon.gui.main;
import com.ibm.nmon.gui.Styles;
import com.ibm.nmon.gui.chart.BaseChartPanel;
import com.ibm.nmon.gui.chart.DataTypeChartPanel;
import com.ibm.nmon.data.DataSet;
import com.ibm.nmon.data.DataType;
/**
* View a chart for a specific set of fields from a {@link DataType}.
*
* @see DataTypeChartPanel
*/
final class DataTypeView extends ChartSplitPane {
private static final long serialVersionUID = -1143801614058577721L;
private final DataTypeChartPanel chartPanel;
DataTypeView(NMONVisualizerGui gui) {
super(gui, gui.getMainFrame());
chartPanel = new DataTypeChartPanel(gui);
chartPanel.setBorder(Styles.createTopLineBorder(this));
// link chart and summary table; ChartSplitPane will handle highlighted chart lines
chartPanel.addPropertyChangeListener("chart", summaryTable);
chartPanel.addPropertyChangeListener("highlightedLine", this);
// ensure ChartSplitPane forwards these events
chartPanel.addPropertyChangeListener("chart", this);
chartPanel.addPropertyChangeListener("annotation", this);
gui.addDataSetListener(this);
setTopComponent(chartPanel);
setEnabled(false);
}
@Override
public void setEnabled(boolean enabled) {
if (enabled != isEnabled()) {
super.setEnabled(enabled);
chartPanel.setEnabled(enabled);
}
}
@Override
protected BaseChartPanel getChartPanel() {
return chartPanel;
}
void setData(DataSet data, DataType type) {
chartPanel.setData(data, type);
}
void setData(DataSet data, DataType type, String field) {
chartPanel.setData(data, type, java.util.Collections.singletonList(field));
}
@Override
protected void saveCharts(String directory) {
// null => saveChart will create a default name
chartPanel.saveChart(directory, null);
}
@Override
public void dataAdded(DataSet data) {}
@Override
public void dataRemoved(DataSet data) {
DataSet current = chartPanel.getData();
if ((current != null) && current.equals(data)) {
chartPanel.clearChart();
}
// current == null => chart already clear
}
@Override
public void dataChanged(DataSet data) {}
@Override
public void dataCleared() {
chartPanel.clearChart();
}
}