/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.components.tiglviewer.gui.runtime;
import java.io.File;
import java.io.IOException;
import org.apache.commons.exec.OS;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import de.rcenvironment.components.tiglviewer.execution.TiglViewerView;
import de.rcenvironment.core.toolkitbridge.transitional.ConcurrencyUtils;
import de.rcenvironment.toolkit.modules.concurrency.api.TaskDescription;
/**
* Shows a TiGL Viewer as view within RCE.
*
* @author Jan FLink
*/
public class TiglViewerRuntimeView extends TiglViewerView {
/**
* Logger.
*/
private static final Log LOGGER = LogFactory.getLog(TiglViewerRuntimeView.class);
/**
* Opens the given file in TiGLViewer.
*
* @param tempFile The input file for the TiGL Viewer
*/
@Override
public void showView(File tempFile) {
try {
final String secondId = tempFile.getCanonicalPath().replaceAll(":", "&");
IWorkbench wb = PlatformUI.getWorkbench();
IWorkbenchWindow[] windows = wb.getWorkbenchWindows();
IWorkbenchWindow window = wb.getActiveWorkbenchWindow();
if (window == null) {
window = windows[0];
}
final IWorkbenchPage page = window.getActivePage();
ConcurrencyUtils.getAsyncTaskService().execute(new Runnable() {
@Override
@TaskDescription("Starting TiGLViewer")
public void run() {
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
try {
if (OS.isFamilyWindows()) {
page.showView("de.rcenvironment.core.gui.tiglviewer.views.TIGLViewer",
secondId, IWorkbenchPage.VIEW_ACTIVATE);
}
} catch (PartInitException e) {
LOGGER.error(e);
}
}
});
}
});
} catch (RuntimeException e) {
LOGGER.error("TiGLViewer component cannot open TiGLViewer. Maybe no GUI available?");
} catch (IOException e) {
LOGGER.error(e);
}
}
}