1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package pl.edu.agh.cast.editor;
19
20 import java.util.LinkedList;
21 import java.util.List;
22
23 import org.eclipse.draw2d.ScalableFigure;
24 import org.eclipse.draw2d.Viewport;
25 import org.eclipse.gef.editparts.ZoomManager;
26
27
28
29
30
31
32 public class ExtendedZoomManager extends ZoomManager {
33
34
35
36
37 private double[] zoomLevels;
38
39
40
41
42 private static final double[] standardZoomLevels = { .5, .75, 1.0, 1.5, 2.0, 2.5, 3, 4 };
43
44
45
46
47
48
49
50
51
52 public ExtendedZoomManager(ScalableFigure pane, Viewport viewport) {
53 super(pane, viewport);
54 }
55
56
57 public double getMaxZoom() {
58 if (zoomLevels != null) {
59 return zoomLevels[zoomLevels.length - 1];
60 } else {
61 return super.getMaxZoom();
62 }
63 }
64
65
66 public double getMinZoom() {
67 if (zoomLevels != null) {
68 return zoomLevels[0];
69 } else {
70 return super.getMinZoom();
71 }
72 }
73
74
75
76
77
78
79
80 public void scaleZoomLevels(double fitAllZoomValue) {
81
82 List<Double> zoomLevelsList = new LinkedList<Double>();
83 while (fitAllZoomValue < 0.5) {
84 zoomLevelsList.add(new Double(fitAllZoomValue));
85 fitAllZoomValue *= 2.0;
86 }
87
88 for (double zoomLevel : standardZoomLevels) {
89 zoomLevelsList.add(new Double(zoomLevel));
90 }
91
92
93 int i = 0;
94 this.zoomLevels = new double[zoomLevelsList.size()];
95 for (Double zoomValue : zoomLevelsList) {
96 this.zoomLevels[i++] = zoomValue.doubleValue();
97 }
98 setZoomLevels(this.zoomLevels);
99 }
100
101 }