package com.google.dart.tools.ui.instrumentation;
import com.google.dart.engine.utilities.instrumentation.Instrumentation;
import com.google.dart.engine.utilities.instrumentation.InstrumentationBuilder;
import org.eclipse.core.resources.IResource;
import org.eclipse.jface.text.ITextSelection;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchPartReference;
import org.eclipse.ui.IWorkbenchWindow;
/**
* Instances of {@code UIInstrumentationBuilder} are a drop in replacement for
* {@link InstrumentationBuilder} and provide convenience methods for logging Eclipse specific
* information. Instances do not themselves log information, but simply forward that information to
* the {@link InstrumentationBuilder} returned by {@link Instrumentation#builder(String)}
*/
public interface UIInstrumentationBuilder extends InstrumentationBuilder {
/**
* Append information about the resources.
*
* @param resources the resources to instrument (may be {@code null})
*/
void record(IResource[] resources);
/**
* Append information about the selection.
*
* @param selection the selection (may be {@code null})
*/
void record(ISelection selection);
/**
* Append information about the selection.
*
* @param selection the selection (may be {@code null})
*/
void record(IStructuredSelection selection);
/**
* Append information about the selection.
*
* @param selection the selection (may be {@code null})
*/
void record(ITextSelection selection);
/**
* Append information about the workbench page
*
* @param page the page (may be {@code null})
*/
void record(IWorkbenchPage page);
/**
* Append information about the workbench part
*
* @param part the part (may be {@code null})
*/
void record(IWorkbenchPartReference part);
/**
* Append information about the workbench window
*
* @param window the window (may be {@code null})
*/
void record(IWorkbenchWindow window);
}