blob: 22732c4dba14fc1cb0b6c064c68c3f587fce9e5b [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2014, 2015 TwelveTone LLC and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Steven Spungin <steven@spungin.tv> - initial API and implementation, Bug 424730
*******************************************************************************/
package org.eclipse.e4.tools.emf.ui.internal.common.component.dialogs;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL;
import java.util.Map;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFileState;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IPathVariableManager;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IProjectDescription;
import org.eclipse.core.resources.IResourceProxy;
import org.eclipse.core.resources.IResourceProxyVisitor;
import org.eclipse.core.resources.IResourceVisitor;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.ResourceAttributes;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.QualifiedName;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.content.IContentDescription;
import org.eclipse.core.runtime.jobs.ISchedulingRule;
import org.eclipse.e4.tools.emf.ui.common.IClassContributionProvider.ContributionData;
/**
* An IFile wrapper for ContributionData. This is only partially implemented for
* the icon search dialog.
*
* @author Steven Spungin
*
*/
public class ContributionDataFile implements IFile {
private final ContributionData data;
private IPath path;
public ContributionDataFile(ContributionData data) {
this.data = data;
if (data.iconPath != null) {
path = Path.fromOSString(data.iconPath);
}
}
public String getBundle() {
return data.bundleName;
}
public ContributionData getContributionData() {
return data;
}
@Override
public IPath getProjectRelativePath() {
if (getContributionData().installLocation != null) {
return new Path(data.resourceRelativePath);
}
return new Path(data.iconPath);
}
@Override
public void accept(IResourceProxyVisitor visitor, int memberFlags) throws CoreException {
// TODO Auto-generated method stub
}
@Override
public void accept(IResourceProxyVisitor visitor, int depth, int memberFlags) throws CoreException {
// TODO Auto-generated method stub
}
@Override
public void accept(IResourceVisitor visitor) throws CoreException {
// TODO Auto-generated method stub
}
@Override
public void accept(IResourceVisitor visitor, int depth, boolean includePhantoms) throws CoreException {
// TODO Auto-generated method stub
}
@Override
public void accept(IResourceVisitor visitor, int depth, int memberFlags) throws CoreException {
// TODO Auto-generated method stub
}
@Override
public void clearHistory(IProgressMonitor monitor) throws CoreException {
// TODO Auto-generated method stub
}
@Override
public void copy(IPath destination, boolean force, IProgressMonitor monitor) throws CoreException {
// TODO Auto-generated method stub
}
@Override
public void copy(IPath destination, int updateFlags, IProgressMonitor monitor) throws CoreException {
// TODO Auto-generated method stub
}
@Override
public void copy(IProjectDescription description, boolean force, IProgressMonitor monitor) throws CoreException {
// TODO Auto-generated method stub
}
@Override
public void copy(IProjectDescription description, int updateFlags, IProgressMonitor monitor) throws CoreException {
// TODO Auto-generated method stub
}
@Override
public IMarker createMarker(String type) throws CoreException {
// TODO Auto-generated method stub
return null;
}
@Override
public IResourceProxy createProxy() {
// TODO Auto-generated method stub
return null;
}
@Override
public void delete(boolean force, IProgressMonitor monitor) throws CoreException {
// TODO Auto-generated method stub
}
@Override
public void delete(int updateFlags, IProgressMonitor monitor) throws CoreException {
// TODO Auto-generated method stub
}
@Override
public void deleteMarkers(String type, boolean includeSubtypes, int depth) throws CoreException {
// TODO Auto-generated method stub
}
@Override
public boolean exists() {
// TODO Auto-generated method stub
return false;
}
@Override
public IMarker findMarker(long id) throws CoreException {
// TODO Auto-generated method stub
return null;
}
@Override
public IMarker[] findMarkers(String type, boolean includeSubtypes, int depth) throws CoreException {
// TODO Auto-generated method stub
return null;
}
@Override
public int findMaxProblemSeverity(String type, boolean includeSubtypes, int depth) throws CoreException {
// TODO Auto-generated method stub
return 0;
}
@Override
public String getFileExtension() {
return path.getFileExtension();
}
@Override
public long getLocalTimeStamp() {
// TODO Auto-generated method stub
return 0;
}
@Override
public IPath getLocation() {
// TODO Auto-generated method stub
return null;
}
@Override
public URI getLocationURI() {
// TODO Auto-generated method stub
return null;
}
@Override
public IMarker getMarker(long id) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getModificationStamp() {
// TODO Auto-generated method stub
return 0;
}
@Override
public IPathVariableManager getPathVariableManager() {
// TODO Auto-generated method stub
return null;
}
@Override
public IContainer getParent() {
// TODO Auto-generated method stub
return null;
}
@Override
public Map<QualifiedName, String> getPersistentProperties() throws CoreException {
// TODO Auto-generated method stub
return null;
}
@Override
public String getPersistentProperty(QualifiedName key) throws CoreException {
// TODO Auto-generated method stub
return null;
}
@Override
public IProject getProject() {
// TODO Auto-generated method stub
return null;
}
@Override
public IPath getRawLocation() {
// TODO Auto-generated method stub
return null;
}
@Override
public URI getRawLocationURI() {
// TODO Auto-generated method stub
return null;
}
@Override
public ResourceAttributes getResourceAttributes() {
// TODO Auto-generated method stub
return null;
}
@Override
public Map<QualifiedName, Object> getSessionProperties() throws CoreException {
// TODO Auto-generated method stub
return null;
}
@Override
public Object getSessionProperty(QualifiedName key) throws CoreException {
// TODO Auto-generated method stub
return null;
}
@Override
public int getType() {
// TODO Auto-generated method stub
return 0;
}
@Override
public IWorkspace getWorkspace() {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean isAccessible() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isDerived() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isDerived(int options) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isHidden() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isHidden(int options) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isLinked() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isVirtual() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isLinked(int options) {
// TODO Auto-generated method stub
return false;
}
@Deprecated
@Override
public boolean isLocal(int depth) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isPhantom() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isSynchronized(int depth) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isTeamPrivateMember() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isTeamPrivateMember(int options) {
// TODO Auto-generated method stub
return false;
}
@Override
public void move(IPath destination, boolean force, IProgressMonitor monitor) throws CoreException {
// TODO Auto-generated method stub
}
@Override
public void move(IPath destination, int updateFlags, IProgressMonitor monitor) throws CoreException {
// TODO Auto-generated method stub
}
@Override
public void move(IProjectDescription description, boolean force, boolean keepHistory, IProgressMonitor monitor)
throws CoreException {
// TODO Auto-generated method stub
}
@Override
public void move(IProjectDescription description, int updateFlags, IProgressMonitor monitor) throws CoreException {
// TODO Auto-generated method stub
}
@Override
public void refreshLocal(int depth, IProgressMonitor monitor) throws CoreException {
// TODO Auto-generated method stub
}
@Override
public void revertModificationStamp(long value) throws CoreException {
// TODO Auto-generated method stub
}
@Deprecated
@Override
public void setDerived(boolean isDerived) throws CoreException {
// TODO Auto-generated method stub
}
@Override
public void setDerived(boolean isDerived, IProgressMonitor monitor) throws CoreException {
// TODO Auto-generated method stub
}
@Override
public void setHidden(boolean isHidden) throws CoreException {
// TODO Auto-generated method stub
}
@Deprecated
@Override
public void setLocal(boolean flag, int depth, IProgressMonitor monitor) throws CoreException {
// TODO Auto-generated method stub
}
@Override
public long setLocalTimeStamp(long value) throws CoreException {
// TODO Auto-generated method stub
return 0;
}
@Override
public void setPersistentProperty(QualifiedName key, String value) throws CoreException {
// TODO Auto-generated method stub
}
@Deprecated
@Override
public void setReadOnly(boolean readOnly) {
// TODO Auto-generated method stub
}
@Override
public void setResourceAttributes(ResourceAttributes attributes) throws CoreException {
// TODO Auto-generated method stub
}
@Override
public void setSessionProperty(QualifiedName key, Object value) throws CoreException {
// TODO Auto-generated method stub
}
@Override
public void setTeamPrivateMember(boolean isTeamPrivate) throws CoreException {
// TODO Auto-generated method stub
}
@Override
public void touch(IProgressMonitor monitor) throws CoreException {
// TODO Auto-generated method stub
}
@Override
public <T> T getAdapter(Class<T> adapter) {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean contains(ISchedulingRule rule) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isConflicting(ISchedulingRule rule) {
// TODO Auto-generated method stub
return false;
}
@Override
public void appendContents(InputStream source, boolean force, boolean keepHistory, IProgressMonitor monitor)
throws CoreException {
// TODO Auto-generated method stub
}
@Override
public void appendContents(InputStream source, int updateFlags, IProgressMonitor monitor) throws CoreException {
// TODO Auto-generated method stub
}
@Override
public void create(InputStream source, boolean force, IProgressMonitor monitor) throws CoreException {
// TODO Auto-generated method stub
}
@Override
public void create(InputStream source, int updateFlags, IProgressMonitor monitor) throws CoreException {
// TODO Auto-generated method stub
}
@Override
public void createLink(IPath localLocation, int updateFlags, IProgressMonitor monitor) throws CoreException {
// TODO Auto-generated method stub
}
@Override
public void createLink(URI location, int updateFlags, IProgressMonitor monitor) throws CoreException {
// TODO Auto-generated method stub
}
@Override
public void delete(boolean force, boolean keepHistory, IProgressMonitor monitor) throws CoreException {
// TODO Auto-generated method stub
}
@Override
public String getCharset() throws CoreException {
// TODO Auto-generated method stub
return null;
}
@Override
public String getCharset(boolean checkImplicit) throws CoreException {
// TODO Auto-generated method stub
return null;
}
@Override
public String getCharsetFor(Reader reader) throws CoreException {
// TODO Auto-generated method stub
return null;
}
@Override
public IContentDescription getContentDescription() throws CoreException {
// TODO Auto-generated method stub
return null;
}
@Override
public InputStream getContents() throws CoreException {
URL url;
@SuppressWarnings("resource")
ZipFile zip = null;
try {
if (path.getFileExtension().equals("jar")) { //$NON-NLS-1$
zip = new ZipFile(path.toOSString());
ZipEntry entry;
if (getContributionData().className != null) {
entry = zip.getEntry(getContributionData().className.replace('.', '/') + ".class"); //$NON-NLS-1$
} else {
entry = zip.getEntry(data.iconPath);
}
return zip.getInputStream(entry);
}
url = new URL("platform:/plugin/" + data.bundleName + "/" + data.iconPath); //$NON-NLS-1$ //$NON-NLS-2$
InputStream ret;
try {
ret = url.openStream();
} catch (final Exception e) {
return new BufferedInputStream(new FileInputStream(data.installLocation
+ "/" + data.resourceRelativePath)); //$NON-NLS-1$
}
return ret;
} catch (final MalformedURLException e) {
e.printStackTrace();
throw new CoreException(Status.CANCEL_STATUS);
} catch (final IOException e) {
// perhaps not a bundle
// e.printStackTrace();
throw new CoreException(Status.CANCEL_STATUS);
} finally {
if (zip != null) {
try {
zip.close();
} catch (final IOException e) {
}
}
}
}
@Override
public InputStream getContents(boolean force) throws CoreException {
// TODO Auto-generated method stub
return null;
}
@Deprecated
@Override
public int getEncoding() throws CoreException {
// TODO Auto-generated method stub
return 0;
}
@Override
public IPath getFullPath() {
return path;
}
@Override
public IFileState[] getHistory(IProgressMonitor monitor) throws CoreException {
// TODO Auto-generated method stub
return null;
}
@Override
public String getName() {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean isReadOnly() {
// TODO Auto-generated method stub
return false;
}
@Override
public void move(IPath destination, boolean force, boolean keepHistory, IProgressMonitor monitor)
throws CoreException {
// TODO Auto-generated method stub
}
@Deprecated
@Override
public void setCharset(String newCharset) throws CoreException {
// TODO Auto-generated method stub
}
@Override
public void setCharset(String newCharset, IProgressMonitor monitor) throws CoreException {
// TODO Auto-generated method stub
}
@Override
public void setContents(InputStream source, boolean force, boolean keepHistory, IProgressMonitor monitor)
throws CoreException {
// TODO Auto-generated method stub
}
@Override
public void setContents(IFileState source, boolean force, boolean keepHistory, IProgressMonitor monitor)
throws CoreException {
// TODO Auto-generated method stub
}
@Override
public void setContents(InputStream source, int updateFlags, IProgressMonitor monitor) throws CoreException {
// TODO Auto-generated method stub
}
@Override
public void setContents(IFileState source, int updateFlags, IProgressMonitor monitor) throws CoreException {
// TODO Auto-generated method stub
}
@Override
public IMarker createMarker(String type, Map<String, ? extends Object> attributes) throws CoreException {
// TODO Auto-generated method stub
return null;
}
}