Changeset 55
- Timestamp:
- 05/16/08 10:49:10 (16 years ago)
- Location:
- trunk/src/org/expeditee
- Files:
-
- 1 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/expeditee/gui/DisplayIO.java
r50 r55 16 16 17 17 import org.expeditee.items.Item; 18 import org.expeditee.items.ItemParentStateChangedEvent; 18 19 import org.expeditee.items.Picture; 19 20 import org.expeditee.stats.SessionStats; … … 338 339 && _CurrentFrames[0] != _CurrentFrames[1]) { 339 340 for (Item i : _CurrentFrames[getCurrentSide()].getItems()) { 340 i.onParentFameHidden(); 341 i.onParentStateChanged(new ItemParentStateChangedEvent( 342 _CurrentFrames[getCurrentSide()], 343 ItemParentStateChangedEvent.EVENT_TYPE_HIDDEN)); 341 344 } 342 345 } … … 345 348 // BROOK : TODO... 346 349 for (Item i : _CurrentFrames[getCurrentSide()].getItems()) { 347 i.onParentFameShown(false, 0); 350 i.onParentStateChanged(new ItemParentStateChangedEvent( 351 _CurrentFrames[getCurrentSide()], 352 ItemParentStateChangedEvent.EVENT_TYPE_SHOWN)); 348 353 } 349 354 } else { … … 397 402 // Notify items that they are hidden 398 403 for (Item i : items) { 399 i.onParentFameHidden(); 404 i.onParentStateChanged(new ItemParentStateChangedEvent( 405 _CurrentFrames[getCurrentSide()], 406 ItemParentStateChangedEvent.EVENT_TYPE_HIDDEN)); 400 407 } 401 408 } … … 426 433 // else ... 427 434 assert (owner != null); 428 i.onParentFameShown(true, owner.Level); 435 i.onParentStateChanged(new ItemParentStateChangedEvent( 436 _CurrentFrames[getCurrentSide()], 437 ItemParentStateChangedEvent.EVENT_TYPE_SHOWN_VIA_OVERLAY, 438 owner.Level)); 429 439 } 430 440 431 441 // Notify non-overlay items that they are shown 432 442 for (Item i : nonOverlayItems) { 433 i.onParentFameShown(false, 0); 443 i.onParentStateChanged(new ItemParentStateChangedEvent( 444 _CurrentFrames[getCurrentSide()], 445 ItemParentStateChangedEvent.EVENT_TYPE_SHOWN)); 434 446 } 435 447 } -
trunk/src/org/expeditee/items/InteractiveWidget.java
r28 r55 35 35 private WidgetEdge _l1, _l2, _l3, _l4; 36 36 37 /* GUIDE: 38 * l1 39 * d1-------d2 40 * | | 41 * l4 | X | 12 42 * | | 43 * d4-------d3 44 * 13 37 /* 38 * GUIDE: l1 d1-------d2 | | l4 | X | 12 | | d4-------d3 13 45 39 */ 46 40 private List<Item> _items; // used for quickly returning item list … … 112 106 113 107 int index = text.indexOf(':'); // used for signifying start of 114 108 // arguments 115 109 if (index == 0) 116 110 throw new IllegalArgumentException("Source text must begin with \"" … … 400 394 401 395 /** 396 * This is for consistancy and to make the code clearer. 397 * 398 * @return the corner chosen to listen for events from. 399 */ 400 private WidgetCorner getEventCorner() { 401 return _d4; 402 } 403 404 /** 402 405 * @return A copy of this widget 403 406 */ … … 504 507 _d3.setFloating(vfloating[2]); 505 508 _d4.setFloating(vfloating[3]); 506 509 507 510 } 508 511 … … 540 543 * @param x 541 544 * @param y 542 * @return True if need to call super.setPosition545 * @return False if need to call super.setPosition 543 546 */ 544 547 boolean setPositions(WidgetCorner src, int x, int y) { … … 707 710 } 708 711 709 public final void onParentFameHidden(WidgetCorner notifier) { 710 onRemovedFromFrame(notifier); 711 } 712 713 public final void onParentFameShown(WidgetCorner notifier, 714 boolean isOverlayed, int overlayLevel) { 715 addJComponantToFrame(notifier, isOverlayed, overlayLevel, true); 716 } 717 718 public void onRemovedFromFrame(WidgetCorner notifier) { 719 if (notifier == _d4) { 712 public void onParentStateChanged(ItemParentStateChangedEvent e) { 713 switch (e.getEventType()) { 714 715 case ItemParentStateChangedEvent.EVENT_TYPE_REMOVED: 716 case ItemParentStateChangedEvent.EVENT_TYPE_REMOVED_VIA_OVERLAY: 717 case ItemParentStateChangedEvent.EVENT_TYPE_HIDDEN: 720 718 if (_component.getParent() != null) { 721 719 _component.getParent().remove(_component); 722 720 } 723 } 724 } 725 726 public void onAddedToFrame(WidgetCorner notifier, boolean isOverlayed, 727 int overlayLevel) { 728 addJComponantToFrame(notifier, isOverlayed, overlayLevel, false); 729 } 730 731 private void addJComponantToFrame(WidgetCorner notifier, 732 boolean isOverlayed, int overlayLevel, boolean isShown) { 733 if (notifier == _d4) { 734 if (isOverlayed && overlayLevel == Item.PERMISSION_NONE) 735 return; // non-active overlays 736 721 break; 722 723 case ItemParentStateChangedEvent.EVENT_TYPE_ADDED: 724 case ItemParentStateChangedEvent.EVENT_TYPE_ADDED_VIA_OVERLAY: 725 case ItemParentStateChangedEvent.EVENT_TYPE_SHOWN: 726 case ItemParentStateChangedEvent.EVENT_TYPE_SHOWN_VIA_OVERLAY: 737 727 if (_component.getParent() == null) { 738 if (Browser._theBrowser != null) { 739 // Due to precaching - before adding physical swing 740 // componant must check 741 // to see that this widget belongs to a frame that is 742 // considered current. 743 // If the widget is shown however this does not apply - 744 // since it has been explicitly 745 // made clear the the widget is shown. 746 if (isShown 747 || _d1.getParent() == DisplayIO.getCurrentFrame()) { 748 Browser._theBrowser.getContentPane().add(_component); 749 layout(_component); 750 } 751 752 } else { // if widgets exist on startup frame this will occur 753 754 synchronized (_widgetsToAddLater) { 755 _widgetsToAddLater.add(new WidgetInfo(notifier, 756 isOverlayed, overlayLevel, this)); 757 } 758 SwingUtilities.invokeLater(new AddToFrameLater()); 759 } 760 } 761 } 728 addJComponantToFrame(e); 729 } 730 break; 731 732 } 733 } 734 735 protected void addJComponantToFrame(ItemParentStateChangedEvent e) { 736 737 if ((e.getEventType() == ItemParentStateChangedEvent.EVENT_TYPE_ADDED_VIA_OVERLAY || e 738 .getEventType() == ItemParentStateChangedEvent.EVENT_TYPE_SHOWN_VIA_OVERLAY) 739 && e.getOverlayLevel() == Item.PERMISSION_NONE) { 740 return; // item belongs to a non-active overlay 741 } 742 743 if (_component.getParent() == null) { 744 745 if (Browser._theBrowser != null) { 746 // Due to precaching - before adding physical swing 747 // componant must check to see that this widget belongs to a 748 // frame that is 749 // considered current. If the widget is shown however this does 750 // not apply - 751 // since it has been explicitly made clear the the widget is 752 // shown. 753 if (e.getEventType() == ItemParentStateChangedEvent.EVENT_TYPE_SHOWN 754 || e.getEventType() == ItemParentStateChangedEvent.EVENT_TYPE_SHOWN_VIA_OVERLAY 755 || e.getSource() == DisplayIO.getCurrentFrame()) { 756 Browser._theBrowser.getContentPane().add(_component); 757 layout(_component); 758 } 759 760 } else { // if widgets exist on startup frame this will occur 761 762 synchronized (_widgetsToAddLater) { 763 _widgetsToAddLater.add(new WidgetInfo(this, e)); 764 } 765 SwingUtilities.invokeLater(new AddToFrameLater()); 766 } 767 768 } 769 762 770 } 763 771 … … 769 777 class WidgetInfo { 770 778 771 WidgetInfo(WidgetCorner notifier, boolean isOverlayed, 772 int overlayLevel, InteractiveWidget widget) { 779 WidgetInfo(InteractiveWidget widget, ItemParentStateChangedEvent e) { 773 780 _widget = widget; 774 _isOverlayed = isOverlayed; 775 _overlayLevel = overlayLevel; 776 _notifier = notifier; 781 _e = e; 777 782 } 778 783 779 784 InteractiveWidget _widget; 780 785 781 boolean _isOverlayed; 782 783 int _overlayLevel; 784 785 WidgetCorner _notifier; 786 ItemParentStateChangedEvent _e; 786 787 } 787 788 … … 804 805 _widgetsToAddLater.clear(); 805 806 for (WidgetInfo iwi : tmp) { 806 iwi._widget.onAddedToFrame(iwi._notifier, iwi._isOverlayed, 807 iwi._overlayLevel); 807 iwi._widget.addJComponantToFrame(iwi._e); 808 808 } 809 809 } -
trunk/src/org/expeditee/items/Item.java
r50 r55 1429 1429 return _visible; 1430 1430 } 1431 1432 // BROOK: Overrideable 1433 public void onRemovedFromFrame() { 1434 } 1435 1436 public void onAddedToFrame(boolean isOverlayed, int overlayLevel) { 1437 } 1438 1439 public void onParentFameHidden() { 1440 } // because of caching 1441 1442 public void onParentFameShown(boolean isOverlayed, int overlayLevel) { 1443 } // because of caching 1444 1431 1432 /** 1433 * Raised whenever the item is removed, added, no longer in view (That is, when it is 1434 * not on any of the current frames, of overlays of the current frames) or 1435 * has become visible. That is, when it is either on a current frames, or an overlay of a current frame. 1436 * @param e The event 1437 */ 1438 public void onParentStateChanged(ItemParentStateChangedEvent e) {} 1439 1445 1440 public void setSelectedMode(SelectedMode mode, Color color) { 1446 1441 setSelectionColor(color); -
trunk/src/org/expeditee/items/WidgetCorner.java
r28 r55 30 30 31 31 @Override 32 public void onParentFameHidden() { 33 super.onParentFameHidden(); 34 _widgetSource.onParentFameHidden(this); 35 } 36 37 @Override 38 public void onParentFameShown(boolean isOverlayed, int overlayLevel) { 39 super.onParentFameShown(isOverlayed, overlayLevel); 40 _widgetSource.onParentFameShown(this, isOverlayed, overlayLevel); 41 } 42 43 @Override 44 public void onRemovedFromFrame() { 45 super.onRemovedFromFrame(); 46 _widgetSource.onRemovedFromFrame(this); 47 } 48 49 @Override 50 public void onAddedToFrame(boolean isOverlayed, int overlayLevel) { 51 super.onAddedToFrame(isOverlayed, overlayLevel); 52 _widgetSource.onAddedToFrame(this, isOverlayed, overlayLevel); 32 public void onParentStateChanged(ItemParentStateChangedEvent e) { 33 super.onParentStateChanged(e); 34 _widgetSource.onParentStateChanged(e); 53 35 } 54 36
Note:
See TracChangeset
for help on using the changeset viewer.