Search in sources :

Example 1 with SVNHistoryPage

use of org.tigris.subversion.subclipse.ui.history.SVNHistoryPage in project subclipse by subclipse.

the class AnnotateView method listSelectionChanged.

/**
 * A selection event in the Annotate List View
 *
 * @param selection
 */
private void listSelectionChanged(IStructuredSelection selection) {
    // If the editor was closed, reopen it.
    if (editor == null || editor.getSelectionProvider() == null) {
        try {
            contents.reset();
            showAnnotations(svnFile, svnAnnotateBlocks, contents, false);
        } catch (PartInitException e) {
            return;
        } catch (IOException e) {
            return;
        }
    }
    ISelectionProvider selectionProvider = editor.getSelectionProvider();
    if (selectionProvider == null) {
        // Failed to open the editor but what else can we do.
        return;
    }
    ITextSelection textSelection = (ITextSelection) selectionProvider.getSelection();
    AnnotateBlock listSelection = null;
    try {
        listSelection = (AnnotateBlock) selection.getFirstElement();
    } catch (ClassCastException cce) {
        return;
    }
    // IStructuredSelection#getFirstElement can return null
    if (listSelection == null) {
        return;
    }
    /**
     * Ignore event if the current text selection is already equal to the corresponding list
     * selection. Nothing to do. This prevents infinite event looping.
     *
     * <p>Extra check to handle single line deltas
     */
    if (textSelection.getStartLine() == listSelection.getStartLine() && textSelection.getEndLine() == listSelection.getEndLine() && selection.equals(previousListSelection)) {
        return;
    }
    // If the last selection was a text selection then bale to prevent a selection loop.
    if (!lastSelectionWasText) {
        try {
            int start = document.getLineOffset(listSelection.getStartLine());
            int end = document.getLineOffset(listSelection.getEndLine() + 1);
            editor.selectAndReveal(start, end - start);
            if (editor != null && !page.isPartVisible(editor)) {
                page.activate(editor);
            }
        } catch (BadLocationException e) {
        // Ignore - nothing we can do.
        }
    }
    // Select the revision in the history view.
    if (historyView != null) {
        SVNHistoryPage page = (SVNHistoryPage) historyView.getHistoryPage();
        page.selectRevision(new SVNRevision.Number(listSelection.getRevision()));
    }
    lastSelectionWasText = false;
}
Also used : ISelectionProvider(org.eclipse.jface.viewers.ISelectionProvider) SVNHistoryPage(org.tigris.subversion.subclipse.ui.history.SVNHistoryPage) PartInitException(org.eclipse.ui.PartInitException) IOException(java.io.IOException) SVNRevision(org.tigris.subversion.svnclientadapter.SVNRevision) ITextSelection(org.eclipse.jface.text.ITextSelection) BadLocationException(org.eclipse.jface.text.BadLocationException)

Example 2 with SVNHistoryPage

use of org.tigris.subversion.subclipse.ui.history.SVNHistoryPage in project subclipse by subclipse.

the class ShowDifferencesAsUnifiedDiffAction method execute.

// 
// private IResource localResource;
// 
// public void setLocalResource(IResource localResource) {
// this.localResource = localResource;
// }
protected void execute(IAction action) throws InvocationTargetException, InterruptedException {
    pegRevision1 = null;
    pegRevision2 = null;
    String fromRevision = null;
    String toRevision = null;
    ISVNResource[] selectedResources = getSelectedRemoteResources();
    SVNUrl fromUrl = null;
    SVNUrl toUrl = null;
    if (selectedResources == null || (selectedResources.length == 0)) {
        Object[] selectedObjects = selection.toArray();
        if (selectedObjects[0] instanceof ILogEntry) {
            selectedResources = new ISVNResource[2];
            selectedResources[0] = ((ILogEntry) selectedObjects[0]).getResource();
            fromRevision = ((ILogEntry) selectedObjects[0]).getRevision().toString();
            ILogEntry logEntry1 = (ILogEntry) selectedObjects[0];
            RemoteResource remoteResource;
            IResource resource1 = logEntry1.getResource().getResource();
            if (resource1 != null) {
                try {
                    ISVNRemoteResource baseResource = SVNWorkspaceRoot.getBaseResourceFor(resource1);
                    if (baseResource != null) {
                        pegRevision1 = baseResource.getLastChangedRevision();
                    }
                } catch (Exception e) {
                }
            }
            if (logEntry1.getResource().getResource() instanceof IContainer) {
                remoteResource = new RemoteFolder(logEntry1.getResource().getRepository(), logEntry1.getResource().getUrl(), logEntry1.getRevision());
            } else {
                remoteResource = new RemoteFile(logEntry1.getResource().getRepository(), logEntry1.getResource().getUrl(), logEntry1.getRevision());
            }
            fromUrl = remoteResource.getUrl();
            if (selectedObjects.length > 1) {
                selectedResources[1] = ((ILogEntry) selectedObjects[1]).getResource();
                toRevision = ((ILogEntry) selectedObjects[1]).getRevision().toString();
                ILogEntry logEntry2 = (ILogEntry) selectedObjects[1];
                IResource resource2 = logEntry2.getResource().getResource();
                if (resource2 != null) {
                    try {
                        ISVNRemoteResource baseResource = SVNWorkspaceRoot.getBaseResourceFor(resource2);
                        if (baseResource != null) {
                            pegRevision2 = baseResource.getLastChangedRevision();
                        }
                    } catch (Exception e) {
                    }
                }
                if (logEntry2.getResource().getResource() instanceof IContainer) {
                    remoteResource = new RemoteFolder(logEntry2.getResource().getRepository(), logEntry2.getResource().getUrl(), logEntry2.getRevision());
                } else {
                    remoteResource = new RemoteFile(logEntry2.getResource().getRepository(), logEntry2.getResource().getUrl(), logEntry2.getRevision());
                }
                toUrl = remoteResource.getUrl();
            } else {
                int from = Integer.parseInt(fromRevision);
                from--;
                toRevision = Integer.toString(from);
                toUrl = remoteResource.getUrl();
            }
        }
    } else {
        if (selectedResources[0] instanceof ISVNRemoteResource)
            fromRevision = ((ISVNRemoteResource) selectedResources[0]).getRevision().toString();
        if (selectedResources.length > 1 && selectedResources[1] instanceof ISVNRemoteResource)
            toRevision = ((ISVNRemoteResource) selectedResources[1]).getRevision().toString();
    }
    if (pegRevision1 == null) {
        pegRevision1 = SVNRevision.HEAD;
    }
    if (pegRevision2 == null) {
        pegRevision2 = pegRevision1;
    }
    DifferencesDialog dialog = new DifferencesDialog(getShell(), null, selectedResources, new SVNRevision[] { pegRevision1, pegRevision2 }, getTargetPart());
    dialog.setUsePegRevision(usePegRevision);
    dialog.setFromUrl(fromUrl);
    dialog.setToUrl(toUrl);
    IResource localResource = null;
    IWorkbenchPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActivePart();
    if (part instanceof GenericHistoryView) {
        IHistoryPage historyPage = ((GenericHistoryView) part).getHistoryPage();
        if (historyPage instanceof SVNHistoryPage) {
            localResource = ((SVNHistoryPage) historyPage).getResource();
        }
    }
    dialog.setLocalResource(localResource);
    // $NON-NLS-1$
    if (!fromRevision.equals("HEAD"))
        dialog.setFromRevision(fromRevision);
    if (toRevision != null && !toRevision.equals("HEAD"))
        // $NON-NLS-1$
        dialog.setToRevision(toRevision);
    dialog.open();
}
Also used : ISVNRemoteResource(org.tigris.subversion.subclipse.core.ISVNRemoteResource) RemoteResource(org.tigris.subversion.subclipse.core.resources.RemoteResource) ILogEntry(org.tigris.subversion.subclipse.core.history.ILogEntry) SVNUrl(org.tigris.subversion.svnclientadapter.SVNUrl) RemoteFolder(org.tigris.subversion.subclipse.core.resources.RemoteFolder) ISVNResource(org.tigris.subversion.subclipse.core.ISVNResource) ISVNRemoteResource(org.tigris.subversion.subclipse.core.ISVNRemoteResource) InvocationTargetException(java.lang.reflect.InvocationTargetException) TeamException(org.eclipse.team.core.TeamException) GenericHistoryView(org.eclipse.team.internal.ui.history.GenericHistoryView) IHistoryPage(org.eclipse.team.ui.history.IHistoryPage) DifferencesDialog(org.tigris.subversion.subclipse.ui.dialogs.DifferencesDialog) IWorkbenchPart(org.eclipse.ui.IWorkbenchPart) SVNHistoryPage(org.tigris.subversion.subclipse.ui.history.SVNHistoryPage) IContainer(org.eclipse.core.resources.IContainer) IResource(org.eclipse.core.resources.IResource) RemoteFile(org.tigris.subversion.subclipse.core.resources.RemoteFile)

Aggregations

SVNHistoryPage (org.tigris.subversion.subclipse.ui.history.SVNHistoryPage)2 IOException (java.io.IOException)1 InvocationTargetException (java.lang.reflect.InvocationTargetException)1 IContainer (org.eclipse.core.resources.IContainer)1 IResource (org.eclipse.core.resources.IResource)1 BadLocationException (org.eclipse.jface.text.BadLocationException)1 ITextSelection (org.eclipse.jface.text.ITextSelection)1 ISelectionProvider (org.eclipse.jface.viewers.ISelectionProvider)1 TeamException (org.eclipse.team.core.TeamException)1 GenericHistoryView (org.eclipse.team.internal.ui.history.GenericHistoryView)1 IHistoryPage (org.eclipse.team.ui.history.IHistoryPage)1 IWorkbenchPart (org.eclipse.ui.IWorkbenchPart)1 PartInitException (org.eclipse.ui.PartInitException)1 ISVNRemoteResource (org.tigris.subversion.subclipse.core.ISVNRemoteResource)1 ISVNResource (org.tigris.subversion.subclipse.core.ISVNResource)1 ILogEntry (org.tigris.subversion.subclipse.core.history.ILogEntry)1 RemoteFile (org.tigris.subversion.subclipse.core.resources.RemoteFile)1 RemoteFolder (org.tigris.subversion.subclipse.core.resources.RemoteFolder)1 RemoteResource (org.tigris.subversion.subclipse.core.resources.RemoteResource)1 DifferencesDialog (org.tigris.subversion.subclipse.ui.dialogs.DifferencesDialog)1