/*******************************************************************************
* Copyright (c) 2013, 2014 École Polytechnique de Montréal 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:
* Geneviève Bastien - Initial API and implementation
* Marc-Andre Laperle - Add method to get opened tmf projects
* Patrick Tasse - Add support for folder elements
*******************************************************************************/
package org.eclipse.tracecompass.tmf.ui.project.model;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.tracecompass.internal.tmf.ui.Activator;
import org.eclipse.tracecompass.tmf.core.TmfProjectNature;
import org.eclipse.ui.PlatformUI;
/**
* Utility class for common tmf.ui functionalities
*/
public class TraceUtils {
private TraceUtils() {
}
/**
* Displays an error message in a box
*
* @param boxTitle
* The message box title
* @param errorMsg
* The error message to display
*/
public static void displayErrorMsg(final String boxTitle, final String errorMsg) {
displayErrorMsg(boxTitle, errorMsg, null);
}
/**
* Displays an error message in a box
*
* @param boxTitle
* The message box title
* @param errorMsg
* The error message to display
* @param exception
* the exception or null if the error does not originate from an
* exception
* @since 2.2
*/
public static void displayErrorMsg(final String boxTitle, final String errorMsg, Throwable exception) {
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
final Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
Activator.getDefault().logError(errorMsg, exception);
MessageDialog.openError(shell, boxTitle, errorMsg);
}
});
}
/**
* Get the opened (accessible) projects with Tmf nature
*
* @return the Tmf projects
*/
public static List<IProject> getOpenedTmfProjects() {
IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
List<IProject> tmfProjects = new ArrayList<>();
for (IProject project : projects) {
try {
if (project.isAccessible() && project.getNature(TmfProjectNature.ID) != null) {
tmfProjects.add(project);
}
} catch (CoreException e) {
Activator.getDefault().logError("Error getting opened tmf projects", e); //$NON-NLS-1$
}
}
return tmfProjects;
}
/**
* Create a folder, ensuring all parent folders are also created.
*
* @param folder
* the folder to create
* @param monitor
* the progress monitor
* @throws CoreException
* if the folder cannot be created
*/
public static void createFolder(IFolder folder, IProgressMonitor monitor) throws CoreException {
if (!folder.exists()) {
if (folder.getParent() instanceof IFolder) {
createFolder((IFolder) folder.getParent(), monitor);
}
folder.create(true, true, monitor);
}
}
}