001    /*
002     * (c) COPYRIGHT 1999 World Wide Web Consortium
003     * (Massachusetts Institute of Technology, Institut National de Recherche
004     *  en Informatique et en Automatique, Keio University).
005     * All Rights Reserved. http://www.w3.org/Consortium/Legal/
006     *
007     * $Id: MediaListImpl.java,v 1.1.1.1 2006/04/23 14:51:51 taqua Exp $
008     */
009    package org.w3c.flute.parser;
010    
011    import org.w3c.css.sac.SACMediaList;
012    
013    /**
014     * @version $Revision: 1.1.1.1 $
015     * @author  Philippe Le Hegaret
016     */
017    public class MediaListImpl implements SACMediaList {
018    
019        String[] array = new String[10];
020        int current;
021    
022        public int getLength() {
023            return current;
024        }
025    
026        public String item(int index) {
027            if ((index < 0) || (index >= current)) {
028                return null;
029            }
030            return array[index];
031        }
032    
033        void addItem(String medium) {
034            if (medium.equals("all")) {
035                array[0] = "all";
036                current = 1;
037                return;
038            }
039            for (int i = 0; i < current; i++) {
040                if (medium.equals(array[i])) {
041                    return;
042                }
043            }
044            if (current == array.length) {
045                String[] old = array;
046                array = new String[current + current];
047                System.arraycopy(old, 0, array, 0, current);
048            }
049            array[current++] = medium;
050        }
051    
052        /**
053         * Returns a string representation of this object.
054         */
055        public String toString() {
056            int _i;
057    
058            switch (current) {
059            case 0:
060                return "";
061            case 1:
062                return array[0];
063            default:
064                boolean not_done = true;
065                int i            = 0;
066                StringBuffer buf = new StringBuffer(50);
067                do {
068                    buf.append(array[i++]);
069                    if (i == current) {
070                        not_done = false;
071                    } else {
072                        buf.append(", ");
073                    }
074                } while (not_done);
075                return buf.toString();
076            }
077        }    
078    }