blob: f553014ce175a3ad8f4c2ba97bd332f9e5080995 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2007 IBM Corporation 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:
* Daisuke SATO - initial API and implementation
*******************************************************************************/
package org.eclipse.actf.ai.audio.description.impl;
import java.util.HashMap;
import org.eclipse.actf.ai.audio.description.DescriptionPlugin;
import org.eclipse.actf.ai.audio.description.IMetadataProvider;
import org.eclipse.actf.ai.audio.description.Messages;
import org.eclipse.actf.ai.navigator.IMediaControl;
public class MediaControlImpl implements IMediaControl {
private HashMap<IHandle, MetadataManager> map = new HashMap<IHandle, MetadataManager>();
//private List<MetadataManager> managers = new Vector<MetadataManager>();
MetadataManager manager;
MetadataManager oldManager;
IHandle old = null;
IHandle handle;
public void dispose(IHandle handle) {
}
public void start(IHandle handle) {
//if (handle.getSoundControl() == null || handle.getVideoControl() == null)
//return;
initialize(handle);
}
private void initialize(IHandle handle) {
this.handle = handle;
MetadataManager temp = map.get(handle);
IMetadataProvider provider = null;
if(temp == null){
String url = handle.getWebBrowser().getURL();
provider = DescriptionPlugin.getDefault().getMetadata(url);
temp = new MetadataManager(handle, provider);
if(handle.getVideoControl() != null)
handle.getVideoControl().addEventListener(new MediaSyncEventListener(handle, temp));
//System.out.println(temp);
//map.put(handle, temp);
}
if(manager != null){
manager.stop();
}
manager = temp;
manager.start();
DescriptionPlugin.getDefault().setActiveMetadataProvider(provider);
if(manager.hasMetadata()){
if(oldManager != null){
System.out.println(oldManager.getMetadataProvider());
System.out.println(manager.getMetadataProvider());
}
if(oldManager == null || oldManager.getMetadataProvider() != manager.getMetadataProvider()){
if(handle.getVoice() != null){
//speakInfo(false);
}
oldManager = manager;
}
}else{
//handle.getVoice().speak(Messages.getString("Metadata.notAvailable"), false);
}
}
public void speakInfo(boolean flush) {
DescriptionPlugin plugin = DescriptionPlugin.getDefault();
if (!plugin.isAvailable())
return;
if (handle.getVoice() == null)
return;
if (plugin.getEnable()) {
handle.getVoice().speak(Messages.getString("AudioDescription.on"), flush);
} else {
handle.getVoice().speak(Messages.getString("AudioDescription.off"), flush);
}
}
public int toggleEnable() {
DescriptionPlugin plugin = DescriptionPlugin.getDefault();
return plugin.toggleEnable();
}
public boolean isAvailable(){
DescriptionPlugin plugin = DescriptionPlugin.getDefault();
return plugin.isAvailable();
}
public boolean toggleViewShowing() {
DescriptionPlugin plugin = DescriptionPlugin.getDefault();
return plugin.getDescriptionView().toggleViewShowing();
}
public boolean isEnabled() {
DescriptionPlugin plugin = DescriptionPlugin.getDefault();
return plugin.getEnable();
}
}