/******************************************************************************* * Copyright (c) 2016 Weasis Team 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: * Nicolas Roduit - initial API and implementation *******************************************************************************/ package org.weasis.core.ui.editor; import java.awt.Desktop; import java.io.File; import java.io.IOException; import java.util.List; import javax.swing.JMenu; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.weasis.core.api.media.data.MediaElement; import org.weasis.core.api.media.data.MediaSeries; import org.weasis.core.api.media.data.MediaSeriesGroup; import org.weasis.core.ui.docking.DockableTool; import org.weasis.core.ui.util.Toolbar; public abstract class MimeSystemAppViewer implements SeriesViewer<MediaElement> { private static final Logger LOGGER = LoggerFactory.getLogger(MimeSystemAppViewer.class); private static final String ERROR_MSG = "Cannot open {} with the default system application"; //$NON-NLS-1$ @Override public void close() { } @Override public List<MediaSeries<MediaElement>> getOpenSeries() { return null; } public static void startAssociatedProgramFromLinux(File file) { if (file != null && file.canRead()) { try { String cmd = String.format("xdg-open %s", file.getAbsolutePath()); //$NON-NLS-1$ Runtime.getRuntime().exec(cmd); } catch (IOException e) { LOGGER.error(ERROR_MSG, file, e); // $NON-NLS-1$ } } } public static void startAssociatedProgramFromWinCMD(File file) { if (file != null && file.canRead()) { try { Runtime.getRuntime().exec("cmd /c \"" + file + '"'); //$NON-NLS-1$ } catch (IOException e) { LOGGER.error(ERROR_MSG, file, e); // $NON-NLS-1$ } } } public static void startAssociatedProgramFromDesktop(final Desktop desktop, File file) { if (file != null && file.canRead()) { try { desktop.open(file); } catch (IOException e) { LOGGER.error(ERROR_MSG, file, e); // $NON-NLS-1$ } } } @Override public void removeSeries(MediaSeries<MediaElement> sequence) { } @Override public JMenu fillSelectedPluginMenu(JMenu menu) { return null; } @Override public List<Toolbar> getToolBar() { return null; } @Override public List<DockableTool> getToolPanel() { return null; } @Override public void setSelected(boolean selected) { } @Override public MediaSeriesGroup getGroupID() { return null; } }