Mercurial > dive4elements > river
comparison flys-client/src/main/java/de/intevation/flys/client/client/ui/chart/ChartOutputTab.java @ 3694:0a277b041770
Improved panning in TimeseriesCharts (issue715).
flys-client/trunk@5390 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Fri, 07 Sep 2012 13:15:28 +0000 |
parents | 8a16ff3b9a7f |
children | 3b4cef59836a |
comparison
equal
deleted
inserted
replaced
3693:b63e6fdd8cd0 | 3694:0a277b041770 |
---|---|
113 xrange = new int[2]; | 113 xrange = new int[2]; |
114 yrange = new int[2]; | 114 yrange = new int[2]; |
115 zoomStack = new Stack<ZoomObj>(); | 115 zoomStack = new Stack<ZoomObj>(); |
116 | 116 |
117 zoom = new Number[] { | 117 zoom = new Number[] { |
118 new Integer(0), new Integer(1), | 118 new Double(0), new Double(1), |
119 new Integer(0), new Integer(1) }; | 119 new Double(0), new Double(1) }; |
120 | 120 |
121 left.setBorder("1px solid gray"); | 121 left.setBorder("1px solid gray"); |
122 left.setWidth(THEMEPANEL_MIN_WIDTH); | 122 left.setWidth(THEMEPANEL_MIN_WIDTH); |
123 left.setMinWidth(THEMEPANEL_MIN_WIDTH); | 123 left.setMinWidth(THEMEPANEL_MIN_WIDTH); |
124 right.setWidth("*"); | 124 right.setWidth("*"); |
326 Axis yAxis = chartInfo.getYAxis(0); | 326 Axis yAxis = chartInfo.getYAxis(0); |
327 | 327 |
328 Number[] x = panAxis(xAxis, diffX); | 328 Number[] x = panAxis(xAxis, diffX); |
329 Number[] y = panAxis(yAxis, diffY); | 329 Number[] y = panAxis(yAxis, diffY); |
330 | 330 |
331 // Set the zoom coordinates. | |
331 zoom[0] = x[0]; | 332 zoom[0] = x[0]; |
332 zoom[1] = x[1]; | 333 zoom[1] = x[1]; |
333 zoom[2] = y[0]; | 334 zoom[2] = y[0]; |
334 zoom[3] = y[1]; | 335 zoom[3] = y[1]; |
335 | 336 |
439 }; | 440 }; |
440 } | 441 } |
441 | 442 |
442 | 443 |
443 public static Number[] computeZoom(Axis axis, Number min, Number max) { | 444 public static Number[] computeZoom(Axis axis, Number min, Number max) { |
444 Number[] zoom = new Number[2]; | 445 Number[] hereZoom = new Number[2]; |
445 | 446 |
446 Number absMin = axis.getMin(); | 447 Number absMin = axis.getMin(); |
447 Number absMax = axis.getMax(); | 448 Number absMax = axis.getMax(); |
448 Number diff = isBigger(absMax, absMin) | 449 Number diff = isBigger(absMax, absMin) |
449 ? subtract(absMax, absMin) | 450 ? subtract(absMax, absMin) |
450 : subtract(absMin, absMax); | 451 : subtract(absMin, absMax); |
451 | 452 |
452 zoom[0] = divide(subtract(min, absMin), diff); | 453 hereZoom[0] = divide(subtract(min, absMin), diff); |
453 zoom[1] = divide(subtract(max, absMin), diff); | 454 hereZoom[1] = divide(subtract(max, absMin), diff); |
454 | 455 |
455 return zoom; | 456 return hereZoom; |
456 } | 457 } |
457 | 458 |
458 | 459 |
459 /** Get Collection from ChartThemePanel. .*/ | 460 /** Get Collection from ChartThemePanel. .*/ |
460 public Collection getCtpCollection() { | 461 public Collection getCtpCollection() { |
705 return new Integer(left.intValue() - right.intValue()); | 706 return new Integer(left.intValue() - right.intValue()); |
706 } | 707 } |
707 } | 708 } |
708 | 709 |
709 | 710 |
711 /** Add two numbers, casting to Type of param left. */ | |
710 public static Number add(Number left, Number right) { | 712 public static Number add(Number left, Number right) { |
711 if (left instanceof Double) { | 713 if (left instanceof Double) { |
712 return new Double(left.doubleValue() + right.doubleValue()); | 714 return new Double(left.doubleValue() + right.doubleValue()); |
713 } | 715 } |
714 else if (left instanceof Long) { | 716 else if (left instanceof Long) { |
718 return new Integer(left.intValue() + right.intValue()); | 720 return new Integer(left.intValue() + right.intValue()); |
719 } | 721 } |
720 } | 722 } |
721 | 723 |
722 | 724 |
725 /** Divde left by right. Note that Long will be casted to double. */ | |
723 public static Number divide(Number left, Number right) { | 726 public static Number divide(Number left, Number right) { |
724 if (left instanceof Double) { | 727 if (left instanceof Double) { |
725 return new Double(left.doubleValue() / right.doubleValue()); | 728 return new Double(left.doubleValue() / right.doubleValue()); |
726 } | 729 } |
727 else if (left instanceof Long) { | 730 else if (left instanceof Long) { |
728 return new Long(left.longValue() / right.longValue()); | 731 return new Double(left.doubleValue() / right.doubleValue()); |
729 } | 732 } |
730 else { | 733 else { |
731 return new Integer(left.intValue() / right.intValue()); | 734 return new Integer(left.intValue() / right.intValue()); |
732 } | 735 } |
733 } | 736 } |