Search in sources :

Example 1 with IEditorMatchingStrategy

use of org.eclipse.ui.IEditorMatchingStrategy in project InformationSystem by ObeoNetwork.

the class BindingTreeEditor method performSaveAs.

/**
 * Perform the saveAs action.
 *
 * @param progressMonitor
 *            The progress monitor
 */
private void performSaveAs(final IProgressMonitor progressMonitor) {
    final Shell shell = getSite().getShell();
    final IEditorInput input = getEditorInput();
    final SaveAsDialog dialog = new SaveAsDialog(shell);
    final IFile original = input instanceof IFileEditorInput ? ((IFileEditorInput) input).getFile() : null;
    if (original != null) {
        dialog.setOriginalFile(original);
    }
    dialog.create();
    if (dialog.open() == Window.CANCEL) {
        if (progressMonitor != null) {
            progressMonitor.setCanceled(true);
        }
    } else {
        final IPath filePath = dialog.getResult();
        if (filePath == null) {
            if (progressMonitor != null) {
                progressMonitor.setCanceled(true);
            }
            return;
        }
        final IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot();
        final IFile file = workspaceRoot.getFile(filePath);
        final IEditorInput newInput = new FileEditorInput(file);
        // Check if the editor is already open
        final IEditorMatchingStrategy matchingStrategy = getEditorDescriptor().getEditorMatchingStrategy();
        final IEditorReference[] editorRefs = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getEditorReferences();
        for (int i = 0; i < editorRefs.length; i++) {
            if (matchingStrategy.matches(editorRefs[i], newInput)) {
                return;
            }
        }
        final boolean success = false;
        if (progressMonitor != null) {
            progressMonitor.setCanceled(!success);
        }
    }
}
Also used : IFile(org.eclipse.core.resources.IFile) IPath(org.eclipse.core.runtime.IPath) SaveAsDialog(org.eclipse.ui.dialogs.SaveAsDialog) Shell(org.eclipse.swt.widgets.Shell) IEditorReference(org.eclipse.ui.IEditorReference) IWorkspaceRoot(org.eclipse.core.resources.IWorkspaceRoot) IEditorMatchingStrategy(org.eclipse.ui.IEditorMatchingStrategy) IFileEditorInput(org.eclipse.ui.IFileEditorInput) IFileEditorInput(org.eclipse.ui.IFileEditorInput) FileEditorInput(org.eclipse.ui.part.FileEditorInput) IEditorInput(org.eclipse.ui.IEditorInput)

Aggregations

IFile (org.eclipse.core.resources.IFile)1 IWorkspaceRoot (org.eclipse.core.resources.IWorkspaceRoot)1 IPath (org.eclipse.core.runtime.IPath)1 Shell (org.eclipse.swt.widgets.Shell)1 IEditorInput (org.eclipse.ui.IEditorInput)1 IEditorMatchingStrategy (org.eclipse.ui.IEditorMatchingStrategy)1 IEditorReference (org.eclipse.ui.IEditorReference)1 IFileEditorInput (org.eclipse.ui.IFileEditorInput)1 SaveAsDialog (org.eclipse.ui.dialogs.SaveAsDialog)1 FileEditorInput (org.eclipse.ui.part.FileEditorInput)1