blob: 511582c331e2b66230340bef50cef9d6139bf1ca [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8" ?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you 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.
-->
<library>
<!--
exmple class definition
as soon as you see possibility try to make usage of classes
in general:
usage of layout is nice but it needs more views just for layouting.
in a simple scenario thats okay,
but in the openmeetings app itself most of the views are set *absolute* by x and y
cause this reduces the total amount of views
instancing (=making views dynamically like we do) is time critical .. if you create or destroy too many
views at one time the browser hangs and cpu will be at 100%
so in the openmeetings app try to use as less views as possible
use at less constraints as possible
use $once{ .. } instead of ${ .. } or use setters and getters
don't use canvas.setAttribute('myvar','foo') just use canvas.myvar='foo'
whenever it is not necessary (it will throw some
events which are useless if you don't have any constraints pointing to 'myvar' and which will cost
performance)
-->
<!-- define resources once at one place instead of
linking with the path every time you want it
-->
<resource name="_btn_play_rsc" src="../resources/play.png" />
<resource name="_btn_stop_rsc" src="../resources/stop.png" />
<resource name="_btn_volume_rsc" src="../resources/mix_volume.png" />
<resource name="_btn_audio_scrubtrack_rsc" src="../resources/audio_scrubtrack.png" />
<resource name="_btn_audio_scrubber_rsc" src="../resources/audio_scrubber.png" />
<class name="audioTest" extends="view" play="false" y="40">
<!-- please write layout definition always on
top or on bottom of the view content
or write it directly into the view definition -->
<simplelayout axis="y" spacing="5"/>
<view id="audioplayer" play="false" y="40" resource="http:resources/Star_in_the_east_solfege.mp3"
oninit="this.stop();">
<!-- follow a structure by defining view contents:
1.) define attributes
2.) define handlers (event handlers oninit for example if not already in view definition)
3.) define methods
4.) define layout (if not already in view definition)
5.) define content
-->
<!-- comment about this attribute and don't forget type definition in attribute's:
this attribute is volume-level -->
<attribute name="vol" value="100" type="number" />
<simplelayout axis="x" spacing="10"/>
<view>
<simplelayout axis="x" spacing="-1"/>
<button width="40" onclick="audioplayer.stop()">
<view resource="_btn_stop_rsc" y="6" align="center"/>
</button>
<button width="40" onclick="audioplayer.play()">
<view resource="_btn_play_rsc" y="5" align="center"/>
</button>
</view>
<view>
<simplelayout axis="x" spacing="-1"/>
<button width="40" text="-"
onclick="audioplayer.setVolume( audioplayer.getVolume() -10)">
<view resource="_btn_volume_rsc" y="5" align="right"/>
</button>
<button width="40" text="+"
onclick="audioplayer.setVolume( audioplayer.getVolume() +10)">
<view resource="_btn_volume_rsc" y="5" align="right"/>
</button>
</view>
<view name="background" bgcolor="black" width="202" height="15"
y="50" options="ignorelayout;">
<view name="loadbar" resource="_btn_audio_scrubtrack_rsc"
width="${audioplayer.loadperc * 200}">
<view name="playbar" resource="_btn_audio_scrubber_rsc"
y="1" x="${Math.round(180 * audioplayer.frame/audioplayer.totalframes)}"/>
</view>
</view>
</view>
<!--
think about contraints ... if they really need to be updated always
${ canvas.myvar } => value will be updated every time
myvar changes by canvas.setAttribute('myvar','foo')
normally this is not needed
high performance/cpu usage
$once{ canvas.myvar } => value will be only set once .. oninit of this attribute/view
lower perfomance/cpu usage
try to use $once whenever possible
-->
<text text="$once{mess.listen_sound}" multiline="true" width="${this.parent.width - 20}" />
<view>
<simplelayout axis="x" spacing="10"/>
<button text="$once{ mess.no }">
</button>
<button text="$once{ mess.yes }">
</button>
</view>
<nextButton nextTabpane="$once{ this.parent.parent.parent.microTab }" text="$once{mess.next}" />
</class>
</library>