ss: Move plugins to Trace Compass namespace
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.ui / src / org / eclipse / linuxtools / tmf / ui / project / wizards / RenameTraceDialog.java
index f1672270370c58167cfe37535994d0446f9eb10c..ed2623ab9760cfac600653222f80b7b6325fed27 100644 (file)
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2011, 2013 Ericsson
+ * Copyright (c) 2011, 2014 Ericsson
  *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
@@ -8,33 +8,19 @@
  *
  * Contributors:
  *   Francois Chouinard - Copied and adapted from NewFolderDialog
+ *   Patrick Tasse - Close editors to release resources
  *******************************************************************************/
 
 package org.eclipse.linuxtools.tmf.ui.project.wizards;
 
-import java.lang.reflect.InvocationTargetException;
-
 import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IFolder;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.resources.IWorkspace;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.core.runtime.Path;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.linuxtools.internal.tmf.ui.Activator;
-import org.eclipse.linuxtools.tmf.ui.project.model.ITmfProjectModelElement;
-import org.eclipse.linuxtools.tmf.ui.project.model.TmfExperimentElement;
-import org.eclipse.linuxtools.tmf.ui.project.model.TmfExperimentFolder;
-import org.eclipse.linuxtools.tmf.ui.project.model.TmfProjectElement;
 import org.eclipse.linuxtools.tmf.ui.project.model.TmfTraceElement;
-import org.eclipse.linuxtools.tmf.ui.project.model.TmfTraceFolder;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.graphics.Font;
 import org.eclipse.swt.layout.GridData;
@@ -46,14 +32,7 @@ import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Listener;
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.IEditorReference;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.actions.WorkspaceModifyOperation;
 import org.eclipse.ui.dialogs.SelectionStatusDialog;
-import org.eclipse.ui.part.FileEditorInput;
 
 /**
  * Implementation of a dialog box to rename a trace.
@@ -69,9 +48,6 @@ public class RenameTraceDialog extends SelectionStatusDialog {
 
     private final TmfTraceElement fTrace;
     private Text fNewTraceNameText;
-    private String fNewTraceName;
-    private final IContainer fTraceFolder;
-    private final TmfProjectElement fProject;
 
     // ------------------------------------------------------------------------
     // Constructor
@@ -84,9 +60,6 @@ public class RenameTraceDialog extends SelectionStatusDialog {
     public RenameTraceDialog(Shell shell, TmfTraceElement trace) {
         super(shell);
         fTrace = trace;
-        TmfTraceFolder folder = (TmfTraceFolder) trace.getParent();
-        fTraceFolder = folder.getResource();
-        fProject = trace.getProject();
         setTitle(Messages.RenameTraceDialog_DialogTitle);
         setStatusLineAboveButtons(true);
     }
@@ -146,21 +119,13 @@ public class RenameTraceDialog extends SelectionStatusDialog {
         });
     }
 
-    /**
-     * Returns the new trace name
-     * @return the new trace name
-     */
-    public String getNewTraceName() {
-        return fNewTraceName;
-    }
-
     private void validateNewTraceName() {
 
-        fNewTraceName = fNewTraceNameText.getText();
-        IWorkspace workspace = fTraceFolder.getWorkspace();
-        IStatus nameStatus = workspace.validateName(fNewTraceName, IResource.FOLDER);
+        String newTraceName = fNewTraceNameText.getText();
+        IWorkspace workspace = fTrace.getResource().getWorkspace();
+        IStatus nameStatus = workspace.validateName(newTraceName, IResource.FOLDER);
 
-        if ("".equals(fNewTraceName)) { //$NON-NLS-1$
+        if ("".equals(newTraceName)) { //$NON-NLS-1$
             updateStatus(new Status(IStatus.ERROR, Activator.PLUGIN_ID, IStatus.ERROR,
                     Messages.Dialog_EmptyNameError, null));
             return;
@@ -171,8 +136,8 @@ public class RenameTraceDialog extends SelectionStatusDialog {
             return;
         }
 
-        IPath path = new Path(fNewTraceName);
-        if (fTraceFolder.getFolder(path).exists() || fTraceFolder.getFile(path).exists()) {
+        IContainer parentFolder = fTrace.getResource().getParent();
+        if (parentFolder.findMember(newTraceName) != null) {
             updateStatus(new Status(IStatus.ERROR, Activator.PLUGIN_ID, IStatus.ERROR,
                     Messages.Dialog_ExistingNameError, null));
             return;
@@ -197,99 +162,8 @@ public class RenameTraceDialog extends SelectionStatusDialog {
 
     @Override
     protected void okPressed() {
-        IResource trace = renameTrace(fNewTraceNameText.getText());
-        if (trace == null) {
-            return;
-        }
-        setSelectionResult(new IResource[] { trace });
+        setSelectionResult(new String[] { fNewTraceNameText.getText() });
         super.okPressed();
-
-        if (fProject != null) {
-            fProject.refresh();
-        }
-    }
-
-    private IResource renameTrace(final String newName) {
-
-        final IPath oldPath = fTrace.getResource().getFullPath();
-        final IPath newPath = oldPath.append("../" + newName); //$NON-NLS-1$
-
-        WorkspaceModifyOperation operation = new WorkspaceModifyOperation() {
-            @Override
-            public void execute(IProgressMonitor monitor) throws CoreException {
-                try {
-                    monitor.beginTask("", 1000); //$NON-NLS-1$
-                    if (monitor.isCanceled()) {
-                        throw new OperationCanceledException();
-                    }
-                    // Close the trace if open
-                    IFile file = fTrace.getBookmarksFile();
-                    FileEditorInput input = new FileEditorInput(file);
-                    IWorkbench wb = PlatformUI.getWorkbench();
-                    for (IWorkbenchWindow wbWindow : wb.getWorkbenchWindows()) {
-                        for (IWorkbenchPage wbPage : wbWindow.getPages()) {
-                            for (IEditorReference editorReference : wbPage.getEditorReferences()) {
-                                if (editorReference.getEditorInput().equals(input)) {
-                                    wbPage.closeEditor(editorReference.getEditor(false), false);
-                                }
-                            }
-                        }
-                    }
-                    TmfExperimentFolder experimentFolder = fTrace.getProject().getExperimentsFolder();
-                    for (final ITmfProjectModelElement experiment : experimentFolder.getChildren()) {
-                        for (final ITmfProjectModelElement trace : experiment.getChildren()) {
-                            if (trace.equals(fTrace)) {
-                                // Close the experiment if open
-                                file = ((TmfExperimentElement) experiment).getBookmarksFile();
-                                input = new FileEditorInput(file);
-                                for (IWorkbenchWindow wbWindow : wb.getWorkbenchWindows()) {
-                                    for (IWorkbenchPage wbPage : wbWindow.getPages()) {
-                                        for (IEditorReference editorReference : wbPage.getEditorReferences()) {
-                                            if (editorReference.getEditorInput().equals(input)) {
-                                                wbPage.closeEditor(editorReference.getEditor(false), false);
-                                            }
-                                        }
-                                    }
-                                }
-                            }
-                        }
-                    }
-
-                    if (fTrace.getResource() instanceof IFolder) {
-                        IFolder folder = (IFolder) fTrace.getResource();
-                        IFile bookmarksFile = fTrace.getBookmarksFile();
-                        IFile newBookmarksFile = folder.getFile(bookmarksFile.getName().replace(fTrace.getName(), newName));
-                        if (bookmarksFile.exists()) {
-                            if (!newBookmarksFile.exists()) {
-                                IPath newBookmarksPath = newBookmarksFile.getFullPath();
-                                bookmarksFile.move(newBookmarksPath, IResource.FORCE | IResource.SHALLOW, null);
-                            }
-                        }
-                    }
-
-                    fTrace.renameSupplementaryFolder(newName);
-                    fTrace.getResource().move(newPath, IResource.FORCE | IResource.SHALLOW, null);
-                    if (monitor.isCanceled()) {
-                        throw new OperationCanceledException();
-                    }
-                } finally {
-                    monitor.done();
-                }
-            }
-        };
-
-        try {
-            PlatformUI.getWorkbench().getProgressService().busyCursorWhile(operation);
-        } catch (InterruptedException exception) {
-            return null;
-        } catch (InvocationTargetException exception) {
-            MessageDialog.openError(getShell(), "", exception.getTargetException().getMessage()); //$NON-NLS-1$
-            return null;
-        } catch (RuntimeException exception) {
-            return null;
-        }
-
-        return fTrace.getResource();
     }
 
 }
This page took 0.031654 seconds and 5 git commands to generate.