/*******************************************************************************
* Copyright (c) 2017 Rogue Wave Software Inc. 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:
* Rogue Wave Software Inc. - initial implementation
*******************************************************************************/
package org.eclipse.php.profile.ui.views;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.php.internal.debug.core.zend.debugger.CodeCoverageData;
import org.eclipse.php.internal.debug.ui.views.coverage.CodeCoverageSection;
import org.eclipse.php.profile.core.data.ProfilerFileData;
import org.eclipse.php.profile.core.engine.IProfileSessionListener;
import org.eclipse.php.profile.core.engine.ProfileSessionsManager;
import org.eclipse.php.profile.core.engine.ProfilerDB;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.ViewForm;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
/**
* Code coverage summary view.
*/
public class CodeCoverageSummaryView extends AbstractProfilerView implements IProfileSessionListener {
private CodeCoverageSection fCodeCoverageSection;
private ProfilerDB input;
public CodeCoverageSummaryView() {
// TODO Auto-generated constructor stub
}
@Override
public void createPartControl(Composite parent) {
createCodeCoverageForm(parent);
ProfileSessionsManager.addProfileSessionListener(this);
setInput(ProfileSessionsManager.getCurrent());
// TODO - help context
// parent.setData(WorkbenchHelpSystem.HELP_KEY,
// IStudioHelpContextIds.CODE_COVERAGE_SUMMARY_VIEW);
// parent.addHelpListener(new HelpListener() {
// public void helpRequested(HelpEvent arg0) {
// org.eclipse.swt.program.Program
// .launch(IStudioHelpContextIds.CODE_COVERAGE_SUMMARY_VIEW);
// }
// });
}
private ViewForm createCodeCoverageForm(final Composite parent) {
final ViewForm codeCoverageForm = new ViewForm(parent, SWT.NONE);
// final ToolBar codeCoverageToolBar = new ToolBar(codeCoverageForm,
// SWT.FLAT | SWT.WRAP);
// codeCoverageForm.setTopCenter(codeCoverageToolBar);
fCodeCoverageSection = new CodeCoverageSection(codeCoverageForm, this, null /* codeCoverageToolBar */);
codeCoverageForm.setContent(fCodeCoverageSection.getComposite());
return codeCoverageForm;
}
public void showCodeCoverage(final CodeCoverageData[] coveredFiles) {
Display.getCurrent().asyncExec(new Runnable() {
public void run() {
fCodeCoverageSection.showCodeCoverage(coveredFiles);
}
});
}
@Override
public void setFocus() {
}
/**
* (non-Javadoc)
*
* @see org.eclipse.ui.part.WorkbenchPart#dispose()
*/
@Override
public void dispose() {
super.dispose();
fCodeCoverageSection.dispose();
}
@Override
public ProfilerDB getInput() {
return input;
}
@Override
public void setInput(ProfilerDB profilerDB) {
if (profilerDB != null) {
List<CodeCoverageData> codeCoverageDatas = new ArrayList<CodeCoverageData>();
ProfilerFileData[] files = profilerDB.getFiles();
for (int i = 0; i < files.length; i++) {
CodeCoverageData codeCoverageData = files[i].getCodeCoverageData();
if (codeCoverageData != null) {
codeCoverageDatas.add(codeCoverageData);
}
}
showCodeCoverage(codeCoverageDatas.toArray(new CodeCoverageData[codeCoverageDatas.size()]));
} else {
showCodeCoverage(null);
}
this.input = profilerDB;
}
public void currentSessionChanged(final ProfilerDB current) {
getSite().getShell().getDisplay().asyncExec(new Runnable() {
public void run() {
setInput(current);
}
});
}
public void profileSessionAdded(ProfilerDB db) {
}
public void profileSessionRemoved(ProfilerDB db) {
}
}