| /******************************************************************************* |
| * Copyright (c) 2004, 2005 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.wst.css.core.internal.document; |
| |
| |
| |
| import org.eclipse.wst.css.core.internal.provisional.document.ICSSNode; |
| import org.w3c.dom.DOMException; |
| import org.w3c.dom.stylesheets.MediaList; |
| |
| |
| /** |
| * |
| */ |
| class MediaListImpl extends CSSRegionContainer implements MediaList { |
| |
| int mediumCounter; |
| |
| /** |
| * MediaListImpl constructor comment. |
| */ |
| MediaListImpl() { |
| super(); |
| } |
| |
| /** |
| * MediaListImpl constructor comment. |
| */ |
| MediaListImpl(MediaListImpl that) { |
| super(that); |
| } |
| |
| /** |
| * Adds the medium <code>newMedium</code> to the end of the list. If the |
| * <code>newMedium</code> is already used, it is first removed. |
| * |
| * @param newMediumThe |
| * new medium to add. |
| * @exception DOMException |
| * INVALID_CHARACTER_ERR: If the medium contains characters |
| * that are invalid in the underlying style language. <br> |
| * NO_MODIFICATION_ALLOWED_ERR: Raised if this list is |
| * readonly. |
| */ |
| public void appendMedium(String newMedium) throws DOMException { |
| if (newMedium == null) |
| return; |
| |
| CSSNodeListImpl m = getMedia(); |
| for (int i = 0; i != m.getLength(); i++) { |
| if (newMedium.equals(item(i))) |
| return; |
| } |
| |
| setAttribute("medium" + Integer.toString(mediumCounter++), newMedium);//$NON-NLS-1$ |
| } |
| |
| public ICSSNode cloneNode(boolean deep) { |
| MediaListImpl cloned = new MediaListImpl(this); |
| return cloned; |
| } |
| |
| /** |
| * Deletes the medium indicated by <code>oldMedium</code> from the list. |
| * |
| * @param oldMediumThe |
| * medium to delete in the media list. |
| * @exception DOMException |
| * NO_MODIFICATION_ALLOWED_ERR: Raised if this list is |
| * readonly. <br> |
| * NOT_FOUND_ERR: Raised if <code>oldMedium</code> is not |
| * in the list. |
| */ |
| public void deleteMedium(String oldMedium) throws DOMException { |
| for (int i = 0; i != getLength(); i++) { |
| if (oldMedium.equals(item(i))) { |
| removeAttributeNode((CSSAttrImpl) fAttrs.item(i)); |
| } |
| } |
| } |
| |
| /** |
| * The number of media in the list. The range of valid media is |
| * <code>0</code> to <code>length-1</code> inclusive. |
| */ |
| public int getLength() { |
| return getMedia().getLength(); |
| } |
| |
| /** |
| * @return CSSNodeListImpl |
| */ |
| CSSNodeListImpl getMedia() { |
| if (fAttrs == null) |
| fAttrs = new CSSNamedNodeMapImpl(); |
| return fAttrs; |
| } |
| |
| /** |
| * The parsable textual representation of the media list. This is a |
| * comma-separated list of media. |
| * |
| * @exception DOMException |
| * SYNTAX_ERR: Raised if the specified string value has a |
| * syntax error and is unparsable. <br> |
| * NO_MODIFICATION_ALLOWED_ERR: Raised if this media list |
| * is readonly. |
| */ |
| public String getMediaText() { |
| return getCssText(); |
| } |
| |
| /** |
| * Insert the method's description here. Creation date: (2001/01/17 |
| * 18:50:29) |
| * |
| * @return short |
| */ |
| public short getNodeType() { |
| return MEDIALIST_NODE; |
| } |
| |
| /** |
| * Returns the <code>index</code> th in the list. If <code>index</code> |
| * is greater than or equal to the number of media in the list, this |
| * returns <code>null</code>. |
| * |
| * @param index |
| * Index into the collection. |
| * @return The medium at the <code>index</code> th position in the |
| * <code>MediaList</code>, or <code>null</code> if that is |
| * not a valid index. |
| */ |
| public String item(int index) { |
| if (index < 0 || getLength() <= index) |
| return null; |
| |
| return ((CSSAttrImpl) getMedia().item(index)).getValue(); |
| } |
| |
| /** |
| * setMediaText method comment. |
| */ |
| public void setMediaText(String mediaText) throws DOMException { |
| setCssText(mediaText); |
| } |
| } |