| /* |
| * Copyright (C) 2007 Esmertec AG. |
| * Copyright (C) 2007 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package com.android.mms.dom.smil; |
| |
| import java.util.ArrayList; |
| |
| import org.w3c.dom.DOMException; |
| import org.w3c.dom.NodeList; |
| import org.w3c.dom.events.DocumentEvent; |
| import org.w3c.dom.events.Event; |
| import org.w3c.dom.smil.ElementParallelTimeContainer; |
| import org.w3c.dom.smil.ElementTime; |
| import org.w3c.dom.smil.SMILParElement; |
| import org.w3c.dom.smil.Time; |
| import org.w3c.dom.smil.TimeList; |
| |
| public class SmilParElementImpl extends SmilElementImpl implements SMILParElement { |
| public final static String SMIL_SLIDE_START_EVENT = "SmilSlideStart"; |
| public final static String SMIL_SLIDE_END_EVENT = "SmilSlideEnd"; |
| |
| ElementParallelTimeContainer mParTimeContainer = |
| new ElementParallelTimeContainerImpl(this) { |
| @Override |
| public TimeList getBegin() { |
| /* |
| * For children of a sequence, the only legal value for begin is |
| * a (single) non-negative offset value. |
| */ |
| TimeList beginTimeList = super.getBegin(); |
| if (beginTimeList.getLength() > 1) { |
| ArrayList<Time> singleTimeContainer = new ArrayList<Time>(); |
| singleTimeContainer.add(beginTimeList.item(0)); |
| beginTimeList = new TimeListImpl(singleTimeContainer); |
| } |
| return beginTimeList; |
| } |
| |
| public NodeList getTimeChildren() { |
| return getChildNodes(); |
| } |
| |
| public boolean beginElement() { |
| DocumentEvent doc = (DocumentEvent) SmilParElementImpl.this.getOwnerDocument(); |
| Event startEvent = doc.createEvent("Event"); |
| startEvent.initEvent(SMIL_SLIDE_START_EVENT, false, false); |
| dispatchEvent(startEvent); |
| return true; |
| } |
| |
| public boolean endElement() { |
| DocumentEvent doc = (DocumentEvent) SmilParElementImpl.this.getOwnerDocument(); |
| Event endEvent = doc.createEvent("Event"); |
| endEvent.initEvent(SMIL_SLIDE_END_EVENT, false, false); |
| dispatchEvent(endEvent); |
| return true; |
| } |
| |
| public void pauseElement() { |
| // TODO Auto-generated method stub |
| |
| } |
| |
| public void resumeElement() { |
| // TODO Auto-generated method stub |
| |
| } |
| |
| public void seekElement(float seekTo) { |
| // TODO Auto-generated method stub |
| |
| } |
| |
| ElementTime getParentElementTime() { |
| return ((SmilDocumentImpl) mSmilElement.getOwnerDocument()).mSeqTimeContainer; |
| } |
| }; |
| |
| /* |
| * Internal Interface |
| */ |
| |
| SmilParElementImpl(SmilDocumentImpl owner, String tagName) |
| { |
| super(owner, tagName.toUpperCase()); |
| } |
| |
| int getBeginConstraints() { |
| /* |
| * For children of a sequence, the only legal value for begin is |
| * a (single) non-negative offset value. |
| */ |
| return (TimeImpl.ALLOW_OFFSET_VALUE); // Do not set ALLOW_NEGATIVE_VALUE |
| } |
| |
| /* |
| * ElementParallelTimeContainer |
| */ |
| |
| public String getEndSync() { |
| return mParTimeContainer.getEndSync(); |
| } |
| |
| public float getImplicitDuration() { |
| return mParTimeContainer.getImplicitDuration(); |
| } |
| |
| public void setEndSync(String endSync) throws DOMException { |
| mParTimeContainer.setEndSync(endSync); |
| } |
| |
| public NodeList getActiveChildrenAt(float instant) { |
| return mParTimeContainer.getActiveChildrenAt(instant); |
| } |
| |
| public NodeList getTimeChildren() { |
| return mParTimeContainer.getTimeChildren(); |
| } |
| |
| public boolean beginElement() { |
| return mParTimeContainer.beginElement(); |
| } |
| |
| public boolean endElement() { |
| return mParTimeContainer.endElement(); |
| } |
| |
| public TimeList getBegin() { |
| return mParTimeContainer.getBegin(); |
| } |
| |
| public float getDur() { |
| return mParTimeContainer.getDur(); |
| } |
| |
| public TimeList getEnd() { |
| return mParTimeContainer.getEnd(); |
| } |
| |
| public short getFill() { |
| return mParTimeContainer.getFill(); |
| } |
| |
| public short getFillDefault() { |
| return mParTimeContainer.getFillDefault(); |
| } |
| |
| public float getRepeatCount() { |
| return mParTimeContainer.getRepeatCount(); |
| } |
| |
| public float getRepeatDur() { |
| return mParTimeContainer.getRepeatDur(); |
| } |
| |
| public short getRestart() { |
| return mParTimeContainer.getRestart(); |
| } |
| |
| public void pauseElement() { |
| mParTimeContainer.pauseElement(); |
| } |
| |
| public void resumeElement() { |
| mParTimeContainer.resumeElement(); |
| } |
| |
| public void seekElement(float seekTo) { |
| mParTimeContainer.seekElement(seekTo); |
| } |
| |
| public void setBegin(TimeList begin) throws DOMException { |
| mParTimeContainer.setBegin(begin); |
| } |
| |
| public void setDur(float dur) throws DOMException { |
| mParTimeContainer.setDur(dur); |
| } |
| |
| public void setEnd(TimeList end) throws DOMException { |
| mParTimeContainer.setEnd(end); |
| } |
| |
| public void setFill(short fill) throws DOMException { |
| mParTimeContainer.setFill(fill); |
| } |
| |
| public void setFillDefault(short fillDefault) throws DOMException { |
| mParTimeContainer.setFillDefault(fillDefault); |
| } |
| |
| public void setRepeatCount(float repeatCount) throws DOMException { |
| mParTimeContainer.setRepeatCount(repeatCount); |
| } |
| |
| public void setRepeatDur(float repeatDur) throws DOMException { |
| mParTimeContainer.setRepeatDur(repeatDur); |
| } |
| |
| public void setRestart(short restart) throws DOMException { |
| mParTimeContainer.setRestart(restart); |
| } |
| } |