/******************************************************************************* * 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.util.Map; import javax.swing.Icon; import javax.swing.ImageIcon; import org.weasis.core.api.gui.util.AppProperties; import org.weasis.core.api.media.MimeInspector; import org.weasis.core.api.media.data.MediaElement; import org.weasis.core.api.media.data.MediaSeries; import org.weasis.core.ui.Messages; public class DefaultMimeAppFactory implements SeriesViewerFactory { public static final String NAME = Messages.getString("DefaultMimeAppFactory.sys_app"); //$NON-NLS-1$ public static final Icon ICON = new ImageIcon(MimeInspector.class.getResource("/icon/16x16/apps-system.png")); //$NON-NLS-1$ public static final MimeSystemAppViewer MimeSystemViewer = new MimeSystemAppViewer() { @Override public String getPluginName() { return NAME; } @Override public void addSeries(MediaSeries<MediaElement> series) { if (series != null) { Iterable<MediaElement> list = series.getMedias(null, null); synchronized (series) { for (MediaElement m : list) { // As SUN JRE supports only Gnome and responds "true" for Desktop.isDesktopSupported() // in KDE session, but actually does not support it. // http://bugs.sun.com/view_bug.do?bug_id=6486393 if (AppProperties.OPERATING_SYSTEM.startsWith("linux")) { //$NON-NLS-1$ startAssociatedProgramFromLinux(m.getFile()); } else if (AppProperties.OPERATING_SYSTEM.startsWith("win")) { //$NON-NLS-1$ // Workaround of the bug with mpg file see http://bugs.sun.com/view_bug.do?bug_id=6599987 startAssociatedProgramFromWinCMD(m.getFile()); } else if (Desktop.isDesktopSupported()) { final Desktop desktop = Desktop.getDesktop(); if (desktop.isSupported(Desktop.Action.OPEN)) { startAssociatedProgramFromDesktop(desktop, m.getFile()); } } } } } } @Override public String getDockableUID() { return null; } }; private static final DefaultMimeAppFactory instance = new DefaultMimeAppFactory(); private DefaultMimeAppFactory() { } public static DefaultMimeAppFactory getInstance() { return instance; } @Override public Icon getIcon() { return ICON; } @Override public String getUIName() { return NAME; } @Override public String getDescription() { return ""; //$NON-NLS-1$ } @Override public boolean canReadMimeType(String mimeType) { return true; } @Override public boolean isViewerCreatedByThisFactory(SeriesViewer<? extends MediaElement> viewer) { return false; } @Override public SeriesViewer<MediaElement> createSeriesViewer(Map<String, Object> properties) { return MimeSystemViewer; } @Override public int getLevel() { return 100; } @Override public boolean canAddSeries() { return false; } @Override public boolean canExternalizeSeries() { return false; } }