/* * "**************************************************************************** * * * Copyright (c) 2012 EclipseSource and others. All rights reserved. This * program and the accompanying materials are made available under the terms of * the Eclipse Public License v1.0 which accompanies this distribution, and is * available at http://www.eclipse.org/legal/epl-v10.html Contributors: * EclipseSource - initial API and implementation * **************************************************************************** */ package com.eclipsesource.tabris.demos.entrypoints; import org.eclipse.rap.rwt.application.EntryPoint; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import com.eclipsesource.tabris.widgets.PlaybackListener; import com.eclipsesource.tabris.widgets.Video; import com.eclipsesource.tabris.widgets.Video.PlayerState; public class VideoDemo implements EntryPoint { private static final String videoUrl = "http://peach.themazzone.com/durian/movies/sintel-1280-stereo.mp4"; @Override public int createUI() { Display display = new Display(); Shell shell = new Shell( display, SWT.NO_TRIM ); shell.setMaximized( true ); GridLayout layout = new GridLayout( 1, false ); layout.marginHeight = 0; layout.marginWidth = 0; shell.setLayout( layout ); final Video video = new Video( shell, videoUrl ); video.setLayoutData( new GridData( SWT.FILL, SWT.FILL, true, true ) ); video.setSpeed( Video.PLAY_SPEED ); video.addPlaybackListener( new PlaybackListener() { @Override public void playbackChanged( PlayerState state ) { System.out.println( "New playback state: " + state ); System.out.println( "Playback speed: " + video.getSpeed() ); } } ); createButtons( shell, video ); shell.open(); return 0; } private void createButtons( Composite parent, final Video video ) { Composite composite = new Composite( parent, SWT.NONE ); composite.setLayout( new GridLayout( 3, true ) ); composite.setLayoutData( new GridData( SWT.FILL, SWT.BOTTOM, true, false ) ); createButton( composite, "Play", new SelectionAdapter() { @Override public void widgetSelected( SelectionEvent e ) { video.setSpeed( 1f ); } } ); createButton( composite, "Pause", new SelectionAdapter() { @Override public void widgetSelected( SelectionEvent e ) { video.setSpeed( 0f ); } } ); createButton( composite, "Controls", new SelectionAdapter() { @Override public void widgetSelected( SelectionEvent e ) { video.setPlayerControlsVisible( !video.hasPlayerControlsVisible() ); } } ); createButton( composite, "Step to 3:00", new SelectionAdapter() { @Override public void widgetSelected( SelectionEvent e ) { video.stepToTime( 3 * 60 ); } } ); createButton( composite, "Skip -20 sec", new SelectionAdapter() { @Override public void widgetSelected( SelectionEvent e ) { video.skipFromCurrent( -20 ); } } ); createButton( composite, "Skip + 30 sec", new SelectionAdapter() { @Override public void widgetSelected( SelectionEvent e ) { video.skipFromCurrent( 30 ); } } ); } private Button createButton( Composite composite, String text, SelectionListener listener ) { Button button = new Button( composite, SWT.PUSH ); button.setText( text ); button.setLayoutData( new GridData( SWT.FILL, SWT.TOP, true, false ) ); button.addSelectionListener( listener ); return button; } }