Search in sources :

Example 16 with ITreeLeaf

use of org.eclipse.titan.executor.executors.ITreeLeaf in project titan.EclipsePlug-ins by eclipse.

the class NotificationView method saveLaunchElementAs.

/**
 * Saves the contents of a tree starting at the provided launch config node.
 *
 * @param shell the shell to be used to display dialogs.
 * @param actualInput the launch configuration to start from.
 */
public static void saveLaunchElementAs(final Shell shell, final ITreeLeaf actualInput) {
    final FileDialog dialog = new FileDialog(shell, SWT.NONE);
    dialog.setFilterExtensions(new String[] { "log" });
    final String filePath = dialog.open();
    if (null == filePath) {
        return;
    }
    final File file = new File(filePath);
    if (file.exists()) {
        if (!file.canWrite()) {
            ErrorDialog.openError(shell, "Read-only file", "The file is read-only, please choose another file", Status.OK_STATUS);
            return;
        }
    } else {
        try {
            file.createNewFile();
        } catch (IOException e) {
            ErrorDialog.openError(shell, "Can not create file", "The file could not be created and will not be saved", Status.OK_STATUS);
            return;
        }
    }
    if (null == actualInput || !(actualInput instanceof LaunchElement)) {
        // nothing or wrong kind of element selected
        return;
    }
    PrintWriter out = null;
    try {
        out = new PrintWriter(new FileWriter(file));
        final List<ITreeLeaf> children = ((LaunchElement) actualInput).children();
        for (ITreeLeaf aChildren : children) {
            final BaseExecutor executor = ((MainControllerElement) aChildren).executor();
            if (null != executor) {
                List<Notification> tempList = executor.notifications();
                for (Notification aTempList : tempList) {
                    out.println(aTempList.toString());
                }
            }
        }
    } catch (IOException e) {
        ErrorDialog.openError(shell, "Can not write the file", "An error occured while writing to the file\n" + filePath, Status.OK_STATUS);
        return;
    } finally {
        IOUtils.closeQuietly(out);
    }
    final IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
    final IFile[] outputFiles = root.findFilesForLocationURI(URIUtil.toURI(filePath));
    ResourceUtils.refreshResources(Arrays.asList(outputFiles));
}
Also used : IFile(org.eclipse.core.resources.IFile) FileWriter(java.io.FileWriter) IOException(java.io.IOException) IWorkspaceRoot(org.eclipse.core.resources.IWorkspaceRoot) BaseExecutor(org.eclipse.titan.executor.executors.BaseExecutor) ITreeLeaf(org.eclipse.titan.executor.executors.ITreeLeaf) FileDialog(org.eclipse.swt.widgets.FileDialog) IFile(org.eclipse.core.resources.IFile) File(java.io.File) LaunchElement(org.eclipse.titan.executor.views.executormonitor.LaunchElement) PrintWriter(java.io.PrintWriter) MainControllerElement(org.eclipse.titan.executor.views.executormonitor.MainControllerElement)

Aggregations

ITreeLeaf (org.eclipse.titan.executor.executors.ITreeLeaf)16 BaseExecutor (org.eclipse.titan.executor.executors.BaseExecutor)9 IStructuredSelection (org.eclipse.jface.viewers.IStructuredSelection)8 LaunchElement (org.eclipse.titan.executor.views.executormonitor.LaunchElement)7 List (java.util.List)4 ILaunch (org.eclipse.debug.core.ILaunch)4 MainControllerElement (org.eclipse.titan.executor.views.executormonitor.MainControllerElement)4 ArrayList (java.util.ArrayList)3 ILaunchConfiguration (org.eclipse.debug.core.ILaunchConfiguration)2 Action (org.eclipse.jface.action.Action)2 ISelection (org.eclipse.jface.viewers.ISelection)2 File (java.io.File)1 FileWriter (java.io.FileWriter)1 IOException (java.io.IOException)1 PrintWriter (java.io.PrintWriter)1 Iterator (java.util.Iterator)1 IFile (org.eclipse.core.resources.IFile)1 IWorkspaceRoot (org.eclipse.core.resources.IWorkspaceRoot)1 IProcess (org.eclipse.debug.core.model.IProcess)1 MenuManager (org.eclipse.jface.action.MenuManager)1