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 }

http://dive4elements.wald.intevation.org