1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.jcurl.demo.tactics;
21
22 import java.awt.Cursor;
23 import java.awt.geom.RectangularShape;
24
25 import javax.swing.JComponent;
26 import javax.swing.event.ChangeListener;
27
28 import org.jcurl.core.api.ComputedTrajectorySet;
29 import org.jcurl.core.api.RockSet;
30 import org.jcurl.core.api.RockType.Pos;
31 import org.jcurl.core.ui.BroomPromptModel;
32 import org.jcurl.core.ui.ChangeManager;
33 import org.jcurl.core.ui.TrajectoryBroomPromptWrapper;
34
35
36
37
38
39
40
41
42
43
44
45
46 public abstract class TrajectoryBean<T, G> extends JComponent implements
47 HasChanger, Zoomable, ChangeListener {
48 protected static final String ATTR_IDX16 = "idx16";
49 protected static final String ATTR_ROCK = "rock";
50 protected static final String ATTR_ROCKSET = "rockset";
51 protected static final String ATTR_TRIGGER_CURVE_UPDATE = "trigger_curve_update";
52 protected static final Cursor CURSOR = new Cursor(Cursor.HAND_CURSOR);
53 private ChangeManager changer;
54 protected ComputedTrajectorySet curves = null;
55 protected transient RectangularShape tmpViewPort = null;
56 protected final TrajectoryBroomPromptWrapper tt = new TrajectoryBroomPromptWrapper();
57
58 protected void addCL(final RockSet<Pos> s) {
59 if (s == null)
60 return;
61 for (int i16 = RockSet.ROCKS_PER_SET - 1; i16 >= 0; i16--)
62 s.getRock(i16).addChangeListener(this);
63 }
64
65
66 @Override
67 public void doLayout() {
68 super.doLayout();
69 if (tmpViewPort != null)
70 setZoom(tmpViewPort, 0);
71 }
72
73 public abstract BroomPromptModel getBroom();
74
75 public ChangeManager getChanger() {
76 return ChangeManager.getTrivial(changer);
77 }
78
79 public ComputedTrajectorySet getCurves() {
80 return curves;
81 }
82
83 public RectangularShape getZoom() {
84 if (tmpViewPort == null)
85 return null;
86 return tmpViewPort;
87 }
88
89 protected void removeCL(final RockSet<Pos> s) {
90 if (s == null)
91 return;
92 for (int i16 = RockSet.ROCKS_PER_SET - 1; i16 >= 0; i16--)
93 s.getRock(i16).removeChangeListener(this);
94 }
95
96 public void setChanger(final ChangeManager changer) {
97 final ChangeManager old = this.changer;
98 if (old == changer)
99 return;
100 firePropertyChange("changer", old, this.changer = changer);
101 }
102
103 public abstract void setCurves(ComputedTrajectorySet model);
104
105 public void setZoom(final RectangularShape viewport) {
106 setZoom(viewport, -1);
107 }
108
109 }