Changeset 24


Ignore:
Timestamp:
05/13/08 14:03:43 (16 years ago)
Author:
ra33
Message:

Valid frameset names must not begin and end with a letter, and be all letters and digits in between. Thus removing the need for framesetNameAdjustment methods.

Location:
trunk/src/org/expeditee
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/expeditee/actions/Misc.java

    r21 r24  
    1818import org.expeditee.gui.FrameMouseActions;
    1919import org.expeditee.items.Item;
    20 import org.expeditee.items.Picture;
    2120import org.expeditee.items.Text;
    2221import org.expeditee.stats.SessionStats;
  • trunk/src/org/expeditee/actions/Simple.java

    r22 r24  
    16451645                        }
    16461646                        // Display the frames
    1647                         String adjustedFramesetName = FrameUtils
    1648                                         .GetFramesetNameAdjusted(framesetName);
    16491647                        for (int i = firstFrameNo; i <= lastFrameNo; i++) {
    1650                                 Frame frame = FrameIO.LoadFrame(adjustedFramesetName + i);
     1648                                Frame frame = FrameIO.LoadFrame(framesetName + i);
    16511649                                if (frame != null) {
    16521650                                        double thisFramesPause = pause;
  • trunk/src/org/expeditee/agents/CopyTree.java

    r23 r24  
    4646                        // copy the original .0 frame
    4747                        Frame zero = FrameIO
    48                                         .LoadFrame(init.getFramesetNameAdjusted() + "0");
     48                                        .LoadFrame(init.getFramesetName() + "0");
    4949                        processFrame(zero);
    5050                } catch (ExistingFramesetException efe) {
     
    133133
    134134                message("Tree successfully copied to " + _nameTo);
    135                 FrameUtils.DisplayFrame(FrameUtils.GetFramesetNameAdjusted(_nameTo)
    136                                 + _firstNumber);
     135                FrameUtils.DisplayFrame(_nameTo + _firstNumber);
    137136        }
    138137
  • trunk/src/org/expeditee/gui/Frame.java

    r19 r24  
    437437        }
    438438
    439         /**
    440          * Adjusts frameset names so that a period is appended if they end in a
    441          * digit.
    442          *
    443          * @param name
    444          *            the unadjusted frame set name
    445          * @return the adjusted frame set name
    446          */
    447         public String getFramesetNameAdjusted() {
    448                 return _frameset
    449                                 + (Character.isDigit(_frameset.charAt(_frameset.length() - 1)) ? "."
    450                                                 : "");
    451         }
    452 
    453439        public void setFrameName(String framename) {
    454440                int num = Conversion.getFrameNumber(framename);
     
    479465                _frameName.setParent(this);
    480466                _frameName.setMaxSize(FrameGraphics.getMaxFrameSize());
    481                 _frameName.setText(getFramesetNameAdjusted() + _number);
     467                _frameName.setText(getFramesetName() + _number);
    482468                _frameName.setPosition(FrameGraphics.getMaxFrameSize().width
    483469                                - _frameName.getBoundsWidth() - Item.MARGIN_RIGHT
     
    752738
    753739        public String getFrameName() {
    754                 return getFramesetNameAdjusted() + _number;
     740                return getFramesetName() + _number;
    755741        }
    756742
  • trunk/src/org/expeditee/gui/FrameCreator.java

    r21 r24  
    22
    33import java.awt.Color;
    4 import java.util.List;
    54
    65import org.expeditee.items.Item;
  • trunk/src/org/expeditee/gui/FrameIO.java

    r23 r24  
    3535public class FrameIO {
    3636
     37        private static final char FRAME_NAME_LAST_CHAR = 'A';
     38
    3739        public static void changeParentFolder(String newFolder) {
    3840                PARENT_FOLDER = newFolder;
     
    135137                if (isPositiveInteger(frameName)) {
    136138                        assert (false);
    137                         frameName = DisplayIO.getCurrentFrame().getFramesetNameAdjusted()
     139                        frameName = DisplayIO.getCurrentFrame().getFramesetName()
    138140                                        + frameName;
    139141                }
     
    294296
    295297                // the current name and number
    296                 String name = current.getFramesetNameAdjusted();
     298                String name = current.getFramesetName();
    297299                int num = current.getFrameNumber() - 1;
    298300
     
    323325                int num = current.getFrameNumber() + 1;
    324326                int max = num + 1;
    325                 String name = current.getFramesetNameAdjusted();
     327                String name = current.getFramesetName();
    326328
    327329                // read the maximum from the INF file
     
    373375                }
    374376
    375                 String adjustedName = FrameUtils.GetFramesetNameAdjusted(framesetName);
    376 
    377377                // loop backwards until a frame that exists is found
    378378                for (int num = max; num > 0; num--) {
    379                         Frame f = LoadFrame(adjustedName + num);
     379                        Frame f = LoadFrame(framesetName + num);
    380380                        if (f != null)
    381381                                return f;
     
    387387                return null;
    388388        }
    389        
     389
    390390        public static Frame LoadZero(String framesetName, String path) {
    391                 String adjustedName = FrameUtils.GetFramesetNameAdjusted(framesetName);
    392                 return LoadFrame(adjustedName + 0);
     391                return LoadFrame(framesetName + 0);
    393392        }
    394393
     
    397396                return LoadZero(current.getFramesetName(), current.path);
    398397        }
    399        
     398
    400399        public static Frame LoadLast() {
    401400                Frame current = DisplayIO.getCurrentFrame();
     
    480479                // disable caching of 0 frames
    481480                SuspendCache();
    482 
    483                 String adjustFramesetName = FrameUtils
    484                                 .GetFramesetNameAdjusted(frameset);
     481               
    485482                Frame template = null;
    486483                if (templateFrame == null)
    487484                        // load in frame.0
    488                         template = LoadFrame(adjustFramesetName + "0");
     485                        template = LoadFrame(frameset + "0");
    489486                else
    490487                        template = LoadFrame(templateFrame);
     
    510507                // update INF file
    511508                try {
    512                         WriteINF(template.path, frameset, adjustFramesetName + next);
     509                        WriteINF(template.path, frameset, frameset + next);
    513510                } catch (IOException ioe) {
    514511                        ioe.printStackTrace();
     
    584581         * Tests if the given String is a 'proper' framename, that is, the String
    585582         * must begin with a character, end with a number with 0 or more letters and
    586          * numbers in between. If there is a dot in the framename all the chars
    587          * after it must be digits.
     583         * numbers in between.
    588584         *
    589585         * @param frameName
     
    596592                        return false;
    597593
     594                int lastCharIndex = frameName.length() - 1;
    598595                // String must begin with a letter and end with a digit
    599                 if (!(Character.isLetter(frameName.charAt(0)) || Character
    600                                 .isDigit(frameName.charAt(0)))
    601                                 || !Character.isDigit(frameName.charAt(frameName.length() - 1)))
     596                if (!Character.isLetter(frameName.charAt(0))
     597                                || !Character.isDigit(frameName.charAt(lastCharIndex)))
    602598                        return false;
    603599
    604                 int dotIndex = frameName.lastIndexOf('.');
    605600                // All the characters between first and last must be letters
    606                 // or digits or period
    607                 for (int i = 1; i < frameName.length(); i++) {
    608                         if (dotIndex > 0 && i > dotIndex) {
    609                                 if (!Character.isDigit(frameName.charAt(i)))
    610                                         return false;
    611                         } else if (i != dotIndex) {
    612                                 if (!Character.isLetterOrDigit(frameName.charAt(i)))
    613                                         return false;
    614                         }
    615                 }
    616 
     601                // or digits
     602                for (int i = 1; i < lastCharIndex; i++) {
     603                        if (!Character.isLetterOrDigit(frameName.charAt(i)))
     604                                return false;
     605                }
    617606                return true;
    618607        }
     
    711700                        if (toSave.getFramesetName().toLowerCase().equals(
    712701                                        UserSettings.Username.toLowerCase())) {
    713                                 FrameUtils.ParseProfile(FrameIO.LoadFrame(toSave.getFramesetNameAdjusted() + "1"));
     702                                FrameUtils.ParseProfile(FrameIO.LoadFrame(toSave
     703                                                .getFramesetName()
     704                                                + "1"));
    714705                        }
    715706                } catch (IOException ioe) {
     
    784775        }
    785776
     777       
     778       
    786779        public static String ConvertToValidFramesetName(String toValidate) {
    787                 String result = "";
    788 
    789                 boolean capital = true;
    790                 for (int i = 0; i < toValidate.length(); i++) {
     780                assert(toValidate != null && toValidate.length() > 0);
     781               
     782                StringBuffer result = new StringBuffer();
     783
     784                if (Character.isDigit(toValidate.charAt(0))){
     785                        result.append(FRAME_NAME_LAST_CHAR);
     786                }
     787               
     788                boolean capital = false;
     789                for (int i = 0; i < toValidate.length() && result.length() < MAX_NAME_LENGTH; i++) {
    791790                        char cur = toValidate.charAt(i);
    792791
     
    795794                                if (capital) {
    796795                                        capital = false;
    797                                         result += ((String) "" + cur).toUpperCase();
     796                                        result.append(Character.toUpperCase(cur));
    798797                                } else
    799                                         result += cur;
    800 
    801                                 if (result.length() >= MAX_NAME_LENGTH) {
    802                                         result = result.substring(0,MAX_NAME_LENGTH);
    803                                 }
     798                                        result.append(cur);
    804799                        } else {
    805800                                capital = true;
    806801                        }
    807802                }
     803                assert (result.length() > 0);
     804                int lastCharIndex = result.length() - 1;
     805                if (!Character.isLetter(result.charAt(lastCharIndex))){
     806                        if (lastCharIndex ==  MAX_NAME_LENGTH - 1)
     807                                result.setCharAt(lastCharIndex,FRAME_NAME_LAST_CHAR);
     808                        else
     809                                result.append(FRAME_NAME_LAST_CHAR);
     810                }
    808811               
    809                 return result;
     812                assert(IsValidFramesetName(result.toString()));
     813                return result.toString();
    810814        }
    811815
     
    893897
    894898        public static Boolean DoesFramesetExist(String framesetName) {
    895                 String zeroFrame = FrameUtils.GetFramesetNameAdjusted(framesetName) + '0';
     899                String zeroFrame = framesetName + '0';
    896900                return FrameIO.DoesFrameExist(zeroFrame);
    897901        }
     
    901905                String conversion = frameset + " --> ";
    902906
    903                 if (! IsValidFramesetName(frameset)){
     907                if (!IsValidFramesetName(frameset)) {
    904908                        throw new Exception("Invalid frameset name");
    905909                }
    906                
     910
    907911                if (!recreate && FrameIO.DoesFramesetExist(frameset)) {
    908912                        throw new ExistingFramesetException(frameset);
     
    950954                base.setFrameset(frameset);
    951955                base.setFrameNumber(0);
    952                 base.setTitle(base.getFramesetNameAdjusted() + "0");
     956                base.setTitle(base.getFramesetName() + "0");
    953957                base.path = path;
    954958                base.change();
     
    965969
    966970                return base;
    967         }private static boolean IsValidFramesetName(String frameset) {
    968                 for (int i = 0; i < frameset.length(); i++) {
    969                         // capitalize all characters after spaces
     971        }
     972
     973        /**
     974         * Tests if a frameset name is valid. That is it must begin and end with a
     975         * letter and contain only letters and digits in between.
     976         *
     977         * @param frameset the name to be tested
     978         * @return true if the frameset name is valid
     979         */
     980        public static boolean IsValidFramesetName(String frameset) {
     981                if (frameset == null) {
     982                        return false;
     983                }
     984               
     985                int nameLength = frameset.length();
     986                if( frameset.length() <= 0 || nameLength > MAX_NAME_LENGTH){
     987                        return false;
     988                }
     989               
     990                int lastCharIndex = nameLength- 1;
     991               
     992                if (!Character.isLetter(frameset.charAt(0)) ||
     993                                !Character.isLetter(frameset.charAt(lastCharIndex)))
     994                        return false;
     995
     996                for (int i = 1; i < lastCharIndex; i++) {
    970997                        if (!Character.isLetterOrDigit(frameset.charAt(i))) {
    971998                                return false;
     
    9741001                return true;
    9751002        }
    976 
    977 
    9781003
    9791004        public static boolean DeleteFrameset(String framesetName) {
  • trunk/src/org/expeditee/gui/FrameKeyboardActions.java

    r22 r24  
    1515import org.expeditee.actions.Actions;
    1616import org.expeditee.actions.Simple;
    17 import org.expeditee.agents.ExistingFramesetException;
    1817import org.expeditee.io.Logger;
    1918import org.expeditee.items.Dot;
  • trunk/src/org/expeditee/gui/FrameMouseActions.java

    r21 r24  
    278278                        // This is when the user is anchoring something
    279279                        if (_context == CONTEXT_FREESPACE && Frame.itemAttachedToCursor()) {
    280                                 FrameGraphics.ChangeSelectionMode(_lastHighlightedItem, Item.SelectedMode.None);
    281                                
     280                                FrameGraphics.ChangeSelectionMode(_lastHighlightedItem,
     281                                                Item.SelectedMode.None);
     282
    282283                                _lastHighlightedItem = Frame.getItemAttachedToCursor();
    283284                                for (Item i : Frame.FreeItems) {
     
    320321        public void mouseReleased(MouseEvent e) {
    321322                FrameUtils.ResponseTimer.restart();
    322                
     323
    323324                _mouseDown -= e.getButton();
    324325                updateCursor();
     
    11491150                // Just do the sum of the distance moved in x and y direction for
    11501151                // speed!!
    1151                 int distance = Math.abs(_lastMouseEvent.getX() - e.getX())
    1152                                 + Math.abs(_lastMouseEvent.getY() - e.getY());
     1152                /*
     1153                 * int distance = Math.abs(_lastMouseEvent.getX() - e.getX()) +
     1154                 * Math.abs(_lastMouseEvent.getY() - e.getY());
     1155                 */
    11531156
    11541157                boolean checkHighlight = true;
     
    11571160                // threshold speed. If so it doesnt execute the code that checks if
    11581161                // items underneath the cursor need to be highlighted.
    1159                 /*if (Frame.itemAttachedToCursor()) {
    1160                         long time = e.getWhen() - _lastMouseEvent.getWhen();
    1161                         // System.out.println(time + " D:" + distance);
    1162                         if (time > 0 && distance * 3 > time) {
    1163                                 checkHighlight = false;
    1164                                 // System.out.println("Dont check highlight!");
    1165                                 if (_lastHighlightedItem != null && !_lastHoldsHighlight) {
    1166                                         if(_lastHighlightedItem instanceof Text) {
    1167                                                 FrameGraphics.ChangeSelectionMode(_lastHighlightedItem,
    1168                                                         Item.SelectedMode.None);
    1169                                         }
    1170                                 }
    1171                         }
    1172                 }*/
     1162                /*
     1163                 * if (Frame.itemAttachedToCursor()) { long time = e.getWhen() -
     1164                 * _lastMouseEvent.getWhen(); // System.out.println(time + " D:" +
     1165                 * distance); if (time > 0 && distance * 3 > time) { checkHighlight =
     1166                 * false; // System.out.println("Dont check highlight!"); if
     1167                 * (_lastHighlightedItem != null && !_lastHoldsHighlight) {
     1168                 * if(_lastHighlightedItem instanceof Text) {
     1169                 * FrameGraphics.ChangeSelectionMode(_lastHighlightedItem,
     1170                 * Item.SelectedMode.None); } } } }
     1171                 */
    11731172
    11741173                _lastMouseEvent = e;
     
    13551354
    13561355        private static void load(String toLoad) {
    1357                 checkTDFCItemWaiting();
    1358                 FrameUtils.DisplayFrame(toLoad);
     1356                if (FrameIO.isValidFrameName(toLoad)) {
     1357                        checkTDFCItemWaiting();
     1358                        FrameUtils.DisplayFrame(toLoad);
     1359                }else {
     1360                        FrameGraphics.ErrorMessage(toLoad + " is not a valid frame name.");
     1361                }
    13591362        }
    13601363
     
    20342037                        Item ip = FrameUtils.getCurrentItem();
    20352038                        if (ip != null && clicks > 1)
    2036                                 //base the number of clicks on the size of the object
    2037                                 clicks = (int)Math.ceil(ip.getSize() / 20.0 * clicks);
     2039                                // base the number of clicks on the size of the object
     2040                                clicks = (int) Math.ceil(ip.getSize() / 20.0 * clicks);
    20382041
    20392042                        FrameKeyboardActions.functionKey(rotationType, clicks);
  • trunk/src/org/expeditee/gui/FrameUtils.java

    r22 r24  
    819819                                        String link = i.getLink();
    820820                                        if (FrameIO.isPositiveInteger(link))
    821                                                 link = toParse.getFramesetNameAdjusted() + link;
     821                                                link = toParse.getFramesetName() + link;
    822822                                        Frame overlay = FrameIO.LoadFrame(link);
    823823                                        // Parse(overlay);
     
    11961196                                null, profile.getFrameName());
    11971197                yPos += spacing;
    1198                 String defaultFrameName = profile.getFramesetNameAdjusted() + "0";
     1198                String defaultFrameName = profile.getFramesetName() + "0";
    11991199                profile.addText(xPos, yPos, "@DefaultFrame: " + defaultFrameName, null,
    12001200                                defaultFrameName);
     
    12581258                FrameIO.SaveFrame(profile);
    12591259        }
    1260 
    1261         /**
    1262          * Adjusts a frameset name so a period is appended if it ends in a digit.
    1263          * This form of the frameset name is used when referencing frames in the
    1264          * frame set.
    1265          *
    1266          * @param frameset
    1267          * @return
    1268          */
    1269         public static String GetFramesetNameAdjusted(String frameset) {
    1270                 return frameset
    1271                                 + (Character.isDigit(frameset.charAt(frameset.length() - 1)) ? "."
    1272                                                 : "");
    1273         }
    12741260}
  • trunk/src/org/expeditee/items/CommandLineWidget.java

    r11 r24  
    11package org.expeditee.items;
    22
    3 import java.awt.Color;
    4 import java.awt.Font;
    5 
    6 import javax.swing.JSplitPane;
    7 import javax.swing.JTextArea;
    8 
    9 import org.expeditee.gui.Frame;
    103
    114public class CommandLineWidget { // extends InteractiveWidget {
  • trunk/src/org/expeditee/items/Dot.java

    r21 r24  
    77import java.util.LinkedList;
    88import java.util.List;
    9 
    10 import org.expeditee.gui.Frame;
    119
    1210/**
  • trunk/src/org/expeditee/items/Item.java

    r22 r24  
    394394                // if its a relative link then return absolute
    395395                if (FrameIO.isPositiveInteger(link)) {
    396                         return _parent.getFramesetNameAdjusted()
     396                        return _parent.getFramesetName()
    397397                                        + Conversion.getFrameNumber(link);
    398398                }
     
    10161016                if (_parent == null)
    10171017                        framesetName = DisplayIO.getCurrentFrame()
    1018                                         .getFramesetNameAdjusted();
     1018                                        .getFramesetName();
    10191019                else
    1020                         framesetName = _parent.getFramesetNameAdjusted();
     1020                        framesetName = _parent.getFramesetName();
    10211021
    10221022                _link = framesetName + _link;
  • trunk/src/org/expeditee/items/Picture.java

    r21 r24  
    107107                        String link = source.getLink();
    108108                        if (FrameIO.isPositiveInteger(link)) {
    109                                 link = source.getParent().getFramesetNameAdjusted() + link;
     109                                link = source.getParent().getFramesetName() + link;
    110110                        }
    111111                        Frame frame = FrameIO.LoadFrame(link);
     
    559559                        String link = _source.getLink();
    560560                        if (FrameIO.isPositiveInteger(link)) {
    561                                 link = _source.getParent().getFramesetNameAdjusted() + link;
     561                                link = _source.getParent().getFramesetName() + link;
    562562                        }
    563563                        Frame frame = FrameIO.LoadFrame(link);
  • trunk/src/org/expeditee/items/Text.java

    r22 r24  
    2323
    2424import org.expeditee.gui.FrameMouseActions;
    25 import org.expeditee.items.Item.SelectedMode;
    2625
    2726/**
Note: See TracChangeset for help on using the changeset viewer.