Changeset 115 for trunk/src/org/expeditee/gui/Frame.java
- Timestamp:
- 07/02/08 12:38:54 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/expeditee/gui/Frame.java
r108 r115 112 112 private Text _frameName = null; 113 113 114 private List<Overlay> _overlays = new ArrayList<Overlay>();114 private Map<Overlay, Frame> _overlays = new HashMap<Overlay, Frame>(); 115 115 116 116 private List<Vector> _vectors = new ArrayList<Vector>(); … … 123 123 124 124 private Time _darkTime = new Time(0); 125 126 private Collection<Item> _overlayItems = new LinkedHashSet<Item>(); 127 128 private Collection<Item> _vectorItems = new LinkedHashSet<Item>(); 125 129 126 130 /** … … 286 290 } 287 291 292 public List<Item> getNonAnnotationItems() { 293 List<Item> items = new ArrayList<Item>(); 294 for (Item i : getItems()) { 295 // only add up normal body text items 296 if (!i.isAnnotation()) { 297 items.add(i); 298 } 299 } 300 return items; 301 } 302 288 303 /** 289 304 * Gets the last item on the frame that is a non annotation item but is also … … 427 442 428 443 public Item getStatsTextItem(String itemText) { 429 Text t = getStatTemplate(); 444 return getTextItem(itemText, getStatTemplate()); 445 } 446 447 public Item getTextItem(String itemText) { 448 return getTextItem(itemText, getItemTemplate()); 449 } 450 451 private Item getTextItem(String itemText, Text template) { 452 Text t = template; 430 453 // We dont want the stats to wrap at all 431 454 t.setMaxSize(new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE)); … … 470 493 } 471 494 472 for (Overlay o : _overlays )495 for (Overlay o : _overlays.keySet()) 473 496 results.addAll(o.Frame.getItemsWithin(poly)); 474 497 … … 774 797 775 798 change(); 799 FrameMouseActions.getInstance().refreshHighlights(); 776 800 FrameGraphics.Repaint(); 777 801 ItemUtils.EnclosedCheck(_body); … … 882 906 883 907 public String toString() { 884 String s = ""; 885 s += "Name: " + _frameset + _number + "\n"; 886 s += "Version: " + _version + "\n"; 887 s += "Protection: " + _permission + "\n"; 888 s += "Owner: " + _owner + "\n"; 889 s += "Date Created: " + _creationDate + "\n"; 890 s += "Last Mod. User: " + _modifiedUser + "\n"; 891 s += "Last Mod. Date: " + _modifiedDate + "\n"; 892 s += "Last Froz. Date: " + _frozenDate + "\n"; 893 894 s += "\n"; 895 s += "\n"; 896 897 s += "Items: " + _body.size() + "\n"; 898 899 return s; 908 StringBuilder s = new StringBuilder(); 909 s.append(String.format("Name: %s%d%n", _frameset, _number)); 910 s.append(String.format("Version: %d%n", _version)); 911 s.append(String.format("Permission: %s%n", _permission.toString())); 912 s.append(String.format("Owner: %s%n", _owner)); 913 s.append(String.format("Date Created: %s%n", _creationDate)); 914 s.append(String.format("Last Mod. User: %s%n", _modifiedUser)); 915 s.append(String.format("Last Mod. Date: %s%n", _modifiedDate)); 916 s.append(String.format("Items: %d%n", _body.size())); 917 return s.toString(); 900 918 } 901 919 … … 952 970 if (from == null) 953 971 return null; 954 955 /**956 * TODO: Check957 */958 972 959 973 List<Item> column = new ArrayList<Item>(); … … 982 996 * If overlay is null. 983 997 */ 984 public void addVector(Vector vector) { 985 if (vector == null) 986 throw new NullPointerException("Frame.addVector"); 998 protected boolean addVector(Vector toAdd) { 987 999 // make sure we dont add this frame as an overlay of itself 988 if (vector.Frame == this) 989 return; 990 991 // if (_vectors.contains(vector)) 992 // return; 993 994 _vectors.add(vector); 995 996 // TODO add the code below 997 // Items must be notified that they have been added to this frame via 998 // the vector... 999 // List<Item> items = new LinkedList<Item>(); 1000 // FrameGraphics.AddAllOverlayItems(items, vector.Frame, 1001 // new LinkedList<Frame>()); 1002 // 1003 // for (Item i : items) { 1004 // i.onParentStateChanged(new ItemParentStateChangedEvent(this, 1005 // ItemParentStateChangedEvent.EVENT_TYPE_ADDED_VIA_VECTOR, 1006 // overlay.Level)); 1007 // } 1008 } 1009 1010 /** 1011 * Adds the given Frame to the list of overlays Frames being drawn with this 1012 * Frame. 1013 * 1014 * @param overlay 1015 * The Frame to add 1016 * 1017 * @throws NullPointerException 1018 * If overlay is null. 1019 */ 1020 public void addOverlay(Overlay overlay) { 1021 if (overlay == null) 1022 throw new NullPointerException("overlay"); 1023 // make sure we dont add this frame as an overlay of itself 1024 if (overlay.Frame == this) 1025 return; 1026 1027 if (_overlays.contains(overlay)) 1028 return; 1029 1030 _overlays.add(overlay); 1031 1032 // Items must be notified that they have been added to this frame via 1033 // the overlay... 1034 List<Item> items = new LinkedList<Item>(); 1035 FrameGraphics.AddAllOverlayItems(items, overlay.Frame, 1036 new LinkedList<Frame>()); 1037 for (Item i : items) { 1000 if (toAdd.Frame == this) 1001 return false; 1002 _vectors.add(toAdd); 1003 // Items must be notified that they have been added or removed from this 1004 // frame via the vector... 1005 for (Item i : ItemUtils.CopyItems(toAdd.Frame.getVectorItems(), toAdd)) { 1038 1006 i.onParentStateChanged(new ItemParentStateChangedEvent(this, 1039 1007 ItemParentStateChangedEvent.EVENT_TYPE_ADDED_VIA_OVERLAY, 1040 overlay.Level)); 1041 } 1042 } 1043 1044 /** 1045 * Removes the given overlay from the list of overlays being drawn with this 1046 * Frame. 1047 * 1048 * @param overlay 1049 * The overlay to remove 1050 * 1051 * @throws NullPointerException 1052 * If overlay is null. 1053 */ 1054 public void removeOverlay(Overlay overlay) { 1055 if (overlay == null) 1056 throw new NullPointerException("overlay"); 1057 1058 this._overlays.remove(overlay); 1059 1060 // Items must be notified that they have been removed from this frame 1061 // via the overlay... 1062 List<Item> items = new LinkedList<Item>(); 1063 FrameGraphics.AddAllOverlayItems(items, overlay.Frame, 1064 new LinkedList<Frame>()); 1065 for (Item i : items) { 1066 i.onParentStateChanged(new ItemParentStateChangedEvent(this, 1067 ItemParentStateChangedEvent.EVENT_TYPE_REMOVED_VIA_OVERLAY, 1068 overlay.Level)); 1069 } 1070 } 1071 1072 /** 1073 * Removes the given vector from the list of vector being drawn with this 1074 * Frame. 1075 * 1076 * @param vector 1077 * The overlay to remove 1078 * 1079 * @throws NullPointerException 1080 * If overlay is null. 1081 */ 1082 public void removeVector(Vector vector) { 1083 if (vector == null) 1084 throw new NullPointerException("Frame.removeVector"); 1085 1086 this._vectors.remove(vector); 1087 1088 // TODO figure out what the code below needs to be changed to 1089 // Items must be notified that they have been removed from this frame 1090 // via the overlay... 1091 // List<Item> items = new LinkedList<Item>(); 1092 // FrameGraphics.AddAllOverlayItems(items, vector.Frame, 1093 // new LinkedList<Frame>()); 1094 // for (Item i : items) { 1095 // i.onParentStateChanged(new ItemParentStateChangedEvent(this, 1096 // ItemParentStateChangedEvent.EVENT_TYPE_REMOVED_VIA_OVERLAY, 1097 // vector.Level)); 1098 // } 1099 } 1100 1101 /** 1102 * Removes the given Frame from the list of overlayed Frames being drawn 1103 * with this Frame. 1104 * 1105 * @param overlayedFrame 1106 * The Frame to remove 1107 * 1108 * @throws NullPointerException 1109 * If overlayedFrame is null. 1110 */ 1111 public void removeOverlay(Frame overlayedFrame) { 1112 if (overlayedFrame == null) 1113 throw new NullPointerException("overlay"); 1114 1115 // Locate the oveylay(s) that match this 1116 List<Overlay> overlaysToRemove = new LinkedList<Overlay>(); 1117 for (Overlay o : _overlays) { 1118 if (overlayedFrame.equals(o.Frame)) 1119 overlaysToRemove.add(o); 1120 } 1121 for (Overlay o : overlaysToRemove) { // must be enumerated seperate 1122 // to above... 1123 removeOverlay(o); 1124 } 1125 1126 } 1127 1128 public List<Vector> getVectors() { 1129 List<Vector> l = new LinkedList<Vector>(); 1008 toAdd.permission)); 1009 _vectorItems.add(i); 1010 } 1011 return true; 1012 } 1013 1014 public Collection<Vector> getVectors() { 1015 Collection<Vector> l = new LinkedList<Vector>(); 1130 1016 l.addAll(_vectors); 1131 1017 return l; 1132 1018 } 1133 1019 1134 public List<Overlay> getOverlays() { 1135 List<Overlay> l = new LinkedList<Overlay>(); 1136 l.addAll(_overlays); 1137 return l; 1138 } 1139 1140 /** 1141 * @return All overlays seen by this frame (including its overlays' 1142 * overlays). 1143 */ 1144 public List<Overlay> getOverlaysDeep() { 1145 List<Overlay> l = new LinkedList<Overlay>(); 1146 getOverlaysDeep(l, this, new LinkedList<Frame>()); 1147 return l; 1020 public Collection<Overlay> getOverlays() { 1021 return new LinkedList<Overlay>(_overlays.keySet()); 1148 1022 } 1149 1023 … … 1174 1048 } 1175 1049 1176 private boolean getOverlaysDeep(List<Overlay> overlays, Frame overlay,1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 }1050 // private boolean getOverlaysDeep(List<Overlay> overlays, Frame overlay, 1051 // List<Frame> seenOverlays) { 1052 // 1053 // if (seenOverlays.contains(overlay)) 1054 // return false; 1055 // 1056 // seenOverlays.add(overlay); 1057 // 1058 // for (Overlay o : overlay.getOverlays()) { 1059 // if (getOverlaysDeep(overlays, o.Frame, seenOverlays)) { 1060 // overlays.add(o); 1061 // } 1062 // } 1063 // 1064 // return true; 1065 // } 1192 1066 1193 1067 /** … … 1202 1076 if (item == null) 1203 1077 throw new NullPointerException("item"); 1204 List<Overlay> overlays = getOverlaysDeep(); 1205 for (Overlay l : overlays) { 1206 // if (l.Frame.containsItem(item)) return l; 1078 1079 for (Overlay l : getOverlays()) { 1207 1080 if (item.getParent() == l.Frame) 1208 1081 return l; 1209 1082 } 1210 1083 1084 //TODO return the correct vector... not just the first vector matching the vectorFrame 1085 for (Vector v : getVectors()) { 1086 if (item.getParent() == v.Frame) 1087 return v; 1088 } 1089 1211 1090 return null; 1212 1091 } 1213 1092 1214 1093 public void clearVectors() { 1215 while (!_vectors.isEmpty()) { 1216 removeVector(_vectors.get(0)); // centralise removing 1217 } 1094 _vectors.clear(); 1095 _vectorItems.clear(); 1096 } 1097 1098 protected boolean removeVector(Vector toRemove) { 1099 if(_overlays.remove(toRemove) == null) 1100 return false; 1101 for (Item i : toRemove.Frame.getVectorItems()) { 1102 _overlayItems.remove(i); 1103 i.onParentStateChanged(new ItemParentStateChangedEvent(this, 1104 ItemParentStateChangedEvent.EVENT_TYPE_REMOVED_VIA_OVERLAY, 1105 toRemove.permission)); 1106 } 1107 return true; 1218 1108 } 1219 1109 1220 1110 public void clearOverlays() { 1221 while (!_overlays.isEmpty()) { 1222 removeOverlay(_overlays.get(0)); // centralise removing 1223 } 1111 for (Overlay o : _overlays.keySet()) { 1112 removeOverlay(o.Frame); 1113 } 1114 assert (_overlays.isEmpty()); 1115 } 1116 1117 protected boolean removeOverlay(Frame f) { 1118 for (Overlay o : _overlays.keySet()) { 1119 if (o.Frame == f) { 1120 _overlays.remove(o); 1121 for (Item i : f.getItems()) { 1122 _overlayItems.remove(i); 1123 i 1124 .onParentStateChanged(new ItemParentStateChangedEvent( 1125 this, 1126 ItemParentStateChangedEvent.EVENT_TYPE_REMOVED_VIA_OVERLAY, 1127 o.permission)); 1128 } 1129 return true; 1130 } 1131 } 1132 return false; 1224 1133 } 1225 1134 1226 1135 public void addAllVectors(List<Vector> vectors) { 1227 1136 for (Vector v : vectors) { 1228 addVector(v); // centralise adding1229 } 1230 } 1231 1232 public void addAllOverlays( List<Overlay> overlays) {1137 addVector(v); 1138 } 1139 } 1140 1141 public void addAllOverlays(Collection<Overlay> overlays) { 1233 1142 for (Overlay o : overlays) { 1234 addOverlay(o); // centralise adding 1235 } 1143 addOverlay(o); 1144 } 1145 } 1146 1147 protected boolean addOverlay(Overlay toAdd) { 1148 // make sure we dont add this frame as an overlay of itself 1149 if (toAdd.Frame == this) 1150 return false; 1151 // Dont add the overlay if there is already one for this frame 1152 if (_overlays.values().contains(toAdd.Frame)) 1153 return false; 1154 // Add the overlay to the map of overlays on this frame 1155 _overlays.put(toAdd, toAdd.Frame); 1156 // Add all the overlays from the overlay frame to this frame 1157 for (Overlay o : toAdd.Frame.getOverlays()) 1158 addOverlay(o); 1159 1160 // Now add the items for this overlay 1161 1162 // Items must be notified that they have been added or removed from this 1163 // frame via the overlay... 1164 for (Item i : toAdd.Frame.getVisibleItems()) { 1165 i.onParentStateChanged(new ItemParentStateChangedEvent(this, 1166 ItemParentStateChangedEvent.EVENT_TYPE_ADDED_VIA_OVERLAY, 1167 toAdd.permission)); 1168 _overlayItems.add(i); 1169 } 1170 return true; 1236 1171 } 1237 1172 … … 1761 1696 1762 1697 String[] tokens = text.getProcessedText(); 1763 if (tokens != null ||tokens.length > 1)1698 if (tokens != null && tokens.length > 1) 1764 1699 return tokens[1]; 1765 1700 return null; … … 1771 1706 _annotations.clear(); 1772 1707 } 1773 1708 1774 1709 public List<Item> getVisibleItems() { 1775 1710 return getItems(true); … … 1813 1748 seenWidgets.add(iw); 1814 1749 toSave.add(iw.getSource()); 1815 } else if (i instanceof XRayable){1816 XRayable x = (XRayable) i;1750 } else if (i instanceof XRayable) { 1751 XRayable x = (XRayable) i; 1817 1752 toSave.addAll(x.getItemsToSave()); 1818 }// Circle centers are items with attached enclosures1819 else if (i.hasEnclosures()) {1753 }// Circle centers are items with attached enclosures 1754 else if (i.hasEnclosures()) { 1820 1755 continue; 1821 } else{1756 } else { 1822 1757 toSave.add(i); 1823 1758 } … … 1826 1761 return toSave; 1827 1762 } 1763 1764 public Collection<Item> getOverlayItems() { 1765 return _overlayItems; 1766 } 1767 1768 /** 1769 * Returns true if this frame has and overlays for the specified frame. 1770 * 1771 * @param frame 1772 * @return 1773 */ 1774 public boolean hasOverlay(Frame frame) { 1775 return _overlays.containsValue(frame); 1776 } 1777 1778 public Collection<Item> getAllItems() { 1779 Collection<Item> allItems = new LinkedHashSet<Item>(_body); 1780 allItems.addAll(_overlayItems); 1781 allItems.addAll(_vectorItems); 1782 return allItems; 1783 } 1784 1785 public Collection<Item> getVectorItems() { 1786 Collection<Item>vectorItems = new LinkedHashSet<Item>(_vectorItems); 1787 vectorItems.addAll(getNonAnnotationItems()); 1788 return vectorItems; 1789 } 1828 1790 }
Note:
See TracChangeset
for help on using the changeset viewer.