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 */
009package org.w3c.flute.parser;
010
011import org.w3c.css.sac.SACMediaList;
012
013/**
014 * @version $Revision: 1.1.1.1 $
015 * @author  Philippe Le Hegaret
016 */
017public 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}