Ignore:
Timestamp:
07/02/08 12:38:54 (16 years ago)
Author:
ra33
Message:

added functionality for dockable @v's

File:
1 edited

Legend:

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

    r108 r115  
    4545        private static float _LastResponse = 0;
    4646
    47         public static Text LastEdited = null;
     47        private static Text LastEdited = null;
    4848
    4949        public static int MINIMUM_INTERITEM_SPACING = -6;
     
    256256
    257257                for (Item i : current.getItems())
    258                         i.setSelectedMode(Item.SelectedMode.None);
     258                        i.setHighlightMode(Item.HighlightMode.None);
    259259                return true;
    260260        }
     
    274274
    275275                        // if the two frames both have changes, prompt the user for the
    276                         // next
    277                         // move
     276                        // next move
    278277                        if (opposite.hasChanged() && opposite.equals(toSave)) {
    279278                                if (DisplayIO.DisplayConfirmDialog(
     
    287286                                } else
    288287                                        return false;
    289                         } else if (opposite.getOverlays().contains(
    290                                         new Overlay(toSave, Permission.followLinks))) {
    291                                 if (opposite.getOverlays().get(
    292                                                 opposite.getOverlays().indexOf(
    293                                                                 new Overlay(toSave, Permission.followLinks))).Frame
    294                                                 .hasChanged())
     288                        } else if (opposite.hasOverlay(toSave)) {
     289                                if (toSave.hasChanged())
    295290                                        if (DisplayIO.DisplayConfirmDialog(
    296291                                                        "Leaving this frame will discard changes made in the "
     
    637632                }
    638633        }
    639        
     634
    640635        public static void loadFirstFrame(Frame profile) {
    641636                if (UserSettings.FirstFrame == null)
     
    643638                else {
    644639                        Frame firstFrame = FrameIO.LoadFrame(UserSettings.FirstFrame);
    645                         if ( firstFrame == null) {
     640                        if (firstFrame == null) {
    646641                                FrameGraphics.WarningMessage("Home frame not found: "
    647642                                                + UserSettings.FirstFrame);
    648643                                UserSettings.FirstFrame = profile.getName();
    649644                                DisplayIO.setCurrentFrame(profile);
    650                         }else{
     645                        } else {
    651646                                DisplayIO.setCurrentFrame(firstFrame);
    652647                        }
     
    812807                                        // Show the items
    813808                                        for (Item item : ((XRayable) i).getConnected()) {
    814                                                 item.setHidden(false);
     809                                                item.setVisible(true);
    815810                                                item.removeEnclosure(i);
    816811                                        }
     
    877872                                                // @v which points back to the frame with the @ao
    878873                                                Frame vector = FrameIO.LoadFrame(i.getAbsoluteLink());
     874                                                // Get the permission from off the vector frame
     875                                                Permission vectorPermission = Permission.getPermission(
     876                                                                vector.getAnnotationValue("permission"),
     877                                                                Permission.none);
     878                                                // If the frame permission is lower, use that
     879                                                vectorPermission = Permission.min(vectorPermission,
     880                                                                permission);
     881                                                //Highest permissable permission for vectors is copy
     882                                                vectorPermission = Permission.min(vectorPermission, Permission.copy);
    879883                                                if (vector != null) {
    880884                                                        String scaleString = AttributeUtils
     
    885889                                                        } catch (Exception e) {
    886890                                                        }
    887                                                         vectors
    888                                                                         .add(new Vector(vector, i.getPosition(),
    889                                                                                         scale, i.getColor(), i
    890                                                                                                         .getBackgroundColor()));
     891                                                        vectors.add(new Vector(vector, vectorPermission, i
     892                                                                        .getPosition(), scale, i.getColor(), i
     893                                                                        .getBackgroundColor()));
    891894                                                }
    892895                                        }
    893 
    894896                                        // check for new OVERLAY items
    895897                                        else if (ItemUtils.startsWithTag(i, ItemUtils.TAG_OVERLAY)
     
    954956                                                        if (ItemUtils.startsWithTag(i, ItemUtils.TAG_IMAGE,
    955957                                                                        true)) {
    956                                                                 createPicture(toParse, (Text) i);
     958                                                                if (!i.hasEnclosures()) {
     959                                                                        createPicture(toParse, (Text) i);
     960                                                                }
    957961                                                                // check for frame images
    958962                                                        } else if (ItemUtils.startsWithTag(i,
     
    962966                                                                                        toParse.getName())) {
    963967                                                                XRayable image = null;
    964                                                                 if (i.getEnclosures().size() > 0) {
    965                                                                         i.setHidden(true);
    966                                                                         image = i.getEnclosures().iterator().next();
    967                                                                         image.refresh();
     968                                                                if (i.hasEnclosures()) {
     969                                                                        // i.setHidden(true);
     970                                                                        // image =
     971                                                                        // i.getEnclosures().iterator().next();
     972                                                                        // image.refresh();
    968973                                                                } else {
    969                                                                         image = new FrameImage((Text) i, toParse, null);
     974                                                                        image = new FrameImage((Text) i, toParse,
     975                                                                                        null);
    970976                                                                }
    971                                                                 //TODO Add the image when creating new FrameImage
     977                                                                // TODO Add the image when creating new
     978                                                                // FrameImage
    972979                                                                toParse.addItem(image);
    973980                                                        } else if (ItemUtils.startsWithTag(i,
     
    977984                                                                                        toParse.getName())) {
    978985                                                                XRayable image = null;
    979                                                                 if (i.getEnclosures().size() > 0) {
    980                                                                         image = i.getEnclosures().iterator().next();
    981                                                                         image.refresh();
    982                                                                         i.setHidden(true);
     986                                                                if (i.hasEnclosures()) {
     987                                                                        // image =
     988                                                                        // i.getEnclosures().iterator().next();
     989                                                                        // image.refresh();
     990                                                                        // i.setHidden(true);
    983991                                                                } else {
    984992                                                                        // If a new bitmap is created for a
    985993                                                                        // frame which already has a bitmap dont
    986994                                                                        // recreate the bitmap
    987                                                                         image = new FrameBitmap((Text) i, toParse, null);
     995                                                                        image = new FrameBitmap((Text) i, toParse,
     996                                                                                        null);
    988997                                                                }
    989998                                                                toParse.addItem(image);
    990999                                                        } else if (ItemUtils.startsWithTag(i, "@c")) {
    9911000                                                                // Can only have a @c
    992                                                                 if (i.getLines().size() == 1) {
     1001                                                                if (!i.hasEnclosures()
     1002                                                                                && i.getLines().size() == 1) {
    9931003                                                                        toParse.addItem(new Circle((Text) i));
    9941004                                                                }
     
    10911101                                                message.setPermission(Permission.copy);
    10921102                                                possibles.add(message);
    1093                                         } else{
     1103                                        } else {
    10941104                                                // Not sure why but if the line below is removed then
    10951105                                                // several items can be highlighted at once
    1096                                                 message.setSelectedMode(Item.SelectedMode.None);
     1106                                                message.setHighlightMode(Item.HighlightMode.None);
    10971107                                        }
    10981108                                }
     
    11111121                        // otherwise, the mouse is on the frame
    11121122                } else {
    1113                         if (LastEdited != null && /*LastEdited.isVisible()
    1114                                         &&*/ LastEdited.contains(x, y)
     1123                        if (LastEdited != null && /*
     1124                                                                                 * LastEdited.isVisible() &&
     1125                                                                                 */LastEdited.contains(x, y)
    11151126                                        && !Frame.FreeItems.contains(LastEdited)
    11161127                                        && LastEdited.getParent() == DisplayIO.getCurrentFrame()
     
    11181129                                LastEdited.setPermission(Permission.full);
    11191130                                return LastEdited;
    1120                         } else
    1121                                 LastEdited = null;
    1122 
     1131                        } else {
     1132                                setLastEdited(null);
     1133                        }
    11231134                        ArrayList<Item> checkList = new ArrayList<Item>();
    1124                         checkList.addAll(toCheck.getVisibleItems());
     1135                        checkList.addAll(toCheck.getAllItems());
    11251136                        checkList.add(toCheck.getNameItem());
    11261137                        for (Item i : checkList) {
    11271138                                // do not check annotation items in audience mode
    1128                                 if (!(FrameGraphics.isAudienceMode() && i.isAnnotation())) {
     1139                                if (i.isVisible() && !(FrameGraphics.isAudienceMode() && i.isAnnotation())) {
    11291140                                        if (i.contains(x, y) && !Frame.FreeItems.contains(i)) {
    1130                                                 possibles.add(i);
    1131                                         }
    1132                                 }
    1133                         }
    1134                         Permission framePermission = toCheck.getPermission();
    1135                         for (Overlay o : toCheck.getOverlays()) {
    1136                                 if (o.Level.ordinal() > Permission.none.ordinal()) {
    1137                                         Item i = onItem(o.Frame, x, y);
    1138 
    1139                                         // the message is included above with full permissions,
    1140                                         // it should be ignored here
    1141                                         if (i != null && i.getID() > 0) {
    1142                                                 i.setPermission(Permission
    1143                                                                 .min(o.Level, framePermission));
    11441141                                                possibles.add(i);
    11451142                                        }
     
    12061203                        // Dont want to loose the highlighting from the current item
    12071204                        if (i != currentItem && !enclosure.contains(i))
    1208                                 i.setSelectedMode(Item.SelectedMode.None);
     1205                                i.setHighlightMode(Item.HighlightMode.None);
    12091206                        if (i instanceof WidgetCorner) {
    12101207                                if (!enclosedWidgets.contains(((WidgetCorner) i)
     
    13121309        }
    13131310
    1314         //TODO Remove this method!!
    1315         //We should be able to get by with just getItemsWithin
     1311        // TODO Remove this method!!
     1312        // Can just getItemsWithin be used?
    13161313        public static Collection<Item> getItemsEnclosedBy(Frame frame, Polygon poly) {
    13171314                Collection<Item> contained = frame.getItemsWithin(poly);
     
    13291326                                for (Overlay overlay : frame.getOverlays())
    13301327                                        if (overlay.Frame == item.getParent()) {
    1331                                                 item.setPermission(overlay.Level);
     1328                                                item.setPermission(overlay.permission);
    13321329                                                results.add(item);
    13331330                                                break;
     
    14631460
    14641461        public static void setLastEdited(Text lastEdited) {
    1465                 if(LastEdited != null && LastEdited.getText().length() == 0){
     1462                if (LastEdited != null && lastEdited != LastEdited
     1463                                && LastEdited.getText().length() == 0) {
    14661464                        LastEdited.getParentOrCurrentFrame().removeItem(LastEdited);
    14671465                }
    14681466                LastEdited = lastEdited;
    14691467        }
     1468
     1469        public static Text getLastEdited() {
     1470                return LastEdited;
     1471        }
    14701472}
Note: See TracChangeset for help on using the changeset viewer.