Example usage for org.eclipse.jface.dialogs Dialog open

List of usage examples for org.eclipse.jface.dialogs Dialog open

Introduction

In this page you can find the example usage for org.eclipse.jface.dialogs Dialog open.

Prototype

public int open() 

Source Link

Document

Opens this window, creating it first if it has not yet been created.

Usage

From source file:org.eclipse.rcptt.ui.navigator.Q7ResourceDropAdapterAssistant.java

License:Open Source License

/**
 * Performs a resource move//  www . ja  va 2s.  c  o  m
 */
private IStatus performResourceMove(CommonDropAdapter dropAdapter, IResource[] sources) {
    MultiStatus problems = new MultiStatus(PlatformUI.PLUGIN_ID, 1,
            WorkbenchNavigatorMessages.DropAdapter_problemsMoving, null);
    mergeStatus(problems, validateTarget(dropAdapter.getCurrentTarget(), dropAdapter.getCurrentTransfer(),
            dropAdapter.getCurrentOperation()));

    IContainer target = getActualTarget((IResource) dropAdapter.getCurrentTarget());

    WriteAccessChecker writeAccessChecker = new WriteAccessChecker();
    List<IResource> toCheck = getParents(sources);
    toCheck.add(target);
    try {
        if (!writeAccessChecker.makeResourceWritable(toCheck.toArray(new IResource[0]))) {
            return Status.CANCEL_STATUS;
        }
    } catch (CoreException e) {
        return WorkbenchNavigatorPlugin.createErrorStatus(0, e.getLocalizedMessage(), e);
    }

    boolean shouldLinkAutomatically = false;
    if (target.isVirtual()) {
        shouldLinkAutomatically = true;
        for (int i = 0; i < sources.length; i++) {
            if (sources[i].isVirtual() || sources[i].isLinked()) {
                shouldLinkAutomatically = false;
                break;
            }
        }
    }

    if (shouldLinkAutomatically) {
        CopyFilesAndFoldersOperation operation = new CopyFilesAndFoldersOperation(getShell());
        operation.setCreateLinks(true);
        operation.copyResources(sources, target);
    } else {
        try {
            if (!writeAccessChecker.makeResourceWritable(sources)) {
                return Status.CANCEL_STATUS;
            }
            RefactoringContribution contribution = RefactoringCore
                    .getRefactoringContribution(MoveResourcesDescriptor.ID);
            MoveResourcesDescriptor descriptor = (MoveResourcesDescriptor) contribution.createDescriptor();
            descriptor.setResourcesToMove(sources);
            descriptor.setDestination(target);
            refactoringStatus = new RefactoringStatus();
            final Refactoring refactoring = descriptor.createRefactoring(refactoringStatus);

            returnStatus = null;
            IRunnableWithProgress checkOp = new IRunnableWithProgress() {
                public void run(IProgressMonitor monitor) {
                    try {
                        refactoringStatus = refactoring.checkAllConditions(monitor);
                    } catch (CoreException ex) {
                        returnStatus = WorkbenchNavigatorPlugin.createErrorStatus(0, ex.getLocalizedMessage(),
                                ex);
                    }
                }
            };

            if (returnStatus != null)
                return returnStatus;

            try {
                PlatformUI.getWorkbench().getProgressService().run(false, false, checkOp);
            } catch (InterruptedException e) {
                return Status.CANCEL_STATUS;
            } catch (InvocationTargetException e) {
                return WorkbenchNavigatorPlugin.createErrorStatus(0, e.getLocalizedMessage(), e);
            }

            if (refactoringStatus.hasEntries()) {
                Dialog dialog = RefactoringUI.createLightWeightStatusDialog(refactoringStatus, getShell(),
                        WorkbenchNavigatorMessages.MoveResourceAction_title);
                int result = dialog.open();
                if (result != IStatus.OK)
                    return Status.CANCEL_STATUS;
            }
            if (LaunchUtils.hasLaunchedTestCases()) {
                MessageDialog.openWarning(WorkbenchUtils.getShell(),
                        Messages.Q7ResourceDropAdapterAssistant_ErrorDialogTitle,
                        Messages.Q7ResourceDropAdapterAssistant_ErrorDialogMsg);
                return Status.CANCEL_STATUS;
            }
            if (!RefactoringSaveHelper.checkDirtyEditors(WorkbenchUtils.getShell())) {
                return Status.CANCEL_STATUS;
            }
            final PerformRefactoringOperation op = new PerformRefactoringOperation(refactoring,
                    CheckConditionsOperation.ALL_CONDITIONS);

            final IWorkspaceRunnable r = new IWorkspaceRunnable() {
                public void run(IProgressMonitor monitor) throws CoreException {
                    op.run(monitor);
                }
            };

            returnStatus = null;
            IRunnableWithProgress refactorOp = new IRunnableWithProgress() {
                public void run(IProgressMonitor monitor) {
                    try {
                        ResourcesPlugin.getWorkspace().run(r, ResourcesPlugin.getWorkspace().getRoot(),
                                IWorkspace.AVOID_UPDATE, monitor);
                    } catch (CoreException ex) {
                        returnStatus = WorkbenchNavigatorPlugin.createErrorStatus(0, ex.getLocalizedMessage(),
                                ex);
                    }
                }
            };

            if (returnStatus != null)
                return returnStatus;

            try {
                PlatformUI.getWorkbench().getProgressService().run(false, false, refactorOp);
            } catch (InterruptedException e) {
                return Status.CANCEL_STATUS;
            } catch (InvocationTargetException e) {
                return WorkbenchNavigatorPlugin.createErrorStatus(0, e.getLocalizedMessage(), e);
            }

        } catch (CoreException ex) {
            return WorkbenchNavigatorPlugin.createErrorStatus(0, ex.getLocalizedMessage(), ex);
        } catch (OperationCanceledException e) {
        }
    }

    return problems;
}

From source file:org.eclipse.sapphire.ui.forms.swt.internal.HyperlinkTable.java

License:Open Source License

private void handleJumpCommand() {
    final TableItem[] items = HyperlinkTable.this.table.getSelection();

    if (items.length == 1) {
        final TableItem item = items[0];
        final List<Integer> columnsWithHyperlinks = new ArrayList<Integer>();

        for (int i = 0, n = getColumnCount(HyperlinkTable.this.table); i < n; i++) {
            if (this.controller.isHyperlinkEnabled(item, i)) {
                columnsWithHyperlinks.add(i);
            }//from  w w w.j a v  a  2s.c o m
        }

        if (columnsWithHyperlinks.size() == 1) {
            handleJumpCommand(item, columnsWithHyperlinks.get(0));
        } else if (!columnsWithHyperlinks.isEmpty()) {
            final Dialog dialog = new Dialog(this.table.getShell()) {
                private int choice = columnsWithHyperlinks.get(0);

                @Override
                protected Control createDialogArea(final Composite parent) {
                    getShell().setText(jumpDialogTitle.text());

                    final Composite composite = (Composite) super.createDialogArea(parent);

                    final Label prompt = new Label(composite, SWT.WRAP);
                    prompt.setLayoutData(gdwhint(gdhfill(), 300));
                    prompt.setText(jumpDialogPrompt.text());

                    final SelectionListener listener = new SelectionAdapter() {
                        public void widgetSelected(final SelectionEvent event) {
                            setChoice((Integer) event.widget.getData());
                        }
                    };

                    boolean first = true;

                    for (Integer col : columnsWithHyperlinks) {
                        final Button button = new Button(composite, SWT.RADIO | SWT.WRAP);
                        button.setLayoutData(gdhindent(gd(), 10));
                        button.setText(item.getText(col));
                        button.setData(col);

                        if (first) {
                            button.setSelection(true);
                            first = false;
                        }

                        button.addSelectionListener(listener);
                    }

                    return composite;
                }

                @Override
                protected void okPressed() {
                    super.okPressed();
                    handleJumpCommand(item, this.choice);
                }

                private void setChoice(final int choice) {
                    this.choice = choice;
                }
            };

            dialog.open();
        }
    }
}

From source file:org.eclipse.sapphire.ui.swt.renderer.HyperlinkTable.java

License:Open Source License

private void handleJumpCommand() {
    final TableItem[] items = HyperlinkTable.this.table.getSelection();

    if (items.length == 1) {
        final TableItem item = items[0];
        final List<Integer> columnsWithHyperlinks = new ArrayList<Integer>();

        for (int i = 0, n = getColumnCount(HyperlinkTable.this.table); i < n; i++) {
            if (this.controller.isHyperlinkEnabled(item, i)) {
                columnsWithHyperlinks.add(i);
            }/*from  w w  w .  ja va2s  . c om*/
        }

        if (columnsWithHyperlinks.size() == 1) {
            handleJumpCommand(item, columnsWithHyperlinks.get(0));
        } else if (!columnsWithHyperlinks.isEmpty()) {
            final Dialog dialog = new Dialog(this.table.getShell()) {
                private int choice = columnsWithHyperlinks.get(0);

                @Override
                protected Control createDialogArea(final Composite parent) {
                    getShell().setText(Resources.jumpDialogTitle);

                    final Composite composite = (Composite) super.createDialogArea(parent);

                    final Label prompt = new Label(composite, SWT.WRAP);
                    prompt.setLayoutData(gdwhint(gdhfill(), 300));
                    prompt.setText(Resources.jumpDialogPrompt);

                    final SelectionListener listener = new SelectionAdapter() {
                        public void widgetSelected(final SelectionEvent event) {
                            setChoice((Integer) event.widget.getData());
                        }
                    };

                    boolean first = true;

                    for (Integer col : columnsWithHyperlinks) {
                        final Button button = new Button(composite, SWT.RADIO | SWT.WRAP);
                        button.setLayoutData(gdhindent(gd(), 10));
                        button.setText(item.getText(col));
                        button.setData(col);

                        if (first) {
                            button.setSelection(true);
                            first = false;
                        }

                        button.addSelectionListener(listener);
                    }

                    return composite;
                }

                @Override
                protected void okPressed() {
                    super.okPressed();
                    handleJumpCommand(item, this.choice);
                }

                private void setChoice(final int choice) {
                    this.choice = choice;
                }
            };

            dialog.open();
        }
    }
}

From source file:org.eclipse.servicesregistry.search.ui.test.classifications.pageobjects.ClassificationsTreePageObject.java

License:Open Source License

private void createUi(final ClassificationTreeContribution contribution,
        final IDiscoveryEnvironment environment) {
    asyncExec(new VoidResult() {
        @Override/* w  ww  . j  a v a 2 s  . c  om*/
        public void run() {
            final Dialog dlg = new Dialog(PlatformUI.getWorkbench().getDisplay().getActiveShell()) {
                @Override
                protected Control createContents(Composite parent) {
                    parent.setLayout(new FillLayout(SWT.VERTICAL));
                    final Composite hostComposite = new Composite(parent, SWT.NONE);
                    hostComposite.setLayout(new FormLayout());
                    contribution.createUi(hostComposite, Mockito.mock(IServicesRegistryDestination.class),
                            toolkit, environment, null);
                    contribution.handleVisibilityChange(true);
                    return parent;
                }
            };

            dlg.setBlockOnOpen(false);
            dlg.open();
            shell = new SWTBotShell(dlg.getShell());
        }
    });

    Assertions.waitAssert(new IWaitCondition() {

        @Override
        public boolean checkCondition() throws ConditionCheckException {
            return shell != null;
        }
    }, "Test shell could not be created");
}

From source file:org.eclipse.thym.win.internal.ui.statushandler.WinBuildStatusHandler.java

License:Open Source License

@Override
public void handle(IStatus status) {
    Dialog dialog = new MSBuildMissingDialog(getShell());
    dialog.open();
}

From source file:org.eclipse.thym.win.internal.ui.statushandler.WinDeviceStatusHandler.java

License:Open Source License

@Override
public void handle(IStatus status) {
    Dialog dialog = new MissingDeviceDialog(getShell());
    dialog.open();
}

From source file:org.eclipse.thym.win.internal.ui.statushandler.WinEmulatorStatusHandler.java

License:Open Source License

@Override
public void handle(IStatus status) {
    Dialog dialog = new MissingEmulatorsDialog(getShell());
    dialog.open();
}

From source file:org.eclipse.thym.win.internal.ui.statushandler.WinSimulatorStatusHandler.java

License:Open Source License

@Override
public void handle(IStatus status) {
    Dialog dialog = new MissingSimulatorDialog(getShell());
    dialog.open();
}

From source file:org.eclipse.ui.internal.editors.text.TextEditorDefaultsPreferencePage.java

License:Open Source License

private Control createAppearancePage(Composite parent) {

    Composite appearanceComposite = new Composite(parent, SWT.NONE);
    GridLayout layout = new GridLayout();
    layout.numColumns = 2;//from www  . j a v  a  2  s.  c o m
    layout.marginHeight = 0;
    layout.marginWidth = 0;

    appearanceComposite.setLayout(layout);

    Link fontLink = new Link(appearanceComposite, SWT.NONE);
    fontLink.setText(TextEditorMessages.TextEditorPreferencePage_Font_link);
    fontLink.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            PreferencesUtil.createPreferenceDialogOn(getShell(),
                    "org.eclipse.ui.preferencePages.ColorsAndFonts", null, //$NON-NLS-1$
                    "selectFont:" + JFaceResources.TEXT_FONT); //$NON-NLS-1$
        }
    });
    GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
    gd.horizontalSpan = 2;
    fontLink.setLayoutData(gd);

    addFiller(appearanceComposite, 2);

    String label = TextEditorMessages.TextEditorPreferencePage_undoHistorySize;
    Preference undoHistorySize = new Preference(
            AbstractDecoratedTextEditorPreferenceConstants.EDITOR_UNDO_HISTORY_SIZE, label, null);
    IntegerDomain undoHistorySizeDomain = new IntegerDomain(0, 99999);
    addTextField(appearanceComposite, undoHistorySize, undoHistorySizeDomain, 15, 0);

    label = TextEditorMessages.TextEditorPreferencePage_displayedTabWidth;
    Preference tabWidth = new Preference(AbstractDecoratedTextEditorPreferenceConstants.EDITOR_TAB_WIDTH, label,
            null);
    IntegerDomain tabWidthDomain = new IntegerDomain(1, 16);
    addTextField(appearanceComposite, tabWidth, tabWidthDomain, 15, 0);

    label = TextEditorMessages.TextEditorPreferencePage_convertTabsToSpaces;
    Preference spacesForTabs = new Preference(
            AbstractDecoratedTextEditorPreferenceConstants.EDITOR_SPACES_FOR_TABS, label, null);
    addCheckBox(appearanceComposite, spacesForTabs, new BooleanDomain(), 0);

    label = TextEditorMessages.TextEditorPreferencePage_highlightCurrentLine;
    Preference highlightCurrentLine = new Preference(
            AbstractDecoratedTextEditorPreferenceConstants.EDITOR_CURRENT_LINE, label, null);
    addCheckBox(appearanceComposite, highlightCurrentLine, new BooleanDomain(), 0);

    label = TextEditorMessages.TextEditorPreferencePage_showPrintMargin;
    Preference showPrintMargin = new Preference(
            AbstractDecoratedTextEditorPreferenceConstants.EDITOR_PRINT_MARGIN, label, null);
    final Button showPrintMarginButton = addCheckBox(appearanceComposite, showPrintMargin, new BooleanDomain(),
            0);

    label = TextEditorMessages.TextEditorPreferencePage_printMarginColumn;
    Preference printMarginColumn = new Preference(
            AbstractDecoratedTextEditorPreferenceConstants.EDITOR_PRINT_MARGIN_COLUMN, label, null);
    final IntegerDomain printMarginDomain = new IntegerDomain(20, 200);
    final Control[] printMarginControls = addTextField(appearanceComposite, printMarginColumn,
            printMarginDomain, 15, 20);
    createDependency(showPrintMarginButton, showPrintMargin, printMarginControls);

    showPrintMarginButton.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            updateStatus(printMarginDomain);
        }
    });

    label = TextEditorMessages.TextEditorPreferencePage_showLineNumbers;
    Preference showLineNumbers = new Preference(
            AbstractDecoratedTextEditorPreferenceConstants.EDITOR_LINE_NUMBER_RULER, label, null);
    addCheckBox(appearanceComposite, showLineNumbers, new BooleanDomain(), 0);

    label = TextEditorMessages.TextEditorDefaultsPreferencePage_range_indicator;
    Preference showMagnet = new Preference(AbstractDecoratedTextEditorPreferenceConstants.SHOW_RANGE_INDICATOR,
            label, null);
    addCheckBox(appearanceComposite, showMagnet, new BooleanDomain(), 0);

    label = TextEditorMessages.TextEditorDefaultsPreferencePage_showWhitespaceCharacters;
    String linkText = TextEditorMessages.TextEditorDefaultsPreferencePage_showWhitespaceCharactersLinkText;
    Preference showWhitespaceCharacters = new Preference(
            AbstractDecoratedTextEditorPreferenceConstants.EDITOR_SHOW_WHITESPACE_CHARACTERS, label, null);
    addCheckBoxWithLink(appearanceComposite, showWhitespaceCharacters, linkText, new BooleanDomain(), 0,
            new SelectionAdapter() {
                public void widgetSelected(SelectionEvent e) {
                    Dialog dialog = new WhitespaceCharacterPainterOptionsDialog(
                            Display.getDefault().getActiveShell(), fOverlayStore);
                    dialog.open();
                }
            });

    label = TextEditorMessages.TextEditorPreferencePage_showAffordance;
    Preference showAffordance = new Preference(
            AbstractDecoratedTextEditorPreferenceConstants.EDITOR_SHOW_TEXT_HOVER_AFFORDANCE, label, null);
    addCheckBox(appearanceComposite, showAffordance, new BooleanDomain(), 0);

    label = TextEditorMessages.TextEditorDefaultsPreferencePage_enrichHoverMode;
    Preference hoverReplace = new Preference(
            AbstractDecoratedTextEditorPreferenceConstants.EDITOR_HOVER_ENRICH_MODE, label, null);
    EnumeratedDomain hoverReplaceDomain = new EnumeratedDomain();
    hoverReplaceDomain.addValue(
            new EnumValue(-1, TextEditorMessages.TextEditorDefaultsPreferencePage_enrichHover_disabled));
    hoverReplaceDomain.addValue(
            new EnumValue(1, TextEditorMessages.TextEditorDefaultsPreferencePage_enrichHover_immediately));
    hoverReplaceDomain.addValue(
            new EnumValue(0, TextEditorMessages.TextEditorDefaultsPreferencePage_enrichHover_afterDelay));
    hoverReplaceDomain.addValue(
            new EnumValue(2, TextEditorMessages.TextEditorDefaultsPreferencePage_enrichHover_onClick));
    addCombo(appearanceComposite, hoverReplace, hoverReplaceDomain, 0);

    label = TextEditorMessages.TextEditorDefaultsPreferencePage_textDragAndDrop;
    Preference textDragAndDrop = new Preference(
            AbstractDecoratedTextEditorPreferenceConstants.EDITOR_TEXT_DRAG_AND_DROP_ENABLED, label, null);
    addCheckBox(appearanceComposite, textDragAndDrop, new BooleanDomain(), 0);

    label = TextEditorMessages.TextEditorDefaultsPreferencePage_warn_if_derived;
    Preference warnIfDerived = new Preference(
            AbstractDecoratedTextEditorPreferenceConstants.EDITOR_WARN_IF_INPUT_DERIVED, label, null);
    addCheckBox(appearanceComposite, warnIfDerived, new BooleanDomain(), 0);

    label = TextEditorMessages.TextEditorDefaultsPreferencePage_smartHomeEnd;
    Preference smartHomeEnd = new Preference(
            AbstractDecoratedTextEditorPreferenceConstants.EDITOR_SMART_HOME_END, label, null);
    addCheckBox(appearanceComposite, smartHomeEnd, new BooleanDomain(), 0);

    addFiller(appearanceComposite, 2);

    Label l = new Label(appearanceComposite, SWT.LEFT);
    l.setText(TextEditorMessages.TextEditorPreferencePage_appearanceOptions);
    gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
    gd.horizontalSpan = 2;
    l.setLayoutData(gd);

    Composite editorComposite = new Composite(appearanceComposite, SWT.NONE);
    layout = new GridLayout();
    layout.numColumns = 2;
    layout.marginHeight = 0;
    layout.marginWidth = 0;
    editorComposite.setLayout(layout);
    gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.FILL_VERTICAL);
    gd.horizontalSpan = 2;
    editorComposite.setLayoutData(gd);

    fAppearanceColorList = new List(editorComposite, SWT.SINGLE | SWT.V_SCROLL | SWT.BORDER);
    gd = new GridData(GridData.VERTICAL_ALIGN_BEGINNING | GridData.FILL_BOTH);
    gd.heightHint = fAppearanceColorList.getItemHeight() * 8;
    fAppearanceColorList.setLayoutData(gd);

    Composite stylesComposite = new Composite(editorComposite, SWT.NONE);
    layout = new GridLayout();
    layout.marginHeight = 0;
    layout.marginWidth = 0;
    layout.numColumns = 2;
    stylesComposite.setLayout(layout);
    stylesComposite.setLayoutData(new GridData(GridData.FILL_BOTH));

    l = new Label(stylesComposite, SWT.LEFT);
    l.setText(TextEditorMessages.TextEditorPreferencePage_color);
    gd = new GridData();
    gd.horizontalAlignment = GridData.BEGINNING;
    l.setLayoutData(gd);

    fAppearanceColorEditor = new ColorSelector(stylesComposite);
    Button foregroundColorButton = fAppearanceColorEditor.getButton();
    gd = new GridData(GridData.FILL_HORIZONTAL);
    gd.horizontalAlignment = GridData.BEGINNING;
    foregroundColorButton.setLayoutData(gd);

    SelectionListener colorDefaultSelectionListener = new SelectionListener() {
        public void widgetSelected(SelectionEvent e) {
            boolean systemDefault = fAppearanceColorDefault.getSelection();
            fAppearanceColorEditor.getButton().setEnabled(!systemDefault);

            int i = fAppearanceColorList.getSelectionIndex();
            if (i == -1)
                return;

            String key = fAppearanceColorListModel[i][2];
            if (key != null)
                fOverlayStore.setValue(key, systemDefault);
        }

        public void widgetDefaultSelected(SelectionEvent e) {
        }
    };

    fAppearanceColorDefault = new Button(stylesComposite, SWT.CHECK);
    fAppearanceColorDefault.setText(TextEditorMessages.TextEditorPreferencePage_systemDefault);
    gd = new GridData(GridData.FILL_HORIZONTAL);
    gd.horizontalAlignment = GridData.BEGINNING;
    gd.horizontalSpan = 2;
    fAppearanceColorDefault.setLayoutData(gd);
    fAppearanceColorDefault.setVisible(false);
    fAppearanceColorDefault.addSelectionListener(colorDefaultSelectionListener);

    fAppearanceColorList.addSelectionListener(new SelectionListener() {
        public void widgetDefaultSelected(SelectionEvent e) {
            // do nothing
        }

        public void widgetSelected(SelectionEvent e) {
            handleAppearanceColorListSelection();
        }
    });
    foregroundColorButton.addSelectionListener(new SelectionListener() {
        public void widgetDefaultSelected(SelectionEvent e) {
            // do nothing
        }

        public void widgetSelected(SelectionEvent e) {
            int i = fAppearanceColorList.getSelectionIndex();
            if (i == -1)
                return;

            String key = fAppearanceColorListModel[i][1];
            PreferenceConverter.setValue(fOverlayStore, key, fAppearanceColorEditor.getColorValue());
        }
    });

    Link link = new Link(appearanceComposite, SWT.NONE);
    link.setText(TextEditorMessages.TextEditorPreferencePage_colorsAndFonts_link);
    link.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            PreferencesUtil.createPreferenceDialogOn(getShell(),
                    "org.eclipse.ui.preferencePages.ColorsAndFonts", null, //$NON-NLS-1$
                    "selectCategory:org.eclipse.ui.workbenchMisc"); //$NON-NLS-1$
        }
    });

    GridData gridData = new GridData(SWT.FILL, SWT.BEGINNING, true, false);
    gridData.widthHint = 150; // only expand further if anyone else requires it
    gridData.horizontalSpan = 2;
    link.setLayoutData(gridData);

    addFiller(appearanceComposite, 2);

    appearanceComposite.layout();

    return appearanceComposite;
}

From source file:org.eclipse.ui.navigator.resources.ResourceDropAdapterAssistant.java

License:Open Source License

/**
 * Performs a resource move//from w  w  w.j a  v  a 2  s . c om
 */
private IStatus performResourceMove(CommonDropAdapter dropAdapter, IResource[] sources) {
    MultiStatus problems = new MultiStatus(PlatformUI.PLUGIN_ID, 1,
            WorkbenchNavigatorMessages.DropAdapter_problemsMoving, null);
    mergeStatus(problems, validateTarget(dropAdapter.getCurrentTarget(), dropAdapter.getCurrentTransfer(),
            dropAdapter.getCurrentOperation()));

    IContainer target = getActualTarget((IResource) dropAdapter.getCurrentTarget());

    boolean shouldLinkAutomatically = false;
    if (target.isVirtual()) {
        shouldLinkAutomatically = true;
        for (int i = 0; i < sources.length; i++) {
            if (sources[i].isVirtual() || sources[i].isLinked()) {
                shouldLinkAutomatically = false;
                break;
            }
        }
    }

    if (shouldLinkAutomatically) {
        CopyFilesAndFoldersOperation operation = new CopyFilesAndFoldersOperation(getShell());
        operation.setCreateLinks(true);
        operation.copyResources(sources, target);
    } else {
        ReadOnlyStateChecker checker = new ReadOnlyStateChecker(getShell(),
                WorkbenchNavigatorMessages.MoveResourceAction_title,
                WorkbenchNavigatorMessages.MoveResourceAction_checkMoveMessage);
        sources = checker.checkReadOnlyResources(sources);

        try {
            RefactoringContribution contribution = RefactoringCore
                    .getRefactoringContribution(MoveResourcesDescriptor.ID);
            MoveResourcesDescriptor descriptor = (MoveResourcesDescriptor) contribution.createDescriptor();
            descriptor.setResourcesToMove(sources);
            descriptor.setDestination(target);
            refactoringStatus = new RefactoringStatus();
            final Refactoring refactoring = descriptor.createRefactoring(refactoringStatus);

            returnStatus = null;
            IRunnableWithProgress checkOp = new IRunnableWithProgress() {
                public void run(IProgressMonitor monitor) {
                    try {
                        refactoringStatus = refactoring.checkAllConditions(monitor);
                    } catch (CoreException ex) {
                        returnStatus = WorkbenchNavigatorPlugin.createErrorStatus(0, ex.getLocalizedMessage(),
                                ex);
                    }
                }
            };

            if (returnStatus != null)
                return returnStatus;

            try {
                PlatformUI.getWorkbench().getProgressService().run(false, false, checkOp);
            } catch (InterruptedException e) {
                return Status.CANCEL_STATUS;
            } catch (InvocationTargetException e) {
                return WorkbenchNavigatorPlugin.createErrorStatus(0, e.getLocalizedMessage(), e);
            }

            if (refactoringStatus.hasEntries()) {
                Dialog dialog = RefactoringUI.createLightWeightStatusDialog(refactoringStatus, getShell(),
                        WorkbenchNavigatorMessages.MoveResourceAction_title);
                int result = dialog.open();
                if (result != IStatus.OK)
                    return Status.CANCEL_STATUS;
            }

            final PerformRefactoringOperation op = new PerformRefactoringOperation(refactoring,
                    CheckConditionsOperation.ALL_CONDITIONS);

            final IWorkspaceRunnable r = new IWorkspaceRunnable() {
                public void run(IProgressMonitor monitor) throws CoreException {
                    op.run(monitor);
                }
            };

            returnStatus = null;
            IRunnableWithProgress refactorOp = new IRunnableWithProgress() {
                public void run(IProgressMonitor monitor) {
                    try {
                        ResourcesPlugin.getWorkspace().run(r, ResourcesPlugin.getWorkspace().getRoot(),
                                IWorkspace.AVOID_UPDATE, monitor);
                    } catch (CoreException ex) {
                        returnStatus = WorkbenchNavigatorPlugin.createErrorStatus(0, ex.getLocalizedMessage(),
                                ex);
                    }
                }
            };

            if (returnStatus != null)
                return returnStatus;

            try {
                PlatformUI.getWorkbench().getProgressService().run(false, false, refactorOp);
            } catch (InterruptedException e) {
                return Status.CANCEL_STATUS;
            } catch (InvocationTargetException e) {
                return WorkbenchNavigatorPlugin.createErrorStatus(0, e.getLocalizedMessage(), e);
            }

        } catch (CoreException ex) {
            return WorkbenchNavigatorPlugin.createErrorStatus(0, ex.getLocalizedMessage(), ex);
        } catch (OperationCanceledException e) {
        }
    }

    return problems;
}