/*********************************************************************************************
* Copyright (c) 2014-2015 Software Behaviour Analysis Lab, Concordia University, Montreal, Canada
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of Eclipse Public License v1.0 License which
* accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Syed Shariyar Murtaza -- Initial design and implementation
**********************************************************************************************/
package org.eclipse.tracecompass.totalads.ui.live;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.tracecompass.totalads.ui.live.ILiveObserver;
import org.eclipse.tracecompass.totalads.ui.live.LiveMonitorView;
import org.eclipse.tracecompass.totalads.ui.live.LivePartListener;
import org.eclipse.tracecompass.totalads.ui.live.LiveResultsView;
import org.eclipse.tracecompass.totalads.ui.live.Messages;
import org.eclipse.tracecompass.totalads.ui.results.ResultsAndFeedback;
import org.eclipse.ui.IPartListener;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
/**
* Implements an Eclipse Part Listener for Diagnosis View
*
* @author <p>
* Syed Shariyar Murtaza justsshary@hotmail.com
* </p>
*
*/
public class LivePartListener implements IPartListener {
private List<ILiveObserver> fObservers;
/**
* Constructor to create the part listener
*/
public LivePartListener() {
fObservers = new ArrayList<>();
}
/*
* (non-Javadoc)
*
* @see
* org.eclipse.ui.IPartListener#partActivated(org.eclipse.ui.IWorkbenchPart)
*/
@Override
public void partActivated(IWorkbenchPart part) {
try {
if (part instanceof LiveMonitorView) {
// Launching Results View if it is not opened
IViewPart viewRes = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView(LiveResultsView.VIEW_ID);
LiveResultsView liveResultsView = (LiveResultsView) viewRes;
notifyObservers(liveResultsView.getResults());
}
} catch (PartInitException e) {
String msgTitle="TotalADS"; //$NON-NLS-1$
if (e.getMessage() != null) {
MessageDialog.openError(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),
msgTitle,e.getMessage());
} else {
MessageDialog.openError(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),
msgTitle,Messages.LivePartListener_UnableToLaunch);
}
Logger.getLogger(LivePartListener.class.getName()).error(e.getMessage(), e);
}
}
/*
* (non-Javadoc)
*
* @see
* org.eclipse.ui.IPartListener#partBroughtToTop(org.eclipse.ui.IWorkbenchPart
* )
*/
@Override
public void partBroughtToTop(IWorkbenchPart part) {
}
/*
* (non-Javadoc)
*
* @see
* org.eclipse.ui.IPartListener#partClosed(org.eclipse.ui.IWorkbenchPart)
*/
@Override
public void partClosed(IWorkbenchPart part) {
}
/*
* (non-Javadoc)
*
* @see
* org.eclipse.ui.IPartListener#partDeactivated(org.eclipse.ui.IWorkbenchPart
* )
*/
@Override
public void partDeactivated(IWorkbenchPart part) {
}
/*
* (non-Javadoc)
*
* @see
* org.eclipse.ui.IPartListener#partOpened(org.eclipse.ui.IWorkbenchPart)
*/
@Override
public void partOpened(IWorkbenchPart part) {
}
/**
* Adds an observer
*
* @param observer Observer
*/
public void addObserver(ILiveObserver observer) {
fObservers.add(observer);
}
/**
* Removes an observer
*
* @param observer Observer
*/
public void removeObserver(ILiveObserver observer) {
fObservers.remove(observer);
}
/**
* Notifies the fObservers
*
* @param results
*/
private void notifyObservers(ResultsAndFeedback results) {
for (ILiveObserver ob : fObservers) {
ob.update(results);
}
}
}