source: trunk/src/org/expeditee/items/widgets/DataFrameWidget.java@ 228

Last change on this file since 228 was 228, checked in by ra33, 16 years ago

Added web browser control... next up... EMAIL!

File size: 4.1 KB
Line 
1package org.expeditee.items.widgets;
2
3import java.util.Collection;
4import java.util.HashSet;
5
6import javax.swing.JComponent;
7import javax.swing.JPanel;
8
9import org.expeditee.gui.Frame;
10import org.expeditee.gui.FrameIO;
11import org.expeditee.gui.FrameObserver;
12import org.expeditee.items.Item;
13import org.expeditee.items.ItemParentStateChangedEvent;
14import org.expeditee.items.Text;
15
16public abstract class DataFrameWidget extends InteractiveWidget implements
17 FrameObserver {
18
19 private boolean _needsUpdating;
20
21 protected Collection<Frame> _subjects = new HashSet<Frame>();
22
23 protected Frame _dataFrame;
24
25 protected DataFrameWidget(Text source, JComponent component, int minWidth,
26 int maxWidth, int minHeight, int maxHeight) {
27 this(source, component, minWidth, minWidth, maxWidth, minHeight,
28 minHeight, maxHeight);
29 }
30
31 public DataFrameWidget(Text source, JComponent component, int minWidth,
32 int defaultWidth, int maxWidth, int minHeight, int defaultHeight,
33 int maxHeight) {
34 super(source, component, minWidth, maxWidth, minHeight, maxHeight);
35 setSize(defaultWidth, defaultHeight);
36
37 String link = source.getAbsoluteLink();
38 _dataFrame = link != null ? FrameIO.LoadFrame(link) : null;
39 if (_dataFrame != null) {
40 addSubject(_dataFrame);
41 }
42 }
43
44 protected void setDataFrame(Frame newDataFrame) {
45 _dataFrame = newDataFrame;
46 }
47
48 public Frame getDataFrame() {
49 if (_dataFrame == null && getSource().getLink() != null) {
50 _dataFrame = FrameIO.LoadFrame(getSource().getAbsoluteLink());
51 if (_dataFrame != null) {
52 addSubject(_dataFrame);
53 } else {
54 // If the dataFrame has not been saved yet because it has just
55 // been
56 // created via TDFC this chart needs to be marked as changed so
57 // it will
58 // be refreshed when the user goes back
59 update();
60 }
61 }
62 return _dataFrame;
63 }
64
65 protected void clearSubjects() {
66 for (Frame frame : _subjects) {
67 frame.removeObserver(this);
68 }
69 _subjects.clear();
70 }
71
72 public void removeSubject(Frame frame) {
73 assert (frame != null);
74 _subjects.remove(frame);
75 frame.removeObserver(this);
76 // Reset the dataFrame if it is being removed from the cache to avoid
77 // memory leaks
78 if (frame == _dataFrame)
79 _dataFrame = null;
80 }
81
82 public void addSubject(Frame frame) {
83 assert (frame != null);
84 _subjects.add(frame);
85 frame.addObserver(this);
86 }
87
88 public boolean needsRefresh() {
89 return _needsUpdating;
90 }
91
92 public void refresh() {
93 _needsUpdating = false;
94 }
95
96 public void update() {
97 _needsUpdating = true;
98 }
99
100 @Override
101 public void setLink(String link) {
102 String newLink = Item.convertToAbsoluteLink(link);
103 String oldLink = getSource().getAbsoluteLink();
104 if ((newLink == null && oldLink == null)
105 || (newLink != null && newLink.equals(oldLink)))
106 return;
107 super.setLink(link);
108 clearSubjects();
109 setDataFrame(null);
110 refresh();
111 }
112
113 @Override
114 protected void onParentStateChanged(int eventType) {
115
116 switch (eventType) {
117
118 case ItemParentStateChangedEvent.EVENT_TYPE_ADDED:
119 case ItemParentStateChangedEvent.EVENT_TYPE_ADDED_VIA_OVERLAY:
120 case ItemParentStateChangedEvent.EVENT_TYPE_SHOWN:
121 case ItemParentStateChangedEvent.EVENT_TYPE_SHOWN_VIA_OVERLAY:
122 if (needsRefresh()) {
123 refresh();
124 }
125 break;
126
127 case ItemParentStateChangedEvent.EVENT_TYPE_REMOVED:
128 case ItemParentStateChangedEvent.EVENT_TYPE_REMOVED_VIA_OVERLAY:
129 case ItemParentStateChangedEvent.EVENT_TYPE_HIDDEN:
130 break;
131 }
132 }
133
134 //STUFF FROM HEAVY_DUTY_INTERACTIVE_WIDGET CLASS
135
136// @Override
137// public int getLoadDelayTime() {
138// // TODO Auto-generated method stub
139// return 0;
140// }
141//
142// @Override
143// protected float loadWidgetData() {
144// // TODO Auto-generated method stub
145// return 0;
146// }
147//
148// @Override
149// protected void saveWidgetData() {
150// // TODO Auto-generated method stub
151//
152// }
153//
154// @Override
155// protected void tempUnloadWidgetData() {
156// // TODO Auto-generated method stub
157//
158// }
159//
160// @Override
161// protected void unloadWidgetData() {
162// // TODO Auto-generated method stub
163//
164// }
165//
166// public boolean doesNeedSaving() {
167// // TODO Auto-generated method stub
168// return false;
169// }
170//
171// public String getSaveName() {
172// // TODO Auto-generated method stub
173// return null;
174// }
175}
Note: See TracBrowser for help on using the repository browser.