package rocks.inspectit.ui.rcp.handlers; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.handlers.HandlerUtil; import rocks.inspectit.ui.rcp.InspectIT; import rocks.inspectit.ui.rcp.InspectITImages; import rocks.inspectit.ui.rcp.editor.inputdefinition.EditorPropertiesData; import rocks.inspectit.ui.rcp.editor.inputdefinition.EditorPropertiesData.PartType; import rocks.inspectit.ui.rcp.editor.inputdefinition.InputDefinition; import rocks.inspectit.ui.rcp.editor.inputdefinition.InputDefinition.IdDefinition; import rocks.inspectit.ui.rcp.editor.root.FormRootEditor; import rocks.inspectit.ui.rcp.editor.root.RootEditorInput; import rocks.inspectit.ui.rcp.model.SensorTypeEnum; import rocks.inspectit.ui.rcp.provider.ICmrRepositoryProvider; import rocks.inspectit.ui.rcp.provider.IInputDefinitionProvider; import rocks.inspectit.ui.rcp.repository.CmrRepositoryDefinition; import rocks.inspectit.ui.rcp.repository.RepositoryDefinition; /** * Handler for opening the trace overview view. * * @author Iavn Senic */ public class OpenTraceOverviewHandler extends AbstractHandler { /** * {@inheritDoc} */ @Override public Object execute(ExecutionEvent event) throws ExecutionException { // TODO when tracing data is available for the storage also enable storage repository // definition CmrRepositoryDefinition availableCmr = null; ISelection selection = HandlerUtil.getCurrentSelection(event); if (selection instanceof StructuredSelection) { Object selectedObject = ((StructuredSelection) selection).getFirstElement(); if (selectedObject instanceof ICmrRepositoryProvider) { ICmrRepositoryProvider cmrRepositoryProvider = (ICmrRepositoryProvider) selectedObject; availableCmr = cmrRepositoryProvider.getCmrRepositoryDefinition(); } } if (null == availableCmr) { IWorkbenchPart editor = HandlerUtil.getActivePart(event); if (editor instanceof IInputDefinitionProvider) { IInputDefinitionProvider inputDefinitionProvider = (IInputDefinitionProvider) editor; if (inputDefinitionProvider.getInputDefinition().getRepositoryDefinition() instanceof CmrRepositoryDefinition) { availableCmr = (CmrRepositoryDefinition) inputDefinitionProvider.getInputDefinition().getRepositoryDefinition(); } } } if (null != availableCmr) { InputDefinition inputDefinition = createInputDefinition(availableCmr); // Get the view IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); IWorkbenchPage page = window.getActivePage(); // open the view if the input definition is set if (null != inputDefinition) { RootEditorInput input = new RootEditorInput(inputDefinition); try { page.openEditor(input, FormRootEditor.ID); } catch (PartInitException e) { throw new ExecutionException("Exception occurred trying to open the editor.", e); } } } return null; } /** * Creates input definition for the tracing overview view. * * @param repository * repository to use * @return input definition */ private InputDefinition createInputDefinition(RepositoryDefinition repository) { InputDefinition inputDefinition = new InputDefinition(); inputDefinition.setRepositoryDefinition(repository); inputDefinition.setId(SensorTypeEnum.TRACING); EditorPropertiesData editorPropertiesData = new EditorPropertiesData(); editorPropertiesData.setSensorImage(SensorTypeEnum.TRACING.getImage()); editorPropertiesData.setSensorName("Tracing"); editorPropertiesData.setViewImage(InspectIT.getDefault().getImage(InspectITImages.IMG_SHOW_ALL)); editorPropertiesData.setViewName("Show All"); editorPropertiesData.setPartNameFlag(PartType.VIEW); inputDefinition.setEditorPropertiesData(editorPropertiesData); IdDefinition idDefinition = new IdDefinition(); inputDefinition.setIdDefinition(idDefinition); return inputDefinition; } }