/* * * Copyright (C) 2007-2015 Licensed to the Comunes Association (CA) under * one or more contributor license agreements (see COPYRIGHT for details). * The CA licenses this file to you under the GNU Affero General Public * License version 3, (the "License"); you may not use this file except in * compliance with the License. This file is part of kune. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * */ package cc.kune.core.client.sub; import org.adamtacy.client.ui.effects.events.EffectCompletedEvent; import org.adamtacy.client.ui.effects.events.EffectCompletedHandler; import org.adamtacy.client.ui.effects.examples.Show; import org.adamtacy.client.ui.effects.examples.SlideRight; import cc.kune.common.shared.utils.SimpleCallback; import cc.kune.core.client.sub.SubtitlesManager.SubtitlesView; import com.google.gwt.core.client.GWT; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.logical.shared.ResizeEvent; import com.google.gwt.event.logical.shared.ResizeHandler; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.Event; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.InlineLabel; import com.google.gwt.user.client.ui.PopupPanel; import com.google.gwt.user.client.ui.Widget; import com.gwtplatform.mvp.client.ViewImpl; // TODO: Auto-generated Javadoc /** * The Class SubtitlesWidget. * * @author vjrj@ourproject.org (Vicente J. Ruiz Jurado) */ public class SubtitlesWidget extends ViewImpl implements SubtitlesView { /** * The Interface SubtitlesWidgetUiBinder. * * @author vjrj@ourproject.org (Vicente J. Ruiz Jurado) */ interface SubtitlesWidgetUiBinder extends UiBinder<Widget, SubtitlesWidget> { } /** The Constant SUBTITLE_MANAGER_ID. */ public static final String SUBTITLE_MANAGER_ID = "k-subt-widget"; /** The ui binder. */ private static SubtitlesWidgetUiBinder uiBinder = GWT.create(SubtitlesWidgetUiBinder.class); /** The callback. */ private SimpleCallback callback; /** The description. */ @UiField InlineLabel description; /** The popup. */ private final PopupPanel popup; /** The showing. */ private boolean showing; /** The title. */ @UiField InlineLabel title; /** The widget. */ private final Widget widget; /** * Instantiates a new subtitles widget. */ public SubtitlesWidget() { popup = new PopupPanel(false, false); popup.ensureDebugId(SUBTITLE_MANAGER_ID); widget = uiBinder.createAndBindUi(this); popup.addDomHandler(new ClickHandler() { @Override public void onClick(final ClickEvent event) { if (showing) { final SlideRight slideAtEnd = new SlideRight(widget.getElement()); slideAtEnd.invert(); slideAtEnd.setDuration(2); slideAtEnd.play(); // final Fade fadeAtEnd = new Fade(popup.getElement()); // fadeAtEnd.setDuration(2); // fadeAtEnd.play(); slideAtEnd.addEffectCompletedHandler(new EffectCompletedHandler() { @Override public void onEffectCompleted(final EffectCompletedEvent event) { popup.hide(); callback.onCallback(); } }); showing = false; } } }, ClickEvent.getType()); Window.addResizeHandler(new ResizeHandler() { @Override public void onResize(final ResizeEvent event) { setSize(event.getWidth(), event.getHeight()); } }); } /* * (non-Javadoc) * * @see com.gwtplatform.mvp.client.View#asWidget() */ @Override public Widget asWidget() { return popup; } /* * (non-Javadoc) * * @see * cc.kune.core.client.sub.SubtitlesManager.SubtitlesView#setDescription(java * .lang.String) */ @Override public void setDescription(final String descr) { description.setText(descr); } /** * Sets the size. * * @param width * the width * @param height * the height */ private void setSize(final int width, final int height) { popup.setSize(width + "px", height + "px"); } /* * (non-Javadoc) * * @see * cc.kune.core.client.sub.SubtitlesManager.SubtitlesView#setTitleText(java * .lang.String) */ @Override public void setTitleText(final String text) { title.setText(text); } /* * (non-Javadoc) * * @see * cc.kune.core.client.sub.SubtitlesManager.SubtitlesView#show(cc.kune.common * .shared.utils.SimpleCallback) */ @Override public void show(final SimpleCallback callback) { this.callback = callback; popup.setWidget(widget); setSize(Window.getClientWidth(), Window.getClientHeight()); popup.sinkEvents(Event.MOUSEEVENTS); popup.show(); final Show showAtIni = new Show(widget.getElement()); showAtIni.setDuration(2); showAtIni.play(); final SlideRight slideAtIni = new SlideRight(widget.getElement()); slideAtIni.setDuration(2); slideAtIni.play(); this.showing = true; } }