123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- /*
- * Copyright 2000-2014 Vaadin Ltd.
- *
- * 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.vaadin.client.ui;
-
- import com.vaadin.client.WidgetUtil;
- import com.vaadin.client.communication.StateChangeEvent;
- import com.vaadin.shared.communication.URLReference;
- import com.vaadin.shared.ui.AbstractMediaState;
- import com.vaadin.shared.ui.MediaControl;
- import com.vaadin.shared.ui.PreloadMode;
-
- public abstract class MediaBaseConnector extends AbstractComponentConnector {
-
- @Override
- protected void init() {
- super.init();
-
- registerRpc(MediaControl.class, new MediaControl() {
- @Override
- public void play() {
- getWidget().play();
- }
-
- @Override
- public void pause() {
- getWidget().pause();
- }
- });
- }
-
- @Override
- public AbstractMediaState getState() {
- return (AbstractMediaState) super.getState();
- }
-
- @Override
- public void onStateChanged(StateChangeEvent event) {
- super.onStateChanged(event);
-
- final VMediaBase widget = getWidget();
- final AbstractMediaState state = getState();
-
- setAltText(state.altText); // must do before loading sources
- setPreload(state.preload);
- widget.setLoop(state.loop);
- widget.setAutoplay(state.autoplay);
- widget.setMuted(state.muted);
- widget.setControls(state.showControls);
-
- if (event.hasPropertyChanged("sources")) {
- widget.removeAllSources();
- for (int i = 0; i < state.sources.size(); i++) {
- URLReference source = state.sources.get(i);
- String sourceType = state.sourceTypes.get(i);
- widget.addSource(source.getURL(), sourceType);
- }
- widget.load();
- }
- }
-
- @Override
- public VMediaBase getWidget() {
- return (VMediaBase) super.getWidget();
- }
-
- private void setAltText(String altText) {
-
- if (altText == null || "".equals(altText)) {
- altText = getDefaultAltHtml();
- } else if (!getState().htmlContentAllowed) {
- altText = WidgetUtil.escapeHTML(altText);
- }
- getWidget().setAltText(altText);
- }
-
- private void setPreload(final PreloadMode preload) {
- if (preload != null) {
- getWidget().setPreload(preload.getValue());
- }
- }
-
- /**
- * @return the default HTML to show users with browsers that do not support
- * HTML5 media markup.
- */
- protected abstract String getDefaultAltHtml();
-
- }
|