Ignore:
Timestamp:
07/03/08 16:48:09 (16 years ago)
Author:
bjn8
Message:

Added invalidation for graphics... biiiig commit. LOts of effeciency improvements - now can animate

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/expeditee/gui/DisplayIO.java

    r116 r121  
    1010import java.awt.geom.Point2D;
    1111import java.awt.image.MemoryImageSource;
     12import java.util.ArrayList;
    1213import java.util.Collection;
    1314import java.util.LinkedList;
     
    205206
    206207                if (Frame.itemAttachedToCursor()) {
    207                         List<Item> toMove = Frame.FreeItems;
     208                        List<Item> toMove = FreeItems.getInstance();
    208209                        for (Item move : toMove) {
    209210                                move.setPosition(move.getX() + deltax, move.getY() + deltay);
     
    333334                if (frame == null)
    334335                        return;
    335 
     336               
    336337                if (_TwinFrames) {
    337338                        if (_CurrentFrames[0] == null) {
     
    348349                if (frame == getCurrentFrame()) {
    349350                        FrameGraphics.Repaint();
    350                         FrameGraphics.DisplayMessage(frame.getName()
     351                        MessageBay.displayMessage(frame.getName()
    351352                                        + " is already the current frame.");
    352353                        return;
     
    355356                }
    356357
     358               
     359                // Invalidate free items
     360                if (!FreeItems.getInstance().isEmpty() && getCurrentFrame() != null) {
     361       
     362                        // Empty free items temporarily so that the old frames buffer is repainted
     363                        // without the free items.
     364                        ArrayList<? extends Item> tmp = (ArrayList<? extends Item>)FreeItems.getInstance().clone();
     365                        FreeItems.getInstance().clear(); // NOTE: This will invalidate all the cleared free items
     366                        FrameGraphics.refresh(true);
     367                        FreeItems.getInstance().addAll(tmp);
     368                       
     369                       
     370                }
     371               
     372               
    357373                if (_TwinFrames) {
    358374                        // if the same frame is being shown in both sides, load a fresh
     
    379395                        _CurrentFrames[getCurrentSide()] = frame;
    380396
    381                         // BROOK : TODO...
     397                        // BROOK : TODO... overlays and loadable widgets
    382398                        for (Item i : _CurrentFrames[getCurrentSide()].getItems()) {
    383399                                i.onParentStateChanged(new ItemParentStateChangedEvent(
     
    469485                }
    470486
    471                 FrameGraphics.Repaint();
     487                FrameGraphics.refresh(false);
    472488        }
    473489
     
    573589                // there must be a frame to go back to
    574590                if (_VisitedFrames[side].size() < 1) {
    575                         FrameGraphics
    576                                         .DisplayMessageOnce("You are already on the home frame");
     591                        MessageBay
     592                                        .displayMessageOnce("You are already on the home frame");
    577593                        return;
    578594                }
    579595
    580596                if (!FrameUtils.LeavingFrame(getCurrentFrame())) {
    581                         FrameGraphics.DisplayMessage("Back operation cancelled");
     597                        MessageBay.displayMessage("Back operation cancelled");
    582598                        return;
    583599                }
Note: See TracChangeset for help on using the changeset viewer.