package net.sourceforge.squirrel_sql.client.session.mainpanel.overview; import net.sourceforge.squirrel_sql.client.IApplication; import net.sourceforge.squirrel_sql.client.session.mainpanel.overview.datascale.DataScale; import net.sourceforge.squirrel_sql.client.session.mainpanel.overview.datascale.DataScaleTable; import net.sourceforge.squirrel_sql.fw.gui.GUIUtils; import net.sourceforge.squirrel_sql.fw.util.StringManager; import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory; import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; public class ChartConfigPanelTabController { private static final StringManager s_stringMgr = StringManagerFactory.getStringManager(ChartConfigController.class); private IApplication _app; private ChartConfigPanelTabMode _chartConfigPanelTabMode; private ChartConfigPanelTab _chartConfigPanelTab; private DataScaleTable _dataScaleTable; public ChartConfigPanelTabController(IApplication app, ChartConfigPanelTabMode chartConfigPanelTabMode) { _app = app; _chartConfigPanelTabMode = chartConfigPanelTabMode; _chartConfigPanelTab = new ChartConfigPanelTab(chartConfigPanelTabMode); _chartConfigPanelTab.cboCallDepth.setModel(new DefaultComboBoxModel(CallDepthComboModel.createModels())); _chartConfigPanelTab.cboCallDepth.setSelectedItem(CallDepthComboModel.getDefaultSelected()); if (_chartConfigPanelTabMode == ChartConfigPanelTabMode.SINGLE_COLUMN) { _chartConfigPanelTab.cboXColumns.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { onColumnSelected(e, ChartConfigPanelTabController.this._chartConfigPanelTab.cboXColumns); } }); } else if (_chartConfigPanelTabMode == ChartConfigPanelTabMode.XY_CHART) { _chartConfigPanelTab.cboYColumns.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { onColumnSelected(e, ChartConfigPanelTabController.this._chartConfigPanelTab.cboYColumns); } }); } _chartConfigPanelTab.btnChart.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { onChart(); } }); } public void setDataScaleTable(DataScaleTable dataScaleTable) { _dataScaleTable = dataScaleTable; if (_chartConfigPanelTabMode == ChartConfigPanelTabMode.SINGLE_COLUMN) { fillColumnCombo(_chartConfigPanelTab.cboXColumns); } else if (_chartConfigPanelTabMode == ChartConfigPanelTabMode.XY_CHART) { fillColumnCombo(_chartConfigPanelTab.cboXColumns); fillColumnCombo(_chartConfigPanelTab.cboYColumns); } onColumnSelected(null, _chartConfigPanelTab.cboXColumns); } private void fillColumnCombo(JComboBox cboColumns) { ColumnComboModel formerSelectedItem = (ColumnComboModel) cboColumns.getSelectedItem(); DefaultComboBoxModel defaultComboBoxModel = new DefaultComboBoxModel(ColumnComboModel.createColumnComboModels(_dataScaleTable)); cboColumns.setModel(defaultComboBoxModel); cboColumns.setSelectedItem(formerSelectedItem); if(null == cboColumns.getSelectedItem()) { cboColumns.setSelectedIndex(0); } } private void onColumnSelected(ItemEvent e, JComboBox cboColumns) { if (null == e || ItemEvent.SELECTED == e.getStateChange()) { ColumnComboModel selectedColumn = (ColumnComboModel) cboColumns.getSelectedItem(); _chartConfigPanelTab.cboYAxisKind.setModel(new DefaultComboBoxModel(ChartConfigMode.getAvailableValues(selectedColumn.getColumnDisplayDefinition(), _chartConfigPanelTabMode,s_stringMgr))); } } private void onChart() { ColumnComboModel selectedXAxisColumn = (ColumnComboModel) _chartConfigPanelTab.cboXColumns.getSelectedItem(); DataScale xAxisDataScale = _dataScaleTable.getDataScaleTableModel().getDataScaleAt(selectedXAxisColumn.getColumnIndexInDataScale()); DataScale yAxisDataScale = null; if(_chartConfigPanelTabMode == ChartConfigPanelTabMode.XY_CHART) { ColumnComboModel selectedYAxisColumn = (ColumnComboModel) _chartConfigPanelTab.cboYColumns.getSelectedItem(); yAxisDataScale = _dataScaleTable.getDataScaleTableModel().getDataScaleAt(selectedYAxisColumn.getColumnIndexInDataScale()); } CallDepthComboModel selItem = (CallDepthComboModel) _chartConfigPanelTab.cboCallDepth.getSelectedItem(); ChartHandler.doChart(xAxisDataScale, yAxisDataScale, selItem.getCallDepth(), (ChartConfigMode) _chartConfigPanelTab.cboYAxisKind.getSelectedItem(), _app.getResources(), GUIUtils.getOwningFrame(_dataScaleTable)); } public ChartConfigPanelTab getPanel() { return _chartConfigPanelTab; } }