172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project/* 272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Copyright (C) 2007 Esmertec AG. 372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Copyright (C) 2007 The Android Open Source Project 472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * 572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * you may not use this file except in compliance with the License. 772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * You may obtain a copy of the License at 872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * 972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 1072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * 1172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 1272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 1372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * See the License for the specific language governing permissions and 1572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * limitations under the License. 1672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project */ 1772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 1872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectpackage com.android.mms.dom.smil; 1972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 2072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport org.w3c.dom.DOMException; 2172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport org.w3c.dom.Element; 2272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport org.w3c.dom.Node; 2372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport org.w3c.dom.NodeList; 2472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport org.w3c.dom.events.DocumentEvent; 2572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport org.w3c.dom.events.Event; 2672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport org.w3c.dom.smil.ElementSequentialTimeContainer; 2772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport org.w3c.dom.smil.ElementTime; 2872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport org.w3c.dom.smil.SMILDocument; 2972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport org.w3c.dom.smil.SMILElement; 3072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport org.w3c.dom.smil.SMILLayoutElement; 3172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport org.w3c.dom.smil.TimeList; 3272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 3372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport com.android.mms.dom.DocumentImpl; 3472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport com.android.mms.dom.events.EventImpl; 3572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 3672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectpublic class SmilDocumentImpl extends DocumentImpl implements SMILDocument, DocumentEvent { 3772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project /* 3872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * The sequential time container cannot be initialized here because the real container 3972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * is body, which hasn't been created yet. It will be initialized when the body has 4072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * already been created. Please see getBody(). 4172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project */ 4272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project ElementSequentialTimeContainer mSeqTimeContainer; 4372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 4472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public final static String SMIL_DOCUMENT_START_EVENT = "SmilDocumentStart"; 4572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public final static String SMIL_DOCUMENT_END_EVENT = "SimlDocumentEnd"; 4672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 4772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project /* 4872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Internal methods 4972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project */ 5072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public SmilDocumentImpl() { 5172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project super(); 5272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 5372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 5472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project /* 5572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * ElementSequentialTimeContainer stuff 5672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project */ 5772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 5872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public NodeList getActiveChildrenAt(float instant) { 5972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return mSeqTimeContainer.getActiveChildrenAt(instant); 6072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 6172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 6272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public NodeList getTimeChildren() { 6372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return mSeqTimeContainer.getTimeChildren(); 6472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 6572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 6672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public boolean beginElement() { 6772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return mSeqTimeContainer.beginElement(); 6872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 6972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 7072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public boolean endElement() { 7172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return mSeqTimeContainer.endElement(); 7272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 7372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 7472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public TimeList getBegin() { 7572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return mSeqTimeContainer.getBegin(); 7672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 7772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 7872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public float getDur() { 7972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return mSeqTimeContainer.getDur(); 8072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 8172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 8272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public TimeList getEnd() { 8372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return mSeqTimeContainer.getEnd(); 8472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 8572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 8672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public short getFill() { 8772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return mSeqTimeContainer.getFill(); 8872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 8972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 9072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public short getFillDefault() { 9172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return mSeqTimeContainer.getFillDefault(); 9272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 9372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 9472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public float getRepeatCount() { 9572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return mSeqTimeContainer.getRepeatCount(); 9672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 9772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 9872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public float getRepeatDur() { 9972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return mSeqTimeContainer.getRepeatDur(); 10072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 10172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 10272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public short getRestart() { 10372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return mSeqTimeContainer.getRestart(); 10472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 10572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 10672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public void pauseElement() { 10772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mSeqTimeContainer.pauseElement(); 10872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 10972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 11072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public void resumeElement() { 11172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mSeqTimeContainer.resumeElement(); 11272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 11372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 11472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public void seekElement(float seekTo) { 11572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mSeqTimeContainer.seekElement(seekTo); 11672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 11772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 11872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public void setBegin(TimeList begin) throws DOMException { 11972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mSeqTimeContainer.setBegin(begin); 12072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 12172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 12272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public void setDur(float dur) throws DOMException { 12372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mSeqTimeContainer.setDur(dur); 12472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 12572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 12672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public void setEnd(TimeList end) throws DOMException { 12772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mSeqTimeContainer.setEnd(end); 12872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 12972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 13072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public void setFill(short fill) throws DOMException { 13172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mSeqTimeContainer.setFill(fill); 13272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 13372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 13472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public void setFillDefault(short fillDefault) throws DOMException { 13572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mSeqTimeContainer.setFillDefault(fillDefault); 13672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 13772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 13872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public void setRepeatCount(float repeatCount) throws DOMException { 13972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mSeqTimeContainer.setRepeatCount(repeatCount); 14072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 14172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 14272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public void setRepeatDur(float repeatDur) throws DOMException { 14372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mSeqTimeContainer.setRepeatDur(repeatDur); 14472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 14572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 14672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public void setRestart(short restart) throws DOMException { 14772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mSeqTimeContainer.setRestart(restart); 14872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 14972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 15072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project /* 15172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Document Interface 15272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project */ 15372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 15472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project @Override 15572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public Element createElement(String tagName) throws DOMException { 15672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project // Find the appropriate class for this element 15772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project tagName = tagName.toLowerCase(); 15872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (tagName.equals("text") || 15972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project tagName.equals("img") || 16072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project tagName.equals("video")) { 16172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return new SmilRegionMediaElementImpl(this, tagName); 16272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } else if (tagName.equals("audio")) { 16372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return new SmilMediaElementImpl(this, tagName); 16472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } else if (tagName.equals("layout")) { 16572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return new SmilLayoutElementImpl(this, tagName); 16672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } else if (tagName.equals("root-layout")) { 16772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return new SmilRootLayoutElementImpl(this, tagName); 16872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } else if (tagName.equals("region")) { 16972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return new SmilRegionElementImpl(this, tagName); 17072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } else if (tagName.equals("ref")) { 17172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return new SmilRefElementImpl(this, tagName); 17272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } else if (tagName.equals("par")) { 17372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return new SmilParElementImpl(this, tagName); 17472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } else { 17572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project // This includes also the structural nodes SMIL, 17672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project // HEAD, BODY, for which no specific types are defined. 17772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return new SmilElementImpl(this, tagName); 17872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 17972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 18072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 18172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project @Override 18272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public SMILElement getDocumentElement() { 18372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project Node rootElement = getFirstChild(); 18472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (rootElement == null || !(rootElement instanceof SMILElement)) { 18572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project // The root doesn't exist. Create a new one. 18672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project rootElement = createElement("smil"); 18772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project appendChild(rootElement); 18872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 18972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 19072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return (SMILElement) rootElement; 19172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 19272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 19372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project /* 19472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * SMILElement Interface 19572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project */ 19672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 19772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public SMILElement getHead() { 19872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project Node rootElement = getDocumentElement(); 19972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project Node headElement = rootElement.getFirstChild(); 20072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (headElement == null || !(headElement instanceof SMILElement)) { 20172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project // The head doesn't exist. Create a new one. 20272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project headElement = createElement("head"); 20372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project rootElement.appendChild(headElement); 20472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 20572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 20672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return (SMILElement) headElement; 20772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 20872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 20972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public SMILElement getBody() { 21072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project Node rootElement = getDocumentElement(); 21172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project Node headElement = getHead(); 21272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project Node bodyElement = headElement.getNextSibling(); 21372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (bodyElement == null || !(bodyElement instanceof SMILElement)) { 21472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project // The body doesn't exist. Create a new one. 21572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project bodyElement = createElement("body"); 21672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project rootElement.appendChild(bodyElement); 21772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 21872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 21972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project // Initialize the real sequential time container, which is body. 22072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mSeqTimeContainer = new ElementSequentialTimeContainerImpl((SMILElement) bodyElement) { 22172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public NodeList getTimeChildren() { 22272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return getBody().getElementsByTagName("par"); 22372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 22472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 22572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public boolean beginElement() { 22672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project Event startEvent = createEvent("Event"); 22772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project startEvent.initEvent(SMIL_DOCUMENT_START_EVENT, false, false); 22872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project dispatchEvent(startEvent); 22972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return true; 23072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 23172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 23272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public boolean endElement() { 23372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project Event endEvent = createEvent("Event"); 23472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project endEvent.initEvent(SMIL_DOCUMENT_END_EVENT, false, false); 23572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project dispatchEvent(endEvent); 23672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return true; 23772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 23872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 23972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public void pauseElement() { 24072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project // TODO Auto-generated method stub 24172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 24272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 24372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 24472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public void resumeElement() { 24572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project // TODO Auto-generated method stub 24672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 24772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 24872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 24972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public void seekElement(float seekTo) { 25072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project // TODO Auto-generated method stub 25172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 25272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 25372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 25472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project ElementTime getParentElementTime() { 25572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return null; 25672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 25772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project }; 25872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 25972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return (SMILElement) bodyElement; 26072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 26172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 26272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public SMILLayoutElement getLayout() { 26372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project Node headElement = getHead(); 26472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project Node layoutElement = null; 26572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 26672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project // Find the layout element under <code>HEAD</code> 26772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project layoutElement = headElement.getFirstChild(); 26872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project while ((layoutElement != null) && !(layoutElement instanceof SMILLayoutElement)) { 26972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project layoutElement = layoutElement.getNextSibling(); 27072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 27172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 27272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (layoutElement == null) { 27372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project // The layout doesn't exist. Create a default one. 27472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project layoutElement = new SmilLayoutElementImpl(this, "layout"); 27572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project headElement.appendChild(layoutElement); 27672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 27772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return (SMILLayoutElement) layoutElement; 27872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 27972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 28072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project /* 28172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * DocumentEvent Interface 28272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project */ 28372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public Event createEvent(String eventType) throws DOMException { 28472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if ("Event".equals(eventType)) { 28572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return new EventImpl(); 28672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } else { 28772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project throw new DOMException(DOMException.NOT_SUPPORTED_ERR, 28872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project "Not supported interface"); 28972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 29072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 29172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project} 292