| /******************************************************************************* |
| * Copyright (c) 2007, 2008 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 |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| |
| package org.eclipse.ui.tests.markers; |
| |
| import java.lang.reflect.Field; |
| import java.lang.reflect.InvocationTargetException; |
| import java.lang.reflect.Method; |
| |
| import org.eclipse.core.resources.IMarker; |
| import org.eclipse.core.runtime.jobs.IJobChangeListener; |
| import org.eclipse.core.runtime.jobs.Job; |
| import org.eclipse.ui.internal.views.markers.ExtendedMarkersView; |
| import org.eclipse.ui.views.markers.MarkerSupportView; |
| import org.eclipse.ui.views.markers.internal.MarkerSupportRegistry; |
| |
| /** |
| * MarkersTestMarkersView is the test suite version of the markers view. |
| * |
| * @since 3.4 |
| * |
| */ |
| public class MarkersTestMarkersView extends MarkerSupportView { |
| |
| /** |
| * Create a new instance of the receiver. |
| */ |
| public MarkersTestMarkersView() { |
| super(MarkerSupportRegistry.PROBLEMS_GENERATOR); |
| } |
| |
| /** |
| * Get the current markers for the receiver. |
| * |
| * @return |
| */ |
| public IMarker[] getCurrentMarkers() { |
| Method method; |
| try { |
| method = ExtendedMarkersView.class.getDeclaredMethod("getAllMarkers", |
| new Class[0]); |
| method.setAccessible(true); |
| } catch (SecurityException e) { |
| e.printStackTrace(); |
| return new IMarker[0]; |
| } catch (NoSuchMethodException e) { |
| e.printStackTrace(); |
| return new IMarker[0]; |
| } |
| try { |
| return (IMarker[]) method.invoke(this, new Object[0]); |
| } catch (IllegalArgumentException e) { |
| e.printStackTrace(); |
| } catch (IllegalAccessException e) { |
| e.printStackTrace(); |
| } catch (InvocationTargetException e) { |
| e.printStackTrace(); |
| } |
| return new IMarker[0]; |
| } |
| |
| /** |
| * Add a listener for the end of the update. |
| * |
| * @param listener |
| */ |
| public void addUpdateFinishListener(IJobChangeListener listener) { |
| getUpdateJobForListener().addJobChangeListener(listener); |
| |
| } |
| |
| /** |
| * Return the updateJob. |
| * |
| * @return |
| */ |
| private Job getUpdateJobForListener() { |
| Field field; |
| try { |
| field = ExtendedMarkersView.class.getDeclaredField("updateJob"); |
| field.setAccessible(true); |
| return (Job) field.get(this); |
| } catch (IllegalAccessException e) { |
| e.printStackTrace(); |
| } catch (NoSuchFieldException e) { |
| e.printStackTrace(); |
| } |
| |
| return null; |
| } |
| |
| /** |
| * Remove a listener for the end of the update. |
| * |
| * @param listener |
| */ |
| public void removeUpdateFinishListener(IJobChangeListener listener) { |
| getUpdateJobForListener().addJobChangeListener(listener); |
| |
| } |
| |
| } |