package rtt.ui.editors.input; import java.io.ByteArrayInputStream; import java.io.InputStream; import org.eclipse.core.resources.IStorage; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.ui.IPersistableElement; import org.eclipse.ui.IStorageEditorInput; import rtt.core.exceptions.RTTException; import rtt.core.manager.Manager; import rtt.core.manager.data.history.InputManager; import rtt.ui.content.IContent; import rtt.ui.content.main.ContentIcon; import rtt.ui.model.RttProject; @SuppressWarnings("rawtypes") public class InputEditorInput implements IStorageEditorInput { RttProject project; String suiteName; String caseName; Integer versionNr; public InputEditorInput(IContent content, String suiteName, String caseName, Integer versionNr) { super(); this.project = content.getProject(); this.suiteName = suiteName; this.caseName = caseName; this.versionNr = versionNr; } @Override public Object getAdapter(Class adapter) { return null; } @Override public boolean exists() { return false; } @Override public ImageDescriptor getImageDescriptor() { return ContentIcon.INPUT.getImageDescriptor(false); } @Override public String getName() { StringBuilder builder = new StringBuilder(); builder.append("Input ("); builder.append(versionNr); builder.append(") ["); builder.append(suiteName); builder.append("/"); builder.append(caseName); builder.append("]"); return builder.toString(); } @Override public IPersistableElement getPersistable() { return null; } @Override public String getToolTipText() { return getName(); } @Override public IStorage getStorage() throws CoreException { return new IStorage() { @Override public Object getAdapter(Class adapter) { return null; } @Override public boolean isReadOnly() { return true; } @Override public String getName() { return "Storage name"; } @Override public IPath getFullPath() { return null; } @Override public InputStream getContents() throws CoreException { try { Manager manager = project.getManager(); if (manager == null) { throw new RuntimeException("Could not open manager."); } InputManager inputManager = new InputManager(manager.getArchive().getLoader(), suiteName, caseName); InputStream bais = new ByteArrayInputStream(inputManager.getInput(versionNr).getValue().getBytes()); manager.close(); return bais; } catch (RTTException e) { throw new RuntimeException("Could not get input content.", e); } } }; } }