Changeset 34
- Timestamp:
- 05/14/08 09:54:52 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/expeditee/gui/DisplayIO.java
r25 r34 9 9 import java.awt.Toolkit; 10 10 import java.awt.image.MemoryImageSource; 11 import java.util.LinkedList; 11 12 import java.util.List; 12 13 import java.util.Stack; … … 342 343 _CurrentFrames[getCurrentSide()] = frame; 343 344 344 // BROOK 345 // BROOK : TODO... 345 346 for (Item i : _CurrentFrames[getCurrentSide()].getItems()) { 346 i.onParentFameShown( );347 i.onParentFameShown(false, 0); 347 348 } 348 349 } else { 350 349 351 // Notifying items on the frame being hidden that they 350 352 // are about to be hidden. 351 // ie. Widgets use this method to remove themselves from 352 // the JPanel 353 // ie. Widgets use this method to remove themselves from the JPanel 354 List<Frame> currentOnlyOverlays = new LinkedList<Frame>(); 355 List<Frame> nextOnlyOverlays = new LinkedList<Frame>(); 356 List<Frame> sharedOverlays = new LinkedList<Frame>(); 357 358 // Get all overlayed frames seen by the next frame 359 for (Overlay o : frame.getOverlaysDeep()) { 360 if (!nextOnlyOverlays.contains(o)) 361 nextOnlyOverlays.add(o.Frame); 362 } 363 364 // Get all overlayed frames seen by the current frame 353 365 if (_CurrentFrames[getCurrentSide()] != null) { 354 for (Item i : _CurrentFrames[getCurrentSide()].getItems()) { 366 for (Overlay o : _CurrentFrames[getCurrentSide()] 367 .getOverlaysDeep()) { 368 if (!currentOnlyOverlays.contains(o)) 369 currentOnlyOverlays.add(o.Frame); 370 } 371 } 372 373 // Extract shared overlays between the current and next frame 374 for (Frame of : currentOnlyOverlays) { 375 if (nextOnlyOverlays.contains(of)) { 376 sharedOverlays.add(of); 377 } 378 } 379 380 // The first set, currentOnlyOverlays, must be notified that they 381 // are hidden 382 List<Item> items = new LinkedList<Item>(); 383 384 // Notify items that will not be in view any more 385 if (_CurrentFrames[getCurrentSide()] != null) { 386 List<Frame> seen = new LinkedList<Frame>(); 387 seen.addAll(sharedOverlays); // Signify that seen all shared 388 // overlays 389 seen.remove(_CurrentFrames[getCurrentSide()]); // must ensure 390 // excluded 391 392 // Get all items seen from the current frame - including all 393 // possible non-shared overlays 394 FrameGraphics.AddAllOverlayItems(items, 395 _CurrentFrames[getCurrentSide()], seen); 396 397 // Notify items that they are hidden 398 for (Item i : items) { 355 399 i.onParentFameHidden(); 356 400 } 357 401 } 358 402 403 // Set the new frame 359 404 _CurrentFrames[getCurrentSide()] = frame; 360 405 frame.setMaxSize(FrameGraphics.getMaxFrameSize()); … … 362 407 // Notify items on the frame being displayed that they are in view 363 408 // ie. widgets use this method to add themselves to the content pane 364 for (Item i : _CurrentFrames[getCurrentSide()].getItems()) { 365 i.onParentFameShown(); 409 items.clear(); 410 411 // Get all items seen from the new frame - including all possible 412 // non-shared overlays 413 FrameGraphics.AddAllOverlayItems(items, 414 _CurrentFrames[getCurrentSide()], new LinkedList<Frame>()); 415 416 // Seperate current frames items from its overlayed items 417 List<Item> nonOverlayItems = _CurrentFrames[getCurrentSide()] 418 .getItems(); 419 items.removeAll(nonOverlayItems); 420 421 // Notify overlay items that they are shown 422 for (Item i : items) { 423 Overlay owner = _CurrentFrames[getCurrentSide()] 424 .getOverlayOwner(i); 425 // if (owner == null) i.onParentFameShown(false, 0); 426 // else ... 427 assert (owner != null); 428 i.onParentFameShown(true, owner.Level); 429 } 430 431 // Notify non-overlay items that they are shown 432 for (Item i : nonOverlayItems) { 433 i.onParentFameShown(false, 0); 366 434 } 367 435 }
Note:
See TracChangeset
for help on using the changeset viewer.