blob: 7f4c73e264038dc4f6c8bd15d25c654f0a76f01c [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:
* Hisashi MIYASHITA - initial API and implementation
*******************************************************************************/
package org.eclipse.actf.ai.navigator.impl;
import java.io.File;
import org.eclipse.actf.ai.navigator.IBrowserControl;
import org.eclipse.actf.ai.navigator.IManipulator;
import org.eclipse.actf.ai.navigator.extension.ManipulatorExtension;
import org.eclipse.actf.ai.navigator.util.URLOpenDialog;
import org.eclipse.actf.ai.navigator.voice.VoiceManager;
import org.eclipse.actf.ai.xmlstore.XMLStoreServiceUtil;
import org.eclipse.actf.model.ui.editor.browser.IWebBrowserACTF;
import org.eclipse.actf.model.ui.editor.browser.IWebBrowserNavigationEventListener;
import org.eclipse.actf.model.ui.editor.browser.WebBrowserNavigationEvent;
import org.eclipse.actf.model.ui.util.ModelServiceUtils;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.PlatformUI;
public class BrowserControlImpl implements IBrowserControl, IWebBrowserNavigationEventListener {
private final TripJournal tripJournal;
private final WebEventListener webEventListener;
private final VoiceManager voiceManager = new VoiceManager(null);
public void backward() {
tripJournal.backward(webEventListener.getFocused());
}
public void forward() {
tripJournal.forward(webEventListener.getFocused());
}
BrowserControlImpl(WebEventListener webEventListener, TripJournal tripJournal) {
this.tripJournal = tripJournal;
this.webEventListener = webEventListener;
}
public void goBack(WebBrowserNavigationEvent e) {
tripJournal.backward(webEventListener.getFocused());
}
public void goForward(WebBrowserNavigationEvent e) {
tripJournal.forward(webEventListener.getFocused());
}
public void refresh(WebBrowserNavigationEvent e) {
IWebBrowserACTF wb = e.getBrowser();
WebEventListener.BrowserState bs = webEventListener.getBrowserState(wb);
if (bs == null)
return;
bs.getNavigator().navigateRefresh();
}
public void stop(WebBrowserNavigationEvent e) {
IWebBrowserACTF wb = e.getBrowser();
wb.navigateStop();
}
public void exportAllMetadata() {
String[] ext = { "*.fnz" };
voiceManager.speakWithFormat("Navigator.EXPORT_ALL_ANNOTATIONS", true, true);
Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
FileDialog fileDialog = new FileDialog(shell, SWT.OPEN);
fileDialog.setFilterExtensions(ext);
String path = fileDialog.open();
if (path != null) {
if (!path.endsWith(".fnz")) {
path = path + ".fnz";
}
File dest = new File(path);
if (dest.exists()) {
String title = voiceManager.getMessageFormatter().mes("Navigator.OVERWRITE_CONFIRM");
String message = voiceManager.getMessageFormatter().mes("Navigator.OVERWRITE_MESSAGE", dest.getName());
boolean ret = MessageDialog.openQuestion(shell, title, message);
if (!ret)
return;
}
if (XMLStoreServiceUtil.getXMLStoreService().exportAllAnnotations(dest)) {
voiceManager.speakWithFormat("Navigator.EXPORT_IS_SUCCEEDED", true, true);
} else {
voiceManager.speakWithFormat("Navigator.EXPORT_IS_FAILED", true, true);
}
}
}
public void importMetadata() {
String[] ext = { "*.fnc;*.fnz;*.xml" };
voiceManager.speakWithFormat("Navigator.IMPORT_FENNEC_FILE", true, true);
Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
FileDialog fileDialog = new FileDialog(shell, SWT.OPEN);
fileDialog.setFilterExtensions(ext);
String path = fileDialog.open();
if (path != null) {
File src = new File(path);
boolean r = XMLStoreServiceUtil.getXMLStoreService().importMetadata(src);
XMLStoreServiceUtil.getXMLStoreService().getRootStore().refleshAll();
NavigatorImpl navigator = webEventListener.getFocused();
if (navigator != null)
navigator.forceRestart();
if (r) {
voiceManager.speakWithFormat("Navigator.IMPORT_IS_SUCCEEDED", true, true);
} else {
voiceManager.speakWithFormat("Navigator.IMPORT_IS_FAILED", true, true);
}
}
}
public void openTab() {
voiceManager.stop();
URLOpenDialog openURLDialog = new URLOpenDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell());
if (1 == openURLDialog.open()) {
ManipulatorExtension.setMode(IManipulator.FORM_INPUT_MODE);
String sUrl = openURLDialog.getUrl();
ModelServiceUtils.openInExistingEditor(sUrl);
ManipulatorExtension.setMode(IManipulator.TREE_NAVIGATION_MODE);
}
}
}