1.1 --- a/modules/lib.charting/src/org/aiotrade/lib/charting/chart/ChartFactory.scala Sun Nov 08 05:59:46 2009 +0800
1.2 +++ b/modules/lib.charting/src/org/aiotrade/lib/charting/chart/ChartFactory.scala Sun Nov 08 06:43:56 2009 +0800
1.3 @@ -33,7 +33,6 @@
1.4 import org.aiotrade.lib.math.timeseries.TVar
1.5 import org.aiotrade.lib.math.timeseries.plottable.Plot
1.6 import org.aiotrade.lib.math.util.Signal
1.7 -import scala.collection.mutable.HashSet
1.8
1.9
1.10 /**
1.11 @@ -44,41 +43,33 @@
1.12 */
1.13 object ChartFactory {
1.14
1.15 - def createVarChart(chartVarContainer: HashSet[TVar[_]], v: TVar[_]): Chart = {
1.16 + def createVarChart(v: TVar[_]): Chart = {
1.17 var chart: Chart = null
1.18 v.plot match {
1.19 case Plot.Volume =>
1.20 chart = new VolumeChart
1.21 chart.asInstanceOf[VolumeChart].model.set(false)
1.22 - chartVarContainer += v
1.23 case Plot.Line =>
1.24 chart = new PolyLineChart
1.25 chart.asInstanceOf[PolyLineChart].model.set(v.asInstanceOf[TVar[Float]])
1.26 - chartVarContainer += v
1.27 case Plot.Stick =>
1.28 chart = new StickChart
1.29 chart.asInstanceOf[StickChart].model.set(v.asInstanceOf[TVar[Float]])
1.30 - chartVarContainer += v
1.31 case Plot.Dot =>
1.32 chart = new DotChart
1.33 chart.asInstanceOf[DotChart].model.set(v)
1.34 - chartVarContainer += v
1.35 case Plot.Shade =>
1.36 chart = new GradientChart
1.37 chart.asInstanceOf[GradientChart].model.set(v, null)
1.38 - chartVarContainer += v
1.39 case Plot.Profile =>
1.40 chart = new ProfileChart
1.41 chart.asInstanceOf[ProfileChart].model.set(v)
1.42 - chartVarContainer += v
1.43 case Plot.Zigzag =>
1.44 chart = new ZigzagChart
1.45 chart.asInstanceOf[ZigzagChart].model.set(v)
1.46 - chartVarContainer += v
1.47 case Plot.Signal =>
1.48 chart = new SignalChart
1.49 chart.asInstanceOf[SignalChart].model.set((v.asInstanceOf[TVar[Signal]]))
1.50 - chartVarContainer += v
1.51 case _ =>
1.52 }
1.53
2.1 --- a/modules/lib.charting/src/org/aiotrade/lib/charting/view/ChartView.scala Sun Nov 08 05:59:46 2009 +0800
2.2 +++ b/modules/lib.charting/src/org/aiotrade/lib/charting/view/ChartView.scala Sun Nov 08 06:43:56 2009 +0800
2.3 @@ -89,8 +89,8 @@
2.4 } with JComponent with ChangeObservable {
2.5
2.6 protected var masterSer: MasterTSer = _
2.7 - protected val mainSerChartMapVars = new LinkedHashMap[Chart, HashSet[TVar[_]]]
2.8 - protected val overlappingSerChartMapVars = new LinkedHashMap[TSer, LinkedHashMap[Chart, HashSet[TVar[_]]]]
2.9 + protected val mainSerChartToVars = new LinkedHashMap[Chart, HashSet[TVar[_]]]
2.10 + protected val overlappingSerChartToVars = new LinkedHashMap[TSer, LinkedHashMap[Chart, HashSet[TVar[_]]]]
2.11 protected var lastDepthOfOverlappingChart = Pane.DEPTH_CHART_BEGIN
2.12 protected var mainChartPane: ChartPane = _
2.13 protected var glassPane: GlassPane = _
2.14 @@ -460,16 +460,16 @@
2.15 }
2.16
2.17 def getMainSerChartMapVars = {
2.18 - mainSerChartMapVars
2.19 + mainSerChartToVars
2.20 }
2.21
2.22 def getChartMapVars(ser: TSer): LinkedHashMap[Chart, HashSet[TVar[_]]] = {
2.23 assert(ser != null, "Do not pass me a null ser!")
2.24 - if (ser == getMainSer) mainSerChartMapVars else overlappingSerChartMapVars.get(ser).get
2.25 + if (ser == getMainSer) mainSerChartToVars else overlappingSerChartToVars.get(ser).get
2.26 }
2.27
2.28 def getOverlappingSers = {
2.29 - overlappingSerChartMapVars.keySet
2.30 + overlappingSerChartToVars.keySet
2.31 }
2.32
2.33 def getAllSers = {
2.34 @@ -488,15 +488,16 @@
2.35 ser.addSerChangeListener(serChangeListener)
2.36
2.37 val chartVarsMap = new LinkedHashMap[Chart, HashSet[TVar[_]]]
2.38 - overlappingSerChartMapVars += (ser -> chartVarsMap)
2.39 + overlappingSerChartToVars += (ser -> chartVarsMap)
2.40
2.41 var depthGradient = Pane.DEPTH_GRADIENT_BEGIN;
2.42
2.43 for (v <- ser.vars) {
2.44 - val chartVars = new HashSet[TVar[_]]
2.45 - val chart = ChartFactory.createVarChart(chartVars, v)
2.46 +
2.47 + val chart = ChartFactory.createVarChart(v)
2.48 if (chart != null) {
2.49 - chartVarsMap.put(chart, chartVars)
2.50 + val chartVars = new HashSet[TVar[_]]
2.51 + chartVarsMap.put(chart, chartVars += v)
2.52
2.53 chart.set(mainChartPane, ser)
2.54
2.55 @@ -519,7 +520,7 @@
2.56 def removeOverlappingCharts(ser: TSer) {
2.57 ser.removeSerChangeListener(serChangeListener)
2.58
2.59 - overlappingSerChartMapVars.get(ser) foreach {chartVarsMap =>
2.60 + overlappingSerChartToVars.get(ser) foreach {chartVarsMap =>
2.61 for (chart <- chartVarsMap.keySet) {
2.62 mainChartPane.removeChart(chart)
2.63 chart match {
2.64 @@ -531,7 +532,7 @@
2.65 }
2.66 /** release chartVarsMap */
2.67 chartVarsMap.clear
2.68 - overlappingSerChartMapVars.remove(ser)
2.69 + overlappingSerChartToVars.remove(ser)
2.70 }
2.71
2.72 notifyObserversChanged(classOf[ChartValidityObserver[Any]])
3.1 --- a/modules/lib.charting/src/org/aiotrade/lib/charting/view/ChartViewContainer.scala Sun Nov 08 05:59:46 2009 +0800
3.2 +++ b/modules/lib.charting/src/org/aiotrade/lib/charting/view/ChartViewContainer.scala Sun Nov 08 06:43:56 2009 +0800
3.3 @@ -52,7 +52,7 @@
3.4 */
3.5 abstract class ChartViewContainer extends JPanel {
3.6
3.7 - private val descriptorsWithSlaveView = new HashMap[IndicatorDescriptor, ChartView]
3.8 + private val descriptorsToSlaveView = new HashMap[IndicatorDescriptor, ChartView]
3.9 private var controller: ChartingController = _
3.10 private var masterView: ChartView = _
3.11 /**
3.12 @@ -88,7 +88,7 @@
3.13 def setInteractive(b: Boolean) {
3.14 getMasterView.setInteractive(b)
3.15
3.16 - for (view <- descriptorsWithSlaveView.valuesIterator) {
3.17 + for (view <- descriptorsToSlaveView.valuesIterator) {
3.18 view.setInteractive(b)
3.19 }
3.20
3.21 @@ -134,9 +134,9 @@
3.22
3.23 var numSlaveViews = 0
3.24 var sumSlaveViewsHeight = 0f
3.25 - for (v <- descriptorsWithSlaveView.valuesIterator if v != getMasterView) {
3.26 + for (view <- descriptorsToSlaveView.valuesIterator if view != getMasterView) {
3.27 /** overlapping view is also in masterView, should ignor it */
3.28 - sumSlaveViewsHeight += v.getHeight
3.29 + sumSlaveViewsHeight += view.getHeight
3.30 numSlaveViews += 1
3.31 }
3.32
3.33 @@ -145,9 +145,9 @@
3.34 sumSlaveViewsHeight = 0.382f * masterView.getHeight
3.35 }
3.36
3.37 - setVisible(false);
3.38 + setVisible(false)
3.39
3.40 - val adjustHeight = increment;
3.41 + val adjustHeight = increment
3.42 gbc.weighty = masterView.getHeight + adjustHeight
3.43
3.44 /**
3.45 @@ -157,24 +157,24 @@
3.46 * the size according to weightx and weighty, but for performence issue,
3.47 * we'd better setSize() to the actual size that we want.
3.48 */
3.49 - gbl.setConstraints(masterView, gbc);
3.50 - masterView.setSize(new Dimension(masterView.getWidth, gbc.weighty.intValue))
3.51 - for (v <- descriptorsWithSlaveView.valuesIterator if !v.equals(getMasterView)) {
3.52 + gbl.setConstraints(masterView, gbc)
3.53 + masterView.setSize(new Dimension(masterView.getWidth, gbc.weighty.toInt))
3.54 + for (view <- descriptorsToSlaveView.valuesIterator if view != getMasterView) {
3.55 /** average assigning */
3.56 gbc.weighty = (sumSlaveViewsHeight - adjustHeight) / numSlaveViews
3.57 /*-
3.58 * proportional assigning
3.59 * gbc.weighty = v.getHeight() - adjustHeight * v.getHeight() / iHeight;
3.60 */
3.61 - gbl.setConstraints(v, gbc)
3.62 - v.setSize(new Dimension(v.getWidth, gbc.weighty.intValue))
3.63 + gbl.setConstraints(view, gbc)
3.64 + view.setSize(new Dimension(view.getWidth, gbc.weighty.toInt))
3.65 }
3.66
3.67 setVisible(true)
3.68 }
3.69
3.70 def getMasterView: ChartView = {
3.71 - masterView;
3.72 + masterView
3.73 }
3.74
3.75 protected def setMasterView(masterView: ChartView, gbc: GridBagConstraints) {
3.76 @@ -184,11 +184,11 @@
3.77
3.78 def addSlaveView(descriptor: IndicatorDescriptor, indicator: Indicator, agbc: GridBagConstraints) {
3.79 var gbc = agbc
3.80 - if (!descriptorsWithSlaveView.contains(descriptor)) {
3.81 + if (!descriptorsToSlaveView.contains(descriptor)) {
3.82 var view: ChartView = null
3.83 if (indicator.isOverlapping) {
3.84 view = getMasterView
3.85 - view.addOverlappingCharts(indicator);
3.86 + view.addOverlappingCharts(indicator)
3.87 } else {
3.88 view = new IndicatorChartView(getController, indicator)
3.89 if (gbc == null) {
3.90 @@ -198,7 +198,7 @@
3.91 }
3.92 add(view, gbc)
3.93 }
3.94 - descriptorsWithSlaveView.put(descriptor, view)
3.95 + descriptorsToSlaveView.put(descriptor, view)
3.96 setSelectedView(view)
3.97 }
3.98 }
3.99 @@ -214,11 +214,11 @@
3.100 repaint()
3.101 case None =>
3.102 }
3.103 - descriptorsWithSlaveView.remove(descriptor)
3.104 + descriptorsToSlaveView.remove(descriptor)
3.105 }
3.106
3.107 def getSlaveViews = {
3.108 - descriptorsWithSlaveView.valuesIterator
3.109 + descriptorsToSlaveView.valuesIterator
3.110 }
3.111
3.112 def setSelectedView(view: ChartView) {
3.113 @@ -261,8 +261,8 @@
3.114 }
3.115
3.116 def lookupIndicatorDescriptor(view: ChartView): IndicatorDescriptor = {
3.117 - for (descriptor <- descriptorsWithSlaveView.keysIterator) {
3.118 - val theView = descriptorsWithSlaveView.get(descriptor)
3.119 + for (descriptor <- descriptorsToSlaveView.keysIterator) {
3.120 + val theView = descriptorsToSlaveView.get(descriptor)
3.121 if (theView != null && theView == view) {
3.122 return descriptor
3.123 }
3.124 @@ -271,11 +271,11 @@
3.125 }
3.126
3.127 def lookupChartView(descriptor: IndicatorDescriptor): Option[ChartView] = {
3.128 - descriptorsWithSlaveView.get(descriptor)
3.129 + descriptorsToSlaveView.get(descriptor)
3.130 }
3.131
3.132 def getDescriptorsWithSlaveView: HashMap[IndicatorDescriptor, ChartView] = {
3.133 - descriptorsWithSlaveView
3.134 + descriptorsToSlaveView
3.135 }
3.136
3.137 def getFocusableParent: Component = {
3.138 @@ -302,18 +302,18 @@
3.139 val begPos = controller.getMasterSer.rowOfTime(begTime)
3.140 val endPos = controller.getMasterSer.rowOfTime(endTime)
3.141 val nBars = endPos - begPos
3.142 - val width = (nBars * controller.getWBar).intValue
3.143 + val width = (nBars * controller.getWBar).toInt
3.144
3.145 /** backup: */
3.146 val backupRightCursorPos = controller.getRightSideRow
3.147 val backupReferCursorPos = controller.getReferCursorRow
3.148
3.149 - controller.setCursorByRow(backupReferCursorPos, endPos, true);
3.150 + controller.setCursorByRow(backupReferCursorPos, endPos, true)
3.151
3.152 - saveToCustomSizeImage(file, fileFormat, width, height);
3.153 + saveToCustomSizeImage(file, fileFormat, width, height)
3.154
3.155 /** restore: */
3.156 - controller.setCursorByRow(backupReferCursorPos, backupRightCursorPos, true);
3.157 + controller.setCursorByRow(backupReferCursorPos, backupRightCursorPos, true)
3.158 }
3.159
3.160 @throws(classOf[Exception])
3.161 @@ -356,7 +356,7 @@
3.162
3.163 @throws(classOf[Throwable])
3.164 override protected def finalize {
3.165 - descriptorsWithSlaveView.clear
3.166 + descriptorsToSlaveView.clear
3.167 super.finalize
3.168 }
3.169 }
3.170 \ No newline at end of file
4.1 --- a/modules/lib.charting/src/org/aiotrade/lib/charting/view/IndicatorChartView.scala Sun Nov 08 05:59:46 2009 +0800
4.2 +++ b/modules/lib.charting/src/org/aiotrade/lib/charting/view/IndicatorChartView.scala Sun Nov 08 06:43:56 2009 +0800
4.3 @@ -129,16 +129,16 @@
4.4
4.5
4.6 protected def putChartsOfMainSer {
4.7 - var depth = Pane.DEPTH_CHART_BEGIN;
4.8 + var depth = Pane.DEPTH_CHART_BEGIN
4.9 var depthGradient = Pane.DEPTH_GRADIENT_BEGIN
4.10
4.11 for (ser <- getAllSers) {
4.12 /** add charts */
4.13 for (v <- ser.vars) {
4.14 - val chartVars = new HashSet[TVar[_]]
4.15 - val chart = ChartFactory.createVarChart(chartVars, v)
4.16 + val chart = ChartFactory.createVarChart(v)
4.17 if (chart != null) {
4.18 - mainSerChartMapVars.put(chart, chartVars)
4.19 + val chartVars = new HashSet[TVar[_]]
4.20 + mainSerChartToVars.put(chart, chartVars += v)
4.21
4.22 chart.set(mainChartPane, ser)
4.23
4.24 @@ -197,9 +197,9 @@
4.25 override def popupToDesktop {
4.26 val popupView = new PopupIndicatorChartView(getController, getMainSer)
4.27 val alwaysOnTop = true;
4.28 - val dimension = new Dimension(getWidth, 200)
4.29 + val dim = new Dimension(getWidth, 200)
4.30
4.31 - getController.popupViewToDesktop(popupView, dimension, alwaysOnTop, false)
4.32 + getController.popupViewToDesktop(popupView, dim, alwaysOnTop, false)
4.33 }
4.34
4.35 @throws(classOf[Throwable])
5.1 --- a/modules/lib.chartview/src/org/aiotrade/lib/chartview/AbstractQuoteChartView.scala Sun Nov 08 05:59:46 2009 +0800
5.2 +++ b/modules/lib.chartview/src/org/aiotrade/lib/chartview/AbstractQuoteChartView.scala Sun Nov 08 06:43:56 2009 +0800
5.3 @@ -99,7 +99,7 @@
5.4 quoteChart = new QuoteChart
5.5
5.6 val vars = new HashSet[TVar[_]]
5.7 - mainSerChartMapVars.put(quoteChart, vars)
5.8 + mainSerChartToVars.put(quoteChart, vars)
5.9 for (v <- mainSer.vars) {
5.10 if (v.plot == Plot.Quote) {
5.11 vars.add(v)