package org.absmodels.abs.plugin.editor.outline; import org.eclipse.core.resources.IStorage; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.Platform; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.ui.IMemento; import org.eclipse.ui.IPersistableElement; import org.eclipse.ui.IStorageEditorInput; import org.eclipse.ui.ide.FileStoreEditorInput; /** * * An implementation of {@link FileStoreEditorInput} displaying * the .abs file enclosed in a ABS package * * @author woner */ public class PackageAbsFileEditorInput implements IStorageEditorInput { private final PackageAbsFile file; private PackageAbsFileStore fileStore; public PackageAbsFileEditorInput(PackageAbsFile file) { this.fileStore = new PackageAbsFileStore(file); this.file = file; } public String getFactoryId() { return PackageAbsFileInputFactory.ID; } public PackageAbsFile getFile() { return file; } public void saveState(IMemento memento) { PackageAbsFileInputFactory.saveState(memento, this); } @Override public IStorage getStorage() throws CoreException { return new PackageAbsFileStorage(file, fileStore); } @Override public boolean exists() { return fileStore.fetchInfo().exists(); } @Override public ImageDescriptor getImageDescriptor() { return null; } @Override public String getName() { return fileStore.getName(); } @Override public IPersistableElement getPersistable() { return null; } @Override public String getToolTipText() { return fileStore.toString(); } @Override public Object getAdapter(@SuppressWarnings("rawtypes") Class adapter) { return Platform.getAdapterManager().getAdapter(this, adapter); } public boolean equals(Object o) { if (o == this) return true; if (o instanceof PackageAbsFileEditorInput) { PackageAbsFileEditorInput input = (PackageAbsFileEditorInput) o; return fileStore.equals(input.fileStore); } return false; } public int hashCode() { return fileStore.hashCode(); } }