/******************************************************************************* * 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.io.File; import java.net.URI; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import java.util.Objects; import javax.media.jai.PlanarImage; import org.weasis.core.api.explorer.ObservableEvent; import org.weasis.core.api.explorer.model.DataExplorerModel; import org.weasis.core.api.media.MimeInspector; import org.weasis.core.api.media.data.Codec; import org.weasis.core.api.media.data.FileCache; import org.weasis.core.api.media.data.MediaElement; import org.weasis.core.api.media.data.MediaReader; import org.weasis.core.api.media.data.MediaSeries; import org.weasis.core.api.media.data.Series; import org.weasis.core.api.media.data.SeriesEvent; import org.weasis.core.api.media.data.TagView; import org.weasis.core.api.media.data.TagW; public class DefaultMimeIO implements MediaReader { private static final TagView defaultTagView = new TagView(TagW.FileName); protected URI uri; protected final String mimeType; private MediaElement mediaElement = null; private final FileCache fileCache; public DefaultMimeIO(URI media, String mimeType) { this.uri = Objects.requireNonNull(media); this.fileCache = new FileCache(this); this.mimeType = mimeType == null ? MimeInspector.UNKNOWN_MIME_TYPE : mimeType; } @Override public PlanarImage getImageFragment(MediaElement media) throws Exception { return null; } @Override public URI getUri() { return uri; } @Override public void reset() { // Do nothing } @Override public MediaElement getPreview() { return getSingleImage(); } @Override public boolean delegate(DataExplorerModel explorerModel) { return false; } @Override public MediaElement[] getMediaElement() { MediaElement element = getSingleImage(); if (element != null) { return new MediaElement[] { element }; } return null; } @Override public MediaSeries<MediaElement> getMediaSeries() { MediaSeries<MediaElement> mediaSeries = new Series<MediaElement>(TagW.FilePath, this.toString(), defaultTagView, 1) { @Override public String getMimeType() { synchronized (this) { for (MediaElement m : medias) { return m.getMimeType(); } } return null; } @Override public void addMedia(MediaElement media) { if (media != null) { this.add(media); DataExplorerModel model = (DataExplorerModel) getTagValue(TagW.ExplorerModel); if (model != null) { model.firePropertyChange(new ObservableEvent(ObservableEvent.BasicAction.ADD, model, null, new SeriesEvent(SeriesEvent.Action.ADD_IMAGE, this, media))); } } } }; mediaSeries.add(getSingleImage()); mediaSeries.setTag(TagW.FileName, mediaElement.getName()); return mediaSeries; } @Override public int getMediaElementNumber() { return 1; } private MediaElement getSingleImage() { if (mediaElement == null) { mediaElement = new MediaElement(this, null); } return mediaElement; } @Override public String getMediaFragmentMimeType() { return mimeType; } @Override public Map<TagW, Object> getMediaFragmentTags(Object key) { return new HashMap<>(); } @Override public void close() { // Do nothing } @Override public Codec getCodec() { return null; } @Override public String[] getReaderDescription() { return new String[] { "Default mime type reader " }; //$NON-NLS-1$ } @Override public Object getTagValue(TagW tag) { throw new UnsupportedOperationException(); } @Override public void replaceURI(URI uri) { throw new UnsupportedOperationException(); } @Override public void setTag(TagW tag, Object value) { throw new UnsupportedOperationException(); } @Override public boolean containTagKey(TagW tag) { return false; } @Override public void setTagNoNull(TagW tag, Object value) { throw new UnsupportedOperationException(); } @Override public Iterator<Entry<TagW, Object>> getTagEntrySetIterator() { throw new UnsupportedOperationException(); } @Override public FileCache getFileCache() { return fileCache; } @Override public boolean buildFile(File ouptut) { return false; } }