/* * Copyright (c) 2013, the Dart project authors. * * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.eclipse.org/legal/epl-v10.html * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under * the License. */ package com.google.dart.tools.ui.instrumentation; import org.eclipse.ui.IPageListener; import org.eclipse.ui.IPartListener2; import org.eclipse.ui.IWindowListener; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.IWorkbenchPartReference; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PlatformUI; /** * Track and log information about the active UI elements. */ public class ActiveUIListener implements IWindowListener, IPageListener, IPartListener2 { @Override public void pageActivated(IWorkbenchPage page) { page.addPartListener(this); UIInstrumentationBuilder instrumentation = UIInstrumentation.builder("ActiveUIListener"); try { instrumentation.metric("Action", "pageActivated"); instrumentation.record(page); } finally { instrumentation.log(); } } @Override public void pageClosed(IWorkbenchPage page) { page.removePartListener(this); UIInstrumentationBuilder instrumentation = UIInstrumentation.builder("ActiveUIListener"); try { instrumentation.metric("Action", "pageClosed"); instrumentation.record(page); } finally { instrumentation.log(); } } @Override public void pageOpened(IWorkbenchPage page) { UIInstrumentationBuilder instrumentation = UIInstrumentation.builder("ActiveUIListener"); try { instrumentation.metric("Action", "pageOpened"); instrumentation.record(page); } finally { instrumentation.log(); } } @Override public void partActivated(IWorkbenchPartReference partRef) { UIInstrumentationBuilder instrumentation = UIInstrumentation.builder("ActiveUIListener"); try { instrumentation.metric("Action", "partActivated"); instrumentation.record(partRef); } finally { instrumentation.log(); } } @Override public void partBroughtToTop(IWorkbenchPartReference partRef) { UIInstrumentationBuilder instrumentation = UIInstrumentation.builder("ActiveUIListener"); try { instrumentation.metric("Action", "partBroughtToTop"); instrumentation.record(partRef); } finally { instrumentation.log(); } } @Override public void partClosed(IWorkbenchPartReference partRef) { UIInstrumentationBuilder instrumentation = UIInstrumentation.builder("ActiveUIListener"); try { instrumentation.metric("Action", "partClosed"); instrumentation.record(partRef); } finally { instrumentation.log(); } } @Override public void partDeactivated(IWorkbenchPartReference partRef) { UIInstrumentationBuilder instrumentation = UIInstrumentation.builder("ActiveUIListener"); try { instrumentation.metric("Action", "partDeactivated"); instrumentation.record(partRef); } finally { instrumentation.log(); } } @Override public void partHidden(IWorkbenchPartReference partRef) { UIInstrumentationBuilder instrumentation = UIInstrumentation.builder("ActiveUIListener"); try { instrumentation.metric("Action", "partHidden"); instrumentation.record(partRef); } finally { instrumentation.log(); } } @Override public void partInputChanged(IWorkbenchPartReference partRef) { UIInstrumentationBuilder instrumentation = UIInstrumentation.builder("ActiveUIListener"); try { instrumentation.metric("Action", "partInputChanged"); instrumentation.record(partRef); } finally { instrumentation.log(); } } @Override public void partOpened(IWorkbenchPartReference partRef) { UIInstrumentationBuilder instrumentation = UIInstrumentation.builder("ActiveUIListener"); try { instrumentation.metric("Action", "partOpened"); instrumentation.record(partRef); } finally { instrumentation.log(); } } @Override public void partVisible(IWorkbenchPartReference partRef) { UIInstrumentationBuilder instrumentation = UIInstrumentation.builder("ActiveUIListener"); try { instrumentation.metric("Action", "partVisible"); instrumentation.record(partRef); } finally { instrumentation.log(); } } /** * Start tracking the active UI elements. */ public void start() { IWorkbench workbench = PlatformUI.getWorkbench(); workbench.addWindowListener(this); IWorkbenchWindow window = workbench.getActiveWorkbenchWindow(); if (window != null) { windowActivated(window); IWorkbenchPage page = window.getActivePage(); if (page != null) { pageActivated(page); IWorkbenchPartReference partRef = page.getActivePartReference(); if (partRef != null) { partActivated(partRef); } } } } @Override public void windowActivated(IWorkbenchWindow window) { window.addPageListener(this); UIInstrumentationBuilder instrumentation = UIInstrumentation.builder("ActiveUIListener"); try { instrumentation.metric("Action", "windowActivated"); instrumentation.record(window); } finally { instrumentation.log(); } } @Override public void windowClosed(IWorkbenchWindow window) { window.removePageListener(this); UIInstrumentationBuilder instrumentation = UIInstrumentation.builder("ActiveUIListener"); try { instrumentation.metric("Action", "windowClosed"); instrumentation.record(window); } finally { instrumentation.log(); } } @Override public void windowDeactivated(IWorkbenchWindow window) { window.removePageListener(this); UIInstrumentationBuilder instrumentation = UIInstrumentation.builder("ActiveUIListener"); try { instrumentation.metric("Action", "windowDeactivated"); instrumentation.record(window); } finally { instrumentation.log(); } } @Override public void windowOpened(IWorkbenchWindow window) { UIInstrumentationBuilder instrumentation = UIInstrumentation.builder("ActiveUIListener"); try { instrumentation.metric("Action", "windowOpened"); instrumentation.record(window); } finally { instrumentation.log(); } } }