/*********************************************************************************************
* 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.HashSet;
import org.apache.log4j.Logger;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.tracecompass.totalads.ui.live.ILiveObserver;
import org.eclipse.tracecompass.totalads.ui.live.LiveMonitor;
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.models.DataModelsView;
import org.eclipse.tracecompass.totalads.ui.results.ResultsAndFeedback;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.ISelectionListener;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.part.ViewPart;
/**
* This class creates the LiveMonitor View
*
* @author <p>
* Syed Shariyar Murtaza justsshary@hotmail.com
* </p>
*
*/
public class LiveMonitorView extends ViewPart implements ISelectionListener, ILiveObserver {
/**
* VIEW ID
*/
public static final String VIEW_ID = "org.eclipse.tracecompass.totalads.ui.LiveMonitorView"; //$NON-NLS-1$
// Variables declaration
private LiveMonitor fLiveMonitor;
private LivePartListener fPartListener;
/**
* Constructor
*/
public LiveMonitorView() {
fLiveMonitor = new LiveMonitor();
fPartListener = new LivePartListener();
fPartListener.addObserver(this);
}
/*
* (non-Javadoc)
*
* @see
* org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets
* .Composite)
*/
@Override
public void createPartControl(Composite compParent) {
fLiveMonitor.createControls(compParent);
// / Registers a listener to Eclipse to get the list of models selected
// (checked) by the user
getSite().getPage().addSelectionListener(DataModelsView.VIEW_ID, this);
// Registers a part listener to Eclipse
getSite().getPage().addPartListener(fPartListener);
try {
IViewPart viewRes = getSite().getWorkbenchWindow().getActivePage().showView(LiveResultsView.VIEW_ID);
LiveResultsView liveView = (LiveResultsView) viewRes;
fLiveMonitor.setLiveChart(liveView.getLiveChart());
fLiveMonitor.setResultsAndFeedback(liveView.getResults());
// Trying to clear the already selected instances in the models view
// when this view is opened in the middle of execution
// If the view is opened in the middle, already selected models are
// not available using the event handler
IViewPart dataModelsView = getSite().getWorkbenchWindow().getActivePage().showView(DataModelsView.VIEW_ID);
if (dataModelsView instanceof DataModelsView) {
((DataModelsView) dataModelsView).refresh();
}
} 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.LiveMonitorView_UnableToLaunch);
}
Logger.getLogger(LiveMonitor.class.getName()).error(e.getMessage(), e);
}
}
/*
* (non-Javadoc)
*
* @see org.eclipse.ui.part.WorkbenchPart#setFocus()
*/
@Override
public void setFocus() {
}
/*
* (non-Javadoc)
*
* @see org.eclipse.ui.part.WorkbenchPart#dispose()
*/
@Override
public void dispose() {
getSite().getPage().removeSelectionListener(DataModelsView.VIEW_ID, this);
fPartListener.removeObserver(this);
}
/*
* (non-Javadoc)
*
* @see
* org.eclipse.tracecompass.totalads.ui.live.ILiveObserver#update(org.
* eclipse.tracecompass.totalads.ui.results.ResultsAndFeedback)
*/
@Override
public void update(ResultsAndFeedback results) {
fLiveMonitor.setResultsAndFeedback(results);
}
/*
* (non-Javadoc)
*
* @see org.eclipse.ui.ISelectionListener#selectionChanged(org.eclipse.ui.
* IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
*/
@Override
public void selectionChanged(IWorkbenchPart part, ISelection selection) {
if (part instanceof DataModelsView) {
Object obj = ((org.eclipse.jface.viewers.StructuredSelection) selection).getFirstElement();
@SuppressWarnings("unchecked")
HashSet<String> modelList = (HashSet<String>) obj;
fLiveMonitor.updateOnModelSelction(modelList);
}
}
}