• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2007 Esmertec AG.
3  * Copyright (C) 2007 The Android Open Source Project
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 package com.android.mms.dom.smil;
19 
20 import java.util.ArrayList;
21 
22 import org.w3c.dom.DOMException;
23 import org.w3c.dom.NodeList;
24 import org.w3c.dom.events.DocumentEvent;
25 import org.w3c.dom.events.Event;
26 import org.w3c.dom.smil.ElementParallelTimeContainer;
27 import org.w3c.dom.smil.ElementTime;
28 import org.w3c.dom.smil.SMILParElement;
29 import org.w3c.dom.smil.Time;
30 import org.w3c.dom.smil.TimeList;
31 
32 public class SmilParElementImpl extends SmilElementImpl implements SMILParElement {
33     public final static String SMIL_SLIDE_START_EVENT = "SmilSlideStart";
34     public final static String SMIL_SLIDE_END_EVENT = "SmilSlideEnd";
35 
36     ElementParallelTimeContainer mParTimeContainer =
37         new ElementParallelTimeContainerImpl(this) {
38         @Override
39         public TimeList getBegin() {
40             /*
41              * For children of a sequence, the only legal value for begin is
42              * a (single) non-negative offset value.
43              */
44             TimeList beginTimeList = super.getBegin();
45             if (beginTimeList.getLength() > 1) {
46                 ArrayList<Time> singleTimeContainer = new ArrayList<Time>();
47                 singleTimeContainer.add(beginTimeList.item(0));
48                 beginTimeList = new TimeListImpl(singleTimeContainer);
49             }
50             return beginTimeList;
51         }
52 
53         public NodeList getTimeChildren() {
54             return getChildNodes();
55         }
56 
57         public boolean beginElement() {
58             DocumentEvent doc = (DocumentEvent) SmilParElementImpl.this.getOwnerDocument();
59             Event startEvent = doc.createEvent("Event");
60             startEvent.initEvent(SMIL_SLIDE_START_EVENT, false, false);
61             dispatchEvent(startEvent);
62             return true;
63         }
64 
65         public boolean endElement() {
66             DocumentEvent doc = (DocumentEvent) SmilParElementImpl.this.getOwnerDocument();
67             Event endEvent = doc.createEvent("Event");
68             endEvent.initEvent(SMIL_SLIDE_END_EVENT, false, false);
69             dispatchEvent(endEvent);
70             return true;
71         }
72 
73         public void pauseElement() {
74             // TODO Auto-generated method stub
75 
76         }
77 
78         public void resumeElement() {
79             // TODO Auto-generated method stub
80 
81         }
82 
83         public void seekElement(float seekTo) {
84             // TODO Auto-generated method stub
85 
86         }
87 
88         ElementTime getParentElementTime() {
89             return ((SmilDocumentImpl) mSmilElement.getOwnerDocument()).mSeqTimeContainer;
90         }
91     };
92 
93     /*
94      * Internal Interface
95      */
96 
SmilParElementImpl(SmilDocumentImpl owner, String tagName)97     SmilParElementImpl(SmilDocumentImpl owner, String tagName)
98     {
99         super(owner, tagName.toUpperCase());
100     }
101 
getBeginConstraints()102     int getBeginConstraints() {
103         /*
104          * For children of a sequence, the only legal value for begin is
105          * a (single) non-negative offset value.
106          */
107         return (TimeImpl.ALLOW_OFFSET_VALUE); // Do not set ALLOW_NEGATIVE_VALUE
108     }
109 
110     /*
111      * ElementParallelTimeContainer
112      */
113 
getEndSync()114     public String getEndSync() {
115         return mParTimeContainer.getEndSync();
116     }
117 
getImplicitDuration()118     public float getImplicitDuration() {
119         return mParTimeContainer.getImplicitDuration();
120     }
121 
setEndSync(String endSync)122     public void setEndSync(String endSync) throws DOMException {
123         mParTimeContainer.setEndSync(endSync);
124     }
125 
getActiveChildrenAt(float instant)126     public NodeList getActiveChildrenAt(float instant) {
127         return mParTimeContainer.getActiveChildrenAt(instant);
128     }
129 
getTimeChildren()130     public NodeList getTimeChildren() {
131         return mParTimeContainer.getTimeChildren();
132     }
133 
beginElement()134     public boolean beginElement() {
135         return mParTimeContainer.beginElement();
136     }
137 
endElement()138     public boolean endElement() {
139         return mParTimeContainer.endElement();
140     }
141 
getBegin()142     public TimeList getBegin() {
143         return mParTimeContainer.getBegin();
144     }
145 
getDur()146     public float getDur() {
147         return mParTimeContainer.getDur();
148     }
149 
getEnd()150     public TimeList getEnd() {
151         return mParTimeContainer.getEnd();
152     }
153 
getFill()154     public short getFill() {
155         return mParTimeContainer.getFill();
156     }
157 
getFillDefault()158     public short getFillDefault() {
159         return mParTimeContainer.getFillDefault();
160     }
161 
getRepeatCount()162     public float getRepeatCount() {
163         return mParTimeContainer.getRepeatCount();
164     }
165 
getRepeatDur()166     public float getRepeatDur() {
167         return mParTimeContainer.getRepeatDur();
168     }
169 
getRestart()170     public short getRestart() {
171         return mParTimeContainer.getRestart();
172     }
173 
pauseElement()174     public void pauseElement() {
175         mParTimeContainer.pauseElement();
176     }
177 
resumeElement()178     public void resumeElement() {
179         mParTimeContainer.resumeElement();
180     }
181 
seekElement(float seekTo)182     public void seekElement(float seekTo) {
183         mParTimeContainer.seekElement(seekTo);
184     }
185 
setBegin(TimeList begin)186     public void setBegin(TimeList begin) throws DOMException {
187         mParTimeContainer.setBegin(begin);
188     }
189 
setDur(float dur)190     public void setDur(float dur) throws DOMException {
191         mParTimeContainer.setDur(dur);
192     }
193 
setEnd(TimeList end)194     public void setEnd(TimeList end) throws DOMException {
195         mParTimeContainer.setEnd(end);
196     }
197 
setFill(short fill)198     public void setFill(short fill) throws DOMException {
199         mParTimeContainer.setFill(fill);
200     }
201 
setFillDefault(short fillDefault)202     public void setFillDefault(short fillDefault) throws DOMException {
203         mParTimeContainer.setFillDefault(fillDefault);
204     }
205 
setRepeatCount(float repeatCount)206     public void setRepeatCount(float repeatCount) throws DOMException {
207         mParTimeContainer.setRepeatCount(repeatCount);
208     }
209 
setRepeatDur(float repeatDur)210     public void setRepeatDur(float repeatDur) throws DOMException {
211         mParTimeContainer.setRepeatDur(repeatDur);
212     }
213 
setRestart(short restart)214     public void setRestart(short restart) throws DOMException {
215         mParTimeContainer.setRestart(restart);
216     }
217 }
218