package com.google.dart.tools.wst.ui; import com.google.dart.engine.context.AnalysisContext; import com.google.dart.engine.source.Source; import com.google.dart.tools.core.analysis.model.Project; import com.google.dart.tools.ui.internal.text.dart.DartPriorityFileEditor; import org.eclipse.core.runtime.IAdapterFactory; import org.eclipse.core.runtime.IPath; import org.eclipse.swt.custom.StyledText; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IFileEditorInput; import org.eclipse.wst.sse.ui.StructuredTextEditor; import org.eclipse.wst.sse.ui.internal.StructuredTextViewer; /** * This {@link IAdapterFactory} adapts {@link StructuredTextEditor} to * {@link DartPriorityFileEditor}. */ public class StructuredTextEditorToPriorityFileAdapterFactory implements IAdapterFactory { @Override @SuppressWarnings("rawtypes") public Object getAdapter(Object adaptableObject, Class adapterType) { if (adaptableObject instanceof StructuredTextEditor && DartPriorityFileEditor.class.equals(adapterType)) { final StructuredTextEditor textEditor = (StructuredTextEditor) adaptableObject; final StructuredTextViewer textViewer = textEditor.getTextViewer(); final StyledText textWidget = textViewer.getTextWidget(); final IEditorInput editorInput = textEditor.getEditorInput(); if (editorInput instanceof IFileEditorInput) { final IFileEditorInput fileEditorInput = (IFileEditorInput) editorInput; final IPath location = fileEditorInput.getFile().getLocation(); if (location != null) { final String filePath = location.toOSString(); return new DartPriorityFileEditor() { @Override public AnalysisContext getInputAnalysisContext() { return null; } @Override public String getInputFilePath() { return filePath; } @Override public Project getInputProject() { return null; } @Override public Source getInputSource() { return null; } @Override public boolean isVisible() { return textWidget.isVisible(); } }; } } } return null; } @Override @SuppressWarnings("rawtypes") public Class[] getAdapterList() { return new Class[] {DartPriorityFileEditor.class}; } }