- Timestamp:
- 07/24/19 11:23:45 (5 years ago)
- Location:
- trunk/src/org
- Files:
-
- 1 added
- 76 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/apollo/ApolloGestureActions.java
r1179 r1415 180 180 Dimension windowSize = EcosystemManager.getGraphicsManager().getWindowSize(); 181 181 182 for (Item i : current.get Items()) {182 for (Item i : current.getSortedItems()) { 183 183 Point pos = i.getPosition(); 184 184 pos.setX(pos.getX() % windowSize.width); -
trunk/src/org/apollo/ApolloSystem.java
r1327 r1415 165 165 assert(profile != null); 166 166 167 for (Item i : profile.get Items()) {167 for (Item i : profile.getSortedItems()) { 168 168 if (i instanceof Text) { 169 169 Text textItem = (Text)i; -
trunk/src/org/expeditee/actions/Actions.java
r1286 r1415 413 413 414 414 // Check for protection on frame. 415 if (ItemUtils.ContainsTag(source.get Items(), "@No" + actionName)) {415 if (ItemUtils.ContainsTag(source.getSortedItems(), "@No" + actionName)) { 416 416 final String errorMsg = "Frame is protected by @No" + actionName 417 417 + " tag."; … … 501 501 502 502 // Check for protection on frame. 503 if (ItemUtils.ContainsTag(source.get Items(), "@No" + actionName)) {503 if (ItemUtils.ContainsTag(source.getSortedItems(), "@No" + actionName)) { 504 504 final String errorMsg = "Frame is protected by @No" + actionName 505 505 + " tag."; -
trunk/src/org/expeditee/actions/Debug.java
r1304 r1415 53 53 */ 54 54 public static void ShowConstraints() { 55 List<Item> items = DisplayController.getCurrentFrame().get Items();55 List<Item> items = DisplayController.getCurrentFrame().getSortedItems(); 56 56 57 57 for (Item i : items) … … 127 127 128 128 public static void HowManyMinWidths() { 129 MessageBay.displayMessage(DisplayController.getCurrentFrame().get Items().stream().filter(t -> t.getMinWidth() != null).collect(Collectors.toList()).size() + "");129 MessageBay.displayMessage(DisplayController.getCurrentFrame().getSortedItems().stream().filter(t -> t.getMinWidth() != null).collect(Collectors.toList()).size() + ""); 130 130 } 131 131 -
trunk/src/org/expeditee/actions/ExploratorySearchActions.java
r1102 r1415 72 72 73 73 // Remove everything from new frame 74 frame.removeAllItems(frame.get Items());74 frame.removeAllItems(frame.getSortedItems()); 75 75 76 76 // Add web browser active overlay and @old … … 132 132 133 133 // Clear new frame and add active overlay and @old 134 frame.removeAllItems(frame.get Items());134 frame.removeAllItems(frame.getSortedItems()); 135 135 Text t = (Text) frame.addText(-150, 50, "@ao: 2", null, "overlayset3"); 136 136 t.setAnchorLeft(-150); … … 182 182 183 183 // Remove everything from new frame 184 frame.removeAllItems(frame.get Items());184 frame.removeAllItems(frame.getSortedItems()); 185 185 186 186 // Add web browser active overlay and @old -
trunk/src/org/expeditee/actions/JfxBrowserActions.java
r1258 r1415 112 112 // Create JfxBrowser widget on a new frame 113 113 Frame frame = FrameIO.CreateNewFrame(text); // create new frame for browser 114 frame.removeAllItems(frame.get Items());114 frame.removeAllItems(frame.getSortedItems()); 115 115 text.setLink("" + frame.getNumber()); // link this text item to new frame 116 116 … … 168 168 public static void createFrameWithBrowser(Item link, String url) throws Exception { 169 169 Frame frame = FrameIO.CreateNewFrame(link); 170 frame.removeAllItems(frame.get Items());170 frame.removeAllItems(frame.getSortedItems()); 171 171 172 172 link.setLink("" + frame.getNumber()); -
trunk/src/org/expeditee/actions/Misc.java
r1293 r1415 104 104 { 105 105 Frame current = f; 106 List<Item> allItems = current.get Items();106 List<Item> allItems = current.getSortedItems(); 107 107 108 108 for(Item i : allItems) … … 126 126 Frame current = f; 127 127 128 List<Item> allItems = current.get Items();128 List<Item> allItems = current.getSortedItems(); 129 129 130 130 … … 242 242 // deleted 243 243 Frame current = DisplayController.getCurrentFrame(); 244 for (Item i : current.get Items())244 for (Item i : current.getSortedItems()) 245 245 if (i.getLink() != null 246 246 && i.getAbsoluteLink().toLowerCase().equals( … … 507 507 charList.append(String.format("Unicode block 0x%x - 0x%x", start, 508 508 finish)); 509 System.out.println(); 509 System.out.println(); // Is this println needed? 510 510 // charList.append("Unicode block: ").append(String.format(format, 511 511 // args)) … … 706 706 public static void MigrateImages(Frame frame) { 707 707 //Collect the images on frame 708 final Collection<Item> items = frame.get Items();708 final Collection<Item> items = frame.getSortedItems(); 709 709 final Collection<Item> imagesTextItems = new LinkedList<Item>(); 710 710 items.forEach(i -> { if(i.getText().startsWith("@i")) imagesTextItems.add(i); }); … … 931 931 body.addAll(child.getBodyTextItems(false)); 932 932 else 933 body.addAll(child.get Items());933 body.addAll(child.getSortedItems()); 934 934 Item item = null; 935 935 … … 970 970 body.addAll(child.getBodyTextItems(false)); 971 971 else 972 body.addAll(child.get Items());972 body.addAll(child.getSortedItems()); 973 973 974 974 return body; … … 1332 1332 public static void resetHomeFrame() { 1333 1333 Frame homeFrame = FrameIO.LoadFrame(UserSettings.HomeFrame.get()); 1334 homeFrame.removeAllItems(homeFrame.get Items());1334 homeFrame.removeAllItems(homeFrame.getSortedItems()); 1335 1335 homeFrame.addText(0, 0, "title", null); 1336 1336 FrameUtils.CreateDefaultProfile(UserSettings.UserName.get(), homeFrame, null, null); -
trunk/src/org/expeditee/actions/Navigation.java
r1102 r1415 211 211 212 212 // find the next item to visit 213 List<Item> items = parent.get Items(); // getItems method gets us the213 List<Item> items = parent.getSortedItems(); // getItems method gets us the 214 214 // FirstItem on the frame 215 215 int parentItemLinkedToSource = 0; // ByMike: Will be set to the -
trunk/src/org/expeditee/actions/ScriptBase.java
r1102 r1415 135 135 136 136 // get all items on the frame 137 List<Item> y_ordered_items = (List<Item>)frame.get Items();137 List<Item> y_ordered_items = (List<Item>)frame.getSortedItems(); 138 138 // remove the title item 139 139 y_ordered_items.remove(frame.getTitleItem()); -
trunk/src/org/expeditee/actions/Simple.java
r1197 r1415 1463 1463 Frame frame = (Frame) context.getPointers().getVariable( 1464 1464 frameVar).getValue(); 1465 Integer count = frame.get Items(true).size();1465 Integer count = frame.getSortedItems(true).size(); 1466 1466 context.getPrimitives().setValue(countVar, 1467 1467 new SInteger(count)); … … 2391 2391 double thisFramesPause = pause; 2392 2392 // check for change in delay for this frame only 2393 Item pauseItem = ItemUtils.FindTag(frame.get Items(),2393 Item pauseItem = ItemUtils.FindTag(frame.getSortedItems(), 2394 2394 "@DisplayFramePause:"); 2395 2395 if (pauseItem != null) { … … 2489 2489 frameVar).getValue(); 2490 2490 frameToClear.clear(false); 2491 assert (frameToClear.get Items().size() <= 1);2491 assert (frameToClear.getSortedItems().size() <= 1); 2492 2492 } catch (Exception e) { 2493 2493 success = false; -
trunk/src/org/expeditee/agents/ComputeTree.java
r919 r1415 58 58 59 59 //TODO can speed this up by using frame.hasAnnotations 60 for (Item i : frame.get Items()) {60 for (Item i : frame.getSortedItems()) { 61 61 if (_stop) 62 62 return null; -
trunk/src/org/expeditee/agents/CopyTree.java
r919 r1415 96 96 97 97 boolean added = false; 98 for (Item i : fresh.get Items())98 for (Item i : fresh.getSortedItems()) 99 99 if (i.getLink() != null && !i.isAnnotation() && i.isLinkValid()) { 100 100 String link = i.getLink().toLowerCase(); … … 133 133 Frame toParse = FrameIO.LoadFrame(name); 134 134 boolean changed = false; 135 for (Item i : toParse.get Items()) {135 for (Item i : toParse.getSortedItems()) { 136 136 if (i.getLink() != null && i.isAnnotation() && i.isLinkValid()) { 137 137 String link = i.getLink(); -
trunk/src/org/expeditee/agents/DisplayComet.java
r1102 r1415 55 55 seen.add(oldFrame.getName().toLowerCase()); 56 56 _frameList.push(oldFrame); 57 old = ItemUtils.FindExactTag(oldFrame.get Items(), ItemUtils57 old = ItemUtils.FindExactTag(oldFrame.getSortedItems(), ItemUtils 58 58 .GetTag(ItemUtils.TAG_BACKUP)); 59 59 oldFrame = null; -
trunk/src/org/expeditee/agents/DisplayTree.java
r1102 r1415 96 96 private void delay(Frame toSearch) { 97 97 // check for change in globaly delay time 98 Item delay = ItemUtils.FindTag(toSearch.get Items(),98 Item delay = ItemUtils.FindTag(toSearch.getSortedItems(), 99 99 "@DisplayTreePause:"); 100 100 … … 112 112 113 113 // check for change in delay for this frame only 114 delay = ItemUtils.FindTag(toSearch.get Items(), "@DisplayFramePause:");114 delay = ItemUtils.FindTag(toSearch.getSortedItems(), "@DisplayFramePause:"); 115 115 if (delay != null) { 116 116 try { -
trunk/src/org/expeditee/agents/DisplayTreeLeaves.java
r919 r1415 46 46 // call display trees process only if the frame doesnt have any linked 47 47 // items 48 for (Item item : toProcess.get Items()) {48 for (Item item : toProcess.getSortedItems()) { 49 49 if (item.getLink() != null && !item.isAnnotation()) 50 50 return; -
trunk/src/org/expeditee/agents/Format.java
r1258 r1415 29 29 import org.expeditee.gui.Frame; 30 30 import org.expeditee.gui.FrameUtils; 31 import org.expeditee.gui.ItemsList; 31 32 import org.expeditee.items.Item; 32 33 import org.expeditee.items.Text; … … 181 182 */ 182 183 start.setChanged(true); 183 start.addToUndoMove( changedItems);184 start.addToUndoMove(new ItemsList(changedItems)); 184 185 DisplayController.requestRefresh(true); 185 186 return null; -
trunk/src/org/expeditee/agents/GraphFramesetLinks.java
r1125 r1415 119 119 } 120 120 121 List<Item> items = toProccess.get Items();121 List<Item> items = toProccess.getSortedItems(); 122 122 123 123 for (Item item : items) { -
trunk/src/org/expeditee/agents/HFormat.java
r919 r1415 24 24 25 25 import org.expeditee.gui.Frame; 26 import org.expeditee.gui.ItemsList; 26 27 import org.expeditee.items.Item; 27 28 import org.expeditee.items.Text; … … 66 67 67 68 System.out.println(changedItems); 68 start.addToUndoMove( changedItems);69 start.addToUndoMove(new ItemsList(changedItems)); 69 70 return null; 70 71 } -
trunk/src/org/expeditee/agents/Sort.java
r1142 r1415 67 67 68 68 // items will need to be resorted after this 69 start. setResort(true);69 start.invalidateSorted(); 70 70 DisplayController.requestRefresh(true); 71 71 -
trunk/src/org/expeditee/agents/TreeProcessor.java
r919 r1415 79 79 80 80 // the items on the frame currently being processed. 81 List<Item> items = next.get Items();81 List<Item> items = next.getSortedItems(); 82 82 83 83 // resume from the next item in the list -
trunk/src/org/expeditee/assets/resources-public/framesets/authentication/1.exp
r1396 r1415 1 V 1 672 p 40 1 V 171 2 p 400 3 3 U authadmin 4 4 D 07Jan2019[14:34] 5 5 M nobody 6 d 23May2019[15:50]6 d 04Jul2019[13:20] 7 7 B 100 100 39 100 8 8 Z … … 20 20 m 0.0 21 21 h -1.0 22 _sl F 22 23 23 24 S T 23 … … 33 34 m 0.0 34 35 h -1.0 36 _sl F 35 37 36 38 S T 24 … … 46 48 m 0.0 47 49 h -1.0 50 _sl F 48 51 49 52 S T 25 … … 59 62 m 0.0 60 63 h -1.0 64 _sl F 61 65 62 66 S T 60 … … 78 82 M 300 79 83 h 1.0 80 p 44 84 p 444 81 85 _ph Username 86 _sl F 82 87 _ti 1 83 88 … … 101 106 M 300 102 107 h 1.0 103 p 44 108 p 444 104 109 _ph Password 110 _sl F 105 111 _ti 2 106 112 … … 123 129 M 205 124 130 h 1.0 131 _sl F 125 132 _ti 3 133 _ae true 126 134 127 135 S P 78 … … 162 170 m 0.0 163 171 h -1.0 172 _sl F 164 173 165 174 S T 67 … … 177 186 m 0.0 178 187 h -1.0 188 _sl F 179 189 180 190 S T 68 … … 192 202 m 0.0 193 203 h -1.0 204 _sl F 194 205 195 206 S T 69 … … 207 218 m 0.0 208 219 h -1.0 220 _sl F 209 221 210 222 S P 80 … … 260 272 Z 261 273 262 ActiveTime:2597632:50:00 263 DarkTime:-2597632:-55:-56 264 50:47:701 375 276 kSHIFT 265 50:47:812 375 276 kB 266 50:49:753 403 286 Ld 267 50:49:873 403 286 Lu 268 51:37:130 739 260 kSHIFT 269 51:37:369 739 260 kT 270 51:37:642 750 260 kO 271 51:37:817 759 260 kG 272 51:37:929 768 260 kG 273 51:38:017 777 260 kL 274 51:38:122 782 260 kE 275 51:38:281 790 260 kSHIFT 276 51:38:361 790 260 kA 277 51:38:521 802 260 kU 278 51:38:681 812 260 kT 279 51:38:753 817 260 kH 280 51:38:978 826 260 kCTRL 281 51:39:137 826 260 kA 282 51:40:411 794 245 Ld 283 51:40:545 794 245 Lu 284 51:41:506 473 279 Ld 285 51:41:617 473 279 Rd 286 51:41:745 473 279 Ru 287 51:41:753 473 279 Lu 288 51:49:018 205 254 Md 289 51:49:129 205 254 Rd 290 51:50:065 205 254 Mu 291 51:50:073 205 254 Ru 292 51:53:817 51 275 kSHIFT 293 51:54:185 51 275 kP 294 51:54:377 61 275 kE 295 51:54:435 68 275 kR 296 51:54:578 75 275 kM 297 51:54:657 89 275 kI 298 51:54:777 94 275 kS 299 51:54:913 101 275 kS 300 51:55:026 108 275 kI 301 51:55:089 113 275 kO 302 51:55:122 122 275 kN 303 51:55:305 131 275 kSHIFT 304 51:57:866 103 256 Md 305 51:57:938 103 256 Mu 306 51:58:557 119 248 Md 307 51:58:588 119 248 Rd 308 51:58:738 119 248 Ru 309 51:58:761 119 248 Mu 310 51:59:171 98 261 Md 311 51:59:241 98 261 Mu 312 52:00:458 360 271 Rd 313 52:00:633 360 271 Ru 314 52:01:562 369 322 Rd 315 52:01:674 369 322 Ru 316 52:02:433 250 348 Md 317 52:02:482 250 348 Rd 318 52:02:633 250 348 Ru 319 52:02:641 250 348 Mu 320 52:03:114 352 283 Ld 321 52:03:162 352 283 Rd 322 52:03:266 352 283 Lu 323 52:03:289 352 283 Ru 324 52:06:346 233 266 Md 325 52:06:377 233 266 Rd 326 52:06:553 233 266 Mu 327 52:06:578 233 266 Ru 328 52:07:913 119 259 kSHIFT 329 52:08:073 119 259 kO 330 52:08:370 132 259 kW 331 52:08:434 145 259 kN 332 52:09:033 154 259 kE 333 52:09:057 162 259 kR 334 52:09:265 168 259 kSHIFT 335 52:09:569 177 259 kA 336 52:09:681 185 259 kU 337 52:09:817 194 259 kT 338 52:09:890 199 259 kH 339 52:10:033 208 259 kA 340 52:10:138 216 259 kD 341 52:10:338 225 259 kM 342 52:10:418 239 259 kI 343 52:10:505 244 259 kN 344 52:12:058 144 259 Md 345 52:12:130 144 259 Mu 346 52:12:841 346 280 Rd 347 52:12:978 346 280 Ru 348 52:13:554 371 330 Rd 349 52:13:674 371 330 Ru 350 52:14:234 200 307 Md 351 52:14:306 200 307 Rd 352 52:14:433 200 307 Ru 353 52:14:474 200 307 Mu 354 52:15:314 769 253 Md 355 52:15:369 769 253 Rd 356 52:15:498 769 253 Ru 357 52:15:522 769 253 Mu 358 52:16:354 769 253 kCTRL 359 52:16:818 769 253 kS 274 ActiveTime:4333414:09:21 275 DarkTime:-4333102:-15:-17 276 20:36:610 124 250 kSHIFT 277 20:36:873 124 250 kT 278 20:37:090 135 250 kO 279 20:37:217 144 250 kG 280 20:37:369 153 250 kG 281 20:37:490 162 250 kL 282 20:37:570 167 250 kE 283 20:37:745 175 250 kSHIFT 284 20:37:801 175 250 kA 285 20:38:001 188 250 kU 286 20:38:105 196 250 kT 287 20:38:209 202 250 kH 288 20:38:377 211 250 kCTRL 289 20:38:569 211 250 kA 290 20:39:362 211 250 Ld 291 20:39:489 211 250 Lu 292 20:40:386 462 393 Ld 293 20:40:497 462 393 Rd 294 20:40:681 462 393 Ru 295 20:40:690 462 393 Lu 296 20:43:657 254 204 Md 297 20:43:889 254 204 Rd 298 20:44:537 254 204 Ru 299 20:44:538 254 204 Mu 300 20:45:161 174 239 Md 301 20:45:201 174 239 Rd 302 20:45:409 174 239 Ru 303 20:45:449 174 239 Mu -
trunk/src/org/expeditee/assets/resources-public/framesets/authentication/2.exp
r1396 r1415 1 V 30 02 p 40 1 V 302 2 p 400 3 3 U authadmin 4 4 D 07Dec2018[12:19] 5 M authadmin6 d 27May2019[11:51]5 M nobody 6 d 04Jul2019[13:20] 7 7 B 100 100 39 100 8 8 Z … … 20 20 m 0.0 21 21 h -1.0 22 p 40 22 p 400 23 23 _sl F 24 24 … … 35 35 m 0.0 36 36 h -1.0 37 p 40 37 p 400 38 38 _sl F 39 39 … … 50 50 m 0.0 51 51 h -1.0 52 p 40 52 p 400 53 53 _sl F 54 54 … … 56 56 s 11Apr2019[10:56.20] 57 57 d 0 0 0 100 58 P 280 1 6858 P 280 185 59 59 T Create an Expeditee Account 60 60 N 150 … … 66 66 m 0.0 67 67 h -1.0 68 p 40 68 p 400 69 69 _sl F 70 70 … … 92 92 G 100 100 100 100 93 93 K 0 0 0 100 94 P 175 2 6094 P 175 287 95 95 T 96 96 x F … … 106 106 M 300 107 107 h 1.0 108 p 44 108 p 444 109 109 _ph Username 110 _sl F 110 111 _ti 1 111 112 … … 115 116 G 100 100 100 100 116 117 K 0 0 0 100 117 P 175 3 20118 P 175 347 118 119 T 119 120 x F … … 131 132 M 300 132 133 h 1.0 133 p 44 134 p 444 134 135 _ph Password 135 _sl T136 136 _ti 2 137 137 … … 141 141 G 100 100 100 100 142 142 K 0 0 0 100 143 P 515 3 20143 P 515 347 144 144 T 145 145 x F … … 157 157 M 300 158 158 h 1.0 159 p 44 159 p 444 160 160 _ph Password Again 161 _sl T162 161 _ti 3 163 162 … … 167 166 G 100 100 100 100 168 167 K 0 0 0 100 169 P 515 380168 P 515 407 170 169 T 171 170 x F … … 182 181 M 300 183 182 h 1.0 184 p 44 183 p 444 185 184 _ph Email Again 186 _sl T187 185 _ti 5 188 186 … … 192 190 G 100 100 100 100 193 191 K 0 0 0 100 194 P 175 380192 P 175 407 195 193 T 196 194 x F … … 207 205 M 300 208 206 h 1.0 209 p 44 207 p 444 210 208 _ph Email 211 _sl T212 209 _ti 4 213 210 … … 217 214 G 100 100 0 100 218 215 K 0 0 0 100 219 P 394 4 58216 P 394 469 220 217 T Create Account 221 218 X AuthCreateAccount … … 231 228 M 205 232 229 h 1.0 233 p 41 230 p 411 234 231 _sl F 235 232 _ti 6 233 _ae true 236 234 237 235 S P 773 … … 246 244 l 1467 1476 247 245 c 1481 1482 248 p 41 246 p 411 249 247 250 248 S P 774 … … 258 256 l 1467 1470 259 257 c 1481 1483 260 p 41 258 p 411 261 259 262 260 S P 769 … … 270 268 l 1455 1464 271 269 c 1477 1478 272 p 41 270 p 411 273 271 274 272 S P 772 … … 282 280 l 1464 1461 283 281 c 1477 1480 284 p 41 282 p 411 285 283 286 284 S T 764 … … 298 296 m 0.0 299 297 h -1.0 300 p 41 298 p 411 301 299 _sl F 302 300 … … 315 313 m 0.0 316 314 h -1.0 317 p 41 315 p 411 318 316 _sl F 319 317 … … 332 330 m 0.0 333 331 h -1.0 334 p 41 332 p 411 335 333 _sl F 336 334 … … 349 347 m 0.0 350 348 h -1.0 351 p 41 349 p 411 352 350 _sl F 353 351 … … 366 364 m 0.0 367 365 h -1.0 368 p 41 366 p 411 369 367 _sl F 370 368 … … 383 381 m 0.0 384 382 h -1.0 385 p 40 383 p 400 386 384 _sl F 387 385 … … 400 398 m 0.0 401 399 h -1.0 402 p 41 400 p 411 403 401 _sl F 404 402 … … 417 415 m 0.0 418 416 h -1.0 419 p 41 417 p 411 420 418 _sl F 421 419 … … 431 429 l 1455 1458 432 430 c 1478 1479 433 p 41 431 p 411 434 432 435 433 S P 771 … … 443 441 l 1461 1458 444 442 c 1480 1479 445 p 41 443 p 411 446 444 447 445 S P 775 … … 455 453 l 1470 1473 456 454 c 1483 1484 457 p 41 455 p 411 458 456 459 457 S P 776 … … 467 465 l 1476 1473 468 466 c 1482 1484 469 p 41 467 p 411 470 468 471 469 Z … … 523 521 Z 524 522 525 ActiveTime:01:25:4 1523 ActiveTime:01:25:44 526 524 DarkTime:01:32:58 527 49:46:377 540 328 Ld 528 49:46:521 540 328 Rd 529 49:46:712 540 328 Ru 530 49:46:728 540 328 Lu 531 49:51:681 705 241 kSHIFT 532 49:52:097 705 241 kT 533 49:52:316 716 241 kO 534 49:52:508 725 241 kG 535 49:52:652 734 241 kG 536 49:52:762 743 241 kL 537 49:52:873 748 241 kE 538 49:53:036 756 241 kSHIFT 539 49:53:132 756 241 kA 540 49:53:324 769 241 kU 541 49:53:442 778 241 kT 542 49:53:547 783 241 kH 543 49:53:741 792 241 kCTRL 544 49:53:978 792 241 kA 545 49:55:338 745 238 Ld 546 49:55:433 745 238 Lu 547 49:56:269 748 242 Md 548 49:56:368 748 242 Rd 549 49:56:477 748 242 Ru 550 49:56:508 748 242 Mu 551 49:59:950 699 238 kSHIFT 552 50:00:169 699 238 kW 553 50:00:346 716 238 kI 554 50:00:483 721 238 kD 555 50:00:623 730 238 kT 556 50:00:702 735 238 kH 557 50:00:795 744 238 kSHIFT 558 50:01:563 748 238 kBACKSPACE 559 50:01:641 744 238 kSHIFT 560 50:03:755 728 235 Md 561 50:03:848 728 235 Mu 562 50:04:584 564 332 Rd 563 50:04:741 564 332 Ru 564 50:05:217 557 398 Rd 565 50:05:311 556 398 Ru 566 50:06:211 231 333 Rd 567 50:06:305 231 333 Ru 568 50:06:791 212 390 Rd 569 50:06:885 212 390 Ru 570 50:07:494 660 271 Md 571 50:07:604 660 271 Rd 572 50:07:760 660 271 Ru 573 50:07:760 660 271 Mu 574 50:08:298 567 391 Ld 575 50:08:329 567 391 Rd 576 50:08:465 567 391 Lu 577 50:08:482 567 391 Ru 578 50:10:777 702 257 Md 579 50:10:824 702 257 Rd 580 50:10:999 702 257 Ru 581 50:11:015 702 257 Mu 582 50:12:094 547 398 kLEFT_ARROW 583 50:15:756 657 242 kSHIFT 584 50:15:896 657 242 kS 585 50:16:068 667 242 kI 586 50:16:132 672 242 kN 587 50:16:273 681 242 kG 588 50:16:351 690 242 kL 589 50:16:476 695 242 kE 590 50:16:554 703 242 kSHIFT 591 50:16:680 703 242 kL 592 50:16:906 714 242 kI 593 50:16:969 719 242 kN 594 50:17:086 728 242 kE 595 50:17:181 736 242 kSHIFT 596 50:17:321 736 242 kO 597 50:17:478 749 242 kN 598 50:17:569 758 242 kL 599 50:17:729 763 242 kY 600 50:18:276 772 242 kSHIFT 601 50:18:652 781 242 kT 602 50:18:793 786 242 kR 603 50:18:903 792 242 kU 604 50:18:981 800 242 kE 605 50:20:639 706 227 Md 606 50:20:732 705 227 Mu 607 50:23:753 587 342 Rd 608 50:23:894 587 342 Ru 609 50:24:803 253 345 Rd 610 50:24:897 253 345 Ru 611 50:25:459 219 399 Rd 612 50:25:568 219 399 Ru 613 50:26:109 589 393 Rd 614 50:26:257 589 392 Ru 615 50:28:245 660 275 Md 616 50:28:292 660 275 Rd 617 50:28:448 660 275 Ru 618 50:28:464 660 275 Mu 619 50:29:583 565 405 kLEFT_ARROW 620 50:30:625 254 281 Ld 621 50:30:703 254 281 Rd 622 50:30:860 254 281 Lu 623 50:30:860 254 281 Ru 624 50:34:787 708 285 Md 625 50:34:858 708 285 Rd 626 50:35:039 708 285 Ru 627 50:35:039 708 285 Mu 628 50:35:587 544 352 Ld 629 50:35:665 544 352 Rd 630 50:35:790 544 352 Lu 631 50:35:806 544 352 Ru 632 50:37:058 715 256 Md 633 50:37:095 715 256 Rd 634 50:37:283 715 256 Ru 635 50:37:299 715 256 Mu 636 50:40:472 876 220 kCTRL 637 50:40:987 876 220 kCTRL 638 50:41:019 876 220 kCTRL 639 50:41:050 876 220 kCTRL 640 50:41:081 876 220 kCTRL 641 50:41:119 876 220 kCTRL 642 50:41:150 876 220 kCTRL 643 50:41:182 876 220 kCTRL 644 50:41:213 876 220 kCTRL 645 50:41:244 876 220 kCTRL 646 50:41:275 876 220 kCTRL 647 50:41:306 876 220 kS 648 51:24:134 583 226 kSHIFT 649 51:24:400 583 226 kU 650 51:24:585 596 226 kS 651 51:27:824 603 226 kBACKSPACE 525 20:55:434 79 398 kSHIFT 526 20:55:722 79 398 kT 527 20:55:898 90 398 kO 528 20:56:050 99 398 kG 529 20:56:194 108 398 kG 530 20:56:251 117 398 kL 531 20:56:338 122 398 kE 532 20:56:498 130 398 kSHIFT 533 20:56:593 130 398 kA 534 20:56:738 143 398 kU 535 20:56:890 152 398 kT 536 20:56:961 156 398 kH 537 20:57:194 166 398 kCTRL 538 20:57:394 166 398 kA 539 20:58:462 102 384 Ld 540 20:58:618 102 384 Lu 541 20:59:346 103 401 Md 542 20:59:434 103 401 Rd 543 20:59:578 103 401 Ru 544 20:59:602 103 401 Mu 545 21:01:922 69 473 kSHIFT 546 21:02:308 69 473 kE 547 21:02:899 80 473 kN 548 21:03:076 89 473 kT 549 21:03:193 94 473 kE 550 21:03:284 102 473 kR 551 21:03:436 108 473 kSHIFT 552 21:03:559 108 473 kC 553 21:03:724 120 473 kL 554 21:03:893 125 473 kI 555 21:04:009 130 473 kC 556 21:04:090 138 473 kK 557 21:04:201 147 473 kSHIFT 558 21:05:236 156 473 kT 559 21:05:922 161 473 kR 560 21:06:097 167 473 kU 561 21:06:162 176 473 kE 562 21:07:404 183 473 Md 563 21:07:514 183 473 Mu 564 21:08:149 431 452 Md 565 21:08:274 431 452 Mu 566 21:11:572 138 467 kCTRL 567 21:12:071 138 467 kCTRL 568 21:12:102 138 467 kCTRL 569 21:12:135 138 467 kCTRL 570 21:12:169 138 467 kCTRL 571 21:12:203 138 467 kCTRL 572 21:12:235 138 467 kCTRL 573 21:12:269 138 467 kCTRL 574 21:12:275 138 467 kS -
trunk/src/org/expeditee/assets/resources-public/framesets/authentication/3.exp
r1396 r1415 1 V 10 02 p 40 1 V 102 2 p 400 3 3 U authadmin 4 4 D 07Jan2019[14:34] 5 M authadmin6 d 27May2019[11:48]5 M nobody 6 d 04Jul2019[13:22] 7 7 B 100 100 39 100 8 8 Z … … 20 20 m 0.0 21 21 h -1.0 22 p 40 22 p 400 23 23 _sl F 24 24 … … 35 35 m 0.0 36 36 h -1.0 37 p 40 37 p 400 38 38 _sl F 39 39 … … 50 50 m 0.0 51 51 h -1.0 52 p 40 52 p 400 53 53 _sl F 54 54 … … 65 65 m 0.0 66 66 h -1.0 67 p 40 67 p 400 68 68 _sl F 69 69 … … 104 104 M 300 105 105 h 1.0 106 p 44 106 p 444 107 107 _ph Password 108 108 _sl F … … 128 128 M 300 129 129 h 1.0 130 p 44 130 p 444 131 131 _ph New Password 132 _sl F 132 133 _ti 2 133 134 … … 151 152 M 300 152 153 h 1.0 153 p 44 154 p 444 154 155 _ph New Password Again 156 _sl F 155 157 _ti 3 156 158 … … 174 176 M 205 175 177 h 1.0 176 p 41 178 p 411 177 179 _sl F 178 180 _ti 4 181 _ae true 179 182 180 183 S P 263 … … 301 304 Z 302 305 303 ActiveTime:00:16:3 2306 ActiveTime:00:16:33 304 307 DarkTime:00:20:25 305 48:13:768 687 245 kSHIFT 306 48:13:947 687 245 kS 307 48:14:193 697 245 kI 308 48:14:257 702 245 kN 309 48:14:382 711 245 kG 310 48:14:464 720 245 kL 311 48:14:574 725 245 kE 312 48:14:641 733 245 kSHIFT 313 48:14:768 733 245 kL 314 48:14:986 744 245 kI 315 48:15:057 749 245 kN 316 48:15:147 758 245 kE 317 48:15:259 766 245 kSHIFT 318 48:15:321 766 245 kO 319 48:15:434 779 245 kN 320 48:15:634 792 245 kL 321 48:15:852 797 245 kY 322 48:16:141 805 245 kBACKSPACE 323 48:16:281 797 245 kBACKSPACE 324 48:16:407 792 245 kBACKSPACE 325 48:16:628 779 245 kN 326 48:16:918 788 245 kL 327 48:17:035 793 245 kY 328 48:17:391 801 245 kSHIFT 329 48:18:113 811 245 kT 330 48:18:258 816 245 kR 331 48:18:352 822 245 kU 332 48:18:430 831 245 kE 333 48:20:006 689 234 Md 334 48:20:117 689 234 Mu 335 48:21:588 555 338 Rd 336 48:21:744 555 338 Ru 337 48:22:463 195 331 Rd 338 48:22:624 195 331 Ru 339 48:23:324 690 271 Rd 340 48:23:324 690 271 Md 341 48:23:574 690 271 Ru 342 48:23:590 690 271 Mu 343 48:24:405 669 241 kSHIFT 344 48:24:577 669 241 kW 345 48:24:733 686 241 kI 346 48:24:858 691 241 kD 347 48:25:036 700 241 kT 348 48:25:098 705 241 kH 349 48:25:217 714 241 kSHIFT 350 48:27:126 750 241 Md 351 48:27:220 750 241 Mu 352 48:27:868 591 336 Rd 353 48:28:025 591 336 Ru 354 48:28:690 333 345 Rd 355 48:28:816 333 345 Ru 356 48:29:349 678 258 Md 357 48:29:443 678 258 Rd 358 48:29:599 678 258 Ru 359 48:29:599 678 258 Mu 360 48:30:821 598 341 Ld 361 48:30:884 598 341 Rd 362 48:31:040 598 341 Lu 363 48:31:040 598 341 Ru 364 48:31:979 681 264 Md 365 48:32:057 681 264 Rd 366 48:32:213 681 264 Mu 367 48:32:232 681 264 Ru 368 48:33:919 780 241 kCTRL 369 48:34:122 780 241 kS 308 22:46:330 32 445 kSHIFT 309 22:46:490 32 445 kT 310 22:46:722 43 445 kO 311 22:46:890 52 445 kG 312 22:47:034 61 445 kG 313 22:47:122 70 445 kL 314 22:47:211 75 445 kE 315 22:47:362 83 445 kSHIFT 316 22:47:450 83 445 kA 317 22:47:634 96 445 kU 318 22:47:730 105 445 kT 319 22:47:850 110 445 kH 320 22:48:026 119 445 kCTRL 321 22:48:267 119 445 kA 322 22:49:554 97 439 Ld 323 22:49:690 97 439 Lu 324 22:50:922 76 541 kSHIFT 325 22:51:114 76 541 kE 326 22:51:266 87 541 kN 327 22:51:394 96 541 kT 328 22:51:498 101 541 kE 329 22:51:594 109 541 kR 330 22:51:730 115 541 kSHIFT 331 22:51:866 115 541 kC 332 22:52:090 127 541 kL 333 22:52:250 132 541 kI 334 22:52:370 137 541 kC 335 22:52:458 145 541 kK 336 22:52:594 154 541 kSHIFT 337 22:53:082 163 541 kT 338 22:53:242 168 541 kR 339 22:53:323 174 541 kU 340 22:53:426 182 541 kE 341 22:54:490 191 541 Md 342 22:54:610 191 541 Mu 343 22:55:437 432 404 Md 344 22:55:555 432 404 Mu 345 22:56:540 65 444 Md 346 22:56:573 65 444 Rd 347 22:56:754 65 444 Ru 348 22:56:794 65 444 Mu 349 22:57:907 65 444 kRIGHT_ARROW -
trunk/src/org/expeditee/assets/resources-public/framesets/authentication/4.exp
r1396 r1415 1 V 2 282 p 40 1 V 232 2 p 400 3 3 U authadmin 4 4 D 07Jan2019[14:34] 5 5 M nobody 6 d 30May2019[12:55]6 d 04Jul2019[13:23] 7 7 B 100 100 39 100 8 8 Z … … 20 20 m 0.0 21 21 h -1.0 22 p 40 22 p 400 23 23 _sl F 24 24 … … 35 35 m 0.0 36 36 h -1.0 37 p 40 37 p 400 38 38 _sl F 39 39 … … 50 50 m 0.0 51 51 h -1.0 52 p 40 52 p 400 53 53 _sl F 54 54 … … 65 65 m 0.0 66 66 h -1.0 67 p 40 67 p 400 68 68 _sl F 69 69 … … 85 85 M 300 86 86 h 1.0 87 p 44 87 p 444 88 88 _ph Username 89 89 _sl F … … 110 110 M 300 111 111 h 1.0 112 p 41 112 p 411 113 _sl F 113 114 _ti 2 115 _ae true 114 116 115 117 S P 328 … … 148 150 M 300 149 151 h 1.0 150 p 44 152 p 444 151 153 _ph Identity Number 154 _sl F 152 155 _ti 3 153 156 … … 172 175 M 300 173 176 h 1.0 174 p 41 177 p 411 178 _sl F 175 179 _ti 4 180 _ae true 176 181 177 182 S P 382 … … 217 222 M 300 218 223 h 1.0 219 p 44 224 p 444 220 225 _ph Password Piece Two 226 _sl F 221 227 _ti 6 222 228 … … 239 245 M 300 240 246 h 1.0 241 p 44 247 p 444 242 248 _ph Password Piece One 249 _sl F 243 250 _ti 5 244 251 … … 262 269 M 300 263 270 h 1.0 264 p 44 271 p 444 265 272 _ph New Password Again 266 273 _sl F … … 286 293 M 300 287 294 h 1.0 288 p 44 295 p 444 289 296 _ph New Password 290 297 _sl F … … 310 317 M 205 311 318 h 1.0 312 p 41 319 p 411 313 320 _sl F 314 321 _ti 9 322 _ae true 315 323 316 324 S P 618 … … 325 333 l 620 639 326 334 c 1313 1314 327 p 41 335 p 411 328 336 329 337 S P 619 … … 337 345 l 620 621 338 346 c 1313 1315 339 p 41 347 p 411 340 348 341 349 S P 622 … … 349 357 l 624 625 350 358 c 1373 1374 351 p 41 359 p 411 352 360 353 361 S P 623 … … 361 369 l 625 635 362 370 c 1373 1376 363 p 41 371 p 411 364 372 365 373 S T 626 … … 377 385 m 0.0 378 386 h -1.0 379 p 41 387 p 411 380 388 _sl F 381 389 … … 394 402 m 0.0 395 403 h -1.0 396 p 41 404 p 411 397 405 _sl F 398 406 … … 411 419 m 0.0 412 420 h -1.0 413 p 41 421 p 411 414 422 _sl F 415 423 … … 428 436 m 0.0 429 437 h -1.0 430 p 41 438 p 411 431 439 _sl F 432 440 … … 445 453 m 0.0 446 454 h -1.0 447 p 41 455 p 411 448 456 _sl F 449 457 … … 462 470 m 0.0 463 471 h -1.0 464 p 41 472 p 411 465 473 _sl F 466 474 … … 479 487 m 0.0 480 488 h -1.0 481 p 41 489 p 411 482 490 _sl F 483 491 … … 493 501 l 624 636 494 502 c 1374 1375 495 p 41 503 p 411 496 504 497 505 S P 634 … … 505 513 l 635 636 506 514 c 1376 1375 507 p 41 515 p 411 508 516 509 517 S P 637 … … 517 525 l 621 640 518 526 c 1315 1320 519 p 41 527 p 411 520 528 521 529 S P 638 … … 529 537 l 639 640 530 538 c 1314 1320 531 p 41 539 p 411 532 540 533 541 Z … … 591 599 Z 592 600 593 ActiveTime:01:3 7:49601 ActiveTime:01:38:25 594 602 DarkTime:02:33:57 595 55:59:214 974 141 kSHIFT 596 55:59:413 974 141 kT 597 55:59:669 985 141 kO 598 55:59:820 994 141 kG 599 55:59:955 1003 141 kG 600 56:00:066 1012 141 kL 601 56:00:186 1016 141 kE 602 56:00:348 1025 141 kSHIFT 603 56:00:436 1025 141 kA 604 56:00:660 1038 141 kU 605 56:00:763 1047 141 kT 606 56:00:863 1052 141 kH 607 56:01:085 1061 141 kCTRL 608 56:01:245 1061 141 kA 609 56:12:623 644 193 Ld 610 56:12:691 644 193 Rd 611 56:12:826 644 193 Lu 612 56:12:843 644 193 Ru 613 56:13:979 986 135 Ld 614 56:14:115 986 135 Lu 615 56:14:966 696 197 Ld 616 56:15:012 696 197 Rd 617 56:15:147 696 197 Lu 618 56:15:187 696 197 Ru 619 56:26:280 1069 243 Md 620 56:26:299 1069 243 Rd 621 56:26:419 1069 243 Mu 622 56:26:426 1069 243 Ru 623 56:27:534 1026 139 Md 624 56:27:571 1026 139 Rd 625 56:27:779 1026 139 Ru 626 56:27:780 1026 139 Mu 627 56:31:507 663 197 Ld 628 56:31:581 663 197 Rd 629 56:31:723 663 197 Lu 630 56:31:747 663 197 Ru 631 56:34:254 1038 189 Md 632 56:34:314 1038 189 Rd 633 56:34:523 1038 189 Mu 634 56:34:538 1038 189 Ru 635 56:35:068 1151 300 kSHIFT 636 56:35:568 1150 300 kSHIFT 637 56:35:599 1150 300 kSHIFT 638 56:35:632 1150 300 kSHIFT 639 56:35:666 1150 300 kSHIFT 640 56:35:699 1150 300 kSHIFT 641 56:35:732 1150 300 kSHIFT 642 56:35:764 1150 300 kSHIFT 643 56:35:798 1150 300 kSHIFT 644 56:35:831 1150 300 kSHIFT 645 56:35:863 1150 300 kSHIFT 646 56:35:874 1150 300 kW 647 56:36:380 1167 300 kI 648 56:36:451 1172 300 kD 649 56:36:645 1181 300 kT 650 56:36:707 1186 300 kH 651 56:36:810 1195 300 kSHIFT 652 56:38:190 1182 295 Md 653 56:38:307 1182 295 Mu 654 56:38:894 625 191 Rd 655 56:38:987 625 191 Ru 656 56:39:764 627 249 Rd 657 56:39:859 627 249 Ru 658 56:41:702 1047 334 Md 659 56:41:781 1047 334 Rd 660 56:41:931 1047 334 Ru 661 56:41:947 1047 334 Mu 662 56:54:550 704 261 Ld 663 56:54:765 704 261 Rd 664 56:54:947 704 261 Ru 665 56:54:955 704 261 Lu 666 56:58:422 1052 309 Md 667 56:58:451 1052 309 Rd 668 56:58:627 1052 309 Ru 669 56:58:627 1052 309 Mu 670 57:09:933 848 208 kBACKSPACE 671 57:20:206 1047 362 kSHIFT 672 57:20:389 1047 362 kW 673 57:20:678 1064 362 kSHIFT 674 57:24:475 1085 362 Md 675 57:24:619 1085 362 Mu 676 57:25:366 720 212 Md 677 57:25:459 720 212 Mu 678 57:29:539 1023 282 kSHIFT 679 57:29:997 1023 282 kW 680 57:30:349 1040 282 kI 681 57:30:428 1045 282 kD 682 57:30:669 1054 282 kT 683 57:30:748 1059 282 kH 684 57:30:835 1068 282 kSHIFT 685 57:33:967 1109 284 Md 686 57:34:107 1109 284 Mu 687 57:35:022 700 206 Rd 688 57:35:131 700 206 Ru 689 57:36:262 690 248 Rd 690 57:36:363 690 248 Ru 691 57:38:078 1136 307 Md 692 57:38:203 1136 307 Mu 693 57:39:158 660 256 Ld 694 57:39:643 660 256 Lu 695 57:42:876 881 215 kBACKSPACE 696 57:43:086 874 219 kBACKSPACE 697 57:43:396 865 219 kBACKSPACE 698 57:45:393 600 212 kBACKSPACE 699 57:45:589 590 219 kBACKSPACE 700 57:45:819 582 219 kBACKSPACE 701 57:49:485 1047 296 kSHIFT 702 57:49:582 1047 296 kM 703 57:49:806 1066 305 kI 704 57:49:875 1071 305 kN 705 57:51:391 1080 305 Md 706 57:51:507 1080 305 Mu 707 57:52:144 705 215 Rd 708 57:52:195 705 215 Ru 709 57:52:846 710 250 Rd 710 57:52:931 710 250 Ru 711 57:53:726 1142 372 Md 712 57:53:788 1142 372 Rd 713 57:53:923 1142 372 Ru 714 57:53:947 1142 372 Mu 715 58:00:035 1153 256 kCTRL 716 58:00:538 1153 257 kCTRL 717 58:00:554 1153 257 kS 603 23:59:891 1076 133 kSHIFT 604 24:00:098 1076 133 kT 605 24:00:530 1087 133 kO 606 24:00:739 1096 133 kG 607 24:00:868 1105 133 kG 608 24:00:971 1114 133 kL 609 24:01:059 1119 133 kE 610 24:01:203 1127 133 kSHIFT 611 24:01:267 1127 133 kA 612 24:01:452 1140 133 kU 613 24:01:516 1149 133 kT 614 24:01:661 1154 133 kH 615 24:01:787 1163 133 kCTRL 616 24:01:956 1163 133 kA 617 24:02:797 1163 133 Ld 618 24:02:891 1163 133 Lu 619 24:03:467 747 207 Ld 620 24:03:540 747 207 Rd 621 24:03:643 747 207 Ru 622 24:03:659 747 207 Lu 623 24:04:533 1049 204 Md 624 24:04:555 1049 204 Rd 625 24:04:691 1049 204 Mu 626 24:04:698 1049 204 Ru 627 24:05:310 731 267 Ld 628 24:05:362 731 267 Rd 629 24:05:476 732 268 Lu 630 24:05:477 732 268 Ru 631 24:06:052 1306 239 Md 632 24:06:076 1306 239 Rd 633 24:06:220 1305 239 Mu 634 24:06:236 1303 238 Ru 635 24:06:662 1075 125 Md 636 24:06:685 1075 125 Rd 637 24:06:787 1075 125 Ru 638 24:06:803 1075 125 Mu -
trunk/src/org/expeditee/assets/resources-public/framesets/authentication/5.exp
r1396 r1415 1 V 19 42 p 40 1 V 196 2 p 400 3 3 U authadmin 4 4 D 07Jan2019[14:34] 5 5 M authadmin 6 d 23May2019[14:56]6 d 04Jul2019[13:23] 7 7 B 100 100 39 100 8 8 Z … … 20 20 m 0.0 21 21 h -1.0 22 _sl F 22 23 23 24 S T 373 … … 33 34 m 0.0 34 35 h -1.0 36 _sl F 35 37 36 38 S T 374 … … 46 48 m 0.0 47 49 h -1.0 50 _sl F 48 51 49 52 S T 392 … … 59 62 m 0.0 60 63 h -1.0 64 _sl F 61 65 62 66 S T 410 … … 77 81 M 300 78 82 h 1.0 79 p 44 83 p 444 80 84 _ph Trusted User One 85 _sl F 81 86 _ti 1 82 87 … … 103 108 m 0.0 104 109 h 2.0 110 _sl F 105 111 106 112 S T 406 … … 121 127 M 300 122 128 h 1.0 123 p 44 129 p 444 124 130 _ph Trusted User Two 131 _sl F 125 132 _ti 2 126 133 … … 144 151 M 300 145 152 h 1.0 146 p 41 153 p 411 154 _sl F 147 155 _ti 3 156 _ae true 148 157 149 158 S P 428 … … 183 192 m 0.0 184 193 h -1.0 194 _sl F 185 195 186 196 S T 426 … … 198 208 m 0.0 199 209 h -1.0 210 _sl F 200 211 201 212 S T 427 … … 213 224 m 0.0 214 225 h -1.0 226 _sl F 215 227 216 228 S P 429 … … 267 279 Z 268 280 269 ActiveTime:01:1 6:40281 ActiveTime:01:17:19 270 282 DarkTime:01:04:09 271 55:35:445 516 401 Ld 272 55:35:533 517 401 Rd 273 55:35:661 517 401 Lu 274 55:35:662 517 401 Ru 275 55:36:574 756 335 Md 276 55:36:749 756 335 Rd 277 55:39:613 756 335 Ru 278 55:39:765 756 335 Mu 279 56:18:735 420 343 Ld 280 56:18:821 420 343 Rd 281 56:18:990 420 343 Lu 282 56:19:005 420 343 Ru 283 56:19:990 194 308 Md 284 56:20:054 194 308 Rd 285 56:20:205 194 308 Ru 286 56:20:206 194 308 Mu 287 56:20:789 712 452 kCTRL 288 56:21:150 712 452 kV 289 56:22:334 660 472 Md 290 56:22:445 660 472 Mu 291 56:23:326 650 468 kSHIFT 292 56:23:454 650 468 kA 293 56:23:702 673 472 kC 294 56:24:022 681 472 kT 295 56:24:221 686 472 kI 296 56:24:278 691 472 kO 297 56:24:334 700 472 kN 298 56:24:446 709 472 kSHIFT 299 56:26:078 705 489 Md 300 56:26:182 705 489 Mu 301 56:27:014 611 401 Md 302 56:27:118 611 401 Mu 303 56:28:070 579 411 Ld 304 56:28:126 579 410 Rd 305 56:28:246 581 410 Lu 306 56:28:247 581 410 Ru 307 56:29:670 177 348 Md 308 56:29:750 177 348 Rd 309 56:29:925 177 348 Ru 310 56:29:941 177 348 Mu 311 56:31:326 413 392 Ld 312 56:31:374 413 392 Rd 313 56:31:477 413 392 Lu 314 56:31:485 413 392 Ru 315 56:32:455 185 308 Md 316 56:32:526 185 308 Rd 317 56:32:670 185 308 Ru 318 56:32:685 185 308 Mu 319 56:35:846 235 568 kCTRL 320 56:35:926 265 589 kV 321 56:36:486 278 572 Md 322 56:36:581 278 572 Mu 323 56:37:558 271 565 kSHIFT 324 56:37:686 271 565 kA 325 56:37:878 291 572 kC 326 56:38:190 299 572 kT 327 56:38:437 304 572 kI 328 56:38:501 309 572 kO 329 56:38:565 318 572 kN 330 56:38:741 327 572 kSHIFT 331 56:41:150 376 560 Md 332 56:41:254 376 560 Mu 333 56:41:998 464 400 Md 334 56:42:093 464 400 Mu 335 56:42:966 493 401 Ld 336 56:43:102 493 401 Rd 337 56:43:214 493 401 Ru 338 56:43:229 493 401 Lu 339 56:44:518 73 380 Md 340 56:44:606 73 380 Rd 341 56:44:733 73 380 Ru 342 56:44:749 73 380 Mu 343 56:45:622 786 366 kCTRL 344 56:46:054 786 366 kS 345 56:47:478 489 407 Ld 346 56:47:566 489 407 Rd 347 56:47:678 489 407 Ru 348 56:47:694 489 407 Lu 349 56:48:542 213 321 Md 350 56:48:598 213 321 Rd 351 56:48:733 213 321 Ru 352 56:48:742 213 321 Mu 353 56:50:095 441 467 Ld 354 56:50:174 441 467 Lu 283 23:19:762 102 718 kSHIFT 284 23:19:949 102 718 kE 285 23:20:099 113 718 kN 286 23:20:218 122 718 kT 287 23:20:331 126 718 kE 288 23:20:427 135 718 kR 289 23:20:605 141 718 kSHIFT 290 23:20:770 141 718 kC 291 23:20:948 153 718 kL 292 23:21:082 158 718 kI 293 23:21:220 163 718 kC 294 23:21:325 171 718 kK 295 23:21:396 180 718 kSHIFT 296 23:21:836 189 718 kT 297 23:21:996 194 718 kR 298 23:22:077 200 718 kU 299 23:22:180 209 718 kE 300 23:23:646 205 714 Md 301 23:23:738 205 714 Mu 302 23:24:548 434 402 Md 303 23:24:634 434 402 Mu 304 23:26:428 479 628 kRIGHT_ARROW -
trunk/src/org/expeditee/assets/resources-public/framesets/authentication/6.exp
r1396 r1415 1 V 83 52 p 40 1 V 837 2 p 400 3 3 U authadmin 4 4 D 23Nov2018[12:31] 5 5 M authadmin 6 d 23May2019[14:31]6 d 04Jul2019[13:23] 7 7 B 100 100 39 100 8 8 Z … … 41 41 m 0.0 42 42 h -1.0 43 _sl F 43 44 44 45 S T 1684 … … 53 54 m 0.0 54 55 h -1.0 56 _sl F 55 57 56 58 S T 1685 … … 65 67 m 0.0 66 68 h -1.0 69 _sl F 67 70 68 71 S T 1686 … … 77 80 m 0.0 78 81 h -1.0 82 _sl F 79 83 80 84 S P 1689 … … 113 117 m 0.0 114 118 h -1.0 115 p 40 119 p 400 120 _sl F 116 121 117 122 S T 1673 … … 128 133 m 0.0 129 134 h -1.0 130 p 40 135 p 400 136 _sl F 131 137 132 138 S T 1670 … … 143 149 m 0.0 144 150 h -1.0 145 p 40 151 p 400 152 _sl F 146 153 147 154 S T 1637 … … 158 165 m 0.0 159 166 h -1.0 160 p 40 167 p 400 168 _sl F 161 169 162 170 S T 1266 … … 179 187 M 300 180 188 h 1.0 181 p 44 189 p 444 182 190 _ph Username 191 _sl F 183 192 _ti 1 184 193 … … 203 212 M 300 204 213 h 1.0 205 p 44 214 p 444 206 215 _ph Password 216 _sl F 207 217 _ti 2 208 218 … … 226 236 M 205 227 237 h 1.0 228 p 41 238 p 411 239 _sl F 229 240 _ti 3 241 _ae true 230 242 231 243 S P 1703 … … 265 277 m 0.0 266 278 h -1.0 267 p 41 279 p 411 280 _sl F 268 281 269 282 S T 1696 … … 281 294 m 0.0 282 295 h -1.0 283 p 41 296 p 411 297 _sl F 284 298 285 299 S T 1697 … … 297 311 m 0.0 298 312 h -1.0 299 p 41 313 p 411 314 _sl F 300 315 301 316 S P 1704 … … 359 374 m 0.0 360 375 h -1.0 361 p 41 376 p 411 377 _sl F 362 378 363 379 S T 1699 … … 375 391 m 0.0 376 392 h -1.0 377 p 41 393 p 411 394 _sl F 378 395 379 396 S T 1700 … … 391 408 m 0.0 392 409 h -1.0 393 p 01 410 p 011 411 _sl F 394 412 395 413 S T 1701 … … 407 425 m 0.0 408 426 h -1.0 409 p 41 427 p 411 428 _sl F 410 429 411 430 S T 1702 … … 423 442 m 0.0 424 443 h -1.0 425 p 41 444 p 411 445 _sl F 426 446 427 447 S P 1709 … … 549 569 Z 550 570 551 ActiveTime:19857915:44:01 552 DarkTime:-19847399:-39:-16 553 32:20:162 706 445 Md 554 32:20:290 706 445 Rd 555 32:20:538 706 445 Ru 556 32:20:594 706 445 Mu 557 32:37:858 766 295 kCTRL 558 32:38:635 766 295 kCTRL 559 32:38:858 766 295 kS 571 ActiveTime:19857915:44:18 572 DarkTime:-19847087:-39:-16 573 23:29:005 178 694 kSHIFT 574 23:29:109 178 694 kE 575 23:29:362 189 694 kN 576 23:29:441 198 694 kT 577 23:29:506 203 694 kE 578 23:29:580 211 694 kR 579 23:29:763 217 694 kSHIFT 580 23:29:906 217 694 kC 581 23:30:140 228 694 kL 582 23:30:299 234 694 kI 583 23:30:403 239 694 kC 584 23:30:516 247 694 kK 585 23:30:603 256 694 kSHIFT 586 23:31:476 265 694 kT 587 23:31:652 270 694 kR 588 23:31:732 276 694 kU 589 23:31:811 285 694 kE 590 23:32:950 293 694 Md 591 23:33:066 293 694 Mu 592 23:33:738 432 403 Md 593 23:33:850 432 403 Mu 594 23:36:710 481 410 Ld 595 23:36:773 481 410 Rd 596 23:36:931 481 410 Lu 597 23:36:931 481 410 Ru 598 23:37:750 338 458 Md 599 23:37:836 338 458 Rd 600 23:38:002 338 458 Ru 601 23:38:042 338 458 Mu 602 23:39:396 175 714 kRIGHT_ARROW -
trunk/src/org/expeditee/core/bounds/CombinationBounds.java
r1097 r1415 87 87 88 88 @Override 89 public int getMaxX() 90 {91 int maxX = Integer.MIN_VALUE ;89 public int getMaxX() { 90 // +1 makes it safe to do math.abs on 91 int maxX = Integer.MIN_VALUE + 1; 92 92 93 93 for (Bounds b : _bounds) { … … 113 113 114 114 @Override 115 public int getMaxY() 116 {117 int maxY = Integer.MIN_VALUE ;115 public int getMaxY() { 116 // +1 makes it safe to do math.abs on 117 int maxY = Integer.MIN_VALUE + 1; 118 118 119 119 for (Bounds b : _bounds) { -
trunk/src/org/expeditee/core/bounds/EllipticalBounds.java
r1142 r1415 70 70 71 71 @Override 72 public boolean contains(int x, int y) 73 { 72 public boolean contains(int x, int y) { 74 73 // If the ellipse is degenerate then it can't contain anything 75 74 if (_diameters.getArea() == 0) return false; 76 77 // Get the position of the given coordinates with respect to the ellipse centre 78 Point pRel = new Point(x - _centre.getX(), y - _centre.getY()); 79 80 // x^2 / r_x^2 + y^2 / r_y^2 must be <= 1 81 // (using diameters instead of radii hence the 4.0f value) 82 float xNorm = (((float) pRel.getX()) * pRel.getX()) / (((float) _diameters.width) * _diameters.width); 83 float yNorm = (((float) pRel.getY()) * pRel.getY()) / (((float) _diameters.height) * _diameters.height); 84 return (xNorm + yNorm <= 4.0f); 75 76 double deltaXSq = Math.pow(x - _centre.getX(), 2); 77 double deltaYSq = Math.pow(y - _centre.getY(), 2); 78 double minorAxisSq = Math.pow(Math.min(_diameters.height, _diameters.width) / 2, 2); 79 double majorAxisSq = Math.pow(Math.max(_diameters.height, _diameters.width) / 2, 2); 80 double result = (deltaXSq / majorAxisSq) + (deltaYSq / minorAxisSq); 81 return result <= 1.0f; 85 82 } 86 83 … … 118 115 119 116 @Override 120 public boolean equals(Bounds other) 121 { 117 public boolean equals(Bounds other) { 122 118 if (other instanceof EllipticalBounds) { 123 119 EllipticalBounds e = (EllipticalBounds) other; … … 128 124 129 125 @Override 130 public boolean intersects(AxisAlignedBoxBounds other) 131 { 126 public boolean intersects(AxisAlignedBoxBounds other) { 132 127 // Treat the box as a polygon 133 128 return intersects(other.getPolygon()); … … 135 130 136 131 @Override 137 public boolean intersects(CombinationBounds other) 138 { 132 public boolean intersects(CombinationBounds other) { 139 133 // Defer to the CombinationBounds routine 140 134 return other.intersects(this); … … 142 136 143 137 @Override 144 public boolean intersects(EllipticalBounds other) 145 { 138 public boolean intersects(EllipticalBounds other) { 146 139 // TODO: Implement. cts16 147 140 System.err.println("Unimplemented method: EllipticalBounds.intersects(EllipticalBounds)"); -
trunk/src/org/expeditee/core/bounds/PolygonBounds.java
r1142 r1415 538 538 } 539 539 } 540 541 public String toString() { 542 StringBuilder sb = new StringBuilder("PolygonBounds with: "); 543 sb.append("[MinX: " + getMinX() + "]"); 544 sb.append("[MinY: " + getMinY() + "]"); 545 sb.append("[MaxX: " + getMaxX() + "]"); 546 sb.append("[MaxY: " + getMaxY() + "]"); 547 return sb.toString(); 548 } 540 549 541 550 } -
trunk/src/org/expeditee/encryption/io/EncryptedExpReader.java
r1414 r1415 24 24 import javax.crypto.spec.SecretKeySpec; 25 25 26 import org.expeditee.core.Point; 26 27 import org.expeditee.encryption.CryptographyConstants; 27 28 import org.expeditee.encryption.items.surrogates.EncryptionDetail; … … 33 34 import org.expeditee.io.DefaultFrameWriter; 34 35 import org.expeditee.io.ExpReader; 36 import org.expeditee.items.Constraint; 35 37 import org.expeditee.items.Item; 36 38 import org.expeditee.items.Text; … … 44 46 private SecretKey personalKey; 45 47 private boolean accessDenied = false; 48 private boolean _readingSurrogates; 49 private static final Predicate<String> endOfSection = s -> s.equals(EncryptedExpWriter.TERMINATOR + "") || s.equals(EncryptedExpWriter.TERMINATOR_WITH_CONTINUATION); 46 50 47 51 public static boolean isEncryptedExpediteeFile(final String path) throws IOException { 48 finalBufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(path), "UTF-8"));49 finalString firstLine = in.readLine();52 BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(path), "UTF-8")); 53 String firstLine = in.readLine(); 50 54 in.close(); 55 if (firstLine == null) return false; 51 56 return firstLine.startsWith(ENCRYPTED_EXP_FLAG); 52 57 } … … 87 92 if (accessDenied) { return null; } 88 93 94 _readingSurrogates = false; 89 95 _reader = reader; 90 96 String next = ""; … … 106 112 next = readTheConstraints(); 107 113 114 if (next.equals(EncryptedExpWriter.TERMINATOR_WITH_CONTINUATION)) { 115 // Read the surrogates 116 _readingSurrogates = true; 117 next = readTheItems(newFrame, delayedActions); 118 _readingSurrogates = false; 119 } 120 108 121 for(DelayedAction action: delayedActions) { 109 122 action.exec(); … … 124 137 } 125 138 126 // @Override127 // protected String readTheItems(Frame newFrame, List<DelayedAction> delayedActions) throws IOException {128 // String next = null;129 // Item currentItem = null;130 //131 // Predicate<String> endOfSection = s -> s.equals(EncryptedExpWriter.TERMINATOR + "") || s.equals(EncryptedExpWriter.TERMINATOR_WITH_CONTINUATION);132 // while (_reader.ready() && !endOfSection.test(next = _reader.readLine())) {133 // if (!isValidLine(next)) {134 // continue;135 // }136 //137 // String tag = getTagEnc(next);138 // if (next.startsWith(DefaultFrameWriter.TYPE_AND_ID_STR + " ")) {139 // currentItem = newItem(next);140 // _linePoints.put(currentItem.getID(), currentItem);141 // newFrame.addItem(currentItem);142 // currentItem.setEncryptionDetailForTag(tag + "", EncryptionDetail.UnencryptedOnSave);143 // } else if (next.startsWith("SurrogateFor")) {144 // int parentID = Integer.parseInt(next.split(" ")[1]);145 // newFrame.getItemWithID(parentID).addToSurrogates(currentItem);146 // newFrame.addToSurrogates(currentItem);147 // } else if (currentItem != null && actionShouldBeDelayed(tag.charAt(0))) {148 // delayedActions.add(new DelayedAction(currentItem, next));149 // } else if (currentItem != null) {150 // processBodyLine(currentItem, next);151 // } else {152 // System.err.println("Error while reading in frame (ExpReader): Found body line but no current item to apply it to.");153 // }154 // }155 //156 // if (next.equals(EncryptedExpWriter.TERMINATOR_WITH_CONTINUATION)) {157 // next = readTheItems(newFrame, delayedActions);158 // }159 //160 // return next;161 // }162 163 139 protected String readTheItems(Frame newFrame, List<DelayedAction> delayedActions) throws IOException { 164 // Read the primary item. 165 BiConsumer<Item, String> addToBody = (item, line) -> newFrame.addItem(item); 166 String next = readLineAfterLine(false, addToBody, delayedActions); 167 168 // Read the surrogate items. 169 if (next.equals(EncryptedExpWriter.TERMINATOR_WITH_CONTINUATION)) { 170 BiConsumer<Item, String> addToSurrogates = (item, line) -> { 171 int parentID = Integer.parseInt(line.split(" ")[1]); 172 newFrame.getItemWithID(parentID).addToSurrogates(item); 173 newFrame.addToSurrogates(item); 174 }; 175 next = readLineAfterLine(true, addToSurrogates, delayedActions); 140 BiConsumer<Item, String> primaryAdd = (item, line) -> newFrame.addItem(item); 141 BiConsumer<Item, String> surrogateAdd = (item, line) -> { 142 int parentID = Integer.parseInt(line.split(" ")[1]); 143 Item parent = newFrame.getItemWithID(parentID); 144 newFrame.addToSurrogatesOnLoad(item, parent); 145 }; 146 147 if (_readingSurrogates) { 148 return readLineAfterLine(true, surrogateAdd, delayedActions); 149 } else { 150 return readLineAfterLine(false, primaryAdd, delayedActions); 151 } 152 } 153 154 @Override 155 protected String readTheConstraints() throws IOException, Exception { 156 String next = null; 157 while (_reader.ready() && !endOfSection.test(next = _reader.readLine())) { 158 if (isValidLine(next)) { 159 Point idtype = separateValues(next.substring(2)); 160 // The next line must be the endpoints 161 if (!_reader.ready()) { 162 throw new Exception("Unexpected end of file"); 163 } 164 next = _reader.readLine(); 165 Point startend = separateValues(next.substring(2)); 166 167 Item a = _linePoints.get(startend.getX()); 168 Item b = _linePoints.get(startend.getY()); 169 170 new Constraint(a, b, idtype.getX(), idtype.getY()); 171 } 176 172 } 177 173 return next; … … 182 178 Item currentItem = null; 183 179 184 Predicate<String> endOfSection = s -> s.equals(EncryptedExpWriter.TERMINATOR + "") || s.equals(EncryptedExpWriter.TERMINATOR_WITH_CONTINUATION);185 180 while (_reader.ready() && !endOfSection.test(next = _reader.readLine())) { 186 181 if (!isValidLine(next)) { … … 195 190 storeResult.accept(currentItem, next); 196 191 } 197 currentItem.setEncryptionDetailForTag(tag + "", EncryptionDetail.UnencryptedOnSave); 192 EncryptionDetail unencryptedOnSave = new EncryptionDetail(EncryptionDetail.Type.UnencryptedOnSave); 193 currentItem.setEncryptionDetailForTag(tag + "", unencryptedOnSave); 198 194 } else if (next.startsWith("SurrogateFor")) { 199 195 if (isSurrogate) { … … 212 208 } 213 209 214 // private String readLineAfterLine(Consumer<Item> storeResult, List<DelayedAction> delayedActions) throws IOException {215 // String next = null;216 // Item currentItem = null;217 //218 // Predicate<String> endOfSection = s -> {219 // return s.equals(EncryptedExpWriter.TERMINATOR + "") || s.equals(EncryptedExpWriter.TERMINATOR_WITH_CONTINUATION);220 // };221 // while (_reader.ready() && !endOfSection.test(next = _reader.readLine())) {222 // if (!isValidLine(next)) {223 // continue;224 // }225 //226 // String tag = getTagEnc(next);227 // if (next.startsWith(DefaultFrameWriter.TYPE_AND_ID_STR + " ")) {228 // currentItem = newItem(next);229 // _linePoints.put(currentItem.getID(), currentItem);230 // currentItem.setEncryptionDetailForTag(tag + "", EncryptionDetail.UnencryptedOnSave);231 // storeResult.accept(currentItem);232 // } else if (next.startsWith("SurrogateFor")) {233 // int parentID = Integer.parseInt(next.split(" ")[1]);234 // newFrame.getItemWithID(parentID).addToSurrogates(currentItem);235 // new Delayed236 // }237 // }238 //239 // return next;240 // }241 242 210 @Override 243 211 protected void processBodyLine(Item item, String line) { … … 245 213 String tag = getTagEnc(line); 246 214 String value = getValue(line); 247 248 if (item.isSurrogate() && item.isTagInherited(tag)) { 215 boolean isEncryptedLine = isEncryptedLine(line); 216 217 if (item.isSurrogate() && isEncryptedLine) { 218 // Surrogates should never have encrypted body lines. 249 219 return; 250 220 } 251 221 252 222 // Attempt to decrypt the line if necessary. 253 if (isEncryptedLine (line)) {254 LabelResult res = Label. resolveKey(item.getEncryptionLabel());223 if (isEncryptedLine) { 224 LabelResult res = Label.getLabel(item.getEncryptionLabel()); 255 225 if (res == LabelResult.SuccessResolveLabelToKey) { 256 item.setEncryptionDetailForTag(tag, EncryptionDetail.ReencryptOnSave); 226 EncryptionDetail reencryptOnSave = new EncryptionDetail(EncryptionDetail.Type.ReencryptOnSave); 227 item.setEncryptionDetailForTag(tag, reencryptOnSave); 257 228 SecretKey key = new SecretKeySpec(res.key, SymmetricAlgorithm); 258 229 byte[] decryptedBytes = DecryptSymmetric(Base64.getDecoder().decode(value), key); 259 230 value = new String(decryptedBytes); 260 231 } else { 261 EncryptionDetail encryptionDetail = EncryptionDetail.UseUndecipheredValueOnSave.setUndecipheredValue(getValue(line)); 262 item.setEncryptionDetailForTag(tag, encryptionDetail); 232 EncryptionDetail undecipheredValueOnSave = new EncryptionDetail(EncryptionDetail.Type.UseUndecipheredValueOnSave); 233 undecipheredValueOnSave.setUndecipheredValue(getValue(line)); 234 item.setEncryptionDetailForTag(tag, undecipheredValueOnSave); 263 235 return; 264 236 } 265 237 } else { 266 item.setEncryptionDetailForTag(tag, EncryptionDetail.UnencryptedOnSave); 238 EncryptionDetail unencryptedOnSave = new EncryptionDetail(EncryptionDetail.Type.UnencryptedOnSave); 239 item.setEncryptionDetailForTag(tag, unencryptedOnSave); 240 if (item.isSurrogate()) { 241 item.setTagNotInherited(tag); 242 } 267 243 } 268 244 … … 394 370 395 371 private SecretKeySpec resolveLabel(String label) { 396 LabelResult res = Label. resolveKey(label);372 LabelResult res = Label.getLabel(label); 397 373 if (res == LabelResult.SuccessResolveLabelToKey) { 398 374 byte[] keyBytes = res.key; -
trunk/src/org/expeditee/encryption/io/EncryptedExpWriter.java
r1414 r1415 23 23 import org.expeditee.encryption.CryptographyConstants; 24 24 import org.expeditee.encryption.items.surrogates.EncryptionDetail; 25 import org.expeditee.encryption.items.surrogates.EncryptionDetail.Type; 25 26 import org.expeditee.encryption.items.surrogates.Label; 26 27 import org.expeditee.encryption.items.surrogates.Label.LabelResult; 27 28 import org.expeditee.gui.Frame; 29 import org.expeditee.gui.Frame.BodyType; 28 30 import org.expeditee.gui.MessageBay; 29 31 import org.expeditee.io.Conversion; … … 62 64 } 63 65 } else { 64 LabelResult res = Label. resolveKey(label);66 LabelResult res = Label.getLabel(label); 65 67 if (res == LabelResult.SuccessResolveLabelToKey) { 66 68 byte[] keyBytes = res.key; … … 94 96 95 97 // write item 96 writeItemData(frame );98 writeItemData(frame, true); 97 99 writeTerminator(); 98 99 100 // write lines and constraints 100 101 writeLineData(); 101 102 writeTerminator(); 102 103 writeConstraintData(); 103 writeTerminator(); 104 104 105 // write surrogate items 106 if (frame.hasSurrogates()) { 107 writeSurrogateTerminator(); 108 writeItemData(frame, false); 109 writeTerminator(); 110 } else { 111 writeTerminator(); 112 } 113 105 114 writeLine(SessionStats.getFrameEventList(frame)); 106 115 } … … 126 135 127 136 protected void writeClass(Item toWrite) throws IOException { 137 if (toWrite instanceof Text && toWrite.getText().equals("Content for Label Two")) { 138 System.err.println("EncryptedExpWriter::writeClass::breakpoint"); 139 } else if (toWrite instanceof Text && toWrite.getText().equals("Encrypted") && toWrite.getPrimary().getText().equals("Content for Label One")) { 140 System.err.println("EncryptedExpWriter::writeClass::breakpoint"); 141 } 142 128 143 LinkedHashMap<Character,Method> itemTags = new LinkedHashMap<Character, Method>(getItemTags()); 129 144 LinkedHashMap<String,Method> itemTagsExt = new LinkedHashMap<String, Method>(getItemTagsExt()); … … 149 164 } 150 165 EncryptionDetail encryptionDetail = toWrite.getEncryptionDetailForTag(tag + ""); 151 152 switch(encryptionDetail) { 166 Type encryptionDetailType = encryptionDetail.getEncryptionDetailType(); 167 168 switch(encryptionDetailType) { 153 169 case UnencryptedOnSave: 154 170 writeTagUnencryptedOnSave(toWrite, param, tags, tag); … … 166 182 } 167 183 168 private void writeItemData(Frame frame ) throws IOException {184 private void writeItemData(Frame frame, boolean primaryItems) throws IOException { 169 185 // write each item in the frame 170 for (Item i : frame.getItemsToSave()) { 186 BodyType bodyType = primaryItems ? BodyType.PrimaryBody : BodyType.SurrogateBody; 187 for (Item i : frame.getItemsToSave(bodyType)) { 171 188 assert (!(i instanceof Line)); 172 189 writeItem(i); … … 176 193 assert (!(i instanceof Line)); 177 194 writeItem(i); 178 }179 180 // write out the surrogates181 List<Item> surrogates = frame.getSurrogateItemsToSave();182 if (!surrogates.isEmpty()) {183 writeSurrogateTerminator();184 for (Item i: surrogates) {185 assert (!(i instanceof Line));186 writeItem(i);187 }188 195 } 189 196 } … … 194 201 BinaryOperator<Boolean> trueExists = (a, b) -> a || b; 195 202 boolean surrogatesInherit = surrogateItems.stream().map(isTagInherited).collect(Collectors.reducing(trueExists)).get(); 196 if (surrogatesInherit && 197 Label.resolveKey(toWrite.getEncryptionLabel()) == LabelResult.SuccessResolveLabelToKey) { 198 toWrite.setEncryptionDetailForTag(tag + "", EncryptionDetail.UnencryptedOnSave); 203 boolean userHasKey = Label.getLabel(toWrite.getEncryptionLabel()) == LabelResult.SuccessResolveLabelToKey; 204 205 if (!surrogatesInherit && userHasKey) { 206 EncryptionDetail reencryptOnSave = new EncryptionDetail(EncryptionDetail.Type.ReencryptOnSave); 207 toWrite.setEncryptionDetailForTag(tag + "", reencryptOnSave); 208 writeTagReencryptOnSave(toWrite, tags, tag); 209 } else { 210 EncryptionDetail unencryptedOnSave = new EncryptionDetail(EncryptionDetail.Type.UnencryptedOnSave); 211 toWrite.setEncryptionDetailForTag(tag + "", unencryptedOnSave); 199 212 writeTagUnencryptedOnSave(toWrite, new Object[] {}, tags, tag); 200 } else {201 toWrite.setEncryptionDetailForTag(tag + "", EncryptionDetail.ReencryptOnSave);202 writeTagReencryptOnSave(toWrite, tags, tag);203 213 } 204 214 } … … 207 217 Method toRun = tags.get(tag); 208 218 Class<?> declarer = toRun.getDeclaringClass(); 209 LabelResult res = Label. resolveKey(toWrite.getEncryptionLabel());219 LabelResult res = Label.getLabel(toWrite.getEncryptionLabel()); 210 220 if (declarer.isAssignableFrom(toWrite.getClass()) && res == LabelResult.SuccessResolveLabelToKey) { 211 221 try { -
trunk/src/org/expeditee/encryption/items/surrogates/EncryptionDetail.java
r1413 r1415 1 1 package org.expeditee.encryption.items.surrogates; 2 2 3 public enum EncryptionDetail { 4 // If the property needs to be unencrypted due to inheritance then do not try to encrypt it. 5 UnencryptedOnSave, 6 7 // If the property is not inherited by any surrogates then we can try to encrypt it. 8 // If we do not have key then default to UnencryptedOnSave. 9 ReencryptOnSave, 10 11 // If the property is no longer inherited by at least one surrogate then this value is present. 12 // If it turns out there is no longer any surrogates who inherit the value then this value can be replaced with ReencryptOnSave. 13 // Otherwise, this value must be replaced with UnencryptedOnSave. 14 InheritanceCheckOnSave, 15 16 // If we could not decrypt the value on load then EncryptionDetail.getUndecipheredValue() can be used to get the value for saving. 17 UseUndecipheredValueOnSave; 18 19 private String undecipheredValue = null; 3 public class EncryptionDetail { 4 private Type type; 5 private String undecipheredValue; 6 7 public EncryptionDetail(Type type) { 8 this.type = type; 9 } 20 10 21 11 public EncryptionDetail setUndecipheredValue(String undecipheredValue) { … … 25 15 26 16 public String getUndecipheredValue() { 27 return this.undecipheredValue; 17 return undecipheredValue; 18 } 19 20 public Type getEncryptionDetailType() { 21 return type; 22 } 23 24 @Override 25 public EncryptionDetail clone() { 26 EncryptionDetail copy = new EncryptionDetail(this.type); 27 copy.setUndecipheredValue(this.undecipheredValue); 28 return copy; 29 } 30 31 public enum Type { 32 // If the property needs to be unencrypted due to inheritance then do not try to encrypt it. 33 UnencryptedOnSave, 34 35 // If the property is not inherited by any surrogates then we can try to encrypt it. 36 // If we do not have key then default to UnencryptedOnSave. 37 ReencryptOnSave, 38 39 // If the property is no longer inherited by at least one surrogate then this value is present. 40 // If it turns out there is no longer any surrogates who inherit the value then this value can be replaced with ReencryptOnSave. 41 // Otherwise, this value must be replaced with UnencryptedOnSave. 42 InheritanceCheckOnSave, 43 44 // If we could not decrypt the value on load then EncryptionDetail.getUndecipheredValue() can be used to get the value for saving. 45 UseUndecipheredValueOnSave; 28 46 } 29 47 } -
trunk/src/org/expeditee/encryption/items/surrogates/Label.java
r1413 r1415 2 2 3 3 import java.util.ArrayList; 4 import java.util.Arrays; 4 5 import java.util.Base64; 5 import java.util.Collection;6 6 import java.util.List; 7 import java.util. Set;7 import java.util.function.Predicate; 8 8 import java.util.stream.Collectors; 9 10 import org.expeditee.auth.AuthenticatorBrowser; 11 import org.expeditee.gui.DisplayController; 12 import org.expeditee.gui.Frame; 13 import org.expeditee.gui.FrameIO; 14 import org.expeditee.gui.MessageBay; 9 import java.util.stream.Stream; 10 11 import org.expeditee.gui.ItemsList; 15 12 import org.expeditee.items.Item; 16 13 import org.expeditee.items.Text; 17 import org.expeditee.settings. UserSettings;14 import org.expeditee.settings.identity.secrets.KeyList; 18 15 19 16 public class Label { 20 17 21 private static List<LabelResult> labelCache = new ArrayList<LabelResult>(); 22 private static List<String> forbiddenLabels = new ArrayList<String>(); 23 24 public static LabelResult resolveKey(String label) { 25 26 if (forbiddenLabels.contains(label)) { 18 private static int surrogateStep = -1; 19 20 public static LabelResult getLabel(String label) { 21 Text[] userLabels = KeyList.UserLabels.get(); 22 Text labelText = null; 23 for (Text userLabel : userLabels) { 24 if (userLabel.getText().equals(label)) { 25 labelText = userLabel; 26 break; 27 } 28 } 29 30 if (labelText == null) { 31 return unableToFindLabelResult(label); 32 } else { 33 List<String> data = labelText.getData(); 34 if (data == null || data.isEmpty()) { 35 return unableToFindLabelResult(label); 36 } 37 String dataEntry = data.get(0); 38 39 if (dataEntry.contains("{")) { 40 return partialKeyResult(label, dataEntry); 41 } else { 42 return fullKeyResult(label, dataEntry); 43 } 44 } 45 } 46 47 public static void progressSurrogateMode() { 48 surrogateStep += 1; 49 } 50 51 public static void resetSurrogateMode() { 52 surrogateStep = -1; 53 } 54 55 public static List<String> getAccessibleLabelsNames(ItemsList itemsList) { 56 Text[] userLabels = KeyList.UserLabels.get(); 57 Stream<String> accessibleUserWideLabels = Arrays.asList(userLabels).stream().map(label -> label.getText()); 58 59 Predicate<Item> isLabelWithoutEncryptionLabel = item -> item.getEncryptionLabel() == null || item.getEncryptionLabel().isEmpty(); 60 itemsList.removeIf(isLabelWithoutEncryptionLabel); 61 Stream<String> accessibleFrameLocalLabels = itemsList.underlying().stream().map(item -> item.getEncryptionLabel()).distinct(); 62 63 List<String> accessibleLabelsUnion = accessibleUserWideLabels.collect(Collectors.toList()); 64 accessibleLabelsUnion.retainAll(accessibleFrameLocalLabels.collect(Collectors.toList())); 65 66 if (surrogateStep > -1 && surrogateStep < accessibleLabelsUnion.size()) { 67 String surrogateModeFilter = accessibleLabelsUnion.get(surrogateStep); 68 List<String> single = new ArrayList<String>(); 69 single.add(surrogateModeFilter); 70 return single; 71 } else { 72 resetSurrogateMode(); 73 } 74 75 return accessibleLabelsUnion; 76 } 77 78 private static LabelResult partialKeyResult(String label, String dataEntry) { 79 dataEntry = dataEntry.substring(dataEntry.indexOf('}') + 1).trim(); 80 LabelResult res = LabelResult.SuccessResolveLabelToPartialKey; 81 res.name = label; 82 return res; 83 } 84 85 private static LabelResult unableToFindLabelResult(String label) { 86 LabelResult res = LabelResult.ErrorUnableToFindLabel; 87 res.name = label; 88 return res; 89 } 90 91 private static LabelResult fullKeyResult(String label, String dataEntry) { 92 try { 93 LabelResult res = LabelResult.SuccessResolveLabelToKey; 94 res.key = Base64.getDecoder().decode(dataEntry); 95 res.name = label; 96 return res; 97 } catch (IllegalArgumentException e) { 27 98 return LabelResult.ErrorUnableToFindLabel; 28 99 } 29 30 LabelResult fromCache = getFromCache(label); 31 if (fromCache != null) { 32 return fromCache; 33 } 34 35 36 String credentialsFrameName = UserSettings.ProfileName.get() + 37 AuthenticatorBrowser.CREDENTIALS_FRAME; 38 Frame credentialsFrame = FrameIO.LoadFrame(credentialsFrameName); 39 Collection<Text> textItems = credentialsFrame.getTextItems(); 40 textItems.removeIf(t -> !t.getText().equals("Secrets")); 41 textItems.removeIf(t -> !t.hasLink()); 42 if (textItems.isEmpty()) { 43 return LabelResult.ErrorUnableToFindSecretsFrame; 44 } 45 Text linkToSecretsFrame = textItems.iterator().next(); 46 if (!linkToSecretsFrame.hasLink()) { 47 return LabelResult.ErrorUnableToFindSecretsFrame; 48 } 49 Frame secretsFrame = FrameIO.LoadFrame(linkToSecretsFrame.getParent().getFramesetName() + linkToSecretsFrame.getLink()); 50 Collection<Text> labels = secretsFrame.getTextItems(); 51 labels.removeIf(lbl -> !lbl.getText().equals(label)); 52 labels.removeIf(lbl -> lbl.getData() == null || lbl.getData().size() == 0); 53 if (labels.isEmpty()) { 54 return LabelResult.ErrorUnableToFindLabel; 55 } 56 Text labelItem = labels.iterator().next(); 57 String data = labelItem.getData().get(0); 58 if (data.contains("{")) { 59 data = data.substring(data.indexOf('}') + 1).trim(); 60 LabelResult res = LabelResult.SuccessResolveLabelToPartialKey; 61 res.key = Base64.getDecoder().decode(data); 62 return res; 63 } else { 64 try { 65 LabelResult res = LabelResult.SuccessResolveLabelToKey; 66 res.key = Base64.getDecoder().decode(data); 67 res.name = label; 68 labelCache.add(res); 69 return res; 70 } catch (IllegalArgumentException e) { 71 return LabelResult.ErrorUnableToFindLabel; 72 } 73 } 74 } 75 76 public static void progressSurrogateMode() { 77 Collection<Item> allItems = DisplayController.getCurrentFrame().getAllItems(); 78 allItems.removeIf(item -> item.getEncryptionLabel() == null); 79 MessageBay.displayMessage("Encryption labels found on items on current frame: "); 80 Set<String> allLabels = allItems.stream().map(i -> i.getEncryptionLabel()).collect(Collectors.toSet()); 81 StringBuilder sb = new StringBuilder(); 82 for (String label: allLabels) { 83 sb.append(label + ","); 84 } 85 MessageBay.displayMessage(sb.deleteCharAt(sb.length() - 1).toString()); 86 } 87 88 public static void resetSurrogateMode() { 89 // TODO Auto-generated method stub 90 91 } 92 93 private static LabelResult getFromCache(String label) { 94 List<LabelResult> cacheCanditates = labelCache.stream().filter(labelResult -> labelResult.name.equals(label)).collect(Collectors.toList()); 95 if (!cacheCanditates.isEmpty()) { 96 return cacheCanditates.get(0); 97 } else { 98 return null; 99 } 100 } 101 102 // private static List<List<String>> permutation(List<String> strings, List<List<String>> acc) { 103 // for (int i = 0; i < strings.size(); i++) { 104 // 100 } 101 102 //private static Map<LabelResult, LabelAccess> labelCache = new LinkedHashMap<LabelResult, LabelAccess>(); 103 //private static int surrogateStep = -1; 104 //private static final Predicate<? super LabelResult> isAccessible = a -> labelCache.get(a).allowed; 105 106 // public static LabelResult resolveKey(String label) { 107 // Stream<LabelResult> stream = labelCache.keySet().stream(); 108 // stream = stream.filter(res -> res.name.equals(label)); 109 // if (stream.count() == 0) { 110 // return resolveKeyWorker(label); 111 // } else { 112 // LabelResult labelResult = stream.collect(Collectors.toList()).get(0); 113 // LabelAccess accessible = labelCache.get(labelResult); 114 // if (accessible.allowed) { return labelResult; } 115 // else { return LabelResult.ErrorForbiddenLabel; } 116 // } 117 // } 118 // private static LabelResult resolveKeyWorker(String label) { 119 // Frame secretsFrame = getSecretsFrame(); 120 // if (secretsFrame == null) { 121 // return LabelResult.ErrorUnableToFindSecretsFrame; 122 // } 123 // 124 // String data = getDataFromLabel(secretsFrame, label); 125 // if (data == null) { 126 // return LabelResult.ErrorUnableToFindLabel; 127 // } 128 // 129 // if (data.contains("{")) { 130 // data = data.substring(data.indexOf('}') + 1).trim(); 131 // LabelResult res = LabelResult.SuccessResolveLabelToPartialKey; 132 // res.key = Base64.getDecoder().decode(data); 133 // return res; 134 // } else { 135 // try { 136 // LabelResult res = LabelResult.SuccessResolveLabelToKey; 137 // res.key = Base64.getDecoder().decode(data); 138 // res.name = label; 139 // labelCache.put(res, new LabelAccess(true)); 140 // return res; 141 // } catch (IllegalArgumentException e) { 142 // return LabelResult.ErrorUnableToFindLabel; 143 // } 105 144 // } 106 145 // } 146 // 147 // private static String getDataFromLabel(Frame frame, String label) { 148 // Collection<Text> labels = frame.getTextItems(); 149 // labels.removeIf(lbl -> !lbl.getText().equals(label)); 150 // labels.removeIf(lbl -> lbl.getData() == null || lbl.getData().size() == 0); 151 // if (labels.isEmpty()) { return null; } 152 // Text labelItem = labels.iterator().next(); 153 // List<String> data = labelItem.getData(); 154 // if (data.isEmpty()) { return null; } 155 // return data.get(0); 156 // } 157 // 158 // private static Frame getSecretsFrame() { 159 // String credentialsFrameName = UserSettings.ProfileName.get() + 160 // AuthenticatorBrowser.CREDENTIALS_FRAME; 161 // Frame credentialsFrame = FrameIO.LoadFrame(credentialsFrameName); 162 // Collection<Text> textItems = credentialsFrame.getTextItems(); 163 // textItems.removeIf(t -> !t.getText().equals("Secrets")); 164 // textItems.removeIf(t -> !t.hasLink()); 165 // if (textItems.isEmpty()) { 166 // return null; 167 // } 168 // Text linkToSecretsFrame = textItems.iterator().next(); 169 // if (!linkToSecretsFrame.hasLink()) { 170 // return null; 171 // } 172 // Frame secretsFrame = FrameIO.LoadFrame(linkToSecretsFrame.getParent().getFramesetName() + linkToSecretsFrame.getLink()); 173 // return secretsFrame; 174 // } 175 // 176 // private static class LabelAccess { 177 // public final boolean allowedDefault; 178 // public boolean allowed; 179 // 180 // public LabelAccess(boolean value) { 181 // allowedDefault = value; 182 // allowed = allowedDefault; 183 // } 184 // } 107 185 108 186 public enum LabelResult { … … 110 188 SuccessResolveLabelToPartialKey, 111 189 ErrorUnableToFindSecretsFrame, 112 ErrorUnableToFindLabel; 190 ErrorUnableToFindLabel, 191 ErrorForbiddenLabel; 113 192 114 193 public byte[] key; … … 125 204 return "Unable to find your Secrets Frame."; 126 205 case ErrorUnableToFindLabel: 127 return "Unable to resolve label to encrypt/decrypt frame. Label: "; 206 return "Unable to resolve label to encrypt/decrypt frame. Label: " + name; 207 case ErrorForbiddenLabel: 208 return "Whilst you have the key for label " + name + " ; you are not allowed to use it."; 128 209 } 129 210 -
trunk/src/org/expeditee/gio/InputManager.java
r1164 r1415 306 306 protected final void distributeInputEvent(InputEvent event) 307 307 { 308 // if (event instanceof KBMInputEvent) { 309 // KBMInputEvent kEvent = (KBMInputEvent) event; 310 // if (kEvent.getKeyDown() != null) { 311 // System.err.println("distributeInputEvent:::" + kEvent.toString()); 312 // } 313 // } 314 308 315 // Allow listeners to optionally consume input before gesture translation 309 316 for (InputEventListener listener : _inputEventListeners) { -
trunk/src/org/expeditee/gio/TextLayoutManager.java
r1150 r1415 68 68 public float getLineWidth(Point p, Line[] lines) 69 69 { 70 float width = Float.MAX_VALUE;70 float width = (float) Integer.MAX_VALUE; 71 71 for(Line l : lines) { 72 72 // check for lines that cross over our y -
trunk/src/org/expeditee/gio/gesture/ExpediteeKBMGestureTranslator.java
r1413 r1415 7 7 import org.expeditee.gio.EcosystemManager; 8 8 import org.expeditee.gio.TimeoutQueue.TimeoutHandle; 9 import org.expeditee.gio.gesture.Gesture.GestureType; 9 10 import org.expeditee.gio.gesture.StandardGestureActions.StandardGestureType; 10 11 import org.expeditee.gio.gesture.data.ChangeColourGestureData; … … 100 101 return null; 101 102 } 103 102 104 //System.err.println("ExpediteeKBMGestureTranslator::" + details() + ": " + kbmEvent.getCharTyped()); 103 105 // Generate a INSERT_STRING gesture … … 130 132 addTranslator(new InputEventToGestureTranslator(InputType.KBM) 131 133 { 132 private static final int NO_CONSTRAINT = 0;134 //private static final int NO_CONSTRAINT = 0; 133 135 private SelectAreaGestureData _draggedFromData = null; 134 private int _constrainedDirection = NO_CONSTRAINT;136 //private int _constrainedDirection = NO_CONSTRAINT; 135 137 136 138 @Override … … 210 212 newMousePos.add(1, 1); 211 213 } else*/ { 212 _constrainedDirection = NO_CONSTRAINT;214 //_constrainedDirection = NO_CONSTRAINT; 213 215 newMousePos = kbmEvent.getMouseMove().getSecondEnd().clone(); 214 216 } … … 682 684 683 685 // Add the F10 -> TOGGLE_XRAY_MODE gesture recogniser 684 addTranslator(new InputEventToGestureTranslator(InputType.KBM) 685 {686 addTranslator(new InputEventToGestureTranslator(InputType.KBM) { 687 686 688 @Override 687 689 public String details() { return "F10 -> TOGGLE_XRAY_MODE"; } 688 689 @Override 690 public List<Gesture> onInputEvent(InputEvent event) { 691 // Cast to keyboard/mouse event 692 KBMInputEvent kbmEvent = (KBMInputEvent) event; 693 690 691 @Override 692 public List<Gesture> onInputEvent(InputEvent event) { 693 // Cast to keyboard/mouse event 694 KBMInputEvent kbmEvent = (KBMInputEvent) event; 695 694 696 // Must be pressing F10 to xray mode 695 if (kbmEvent.getKeyDown() != KBMInputEvent.Key.F10) { 696 return null; 697 } 698 699 // Return the gesture 700 if (kbmTranslator.isKeyDown(Key.SHIFT)) { 701 UndoGestureData data = new UndoGestureData(kbmTranslator.isKeyDown(Key.CTRL)); 702 return Gesture.single(StandardGestureActions.getInstance().gestureType(StandardGestureType.TOGGLE_SURROGATE_MODE), data); 703 } else { 704 return Gesture.single(StandardGestureActions.getInstance().gestureType(StandardGestureType.TOGGLE_XRAY_MODE), null); 705 } 697 if (kbmEvent.getKeyDown() != KBMInputEvent.Key.F10 || kbmTranslator.isKeyDown(Key.SHIFT)) { 698 return null; 699 } 700 701 return Gesture.single(StandardGestureActions.getInstance().gestureType(StandardGestureType.TOGGLE_XRAY_MODE), null); 702 } 703 }); 704 705 // Add the F10 -> CYCLE_SURROGATE_MODE gesture recogniser 706 addTranslator(new InputEventToGestureTranslator(InputType.KBM) { 707 @Override 708 public String details() { return "F10 -> CYCLE_SURROGATE_MODE"; } 709 710 @Override 711 public List<Gesture> onInputEvent(InputEvent event) { 712 // Case to keyboard/mouse event 713 KBMInputEvent kbmEvent = (KBMInputEvent) event; 714 715 // Must be pressing F10 to surrogate mode 716 if (kbmEvent.getKeyDown() != KBMInputEvent.Key.F10 || !kbmTranslator.isKeyDown(Key.SHIFT)) { 717 return null; 718 } 719 720 UndoGestureData data = new UndoGestureData(kbmTranslator.isKeyDown(Key.CTRL)); 721 return Gesture.single(StandardGestureActions.getInstance().gestureType(StandardGestureType.CYCLE_SURROGATE_MODE), data); 706 722 } 707 723 }); … … 2190 2206 return Gesture.single(vFormat); 2191 2207 } 2208 } 2209 }); 2210 2211 // Add the ENTER_CHAR_TYPED -> ACTIVATE BUTTON -> FORMAT gesture recogniser 2212 addTranslator(new InputEventToGestureTranslator(InputType.KBM) 2213 { 2214 @Override 2215 public String details() { return "ENTER_CHAR_TYPED -> ACTIVATE BUTTON"; } 2216 2217 @Override 2218 public List<Gesture> onInputEvent(InputEvent event) { 2219 // Cast to keyboard/mouse event 2220 KBMInputEvent kbmEvent = (KBMInputEvent) event; 2221 2222 if (kbmEvent.getKeyDown() != Key.ENTER) { 2223 return null; 2224 } 2225 2226 GestureType gestureType = StandardGestureActions.getInstance().gestureType(StandardGestureType.ACTIVATE_BUTTON); 2227 ItemSpecificGestureData data = new ClickGestureData(false); 2228 return Gesture.single(gestureType, data); 2192 2229 } 2193 2230 }); -
trunk/src/org/expeditee/gio/gesture/StandardGestureActions.java
r1413 r1415 54 54 import org.expeditee.gui.FreeItems; 55 55 import org.expeditee.gui.MessageBay; 56 import org.expeditee.gui.ItemsList; 56 57 import org.expeditee.gui.Vector; 57 58 import org.expeditee.io.ExpClipReader; … … 123 124 TOGGLE_ITEMS_MARK, // Show/hide the little circle indicating the item has a link and/or action 124 125 TOGGLE_XRAY_MODE, // F10 125 TOGGLE_SURROGATE_MODE, // Shift + F10126 CYCLE_SURROGATE_MODE, // Shift + F10 126 127 UNDO, 127 ZOOM 128 ZOOM, 129 ACTIVATE_BUTTON // Enter while over Item with _acceptsKeyboardEnter set to true 128 130 } 129 131 //@formatter:on … … 420 422 public void exec(Gesture gesture) { 421 423 InsertStringGestureData data = (InsertStringGestureData) gesture.getData(); 422 for (char c : data.getString().toCharArray()) { 424 425 Item currentItem = data.getCurrentItem(); 426 char[] charArray = data.getString().toCharArray(); 427 428 if (currentItem != null) { 429 // If we are over a item taht accepts keyboard enter and the only 430 // character being entered is the enter key then we do not insert it. 431 boolean keyboardEnter = data.getCurrentItem().acceptsKeyboardEnter(); 432 if (keyboardEnter && charArray.length == 1 && charArray[0] == (char) 10) { 433 return; 434 } 435 } 436 437 for (char c : charArray) { 423 438 processChar(c, data.isShiftDown()); 424 439 } … … 967 982 }); 968 983 969 setGestureAction(gestureType(StandardGestureType.TOGGLE_SURROGATE_MODE), new GestureAction() { 984 // Set the ACTIVATE BUTTON action 985 setGestureAction(gestureType(StandardGestureType.ACTIVATE_BUTTON), new GestureAction() { 986 @Override 987 public void exec(Gesture gesture) { 988 ItemSpecificGestureData data = (ItemSpecificGestureData) gesture.getData(); 989 if (data.getCurrentItem().acceptsKeyboardEnter()) { 990 getGestureAction(Gesture.GestureType.get("CLICK")).exec(gesture); 991 } 992 } 993 }); 994 995 setGestureAction(gestureType(StandardGestureType.CYCLE_SURROGATE_MODE), new GestureAction() { 970 996 @Override 971 997 public void exec(Gesture gesture) { … … 1745 1771 if (_lastHoldsHighlight) { 1746 1772 _lastHoldsHighlight = false; 1747 for (Item i : DisplayController.getCurrentFrame().get Items()) {1773 for (Item i : DisplayController.getCurrentFrame().getSortedItems()) { 1748 1774 if (i.isHighlighted() && i != on) { 1749 1775 FrameGraphics.changeHighlightMode(i, Item.HighlightMode.None); … … 1824 1850 1825 1851 if (checkEnclosure) { 1826 ItemUtils.EnclosedCheck(toAnchor.getParentOrCurrentFrame().get Items());1852 ItemUtils.EnclosedCheck(toAnchor.getParentOrCurrentFrame().getSortedItems()); 1827 1853 DisplayController.requestRefresh(true); 1828 1854 } … … 1936 1962 } 1937 1963 } else if (!toUndo.contains(i)) { 1938 if (addToUndo) 1939 { 1964 if (addToUndo) { 1940 1965 toUndo.add(i); // Why was is this a copy 1941 1966 } … … 1951 1976 // the current frame as well as the overlay frame 1952 1977 Frame currentFrame = DisplayController.getCurrentFrame(); 1953 currentFrame.addToUndoDelete( itemList);1978 currentFrame.addToUndoDelete(new ItemsList(itemList)); 1954 1979 itemList.clear(); 1955 1980 if (bReparse) { … … 3268 3293 SessionStats.DeletedItems(toUndo); 3269 3294 if (parent != null) { 3270 parent.addToUndoDelete( toUndo);3295 parent.addToUndoDelete(new ItemsList(toUndo)); 3271 3296 parent.removeAllItems(toUndo); // toDelete.getConnected() 3272 3297 } … … 3610 3635 DisplayController.setCursorPosition(toDisconnect.getPosition(), false); 3611 3636 pickup(newPoint); 3612 ItemUtils.EnclosedCheck(toDisconnect.getParentOrCurrentFrame().get Items());3637 ItemUtils.EnclosedCheck(toDisconnect.getParentOrCurrentFrame().getSortedItems()); 3613 3638 } 3614 3639 } … … 3926 3951 mergee.getParent().setChanged(true); 3927 3952 3928 ItemUtils.EnclosedCheck(mergee.getParent().get Items());3953 ItemUtils.EnclosedCheck(mergee.getParent().getSortedItems()); 3929 3954 // Mike: Why does parse frame have to be called?!? 3930 3955 FrameUtils.Parse(mergee.getParent()); … … 4386 4411 int mouseY = position.getY(); 4387 4412 // System.out.println(mouseX + "," + mouseY); 4388 for (Item i : DisplayController.getCurrentFrame().get Items()) {4413 for (Item i : DisplayController.getCurrentFrame().getSortedItems()) { 4389 4414 // System.out.println(i.getName().toString()); 4390 4415 if (i instanceof Text) { -
trunk/src/org/expeditee/gio/input/InputEventToGestureTranslatorSet.java
r1127 r1415 57 57 if (_recognisers.isEmpty()) 58 58 return null; 59 60 // if (event instanceof KBMInputEvent) { 61 // KBMInputEvent kEvent = (KBMInputEvent) event; 62 // if (kEvent.getKeyDown() != null) { 63 // System.err.println("onInputEvent:::" + kEvent.toString()); 64 // } 65 // } 59 66 60 67 // Only interested in monitored events -
trunk/src/org/expeditee/gio/input/KBMInputEvent.java
r1097 r1415 37 37 BACKSPACE, 38 38 TAB, 39 ENTER, 39 40 A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z 40 41 } -
trunk/src/org/expeditee/gio/input/StandardInputEventListeners.java
r1097 r1415 52 52 53 53 @Override 54 public boolean onInputEvent(InputEvent event) 55 { 54 public boolean onInputEvent(InputEvent event) { 56 55 // Only interested in keyboard/mouse events 57 56 if (event.getInputType() != InputType.KBM) return false; … … 77 76 } 78 77 79 public boolean isKeyDown(Key key) 80 { 78 public boolean isKeyDown(Key key) { 81 79 return (key != null) && (_keyState[key.ordinal()] == Boolean.TRUE); 82 80 } 83 81 84 public boolean isMouseButtonDown(MouseButton button) 85 { 82 public boolean isMouseButtonDown(MouseButton button) { 86 83 return (button != null) && (_mouseState[button.ordinal()] == Boolean.TRUE); 87 84 } 88 85 89 public boolean isOnlyMouseButtonDown(MouseButton button) 90 { 86 public boolean isOnlyMouseButtonDown(MouseButton button) { 91 87 if (button == null) return false; 92 88 … … 98 94 } 99 95 100 public boolean isAnyMouseButtonDown() 101 { 96 public boolean isAnyMouseButtonDown() { 102 97 for (MouseButton button : MouseButton.values()) { 103 98 if (isMouseButtonDown(button)) return true; -
trunk/src/org/expeditee/gio/javafx/JavaFXConversions.java
r1144 r1415 137 137 case Y: return org.expeditee.gio.input.KBMInputEvent.Key.Y; 138 138 case Z: return org.expeditee.gio.input.KBMInputEvent.Key.Z; 139 case ENTER: return org.expeditee.gio.input.KBMInputEvent.Key.ENTER; 139 140 default: return null; 140 141 } -
trunk/src/org/expeditee/gio/swing/SwingConversions.java
r1144 r1415 350 350 case java.awt.event.KeyEvent.VK_Y: return org.expeditee.gio.input.KBMInputEvent.Key.Y; 351 351 case java.awt.event.KeyEvent.VK_Z: return org.expeditee.gio.input.KBMInputEvent.Key.Z; 352 case java.awt.event.KeyEvent.VK_ENTER: return org.expeditee.gio.input.KBMInputEvent.Key.ENTER; 352 353 default: return null; 353 354 } -
trunk/src/org/expeditee/gio/swing/SwingInputManager.java
r1248 r1415 4 4 import java.awt.Color; 5 5 import java.awt.Dimension; 6 import java.awt.KeyEventDispatcher; 7 import java.awt.KeyboardFocusManager; 6 8 import java.awt.MouseInfo; 7 9 import java.awt.Robot; … … 33 35 import org.expeditee.gio.input.InputEvent.InputType; 34 36 import org.expeditee.gio.input.KBMInputEvent; 37 import org.expeditee.gio.input.KBMInputEvent.Key; 38 import org.expeditee.gio.input.StandardInputEventListeners; 35 39 import org.expeditee.gui.Popup; 36 40 import org.expeditee.gui.PopupManager; … … 38 42 39 43 public class SwingInputManager extends InputManager implements ComponentListener, WindowListener, WindowStateListener, 40 KeyListener, MouseListener, MouseMotionListener, MouseWheelListener {44 KeyListener, MouseListener, MouseMotionListener, MouseWheelListener, KeyEventDispatcher { 41 45 /** Singleton instance. */ 42 46 private static SwingInputManager _instance; … … 73 77 // Sign up to receive input as events 74 78 SwingGraphicsManager graphicsManager = SwingMiscManager.getIfUsingSwingGraphicsManager(); 75 if (graphicsManager != null) { 79 if (graphicsManager != null) { 76 80 graphicsManager.addWindowListener(swingInputManager); 77 81 graphicsManager.addWindowStateListener(swingInputManager); … … 91 95 graphicsManager.getGlassPane().setVisible(true); 92 96 graphicsManager.getContentPane().setBackground(Color.WHITE); 93 graphicsManager.getContentPane().setFocusTraversalKeysEnabled(false);94 }97 } 98 graphicsManager.getContentPane().setFocusTraversalKeysEnabled(false); 95 99 96 100 // Set up the robot (for controlling the mouse) … … 111 115 }); 112 116 _timer.setRepeats(false); 117 118 // AWTEventListener[] listeners = Toolkit.getDefaultToolkit().getAWTEventListeners(); 119 // for (AWTEventListener listener: listeners) { 120 // System.err.println(listener); 121 // F10FriendlyKeyboardFocusManager keyboardManager = new F10FriendlyKeyboardFocusManager(listener); 122 // KeyboardFocusManager.setCurrentKeyboardFocusManager(keyboardManager); 123 // } 124 // 125 // F10FriendlyKeyboardFocusManager keyboardManager = new F10FriendlyKeyboardFocusManager(this); 126 // KeyboardFocusManager.setCurrentKeyboardFocusManager(keyboardManager); 127 128 KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(this); 113 129 } 114 130 … … 222 238 @Override 223 239 public void mouseWheelMoved(MouseWheelEvent e) { 240 //ensureShiftAltStateCorrect(e); 224 241 // Give widgets first whack at input 225 242 distributeNativeInput(e); … … 247 264 @Override 248 265 public void mouseMoved(MouseEvent e) { 266 //ensureShiftAltStateCorrect(e); 267 249 268 // Update the cursor position 250 269 updateCursorPosition(e.getX(), e.getY()); … … 271 290 @Override 272 291 public void mouseClicked(MouseEvent e) { 292 //ensureShiftAltStateCorrect(e); 273 293 // Give widgets first whack at input 274 294 distributeNativeInput(e); … … 282 302 @Override 283 303 public void mousePressed(MouseEvent e) { 304 //ensureShiftAltStateCorrect(e); 284 305 mouseAction(e, true); 285 306 } … … 287 308 @Override 288 309 public void mouseReleased(MouseEvent e) { 310 //ensureShiftAltStateCorrect(e); 289 311 mouseAction(e, false); 290 312 } … … 324 346 } catch (Exception exception) { 325 347 System.err.println("SwingInputManager::mouseAction: " + exception.getMessage()); 348 exception.printStackTrace(); 326 349 } 327 350 } … … 349 372 @Override 350 373 public void keyTyped(KeyEvent e) { 351 //System.err.println("SwingInputManager::keyTyped::KeyEvent: " + e.getKeyChar()); 374 //System.err.println("SwingInputManager::keyTyped::" + KeyEvent.getKeyText(e.getKeyCode())); 375 //ensureShiftAltStateCorrect(e); 376 352 377 // Give widgets first whack at input 353 378 distributeNativeInput(e); 354 379 if (e.isConsumed()) { 355 //System.err.println("SwingInputManager::keyTyped::Widget/Popup Consumed KeyEvent"); 356 return; 357 } 358 380 return; 381 } 382 359 383 try { 360 384 // Ignore escape character and control characters … … 376 400 @Override 377 401 public void keyPressed(KeyEvent e) { 402 //System.err.println("SwingInputManager::keyPressed::" + KeyEvent.getKeyText(e.getKeyCode())); 403 //ensureShiftAltStateCorrect(e); 378 404 keyAction(e, true); 379 405 } … … 381 407 @Override 382 408 public void keyReleased(KeyEvent e) { 409 //System.err.println("SwingInputManager::keyReleased::" + KeyEvent.getKeyText(e.getKeyCode())); 383 410 keyAction(e, false); 384 411 } 412 413 // private void ensureShiftAltStateCorrect(java.awt.event.InputEvent inputEvent) { 414 //// Component source = (Component) e.getSource(); 415 //// int id = KeyEvent.KEY_RELEASED; 416 //// long when = System.currentTimeMillis(); 417 //// int keyCode = KeyEvent.VK_UNDEFINED; 418 //// char keyChar = KeyEvent.CHAR_UNDEFINED; 419 // 420 //// int modifiers = (e.getModifiers() & ~KeyEvent.SHIFT_DOWN_MASK); 421 //// KeyEvent event = new KeyEvent(source, id, when, modifiers, keyCode, keyChar); 422 //// Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(event); 423 // 424 // boolean shiftIsDownInRecordedState = StandardInputEventListeners.kbmStateListener.isKeyDown(Key.SHIFT); 425 // boolean shiftIsDownEventState = inputEvent.isShiftDown(); 426 // if (shiftIsDownInRecordedState && !shiftIsDownEventState) { 427 // try { 428 // // Create an input event 429 // InputEvent event = new KBMInputEvent(KBMInputEvent.EventType.KEY_UP, KBMInputEvent.Key.SHIFT); 430 // System.err.println("SwingInputManager::ensureShiftAltStateCorrect::Sending followup Shift Up"); 431 // 432 // // Translate and perform the input 433 // distributeInputEvent(event); 434 // } catch (Exception exception) { 435 // System.err.println(exception.getMessage()); 436 // } 437 // } 438 439 // System.err.println("SwingInputManager::ensureShiftAltStateCorrect::datastructure shift down: " + shiftIsDownInRecordedState); 440 // if (shiftIsDownInRecordedState != e.isShiftDown() && !e.isShiftDown()) { 441 // System.err.println("SwingInputManager::ensureShiftAltStateCorrect::Sending shift up event."); 442 // int modifiers = (e.getModifiers() & ~KeyEvent.SHIFT_DOWN_MASK); 443 // KeyEvent event = new KeyEvent(source, id, when, modifiers, keyCode, keyChar); 444 // Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(event); 445 // } 446 447 // boolean altIsDown = StandardInputEventListeners.kbmStateListener.isKeyDown(Key.ALT); 448 // if (altIsDown != e.isAltDown() && !e.isAltDown()) { 449 // System.err.println("SwingInputManager::ensureShiftAltStateCorrect::Sending alt up event."); 450 // int modifiers = (e.getModifiers() & ~KeyEvent.ALT_DOWN_MASK); 451 // KeyEvent event = new KeyEvent(source, id, when, modifiers, keyCode, keyChar); 452 // Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(event); 453 // } 454 // } 385 455 386 456 /** Handles key pressed/released events. */ 387 457 private void keyAction(KeyEvent e, boolean down) { 388 //System.err.println("SwingInputManager::keyAction::KeyEvent: " + e.getKeyChar());389 458 // Give widgets first whack at input 390 459 distributeNativeInput(e); 391 460 if (e.isConsumed()) { 392 //System.err.println("SwingInputManager::keyAction::Was consumed: " + e.isConsumed()); 393 return; 394 } 395 //System.err.println("SwingInputManager::keyAction::Was consumed: " + e.isConsumed()); 396 461 return; 462 } 463 397 464 KBMInputEvent.Key key = SwingConversions.fromSwingVirtualKey(e.getKeyCode()); 398 465 if (key == null) { 399 466 return; 400 467 } 401 468 402 469 try { 403 470 // Create an input event … … 424 491 /** Forwards the given input event to the listener if it is listening for it. */ 425 492 private void forwardNativeInputToListener(Object listener, java.awt.event.InputEvent event) { 426 //System.err.println("SwingInputManager::forwardNativeInputToListener");427 493 if (listener == null || event == null) { 428 494 return; 429 495 } 430 //System.err.println("SwingInputManager::forwardNativeInputToListener::Recieving input: " + event.toString());496 431 497 if (listener instanceof KeyListener && event instanceof KeyEvent) { 432 498 433 499 KeyListener keyListener = (KeyListener) listener; 434 500 KeyEvent ke = (KeyEvent) event; 435 501 436 502 switch (event.getID()) { 437 503 case KeyEvent.KEY_PRESSED: … … 442 508 return; 443 509 case KeyEvent.KEY_TYPED: 444 //System.err.println("SwingInputManager::forwardNativeInputToListener::Recieving key typed: " + event.toString());445 510 keyListener.keyTyped(ke); 446 511 return; … … 632 697 633 698 } 699 700 @Override 701 public boolean dispatchKeyEvent(KeyEvent e) { 702 if (e.getKeyCode() == KeyEvent.VK_F10) { 703 if (KeyEvent.KEY_PRESSED == e.getID()) { 704 keyPressed(e); 705 } else if (KeyEvent.KEY_RELEASED == e.getID()) { 706 keyReleased(e); 707 } else if (KeyEvent.KEY_TYPED == e.getID()) { 708 keyTyped(e); 709 } else { 710 System.err.println("SwingInputManager::dispatchKeyEvent::Found Key that is not pressed, " 711 + "released or typed. What is it? " + e.getID()); 712 } 713 return true; 714 } 715 return false; 716 } 634 717 } -
trunk/src/org/expeditee/gio/swing/SwingTextLayoutManager.java
r1206 r1415 262 262 } 263 263 264 java.awt.font.TextLayout layout = lineBreaker.nextLayout(width, end, dontBreakWords); 264 java.awt.font.TextLayout layout = null; 265 266 try { 267 layout = lineBreaker.nextLayout(width, end, dontBreakWords); 268 } catch (ArrayIndexOutOfBoundsException e) { 269 e.printStackTrace(); 270 } 265 271 266 272 // If it's impossible to layout any more text without breaking a word, just do it -
trunk/src/org/expeditee/gui/AttributeUtils.java
r1405 r1415 19 19 package org.expeditee.gui; 20 20 21 import java.lang.reflect.Field; 21 22 import java.lang.reflect.InvocationTargetException; 22 23 import java.lang.reflect.Method; … … 331 332 _Attrib.put("TabIndex", Text.class.getMethod("getTabIndex"), 332 333 Text.class.getMethod("setTabIndex", pInt)); 334 _Attrib.put("EnterClick", Item.class.getMethod("acceptsKeyboardEnter"), 335 Item.class.getMethod("setAcceptsEnter", pBool)); 333 336 334 337 // Aliases for attribute setting … … 566 569 sb.deleteCharAt(sb.length() - 1); 567 570 o = sb.toString(); 568 } else if (o instanceof Boolean) { 569 // true is the default for boolean values 570 if (((Boolean) o).booleanValue()) { 571 return null; 571 } else if (o instanceof Boolean) { 572 try { 573 Class<?> parentClass = item.getClass(); 574 Field defaultValueField = parentClass.getField(a.getter.getName() + "Default"); 575 boolean defaultValue = defaultValueField.getBoolean(null); 576 if (defaultValue == (boolean) o) { 577 return null; 578 } 579 } catch (IllegalArgumentException e) { 580 e.printStackTrace(); 581 } catch (SecurityException e) { 582 e.printStackTrace(); 583 } catch (NoSuchFieldException e) { 584 // true is the default for boolean values when no other default is provided 585 if ((boolean) o) { 586 return null; 587 } 588 } catch (IllegalAccessException e) { 589 e.printStackTrace(); 572 590 } 573 591 } -
trunk/src/org/expeditee/gui/Browser.java
r1329 r1415 274 274 if (!AuthenticatorBrowser.isAuthenticationRequired() && UserSettings.PublicAndPrivateResources) { 275 275 String userName = UserSettings.ProfileName.get(); 276 FrameIO.setupPersonalResources(userName); 276 if (!FrameIO.personalResourcesExist(userName)) { 277 FrameIO.setupPersonalResources(userName); 278 } 277 279 } 278 280 // Listen for save status to display during and after runtime -
trunk/src/org/expeditee/gui/DisplayController.java
r1413 r1415 583 583 // frames differ. 584 584 if (getCurrentFrame() != null && !bothSidesHaveSameFrame()) { 585 for (Item i : getCurrentFrame().get Items()) {585 for (Item i : getCurrentFrame().getSortedItems()) { 586 586 i.onParentStateChanged(new ItemParentStateChangedEvent(getCurrentFrame(), ItemParentStateChangedEvent.EVENT_TYPE_HIDDEN)); 587 587 } … … 590 590 591 591 // BROOK : TODO... overlays and loadable widgets 592 for (Item i : getCurrentFrame().get Items()) {592 for (Item i : getCurrentFrame().getSortedItems()) { 593 593 i.onParentStateChanged(new ItemParentStateChangedEvent(getCurrentFrame(), ItemParentStateChangedEvent.EVENT_TYPE_SHOWN)); 594 594 } … … 671 671 } 672 672 673 for (Item i : frame.get Items()) {673 for (Item i : frame.getSortedItems()) { 674 674 i.onParentStateChanged(new ItemParentStateChangedEvent(frame, 675 675 ItemParentStateChangedEvent.EVENT_TYPE_SHOWN)); … … 925 925 StandardGestureActions.setHighlightHold(true); 926 926 927 for (Item i : frame.get Items()) {927 for (Item i : frame.getSortedItems()) { 928 928 if (i.getLink() != null && i.getAbsoluteLink().toLowerCase().equals(oldFrame)) { 929 929 if (i.getHighlightMode() != Item.HighlightMode.Normal) { … … 1131 1131 } else { 1132 1132 ToggleAudienceMode(); 1133 ItemUtils.UpdateConnectedToAnnotations(current.get Items());1133 ItemUtils.UpdateConnectedToAnnotations(current.getSortedItems()); 1134 1134 for (Overlay o : current.getOverlays()) { 1135 ItemUtils.UpdateConnectedToAnnotations(o.Frame.get Items());1135 ItemUtils.UpdateConnectedToAnnotations(o.Frame.getSortedItems()); 1136 1136 } 1137 1137 for (Vector v : current.getVectorsDeep()) { 1138 ItemUtils.UpdateConnectedToAnnotations(v.Frame.get Items());1138 ItemUtils.UpdateConnectedToAnnotations(v.Frame.getSortedItems()); 1139 1139 } 1140 1140 } … … 1207 1207 * This results in the Frame being re-parsed and repainted. 1208 1208 */ 1209 public static void ToggleXRayMode() 1210 { 1209 public static void ToggleXRayMode() { 1211 1210 // Turn off x-ray mode if it is on 1212 1211 if (_audienceMode) { -
trunk/src/org/expeditee/gui/Frame.java
r1414 r1415 77 77 * 78 78 */ 79 public class Frame /*implements Cloneable*/{79 public class Frame { 80 80 81 81 /** The frame number to indicate this is a virtual frame. */ … … 126 126 127 127 private boolean _isLocal = true; 128 129 private boolean _sorted = true;130 128 131 129 /** Whether the frame has changed and therefore needs saving. */ … … 139 137 private Stack<History> _redo = new Stack<History>(); 140 138 141 private List<Item> _body = new ArrayList<Item>(); 142 private List<Item> _bodyHiddenDueToPermissions = new ArrayList<Item>(); 143 private List<Item> _surrogates = new ArrayList<Item>(); 139 private ItemsList _body = new ItemsList(); 140 private ItemsList _bodyHiddenDueToPermissions = new ItemsList(); 141 private ItemsList _primaryItemsBody = new ItemsList(); 142 private ItemsList _surrogateItemsBody = new ItemsList(); 143 144 //private List<Item> _body = new ArrayList<Item>(); 145 //private List<Item> _bodyHiddenDueToPermissions = new ArrayList<Item>(); 146 //private List<Item> _primaryItemsBody = new ArrayList<Item>(); 147 //private List<Item> _surrogateItemsBody = new ArrayList<Item>(); 144 148 145 149 // for drawing purposes … … 184 188 private String _groupFrameName; 185 189 private Frame _groupFrame = null; 190 191 public enum BodyType { 192 BodyDisplay, PrimaryBody, SurrogateBody; 193 } 186 194 187 195 /** Default constructor, nothing is set. */ 188 196 public Frame() { 189 197 } 190 191 // public Frame clone() { 192 // Frame clone = new Frame(); 193 // for (Item i: this._body) { 194 // Item copy = i.copy(); 195 // copy.setID(i.getID()); 196 // clone._body.add(copy); 197 // } 198 // for(Item i: this._bodyHiddenDueToPermissions) { 199 // Item copy = i.copy(); 200 // copy.setID(i.getID()); 201 // clone._bodyHiddenDueToPermissions.add(i); 202 // } 203 // if (this._frameName != null) { 204 // clone._frameName = this._frameName.copy(); 205 // } 206 // for(Overlay key: this._overlays.keySet()) { 207 // clone._overlays.put(key, this._overlays.get(key)); 208 // } 209 // for(Vector v: this._vectors) { 210 // clone._vectors.add(v); 211 // } 212 // for (Item i: this._interactableItems) { 213 // clone._interactableItems.add(i.copy()); 214 // } 215 // for (Item i: this._overlayItems) { 216 // clone._overlayItems.add(i.copy()); 217 // } 218 // for (Item i: this._vectorItems) { 219 // clone._vectorItems.add(i.copy()); 220 // } 221 // clone._frameData = this._frameData; 222 // clone._frameset = this._frameset; 223 // clone._number = this._number; 224 // clone._version = this._version; 225 // clone._permissionTriple = this._permissionTriple; 226 // clone._owner = this._owner; 227 // clone._creationDate = this._creationDate; 228 // clone._modifiedUser = this._modifiedUser; 229 // clone._modifiedDate = this._modifiedDate; 230 // clone._modifiedDatePrecise = this._modifiedDatePrecise; 231 // clone._frozenDate = this._frozenDate; 232 // clone._background = this._background; 233 // clone._foreground = this._foreground; 234 // clone.path = this.path; 235 // clone._isLocal = this._isLocal; 236 // clone._sorted = this._sorted; 237 // clone._change = this._change; 238 // clone._saved = this._saved; 239 // clone._lineCount = this._lineCount; 240 // clone._itemCount = this._itemCount; 241 // clone._buffer = this._buffer; 242 // clone._validBuffer = this._validBuffer; 243 // clone._activeTime = (Time) this._activeTime.clone(); 244 // clone._darkTime = (Time) this._darkTime.clone(); 245 // clone._dotTemplate = this._dotTemplate.copy(); 246 // 247 // return clone; 248 // } 249 250 public boolean isReadOnly() 251 { 198 199 public boolean isReadOnly() { 252 200 return !_frameName.hasPermission(UserAppliedPermission.full) && !_protectionChanged; 253 201 } 254 202 255 public void reset() 256 { 203 public void reset() { 257 204 refreshItemPermissions(UserAppliedPermission.full); 258 205 resetDot(); … … 403 350 * @return The list of Item objects that are on this Frame. 404 351 */ 405 public List<Item> getItems(boolean visible) 406 { 407 if (!_sorted) { 408 for(int i = 0; i < _body.size();) { 409 if(_body.get(i) == null) { 410 _body.remove(i); 411 } else { 412 i++; 413 } 414 } 415 Collections.sort(_body); 416 _sorted = true; 417 } 418 352 public List<Item> getSortedItems(boolean requireVisible) { 353 ItemsList listToLoopOver = _body; 354 listToLoopOver.sort(); 355 return getItems(requireVisible, listToLoopOver); 356 } 357 358 public List<Item> getItems(boolean requireVisible, ItemsList listToLoopOver) { 419 359 List<Item> items = new ArrayList<Item>(); 420 360 421 for (Item i : _body) {361 for (Item i: listToLoopOver) { 422 362 if (i == null) { 423 363 continue; 424 364 } 425 365 426 if ( i.isVisible() || (!visible && !i.isDeleted())) {366 if (meetsVisibilityRequirements(requireVisible, i)) { 427 367 items.add(i); 428 368 } … … 431 371 return items; 432 372 } 433 373 434 374 /** TODO: Comment. cts16 */ 435 public List<Item> get Items()436 { 437 return get Items(false);375 public List<Item> getSortedItems() 376 { 377 return getSortedItems(false); 438 378 } 439 379 … … 443 383 * @return True if this frame contains i. 444 384 */ 445 public boolean containsItem(Item i) 446 { 385 public boolean containsItem(Item i) { 447 386 if (i == null) { 448 387 throw new NullPointerException("i"); 449 } 450 388 } 451 389 return _body.contains(i); 452 390 } … … 468 406 List<Text> bodyTextItems = new ArrayList<Text>(); 469 407 470 for (Item i : get Items(true)) {408 for (Item i : getSortedItems(true)) { 471 409 // only add up normal body text items 472 410 if ((i instanceof Text) && ((includeAnnotations && !((Text) i).isSpecialAnnotation()) || !i.isAnnotation()) && !i.isLineEnd()) { … … 483 421 { 484 422 Collection<Item> items = new ArrayList<Item>(); 485 for (Item i : get Items(true)) {423 for (Item i : getSortedItems(true)) { 486 424 // only add up normal body text items 487 425 if (!i.isAnnotation()) { … … 505 443 public Item getLastNonAnnotationTextItem() 506 444 { 507 List<Item> items = get Items();445 List<Item> items = getSortedItems(); 508 446 509 447 // find the last non-annotation text item … … 910 848 * The date to set as the last frozen date. 911 849 */ 912 public void setFrozenDate(String date) 850 public void setFrozenDate(String date) { 913 851 _frozenDate = date; 914 852 } 915 853 916 public void setResort(boolean value) 917 { 918 _sorted = !value; 854 public void invalidateSorted() { 855 _body.invalidateSorted(); 919 856 } 920 857 … … 925 862 * The Item to add to this Frame. 926 863 */ 927 public void addItem(Item item) 928 { 864 public void addItem(Item item) { 929 865 addItem(item, true); 930 866 } 931 867 932 public void addItem(Item item, boolean recalculate) 933 { 934 if (item == null || item.equals(_frameName) || _body.contains(item)) { 868 public void addItem(Item item, boolean recalculate) { 869 if (item == null) { return; } 870 871 addItem(item, recalculate, _body); 872 if (item.isSurrogate()) { 873 addItem(item, recalculate, _surrogateItemsBody); 874 } else { 875 addItem(item, recalculate, _primaryItemsBody); 876 } 877 } 878 879 protected void addItem(Item item, boolean recalculate, ItemsList list) { 880 if (item == null || item.equals(_frameName) || list.contains(item)) { 935 881 return; 936 882 } … … 948 894 _itemCount = Math.max(_itemCount, item.getID()); 949 895 950 _body.add(item);896 list.add(item); 951 897 item.setParent(this); 952 898 item.setFloating(false); // esnure that it is anchored … … 959 905 item.setPosition(item.getPosition()); 960 906 } 961 962 _sorted = false;907 908 list.invalidateSorted(); 963 909 964 910 // item.setMaxWidth(FrameGraphics.getMaxFrameSize().width); … … 983 929 } 984 930 985 public void addToSurrogates (Item surrogate) {986 this._surrogates.add(surrogate);931 public void addToSurrogatesOnLoad(Item surrogate, Item parent) { 932 parent.addToSurrogates(surrogate); 987 933 } 988 934 … … 991 937 boolean bReparse = false; 992 938 993 for (Item i : get Items()) {939 for (Item i : getSortedItems()) { 994 940 Integer anchorLeft = i.getAnchorLeft(); 995 941 Integer anchorRight = i.getAnchorRight(); … … 1039 985 } 1040 986 1041 public void addAllItems(Collection<Item> toAdd) 1042 { 987 public void addAllItems(Collection<Item> toAdd) { 988 addAllItems(toAdd, _body); 989 addAllItems(toAdd, _primaryItemsBody); 990 } 991 992 protected void addAllItems(Collection<Item> toAdd, ItemsList list) { 1043 993 for (Item i : toAdd) { 1044 994 // If an annotation is being deleted clear the annotation list … … 1047 997 } 1048 998 // TODO Improve efficiency when addAll is called 1049 addItem(i); 1050 } 1051 } 1052 1053 public void removeAllItems(Collection<Item> toRemove) 1054 { 999 addItem(i, true, list); 1000 } 1001 } 1002 1003 public void removeAllItems(Collection<Item> toRemove) { 1055 1004 for (Item i : toRemove) { 1056 1005 // If an annotation is being deleted clear the annotation list … … 1066 1015 } 1067 1016 1068 public void removeItem(Item item, boolean recalculate) 1069 { 1017 public void removeItem(Item item, boolean recalculate) { 1018 removeItem(item, recalculate, _body); 1019 if (item.isSurrogate()) { 1020 removeItem(item, recalculate, _surrogateItemsBody); 1021 } else { 1022 removeItem(item, recalculate, _primaryItemsBody); 1023 } 1024 } 1025 1026 protected void removeItem(Item item, boolean recalculate, ItemsList toRemoveFrom) { 1070 1027 // If an annotation is being deleted clear the annotation list 1071 1028 if (item.isAnnotation()) { … … 1073 1030 } 1074 1031 1075 if ( _body.remove(item)) {1032 if (toRemoveFrom.remove(item)) { 1076 1033 change(); 1077 1034 // Remove widgets from the widget list … … 1098 1055 * @param type The type of event that occurred 1099 1056 */ 1100 private void addToUndo(Collection<Item> items, History.Type type) 1101 { 1057 private void addToUndo(ItemsList items, History.Type type) { 1102 1058 if (items.size() < 1) { 1103 1059 return; … … 1107 1063 } 1108 1064 1109 public void addToUndoDelete(Collection<Item> items) 1110 { 1065 public void addToUndoDelete(ItemsList items) { 1111 1066 addToUndo(items, History.Type.deletion); 1112 1067 } 1113 1068 1114 public void addToUndoMove(Collection<Item> items) 1115 { 1069 public void addToUndoMove(ItemsList items) { 1116 1070 addToUndo(items, History.Type.movement); 1117 1071 } … … 1147 1101 break; 1148 1102 case movement: 1149 List<Item> changed = new LinkedList<Item>(_body);1150 changed.retain All(undo.items);1103 ItemsList changed = new ItemsList(_body); 1104 changed.retainHistory(undo.items); 1151 1105 _redo.push(new History(changed, History.Type.movement)); 1152 1106 for(Item i : undo.items) { … … 1207 1161 break; 1208 1162 case movement: 1209 List<Item> changed = new LinkedList<Item>(_body);1210 changed.retain All(redo.items);1163 ItemsList changed = new ItemsList(_body); 1164 changed.retainHistory(redo.items); 1211 1165 _undo.push(new History(changed, History.Type.movement)); 1212 1166 for(Item i : redo.items) { … … 1677 1631 { 1678 1632 for (Overlay o : _overlays.keySet()) { 1679 for (Item i : o.Frame.get Items()) {1633 for (Item i : o.Frame.getSortedItems()) { 1680 1634 i.onParentStateChanged(new ItemParentStateChangedEvent( 1681 1635 this, … … 1695 1649 _overlays.remove(o); 1696 1650 1697 for (Item i : f.get Items()) {1651 for (Item i : f.getSortedItems()) { 1698 1652 _overlayItems.remove(i); 1699 1653 i.onParentStateChanged(new ItemParentStateChangedEvent( … … 1788 1742 } 1789 1743 1790 List<Item> copies = ItemUtils.CopyItems(toMergeWith.get Items());1744 List<Item> copies = ItemUtils.CopyItems(toMergeWith.getSortedItems()); 1791 1745 copies.remove(toMergeWith.getNameItem()); 1792 1746 … … 1834 1788 public void clear(boolean keepAnnotations) 1835 1789 { 1836 List<Item> newBody = new ArrayList<Item>(0);1790 ItemsList newBody = new ItemsList(); 1837 1791 1838 1792 Item title = getTitleItem(); … … 2010 1964 // reset attributes 2011 1965 dot.setParent(this); 1966 dot.setOwner(template.getOwner()); 2012 1967 return dot; 2013 1968 } … … 2018 1973 2019 1974 // check for an updated template... 2020 for (Item i : this.get Items()) {1975 for (Item i : this.getSortedItems()) { 2021 1976 if (ItemUtils.startsWithTag(i, templateTag)) { 2022 1977 t = (Text) i; … … 2032 1987 t = defaultTemplate; 2033 1988 } 2034 1989 2035 1990 // If the item is linked apply any attribute pairs on the child frame 2036 1991 String link = t.getAbsoluteLink(); … … 2038 1993 // need to get link first because copy doesnt copy the link 2039 1994 t = t.copy(); 1995 // If the template does not have a owner then it should be set to the current user. 1996 if (t.getOwner() == null) { 1997 t.setOwner(UserSettings.UserName.get()); 1998 } 2040 1999 t.setTooltip(null); 2041 2000 if (link != null) { … … 2202 2161 public boolean moveMouseToTextItem(int index) 2203 2162 { 2204 List<Item> items = get Items();2163 List<Item> items = getSortedItems(); 2205 2164 int itemsFound = 0; 2206 2165 for (int i = 0; i < items.size(); i++) { … … 2228 2187 public boolean moveMouseToDefaultLocation() 2229 2188 { 2230 List<Item> items = get Items();2189 List<Item> items = getSortedItems(); 2231 2190 2232 2191 for (Item it : items) { … … 2527 2486 public List<Item> getVisibleItems() 2528 2487 { 2529 return get Items(true);2488 return getSortedItems(true); 2530 2489 } 2531 2490 … … 2559 2518 * @return the list of items to be saved to a text file 2560 2519 */ 2561 public List<Item> getItemsToSave() {2520 /*public List<Item> getItemsToSave() { 2562 2521 if (!_sorted) { 2563 2522 Collections.sort(_body); … … 2599 2558 2600 2559 return toSave; 2601 } 2602 2603 public List<Item> getSurrogateItemsToSave() { 2604 List<Item> surrogates = new ArrayList<Item>(); 2605 _body.forEach(item -> surrogates.addAll(item.getSurrogates())); 2606 return surrogates; 2560 }*/ 2561 2562 public List<Item> getItemsToSave() { 2563 return getItemsToSave(BodyType.PrimaryBody); 2564 } 2565 2566 public List<Item> getItemsToSave(BodyType type) { 2567 assert(!type.equals(BodyType.BodyDisplay)); 2568 switch (type) { 2569 case SurrogateBody: 2570 return getItemsToSave(_surrogateItemsBody); 2571 case BodyDisplay: 2572 return getItemsToSave(_body); 2573 case PrimaryBody: 2574 default: 2575 return getItemsToSave(_primaryItemsBody); 2576 } 2577 } 2578 2579 private List<Item> getItemsToSave(ItemsList body) { 2580 body.sort(); 2581 List<Widget> seenWidgets = new ArrayList<Widget>(); 2582 2583 List<Item> toSave = new ArrayList<Item>(); 2584 2585 body.removeIf(item -> item.dontSave()); 2586 for (Item item: body) { 2587 if (item instanceof WidgetCorner) { 2588 // Save the widget source. 2589 // Each widget has multiple WidgetCorner's..ignore them if we already have the source. 2590 Widget iw = ((WidgetCorner) item).getWidgetSource(); 2591 if (seenWidgets.contains(iw)) { continue; } 2592 seenWidgets.add(iw); 2593 toSave.add(iw.getSource()); 2594 } else if (item instanceof XRayable) { 2595 // XRayable Items have their sources saved. 2596 XRayable x = (XRayable) item; 2597 toSave.addAll(x.getItemsToSave()); 2598 } else if (item.hasEnclosures()) { 2599 // Deals with Circle objects only? 2600 continue; 2601 } else { 2602 toSave.add(item); 2603 } 2604 } 2605 2606 return toSave; 2607 2607 } 2608 2608 … … 2623 2623 } 2624 2624 2625 public Collection<Item> getAllItems() 2626 { 2627 Collection<Item> allItems = new LinkedHashSet<Item>(_body); 2625 public Collection<Item> getAllItems() { 2626 ItemsList allItems = new ItemsList(_body); 2628 2627 2629 2628 allItems.addAll(_overlayItems); 2630 2629 allItems.addAll(_vectorItems); 2631 return allItems ;2630 return allItems.underlying(); 2632 2631 } 2633 2632 … … 2648 2647 Collection<Text> textItems = new ArrayList<Text>(); 2649 2648 2650 for (Item i : get Items(true)) {2649 for (Item i : getSortedItems(true)) { 2651 2650 // only add up normal body text items 2652 2651 if ((i instanceof Text)) { … … 2669 2668 public void recalculate() 2670 2669 { 2671 for (Item i : get Items()) {2670 for (Item i : getSortedItems()) { 2672 2671 if (i.hasFormula() && !i.isAnnotation()) { 2673 2672 i.calculate(i.getFormula()); … … 2700 2699 Collection<Text> items = new LinkedHashSet<Text>(); 2701 2700 2702 for (Item i : get Items(true)) {2701 for (Item i : getSortedItems(true)) { 2703 2702 // only add up normal body text items 2704 2703 if (i instanceof Text && !i.isAnnotation()) { … … 2788 2787 } 2789 2788 2790 public List<Item> getBodyItemsWithInsufficientPermissions() {2791 return _bodyHiddenDueToPermissions ;2789 public Collection<Item> getBodyItemsWithInsufficientPermissions() { 2790 return _bodyHiddenDueToPermissions.underlying(); 2792 2791 } 2793 2792 … … 2898 2897 return members; 2899 2898 } 2899 2900 public boolean hasSurrogates() { 2901 return !_surrogateItemsBody.isEmpty(); 2902 } 2903 2904 private boolean meetsVisibilityRequirements(boolean requireVisible, Item i) { 2905 return i.isVisible() || (!requireVisible && !i.isDeleted()); 2906 } 2900 2907 2901 2908 private static final class History { … … 2906 2913 } 2907 2914 2908 public final List<Item>items;2915 public final ItemsList items; 2909 2916 2910 2917 public final Type type; 2911 2918 2912 public History( Collection<Item> items, Type type)2919 public History(ItemsList changed, Type type) 2913 2920 { 2914 this.items = new LinkedList<Item>(items);2921 this.items = new ItemsList(changed); 2915 2922 this.type = type; 2916 2923 } … … 2922 2929 } 2923 2930 } 2931 2932 protected boolean hasAnnotations() { 2933 return _annotations != null && _annotations.size() > 0; 2934 } 2935 2936 protected ItemsList getBody() { 2937 return _body; 2938 } 2939 protected ItemsList getPrimaryBody() { 2940 return _primaryItemsBody; 2941 } 2942 protected ItemsList getSurrogateBody() { 2943 return _surrogateItemsBody; 2944 } 2924 2945 } -
trunk/src/org/expeditee/gui/FrameCreator.java
r1304 r1415 276 276 _lastX = START_X; 277 277 // Check for @Start 278 for (Item it : toUse.get Items()) {278 for (Item it : toUse.getSortedItems()) { 279 279 if (it instanceof Text) { 280 280 Text t = (Text) it; -
trunk/src/org/expeditee/gui/FrameGraphics.java
r1413 r1415 141 141 EcosystemManager.getGraphicsManager().clear(backgroundColor); 142 142 143 List<Item> visibleItems = new LinkedList<Item>();143 List<Item> itemsToPaintCanditates = new LinkedList<Item>(); 144 144 List<Widget> paintWidgets; 145 145 … … 147 147 // Add all the items for this frame and any other from other 148 148 // frames 149 visibleItems.addAll(toPaint.getAllItems());149 itemsToPaintCanditates.addAll(toPaint.getAllItems()); 150 150 paintWidgets = toPaint.getAllOverlayWidgets(); 151 151 paintWidgets.addAll(toPaint.getInteractiveWidgets()); 152 152 } else { 153 visibleItems.addAll(toPaint.getVisibleItems());154 visibleItems.addAll(toPaint.getVectorItems());153 itemsToPaintCanditates.addAll(toPaint.getVisibleItems()); 154 itemsToPaintCanditates.addAll(toPaint.getVectorItems()); 155 155 paintWidgets = toPaint.getInteractiveWidgets(); 156 156 } … … 181 181 182 182 if (clip == null) { 183 paintItems = visibleItems;183 paintItems = itemsToPaintCanditates; 184 184 } else { 185 185 fillOnlyItems = new HashSet<Item>(); 186 186 paintItems = new LinkedList<Item>(); 187 for (Item i : visibleItems) {187 for (Item i : itemsToPaintCanditates) { 188 188 if (clip == null || i.isInDrawingArea(clip.getBounds())) { 189 189 paintItems.add(i); … … 201 201 // Only paint files and lines once ... between anchored AND free items 202 202 PaintPictures(paintItems, fillOnlyItems, paintedFillsAndLines); 203 PaintLines( visibleItems);203 PaintLines(itemsToPaintCanditates); 204 204 205 205 … … 380 380 381 381 List<Item> toFill = new LinkedList<Item>(); 382 382 383 for (Item i : toPaint) { 383 384 // Ignore items that have already been done! -
trunk/src/org/expeditee/gui/FrameIO.java
r1406 r1415 88 88 */ 89 89 90 91 90 public class FrameIO { 92 91 … … 214 213 } 215 214 216 // public static void changeParentAndSubFolders(String newFolder) {217 // // Partial Paths.218 // PARENT_FOLDER = newFolder;219 // String resourcesPublicPath = PARENT_FOLDER + "resources-public" + File.separator;220 // String resourcesPrivateIndividualPath = PARENT_FOLDER + "resources-" + UserSettings.UserName.get() + File.separator;221 //222 // // Standard paths.223 // PUBLIC_PATH = PARENT_FOLDER + "public" + File.separator;224 // TRASH_PATH = PARENT_FOLDER + "trash" + File.separator;225 // HELP_PATH = PARENT_FOLDER + "documentation" + File.separator;226 // PROFILE_PATH = PARENT_FOLDER + "profiles" + File.separator;227 // EXPORTS_PATH = PARENT_FOLDER + "exports" + File.separator;228 // STATISTICS_PATH = PARENT_FOLDER + "statistics" + File.separator;229 // LOGS_PATH = PARENT_FOLDER + "logs" + File.separator;230 //231 //232 // // Conditional paths233 // if (UserSettings.PublicAndPrivateResources) {234 // // Work with a system of public and private folders235 //236 // FONT_PATH = resourcesPublicPath + "fonts" + File.separator;237 // DICT_PATH = resourcesPublicPath + "dict" + File.separator;238 // IMAGES_PATH = resourcesPublicPath + "images" + File.separator;239 // AUDIO_PATH = resourcesPublicPath + "audio" + File.separator;240 // FRAME_PATH = resourcesPublicPath + "framesets" + File.separator;241 // } else {242 // FONT_PATH = PARENT_FOLDER + "fonts" + File.separator;243 // DICT_PATH = PARENT_FOLDER + "dict" + File.separator;244 // IMAGES_PATH = PARENT_FOLDER + "images" + File.separator;245 // AUDIO_PATH = PARENT_FOLDER + "audio" + File.separator;246 // FRAME_PATH = PARENT_FOLDER + "framesets" + File.separator;247 // DEAD_DROPS_PATH = PARENT_FOLDER + "deaddrops" + File.separator;248 // }249 //250 // if (!UserSettings.PublicAndPrivateResources || (AuthenticatorBrowser.isAuthenticationRequired() && !AuthenticatorBrowser.isAuthenticated())) {251 //252 // if (UserSettings.UserName.get().equals(AuthenticatorBrowser.USER_NOBODY)) {253 // System.err.println("**** FrameIO::changeParentAndSubFolders(): Not setting subfolders for user '"+AuthenticatorBrowser.USER_NOBODY+"'");254 // }255 //256 // // If we are using the old regime, or user.name set to Browser.USER_NOBODY257 // // => then these paths should not be used.258 // RESOURCES_PATH = null;259 // SHARED_FRAMESETS_PATH = null;260 // RESOURCES_PRIVATE_PATH = null;261 // FRAME_PRIVATE_PATH = null;262 // IMAGES_PRIVATE_PATH = null;263 // AUDIO_PRIVATE_PATH = null;264 // CONTACTS_PATH = null;265 // HELP_PRIVATE_PATH = null;266 //267 // if (!UserSettings.PublicAndPrivateResources) {268 // MESSAGES_PATH = PARENT_FOLDER + "messages" + File.separator;269 // } else {270 // MESSAGES_PATH = resourcesPrivateIndividualPath + "messages" + File.separator;271 // }272 //273 // } else {274 // RESOURCES_PATH = resourcesPublicPath + "documentation" + File.separator;275 // SHARED_FRAMESETS_PATH = resourcesPrivateIndividualPath + "framesets-shared" + File.separator;276 //277 // RESOURCES_PRIVATE_PATH = PARENT_FOLDER + "resources-private" + File.separator;278 // FRAME_PRIVATE_PATH = resourcesPrivateIndividualPath + "framesets" + File.separator;279 // IMAGES_PRIVATE_PATH = resourcesPrivateIndividualPath + "images" + File.separator;280 // AUDIO_PRIVATE_PATH = resourcesPrivateIndividualPath + "audio" + File.separator;281 // CONTACTS_PATH = resourcesPrivateIndividualPath + "contacts" + File.separator;282 // HELP_PRIVATE_PATH = resourcesPrivateIndividualPath + "documentation" + File.separator;283 // MESSAGES_PATH = resourcesPrivateIndividualPath + "messages" + File.separator;284 // MAIL_PATH = resourcesPrivateIndividualPath + "mail" + File.separator;285 // DEAD_DROPS_PATH = resourcesPrivateIndividualPath + "deaddrops" + File.separator;286 // }287 //288 //289 // System.err.println("**** FrameIO::changeParentAndSubFolder(): Calling AudioPathManger.changeParentAndSubFolder()");290 // AudioPathManager.changeParentAndSubFolders(newFolder);291 // }292 293 215 // All methods are static, this should not be instantiated 294 216 private FrameIO() { … … 1001 923 template.resetDateCreated(); 1002 924 1003 for (Item i : template.get Items()) {925 for (Item i : template.getSortedItems()) { 1004 926 if (ItemUtils.startsWithTag(i, ItemUtils.TAG_PARENT)) { 1005 927 i.setLink(null); … … 1009 931 // do auto shrinking of the title IF not in twin frames mode and the title is not centred 1010 932 Item titleItem = template.getTitleItem(); 1011 1012 if (!DisplayController.isTwinFramesOn() && !Justification.center.equals(((Text)titleItem).getJustification())) { 933 if (titleItem == null) { 934 return template; 935 } 936 937 boolean titleItemJustified = titleItem == null || !Justification.center.equals(((Text)titleItem).getJustification()); 938 if (!DisplayController.isTwinFramesOn() && titleItemJustified) { 1013 939 if ((titleItem.getX() + 1) < template.getNameItem().getX()) { 1014 940 int title_item_xr = titleItem.getX() + titleItem.getBoundsWidth(); // should really be '... -1' … … 1307 1233 EcosystemManager.getMiscManager().beep(); 1308 1234 } else if (checkBackup 1309 && ItemUtils.ContainsExactTag(toSave.get Items(),1235 && ItemUtils.ContainsExactTag(toSave.getSortedItems(), 1310 1236 ItemUtils.TAG_BACKUP)) { 1311 1237 SuspendCache(); … … 1338 1264 } 1339 1265 1340 Item i = ItemUtils.FindExactTag(toSave.get Items(),1266 Item i = ItemUtils.FindExactTag(toSave.getSortedItems(), 1341 1267 ItemUtils.TAG_BACKUP); 1342 1268 i.setLink(original.getName()); … … 1480 1406 } 1481 1407 1482 public static Frame CreateNewProfile(String username, Map<String, Setting> initialSettings, Map<String, Consumer<Frame>> toNotifyOnSet) throws InvalidFramesetNameException, ExistingFramesetException 1408 public static Frame CreateNewProfile(String username, Map<String, Setting> initialSettings, Map<String, Consumer<Frame>> toNotifyOnSet) throws InvalidFramesetNameException, ExistingFramesetException { 1483 1409 Frame profile = CreateFrameset(username, PROFILE_PATH, true); 1484 1410 if (profile != null) { … … 2110 2036 } 2111 2037 2038 public static boolean personalResourcesExist(String username) { 2039 Path personalResources = Paths.get(FrameIO.PARENT_FOLDER).resolve("resources-" + username); 2040 File personalResourcesFile = personalResources.toFile(); 2041 boolean directoryExists = personalResourcesFile.exists() && personalResourcesFile.isDirectory(); 2042 return directoryExists; 2043 } 2044 2112 2045 public static Path setupPersonalResources(String username) { 2113 2046 Path personalResources = Paths.get(FrameIO.PARENT_FOLDER).resolve("resources-" + username); -
trunk/src/org/expeditee/gui/FrameUtils.java
r1407 r1415 60 60 import org.expeditee.core.bounds.AxisAlignedBoxBounds; 61 61 import org.expeditee.core.bounds.PolygonBounds; 62 import org.expeditee.encryption.items.surrogates.Label; 62 63 import org.expeditee.gio.EcosystemManager; 63 64 import org.expeditee.gio.gesture.StandardGestureActions; … … 384 385 } 385 386 386 for (Item i : current.get Items()) {387 for (Item i : current.getSortedItems()) { 387 388 i.setHighlightMode(Item.HighlightMode.None); 388 389 i.setHighlightColorToDefault(); … … 642 643 * @return True if the image was created successfully, false otherwise 643 644 */ 644 private static boolean createPicture(Frame frame, Text txt ) {645 private static boolean createPicture(Frame frame, Text txt, ItemsList items) { 645 646 // attempt to create the picture 646 647 Picture pic = ItemUtils.CreatePicture(txt); … … 659 660 return false; 660 661 } 661 frame.addItem(pic );662 frame.addItem(pic, true, items); 662 663 663 664 return true; 665 } 666 667 private static boolean createPictureInBody(Frame frame, Text txt) { 668 return createPicture(frame, txt, frame.getBody()); 664 669 } 665 670 … … 678 683 * @author Brook Novak 679 684 */ 680 private static boolean createWidget(Frame frame, Text txt ) {685 private static boolean createWidget(Frame frame, Text txt, ItemsList list) { 681 686 682 687 if (frame == null) { … … 713 718 } 714 719 715 frame.removeItem(txt );716 717 frame.addAllItems(iw.getItems() );720 frame.removeItem(txt, true, list); 721 722 frame.addAllItems(iw.getItems(), list); 718 723 719 724 return true; 725 } 726 727 private static boolean createWidgetInBody(Frame frame, Text txt) { 728 return createWidget(frame, txt, frame.getBody()); 720 729 } 721 730 … … 857 866 return dirsToAdd; 858 867 } 859 860 public static void Parse(Frame toParse) { 861 Parse(toParse, false); 862 } 863 864 /** 865 * Checks for any special Annotation items and updates the display as necessary. 866 * Special Items: Images, overlays, sort. 867 * 868 */ 869 public static void Parse(Frame toParse, boolean firstParse) { 870 Parse(toParse, firstParse, false); 871 } 872 873 /** 874 * 875 * @param toParse 876 * @param firstParse 877 * @param ignoreAnnotations 878 * used to prevent infinate loops such as when performing TDFC with 879 * an ao tag linked to a frame with an frameImage of a frame which 880 * also has an ao tag on it. 881 */ 882 public static void Parse(Frame toParse, boolean firstParse, boolean ignoreAnnotations) { 883 // TODO check why we are getting toParse == null... when profile frame 884 // is being created and change the lines below 885 if (toParse == null) { 886 return; 887 } 888 889 if (firstParse) { 890 ItemUtils.EnclosedCheck(toParse.getItems()); 891 } 892 893 List<Item> items = toParse.getItems(); 894 868 869 private static void transformOutOfPlaceItems(Frame toParse, ItemsList toTransform) { 870 // Get all items from toTransform that have not been marked as deleted. 871 List<Item> items = toParse.getItems(false, toTransform); 872 895 873 // if XRayMode is on, replace pictures with their underlying text 896 874 if (DisplayController.isXRayMode()) { … … 901 879 for (Item i : items) { 902 880 if (i instanceof XRayable) { 903 toParse.removeItem(i );881 toParse.removeItem(i, true, toTransform); 904 882 // Show the items 905 883 for (Item item : ((XRayable) i).getConnected()) { … … 908 886 } 909 887 } else if (i instanceof WidgetCorner) { 910 toParse.removeItem(i );888 toParse.removeItem(i, true, toTransform); 911 889 } else if (i instanceof WidgetEdge) { 912 toParse.removeItem(i );890 toParse.removeItem(i, true, toTransform); 913 891 } else if (i.hasFormula()) { 914 892 i.setText(i.getFormula()); … … 920 898 921 899 for (Widget iw : widgets) { 922 toParse.addItem(iw.getSource()); 923 } 924 } 925 926 // Text title = null; 927 // Text template = UserSettingsTemplate.copy(); 928 929 List<Overlay> overlays = new ArrayList<Overlay>(); 930 List<Vector> vectors = new ArrayList<Vector>(); 900 toParse.addItem(iw.getSource(), true, toTransform); 901 } 902 } 903 931 904 932 905 // disable reading of cached overlays if in twinframes mode … … 935 908 } 936 909 937 // DotType pointtype = DotType.square;938 // boolean filledPoints = true;939 940 UserAppliedPermission permission = toParse.getUserAppliedPermission();941 910 toParse.clearAnnotations(); 942 911 943 912 // check for any new overlay items 944 for (Item i : toParse.getItems()) { 913 items = toParse.getItems(false, toTransform); 914 for (Item i : items) { 945 915 try { 946 // reset overlay permission947 i.setOverlayPermission(null);948 // i.setPermission(permission);949 916 if (i instanceof WidgetCorner) { 950 917 // TODO improve efficiency so it only updates once... using … … 952 919 i.update(); 953 920 } else if (i instanceof Text) { 921 if (!DisplayController.isXRayMode() && i.isAnnotation()) { 922 if (ItemUtils.startsWithTag(i, ItemUtils.TAG_IMAGE, true)) { 923 if (!i.hasEnclosures()) { 924 createPicture(toParse, (Text) i, toTransform); 925 } 926 // check for frame images 927 } else if (ItemUtils.startsWithTag(i, ItemUtils.TAG_FRAME_IMAGE) && i.getLink() != null 928 && !i.getAbsoluteLink().equalsIgnoreCase(toParse.getName())) { 929 XRayable image = null; 930 if (i.hasEnclosures()) { 931 // i.setHidden(true); 932 // image = 933 // i.getEnclosures().iterator().next(); 934 // image.refresh(); 935 } else { 936 image = new FrameImage((Text) i, null); 937 } 938 // TODO Add the image when creating new 939 // FrameImage 940 toParse.addItem(image, true, toTransform); 941 } else if (ItemUtils.startsWithTag(i, ItemUtils.TAG_BITMAP_IMAGE) && i.getLink() != null 942 && !i.getAbsoluteLink().equalsIgnoreCase(toParse.getName())) { 943 XRayable image = null; 944 if (i.hasEnclosures()) { 945 // image = 946 // i.getEnclosures().iterator().next(); 947 // image.refresh(); 948 // i.setHidden(true); 949 } else { 950 // If a new bitmap is created for a 951 // frame which already has a bitmap dont 952 // recreate the bitmap 953 image = new FrameBitmap((Text) i, null); 954 } 955 toParse.addItem(image, true, toTransform); 956 } else if (ItemUtils.startsWithTag(i, "@c")) { 957 // Can only have a @c 958 if (!i.hasEnclosures() && i.getLines().size() == 1) { 959 Circle circle = new Circle((Text) i); 960 toParse.addItem(circle, true, toTransform); 961 } 962 // Check for JSItem 963 } else if (ItemUtils.startsWithTag(i, "@js")) { 964 JSItem jsItem = new JSItem((Text) i); 965 toParse.addItem(jsItem, true, toTransform); 966 // Check for interactive widgets 967 } else if (ItemUtils.startsWithTag(i, ItemUtils.TAG_IWIDGET)) { 968 createWidget(toParse, (Text) i, toTransform); 969 } 970 971 // TODO decide exactly what to do here!! 972 toParse.addAnnotation((Text) i); 973 } else if (!DisplayController.isXRayMode() && i.hasFormula()) { 974 i.calculate(i.getFormula()); 975 } 976 } 977 } catch (Exception e) { 978 Logger.Log(e); 979 e.printStackTrace(); 980 System.err 981 .println("**** Have temporarily supressed MessageBay call, as resulted in infinite recursion"); 982 // MessageBay.warningMessage("Exception occured when loading " + 983 // i.getClass().getSimpleName() + "(ID: " 984 // + i.getID() + ") " + e.getMessage() != null ? e.getMessage() : ""); 985 } 986 } 987 988 /* 989 * for (Item i : items) { if (i instanceof Dot) { ((Dot) 990 * i).setPointType(pointtype); ((Dot) i).useFilledPoints(filledPoints); } } 991 */ 992 993 if (DisplayController.isTwinFramesOn()) { 994 FrameIO.ResumeCache(); 995 } 996 997 998 } 999 1000 private static void generatingSupportingItems(Frame toParse, 1001 ItemsList toBuildOff, boolean ignoreAnnotations) { 1002 // Get all items from toBuildOff that have not been marked as deleted. 1003 List<Item> items = toParse.getItems(false, toBuildOff); 1004 1005 List<Overlay> overlays = new ArrayList<Overlay>(); 1006 List<Vector> vectors = new ArrayList<Vector>(); 1007 1008 // disable reading of cached overlays if in twinframes mode 1009 if (DisplayController.isTwinFramesOn()) { 1010 FrameIO.SuspendCache(); 1011 } 1012 1013 UserAppliedPermission permission = toParse.getUserAppliedPermission(); 1014 // check for any new overlay items 1015 for (Item i : items) { 1016 try { 1017 // reset overlay permission 1018 i.setOverlayPermission(null); 1019 if (i instanceof Text) { 954 1020 if (i.isAnnotation()) { 955 if (ItemUtils.startsWithTag(i, ItemUtils.TAG_POINTTYPE)) { 956 Text txt = (Text) i; 957 String line = txt.getFirstLine(); 958 line = ItemUtils.StripTag(line, ItemUtils.GetTag(ItemUtils.TAG_POINTTYPE)); 959 960 if (line != null) { 961 line = line.toLowerCase(); 962 if (line.indexOf(" ") > 0) { 963 String fill = line.substring(line.indexOf(" ") + 1); 964 if (fill.startsWith("nofill")) { 965 // filledPoints = false; 966 } else { 967 // filledPoints = true; 968 } 969 } 970 971 if (line.startsWith("circle")) { 972 // pointtype = DotType.circle; 973 } else { 974 // pointtype = DotType.square; 975 } 976 } 977 } // check for new VECTOR items 978 else if (!DisplayController.isXRayMode() && ItemUtils.startsWithTag(i, ItemUtils.TAG_VECTOR) 1021 if (!DisplayController.isXRayMode() && ItemUtils.startsWithTag(i, ItemUtils.TAG_VECTOR) 979 1022 && i.getLink() != null) { 980 1023 if (!i.getAbsoluteLink().equals(toParse.getName())) { … … 1047 1090 } 1048 1091 } 1049 // check for Images and widgets 1050 else { 1051 if (!DisplayController.isXRayMode()) { 1052 if (ItemUtils.startsWithTag(i, ItemUtils.TAG_IMAGE, true)) { 1053 if (!i.hasEnclosures()) { 1054 createPicture(toParse, (Text) i); 1055 } 1056 // check for frame images 1057 } else if (ItemUtils.startsWithTag(i, ItemUtils.TAG_FRAME_IMAGE) && i.getLink() != null 1058 && !i.getAbsoluteLink().equalsIgnoreCase(toParse.getName())) { 1059 XRayable image = null; 1060 if (i.hasEnclosures()) { 1061 // i.setHidden(true); 1062 // image = 1063 // i.getEnclosures().iterator().next(); 1064 // image.refresh(); 1065 } else { 1066 image = new FrameImage((Text) i, null); 1067 } 1068 // TODO Add the image when creating new 1069 // FrameImage 1070 toParse.addItem(image); 1071 } else if (ItemUtils.startsWithTag(i, ItemUtils.TAG_BITMAP_IMAGE) && i.getLink() != null 1072 && !i.getAbsoluteLink().equalsIgnoreCase(toParse.getName())) { 1073 XRayable image = null; 1074 if (i.hasEnclosures()) { 1075 // image = 1076 // i.getEnclosures().iterator().next(); 1077 // image.refresh(); 1078 // i.setHidden(true); 1079 } else { 1080 // If a new bitmap is created for a 1081 // frame which already has a bitmap dont 1082 // recreate the bitmap 1083 image = new FrameBitmap((Text) i, null); 1084 } 1085 toParse.addItem(image); 1086 } else if (ItemUtils.startsWithTag(i, "@c")) { 1087 // Can only have a @c 1088 if (!i.hasEnclosures() && i.getLines().size() == 1) { 1089 toParse.addItem(new Circle((Text) i)); 1090 } 1091 // Check for JSItem 1092 } else if (ItemUtils.startsWithTag(i, "@js")) { 1093 toParse.addItem(new JSItem((Text) i)); 1094 // Check for interactive widgets 1095 } else if (ItemUtils.startsWithTag(i, ItemUtils.TAG_IWIDGET)) { 1096 createWidget(toParse, (Text) i); 1097 } 1098 } 1099 // TODO decide exactly what to do here!! 1100 toParse.addAnnotation((Text) i); 1101 } 1102 } else if (!DisplayController.isXRayMode() && i.hasFormula()) { 1103 i.calculate(i.getFormula()); 1092 1104 1093 } 1105 1094 } … … 1118 1107 */ 1119 1108 1120 FrameIO.ResumeCache(); 1109 if (DisplayController.isTwinFramesOn()) { 1110 FrameIO.ResumeCache(); 1111 } 1121 1112 1122 1113 toParse.clearOverlays(); … … 1124 1115 toParse.addAllOverlays(overlays); 1125 1116 toParse.addAllVectors(vectors); 1126 1117 } 1118 1119 public static void Parse(Frame toParse) { 1120 Parse(toParse, false); 1121 } 1122 1123 /** 1124 * Checks for any special Annotation items and updates the display as necessary. 1125 * Special Items: Images, overlays, sort. 1126 * 1127 */ 1128 public static void Parse(Frame toParse, boolean firstParse) { 1129 Parse(toParse, firstParse, false); 1130 } 1131 1132 /** 1133 * 1134 * @param toParse 1135 * @param firstParse 1136 * @param ignoreAnnotations 1137 * used to prevent infinate loops such as when performing TDFC with 1138 * an ao tag linked to a frame with an frameImage of a frame which 1139 * also has an ao tag on it. 1140 */ 1141 public static void Parse(Frame toParse, boolean firstParse, boolean ignoreAnnotations) { 1142 List<String> accessList = Label.getAccessibleLabelsNames(new ItemsList(toParse.getPrimaryBody())); 1143 1144 ItemsList primaries = toParse.getPrimaryBody(); 1145 ItemsList surrogates = toParse.getSurrogateBody(); 1146 1147 transformOutOfPlaceItems(toParse, primaries); 1148 transformOutOfPlaceItems(toParse, surrogates); 1149 1150 toParse.getInteractableItems().clear(); 1151 List<Item> newBody = parseFromPrimary(primaries, accessList); 1152 toParse.getBody().clear(); 1153 toParse.getBody().addAll(newBody); 1154 generatingSupportingItems(toParse, toParse.getBody(), ignoreAnnotations); 1155 1156 if (firstParse) { 1157 ItemUtils.EnclosedCheck(toParse.getSortedItems()); 1158 } 1159 } 1160 1161 private static List<Item> parseFromPrimary(ItemsList primaryBody, List<String> access) { 1162 List<Item> parsedBody = new ArrayList<Item>(); 1163 1164 for (Item item: primaryBody) { 1165 String encryptionLabel = item.getEncryptionLabel(); 1166 if (encryptionLabel == null || encryptionLabel.isEmpty()) { 1167 parsedBody.add(item); 1168 } else if (access.contains(encryptionLabel)) { 1169 parsedBody.add(item); 1170 } else { 1171 parsedBody.addAll(item.getSurrogates()); 1172 } 1173 } 1174 1175 return parsedBody; 1127 1176 } 1128 1177 … … 1225 1274 if (LastEdited.contains(x, y) && !FreeItems.getInstance().contains(LastEdited) 1226 1275 && LastEdited.getParent() == DisplayController.getCurrentFrame() 1227 && LastEdited.getParent().get Items().contains(LastEdited)) {1276 && LastEdited.getParent().getSortedItems().contains(LastEdited)) { 1228 1277 LastEdited.setOverlayPermission(UserAppliedPermission.full); 1229 1278 return LastEdited; … … 1412 1461 return null; 1413 1462 } 1414 List<Item> items = current.get Items();1463 List<Item> items = current.getSortedItems(); 1415 1464 1416 1465 // Remove all items that are connected to freeItems … … 1572 1621 MessageBay.suppressMessages(true); 1573 1622 int lastNumber = FrameIO.getLastNumber(defaultFrame.getFramesetName()); 1574 for (int i = 1; i <= lastNumber; i++) { 1623 for (int i = 1; i <= lastNumber; i++) { 1575 1624 // Load in next default, if it doesn't exist continue loop. 1576 1625 defaultFrame = FrameIO.LoadFrame(defaultFrame.getFramesetName() + i); … … 1670 1719 Frame indexFrame = FrameIO.LoadFrame(framesetName + '1'); 1671 1720 // Look through the folder for help index pages 1672 if (indexFrame != null && ItemUtils.FindTag(indexFrame.get Items(), "@HelpIndex") != null) {1721 if (indexFrame != null && ItemUtils.FindTag(indexFrame.getSortedItems(), "@HelpIndex") != null) { 1673 1722 // yPos += spacing; 1674 1723 yPos += 30; -
trunk/src/org/expeditee/gui/MessageBay.java
r1314 r1415 279 279 280 280 if (!displayAlways && message.equals(_lastMessage)) { 281 Item lastMessage = _messages.get(_messages.size() - 1); 282 String text = lastMessage.getText(); 283 if (text.endsWith("}")) { 284 int startOfRepeat = text.lastIndexOf("{"); 285 String repeatString = text.substring(startOfRepeat); 286 repeatString = repeatString.substring(1, repeatString.length() - 1); 287 try { 288 int repeatCount = Integer.parseInt(repeatString) + 1; 289 text = text.substring(0, startOfRepeat).trim() + " {" + repeatCount + "}"; 290 } catch (NumberFormatException e) { 291 e.printStackTrace(); 292 } 293 } else { 294 text = text.trim() + " {2}"; 295 } 296 lastMessage.setText(text); 281 297 DisplayController.DisableMailMode(); 282 Misc.beep();283 298 return null; 284 299 } -
trunk/src/org/expeditee/gui/Vector.java
r1144 r1415 28 28 29 29 /** 30 * TODO: Explain WTF this is. cts16 30 * A vector is a type of overlay with additional features: 31 * - a location (origin) 32 * - size (scaled from frame) 33 * - etc 31 34 */ 32 35 public class Vector extends Overlay { -
trunk/src/org/expeditee/io/Conversion.java
r1374 r1415 691 691 return getExpediteeColorCode((Colour) output); 692 692 693 // co vert points693 // convert points 694 694 if (output instanceof Point) 695 695 return ((Point) output).getX() + " " + ((Point) output).getY(); 696 696 697 if (output instanceof Boolean) 698 if ((Boolean) output) 699 return null; 700 else 701 return "F"; 697 if (output instanceof Boolean) { 698 try { 699 Class<?> parentClass = method.getDeclaringClass(); 700 Field defaultValueField = parentClass.getField(method.getName() + "Default"); 701 boolean defaultValue = defaultValueField.getBoolean(null); 702 if (defaultValue == (boolean) output) { 703 return null; 704 } 705 } catch (IllegalArgumentException e) { 706 e.printStackTrace(); 707 } catch (SecurityException e) { 708 e.printStackTrace(); 709 } catch (NoSuchFieldException e) { 710 // true is the default for boolean values when no other default is provided 711 if ((boolean) output) { 712 return null; 713 } else { 714 return "F"; 715 } 716 } catch (IllegalAccessException e) { 717 e.printStackTrace(); 718 } 719 return output; 720 } 702 721 703 722 if (output instanceof int[]) { -
trunk/src/org/expeditee/io/DefaultFrameReader.java
r1414 r1415 181 181 _DelayedItemTags.add('/'); 182 182 183 _ItemTagsExt.put(DefaultFrameWriter.ENCRYPTION_LABEL_STR, Item.class.getMethod("setEncryptionLabel ", pString));183 _ItemTagsExt.put(DefaultFrameWriter.ENCRYPTION_LABEL_STR, Item.class.getMethod("setEncryptionLabelOnLoad", pString)); 184 184 185 185 _ItemTagsExt.put(DefaultFrameWriter.PLACEHOLDER_STR, Text.class.getMethod("setPlaceholder", pString)); 186 186 _ItemTagsExt.put(DefaultFrameWriter.SINGLE_LINE_ONLY_STR, Text.class.getMethod("setSingleLineOnly", pBool)); 187 187 _ItemTagsExt.put(DefaultFrameWriter.TAB_INDEX_STR, Text.class.getMethod("setTabIndex", pInt)); 188 _ItemTagsExt.put(DefaultFrameWriter.ACCEPTS_ENTER, Item.class.getMethod("setAcceptsEnter", pBool)); 188 189 } catch (Exception e) { 189 190 e.printStackTrace(); -
trunk/src/org/expeditee/io/DefaultFrameWriter.java
r1413 r1415 99 99 public static final String PLACEHOLDER_STR = "_ph"; 100 100 public static final String ENCRYPTION_LABEL_STR = "_el"; 101 public static final String ACCEPTS_ENTER = "_ae"; 101 102 public static final String MAGNETIZED_ITEM_BOTTOM_STR = MAGNETIZED_ITEM_BOTTOM + ""; 102 103 public static final String MAGNETIZED_ITEM_TOP_STR = MAGNETIZED_ITEM_TOP + ""; … … 263 264 _ItemTagsExt.put(DefaultFrameWriter.SINGLE_LINE_ONLY_STR, Text.class.getMethod("isSingleLineOnly")); 264 265 _ItemTagsExt.put(DefaultFrameWriter.TAB_INDEX_STR, Text.class.getMethod("getTabIndex")); 266 _ItemTagsExt.put(DefaultFrameWriter.ACCEPTS_ENTER, Item.class.getMethod("acceptsKeyboardEnter")); 265 267 } catch (Exception e) { 266 268 e.printStackTrace(); … … 308 310 this.writeAnnotationTitle(starting.getTitleItem()); 309 311 else 310 this.writeTitle(starting.getTitleItem(), starting.get Items());312 this.writeTitle(starting.getTitleItem(), starting.getSortedItems()); 311 313 } 312 314 } -
trunk/src/org/expeditee/io/DefaultTreeWriter.java
r919 r1415 88 88 protected List<Item> getSortedItems(Frame frame) 89 89 { 90 List<Item> items = frame.get Items();90 List<Item> items = frame.getSortedItems(); 91 91 return items; 92 92 } -
trunk/src/org/expeditee/io/JavaWriter.java
r1102 r1415 61 61 protected List<Item> getSortedItems(Frame frame) 62 62 { 63 List<Item> y_ordered_items = frame.get Items();63 List<Item> y_ordered_items = frame.getSortedItems(); 64 64 65 65 for (Item item: y_ordered_items) { -
trunk/src/org/expeditee/io/PDF2Writer.java
r1258 r1415 186 186 187 187 Frame child; 188 for(Item i : current.get Items()) {188 for(Item i : current.getSortedItems()) { 189 189 if(i.isAnnotation()) 190 190 continue; … … 209 209 writeStartFrame(f); 210 210 Text title = f.getTitleItem(); 211 for(Item i : f.get Items()) {211 for(Item i : f.getSortedItems()) { 212 212 if(i != title) { 213 213 this.writeItem(i); … … 220 220 this.writeAnnotationTitle(title); 221 221 else 222 this.writeTitle(title, f.get Items());222 this.writeTitle(title, f.getSortedItems()); 223 223 } 224 224 } -
trunk/src/org/expeditee/io/TXTWriter.java
r919 r1415 42 42 @Override 43 43 protected void writeStartFrame(Frame toParse) throws IOException { 44 if (ItemUtils.ContainsTag(toParse.get Items(), "@join"))44 if (ItemUtils.ContainsTag(toParse.getSortedItems(), "@join")) 45 45 _join = !_join; 46 46 47 if (ItemUtils.ContainsTag(toParse.get Items(), "@indent"))47 if (ItemUtils.ContainsTag(toParse.getSortedItems(), "@indent")) 48 48 _indent++; 49 49 … … 73 73 @Override 74 74 protected void writeEndFrame(Frame toParse) throws IOException { 75 if (ItemUtils.ContainsTag(toParse.get Items(), "@indent"))75 if (ItemUtils.ContainsTag(toParse.getSortedItems(), "@indent")) 76 76 if (_indent > 0) 77 77 _indent--; 78 78 79 if (ItemUtils.ContainsTag(toParse.get Items(), "@join"))79 if (ItemUtils.ContainsTag(toParse.getSortedItems(), "@join")) 80 80 _join = !_join; 81 81 … … 85 85 @Override 86 86 protected void resumeFrame(Frame resuming) { 87 _join = ItemUtils.ContainsTag(resuming.get Items(), "@join");87 _join = ItemUtils.ContainsTag(resuming.getSortedItems(), "@join"); 88 88 } 89 89 -
trunk/src/org/expeditee/io/WebParser.java
r1258 r1415 366 366 367 367 frameToAddTo = FrameIO.CreateFrame(frameToAddTo.getFramesetName(), pageTitle, null); 368 frameToAddTo.removeAllItems(frameToAddTo.get Items());368 frameToAddTo.removeAllItems(frameToAddTo.getSortedItems()); 369 369 370 370 try { -
trunk/src/org/expeditee/io/flowlayout/DimensionExtent.java
r1102 r1415 38 38 public static DimensionExtent calcMinMaxXExtent(List<Item>items) 39 39 { 40 41 40 int min_x = Integer.MAX_VALUE; 42 int max_x = Integer.MIN_VALUE ;41 int max_x = Integer.MIN_VALUE + 1; // +1 makes it safe to do math.abs on 43 42 44 43 for (Item item : items) { … … 59 58 public static DimensionExtent calcMinMaxYExtent(List<Item>items) 60 59 { 61 62 60 int min_y = Integer.MAX_VALUE; 63 int max_y = Integer.MIN_VALUE ;61 int max_y = Integer.MIN_VALUE + 1; // +1 makes it safe to do math.abs on 64 62 65 63 for (Item item : items) { -
trunk/src/org/expeditee/io/flowlayout/XGroupItem.java
r1102 r1415 635 635 double enclosureArea = 0.0; 636 636 637 for (Item i : frame.get Items()) {637 for (Item i : frame.getSortedItems()) { 638 638 639 639 // Go through all the enclosures ... -
trunk/src/org/expeditee/items/Circle.java
r1402 r1415 28 28 import org.expeditee.core.Stroke; 29 29 import org.expeditee.core.bounds.AxisAlignedBoxBounds; 30 import org.expeditee.core.bounds.CombinationBoxBounds;31 30 import org.expeditee.core.bounds.EllipticalBounds; 32 31 import org.expeditee.core.bounds.PolygonBounds; -
trunk/src/org/expeditee/items/Dot.java
r1318 r1415 392 392 // TODO is the code below needed... what for? 393 393 for (Line line : getLines()) { 394 if (line.getID() < 0 && !current.get Items().contains(line)) {394 if (line.getID() < 0 && !current.getSortedItems().contains(line)) { 395 395 line.setID(current.getNextItemID()); 396 396 line.setHighlightColorToDefault(); -
trunk/src/org/expeditee/items/Item.java
r1414 r1415 48 48 import org.expeditee.core.bounds.PolygonBounds; 49 49 import org.expeditee.encryption.items.surrogates.EncryptionDetail; 50 import org.expeditee.encryption.items.surrogates.EncryptionDetail.Type; 51 import org.expeditee.encryption.items.surrogates.Label; 52 import org.expeditee.encryption.items.surrogates.Label.LabelResult; 50 53 //import org.expeditee.encryption.items.surrogates.Surrogate; 51 54 import org.expeditee.gio.EcosystemManager; … … 156 159 157 160 public static final Cursor.CursorType CROP_CURSOR = Cursor.CursorType.CROSSHAIR; 158 161 159 162 /** The default value for integer attributes */ 160 163 public static final int DEFAULT_INTEGER = -1; 161 164 162 165 private static final int BRIGHTNESS = 185; 163 166 164 167 /** Contains all dots (including this one) that form an enclosure if this dot is part of an enclosing shape. */ 165 168 private Collection<Item> _enclosure = null; … … 317 320 318 321 private Data _data = new Data(); 322 323 // Used via reflection by AttributeUtils to determine if the boolean value is different from default. 324 public static final boolean acceptsKeyboardEnterDefault = false; 325 private boolean _acceptsKeyboardEnter = acceptsKeyboardEnterDefault; 319 326 320 327 private Item surrogateFor = null; … … 326 333 327 334 { 335 EncryptionDetail unencryptedOnSave = new EncryptionDetail(EncryptionDetail.Type.UnencryptedOnSave); 328 336 for(Character tag: DefaultFrameWriter.getItemTags().keySet()) { 329 337 if (tag == 'T' || tag == 'S') { … … 332 340 surrogatePropertyInheritanceDefault.put(tag + "", true); 333 341 } 334 primaryPropertyEncryptionDefault.put(tag + "", EncryptionDetail.UnencryptedOnSave);342 primaryPropertyEncryptionDefault.put(tag + "", unencryptedOnSave); 335 343 } 336 344 337 345 for(String tag: DefaultFrameWriter.getItemTagsExt().keySet()) { 338 346 surrogatePropertyInheritanceDefault.put(tag, true); 339 primaryPropertyEncryptionDefault.put(tag, EncryptionDetail.UnencryptedOnSave);347 primaryPropertyEncryptionDefault.put(tag, unencryptedOnSave); 340 348 } 341 349 } … … 383 391 dest.setLinkTemplate(this.getLinkTemplate()); 384 392 385 // dest.set MaxWidth(this.getMaxWidth());393 // dest.setWidth(this.getWidth()); 386 394 387 395 dest.setOffset(this.getOffset()); … … 424 432 } 425 433 426 final String currentUser = UserSettings.UserName.get(); 427 if (parent != null && (parent.getOwner() == null || currentUser.compareTo(parent.getOwner()) != 0)) { 428 dest.setOwner(currentUser); 429 } 434 String currentUser = UserSettings.UserName.get(); 435 // if (parent != null && !currentUser.equals(parent.getOwner())) { 436 // //dest.setOwner(currentUser); 437 // } else { 438 // System.err.println("I have duplicated a item and made it owned by " 439 // + "current user, whereas the old code would not have " 440 // + "changed ownership at this time."); 441 // System.err.println("Item: " + dest + ", Class: " + dest.getClass()); 442 // System.err.println("Current owner: " + dest.getOwner()); 443 // System.err.println("Current user: " + currentUser); 444 // } 445 dest.setOwner(currentUser); 430 446 } 431 447 … … 438 454 Item primary = getPrimary(); 439 455 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.DOT_TYPE_STR)) { 440 primary.primaryPropertyEncryption.put(DefaultFrameWriter.DOT_TYPE_STR, EncryptionDetail.InheritanceCheckOnSave); 456 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 457 primary.primaryPropertyEncryption.put(DefaultFrameWriter.DOT_TYPE_STR, inheritanceCheckOnSave); 441 458 } 442 459 } … … 461 478 Item primary = getPrimary(); 462 479 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.DOT_TYPE_STR)) { 463 primary.primaryPropertyEncryption.put(DefaultFrameWriter.FILLED_STR, EncryptionDetail.InheritanceCheckOnSave); 480 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 481 primary.primaryPropertyEncryption.put(DefaultFrameWriter.FILLED_STR, inheritanceCheckOnSave); 464 482 } 465 483 } … … 494 512 Item primary = getPrimary(); 495 513 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.DOT_TYPE_STR)) { 496 primary.primaryPropertyEncryption.put(DefaultFrameWriter.GRADIENT_ANGLE_STR, EncryptionDetail.InheritanceCheckOnSave); 514 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 515 primary.primaryPropertyEncryption.put(DefaultFrameWriter.GRADIENT_ANGLE_STR, inheritanceCheckOnSave); 497 516 } 498 517 } … … 567 586 Item primary = getPrimary(); 568 587 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.DOT_TYPE_STR)) { 569 primary.primaryPropertyEncryption.put(DefaultFrameWriter.PERMISSION_STR, EncryptionDetail.InheritanceCheckOnSave); 588 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 589 primary.primaryPropertyEncryption.put(DefaultFrameWriter.PERMISSION_STR, inheritanceCheckOnSave); 570 590 } 571 591 } … … 1114 1134 Item primary = getPrimary(); 1115 1135 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.FORMULA_STR)) { 1116 primary.primaryPropertyEncryption.put(DefaultFrameWriter.FORMULA_STR, EncryptionDetail.InheritanceCheckOnSave); 1136 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 1137 primary.primaryPropertyEncryption.put(DefaultFrameWriter.FORMULA_STR, inheritanceCheckOnSave); 1117 1138 } 1118 1139 } … … 1389 1410 if (otherBounds.equals(thisBounds)) return true; 1390 1411 1391 return otherBounds.intersects(thisBounds); 1412 boolean intersects = otherBounds.intersects(thisBounds); 1413 1414 /*if (intersects) { 1415 System.err.println("Found intersection between this item (" + this + ") with bounds: " + thisBounds + "...and..."); 1416 System.err.println("item with bounds: " + otherBounds.toString()); 1417 }*/ 1418 return intersects; 1392 1419 1393 1420 // Need to check the second equality so that we dont pick up circles … … 1523 1550 Item primary = getPrimary(); 1524 1551 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.TOOLTIP_STR)) { 1525 primary.primaryPropertyEncryption.put(DefaultFrameWriter.TOOLTIP_STR, EncryptionDetail.InheritanceCheckOnSave); 1552 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 1553 primary.primaryPropertyEncryption.put(DefaultFrameWriter.TOOLTIP_STR, inheritanceCheckOnSave); 1526 1554 } 1527 1555 } … … 1827 1855 Item primary = getPrimary(); 1828 1856 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.ACTION_STR)) { 1829 primary.primaryPropertyEncryption.put(DefaultFrameWriter.ACTION_STR, EncryptionDetail.InheritanceCheckOnSave); 1857 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 1858 primary.primaryPropertyEncryption.put(DefaultFrameWriter.ACTION_STR, inheritanceCheckOnSave); 1830 1859 } 1831 1860 } … … 1847 1876 Item primary = getPrimary(); 1848 1877 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.DATA_STR)) { 1849 primary.primaryPropertyEncryption.put(DefaultFrameWriter.DATA_STR, EncryptionDetail.InheritanceCheckOnSave); 1878 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 1879 primary.primaryPropertyEncryption.put(DefaultFrameWriter.DATA_STR, inheritanceCheckOnSave); 1850 1880 } 1851 1881 } … … 1863 1893 Item primary = getPrimary(); 1864 1894 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.ACTION_CURSOR_ENTER_STR)) { 1865 primary.primaryPropertyEncryption.put(DefaultFrameWriter.ACTION_CURSOR_ENTER_STR, EncryptionDetail.InheritanceCheckOnSave); 1895 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 1896 primary.primaryPropertyEncryption.put(DefaultFrameWriter.ACTION_CURSOR_ENTER_STR, inheritanceCheckOnSave); 1866 1897 } 1867 1898 } … … 1875 1906 Item primary = getPrimary(); 1876 1907 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.ACTION_CURSOR_LEAVE_STR)) { 1877 primary.primaryPropertyEncryption.put(DefaultFrameWriter.ACTION_CURSOR_LEAVE_STR, EncryptionDetail.InheritanceCheckOnSave); 1908 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 1909 primary.primaryPropertyEncryption.put(DefaultFrameWriter.ACTION_CURSOR_LEAVE_STR, inheritanceCheckOnSave); 1878 1910 } 1879 1911 } … … 1887 1919 Item primary = getPrimary(); 1888 1920 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.ACTION_ENTER_FRAME_STR)) { 1889 primary.primaryPropertyEncryption.put(DefaultFrameWriter.ACTION_ENTER_FRAME_STR, EncryptionDetail.InheritanceCheckOnSave); 1921 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 1922 primary.primaryPropertyEncryption.put(DefaultFrameWriter.ACTION_ENTER_FRAME_STR, inheritanceCheckOnSave); 1890 1923 } 1891 1924 } … … 1899 1932 Item primary = getPrimary(); 1900 1933 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.ACTION_LEAVE_FRAME_STR)) { 1901 primary.primaryPropertyEncryption.put(DefaultFrameWriter.ACTION_LEAVE_FRAME_STR, EncryptionDetail.InheritanceCheckOnSave); 1934 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 1935 primary.primaryPropertyEncryption.put(DefaultFrameWriter.ACTION_LEAVE_FRAME_STR, inheritanceCheckOnSave); 1902 1936 } 1903 1937 } … … 1914 1948 Item primary = getPrimary(); 1915 1949 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.ACTION_MARK_STR)) { 1916 primary.primaryPropertyEncryption.put(DefaultFrameWriter.ACTION_MARK_STR, EncryptionDetail.InheritanceCheckOnSave); 1950 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 1951 primary.primaryPropertyEncryption.put(DefaultFrameWriter.ACTION_MARK_STR, inheritanceCheckOnSave); 1917 1952 } 1918 1953 } … … 1947 1982 Item primary = getPrimary(); 1948 1983 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.ARROW_STR)) { 1949 primary.primaryPropertyEncryption.put(DefaultFrameWriter.ARROW_STR, EncryptionDetail.InheritanceCheckOnSave); 1984 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 1985 primary.primaryPropertyEncryption.put(DefaultFrameWriter.ARROW_STR, inheritanceCheckOnSave); 1950 1986 } 1951 1987 } … … 1985 2021 Item primary = getPrimary(); 1986 2022 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.BACKGROUND_COLOR_STR)) { 1987 primary.primaryPropertyEncryption.put(DefaultFrameWriter.BACKGROUND_COLOR_STR, EncryptionDetail.InheritanceCheckOnSave); 2023 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 2024 primary.primaryPropertyEncryption.put(DefaultFrameWriter.BACKGROUND_COLOR_STR, inheritanceCheckOnSave); 1988 2025 } 1989 2026 } … … 2000 2037 Item primary = getPrimary(); 2001 2038 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.BORDER_COLOR_STR)) { 2002 primary.primaryPropertyEncryption.put(DefaultFrameWriter.BORDER_COLOR_STR, EncryptionDetail.InheritanceCheckOnSave); 2039 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 2040 primary.primaryPropertyEncryption.put(DefaultFrameWriter.BORDER_COLOR_STR, inheritanceCheckOnSave); 2003 2041 } 2004 2042 } … … 2039 2077 Item primary = getPrimary(); 2040 2078 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.CONSTRAINT_IDS_STR)) { 2041 primary.primaryPropertyEncryption.put(DefaultFrameWriter.CONSTRAINT_IDS_STR, EncryptionDetail.InheritanceCheckOnSave); 2079 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 2080 primary.primaryPropertyEncryption.put(DefaultFrameWriter.CONSTRAINT_IDS_STR, inheritanceCheckOnSave); 2042 2081 } 2043 2082 } … … 2068 2107 Item primary = getPrimary(); 2069 2108 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.DATE_CREATED_STR)) { 2070 primary.primaryPropertyEncryption.put(DefaultFrameWriter.DATE_CREATED_STR, EncryptionDetail.InheritanceCheckOnSave); 2109 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 2110 primary.primaryPropertyEncryption.put(DefaultFrameWriter.DATE_CREATED_STR, inheritanceCheckOnSave); 2071 2111 } 2072 2112 } … … 2091 2131 Item primary = getPrimary(); 2092 2132 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.FILL_COLOR_STR)) { 2093 primary.primaryPropertyEncryption.put(DefaultFrameWriter.FILL_COLOR_STR, EncryptionDetail.InheritanceCheckOnSave); 2133 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 2134 primary.primaryPropertyEncryption.put(DefaultFrameWriter.FILL_COLOR_STR, inheritanceCheckOnSave); 2094 2135 } 2095 2136 } … … 2112 2153 Item primary = getPrimary(); 2113 2154 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.GRADIENT_COLOR_STR)) { 2114 primary.primaryPropertyEncryption.put(DefaultFrameWriter.GRADIENT_COLOR_STR, EncryptionDetail.InheritanceCheckOnSave); 2155 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 2156 primary.primaryPropertyEncryption.put(DefaultFrameWriter.GRADIENT_COLOR_STR, inheritanceCheckOnSave); 2115 2157 } 2116 2158 } … … 2134 2176 Item primary = getPrimary(); 2135 2177 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.FILL_PATTERN_STR)) { 2136 primary.primaryPropertyEncryption.put(DefaultFrameWriter.FILL_PATTERN_STR, EncryptionDetail.InheritanceCheckOnSave); 2178 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 2179 primary.primaryPropertyEncryption.put(DefaultFrameWriter.FILL_PATTERN_STR, inheritanceCheckOnSave); 2137 2180 } 2138 2181 } … … 2156 2199 Item primary = getPrimary(); 2157 2200 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.HIGHLIGHT_STR)) { 2158 primary.primaryPropertyEncryption.put(DefaultFrameWriter.HIGHLIGHT_STR, EncryptionDetail.InheritanceCheckOnSave); 2201 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 2202 primary.primaryPropertyEncryption.put(DefaultFrameWriter.HIGHLIGHT_STR, inheritanceCheckOnSave); 2159 2203 } 2160 2204 } … … 2175 2219 Item primary = getPrimary(); 2176 2220 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.TYPE_AND_ID_STR)) { 2177 primary.primaryPropertyEncryption.put(DefaultFrameWriter.TYPE_AND_ID_STR, EncryptionDetail.InheritanceCheckOnSave); 2221 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 2222 primary.primaryPropertyEncryption.put(DefaultFrameWriter.TYPE_AND_ID_STR, inheritanceCheckOnSave); 2178 2223 } 2179 2224 } … … 2191 2236 Item primary = getPrimary(); 2192 2237 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.LINE_IDS_STR)) { 2193 primary.primaryPropertyEncryption.put(DefaultFrameWriter.LINE_IDS_STR, EncryptionDetail.InheritanceCheckOnSave); 2238 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 2239 primary.primaryPropertyEncryption.put(DefaultFrameWriter.LINE_IDS_STR, inheritanceCheckOnSave); 2194 2240 } 2195 2241 } … … 2206 2252 Item primary = getPrimary(); 2207 2253 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.LINE_PATTERN_STR)) { 2208 primary.primaryPropertyEncryption.put(DefaultFrameWriter.LINE_PATTERN_STR, EncryptionDetail.InheritanceCheckOnSave); 2254 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 2255 primary.primaryPropertyEncryption.put(DefaultFrameWriter.LINE_PATTERN_STR, inheritanceCheckOnSave); 2209 2256 } 2210 2257 } … … 2246 2293 Item primary = getPrimary(); 2247 2294 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.LINK_STR)) { 2248 primary.primaryPropertyEncryption.put(DefaultFrameWriter.LINK_STR, EncryptionDetail.InheritanceCheckOnSave); 2295 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 2296 primary.primaryPropertyEncryption.put(DefaultFrameWriter.LINK_STR, inheritanceCheckOnSave); 2249 2297 } 2250 2298 } … … 2258 2306 Item primary = getPrimary(); 2259 2307 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.LINK_HISTORY_STR)) { 2260 primary.primaryPropertyEncryption.put(DefaultFrameWriter.LINK_HISTORY_STR, EncryptionDetail.InheritanceCheckOnSave); 2308 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 2309 primary.primaryPropertyEncryption.put(DefaultFrameWriter.LINK_HISTORY_STR, inheritanceCheckOnSave); 2261 2310 } 2262 2311 } … … 2284 2333 Item primary = getPrimary(); 2285 2334 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.LINK_FRAMESET_STR)) { 2286 primary.primaryPropertyEncryption.put(DefaultFrameWriter.LINK_FRAMESET_STR, EncryptionDetail.InheritanceCheckOnSave); 2335 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 2336 primary.primaryPropertyEncryption.put(DefaultFrameWriter.LINK_FRAMESET_STR, inheritanceCheckOnSave); 2287 2337 } 2288 2338 } … … 2299 2349 Item primary = getPrimary(); 2300 2350 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.LINK_MARK_STR)) { 2301 primary.primaryPropertyEncryption.put(DefaultFrameWriter.LINK_MARK_STR, EncryptionDetail.InheritanceCheckOnSave); 2351 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 2352 primary.primaryPropertyEncryption.put(DefaultFrameWriter.LINK_MARK_STR, inheritanceCheckOnSave); 2302 2353 } 2303 2354 } … … 2316 2367 Item primary = getPrimary(); 2317 2368 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.LINK_TEMPLATE_STR)) { 2318 primary.primaryPropertyEncryption.put(DefaultFrameWriter.LINK_TEMPLATE_STR, EncryptionDetail.InheritanceCheckOnSave); 2369 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 2370 primary.primaryPropertyEncryption.put(DefaultFrameWriter.LINK_TEMPLATE_STR, inheritanceCheckOnSave); 2319 2371 } 2320 2372 } … … 2350 2402 Item primary = getPrimary(); 2351 2403 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.OWNER_STR)) { 2352 primary.primaryPropertyEncryption.put(DefaultFrameWriter.OWNER_STR, EncryptionDetail.InheritanceCheckOnSave); 2404 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 2405 primary.primaryPropertyEncryption.put(DefaultFrameWriter.OWNER_STR, inheritanceCheckOnSave); 2353 2406 } 2354 2407 } … … 2541 2594 Item primary = getPrimary(); 2542 2595 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.POSITION_STR)) { 2543 primary.primaryPropertyEncryption.put(DefaultFrameWriter.POSITION_STR, EncryptionDetail.InheritanceCheckOnSave); 2596 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 2597 primary.primaryPropertyEncryption.put(DefaultFrameWriter.POSITION_STR, inheritanceCheckOnSave); 2544 2598 } 2545 2599 } … … 2585 2639 Item primary = getPrimary(); 2586 2640 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.THICKNESS_STR)) { 2587 primary.primaryPropertyEncryption.put(DefaultFrameWriter.THICKNESS_STR, EncryptionDetail.InheritanceCheckOnSave); 2641 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 2642 primary.primaryPropertyEncryption.put(DefaultFrameWriter.THICKNESS_STR, inheritanceCheckOnSave); 2588 2643 } 2589 2644 } … … 2697 2752 Item primary = getPrimary(); 2698 2753 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.POSITION_STR)) { 2699 primary.primaryPropertyEncryption.put(DefaultFrameWriter.POSITION_STR, EncryptionDetail.InheritanceCheckOnSave); 2754 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 2755 primary.primaryPropertyEncryption.put(DefaultFrameWriter.POSITION_STR, inheritanceCheckOnSave); 2700 2756 } 2701 2757 } … … 2715 2771 Item primary = getPrimary(); 2716 2772 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.POSITION_STR)) { 2717 primary.primaryPropertyEncryption.put(DefaultFrameWriter.POSITION_STR, EncryptionDetail.InheritanceCheckOnSave); 2773 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 2774 primary.primaryPropertyEncryption.put(DefaultFrameWriter.POSITION_STR, inheritanceCheckOnSave); 2718 2775 } 2719 2776 } … … 2827 2884 2828 2885 current.addItem(this, false); 2829 current. setResort(true);2886 current.invalidateSorted(); 2830 2887 setRelativeLink(); 2831 2888 setFloating(false); … … 3527 3584 Item primary = getPrimary(); 3528 3585 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.ANCHOR_LEFT_STR)) { 3529 primary.primaryPropertyEncryption.put(DefaultFrameWriter.ANCHOR_LEFT_STR, EncryptionDetail.InheritanceCheckOnSave); 3586 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 3587 primary.primaryPropertyEncryption.put(DefaultFrameWriter.ANCHOR_LEFT_STR, inheritanceCheckOnSave); 3530 3588 } 3531 3589 } … … 3543 3601 Item primary = getPrimary(); 3544 3602 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.ANCHOR_RIGHT_STR)) { 3545 primary.primaryPropertyEncryption.put(DefaultFrameWriter.ANCHOR_RIGHT_STR, EncryptionDetail.InheritanceCheckOnSave); 3603 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 3604 primary.primaryPropertyEncryption.put(DefaultFrameWriter.ANCHOR_RIGHT_STR, inheritanceCheckOnSave); 3546 3605 } 3547 3606 } … … 3559 3618 Item primary = getPrimary(); 3560 3619 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.ANCHOR_TOP_STR)) { 3561 primary.primaryPropertyEncryption.put(DefaultFrameWriter.ANCHOR_TOP_STR, EncryptionDetail.InheritanceCheckOnSave); 3620 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 3621 primary.primaryPropertyEncryption.put(DefaultFrameWriter.ANCHOR_TOP_STR, inheritanceCheckOnSave); 3562 3622 } 3563 3623 } … … 3576 3636 Item primary = getPrimary(); 3577 3637 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.ANCHOR_BOTTOM_STR)) { 3578 primary.primaryPropertyEncryption.put(DefaultFrameWriter.ANCHOR_BOTTOM_STR, EncryptionDetail.InheritanceCheckOnSave); 3638 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 3639 primary.primaryPropertyEncryption.put(DefaultFrameWriter.ANCHOR_BOTTOM_STR, inheritanceCheckOnSave); 3579 3640 } 3580 3641 } … … 3886 3947 Item primary = getPrimary(); 3887 3948 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.MAGNETIZED_ITEM_LEFT_STR)) { 3888 primary.primaryPropertyEncryption.put(DefaultFrameWriter.MAGNETIZED_ITEM_LEFT_STR, EncryptionDetail.InheritanceCheckOnSave); 3949 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 3950 primary.primaryPropertyEncryption.put(DefaultFrameWriter.MAGNETIZED_ITEM_LEFT_STR, inheritanceCheckOnSave); 3889 3951 } 3890 3952 } … … 3911 3973 Item primary = getPrimary(); 3912 3974 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.MAGNETIZED_ITEM_RIGHT_STR)) { 3913 primary.primaryPropertyEncryption.put(DefaultFrameWriter.MAGNETIZED_ITEM_RIGHT_STR, EncryptionDetail.InheritanceCheckOnSave); 3975 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 3976 primary.primaryPropertyEncryption.put(DefaultFrameWriter.MAGNETIZED_ITEM_RIGHT_STR, inheritanceCheckOnSave); 3914 3977 } 3915 3978 } … … 3936 3999 Item primary = getPrimary(); 3937 4000 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.MAGNETIZED_ITEM_TOP_STR)) { 3938 primary.primaryPropertyEncryption.put(DefaultFrameWriter.MAGNETIZED_ITEM_TOP_STR, EncryptionDetail.InheritanceCheckOnSave); 4001 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 4002 primary.primaryPropertyEncryption.put(DefaultFrameWriter.MAGNETIZED_ITEM_TOP_STR, inheritanceCheckOnSave); 3939 4003 } 3940 4004 } … … 3961 4025 Item primary = getPrimary(); 3962 4026 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.MAGNETIZED_ITEM_BOTTOM_STR)) { 3963 primary.primaryPropertyEncryption.put(DefaultFrameWriter.MAGNETIZED_ITEM_BOTTOM_STR, EncryptionDetail.InheritanceCheckOnSave); 4027 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 4028 primary.primaryPropertyEncryption.put(DefaultFrameWriter.MAGNETIZED_ITEM_BOTTOM_STR, inheritanceCheckOnSave); 3964 4029 } 3965 4030 } … … 3975 4040 3976 4041 public void setEncryptionLabel(String label) { 4042 if (this.getParent().getEncryptionLabel() == null) { 4043 MessageBay.displayMessage("Items can only be entrypted if the frame they are on is."); 4044 return; 4045 } 4046 LabelResult labelResult = Label.getLabel(label); 4047 if (labelResult != LabelResult.SuccessResolveLabelToKey) { 4048 MessageBay.displayMessage(labelResult.toString()); 4049 return; 4050 } 4051 3977 4052 this._encryptionLabel = label; 3978 4053 this.getSurrogates().clear(); … … 3980 4055 if (copy instanceof Text) { copy.setText("Encrypted"); } 3981 4056 this.addToSurrogates(copy); 4057 } 4058 4059 public void setEncryptionLabelOnLoad(String label) { 4060 this._encryptionLabel = label; 3982 4061 } 3983 4062 … … 4006 4085 Frame current = dot.getParentOrCurrentFrame(); 4007 4086 current.removeItem(dot); 4008 ItemUtils.EnclosedCheck(current.get Items());4087 ItemUtils.EnclosedCheck(current.getSortedItems()); 4009 4088 return text; 4010 4089 // TODO: Should this add the newly-created Text item to the frame? cts16 … … 4029 4108 current.addItem(dot); 4030 4109 DisplayController.setCursor(Item.DEFAULT_CURSOR); 4031 ItemUtils.EnclosedCheck(current.get Items());4110 ItemUtils.EnclosedCheck(current.getSortedItems()); 4032 4111 return dot; 4033 4112 } … … 4044 4123 this.surrogateItems.add(surrogate); 4045 4124 surrogate.setAsSurrogateFor(this); 4125 this.getParent().addItem(surrogate); 4126 4127 EncryptionDetail reencryptOnSave = new EncryptionDetail(EncryptionDetail.Type.ReencryptOnSave); 4128 EncryptionDetail unencryptedOnSave = new EncryptionDetail(EncryptionDetail.Type.UnencryptedOnSave); 4129 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 4046 4130 4047 4131 for (Character tag: DefaultFrameWriter.getItemTags().keySet()) { 4048 4132 if (tag == 'T') { 4049 primaryPropertyEncryption.put(tag + "", EncryptionDetail.ReencryptOnSave);4133 primaryPropertyEncryption.put(tag + "", reencryptOnSave.clone()); 4050 4134 } else { 4051 primaryPropertyEncryption.put(tag + "", EncryptionDetail.UnencryptedOnSave);4135 primaryPropertyEncryption.put(tag + "", unencryptedOnSave.clone()); 4052 4136 } 4053 4137 … … 4060 4144 4061 4145 for (String tag: DefaultFrameWriter.getItemTagsExt().keySet()) { 4062 primaryPropertyEncryption.put(tag, EncryptionDetail.UnencryptedOnSave);4146 primaryPropertyEncryption.put(tag, inheritanceCheckOnSave.clone()); 4063 4147 surrogate.surrogatePropertyInheritance.put(tag + "", true); 4064 4148 } … … 4077 4161 4078 4162 if (encryptionDetail == null) { 4079 return EncryptionDetail.UnencryptedOnSave; 4163 EncryptionDetail unencryptedOnSave = new EncryptionDetail(EncryptionDetail.Type.UnencryptedOnSave); 4164 return unencryptedOnSave; 4080 4165 } else { 4081 4166 return encryptionDetail; … … 4091 4176 } 4092 4177 4093 4094 /** 4095 * If when setting a property, we find that the primary has a undeciphered value, when we must containue using that undeciphered value 4178 public void setTagNotInherited(String tag) { 4179 surrogatePropertyInheritance.put(tag, false); 4180 } 4181 4182 public boolean hasAccessToItemAsPrimary() { 4183 String label = this.getEncryptionLabel(); 4184 if (this.isSurrogate() || label == null || label.length() == 0) { 4185 return true; 4186 } 4187 4188 return Label.getLabel(label) == LabelResult.SuccessResolveLabelToKey; 4189 } 4190 4191 4192 /** 4193 * If when setting a property, we find that the primary has a undeciphered value, when we must continue using that undeciphered value 4096 4194 * when eventually saving. 4097 4195 * @return 4098 4196 */ 4099 4197 protected boolean subjectToInheritanceCheckOnSave(String tag) { 4100 if (getPrimary() == null) return false; 4101 return getPrimary().primaryPropertyEncryption.get(tag) != EncryptionDetail.UseUndecipheredValueOnSave; 4198 Item primary = getPrimary(); 4199 if (primary == null) return false; 4200 EncryptionDetail primaryItemTagEncryptionDetail = primary.primaryPropertyEncryption.get(tag); 4201 Type primaryItemTagEncryptionDetailType = primaryItemTagEncryptionDetail.getEncryptionDetailType(); 4202 return primaryItemTagEncryptionDetailType != EncryptionDetail.Type.UseUndecipheredValueOnSave; 4203 } 4204 4205 public boolean acceptsKeyboardEnter() { 4206 return _acceptsKeyboardEnter; 4207 } 4208 4209 public void setAcceptsEnter(boolean value) { 4210 if (this.getText() != null && this.getText().equals("Beep")) { 4211 System.err.println(); 4212 } 4213 _acceptsKeyboardEnter = value; 4102 4214 } 4103 4215 } -
trunk/src/org/expeditee/items/ItemUtils.java
r1245 r1415 616 616 Item start = lineEndMap.get(c.getStart()); 617 617 Item end = lineEndMap.get(c.getEnd()); 618 int id = DisplayController.getCurrentFrame().getNextItemID();618 int id = start.getParent().getNextItemID(); 619 619 if (start != null && end != null) { 620 620 new Constraint(start, end, id, c.getType()); … … 748 748 749 749 public static void New() { 750 EnclosedCheck(DisplayController.getCurrentFrame().get Items());750 EnclosedCheck(DisplayController.getCurrentFrame().getSortedItems()); 751 751 } 752 752 753 753 public static void Old() { 754 OldEnclosedCheck(DisplayController.getCurrentFrame().get Items());754 OldEnclosedCheck(DisplayController.getCurrentFrame().getSortedItems()); 755 755 } 756 756 … … 1098 1098 return; 1099 1099 } 1100 EnclosedCheck(frame.get Items());1101 Justify(frame.get Items());1100 EnclosedCheck(frame.getSortedItems()); 1101 Justify(frame.getSortedItems()); 1102 1102 } 1103 1103 } -
trunk/src/org/expeditee/items/Text.java
r1414 r1415 409 409 Item primary = getPrimary(); 410 410 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.WIDTH_TO_SAVE_STR)) { 411 primary.primaryPropertyEncryption.put(DefaultFrameWriter.WIDTH_TO_SAVE_STR, EncryptionDetail.InheritanceCheckOnSave); 411 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 412 primary.primaryPropertyEncryption.put(DefaultFrameWriter.WIDTH_TO_SAVE_STR, inheritanceCheckOnSave); 412 413 } 413 414 } … … 432 433 Item primary = getPrimary(); 433 434 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.MIN_WIDTH_TO_SAVE_STR)) { 434 primary.primaryPropertyEncryption.put(DefaultFrameWriter.MIN_WIDTH_TO_SAVE_STR, EncryptionDetail.InheritanceCheckOnSave); 435 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 436 primary.primaryPropertyEncryption.put(DefaultFrameWriter.MIN_WIDTH_TO_SAVE_STR, inheritanceCheckOnSave); 435 437 } 436 438 } … … 453 455 return this.getPrimary().getWidth(); 454 456 } else { 457 if (_width == null || _width <= 0) 458 return null; 455 459 return _width; 456 460 } … … 458 462 459 463 public Integer getAbsoluteWidth() { 460 if (_width == null) { 464 if (_width == null || _width == Integer.MIN_VALUE) { 465 // When absoluting Integer.MIN_VALUE, the java API is defined to give you back Integer.MIN_VALUE!!?! 466 // This is because of the asymmetry of two's complement integer representation. 467 // We would prefer to use Integer.MAX_VALUE in this circumstance. 461 468 return Integer.MAX_VALUE; 462 469 } 463 470 464 471 return Math.abs(_width); 465 472 } … … 469 476 return this.getPrimary().getMinWidth(); 470 477 } else { 478 if (_minWidth == null || _minWidth <= 0) 479 return null; 471 480 return _minWidth; 472 481 } … … 513 522 Item primary = getPrimary(); 514 523 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.JUSTIFICATION_STR)) { 515 primary.primaryPropertyEncryption.put(DefaultFrameWriter.JUSTIFICATION_STR, EncryptionDetail.InheritanceCheckOnSave); 524 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 525 primary.primaryPropertyEncryption.put(DefaultFrameWriter.JUSTIFICATION_STR, inheritanceCheckOnSave); 516 526 } 517 527 } … … 694 704 Item primary = getPrimary(); 695 705 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.TEXT_STR)) { 696 primary.primaryPropertyEncryption.put(DefaultFrameWriter.TEXT_STR, EncryptionDetail.InheritanceCheckOnSave); 706 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 707 primary.primaryPropertyEncryption.put(DefaultFrameWriter.TEXT_STR, inheritanceCheckOnSave); 697 708 } 698 709 } … … 1327 1338 1328 1339 invalidateAll(); 1329 1340 1330 1341 if (isSurrogate()) { 1331 1342 surrogatePropertyInheritance.put(DefaultFrameWriter.FONT_STR, false); 1332 1343 Item primary = getPrimary(); 1333 1344 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.FONT_STR)) { 1334 primary.primaryPropertyEncryption.put(DefaultFrameWriter.FONT_STR, EncryptionDetail.InheritanceCheckOnSave); 1345 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 1346 primary.primaryPropertyEncryption.put(DefaultFrameWriter.FONT_STR, inheritanceCheckOnSave); 1335 1347 } 1336 1348 } … … 1554 1566 Item primary = getPrimary(); 1555 1567 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.SPACING_STR)) { 1556 primary.primaryPropertyEncryption.put(DefaultFrameWriter.SPACING_STR, EncryptionDetail.InheritanceCheckOnSave); 1568 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 1569 primary.primaryPropertyEncryption.put(DefaultFrameWriter.SPACING_STR, inheritanceCheckOnSave); 1557 1570 } 1558 1571 } … … 1595 1608 Item primary = getPrimary(); 1596 1609 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.WORD_SPACING_STR)) { 1597 primary.primaryPropertyEncryption.put(DefaultFrameWriter.WORD_SPACING_STR, EncryptionDetail.InheritanceCheckOnSave); 1610 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 1611 primary.primaryPropertyEncryption.put(DefaultFrameWriter.WORD_SPACING_STR, inheritanceCheckOnSave); 1598 1612 } 1599 1613 } … … 1626 1640 Item primary = getPrimary(); 1627 1641 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.LETTER_SPACING_STR)) { 1628 primary.primaryPropertyEncryption.put(DefaultFrameWriter.LETTER_SPACING_STR, EncryptionDetail.InheritanceCheckOnSave); 1642 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 1643 primary.primaryPropertyEncryption.put(DefaultFrameWriter.LETTER_SPACING_STR, inheritanceCheckOnSave); 1629 1644 } 1630 1645 } … … 1650 1665 Item primary = getPrimary(); 1651 1666 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.INITIAL_SPACING_STR)) { 1652 primary.primaryPropertyEncryption.put(DefaultFrameWriter.INITIAL_SPACING_STR, EncryptionDetail.InheritanceCheckOnSave); 1667 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 1668 primary.primaryPropertyEncryption.put(DefaultFrameWriter.INITIAL_SPACING_STR, inheritanceCheckOnSave); 1653 1669 } 1654 1670 } … … 1777 1793 1778 1794 int minX = Integer.MAX_VALUE; 1779 int maxX = Integer.MIN_VALUE ;1795 int maxX = Integer.MIN_VALUE + 1; // +1 makes it safe to do math.abs on 1780 1796 1781 1797 int minY = Integer.MAX_VALUE; 1782 int maxY = Integer.MIN_VALUE ;1798 int maxY = Integer.MIN_VALUE + 1; // +1 makes it safe to do math.abs on 1783 1799 1784 1800 float y = -1; … … 1892 1908 return; 1893 1909 } 1894 for (Item item : DisplayController.getCurrentFrame().get Items()) {1910 for (Item item : DisplayController.getCurrentFrame().getSortedItems()) { 1895 1911 if (item instanceof Line) { 1896 1912 lines.add(new org.expeditee.core.Line(((Line) item).getStartItem().getPosition(), … … 1914 1930 } 1915 1931 1916 float width = Float.MAX_VALUE;1932 float width = (float) Integer.MAX_VALUE; 1917 1933 if (limitWidth) { 1918 1934 if (_width == null) { … … 1945 1961 paintFont, 1946 1962 new Point(getX(), getY()), lines != null ? lines.toArray(new org.expeditee.core.Line[1]) : null, 1947 paintFont.getSize() > MINIMUM_FONT_SIZE ? (int) width : (int) Float.MAX_VALUE,1963 paintFont.getSize() > MINIMUM_FONT_SIZE ? (int) width : Integer.MAX_VALUE, 1948 1964 (int) getSpacing(), 1949 1965 true, … … 2553 2569 Integer width = getWidth(); 2554 2570 if (width == null || width < 0) { 2555 setWidth(Integer.MIN_VALUE + 1); 2571 setWidth(Integer.MIN_VALUE + 1); // +1 makes it safe to do math.abs on 2556 2572 } 2557 2573 } else if (frameWidth - getX() > ADJUST_WIDTH_THRESHOLD) { … … 2866 2882 Item primary = getPrimary(); 2867 2883 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.ANCHOR_LEFT_STR)) { 2868 primary.primaryPropertyEncryption.put(DefaultFrameWriter.ANCHOR_LEFT_STR, EncryptionDetail.InheritanceCheckOnSave); 2884 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 2885 primary.primaryPropertyEncryption.put(DefaultFrameWriter.ANCHOR_LEFT_STR, inheritanceCheckOnSave); 2869 2886 } 2870 2887 } … … 2900 2917 Item primary = getPrimary(); 2901 2918 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.ANCHOR_RIGHT_STR)) { 2902 primary.primaryPropertyEncryption.put(DefaultFrameWriter.ANCHOR_RIGHT_STR, EncryptionDetail.InheritanceCheckOnSave); 2919 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 2920 primary.primaryPropertyEncryption.put(DefaultFrameWriter.ANCHOR_RIGHT_STR, inheritanceCheckOnSave); 2903 2921 } 2904 2922 } … … 2941 2959 Item primary = getPrimary(); 2942 2960 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.ANCHOR_TOP_STR)) { 2943 primary.primaryPropertyEncryption.put(DefaultFrameWriter.ANCHOR_TOP_STR, EncryptionDetail.InheritanceCheckOnSave); 2961 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 2962 primary.primaryPropertyEncryption.put(DefaultFrameWriter.ANCHOR_TOP_STR, inheritanceCheckOnSave); 2944 2963 } 2945 2964 } … … 2987 3006 Item primary = getPrimary(); 2988 3007 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.ANCHOR_BOTTOM_STR)) { 2989 primary.primaryPropertyEncryption.put(DefaultFrameWriter.ANCHOR_BOTTOM_STR, EncryptionDetail.InheritanceCheckOnSave); 3008 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 3009 primary.primaryPropertyEncryption.put(DefaultFrameWriter.ANCHOR_BOTTOM_STR, inheritanceCheckOnSave); 2990 3010 } 2991 3011 } … … 3101 3121 // 3102 3122 // int min_xl = Integer.MAX_VALUE; 3103 // int max_xr = Integer.MIN_VALUE ;3123 // int max_xr = Integer.MIN_VALUE + 1; // +1 makes it safe to do math.abs on 3104 3124 // 3105 3125 // int min_yt = Integer.MAX_VALUE; 3106 // int max_yb = Integer.MIN_VALUE ;3126 // int max_yb = Integer.MIN_VALUE + 1; // +1 makes it safe to do math.abs on 3107 3127 // 3108 3128 // … … 3168 3188 Item primary = getPrimary(); 3169 3189 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.AUTO_WRAP_TO_SAVE_STR)) { 3170 primary.primaryPropertyEncryption.put(DefaultFrameWriter.AUTO_WRAP_TO_SAVE_STR, EncryptionDetail.InheritanceCheckOnSave); 3190 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 3191 primary.primaryPropertyEncryption.put(DefaultFrameWriter.AUTO_WRAP_TO_SAVE_STR, inheritanceCheckOnSave); 3171 3192 } 3172 3193 } … … 3307 3328 Item primary = getPrimary(); 3308 3329 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.MASK_STR)) { 3309 primary.primaryPropertyEncryption.put(DefaultFrameWriter.MASK_STR, EncryptionDetail.InheritanceCheckOnSave); 3330 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 3331 primary.primaryPropertyEncryption.put(DefaultFrameWriter.MASK_STR, inheritanceCheckOnSave); 3310 3332 } 3311 3333 } … … 3330 3352 Item primary = getPrimary(); 3331 3353 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.PLACEHOLDER_STR)) { 3332 primary.primaryPropertyEncryption.put(DefaultFrameWriter.PLACEHOLDER_STR, EncryptionDetail.InheritanceCheckOnSave); 3354 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 3355 primary.primaryPropertyEncryption.put(DefaultFrameWriter.PLACEHOLDER_STR, inheritanceCheckOnSave); 3333 3356 } 3334 3357 } … … 3360 3383 Item primary = getPrimary(); 3361 3384 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.SINGLE_LINE_ONLY_STR)) { 3362 primary.primaryPropertyEncryption.put(DefaultFrameWriter.SINGLE_LINE_ONLY_STR, EncryptionDetail.InheritanceCheckOnSave); 3385 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 3386 primary.primaryPropertyEncryption.put(DefaultFrameWriter.SINGLE_LINE_ONLY_STR, inheritanceCheckOnSave); 3363 3387 } 3364 3388 } … … 3380 3404 Item primary = getPrimary(); 3381 3405 if (subjectToInheritanceCheckOnSave(DefaultFrameWriter.TAB_INDEX_STR)) { 3382 primary.primaryPropertyEncryption.put(DefaultFrameWriter.TAB_INDEX_STR, EncryptionDetail.InheritanceCheckOnSave); 3406 EncryptionDetail inheritanceCheckOnSave = new EncryptionDetail(EncryptionDetail.Type.InheritanceCheckOnSave); 3407 primary.primaryPropertyEncryption.put(DefaultFrameWriter.TAB_INDEX_STR, inheritanceCheckOnSave); 3383 3408 } 3384 3409 } -
trunk/src/org/expeditee/items/XRayable.java
r1402 r1415 26 26 import org.expeditee.core.Point; 27 27 import org.expeditee.gui.DisplayController; 28 import org.expeditee.gui.FrameGraphics;29 28 30 29 public abstract class XRayable extends Item { -
trunk/src/org/expeditee/network/FrameShare.java
r919 r1415 414 414 415 415 List<File> imageFiles = new LinkedList<File>(); 416 for(Item i : toSave.get Items()) {416 for(Item i : toSave.getSortedItems()) { 417 417 if(i instanceof Picture) { 418 418 ((Picture) i).moveToImagesFolder(); -
trunk/src/org/expeditee/setting/ArraySetting.java
r1242 r1415 37 37 } 38 38 39 public T getSafe(int i) { 40 41 if(i < _value.length){ 42 39 public T getSafe(int i) { 40 if(i < _value.length) { 43 41 return _value[i]; 44 42 } 45 else {43 else { 46 44 return _default[i]; 47 45 } … … 71 69 72 70 if (_value.length > 0) { 73 Frame arrayFrame = FrameIO.CreateFrame(frameset, null, null); 74 arrayFrame.getTitleItem().delete(); 75 76 int x = 100; 77 int y = 100; 78 for (T v: _value) { 79 if (v == null) continue; 80 Text representation; 81 if (v instanceof Representable) { 82 representation = ((Representable) v).generateRepresentation("Array Entry", ""); 83 representation.setPosition(x, y); 84 representation.setID(arrayFrame.getNextItemID()); 85 arrayFrame.addItem(representation); 86 } else { 87 representation = arrayFrame.addText(x, y, v.toString(), null); 88 } 89 y += representation.getBoundsHeight(); 90 } 91 FrameIO.ForceSaveFrame(arrayFrame); 92 t.setLink(arrayFrame.getName()); 71 createChildFrame(frameset, t, null); 93 72 } 94 73 95 74 return t; 96 75 } 76 77 protected void createChildFrame(String frameset, Text t, String frameTitle) { 78 Frame arrayFrame = FrameIO.CreateFrame(frameset, frameTitle, null); 79 80 if (frameTitle != null) { 81 arrayFrame.getTitleItem().delete(); 82 } 83 84 int x = 100; 85 int y = 100; 86 for (T v: _value) { 87 if (v == null) continue; 88 Text representation; 89 if (v instanceof Representable) { 90 representation = ((Representable) v).generateRepresentation("Array Entry", ""); 91 representation.setPosition(x, y); 92 representation.setID(arrayFrame.getNextItemID()); 93 arrayFrame.addItem(representation); 94 } else { 95 representation = arrayFrame.addText(x, y, v.toString(), null); 96 } 97 y += representation.getBoundsHeight(); 98 } 99 FrameIO.ForceSaveFrame(arrayFrame); 100 t.setLink(arrayFrame.getName()); 101 } 97 102 } -
trunk/src/org/expeditee/settings/Settings.java
r1393 r1415 21 21 import java.lang.reflect.Field; 22 22 import java.lang.reflect.Method; 23 import java.util.Collection; 23 24 import java.util.HashMap; 24 25 import java.util.Iterator; … … 30 31 import org.expeditee.gui.FrameCreator; 31 32 import org.expeditee.gui.MessageBay; 33 import org.expeditee.items.Item; 34 import org.expeditee.items.ItemParentStateChangedEvent; 32 35 import org.expeditee.items.Text; 33 36 import org.expeditee.items.widgets.Password; … … 194 197 } 195 198 196 if(s == null) continue; 199 if(s == null) { 200 continue; 201 } 197 202 198 203 if(validPages.size() > 1) { … … 226 231 } 227 232 233 // Having parsed this page, we must alter all the items on the frame that they are no longer being shown. 234 // For things such as WidgetCorners, this means that they will be removed from live consideration. 235 Collection<Item> allItems = child.getAllItems(); 236 for (Item i: allItems) { 237 i.onParentStateChanged(new ItemParentStateChangedEvent(child, ItemParentStateChangedEvent.EVENT_TYPE_HIDDEN)); 238 } 239 228 240 // if the page was a settings page, check if it has any subpages 229 241 for(Text t : child.getTextItems()) { … … 275 287 int x = 0, y = 0; 276 288 289 Frame currentFrame = frames.getCurrentFrame(); 277 290 if (key.toLowerCase().equals("pass")) { 278 291 // Special case for Password widgets … … 280 293 Password pw = new Password(passwordWidgetText, null); 281 294 pw.setPassword(""); 282 frames.getCurrentFrame().removeItem(passwordWidgetText);283 frames.getCurrentFrame().addAllItems(pw.getItems());295 currentFrame.removeItem(passwordWidgetText); 296 currentFrame.addAllItems(pw.getItems()); 284 297 x = passwordWidgetText.getX() + passwordWidgetText.getBoundsWidth(); 285 298 y = passwordWidgetText.getY(); … … 291 304 // Construct and add text representation for setting. 292 305 // If a setting has no initialised value then it is not included. 293 Text settingRepresentation = setting.generateRepresentation(key, frames.getCurrentFrame().getFramesetName()).copy(); 294 if (settingRepresentation.getBounds() == null) { 306 String framesetName = currentFrame.getFramesetName(); 307 Text template = setting.generateRepresentation(key, framesetName); 308 if (template == null) { 295 309 continue; 296 310 } 297 settingRepresentation.setID(frames.getCurrentFrame().getNextItemID()); 311 Text settingRepresentation = template.copy(); 312 if (settingRepresentation == null || settingRepresentation.getBounds() == null) { 313 continue; 314 } 315 settingRepresentation.setID(currentFrame.getNextItemID()); 298 316 frames.addItem(settingRepresentation, false); 299 317 x = settingRepresentation.getX() + settingRepresentation.getBoundsWidth(); … … 303 321 x = Math.max(250, x + 20); 304 322 // Add tooltip for setting 305 Text tooltip = frames.getCurrentFrame().addText(x, y, "// " + setting.getTooltip(), null);323 Text tooltip = currentFrame.addText(x, y, "// " + setting.getTooltip(), null); 306 324 tooltip.rebuild(true); 307 325 if (tooltip.getY() + tooltip.getBoundsHeight() > frames.getLastY()) { -
trunk/src/org/expeditee/settings/UserSettings.java
r1403 r1415 283 283 } 284 284 285 // public static void appendDefaultFolders() {286 // if (PublicAndPrivateResources && AuthenticatorBrowser.isAuthenticated()) {287 // // The comments here explain how things have changed with the new regime.288 // // FrameDirs289 // // 1. PROFILE_PATH Still points to same place.290 // // 2. SHARED_FRAMESETS_PATH Still points to same place. (encryption stops just anyone reading it)291 // // 3. framesets-<username> Generated on user account creation and must be refreshed on user switching. Also gives access to tutorial stuffs.292 // // 4. FRAME_PATH <expeditee-home>\resources-public\framesets.293 // // 5. HELP_PUBLIC_PATH <expeditee-home>\resources-public\documentation.294 // // 6. MESSAGES_PATH Still points to same place. Should these be per user and encrypted?295 // // 7. PUBLIC_PATH Still points to same place. Kept for compatibility.296 // FolderSettings.FrameDirs.addAbsoluteDir(FrameIO.PROFILE_PATH);297 // FolderSettings.FrameDirs.addAbsoluteDir(FrameIO.FRAME_PRIVATE_PATH);298 // FolderSettings.FrameDirs.addAbsoluteDir(FrameIO.SHARED_FRAMESETS_PATH);299 // FolderSettings.FrameDirs.addAbsoluteDir(FrameIO.FRAME_PATH);300 // FolderSettings.FrameDirs.addAbsoluteDir(FrameIO.RESOURCES_PATH);301 // FolderSettings.FrameDirs.addAbsoluteDir(FrameIO.MESSAGES_PATH);302 // FolderSettings.FrameDirs.addAbsoluteDir(FrameIO.PUBLIC_PATH);303 // FolderSettings.FrameDirs.addAbsoluteDir(FrameIO.HELP_PRIVATE_PATH);304 // FolderSettings.FrameDirs.addAbsoluteDir(FrameIO.MAIL_PATH);305 // FolderSettings.FrameDirs.setDefault(FolderSettings.FrameDirs.get());306 //307 // // ImageDirs308 // // 1. resources-<username>\images Generated on user account creation and must be refreshed on user switching.309 // // 2. IMAGES_PATH <expeditee-home>\resources-public\images310 // FolderSettings.ImageDirs.addAbsoluteDir(FrameIO.IMAGES_PRIVATE_PATH);311 // FolderSettings.ImageDirs.addAbsoluteDir(FrameIO.IMAGES_PATH);312 // FolderSettings.ImageDirs.setDefault(FolderSettings.ImageDirs.get());313 //314 // FolderSettings.AudioDirs.addAbsoluteDir(FrameIO.AUDIO_PRIVATE_PATH);315 // FolderSettings.AudioDirs.addAbsoluteDir(FrameIO.AUDIO_PATH);316 // FolderSettings.AudioDirs.setDefault(FolderSettings.AudioDirs.get());317 // } else {318 // FolderSettings.FrameDirs.addAbsoluteDir(FrameIO.FRAME_PATH);319 // FolderSettings.FrameDirs.addAbsoluteDir(FrameIO.PUBLIC_PATH);320 // FolderSettings.FrameDirs.addAbsoluteDir(FrameIO.PROFILE_PATH);321 // FolderSettings.FrameDirs.addAbsoluteDir(FrameIO.HELP_PATH);322 // FolderSettings.FrameDirs.addAbsoluteDir(FrameIO.MESSAGES_PATH);323 // if (FrameIO.FRAME_PRIVATE_PATH != null) {324 // FolderSettings.FrameDirs.addAbsoluteDir(FrameIO.FRAME_PRIVATE_PATH);325 // }326 // FolderSettings.FrameDirs.setDefault(FolderSettings.FrameDirs.get());327 //328 // FolderSettings.ImageDirs.addAbsoluteDir(FrameIO.IMAGES_PATH);329 // FolderSettings.ImageDirs.setDefault(FolderSettings.ImageDirs.get());330 //331 // FolderSettings.AudioDirs.addAbsoluteDir(FrameIO.AUDIO_PATH);332 // FolderSettings.AudioDirs.setDefault(FolderSettings.AudioDirs.get());333 // }334 // }335 336 285 /** 337 286 * Find the appropriate directory to store application settings in for -
trunk/src/org/expeditee/settings/identity/secrets/KeyList.java
r1241 r1415 1 1 package org.expeditee.settings.identity.secrets; 2 2 3 import java.util.List; 4 import java.util.function.Predicate; 5 6 import org.expeditee.gui.Frame; 3 7 import org.expeditee.items.Text; 8 import org.expeditee.setting.ArraySetting; 4 9 import org.expeditee.setting.TextSetting; 5 10 6 11 public class KeyList { 12 7 13 public static final TextSetting PersonalKey = new TextSetting("The AES key used to secure your profile frame - do not share with anyone!", "PersonalKey") { 8 14 @Override … … 20 26 } 21 27 }; 28 29 public static final ArraySetting<Text> UserLabels = new ArraySetting<Text>("The labels (and their associated keys) that you have either created or recieved.", 30 "UserLabels", new Text[] { }) { 31 32 @Override 33 public boolean setSetting(Text text) { 34 Frame child = text.getChild(); 35 if (child == null) { 36 return false; 37 } 38 39 Predicate<Text> hasNoData = t -> { 40 List<String> data = t.getData(); 41 return data == null || data.isEmpty(); 42 }; 43 List<Text> textItems = child.getBodyTextItems(false); 44 textItems.removeIf(hasNoData); 45 _value = textItems.toArray(new Text[] {}); 46 47 return true; 48 } 49 50 @Override 51 public Text generateRepresentation(String label, String frameset) { 52 Text t = new Text(label); 53 54 createChildFrame(frameset, t, "My Labels"); 55 56 return t; 57 } 58 }; 22 59 } -
trunk/src/org/expeditee/stats/TreeStats.java
r919 r1415 57 57 _treeFrames = 1; 58 58 // Now get all add all the trees for linked items 59 for (Item i : topFrame.get Items()) {59 for (Item i : topFrame.getSortedItems()) { 60 60 String link = i.getAbsoluteLink(); 61 61 if (link == null)
Note:
See TracChangeset
for help on using the changeset viewer.