/******************************************************************************* * Copyright (c) 2005, 2016 IBM Corporation 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 * *******************************************************************************/ package org.eclipse.dltk.internal.ui.editor; import org.eclipse.core.resources.IStorage; import org.eclipse.core.runtime.IPath; import org.eclipse.dltk.core.IExternalSourceModule; import org.eclipse.dltk.core.IModelElement; import org.eclipse.dltk.internal.ui.ExternalSourceModuleEditorInputFactory; import org.eclipse.dltk.ui.DLTKUILanguageManager; import org.eclipse.dltk.ui.IDLTKUILanguageToolkit; import org.eclipse.dltk.ui.ScriptElementLabels; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IPersistableElement; import org.eclipse.ui.IStorageEditorInput; import org.eclipse.ui.PlatformUI; public class ExternalStorageEditorInput implements IEditorInput, IStorageEditorInput { private IStorage fStorage; public ExternalStorageEditorInput(IStorage storage) { this.fStorage = storage; } @Override public boolean exists() { return fStorage != null; } @Override public ImageDescriptor getImageDescriptor() { return PlatformUI.getWorkbench().getEditorRegistry() .getImageDescriptor(this.fStorage.getName()); } @Override public String getName() { return fStorage.getName(); } @Override public IPersistableElement getPersistable() { if (fStorage instanceof IExternalSourceModule) { return ExternalSourceModuleEditorInputFactory .createPersistableElement((IExternalSourceModule) fStorage); } return null; } @Override public String getToolTipText() { IPath path = fStorage.getFullPath(); if (path == null) { return ""; //$NON-NLS-1$ } if (fStorage instanceof IModelElement) { IModelElement modelElement = (IModelElement) fStorage; IDLTKUILanguageToolkit uiToolkit = DLTKUILanguageManager .getLanguageToolkit(modelElement); ScriptElementLabels labels = uiToolkit.getScriptElementLabels(); String label = labels.getTextLabel(fStorage, ScriptElementLabels.PREPEND_ROOT_PATH); return label; } return path.toOSString(); } @SuppressWarnings("unchecked") @Override public <T> T getAdapter(Class<T> adapter) { if (adapter == IModelElement.class && fStorage instanceof IModelElement) { return (T) fStorage; } return null; } @Override public IStorage getStorage() { return this.fStorage; } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (!(obj instanceof ExternalStorageEditorInput)) { return false; } ExternalStorageEditorInput other = (ExternalStorageEditorInput) obj; return fStorage.equals(other.fStorage); } @Override public int hashCode() { return fStorage.hashCode(); } public IPath getPath(Object element) { return fStorage.getFullPath(); } }