Revision: 6676
http://squirrel-sql.svn.sourceforge.net/squirrel-sql/?rev=6676&view=rev
Author: gerdwagner
Date: 2012-10-06 20:55:15 +0000 (Sat, 06 Oct 2012)
Log Message:
-----------
More --> Overview tab: Now offers functionality to view query result data in bar charts. (Uses JFreeChart: http://www.jfree.org/jfreechart/)
Modified Paths:
--------------
trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/desktopcontainer/docktabdesktop/SmallTabButton.java
trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/resources/SquirrelResources.java
trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/overview/ChartHandler.java
trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/overview/ColumnComboModel.java
trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/overview/OverviewCtrl.java
trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/overview/OverviewPanel.java
trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/overview/datascale/DataScale.java
trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/overview/datascale/IndexedColumn.java
trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/overview/datascale/IndexedColumnFactory.java
trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/overview/datascale/Interval.java
trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/overview/datascale/ScaleFactory.java
trunk/sql12/app/src/main/resources/net/sourceforge/squirrel_sql/client/resources/squirrel.properties
trunk/sql12/app/src/main/resources/net/sourceforge/squirrel_sql/client/session/mainpanel/overview/I18NStrings.properties
trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/ColumnDisplayDefinition.java
Added Paths:
-----------
trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/overview/ChartBarConfigButtonHandlerListener.java
trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/overview/ChartConfigController.java
trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/overview/ChartConfigMode.java
trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/overview/ChartConfigPanel.java
trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/overview/ChartConfigPanelTab.java
trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/overview/ChartConfigPanelTabController.java
trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/overview/ChartConfigPanelTabMode.java
trunk/sql12/app/src/main/resources/net/sourceforge/squirrel_sql/client/resources/images/aggcount.png
trunk/sql12/app/src/main/resources/net/sourceforge/squirrel_sql/client/resources/images/aggmax.png
trunk/sql12/app/src/main/resources/net/sourceforge/squirrel_sql/client/resources/images/aggmin.png
trunk/sql12/app/src/main/resources/net/sourceforge/squirrel_sql/client/resources/images/aggsum.png
trunk/sql12/app/src/main/resources/net/sourceforge/squirrel_sql/client/resources/images/aggxy.png
trunk/sql12/app/src/main/resources/net/sourceforge/squirrel_sql/client/resources/images/tab-detach-small.png
trunk/sql12/app/src/main/resources/net/sourceforge/squirrel_sql/client/resources/images/tab-detach.png
Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/desktopcontainer/docktabdesktop/SmallTabButton.java
===================================================================
--- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/desktopcontainer/docktabdesktop/SmallTabButton.java 2012-10-02 23:25:27 UTC (rev 6675)
+++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/desktopcontainer/docktabdesktop/SmallTabButton.java 2012-10-06 20:55:15 UTC (rev 6676)
@@ -7,17 +7,32 @@
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.image.BufferedImage;
-import java.awt.image.ImageObserver;
-public class SmallTabButton extends JButton
+public class SmallTabButton<T> extends JButton
{
private Icon _icon;
+ private T _userObject;
- public SmallTabButton(String toolTipText, Icon icon)
+
+ public SmallTabButton(String toolTipText, ImageIcon icon)
{
+ this(toolTipText, icon, null);
+ }
+
+ public SmallTabButton(String toolTipText, ImageIcon icon, T userObject)
+ {
_icon = icon;
- int size = 17;
+ _userObject = userObject;
+ int size;
+ if (null == icon)
+ {
+ size = 17;
+ }
+ else
+ {
+ size = Math.max(_icon.getIconWidth(), _icon.getIconHeight()) + 5;
+ }
setPreferredSize(new Dimension(size, size));
setToolTipText(toolTipText);
@@ -108,6 +123,20 @@
}
+ @Override
+ public void setIcon(Icon icon)
+ {
+ _icon = icon;
+ repaint();
+ }
+ public T getUserObject()
+ {
+ return _userObject;
+ }
+ public void setUserObject(T userObject)
+ {
+ _userObject = userObject;
+ }
}
Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/resources/SquirrelResources.java
===================================================================
--- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/resources/SquirrelResources.java 2012-10-02 23:25:27 UTC (rev 6675)
+++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/resources/SquirrelResources.java 2012-10-06 20:55:15 UTC (rev 6676)
@@ -84,6 +84,15 @@
String SMALL_FILE = "smallFile";
String SMALL_FILE_CHANGED = "smallFileChanged";
+
+ String TAB_DETACH = "tabDetach";
+ String TAB_DETACH_SMALL = "tabDetachSmall";
+
+ String AGG_COUNT = "aggCount";
+ String AGG_SUM = "aggSum";
+ String AGG_XY = "aggXy";
+ String AGG_MIN = "aggMin";
+ String AGG_MAX = "aggMax";
}
public SquirrelResources(String rsrcBundleBaseName)
Added: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/overview/ChartBarConfigButtonHandlerListener.java
===================================================================
--- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/overview/ChartBarConfigButtonHandlerListener.java (rev 0)
+++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/overview/ChartBarConfigButtonHandlerListener.java 2012-10-06 20:55:15 UTC (rev 6676)
@@ -0,0 +1,6 @@
+package net.sourceforge.squirrel_sql.client.session.mainpanel.overview;
+
+public interface ChartBarConfigButtonHandlerListener
+{
+ void modeSelected(ChartConfigMode mode);
+}
Added: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/overview/ChartConfigController.java
===================================================================
--- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/overview/ChartConfigController.java (rev 0)
+++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/overview/ChartConfigController.java 2012-10-06 20:55:15 UTC (rev 6676)
@@ -0,0 +1,58 @@
+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.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;
+import java.util.ArrayList;
+
+public class ChartConfigController
+{
+ private static final StringManager s_stringMgr = StringManagerFactory.getStringManager(ChartConfigController.class);
+ private ChartConfigPanel _chartConfigPanel;
+ private final ChartConfigPanelTabController[] _chartConfigPanelTabControllers;
+
+ public ChartConfigController(IApplication app)
+ {
+
+ _chartConfigPanelTabControllers = new ChartConfigPanelTabController[]
+ {
+ new ChartConfigPanelTabController(app, ChartConfigPanelTabMode.SINGLE_COLUMN),
+ new ChartConfigPanelTabController(app, ChartConfigPanelTabMode.XY_CHART),
+ //new ChartConfigPanelTabController(app, ChartConfigPanelTabMode.XYZ_CHART)
+ };
+
+
+ ArrayList<ChartConfigPanelTab> chartConfigPanelTabs = new ArrayList<ChartConfigPanelTab>();
+
+ for (ChartConfigPanelTabController chartConfigPanelTabController : _chartConfigPanelTabControllers)
+ {
+ chartConfigPanelTabs.add(chartConfigPanelTabController.getPanel());
+ }
+
+ _chartConfigPanel = new ChartConfigPanel(chartConfigPanelTabs);
+
+ }
+
+ public JScrollPane getPanel()
+ {
+ return _chartConfigPanel;
+ }
+
+ public void setDataScaleTable(DataScaleTable dataScaleTable)
+ {
+ for (ChartConfigPanelTabController chartConfigPanelTabController : _chartConfigPanelTabControllers)
+ {
+ chartConfigPanelTabController.setDataScaleTable(dataScaleTable);
+ }
+ }
+}
+
+
Added: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/overview/ChartConfigMode.java
===================================================================
--- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/overview/ChartConfigMode.java (rev 0)
+++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/overview/ChartConfigMode.java 2012-10-06 20:55:15 UTC (rev 6676)
@@ -0,0 +1,106 @@
+package net.sourceforge.squirrel_sql.client.session.mainpanel.overview;
+
+import net.sourceforge.squirrel_sql.client.resources.SquirrelResources;
+import net.sourceforge.squirrel_sql.client.session.mainpanel.overview.datascale.DataScale;
+import net.sourceforge.squirrel_sql.client.session.mainpanel.overview.datascale.IndexedColumnFactory;
+import net.sourceforge.squirrel_sql.fw.datasetviewer.ColumnDisplayDefinition;
+import net.sourceforge.squirrel_sql.fw.util.StringManager;
+
+import java.util.ArrayList;
+
+public enum ChartConfigMode
+{
+ COUNT("overview.ChartConfigMode.modusCount", "overview.ChartConfigMode.modusCountAxisLabel", SquirrelResources.IImageNames.AGG_COUNT),
+ SUM("overview.ChartConfigMode.modusSum", "overview.ChartConfigMode.modusSumAxisLabel", SquirrelResources.IImageNames.AGG_SUM),
+
+ XY_COUNT_DISTINCT("overview.ChartConfigMode.modusCountDistinct", "overview.ChartConfigMode.modusCountDistinctAxisLabel", SquirrelResources.IImageNames.AGG_COUNT),
+ XY_SUM_COL("overview.ChartConfigMode.modusSum", "overview.ChartConfigMode.modusSumAxisLabelOfColumn", SquirrelResources.IImageNames.AGG_SUM);
+// XY_MIN("overview.ChartConfigMode.modusMin", "overview.ChartConfigMode.modusMinAxisLabel", SquirrelResources.IImageNames.AGG_MIN),
+// XY_MAX("overview.ChartConfigMode.modusMax", "overview.ChartConfigMode.modusMaxAxisLabel", SquirrelResources.IImageNames.AGG_MAX);
+
+ private final String _modusI18nKey;
+ private String _axisLabelI18nKey;
+ private final String _modusIconName;
+ private StringManager _s_stringMgr;
+
+ ChartConfigMode(String modusI18nKey, String axisLabelI18nKey, String modusIconName)
+ {
+ _modusI18nKey = modusI18nKey;
+ _axisLabelI18nKey = axisLabelI18nKey;
+ _modusIconName = modusIconName;
+ }
+
+
+
+
+ public static ChartConfigMode[] getAvailableValues(ColumnDisplayDefinition columnDisplayDefinition, ChartConfigPanelTabMode chartConfigPanelTabMode, StringManager s_stringMgr)
+ {
+ ArrayList<ChartConfigMode> ret = new ArrayList<ChartConfigMode>();
+
+ for (ChartConfigMode chartConfigMode : values())
+ {
+ chartConfigMode.setStringManager(s_stringMgr);
+ }
+
+ if (ChartConfigPanelTabMode.SINGLE_COLUMN == chartConfigPanelTabMode)
+ {
+ ret.add(COUNT);
+
+ if(IndexedColumnFactory.isSumable(columnDisplayDefinition))
+ {
+ ret.add(SUM);
+ }
+ }
+ else if (ChartConfigPanelTabMode.XY_CHART == chartConfigPanelTabMode)
+ {
+ ret.add(XY_COUNT_DISTINCT);
+
+ if(IndexedColumnFactory.isSumable(columnDisplayDefinition))
+ {
+ ret.add(XY_SUM_COL);
+ }
+
+// if(IndexedColumnFactory.isOrderable(columnDisplayDefinition))
+// {
+// ret.add(XY_MIN);
+// ret.add(XY_MAX);
+// }
+ }
+
+ return ret.toArray(new ChartConfigMode[ret.size()]);
+ }
+
+ private void setStringManager(StringManager s_stringMgr)
+ {
+ _s_stringMgr = s_stringMgr;
+ }
+
+ @Override
+ public String toString()
+ {
+ return _s_stringMgr.getString(_modusI18nKey);
+ }
+
+ public String getYAxisLabel(DataScale yAxisDataScale)
+ {
+ if(null == yAxisDataScale)
+ {
+ return _s_stringMgr.getString(_axisLabelI18nKey);
+ }
+ else
+ {
+ String col = yAxisDataScale.getColumnDisplayDefinition().getTableName();
+
+ if(null != col && 0 < col.trim().length())
+ {
+ col += "." + yAxisDataScale.getColumnDisplayDefinition().getColumnName();
+ }
+ else
+ {
+ col = yAxisDataScale.getColumnDisplayDefinition().getColumnName();
+ }
+
+ return _s_stringMgr.getString(_axisLabelI18nKey, col);
+ }
+ }
+}
Added: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/overview/ChartConfigPanel.java
===================================================================
--- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/overview/ChartConfigPanel.java (rev 0)
+++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/overview/ChartConfigPanel.java 2012-10-06 20:55:15 UTC (rev 6676)
@@ -0,0 +1,29 @@
+package net.sourceforge.squirrel_sql.client.session.mainpanel.overview;
+
+import net.sourceforge.squirrel_sql.client.gui.builders.UIFactory;
+import net.sourceforge.squirrel_sql.client.gui.builders.UIFactoryAdapter;
+import net.sourceforge.squirrel_sql.fw.util.StringManager;
+import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory;
+
+import javax.swing.*;
+import java.util.ArrayList;
+
+public class ChartConfigPanel extends JScrollPane
+{
+ private static final StringManager s_stringMgr = StringManagerFactory.getStringManager(ChartConfigController.class);
+
+
+ public ChartConfigPanel(ArrayList<ChartConfigPanelTab> chartConfigPanelTabs)
+ {
+
+ JTabbedPane tabbedPane = UIFactory.getInstance().createTabbedPane();
+
+ for (ChartConfigPanelTab chartConfigPanelTab : chartConfigPanelTabs)
+ {
+ tabbedPane.add(chartConfigPanelTab.getTabTitle(), chartConfigPanelTab);
+ }
+
+ setViewportView(tabbedPane);
+ }
+
+}
Added: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/overview/ChartConfigPanelTab.java
===================================================================
--- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/overview/ChartConfigPanelTab.java (rev 0)
+++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/overview/ChartConfigPanelTab.java 2012-10-06 20:55:15 UTC (rev 6676)
@@ -0,0 +1,98 @@
+package net.sourceforge.squirrel_sql.client.session.mainpanel.overview;
+
+import net.sourceforge.squirrel_sql.fw.util.StringManager;
+import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory;
+
+import javax.swing.*;
+import java.awt.*;
+
+public class ChartConfigPanelTab extends JPanel
+{
+ private static final StringManager s_stringMgr = StringManagerFactory.getStringManager(ChartConfigController.class);
+
+ JComboBox cboXColumns;
+ JComboBox cboYColumns;
+ JButton btnChart;
+ JComboBox cboCallDepth;
+ JComboBox cboYAxisKind;
+ private ChartConfigPanelTabMode _chartConfigPanelTabMode;
+
+
+ public ChartConfigPanelTab(ChartConfigPanelTabMode chartConfigPanelTabMode)
+ {
+ super(new GridBagLayout());
+ _chartConfigPanelTabMode = chartConfigPanelTabMode;
+
+ GridBagConstraints gbc;
+
+ gbc = new GridBagConstraints(0,0,1,1,0,0,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(15,5,5,5),0,0);
+ add(new JLabel(s_stringMgr.getString("OverviewPanel.XAxis")), gbc);
+
+ gbc = new GridBagConstraints(1,0,1,1,0,0,GridBagConstraints.EAST, GridBagConstraints.HORIZONTAL, new Insets(15,10,5,5),0,0);
+ cboXColumns = new JComboBox();
+ add(cboXColumns, gbc);
+
+
+ if (chartConfigPanelTabMode == ChartConfigPanelTabMode.SINGLE_COLUMN)
+ {
+ gbc = new GridBagConstraints(0,1,1,1,0,0,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(0,10,5,5),0,0);
+ add(new JLabel(s_stringMgr.getString("OverviewPanel.YAxis")), gbc);
+
+ gbc = new GridBagConstraints(1,1,1,1,0,0,GridBagConstraints.EAST, GridBagConstraints.HORIZONTAL, new Insets(0,10,5,5),0,0);
+ cboYAxisKind = new JComboBox();
+ add(cboYAxisKind, gbc);
+ }
+ else if(chartConfigPanelTabMode == ChartConfigPanelTabMode.XY_CHART)
+ {
+ gbc = new GridBagConstraints(0,1,1,1,0,0,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(0,10,5,5),0,0);
+ add(new JLabel(s_stringMgr.getString("OverviewPanel.YAxis")), gbc);
+
+ gbc = new GridBagConstraints(1,1,1,1,0,0,GridBagConstraints.EAST, GridBagConstraints.HORIZONTAL, new Insets(0,10,5,5),0,0);
+ cboYColumns = new JComboBox();
+ add(cboYColumns, gbc);
+
+ gbc = new GridBagConstraints(2,1,1,1,0,0,GridBagConstraints.EAST, GridBagConstraints.HORIZONTAL, new Insets(0,0,5,5),0,0);
+ add(createAsKindPanel(), gbc);
+ }
+
+
+ gbc = new GridBagConstraints(0,2,1,1,0,0,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(0,10,5,5),0,0);
+ add(new JLabel(s_stringMgr.getString("OverviewPanel.maxBarCount")), gbc);
+
+ gbc = new GridBagConstraints(1,2,1,1,0,0,GridBagConstraints.EAST, GridBagConstraints.HORIZONTAL, new Insets(0,10,5,5),0,0);
+ cboCallDepth = new JComboBox();
+ add(cboCallDepth, gbc);
+
+
+
+
+ gbc = new GridBagConstraints(0,3,2,1,0,0,GridBagConstraints.EAST, GridBagConstraints.HORIZONTAL, new Insets(15,10,5,0),0,0);
+ btnChart = new JButton(s_stringMgr.getString("OverviewPanel.showChartEndButton"));
+ add(btnChart, gbc);
+
+
+
+ int gbcCol = chartConfigPanelTabMode == ChartConfigPanelTabMode.SINGLE_COLUMN ? 4:5;
+ gbc = new GridBagConstraints(0,gbcCol,3,1,0,1,GridBagConstraints.EAST, GridBagConstraints.BOTH, new Insets(0,0,0,0),0,0);
+ add(new JPanel(), gbc);
+
+
+ gbc = new GridBagConstraints(3,0,1,4,1,0,GridBagConstraints.EAST, GridBagConstraints.BOTH, new Insets(0,0,0,0),0,0);
+ add(new JPanel(), gbc);
+ }
+
+ private JPanel createAsKindPanel()
+ {
+ JPanel pnl = new JPanel(new BorderLayout(5,0));
+ pnl.add(new JLabel(s_stringMgr.getString("OverviewPanel.as")), BorderLayout.WEST);
+
+ cboYAxisKind = new JComboBox();
+ pnl.add(cboYAxisKind, BorderLayout.CENTER);
+ return pnl;
+ }
+
+ public String getTabTitle()
+ {
+ return s_stringMgr.getString(_chartConfigPanelTabMode.getTabTitleKey());
+ }
+}
Added: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/overview/ChartConfigPanelTabController.java
===================================================================
--- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/overview/ChartConfigPanelTabController.java (rev 0)
+++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/overview/ChartConfigPanelTabController.java 2012-10-06 20:55:15 UTC (rev 6676)
@@ -0,0 +1,134 @@
+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.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(), _app, (ChartConfigMode) _chartConfigPanelTab.cboYAxisKind.getSelectedItem());
+ }
+
+
+ public ChartConfigPanelTab getPanel()
+ {
+ return _chartConfigPanelTab;
+ }
+}
Added: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/overview/ChartConfigPanelTabMode.java
===================================================================
--- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/overview/ChartConfigPanelTabMode.java (rev 0)
+++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/overview/ChartConfigPanelTabMode.java 2012-10-06 20:55:15 UTC (rev 6676)
@@ -0,0 +1,20 @@
+package net.sourceforge.squirrel_sql.client.session.mainpanel.overview;
+
+public enum ChartConfigPanelTabMode
+{
+ SINGLE_COLUMN("overview.ChartConfigController.tabSingleColChart"),
+ XY_CHART("overview.ChartConfigController.tabXYChart"),
+ XYZ_CHART("overview.ChartConfigController.tabXYZChart");
+
+ private String _tabTitleKey;
+
+ ChartConfigPanelTabMode(String tabTitleKey)
+ {
+ _tabTitleKey = tabTitleKey;
+ }
+
+ public String getTabTitleKey()
+ {
+ return _tabTitleKey;
+ }
+}
Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/overview/ChartHandler.java
===================================================================
--- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/overview/ChartHandler.java 2012-10-02 23:25:27 UTC (rev 6675)
+++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/overview/ChartHandler.java 2012-10-06 20:55:15 UTC (rev 6676)
@@ -6,38 +6,41 @@
import net.sourceforge.squirrel_sql.client.session.mainpanel.overview.datascale.DataScaleListener;
import net.sourceforge.squirrel_sql.client.session.mainpanel.overview.datascale.Interval;
import net.sourceforge.squirrel_sql.client.session.mainpanel.overview.datascale.ScaleFactory;
+import net.sourceforge.squirrel_sql.fw.util.StringManager;
+import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory;
import org.jfree.chart.*;
import org.jfree.chart.block.*;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.title.LegendTitle;
import org.jfree.data.category.DefaultCategoryDataset;
-import org.jfree.text.TextBlockAnchor;
import org.jfree.ui.HorizontalAlignment;
-import org.jfree.ui.RectangleAnchor;
import org.jfree.ui.RectangleEdge;
import javax.swing.*;
import java.awt.*;
import java.util.ArrayList;
+import java.util.HashSet;
public class ChartHandler
{
+ private static final StringManager s_stringMgr = StringManagerFactory.getStringManager(ChartHandler.class);
+
public static final int MAX_LEGEND_ENTRIES = 10;
- public static void doChart(DataScale dataScale, int callDepth, IApplication app)
+ public static void doChart(DataScale xAxisDataScale, DataScale yAxisDataScale, int callDepth, IApplication app, ChartConfigMode mode)
{
try
{
ArrayList<Object[]> rows = new ArrayList<Object[]>();
- for (Interval interval : dataScale.getIntervals())
+ for (Interval xAxisInterval : xAxisDataScale.getIntervals())
{
- rows.addAll(interval.getResultRows());
+ rows.addAll(xAxisInterval.getResultRows());
}
- ScaleFactory scaleFactory = new ScaleFactory(rows, dataScale.getColumnIx(), dataScale.getColumnDisplayDefinition(), callDepth);
+ ScaleFactory scaleFactory = new ScaleFactory(rows, xAxisDataScale.getColumnIx(), xAxisDataScale.getColumnDisplayDefinition(), callDepth);
DataScaleListener dumDataScaleListener = new DataScaleListener()
{
@@ -62,19 +65,19 @@
DefaultCategoryDataset categoryDataset = new DefaultCategoryDataset();
- String category = dataScale.getColumnDisplayDefinition().getColumnName();
+ String category = xAxisDataScale.getColumnDisplayDefinition().getColumnName();
for (Interval interval : newScale.getIntervals())
{
- categoryDataset.addValue(interval.getLen(), interval.getLabel(), category);
+ categoryDataset.addValue(calculateValue(interval, mode, yAxisDataScale), interval.getLabel(), category);
}
- String title = "Chart for column: " + dataScale.getColumnDisplayDefinition().getColumnName();
+ String title = "Chart for column: " + xAxisDataScale.getColumnDisplayDefinition().getColumnName();
JFreeChart chart = ChartFactory.createBarChart(
title, // chart title
category, // domain axis label
- "Count", // range axis label
+ mode.getY...
[truncated message content] |