Search in sources :

Example 31 with ISVNLocalResource

use of org.tigris.subversion.subclipse.core.ISVNLocalResource in project subclipse by subclipse.

the class ResolveSynchronizeAction method getSyncInfoFilter.

/* (non-Javadoc)
   * @see org.eclipse.team.ui.synchronize.SynchronizeModelAction#getSyncInfoFilter()
   */
protected FastSyncInfoFilter getSyncInfoFilter() {
    return new FastSyncInfoFilter() {

        public boolean select(SyncInfo info) {
            IStructuredSelection selection = getStructuredSelection();
            Iterator iter = selection.iterator();
            while (iter.hasNext()) {
                ISynchronizeModelElement element = (ISynchronizeModelElement) iter.next();
                if (element.getResource() instanceof IFile) {
                    ISVNLocalResource svnResource = SVNWorkspaceRoot.getSVNResourceFor(element.getResource());
                    try {
                        if (svnResource.getStatus().isTextConflicted() || svnResource.getStatus().hasTreeConflict())
                            return true;
                    } catch (SVNException e) {
                    }
                }
            }
            return false;
        }
    };
}
Also used : IFile(org.eclipse.core.resources.IFile) SyncInfo(org.eclipse.team.core.synchronize.SyncInfo) Iterator(java.util.Iterator) ISynchronizeModelElement(org.eclipse.team.ui.synchronize.ISynchronizeModelElement) IStructuredSelection(org.eclipse.jface.viewers.IStructuredSelection) SVNException(org.tigris.subversion.subclipse.core.SVNException) ISVNLocalResource(org.tigris.subversion.subclipse.core.ISVNLocalResource) FastSyncInfoFilter(org.eclipse.team.core.synchronize.FastSyncInfoFilter)

Example 32 with ISVNLocalResource

use of org.tigris.subversion.subclipse.core.ISVNLocalResource in project subclipse by subclipse.

the class ReplaceWithBranchTagWizardMainPage method getCommonRoot.

private String getCommonRoot() {
    ArrayList<String> urlList = new ArrayList<String>();
    for (IResource resource : resources) {
        ISVNLocalResource svnResource = SVNWorkspaceRoot.getSVNResourceFor(resource);
        try {
            String anUrl = svnResource.getStatus().getUrlString();
            if (anUrl != null)
                urlList.add(anUrl);
        } catch (SVNException e1) {
        }
    }
    urlStrings = new String[urlList.size()];
    urlList.toArray(urlStrings);
    if (urlStrings.length == 0)
        return null;
    String urlString = urlStrings[0];
    if (urlStrings.length == 1)
        return urlString;
    String commonRoot = null;
    tag1: for (int i = 0; i < urlString.length(); i++) {
        String partialPath = urlString.substring(0, i + 1);
        if (partialPath.endsWith("/")) {
            // $NON-NLS-1$
            for (int j = 1; j < urlStrings.length; j++) {
                if (!urlStrings[j].startsWith(partialPath))
                    break tag1;
            }
            commonRoot = partialPath.substring(0, i);
        }
    }
    return commonRoot;
}
Also used : ArrayList(java.util.ArrayList) SVNException(org.tigris.subversion.subclipse.core.SVNException) ISVNLocalResource(org.tigris.subversion.subclipse.core.ISVNLocalResource) IResource(org.eclipse.core.resources.IResource)

Example 33 with ISVNLocalResource

use of org.tigris.subversion.subclipse.core.ISVNLocalResource in project subclipse by subclipse.

the class ResolveTreeConflictWizard method getLogMessages.

private ISVNLogMessage[] getLogMessages() throws Exception {
    if (logMessages == null) {
        ISVNClientAdapter svnClient = null;
        try {
            svnClient = svnResource.getRepository().getSVNClient();
            IProject project = treeConflict.getResource().getProject();
            ISVNLocalResource svnProject = SVNWorkspaceRoot.getSVNResourceFor(project);
            SVNRevision revision1 = new SVNRevision.Number(treeConflict.getConflictDescriptor().getSrcLeftVersion().getPegRevision());
            SVNRevision revision2 = new SVNRevision.Number(treeConflict.getConflictDescriptor().getSrcRightVersion().getPegRevision());
            logMessages = svnClient.getLogMessages(svnProject.getUrl(), revision1, revision2, true);
        } catch (Exception e) {
            throw e;
        } finally {
            svnResource.getRepository().returnSVNClient(svnClient);
        }
    }
    return logMessages;
}
Also used : SVNRevision(org.tigris.subversion.svnclientadapter.SVNRevision) ISVNLocalResource(org.tigris.subversion.subclipse.core.ISVNLocalResource) IProject(org.eclipse.core.resources.IProject) CoreException(org.eclipse.core.runtime.CoreException) SVNException(org.tigris.subversion.subclipse.core.SVNException) SVNClientException(org.tigris.subversion.svnclientadapter.SVNClientException) ISVNClientAdapter(org.tigris.subversion.svnclientadapter.ISVNClientAdapter)

Example 34 with ISVNLocalResource

use of org.tigris.subversion.subclipse.core.ISVNLocalResource in project subclipse by subclipse.

the class ResolveTreeConflictWizardMainPage method createControl.

public void createControl(Composite parent) {
    ResolveTreeConflictWizard wizard = (ResolveTreeConflictWizard) getWizard();
    treeConflict = wizard.getTreeConflict();
    Composite outerContainer = new Composite(parent, SWT.NONE);
    outerContainer.setLayout(new GridLayout());
    outerContainer.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL));
    Group detailsGroup = new Group(outerContainer, SWT.NONE);
    detailsGroup.setText(Messages.ResolveTreeConflictWizardMainPage_conflictDescription);
    GridLayout detailsLayout = new GridLayout();
    detailsLayout.numColumns = 2;
    detailsGroup.setLayout(detailsLayout);
    detailsGroup.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL));
    Label label = new Label(detailsGroup, SWT.NONE);
    label.setText(treeConflict.getDescription());
    GridData gd = new GridData();
    gd.horizontalSpan = 2;
    label.setLayoutData(gd);
    label = new Label(detailsGroup, SWT.NONE);
    gd = new GridData();
    gd.horizontalSpan = 2;
    label.setLayoutData(gd);
    label = new Label(detailsGroup, SWT.NONE);
    label.setText(Messages.ResolveTreeConflictWizardMainPage_sourceLeft);
    label = new Label(detailsGroup, SWT.WRAP);
    if (treeConflict.getConflictDescriptor().getSrcLeftVersion() != null) {
        label.setText(treeConflict.getConflictDescriptor().getSrcLeftVersion().toString());
    }
    gd = new GridData();
    gd.widthHint = 500;
    label.setLayoutData(gd);
    label = new Label(detailsGroup, SWT.NONE);
    gd = new GridData();
    gd.horizontalSpan = 2;
    label.setLayoutData(gd);
    label = new Label(detailsGroup, SWT.NONE);
    label.setText(Messages.ResolveTreeConflictWizardMainPage_sourceRight);
    label = new Label(detailsGroup, SWT.WRAP);
    if (treeConflict.getConflictDescriptor().getSrcRightVersion() != null) {
        label.setText(treeConflict.getConflictDescriptor().getSrcRightVersion().toString());
    }
    gd = new GridData();
    gd.widthHint = 500;
    label.setLayoutData(gd);
    Group resolutionGroup = new Group(outerContainer, SWT.NONE);
    resolutionGroup.setText(Messages.ResolveTreeConflictWizardMainPage_resolutionSteps);
    GridLayout resolutionLayout = new GridLayout();
    resolutionLayout.numColumns = 1;
    resolutionGroup.setLayout(resolutionLayout);
    resolutionGroup.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL));
    SVNConflictDescriptor conflictDescriptor = treeConflict.getConflictDescriptor();
    int reason = conflictDescriptor.getReason();
    int action = conflictDescriptor.getAction();
    int operation = conflictDescriptor.getOperation();
    if ((reason == SVNConflictDescriptor.Reason.deleted || reason == SVNConflictDescriptor.Reason.missing) && action == SVNConflictDescriptor.Action.edit) {
        if (operation == SVNConflictDescriptor.Operation._merge)
            remoteCopiedTo = getRemoteCopiedTo(true);
        else
            copiedTo = getCopiedTo(false);
        getRemoteResource(wizard, treeConflict);
        compareButton = new Button(resolutionGroup, SWT.CHECK);
        compareButton.setText(Messages.ResolveTreeConflictWizardMainPage_compare + conflictDescriptor.getSrcRightVersion().getPathInRepos() + Messages.ResolveTreeConflictWizardMainPage_compareTo);
        compareLabel = new Label(resolutionGroup, SWT.NONE);
        compareLabel.setText(Messages.ResolveTreeConflictWizardMainPage_compareEditorInformation);
        compareLabel.setVisible(false);
        mergeFromRepositoryButton = new Button(resolutionGroup, SWT.CHECK);
        mergeFromRepositoryButton.setText(Messages.ResolveTreeConflictWizardMainPage_merge + conflictDescriptor.getSrcRightVersion().getPathInRepos() + Messages.ResolveTreeConflictWizardMainPage_intoTarget);
        Group mergeTargetGroup = new Group(resolutionGroup, SWT.NONE);
        mergeTargetGroup.setText(Messages.ResolveTreeConflictWizardMainPage_compareMergeTarget);
        GridLayout mergeTargetLayout = new GridLayout();
        mergeTargetLayout.numColumns = 2;
        mergeTargetGroup.setLayout(mergeTargetLayout);
        mergeTargetGroup.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL));
        mergeTargetText = new Text(mergeTargetGroup, SWT.BORDER | SWT.READ_ONLY);
        gd = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
        mergeTargetText.setLayoutData(gd);
        if (copiedTo != null) {
            mergeTarget = File2Resource.getResource(copiedTo.getFile());
            svnCompareResource = SVNWorkspaceRoot.getSVNResourceFor(mergeTarget);
            mergeTargetText.setText(mergeTarget.getFullPath().toString());
        } else if (remoteCopiedTo != null) {
            mergeTarget = File2Resource.getResource(remoteCopiedTo.getFile());
            svnCompareResource = SVNWorkspaceRoot.getSVNResourceFor(mergeTarget);
            mergeTargetText.setText(mergeTarget.getFullPath().toString());
        } else {
            setPageComplete(false);
        }
        Button selectMergeTargetButton = new Button(mergeTargetGroup, SWT.PUSH);
        selectMergeTargetButton.setText(Messages.ResolveTreeConflictWizardMainPage_browse);
        selectMergeTargetButton.addSelectionListener(new SelectionAdapter() {

            public void widgetSelected(SelectionEvent evt) {
                String title;
                if (mergeFromRepositoryButton == null && compareButton != null)
                    title = Messages.ResolveTreeConflictWizardMainPage_selectCompareTarget;
                else if (compareButton == null && mergeFromRepositoryButton != null)
                    title = Messages.ResolveTreeConflictWizardMainPage_selectMergeTarget;
                else
                    title = Messages.ResolveTreeConflictWizardMainPage_selectCompareMergeTarget;
                SelectionDialog dialog;
                boolean container = isContainer();
                if (container)
                    dialog = new ContainerSelectionDialog(getShell(), treeConflict.getResource().getProject(), false, title);
                else
                    dialog = new ResourceSelectionDialog(getShell(), treeConflict.getResource().getProject(), title);
                if (dialog.open() == SelectionDialog.OK) {
                    Object[] selectedResources = dialog.getResult();
                    IResource selectedResource = null;
                    if (selectedResources != null && selectedResources.length > 0) {
                        if (selectedResources[0] instanceof IResource)
                            selectedResource = (IResource) selectedResources[0];
                        if (selectedResources[0] instanceof Path) {
                            Path path = (Path) selectedResources[0];
                            selectedResource = ResourcesPlugin.getWorkspace().getRoot().getFolder(path);
                        }
                    }
                    if (selectedResource != null) {
                        mergeTarget = selectedResource;
                        svnCompareResource = SVNWorkspaceRoot.getSVNResourceFor(mergeTarget);
                        mergeTargetText.setText(mergeTarget.getFullPath().toString());
                        setPageComplete(true);
                    }
                }
            }
        });
        mergeFromRepositoryButton.setSelection(true);
        SelectionListener choiceListener = new SelectionAdapter() {

            public void widgetSelected(SelectionEvent evt) {
                if (compareButton.getSelection() || (mergeFromRepositoryButton != null && mergeFromRepositoryButton.getSelection()))
                    setPageComplete((mergeTargetText != null && mergeTargetText.getText().length() > 0) || (mergeTargetCombo != null && mergeTargetCombo.getText().length() > 0));
                else
                    setPageComplete(true);
                if (compareButton.getSelection()) {
                    compareLabel.setVisible(true);
                    mergeFromRepositoryButton.setEnabled(false);
                    markResolvedButton.setEnabled(false);
                } else {
                    compareLabel.setVisible(false);
                    mergeFromRepositoryButton.setEnabled(true);
                    markResolvedButton.setEnabled(true);
                }
            }
        };
        compareButton.addSelectionListener(choiceListener);
        if (mergeFromRepositoryButton != null)
            mergeFromRepositoryButton.addSelectionListener(choiceListener);
    }
    if (reason == SVNConflictDescriptor.Reason.edited && action == SVNConflictDescriptor.Action.delete) {
        compareButton = new Button(resolutionGroup, SWT.CHECK);
        String name;
        boolean container = isContainer();
        if (container)
            name = treeConflict.getResource().getFullPath().toString();
        else
            name = treeConflict.getResource().getName();
        compareButton.setText(Messages.ResolveTreeConflictWizardMainPage_compare + name + Messages.ResolveTreeConflictWizardMainPage_to);
        compareButton.setSelection(false);
        if (operation != SVNConflictDescriptor.Operation._switch) {
            compareLabel = new Label(resolutionGroup, SWT.NONE);
            compareLabel.setText(Messages.ResolveTreeConflictWizardMainPage_compareEditorInformation);
            compareLabel.setVisible(false);
        }
        compareResource2 = treeConflict.getResource();
        if (operation == SVNConflictDescriptor.Operation._merge) {
            try {
                adds = wizard.getAdds();
            } catch (SVNException e) {
                SVNUIPlugin.log(IStatus.ERROR, e.getMessage(), e);
            }
            mergeFromRepositoryButton = new Button(resolutionGroup, SWT.CHECK);
            if (container)
                name = treeConflict.getResource().getFullPath().toString();
            else
                name = treeConflict.getResource().getName();
            mergeFromRepositoryButton.setText(Messages.ResolveTreeConflictWizardMainPage_merge + name + Messages.ResolveTreeConflictWizardMainPage_into);
            mergeFromRepositoryButton.setSelection(true);
            mergeFromUrl = wizard.getSvnResource().getUrl().toString();
        } else {
            remoteCopiedTo = getRemoteCopiedTo(false);
        }
        Composite mergeTargetGroup = new Composite(resolutionGroup, SWT.NONE);
        GridLayout mergeTargetLayout = new GridLayout();
        mergeTargetLayout.numColumns = 2;
        mergeTargetGroup.setLayout(mergeTargetLayout);
        mergeTargetGroup.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL));
        if (adds == null || adds.length == 0) {
            mergeTargetText = new Text(mergeTargetGroup, SWT.BORDER | SWT.READ_ONLY);
            gd = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
            mergeTargetText.setLayoutData(gd);
        } else {
            mergeTargetCombo = new Combo(mergeTargetGroup, SWT.BORDER | SWT.READ_ONLY);
            gd = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
            mergeTargetCombo.setLayoutData(gd);
            mergeTargetCombo.addSelectionListener(new SelectionAdapter() {

                public void widgetSelected(SelectionEvent evt) {
                    ISVNStatus selectedAdd = adds[mergeTargetCombo.getSelectionIndex()];
                    mergeTarget = File2Resource.getResource(selectedAdd.getFile());
                    compareResource1 = mergeTarget;
                }
            });
        }
        if (adds != null && adds.length > 0) {
            for (int i = 0; i < adds.length; i++) {
                IResource mergeTargetResource = File2Resource.getResource(adds[i].getFile());
                mergeTargetCombo.add(mergeTargetResource.getFullPath().toString());
            }
            mergeTargetCombo.select(0);
            mergeTarget = File2Resource.getResource(adds[0].getFile());
            compareResource1 = mergeTarget;
        } else if (remoteCopiedTo != null) {
            mergeTarget = File2Resource.getResource(remoteCopiedTo.getFile());
            mergeTargetText.setText(mergeTarget.getFullPath().toString());
            compareResource1 = mergeTarget;
        }
        // else setPageComplete(false);
        Button selectMergeTargetButton = new Button(mergeTargetGroup, SWT.PUSH);
        selectMergeTargetButton.setText(Messages.ResolveTreeConflictWizardMainPage_browse);
        selectMergeTargetButton.addSelectionListener(new SelectionAdapter() {

            public void widgetSelected(SelectionEvent evt) {
                String title;
                if (mergeFromRepositoryButton == null && compareButton != null)
                    title = Messages.ResolveTreeConflictWizardMainPage_selectCompareTarget;
                else if (compareButton == null && mergeFromRepositoryButton != null)
                    title = Messages.ResolveTreeConflictWizardMainPage_selectMergeTarget;
                else
                    title = Messages.ResolveTreeConflictWizardMainPage_selectCompareMergeTarget;
                SelectionDialog dialog;
                boolean container = isContainer();
                if (container)
                    dialog = new ContainerSelectionDialog(getShell(), treeConflict.getResource().getProject(), false, title);
                else
                    dialog = new ResourceSelectionDialog(getShell(), treeConflict.getResource().getProject(), title);
                if (dialog.open() == SelectionDialog.OK) {
                    Object[] selectedResources = dialog.getResult();
                    IResource selectedResource = null;
                    if (selectedResources != null && selectedResources.length > 0) {
                        if (selectedResources[0] instanceof IResource)
                            selectedResource = (IResource) selectedResources[0];
                        if (selectedResources[0] instanceof Path) {
                            Path path = (Path) selectedResources[0];
                            selectedResource = ResourcesPlugin.getWorkspace().getRoot().getFolder(path);
                        }
                    }
                    if (selectedResource != null) {
                        mergeTarget = selectedResource;
                        compareResource1 = mergeTarget;
                        if (mergeTargetText == null)
                            mergeTargetCombo.setText(mergeTarget.getFullPath().toString());
                        else
                            mergeTargetText.setText(mergeTarget.getFullPath().toString());
                        setPageComplete(true);
                    }
                }
            }
        });
        if (operation == SVNConflictDescriptor.Operation._switch) {
            compareLabel = new Label(resolutionGroup, SWT.NONE);
            compareLabel.setText(Messages.ResolveTreeConflictWizardMainPage_compareEditorInformation);
            compareLabel.setVisible(false);
        }
        if (operation != SVNConflictDescriptor.Operation._merge) {
            revertResource = treeConflict.getResource();
            if (wizard.isAdded()) {
                revertButton = new Button(resolutionGroup, SWT.CHECK);
                if (revertResource instanceof IContainer)
                    name = revertResource.getFullPath().toString();
                else
                    name = revertResource.getName();
                revertButton.setText(Messages.ResolveTreeConflictWizardMainPage_revert + name + Messages.ResolveTreeConflictWizardMainPage_conflictWillBeResolved);
                revertButton.setSelection(true);
            }
            deleteResource1 = treeConflict.getResource();
            deleteButton1 = new Button(resolutionGroup, SWT.CHECK);
            if (deleteResource1 instanceof IContainer)
                name = deleteResource1.getFullPath().toString();
            else
                name = deleteResource1.getName();
            if (wizard.isAdded())
                deleteButton1.setText(Messages.ResolveTreeConflictWizardMainPage_remove + name + Messages.ResolveTreeConflictWizardMainPage_fromWorkingCopy);
            else
                deleteButton1.setText(Messages.ResolveTreeConflictWizardMainPage_delete + name);
            deleteButton1.setSelection(true);
            if (wizard.isAdded())
                markResolvedEnabled = false;
            SelectionListener choiceListener = new SelectionAdapter() {

                public void widgetSelected(SelectionEvent evt) {
                    if (compareButton.getSelection() || (mergeFromRepositoryButton != null && mergeFromRepositoryButton.getSelection()))
                        setPageComplete((mergeTargetText != null && mergeTargetText.getText().length() > 0) || (mergeTargetCombo != null && mergeTargetCombo.getText().length() > 0));
                    else
                        setPageComplete(true);
                    if (compareButton.getSelection()) {
                        compareLabel.setVisible(true);
                        if (revertButton != null)
                            revertButton.setEnabled(false);
                        deleteButton1.setEnabled(false);
                        markResolvedButton.setEnabled(false);
                    } else {
                        compareLabel.setVisible(false);
                        if (revertButton != null) {
                            revertButton.setEnabled(true);
                            deleteButton1.setEnabled(true);
                            markResolvedButton.setEnabled(true);
                            if (revertButton.getSelection()) {
                                deleteButton1.setEnabled(true);
                                markResolvedButton.setSelection(false);
                                markResolvedButton.setEnabled(false);
                            } else {
                                deleteButton1.setSelection(false);
                                deleteButton1.setEnabled(false);
                                markResolvedButton.setEnabled(true);
                            }
                        }
                    }
                }
            };
            compareButton.addSelectionListener(choiceListener);
            if (mergeFromRepositoryButton != null)
                mergeFromRepositoryButton.addSelectionListener(choiceListener);
            if (revertButton != null)
                revertButton.addSelectionListener(choiceListener);
            deleteButton1.addSelectionListener(choiceListener);
        }
        if (operation == SVNConflictDescriptor.Operation._merge) {
            if (treeConflict.getResource().exists()) {
                deleteResource1 = treeConflict.getResource();
                deleteButton1 = new Button(resolutionGroup, SWT.CHECK);
                if (deleteResource1 instanceof IContainer)
                    name = deleteResource1.getFullPath().toString();
                else
                    name = deleteResource1.getName();
                deleteButton1.setText(Messages.ResolveTreeConflictWizardMainPage_delete + name);
                deleteButton1.setSelection(true);
                markResolvedEnabled = false;
                if (markResolvedButton != null) {
                    markResolvedButton.setSelection(true);
                    markResolvedButton.setEnabled(false);
                }
            }
            SelectionListener choiceListener = new SelectionAdapter() {

                public void widgetSelected(SelectionEvent evt) {
                    if (!compareButton.getSelection() && !mergeFromRepositoryButton.getSelection())
                        setPageComplete(true);
                    else
                        setPageComplete((mergeTargetText != null && mergeTargetText.getText().length() > 0) || (mergeTargetCombo != null && mergeTargetCombo.getText().length() > 0));
                    if (compareButton.getSelection()) {
                        compareLabel.setVisible(true);
                        if (mergeFromRepositoryButton != null)
                            mergeFromRepositoryButton.setEnabled(false);
                        if (deleteButton1 != null)
                            deleteButton1.setEnabled(false);
                        if (markResolvedButton != null)
                            markResolvedButton.setEnabled(false);
                    } else {
                        compareLabel.setVisible(false);
                        if (mergeFromRepositoryButton != null)
                            mergeFromRepositoryButton.setEnabled(true);
                        if (deleteButton1 != null) {
                            deleteButton1.setEnabled(true);
                            if (deleteButton1.getSelection() && markResolvedButton != null) {
                                markResolvedButton.setSelection(true);
                                markResolvedButton.setEnabled(false);
                            }
                        }
                        if (markResolvedButton != null) {
                            if (deleteButton1 == null || !deleteButton1.getSelection()) {
                                markResolvedButton.setEnabled(true);
                            }
                        }
                    }
                }
            };
            compareButton.addSelectionListener(choiceListener);
            mergeFromRepositoryButton.addSelectionListener(choiceListener);
            if (deleteButton1 != null) {
                deleteButton1.addSelectionListener(choiceListener);
            }
        }
    }
    if (reason == SVNConflictDescriptor.Reason.deleted && action == SVNConflictDescriptor.Action.delete && operation != SVNConflictDescriptor.Operation._merge) {
        copiedTo = getCopiedTo(true);
        remoteCopiedTo = getRemoteCopiedTo(true);
        theirs = null;
        mine = null;
        if (remoteCopiedTo != null)
            theirs = File2Resource.getResource(remoteCopiedTo.getFile());
        if (copiedTo != null)
            mine = File2Resource.getResource(copiedTo.getFile());
        if (mine != null && mine.exists() && theirs != null && theirs.exists()) {
            compareButton = new Button(resolutionGroup, SWT.CHECK);
            String name;
            if (mine instanceof IContainer)
                name = mine.getFullPath().toString();
            else
                name = mine.getName();
            compareButton.setText(Messages.ResolveTreeConflictWizardMainPage_compare + name + Messages.ResolveTreeConflictWizardMainPage_to2 + theirs.getName());
            compareButton.setSelection(false);
            compareResource1 = mine;
            compareResource2 = theirs;
            compareLabel = new Label(resolutionGroup, SWT.NONE);
            compareLabel.setText(Messages.ResolveTreeConflictWizardMainPage_compareEditorInformation);
            compareLabel.setVisible(false);
            compareButton.addSelectionListener(new SelectionAdapter() {

                public void widgetSelected(SelectionEvent evt) {
                    compareLabel.setVisible(compareButton.getSelection());
                    if (option1Button != null)
                        option1Button.setEnabled(!compareButton.getSelection());
                    if (option1Group != null)
                        option1Group.setEnabled(!compareButton.getSelection());
                    if (option2Button != null)
                        option2Button.setEnabled(!compareButton.getSelection());
                    if (option2Group != null)
                        option2Group.setEnabled(!compareButton.getSelection());
                    if (option3Button != null)
                        option3Button.setEnabled(!compareButton.getSelection());
                    markResolvedButton.setEnabled(!compareButton.getSelection());
                }
            });
        }
        if (mine != null && mine.exists()) {
            option1Button = new Button(resolutionGroup, SWT.RADIO);
            option1Button.setText(Messages.ResolveTreeConflictWizardMainPage_choose + mine.getFullPath());
            option1Button.setSelection(true);
            option1Group = new Group(resolutionGroup, SWT.NONE);
            String name;
            if (mine instanceof IContainer)
                name = mine.getFullPath().toString();
            else
                name = mine.getName();
            option1Group.setText(name);
            GridLayout option1Layout = new GridLayout();
            option1Layout.numColumns = 1;
            option1Group.setLayout(option1Layout);
            option1Group.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL));
            if (theirs != null && theirs.exists()) {
                deleteResource1 = theirs;
                deleteButton1 = new Button(option1Group, SWT.CHECK);
                if (deleteResource1 instanceof IContainer)
                    name = deleteResource1.getFullPath().toString();
                else
                    name = deleteResource1.getName();
                deleteButton1.setText(Messages.ResolveTreeConflictWizardMainPage_delete + name);
                deleteButton1.setSelection(true);
            } else
                option1Group.setVisible(false);
        }
        if (theirs != null && theirs.exists()) {
            option2Button = new Button(resolutionGroup, SWT.RADIO);
            option2Button.setText(Messages.ResolveTreeConflictWizardMainPage_choose + theirs.getFullPath());
            if (option1Button == null)
                option2Button.setSelection(true);
            option2Group = new Group(resolutionGroup, SWT.NONE);
            String name;
            if (theirs instanceof IContainer)
                name = theirs.getFullPath().toString();
            else
                name = theirs.getName();
            option2Group.setText(name);
            GridLayout option2Layout = new GridLayout();
            option2Layout.numColumns = 1;
            option2Group.setLayout(option2Layout);
            option2Group.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL));
            if (mine != null && mine.exists()) {
                ISVNLocalResource myResource = SVNWorkspaceRoot.getSVNResourceFor(mine);
                try {
                    if (myResource.getStatus().isAdded()) {
                        revertResource = mine;
                        revertButton = new Button(option2Group, SWT.CHECK);
                        if (mine instanceof IContainer)
                            name = mine.getFullPath().toString();
                        else
                            name = mine.getName();
                        revertButton.setText(Messages.ResolveTreeConflictWizardMainPage_revert + name);
                        revertButton.setSelection(true);
                    }
                } catch (SVNException e) {
                    SVNUIPlugin.log(IStatus.ERROR, e.getMessage(), e);
                }
                deleteResource2 = mine;
                deleteButton2 = new Button(option2Group, SWT.CHECK);
                if (deleteResource2 instanceof IContainer)
                    name = deleteResource2.getFullPath().toString();
                else
                    name = deleteResource2.getName();
                deleteButton2.setText(Messages.ResolveTreeConflictWizardMainPage_remove + name + Messages.ResolveTreeConflictWizardMainPage_fromWorkingCopy);
                deleteButton2.setSelection(true);
                option2Group.setEnabled(option1Button == null);
            } else
                option2Group.setVisible(false);
        }
        if (mine != null && mine.exists() && theirs != null && theirs.exists()) {
            option3Button = new Button(resolutionGroup, SWT.RADIO);
            option3Button.setText(Messages.ResolveTreeConflictWizardMainPage_chooseBoth);
        }
        SelectionListener optionListener = new SelectionAdapter() {

            public void widgetSelected(SelectionEvent evt) {
                if (option1Button != null && option1Button.getSelection()) {
                    option1Group.setEnabled(true);
                    if (option2Group != null)
                        option2Group.setEnabled(false);
                }
                if (option2Button != null && option2Button.getSelection()) {
                    option2Group.setEnabled(true);
                    if (option1Group != null)
                        option1Group.setEnabled(false);
                }
                if (option3Button.getSelection()) {
                    option1Group.setEnabled(false);
                    option2Group.setEnabled(false);
                }
                if (revertButton != null) {
                    if (revertButton.getSelection()) {
                        deleteButton2.setEnabled(true);
                    } else {
                        deleteButton2.setEnabled(false);
                        deleteButton2.setSelection(false);
                    }
                }
            }
        };
        if (option1Button != null)
            option1Button.addSelectionListener(optionListener);
        if (option2Button != null)
            option2Button.addSelectionListener(optionListener);
        if (option3Button != null)
            option3Button.addSelectionListener(optionListener);
        if (revertButton != null)
            revertButton.addSelectionListener(optionListener);
    }
    if (reason == SVNConflictDescriptor.Reason.deleted && action == SVNConflictDescriptor.Action.delete && operation == SVNConflictDescriptor.Operation._merge) {
        remoteCopiedTo = getRemoteCopiedTo(true);
        if (remoteCopiedTo != null)
            mine = File2Resource.getResource(remoteCopiedTo.getFile());
        if (mine != null && mine.exists()) {
            try {
                adds = wizard.getAdds();
            } catch (SVNException e) {
                SVNUIPlugin.log(IStatus.ERROR, e.getMessage(), e);
            }
            option1Button = new Button(resolutionGroup, SWT.RADIO);
            option1Button.setText(Messages.ResolveTreeConflictWizardMainPage_choose + mine.getFullPath());
            option1Button.setSelection(true);
            if (adds != null && adds.length > 0) {
                option1Group = new Group(resolutionGroup, SWT.NONE);
                String name;
                if (mine instanceof IContainer)
                    name = mine.getFullPath().toString();
                else
                    name = mine.getName();
                option1Group.setText(name);
                GridLayout option1Layout = new GridLayout();
                option1Layout.numColumns = 1;
                option1Group.setLayout(option1Layout);
                option1Group.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL));
                if (adds.length == 1) {
                    revertResource = File2Resource.getResource(adds[0].getFile());
                    revertButton = new Button(option1Group, SWT.CHECK);
                    if (revertResource instanceof IContainer)
                        name = revertResource.getFullPath().toString();
                    else
                        name = revertResource.getName();
                    revertButton.setText(Messages.ResolveTreeConflictWizardMainPage_revert + name);
                    revertButton.setSelection(true);
                    deleteResource1 = File2Resource.getResource(adds[0].getFile());
                    deleteButton1 = new Button(option1Group, SWT.CHECK);
                    if (deleteResource1 instanceof IContainer)
                        name = deleteResource1.getFullPath().toString();
                    else
                        name = deleteResource1.getName();
                    deleteButton1.setText(Messages.ResolveTreeConflictWizardMainPage_remove + name + Messages.ResolveTreeConflictWizardMainPage_fromWorkingCopy);
                    deleteButton1.setSelection(true);
                } else {
                    revertButton = new Button(option1Group, SWT.CHECK);
                    revertButton.setText(Messages.ResolveTreeConflictWizardMainPage_revertSelected);
                    revertCombo = new Combo(option1Group, SWT.BORDER | SWT.READ_ONLY);
                    gd = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
                    revertCombo.setLayoutData(gd);
                    revertCombo.addSelectionListener(new SelectionAdapter() {

                        public void widgetSelected(SelectionEvent evt) {
                            ISVNStatus selectedRevert = adds[revertCombo.getSelectionIndex()];
                            revertResource = File2Resource.getResource(selectedRevert.getFile());
                            deleteResource1 = revertResource;
                        }
                    });
                    for (int i = 0; i < adds.length; i++) {
                        IResource revertResource = File2Resource.getResource(adds[i].getFile());
                        revertCombo.add(revertResource.getFullPath().toString());
                    }
                    revertCombo.select(0);
                    revertResource = File2Resource.getResource(adds[0].getFile());
                    deleteResource1 = revertResource;
                    deleteButton1 = new Button(option1Group, SWT.CHECK);
                    deleteButton1.setText(Messages.ResolveTreeConflictWizardMainPage_removeSelected);
                    deleteButton1.setEnabled(false);
                    setPageComplete(false);
                }
            }
            option2Button = new Button(resolutionGroup, SWT.RADIO);
            option2Group = new Group(resolutionGroup, SWT.NONE);
            GridLayout option2Layout = new GridLayout();
            option2Layout.numColumns = 1;
            option2Group.setLayout(option2Layout);
            option2Group.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL));
            if (adds == null || adds.length != 1) {
                option2Button.setText(Messages.ResolveTreeConflictWizardMainPage_chooseIncoming);
                option2Group.setText(Messages.ResolveTreeConflictWizardMainPage_incoming);
            } else {
                IResource addResource = File2Resource.getResource(adds[0].getFile());
                option2Button.setText(Messages.ResolveTreeConflictWizardMainPage_choose + addResource.getFullPath());
                String name;
                if (addResource instanceof IContainer)
                    name = addResource.getFullPath().toString();
                else
                    name = addResource.getName();
                option2Group.setText(name);
            }
            deleteResource2 = mine;
            deleteButton2 = new Button(option2Group, SWT.CHECK);
            String name;
            if (deleteResource2 instanceof IContainer)
                name = deleteResource2.getFullPath().toString();
            else
                name = deleteResource2.getName();
            deleteButton2.setText(Messages.ResolveTreeConflictWizardMainPage_delete + name);
            deleteButton2.setSelection(true);
            option2Group.setEnabled(false);
            option3Button = new Button(resolutionGroup, SWT.RADIO);
            option3Button.setText(Messages.ResolveTreeConflictWizardMainPage_chooseBoth);
            SelectionListener choiceListener = new SelectionAdapter() {

                public void widgetSelected(SelectionEvent evt) {
                    if (option1Group != null)
                        option1Group.setEnabled(option1Button.getSelection());
                    if (option2Group != null)
                        option2Group.setEnabled(option2Button.getSelection());
                    if (revertButton != null && deleteButton1 != null) {
                        if (revertButton.getSelection()) {
                            deleteButton1.setEnabled(true);
                        } else {
                            deleteButton1.setEnabled(false);
                            deleteButton1.setSelection(false);
                        }
                    }
                    if (option1Button.getSelection()) {
                        setPageComplete(revertButton == null || revertButton.getSelection());
                    }
                    if (option2Button.getSelection()) {
                        setPageComplete(deleteButton2 == null || deleteButton2.getSelection());
                    }
                    if (option3Button.getSelection())
                        setPageComplete(true);
                }
            };
            option1Button.addSelectionListener(choiceListener);
            option2Button.addSelectionListener(choiceListener);
            option3Button.addSelectionListener(choiceListener);
            if (revertButton != null)
                revertButton.addSelectionListener(choiceListener);
            if (deleteButton2 != null)
                deleteButton2.addSelectionListener(choiceListener);
            if (revertButton != null)
                revertButton.addSelectionListener(choiceListener);
        }
    }
    if ((reason == SVNConflictDescriptor.Reason.added && action == SVNConflictDescriptor.Action.add && (operation == SVNConflictDescriptor.Operation._update || operation == SVNConflictDescriptor.Operation._merge)) || (reason == SVNConflictDescriptor.Reason.obstructed && action == SVNConflictDescriptor.Action.add && operation == SVNConflictDescriptor.Operation._merge)) {
        String name;
        boolean container = isContainer();
        if (container)
            name = treeConflict.getResource().getFullPath().toString();
        else
            name = treeConflict.getResource().getName();
        replaceButton = new Button(resolutionGroup, SWT.CHECK);
        replaceButton.setText(Messages.ResolveTreeConflictWizardMainPage_0 + name + Messages.ResolveTreeConflictWizardMainPage_1 + treeConflict.getConflictDescriptor().getSrcRightVersion().getPathInRepos() + Messages.ResolveTreeConflictWizardMainPage_inRepository);
        compareButton = new Button(resolutionGroup, SWT.CHECK);
        compareButton.setText(Messages.ResolveTreeConflictWizardMainPage_compare + name + Messages.ResolveTreeConflictWizardMainPage_to2 + treeConflict.getConflictDescriptor().getSrcRightVersion().getPathInRepos() + Messages.ResolveTreeConflictWizardMainPage_inRepository);
        compareButton.setSelection(false);
        compareResource1 = treeConflict.getResource();
        getRemoteResource(wizard, treeConflict);
        compareLabel = new Label(resolutionGroup, SWT.NONE);
        compareLabel.setText(Messages.ResolveTreeConflictWizardMainPage_compareEditorInformation);
        compareLabel.setVisible(false);
        SelectionListener choiceListener = new SelectionAdapter() {

            public void widgetSelected(SelectionEvent evt) {
                if (evt.getSource() == replaceButton) {
                    if (replaceButton.getSelection()) {
                        markResolvedButton.setEnabled(false);
                        markResolvedButton.setSelection(true);
                        compareButton.setVisible(false);
                        compareButton.setSelection(false);
                        compareLabel.setVisible(false);
                    } else {
                        compareButton.setVisible(true);
                        compareLabel.setVisible(compareButton.getSelection());
                        markResolvedButton.setEnabled(!compareButton.getSelection());
                    }
                } else if (evt.getSource() == compareButton) {
                    if (compareButton.getSelection()) {
                        compareLabel.setVisible(true);
                        markResolvedButton.setEnabled(false);
                    } else {
                        compareLabel.setVisible(false);
                        markResolvedButton.setEnabled(true);
                    }
                }
            }
        };
        replaceButton.addSelectionListener(choiceListener);
        compareButton.addSelectionListener(choiceListener);
    }
    if (conflictDescriptor.getSrcLeftVersion() == null) {
        revertButton = new Button(resolutionGroup, SWT.CHECK);
        revertResource = treeConflict.getResource();
        String name;
        if (revertResource instanceof IContainer)
            name = revertResource.getFullPath().toString();
        else
            name = revertResource.getName();
        revertButton.setText(Messages.ResolveTreeConflictWizardMainPage_revert + name + Messages.ResolveTreeConflictWizardMainPage_conflictWillBeResolved);
        revertButton.addSelectionListener(new SelectionAdapter() {

            public void widgetSelected(SelectionEvent e) {
                if (revertButton.getSelection()) {
                    markResolvedButton.setSelection(false);
                }
                markResolvedButton.setEnabled(!revertButton.getSelection());
            }
        });
    }
    markResolvedButton = new Button(resolutionGroup, SWT.CHECK);
    markResolvedButton.setText(Messages.ResolveTreeConflictWizardMainPage_markResolved);
    markResolvedButton.setSelection(true);
    if (markResolvedEnabled) {
        markResolvedButton.setSelection(true);
    } else {
        markResolvedButton.setEnabled(false);
    }
    setMessage(Messages.ResolveTreeConflictWizardMainPage_message);
    setControl(outerContainer);
}
Also used : Group(org.eclipse.swt.widgets.Group) Label(org.eclipse.swt.widgets.Label) Combo(org.eclipse.swt.widgets.Combo) SVNException(org.tigris.subversion.subclipse.core.SVNException) SelectionDialog(org.eclipse.ui.dialogs.SelectionDialog) ContainerSelectionDialog(org.eclipse.ui.dialogs.ContainerSelectionDialog) ResourceSelectionDialog(org.eclipse.ui.dialogs.ResourceSelectionDialog) ISVNLocalResource(org.tigris.subversion.subclipse.core.ISVNLocalResource) GridLayout(org.eclipse.swt.layout.GridLayout) ResourceSelectionDialog(org.eclipse.ui.dialogs.ResourceSelectionDialog) Button(org.eclipse.swt.widgets.Button) SelectionEvent(org.eclipse.swt.events.SelectionEvent) IContainer(org.eclipse.core.resources.IContainer) Path(org.eclipse.core.runtime.Path) Composite(org.eclipse.swt.widgets.Composite) SelectionAdapter(org.eclipse.swt.events.SelectionAdapter) Text(org.eclipse.swt.widgets.Text) SVNConflictDescriptor(org.tigris.subversion.svnclientadapter.SVNConflictDescriptor) ISVNStatus(org.tigris.subversion.svnclientadapter.ISVNStatus) ContainerSelectionDialog(org.eclipse.ui.dialogs.ContainerSelectionDialog) GridData(org.eclipse.swt.layout.GridData) IResource(org.eclipse.core.resources.IResource) SelectionListener(org.eclipse.swt.events.SelectionListener)

Example 35 with ISVNLocalResource

use of org.tigris.subversion.subclipse.core.ISVNLocalResource in project subclipse by subclipse.

the class ResourceWithStatusUtil method getStatus.

public static String getStatus(IResource resource) {
    ISVNLocalResource svnResource = SVNWorkspaceRoot.getSVNResourceFor(resource);
    String result = null;
    try {
        LocalResourceStatus status = svnResource.getStatus();
        if (// $NON-NLS-1$
        status.isTextConflicted())
            // $NON-NLS-1$
            result = Policy.bind("CommitDialog.conflicted");
        else if (// $NON-NLS-1$
        status.isAdded())
            // $NON-NLS-1$
            result = Policy.bind("CommitDialog.added");
        else if (// $NON-NLS-1$
        status.isDeleted())
            // $NON-NLS-1$
            result = Policy.bind("CommitDialog.deleted");
        else if (// $NON-NLS-1$
        status.isMissing())
            // $NON-NLS-1$
            result = Policy.bind("CommitDialog.missing");
        else if (// $NON-NLS-1$
        status.isReplaced())
            // $NON-NLS-1$
            result = Policy.bind("CommitDialog.replaced");
        else if (status.isTextModified())
            // $NON-NLS-1$
            result = Policy.bind("CommitDialog.modified");
        else if (// $NON-NLS-1$
        !status.isManaged())
            // $NON-NLS-1$
            result = Policy.bind("CommitDialog.unversioned");
        else
            // $NON-NLS-1$
            result = "";
    } catch (TeamException e) {
        // $NON-NLS-1$
        result = "";
    }
    return result;
}
Also used : TeamException(org.eclipse.team.core.TeamException) ISVNLocalResource(org.tigris.subversion.subclipse.core.ISVNLocalResource) LocalResourceStatus(org.tigris.subversion.subclipse.core.resources.LocalResourceStatus)

Aggregations

ISVNLocalResource (org.tigris.subversion.subclipse.core.ISVNLocalResource)120 IResource (org.eclipse.core.resources.IResource)77 SVNException (org.tigris.subversion.subclipse.core.SVNException)76 ArrayList (java.util.ArrayList)39 CoreException (org.eclipse.core.runtime.CoreException)24 Iterator (java.util.Iterator)20 IFile (org.eclipse.core.resources.IFile)20 ISVNClientAdapter (org.tigris.subversion.svnclientadapter.ISVNClientAdapter)20 InvocationTargetException (java.lang.reflect.InvocationTargetException)18 List (java.util.List)18 IStructuredSelection (org.eclipse.jface.viewers.IStructuredSelection)18 IProgressMonitor (org.eclipse.core.runtime.IProgressMonitor)17 LocalResourceStatus (org.tigris.subversion.subclipse.core.resources.LocalResourceStatus)17 SVNClientException (org.tigris.subversion.svnclientadapter.SVNClientException)17 File (java.io.File)16 TeamException (org.eclipse.team.core.TeamException)16 ISVNRepositoryLocation (org.tigris.subversion.subclipse.core.ISVNRepositoryLocation)15 ISynchronizeModelElement (org.eclipse.team.ui.synchronize.ISynchronizeModelElement)14 IContainer (org.eclipse.core.resources.IContainer)13 SyncInfo (org.eclipse.team.core.synchronize.SyncInfo)11