From d201fe3579697dc862852176ddab44773b2d3217 Mon Sep 17 00:00:00 2001
From: cvs2svn
Date: Thu, 9 Dec 2004 17:44:17 +0000
Subject: This commit was manufactured by cvs2svn to create branch 'bran'.
Sprout from master 2004-12-09 17:44:15 UTC Jean Michel-Lemieux
- * This class is derived from an internal workbench class
- * If the column has not been selected previously,
- * it will set the sorter of that column to be
- * the current tasklist sorter. Repeated
- * presses on the same column header will
- * toggle sorting order (ascending/descending).
- */
- public void widgetSelected(SelectionEvent e) {
- // column selected - need to sort
- int column = tableViewer.getTable().indexOf((TableColumn) e.widget);
- HistorySorter oldSorter = (HistorySorter)tableViewer.getSorter();
- if (oldSorter != null && column == oldSorter.getColumnNumber()) {
- oldSorter.setReversed(!oldSorter.isReversed());
- tableViewer.refresh();
- } else {
- tableViewer.setSorter(new HistorySorter(column));
- }
- }
- };
- }
-
- public String getCurrentRevision() {
- return currentRevision;
- }
-
- /**
- * Method getRevision.
- * @param currentEdition
- */
- private String getRevision(ICVSFile currentEdition) throws CVSException {
- if (currentEdition == null) return ""; //$NON-NLS-1$
- ResourceSyncInfo info = currentEdition.getSyncInfo();
- if (info == null) return ""; //$NON-NLS-1$
- return info.getRevision();
- }
-
- public void setFile(ICVSFile file) throws CVSException {
- this.currentFile = file;
- this.currentRevision = getRevision(this.currentFile);
- }
-
- public ICVSFile getICVSFile() {
- return this.currentFile;
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/HistoryView.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/HistoryView.java
deleted file mode 100644
index 6943cc18d..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/HistoryView.java
+++ /dev/null
@@ -1,880 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui;
-
-
-import java.io.InputStream;
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.core.resources.*;
-import org.eclipse.core.runtime.*;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.action.*;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.text.*;
-import org.eclipse.jface.viewers.*;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.*;
-import org.eclipse.swt.dnd.DND;
-import org.eclipse.swt.dnd.Transfer;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.team.core.RepositoryProvider;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.synchronize.SyncInfo;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.core.client.Command;
-import org.eclipse.team.internal.ccvs.core.client.Update;
-import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot;
-import org.eclipse.team.internal.ccvs.ui.actions.*;
-import org.eclipse.team.internal.ccvs.ui.operations.UpdateOperation;
-import org.eclipse.team.internal.ui.Utils;
-import org.eclipse.team.ui.synchronize.SyncInfoCompareInput;
-import org.eclipse.ui.*;
-import org.eclipse.ui.help.WorkbenchHelp;
-import org.eclipse.ui.part.ResourceTransfer;
-import org.eclipse.ui.part.ViewPart;
-import org.eclipse.ui.texteditor.ITextEditorActionConstants;
-
-/**
- * The history view allows browsing of an array of resource revisions
- */
-public class HistoryView extends ViewPart {
- private IFile file;
- // cached for efficiency
- private ILogEntry[] entries;
-
- private HistoryTableProvider historyTableProvider;
-
- private TableViewer tableViewer;
- private TextViewer textViewer;
- private TableViewer tagViewer;
-
- private OpenLogEntryAction openAction;
- private IAction toggleTextAction;
- private IAction toggleListAction;
- private TextViewerAction copyAction;
- private TextViewerAction selectAllAction;
- private Action getContentsAction;
- private Action getRevisionAction;
- private Action refreshAction;
- private Action tagWithExistingAction;
- private Action linkWithEditorAction;
-
- private SashForm sashForm;
- private SashForm innerSashForm;
-
- private Image branchImage;
- private Image versionImage;
-
- private ILogEntry currentSelection;
- private boolean linkingEnabled;
-
- private IPreferenceStore settings;
-
- private FetchLogEntriesJob fetchLogEntriesJob;
-
- private boolean shutdown = false;
-
- public static final String VIEW_ID = "org.eclipse.team.ccvs.ui.HistoryView"; //$NON-NLS-1$
-
- private IPartListener partListener = new IPartListener() {
- public void partActivated(IWorkbenchPart part) {
- if (part instanceof IEditorPart)
- editorActivated((IEditorPart) part);
- }
- public void partBroughtToTop(IWorkbenchPart part) {
- if(part == HistoryView.this)
- editorActivated(getViewSite().getPage().getActiveEditor());
- }
- public void partOpened(IWorkbenchPart part) {
- if(part == HistoryView.this)
- editorActivated(getViewSite().getPage().getActiveEditor());
- }
- public void partClosed(IWorkbenchPart part) {
- }
- public void partDeactivated(IWorkbenchPart part) {
- }
- };
-
- private IPartListener2 partListener2 = new IPartListener2() {
- public void partActivated(IWorkbenchPartReference ref) {
- }
- public void partBroughtToTop(IWorkbenchPartReference ref) {
- }
- public void partClosed(IWorkbenchPartReference ref) {
- }
- public void partDeactivated(IWorkbenchPartReference ref) {
- }
- public void partOpened(IWorkbenchPartReference ref) {
- }
- public void partHidden(IWorkbenchPartReference ref) {
- }
- public void partVisible(IWorkbenchPartReference ref) {
- if(ref.getPart(true) == HistoryView.this)
- editorActivated(getViewSite().getPage().getActiveEditor());
- }
- public void partInputChanged(IWorkbenchPartReference ref) {
- }
- };
-
-
- private class FetchLogEntriesJob extends Job {
- public ICVSRemoteFile remoteFile;
- public FetchLogEntriesJob() {
- super(Policy.bind("HistoryView.fetchHistoryJob")); //$NON-NLS-1$;
- }
- public void setRemoteFile(ICVSRemoteFile file) {
- this.remoteFile = file;
- }
- public IStatus run(IProgressMonitor monitor) {
- try {
- if(remoteFile != null && !shutdown) {
- entries = remoteFile.getLogEntries(monitor);
- final String revisionId = remoteFile.getRevision();
- getSite().getShell().getDisplay().asyncExec(new Runnable() {
- public void run() {
- if(entries != null && tableViewer != null && ! tableViewer.getTable().isDisposed()) {
- tableViewer.add(entries);
- selectRevision(revisionId);
- }
- }
- });
- }
- return Status.OK_STATUS;
- } catch (TeamException e) {
- return e.getStatus();
- }
- }
- };
-
- /**
- * Adds the action contributions for this view.
- */
- protected void contributeActions() {
- // Refresh (toolbar)
- CVSUIPlugin plugin = CVSUIPlugin.getPlugin();
- refreshAction = new Action(Policy.bind("HistoryView.refreshLabel"), plugin.getImageDescriptor(ICVSUIConstants.IMG_REFRESH_ENABLED)) { //$NON-NLS-1$
- public void run() {
- refresh();
- }
- };
- refreshAction.setToolTipText(Policy.bind("HistoryView.refresh")); //$NON-NLS-1$
- refreshAction.setDisabledImageDescriptor(plugin.getImageDescriptor(ICVSUIConstants.IMG_REFRESH_DISABLED));
- refreshAction.setHoverImageDescriptor(plugin.getImageDescriptor(ICVSUIConstants.IMG_REFRESH));
-
- // Link with Editor (toolbar)
- linkWithEditorAction = new Action(Policy.bind("HistoryView.linkWithLabel"), plugin.getImageDescriptor(ICVSUIConstants.IMG_LINK_WITH_EDITOR_ENABLED)) { //$NON-NLS-1$
- public void run() {
- setLinkingEnabled(isChecked());
- }
- };
- linkWithEditorAction.setToolTipText(Policy.bind("HistoryView.linkWithLabel")); //$NON-NLS-1$
- linkWithEditorAction.setHoverImageDescriptor(plugin.getImageDescriptor(ICVSUIConstants.IMG_LINK_WITH_EDITOR));
- linkWithEditorAction.setChecked(isLinkingEnabled());
-
- // Double click open action
- openAction = new OpenLogEntryAction();
- tableViewer.getTable().addListener(SWT.DefaultSelection, new Listener() {
- public void handleEvent(Event e) {
- openAction.selectionChanged(null, tableViewer.getSelection());
- openAction.run(null);
- }
- });
-
- getContentsAction = getContextMenuAction(Policy.bind("HistoryView.getContentsAction"), true /* needs progress */, new IWorkspaceRunnable() { //$NON-NLS-1$
- public void run(IProgressMonitor monitor) throws CoreException {
- ICVSRemoteFile remoteFile = currentSelection.getRemoteFile();
- monitor.beginTask(null, 100);
- try {
- if(confirmOverwrite()) {
- InputStream in = remoteFile.getContents(new SubProgressMonitor(monitor, 50));
- file.setContents(in, false, true, new SubProgressMonitor(monitor, 50));
- }
- } catch (TeamException e) {
- throw new CoreException(e.getStatus());
- } finally {
- monitor.done();
- }
- }
- });
- WorkbenchHelp.setHelp(getContentsAction, IHelpContextIds.GET_FILE_CONTENTS_ACTION);
-
- getRevisionAction = getContextMenuAction(Policy.bind("HistoryView.getRevisionAction"), true /* needs progress */, new IWorkspaceRunnable() { //$NON-NLS-1$
- public void run(IProgressMonitor monitor) throws CoreException {
- ICVSRemoteFile remoteFile = currentSelection.getRemoteFile();
- try {
- if(confirmOverwrite()) {
- CVSTag revisionTag = new CVSTag(remoteFile.getRevision(), CVSTag.VERSION);
-
- if(CVSAction.checkForMixingTags(getSite().getShell(), new IResource[] {file}, revisionTag)) {
- new UpdateOperation(
- null,
- new IResource[] {file},
- new Command.LocalOption[] {Update.IGNORE_LOCAL_CHANGES},
- revisionTag)
- .run(monitor);
- historyTableProvider.setFile(remoteFile);
- Display.getDefault().asyncExec(new Runnable() {
- public void run() {
- tableViewer.refresh();
- }
- });
- }
- }
- } catch (InvocationTargetException e) {
- CVSException.wrapException(e);
- } catch (InterruptedException e) {
- // Cancelled by user
- }
- }
- });
- WorkbenchHelp.setHelp(getRevisionAction, IHelpContextIds.GET_FILE_REVISION_ACTION);
-
- // Override MoveRemoteTagAction to work for log entries
- final IActionDelegate tagActionDelegate = new MoveRemoteTagAction() {
- protected ICVSResource[] getSelectedCVSResources() {
- ICVSResource[] resources = super.getSelectedCVSResources();
- if (resources == null || resources.length == 0) {
- ArrayList logEntrieFiles = null;
- if (!selection.isEmpty()) {
- logEntrieFiles = new ArrayList();
- Iterator elements = selection.iterator();
- while (elements.hasNext()) {
- Object next = elements.next();
- if (next instanceof ILogEntry) {
- logEntrieFiles.add(((ILogEntry)next).getRemoteFile());
- continue;
- }
- if (next instanceof IAdaptable) {
- IAdaptable a = (IAdaptable) next;
- Object adapter = a.getAdapter(ICVSResource.class);
- if (adapter instanceof ICVSResource) {
- logEntrieFiles.add(((ILogEntry)adapter).getRemoteFile());
- continue;
- }
- }
- }
- }
- if (logEntrieFiles != null && !logEntrieFiles.isEmpty()) {
- return (ICVSResource[])logEntrieFiles.toArray(new ICVSResource[logEntrieFiles.size()]);
- }
- }
- return resources;
- }
- };
- tagWithExistingAction = getContextMenuAction(Policy.bind("HistoryView.tagWithExistingAction"), false /* no progress */, new IWorkspaceRunnable() { //$NON-NLS-1$
- public void run(IProgressMonitor monitor) throws CoreException {
- tagActionDelegate.selectionChanged(tagWithExistingAction, tableViewer.getSelection());
- tagActionDelegate.run(tagWithExistingAction);
- Display.getDefault().asyncExec(new Runnable() {
- public void run() {
- if( ! ((MoveRemoteTagAction)tagActionDelegate).wasCancelled()) {
- refresh();
- }
- }
- });
- }
- });
- WorkbenchHelp.setHelp(getRevisionAction, IHelpContextIds.TAG_WITH_EXISTING_ACTION);
-
- // Toggle text visible action
- final IPreferenceStore store = CVSUIPlugin.getPlugin().getPreferenceStore();
- toggleTextAction = new Action(Policy.bind("HistoryView.showComment")) { //$NON-NLS-1$
- public void run() {
- setViewerVisibility();
- store.setValue(ICVSUIConstants.PREF_SHOW_COMMENTS, toggleTextAction.isChecked());
- }
- };
- toggleTextAction.setChecked(store.getBoolean(ICVSUIConstants.PREF_SHOW_COMMENTS));
- WorkbenchHelp.setHelp(toggleTextAction, IHelpContextIds.SHOW_COMMENT_IN_HISTORY_ACTION);
- // Toggle list visible action
- toggleListAction = new Action(Policy.bind("HistoryView.showTags")) { //$NON-NLS-1$
- public void run() {
- setViewerVisibility();
- store.setValue(ICVSUIConstants.PREF_SHOW_TAGS, toggleListAction.isChecked());
- }
- };
- toggleListAction.setChecked(store.getBoolean(ICVSUIConstants.PREF_SHOW_TAGS));
- WorkbenchHelp.setHelp(toggleListAction, IHelpContextIds.SHOW_TAGS_IN_HISTORY_ACTION);
-
- // Contribute actions to popup menu
- MenuManager menuMgr = new MenuManager();
- Menu menu = menuMgr.createContextMenu(tableViewer.getTable());
- menuMgr.addMenuListener(new IMenuListener() {
- public void menuAboutToShow(IMenuManager menuMgr) {
- fillTableMenu(menuMgr);
- }
- });
- menuMgr.setRemoveAllWhenShown(true);
- tableViewer.getTable().setMenu(menu);
- getSite().registerContextMenu(menuMgr, tableViewer);
-
- // Contribute toggle text visible to the toolbar drop-down
- IActionBars actionBars = getViewSite().getActionBars();
- IMenuManager actionBarsMenu = actionBars.getMenuManager();
- actionBarsMenu.add(toggleTextAction);
- actionBarsMenu.add(toggleListAction);
-
- // Create the local tool bar
- IToolBarManager tbm = getViewSite().getActionBars().getToolBarManager();
- tbm.add(refreshAction);
- tbm.add(linkWithEditorAction);
- tbm.update(false);
-
- // Create actions for the text editor
- copyAction = new TextViewerAction(textViewer, ITextOperationTarget.COPY);
- copyAction.setText(Policy.bind("HistoryView.copy")); //$NON-NLS-1$
- actionBars.setGlobalActionHandler(ITextEditorActionConstants.COPY, copyAction);
-
- selectAllAction = new TextViewerAction(textViewer, ITextOperationTarget.SELECT_ALL);
- selectAllAction.setText(Policy.bind("HistoryView.selectAll")); //$NON-NLS-1$
- actionBars.setGlobalActionHandler(ITextEditorActionConstants.SELECT_ALL, selectAllAction);
-
- actionBars.updateActionBars();
-
- menuMgr = new MenuManager();
- menuMgr.setRemoveAllWhenShown(true);
- menuMgr.addMenuListener(new IMenuListener() {
- public void menuAboutToShow(IMenuManager menuMgr) {
- fillTextMenu(menuMgr);
- }
- });
- StyledText text = textViewer.getTextWidget();
- menu = menuMgr.createContextMenu(text);
- text.setMenu(menu);
- }
- private void setViewerVisibility() {
- boolean showText = toggleTextAction.isChecked();
- boolean showList = toggleListAction.isChecked();
- if (showText && showList) {
- sashForm.setMaximizedControl(null);
- innerSashForm.setMaximizedControl(null);
- } else if (showText) {
- sashForm.setMaximizedControl(null);
- innerSashForm.setMaximizedControl(textViewer.getTextWidget());
- } else if (showList) {
- sashForm.setMaximizedControl(null);
- innerSashForm.setMaximizedControl(tagViewer.getTable());
- } else {
- sashForm.setMaximizedControl(tableViewer.getControl());
- }
- }
- /*
- * Method declared on IWorkbenchPart
- */
- public void createPartControl(Composite parent) {
- settings = CVSUIPlugin.getPlugin().getPreferenceStore();
- this.linkingEnabled = settings.getBoolean(ICVSUIConstants.PREF_HISTORY_VIEW_EDITOR_LINKING);
-
- initializeImages();
-
- sashForm = new SashForm(parent, SWT.VERTICAL);
- sashForm.setLayoutData(new GridData(GridData.FILL_BOTH));
-
- tableViewer = createTable(sashForm);
- innerSashForm = new SashForm(sashForm, SWT.HORIZONTAL);
- tagViewer = createTagTable(innerSashForm);
- textViewer = createText(innerSashForm);
- sashForm.setWeights(new int[] { 70, 30 });
- innerSashForm.setWeights(new int[] { 50, 50 });
-
- contributeActions();
-
- setViewerVisibility();
-
- // set F1 help
- WorkbenchHelp.setHelp(sashForm, IHelpContextIds.RESOURCE_HISTORY_VIEW);
- initDragAndDrop();
-
- // add listener for editor page activation - this is to support editor linking
- getSite().getPage().addPartListener(partListener);
- getSite().getPage().addPartListener(partListener2);
- }
- private void initializeImages() {
- CVSUIPlugin plugin = CVSUIPlugin.getPlugin();
- versionImage = plugin.getImageDescriptor(ICVSUIConstants.IMG_PROJECT_VERSION).createImage();
- branchImage = plugin.getImageDescriptor(ICVSUIConstants.IMG_TAG).createImage();
- }
- /**
- * Creates the group that displays lists of the available repositories
- * and team streams.
- *
- * @param the parent composite to contain the group
- * @return the group control
- */
- protected TableViewer createTable(Composite parent) {
-
- historyTableProvider = new HistoryTableProvider();
- TableViewer viewer = historyTableProvider.createTable(parent);
-
- viewer.setContentProvider(new IStructuredContentProvider() {
- public Object[] getElements(Object inputElement) {
- // Short-circuit to optimize
- if (entries != null) return entries;
-
- if (!(inputElement instanceof ICVSRemoteFile)) return null;
- final ICVSRemoteFile remoteFile = (ICVSRemoteFile)inputElement;
- if(fetchLogEntriesJob == null) {
- fetchLogEntriesJob = new FetchLogEntriesJob();
- }
- if(fetchLogEntriesJob.getState() != Job.NONE) {
- fetchLogEntriesJob.cancel();
- try {
- fetchLogEntriesJob.join();
- } catch (InterruptedException e) {
- CVSUIPlugin.log(new CVSException(Policy.bind("HistoryView.errorFetchingEntries", remoteFile.getName()), e)); //$NON-NLS-1$
- }
- }
- fetchLogEntriesJob.setRemoteFile(remoteFile);
- Utils.schedule(fetchLogEntriesJob, getViewSite());
- return new Object[0];
- }
- public void dispose() {
- }
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
- entries = null;
- }
- });
-
- viewer.addSelectionChangedListener(new ISelectionChangedListener() {
- public void selectionChanged(SelectionChangedEvent event) {
- ISelection selection = event.getSelection();
- if (selection == null || !(selection instanceof IStructuredSelection)) {
- textViewer.setDocument(new Document("")); //$NON-NLS-1$
- tagViewer.setInput(null);
- return;
- }
- IStructuredSelection ss = (IStructuredSelection)selection;
- if (ss.size() != 1) {
- textViewer.setDocument(new Document("")); //$NON-NLS-1$
- tagViewer.setInput(null);
- return;
- }
- ILogEntry entry = (ILogEntry)ss.getFirstElement();
- textViewer.setDocument(new Document(entry.getComment()));
- tagViewer.setInput(entry.getTags());
- }
- });
-
- return viewer;
- }
-
- private TableViewer createTagTable(Composite parent) {
- Table table = new Table(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER);
- TableViewer result = new TableViewer(table);
- TableLayout layout = new TableLayout();
- layout.addColumnData(new ColumnWeightData(100));
- table.setLayout(layout);
- result.setContentProvider(new SimpleContentProvider() {
- public Object[] getElements(Object inputElement) {
- if (inputElement == null) return new Object[0];
- CVSTag[] tags = (CVSTag[])inputElement;
- return tags;
- }
- });
- result.setLabelProvider(new LabelProvider() {
- public Image getImage(Object element) {
- if (element == null) return null;
- CVSTag tag = (CVSTag)element;
- switch (tag.getType()) {
- case CVSTag.BRANCH:
- case CVSTag.HEAD:
- return branchImage;
- case CVSTag.VERSION:
- return versionImage;
- }
- return null;
- }
- public String getText(Object element) {
- return ((CVSTag)element).getName();
- }
- });
- result.setSorter(new ViewerSorter() {
- public int compare(Viewer viewer, Object e1, Object e2) {
- if (!(e1 instanceof CVSTag) || !(e2 instanceof CVSTag)) return super.compare(viewer, e1, e2);
- CVSTag tag1 = (CVSTag)e1;
- CVSTag tag2 = (CVSTag)e2;
- int type1 = tag1.getType();
- int type2 = tag2.getType();
- if (type1 != type2) {
- return type2 - type1;
- }
- return super.compare(viewer, tag1, tag2);
- }
- });
- return result;
- }
- protected TextViewer createText(Composite parent) {
- TextViewer result = new TextViewer(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.MULTI | SWT.BORDER | SWT.READ_ONLY);
- result.addSelectionChangedListener(new ISelectionChangedListener() {
- public void selectionChanged(SelectionChangedEvent event) {
- copyAction.update();
- }
- });
- return result;
- }
- public void dispose() {
- shutdown = true;
- if (branchImage != null) {
- branchImage.dispose();
- branchImage = null;
- }
- if (versionImage != null) {
- versionImage.dispose();
- versionImage = null;
- }
-
- if(fetchLogEntriesJob != null) {
- if(fetchLogEntriesJob.getState() != Job.NONE) {
- fetchLogEntriesJob.cancel();
- try {
- fetchLogEntriesJob.join();
- } catch (InterruptedException e) {
- CVSUIPlugin.log(new CVSException(Policy.bind("HistoryView.errorFetchingEntries", ""), e)); //$NON-NLS-1$ //$NON-NLS-2$
- }
- }
- }
- getSite().getPage().removePartListener(partListener);
- getSite().getPage().removePartListener(partListener2);
- }
- /**
- * Returns the table viewer contained in this view.
- */
- protected TableViewer getViewer() {
- return tableViewer;
- }
- /**
- * Adds drag and drop support to the history view.
- */
- void initDragAndDrop() {
- int ops = DND.DROP_MOVE | DND.DROP_COPY | DND.DROP_LINK;
- Transfer[] transfers = new Transfer[] {ResourceTransfer.getInstance()};
- tableViewer.addDropSupport(ops, transfers, new HistoryDropAdapter(tableViewer, this));
- }
- private void fillTableMenu(IMenuManager manager) {
- // file actions go first (view file)
- manager.add(new Separator(IWorkbenchActionConstants.GROUP_FILE));
- if (file != null) {
- // Add the "Add to Workspace" action if 1 revision is selected.
- ISelection sel = tableViewer.getSelection();
- if (!sel.isEmpty()) {
- if (sel instanceof IStructuredSelection) {
- if (((IStructuredSelection)sel).size() == 1) {
- manager.add(getContentsAction);
- manager.add(getRevisionAction);
- manager.add(new Separator());
- manager.add(tagWithExistingAction);
- }
- }
- }
- }
- manager.add(new Separator("additions")); //$NON-NLS-1$
- manager.add(refreshAction);
- manager.add(new Separator("additions-end")); //$NON-NLS-1$
- }
- private void fillTextMenu(IMenuManager manager) {
- manager.add(copyAction);
- manager.add(selectAllAction);
- }
- /**
- * Makes the history view visible in the active perspective. If there
- * isn't a history view registered IResource
s that returns
- * only children of the given resource type.
- */
- public ITreeContentProvider getTreeContentProvider() {
- return new WorkbenchContentProvider() {
- public Object[] getChildren(Object o) {
- if (o instanceof IContainer) {
- return getChildenFor((IContainer) o);
- } else {
- return super.getChildren(o);
- }
- }
- };
- }
-
- public void setResources(IResource[] resources) {
- this.resources = resources;
- }
- /**
- * Returns the root.
- * @return IContainer
- */
- public IContainer getRoot() {
- return root;
- }
-
- /**
- * Sets the root.
- * @param root The root to set
- */
- public void setRoot(IContainer root) {
- this.root = root;
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/AdaptableResourceList.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/AdaptableResourceList.java
deleted file mode 100644
index d8179f457..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/AdaptableResourceList.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-
-/**
- * This class acts as a resource list that can be used in table widgets.
- */
-public class AdaptableResourceList implements IAdaptable, IWorkbenchAdapter {
-
- IResource[] resources;
-
- public AdaptableResourceList(IResource[] resources) {
- this.resources = resources;
- }
-
- /**
- * @see org.eclipse.core.runtime.IAdaptable#getAdapter(Class)
- */
- public Object getAdapter(Class adapter) {
- if (adapter == IWorkbenchAdapter.class) return this;
- return null;
- }
-
- /**
- * @see org.eclipse.ui.model.IWorkbenchAdapter#getChildren(Object)
- */
- public Object[] getChildren(Object o) {
- return resources;
- }
- /**
- * @see org.eclipse.ui.model.IWorkbenchAdapter#getImageDescriptor(java.lang.Object)
- */
- public ImageDescriptor getImageDescriptor(Object object) {
- return null;
- }
- /**
- * @see org.eclipse.ui.model.IWorkbenchAdapter#getLabel(java.lang.Object)
- */
- public String getLabel(Object o) {
- return o == null ? "" : o.toString();//$NON-NLS-1$
- }
- /**
- * @see org.eclipse.ui.model.IWorkbenchAdapter#getParent(java.lang.Object)
- */
- public Object getParent(Object o) {
- return null;
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/AddToVersionControlDialog.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/AddToVersionControlDialog.java
deleted file mode 100644
index a6d7d48d3..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/AddToVersionControlDialog.java
+++ /dev/null
@@ -1,218 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui;
-
-import java.util.Arrays;
-import java.util.List;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.viewers.CheckboxTableViewer;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.internal.ui.dialogs.DetailsDialog;
-import org.eclipse.ui.help.WorkbenchHelp;
-import org.eclipse.ui.model.WorkbenchContentProvider;
-import org.eclipse.ui.model.WorkbenchLabelProvider;
-
-/**
- * This dialog allows the user to add a set of resources to version control.
- * They can either all be added or the user can choose which to add from a
- * details list.
- */
-public class AddToVersionControlDialog extends DetailsDialog {
-
- private static final int WIDTH_HINT = 350;
- private final static int SELECTION_HEIGHT_HINT = 100;
-
- private IResource[] unaddedResources;
- private Object[] resourcesToAdd;
-
- private CheckboxTableViewer listViewer;
- /**
- * Constructor for AddToVersionControlDialog.
- * @param parentShell
- */
- public AddToVersionControlDialog(Shell parentShell, IResource[] unaddedResources) {
- super(parentShell, Policy.bind("AddToVersionControlDialog.title")); //$NON-NLS-1$
- this.unaddedResources = unaddedResources;
- }
-
- /**
- * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
- */
- protected void createMainDialogArea(Composite parent) {
- Composite composite = new Composite(parent, SWT.NULL);
- composite.setLayout(new GridLayout());
- composite.setLayoutData(new GridData(GridData.FILL_BOTH));
-
- // set F1 help
- WorkbenchHelp.setHelp(composite, IHelpContextIds.ADD_TO_VERSION_CONTROL_DIALOG);
-
- // add a description label
- if (unaddedResources.length==1) {
- createWrappingLabel(composite, Policy.bind("AddToVersionControlDialog.thereIsAnUnaddedResource", new Integer(unaddedResources.length).toString())); //$NON-NLS-1$
- } else {
- createWrappingLabel(composite, Policy.bind("AddToVersionControlDialog.thereAreUnaddedResources", new Integer(unaddedResources.length).toString())); //$NON-NLS-1$
- }
- }
-
- /**
- * @see org.eclipse.team.internal.ui.DetailsDialog#createDropDownDialogArea(org.eclipse.swt.widgets.Composite)
- */
- protected Composite createDropDownDialogArea(Composite parent) {
- // create a composite with standard margins and spacing
- Composite composite = new Composite(parent, SWT.NONE);
- GridLayout layout = new GridLayout();
- layout.marginHeight = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);
- layout.marginWidth = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
- layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
- layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
- composite.setLayout(layout);
- composite.setLayoutData(new GridData(GridData.FILL_BOTH));
-
- addUnaddedResourcesArea(composite);
-
- // set F1 help
- WorkbenchHelp.setHelp(composite, IHelpContextIds.ADD_TO_VERSION_CONTROL_DIALOG);
-
- return composite;
- }
-
- private void addUnaddedResourcesArea(Composite composite) {
-
- // add a description label
- createWrappingLabel(composite, Policy.bind("ReleaseCommentDialog.unaddedResources")); //$NON-NLS-1$
-
- // add the selectable checkbox list
- listViewer = CheckboxTableViewer.newCheckList(composite, SWT.BORDER);
- GridData data = new GridData(GridData.FILL_BOTH);
- data.heightHint = SELECTION_HEIGHT_HINT;
- data.widthHint = WIDTH_HINT;
- listViewer.getTable().setLayoutData(data);
-
- // set the contents of the list
- listViewer.setLabelProvider(new WorkbenchLabelProvider() {
- protected String decorateText(String input, Object element) {
- if (element instanceof IResource)
- return ((IResource)element).getFullPath().toString();
- else
- return input;
- }
- });
- listViewer.setContentProvider(new WorkbenchContentProvider());
- listViewer.setInput(new AdaptableResourceList(unaddedResources));
- if (resourcesToAdd == null) {
- listViewer.setAllChecked(true);
- } else {
- listViewer.setCheckedElements(resourcesToAdd);
- }
- listViewer.addSelectionChangedListener(new ISelectionChangedListener() {
- public void selectionChanged(SelectionChangedEvent event) {
- resourcesToAdd = listViewer.getCheckedElements();
- }
- });
-
- addSelectionButtons(composite);
- }
-
- /**
- * Add the selection and deselection buttons to the dialog.
- * @param composite org.eclipse.swt.widgets.Composite
- */
- private void addSelectionButtons(Composite composite) {
-
- Composite buttonComposite = new Composite(composite, SWT.RIGHT);
- GridLayout layout = new GridLayout();
- layout.numColumns = 2;
- buttonComposite.setLayout(layout);
- GridData data =
- new GridData(GridData.HORIZONTAL_ALIGN_END | GridData.GRAB_HORIZONTAL);
- data.grabExcessHorizontalSpace = true;
- composite.setData(data);
-
- Button selectButton = createButton(buttonComposite, IDialogConstants.SELECT_ALL_ID, Policy.bind("ReleaseCommentDialog.selectAll"), false); //$NON-NLS-1$
- SelectionListener listener = new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- listViewer.setAllChecked(true);
- resourcesToAdd = null;
- }
- };
- selectButton.addSelectionListener(listener);
-
- Button deselectButton = createButton(buttonComposite, IDialogConstants.DESELECT_ALL_ID, Policy.bind("ReleaseCommentDialog.deselectAll"), false); //$NON-NLS-1$
- listener = new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- listViewer.setAllChecked(false);
- resourcesToAdd = new Object[0];
-
- }
- };
- deselectButton.addSelectionListener(listener);
- }
-
- /**
- * @see org.eclipse.team.internal.ui.DetailsDialog#updateEnablements()
- */
- protected void updateEnablements() {
- }
-
- /**
- * Returns the resourcesToAdd.
- * @return IResource[]
- */
- public IResource[] getResourcesToAdd() {
- if (resourcesToAdd == null) {
- return unaddedResources;
- } else {
- List result = Arrays.asList(resourcesToAdd);
- return (IResource[]) result.toArray(new IResource[result.size()]);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.dialogs.Dialog#createButtonsForButtonBar(org.eclipse.swt.widgets.Composite)
- */
- protected void createButtonsForButtonBar(Composite parent) {
- createButton(parent, IDialogConstants.YES_ID, IDialogConstants.YES_LABEL, true);
- createButton(parent, IDialogConstants.NO_ID, IDialogConstants.NO_LABEL, true);
- super.createButtonsForButtonBar(parent);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ui.DetailsDialog#includeOkButton()
- */
- protected boolean includeOkButton() {
- return false;
- }
- /* (non-Javadoc)
- * @see org.eclipse.jface.dialogs.Dialog#buttonPressed(int)
- */
- protected void buttonPressed(int id) {
- // hijack yes and no buttons to set the correct return
- // codes.
- if(id == IDialogConstants.YES_ID || id == IDialogConstants.NO_ID) {
- setReturnCode(id);
- close();
- } else {
- super.buttonPressed(id);
- }
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/AlternateUserValidationDialog.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/AlternateUserValidationDialog.java
deleted file mode 100644
index 3aa447ee1..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/AlternateUserValidationDialog.java
+++ /dev/null
@@ -1,235 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.VerifyEvent;
-import org.eclipse.swt.events.VerifyListener;
-import org.eclipse.swt.graphics.FontData;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-
-public class AlternateUserValidationDialog extends Dialog {
- String user;
- String password = ""; //$NON-NLS-1$
- List numXs = new ArrayList();
- Label icon1;
- Label icon2;
- Label icon3;
- Label icon4;
- Text passwordText;
- boolean inUpdate = false;
-
- Image[] images;
-
- public AlternateUserValidationDialog(Shell parentShell, String user) {
- super(parentShell);
- this.user = user;
- initializeImages();
- }
-
- protected void configureShell(Shell newShell) {
- super.configureShell(newShell);
- newShell.setText(Policy.bind("AlternateUserValidationDialog.Enter_Password_2")); //$NON-NLS-1$
- }
-
- protected Control createContents(Composite parent) {
- Composite main = new Composite(parent, SWT.NONE);
- GridLayout layout = new GridLayout();
- layout.numColumns = 3;
- main.setLayout(layout);
- main.setLayoutData(new GridData(GridData.FILL_BOTH));
-
- Composite iconComposite = new Composite(main, SWT.NONE);
- layout = new GridLayout();
- layout.numColumns = 2;
- iconComposite.setLayout(layout);
- iconComposite.setLayoutData(new GridData());
-
- icon1 = createLabel(iconComposite);
- icon2 = createLabel(iconComposite);
- icon3 = createLabel(iconComposite);
- icon4 = createLabel(iconComposite);
-
- Composite middleComposite = new Composite(main, SWT.NONE);
- middleComposite.setLayout(new GridLayout());
- middleComposite.setLayoutData(new GridData());
-
- Label l = new Label(middleComposite, SWT.NULL);
- l.setText(Policy.bind("AlternateUserValidationDialog.message", user)); //$NON-NLS-1$
- l.setLayoutData(new GridData());
- l = new Label(middleComposite, SWT.NULL);
- l.setText(""); //$NON-NLS-1$
- l.setLayoutData(new GridData());
- passwordText = new Text(middleComposite, SWT.SINGLE | SWT.BORDER);
- GridData data = new GridData();
- data.widthHint = 250;
- passwordText.setLayoutData(data);
-
- passwordText.addVerifyListener(new VerifyListener() {
- public void verifyText(VerifyEvent e) {
- if (inUpdate) return;
- e.doit = false;
- inUpdate = true;
- switch (e.character) {
- case 8: {
- // backspace pressed
- if (password.length() > 0) {
- password = password.substring(0, password.length() - 1);
- }
- // get rid of bogus Xs
- int numX = ((Integer)numXs.get(numXs.size() - 1)).intValue();
- numXs.remove(numXs.size() - 1);
- String oldText = passwordText.getText();
- String newText = oldText.substring(0, oldText.length() - numX);
- passwordText.setText(newText);
- passwordText.setSelection(newText.length());
- break;
- }
- default: {
- String oldText = passwordText.getText();
- String x = getXs();
- numXs.add(numXs.size(), new Integer(x.length()));
- String newText = oldText + x;
- passwordText.setText(newText);
- passwordText.setSelection(newText.length());
- password += e.character;
- }
- }
- inUpdate = false;
- updateImages();
- }
- });
- /*passwordText.addTraverseListener(new TraverseListener() {
- public void keyTraversed(TraverseEvent e) {
- switch (e.detail) {
- case SWT.TRAVERSE_ARROW_NEXT:
- case SWT.TRAVERSE_ARROW_PREVIOUS:
- e.detail = SWT.TRAVERSE_NONE;
- e.doit = false;
- break;
- }
- }
- });*/
- Composite buttonComposite = new Composite(main, SWT.NONE);
- buttonComposite.setLayout(new GridLayout());
- buttonComposite.setLayoutData(new GridData());
- Button b = new Button(buttonComposite, SWT.PUSH);
- b.setText(Policy.bind("AlternateUserValidationDialog.OK_6")); //$NON-NLS-1$
- data = new GridData();
- data.widthHint = 70;
- b.setLayoutData(data);
- b.addListener(SWT.Selection, new Listener() {
- public void handleEvent(Event event) {
- okPressed();
- }
- });
- buttonComposite.getShell().setDefaultButton(b);
- b = new Button(buttonComposite, SWT.PUSH);
- b.setText(Policy.bind("AlternateUserValidationDialog.Cancel_7")); //$NON-NLS-1$
- data = new GridData();
- data.widthHint = 70;
- b.setLayoutData(data);
- b.addListener(SWT.Selection, new Listener() {
- public void handleEvent(Event event) {
- cancelPressed();
- }
- });
- Dialog.applyDialogFont(parent);
- return main;
- }
-
- public boolean close() {
- boolean result = super.close();
- if (images != null) {
- for (int i = 0; i < images.length; i++) {
- images[i].dispose();
- images[i] = null;
- }
- images = null;
- }
- return result;
- }
- public String getPassword() {
- return password;
- }
-
- Label createLabel(Composite parent) {
- Label result = new Label(parent, SWT.NULL);
- GridData data = new GridData();
- data.widthHint = 22;
- data.heightHint = 22;
- result.setLayoutData(data);
- result.setImage(getImage());
- return result;
- }
- Image getImage() {
- double random = Math.random();
- random *= 7; // Random number between 0.0 and 7.0
- long num = Math.round(random);
- return images[(int)num];
- }
- void initializeImages() {
- images = new Image[8];
- for (int i = 0; i < images.length; i++) {
- images[i] = CVSUIPlugin.getPlugin().getImageDescriptor("glyphs/glyph" + (i+1) + ".gif").createImage(); //$NON-NLS-1$ //$NON-NLS-2$
- }
- FontData fd = new FontData();
- fd.setStyle(SWT.BOLD);
- fd.setHeight(10);
- // On Windows, set the font to Sans Serif for an authentic look
- if (System.getProperty("os.name").indexOf("Windows") != -1) { //$NON-NLS-1$ //$NON-NLS-2$
- fd.setName("Microsoft Sans Serif"); //$NON-NLS-1$
- }
- }
- void updateImages() {
- icon1.setImage(getImage());
- icon2.setImage(getImage());
- icon3.setImage(getImage());
- icon4.setImage(getImage());
- }
- public void setUsername(String user) {
- this.user = user;
- }
- String getXs() {
- double random = Math.random();
- random *= 2;
- random += 2;
- long num = Math.round(random);
- // Random number between 2 and 4
- switch ((int)num) {
- case 2:
- return "XX"; //$NON-NLS-1$
- case 3:
- return "XXX"; //$NON-NLS-1$
- case 4:
- return "XXXX"; //$NON-NLS-1$
- }
- return "X"; //$NON-NLS-1$
- }
- protected void cancelPressed() {
- password = null;
- super.cancelPressed();
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/AnnotateView.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/AnnotateView.java
deleted file mode 100644
index bbc7c2280..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/AnnotateView.java
+++ /dev/null
@@ -1,396 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Collection;
-import java.util.Iterator;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.ITextSelection;
-import org.eclipse.jface.viewers.ArrayContentProvider;
-import org.eclipse.jface.viewers.IPostSelectionProvider;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.ListViewer;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.team.internal.ccvs.core.CVSAnnotateBlock;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-import org.eclipse.team.internal.ccvs.core.ICVSRemoteFile;
-import org.eclipse.team.internal.ccvs.core.ICVSResource;
-import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot;
-import org.eclipse.ui.IEditorDescriptor;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IEditorRegistry;
-import org.eclipse.ui.IPartListener;
-import org.eclipse.ui.IReusableEditor;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.help.WorkbenchHelp;
-import org.eclipse.ui.internal.ide.IDEWorkbenchPlugin;
-import org.eclipse.ui.internal.registry.EditorDescriptor;
-import org.eclipse.ui.part.ViewPart;
-import org.eclipse.ui.texteditor.IDocumentProvider;
-import org.eclipse.ui.texteditor.ITextEditor;
-
-/**
- * A view showing the results of the CVS Annotate Command. A linked
- * combination of a View of annotations, a source editor and the
- * Resource History View
- */
-public class AnnotateView extends ViewPart implements ISelectionChangedListener {
-
- ITextEditor editor;
- HistoryView historyView;
- IWorkbenchPage page;
-
- ListViewer viewer;
- IDocument document;
- Collection cvsAnnotateBlocks;
- ICVSResource cvsResource;
- InputStream contents;
-
- IStructuredSelection previousListSelection;
- ITextSelection previousTextSelection;
- boolean lastSelectionWasText = false;
-
-
- public static final String VIEW_ID = "org.eclipse.team.ccvs.ui.AnnotateView"; //$NON-NLS-1$
- private Composite top;
-
- private IPartListener partListener = new IPartListener() {
- public void partActivated(IWorkbenchPart part) {
- }
- public void partBroughtToTop(IWorkbenchPart part) {
- }
- public void partClosed(IWorkbenchPart part) {
- if (editor != null && part == editor) {
- disconnect();
- }
- }
- public void partDeactivated(IWorkbenchPart part) {
- }
- public void partOpened(IWorkbenchPart part) {
- }
- };
-
- public AnnotateView() {
- super();
- }
-
- public void createPartControl(Composite parent) {
-
- this.top = parent;
-
- // Create default contents
- Label label = new Label(top, SWT.WRAP);
- label.setText(Policy.bind("CVSAnnotateView.viewInstructions")); //$NON-NLS-1$
- label.setLayoutData(new GridData(GridData.FILL_BOTH));
- top.layout();
- }
-
- /**
- * Show the annotation view.
- * @param cvsResource
- * @param cvsAnnotateBlocks
- * @param contents
- * @throws PartInitException, CVSException
- */
- public void showAnnotations(ICVSResource cvsResource, Collection cvsAnnotateBlocks, InputStream contents) throws PartInitException, CVSException {
- showAnnotations(cvsResource, cvsAnnotateBlocks, contents, true);
- }
-
- /**
- * Show the annotation view.
- * @param cvsResource
- * @param cvsAnnotateBlocks
- * @param contents
- * @param useHistoryView
- * @throws PartInitException, CVSException
- */
- public void showAnnotations(ICVSResource cvsResource, Collection cvsAnnotateBlocks, InputStream contents, boolean useHistoryView) throws PartInitException, CVSException {
-
- // Disconnect from old annotation editor
- disconnect();
-
- // Remove old viewer
- Control[] oldChildren = top.getChildren();
- if (oldChildren != null) {
- for (int i = 0; i < oldChildren.length; i++) {
- oldChildren[i].dispose();
- }
- }
-
- viewer = new ListViewer(top, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL);
- viewer.setContentProvider(new ArrayContentProvider());
- viewer.setLabelProvider(new LabelProvider());
- viewer.addSelectionChangedListener(this);
- viewer.getControl().setLayoutData(new GridData(GridData.FILL_BOTH));
-
- WorkbenchHelp.setHelp(viewer.getControl(), IHelpContextIds.ANNOTATE_VIEW);
-
- top.layout();
-
- this.cvsResource = cvsResource;
- this.contents = contents;
- this.cvsAnnotateBlocks = cvsAnnotateBlocks;
- page = CVSUIPlugin.getActivePage();
- viewer.setInput(cvsAnnotateBlocks);
- editor = (ITextEditor) openEditor();
- IDocumentProvider provider = editor.getDocumentProvider();
- document = provider.getDocument(editor.getEditorInput());
-
- setPartName(Policy.bind("CVSAnnotateView.showFileAnnotation", new Object[] {cvsResource.getName()})); //$NON-NLS-1$
- try {
- IResource localResource = cvsResource.getIResource();
- if (localResource != null) {
- setTitleToolTip(localResource.getFullPath().toString());
- } else {
- setTitleToolTip(cvsResource.getName());
- }
- } catch (CVSException e) {
- setTitleToolTip(cvsResource.getName());
- }
-
- if (!useHistoryView) {
- return;
- }
-
- // Get hook to the HistoryView
-
- historyView = (HistoryView) page.showView(HistoryView.VIEW_ID);
- historyView.showHistory((ICVSRemoteFile) CVSWorkspaceRoot.getRemoteResourceFor(cvsResource), false /* don't refetch */);
- }
-
- protected void disconnect() {
- if(editor != null) {
- if (editor.getSelectionProvider() instanceof IPostSelectionProvider) {
- ((IPostSelectionProvider) editor.getSelectionProvider()).removePostSelectionChangedListener(this);
- }
- editor.getSite().getPage().removePartListener(partListener);
- editor = null;
- document = null;
- }
- }
-
- /**
- * Makes the view visible in the active perspective. If there
- * isn't a view registered null
is returned.
- * Otherwise the opened view part is returned.
- */
- public static AnnotateView openInActivePerspective() throws PartInitException {
- return (AnnotateView) CVSUIPlugin.getActivePage().showView(VIEW_ID);
- }
-
- /**
- * Selection changed in either the Annotate List View or the
- * Source editor.
- */
- public void selectionChanged(SelectionChangedEvent event) {
-
- if (event.getSelection() instanceof IStructuredSelection) {
- listSelectionChanged((IStructuredSelection) event.getSelection());
- } else if (event.getSelection() instanceof ITextSelection) {
- textSelectionChanged((ITextSelection) event.getSelection());
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.IWorkbenchPart#dispose()
- */
- public void dispose() {
- disconnect();
- }
-
- /**
- * A selection event in the Annotate Source Editor
- * @param event
- */
- private void textSelectionChanged(ITextSelection selection) {
-
- // Track where the last selection event came from to avoid
- // a selection event loop.
- lastSelectionWasText = true;
-
- // Locate the annotate block containing the selected line number.
- CVSAnnotateBlock match = null;
- for (Iterator iterator = cvsAnnotateBlocks.iterator(); iterator.hasNext();) {
- CVSAnnotateBlock block = (CVSAnnotateBlock) iterator.next();
- if (block.contains(selection.getStartLine())) {
- match = block;
- break;
- }
- }
-
- // Select the annotate block in the List View.
- if (match == null) {
- return;
- }
-
- StructuredSelection listSelection = new StructuredSelection(match);
- viewer.setSelection(listSelection, true);
- }
-
- /**
- * 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(cvsResource, cvsAnnotateBlocks, contents, false);
- } catch (CVSException e) {
- return;
- } 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();
- CVSAnnotateBlock listSelection = (CVSAnnotateBlock) selection.getFirstElement();
-
- /**
- * Ignore event if the current text selection is already equal to the corresponding
- * list selection. Nothing to do. This prevents infinite event looping.
- *
- * 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) {
- historyView.selectRevision(listSelection.getRevision());
- }
- lastSelectionWasText = false;
- }
-
- /**
- * Try and open the correct registered editor type for the file.
- * @throws CVSException, PartInitException
- */
- private IEditorPart openEditor() throws CVSException, PartInitException {
- ICVSRemoteFile file = (ICVSRemoteFile) CVSWorkspaceRoot.getRemoteResourceFor(cvsResource);
-
- // Determine if the registered editor is an ITextEditor.
- // There is currently no support from UI to determine this information. This
- // problem has been logged in: https://bugs.eclipse.org/bugs/show_bug.cgi?id=47362
- // For now, use internal classes.
- String id = getEditorId(file);
- ITextEditor editor = getEditor(id, file);
-
- // Hook Editor post selection listener.
- if (editor.getSelectionProvider() instanceof IPostSelectionProvider) {
- ((IPostSelectionProvider) editor.getSelectionProvider()).addPostSelectionChangedListener(this);
- }
- editor.getSite().getPage().addPartListener(partListener);
- return editor;
- }
-
- private ITextEditor getEditor(String id, ICVSRemoteFile file) throws PartInitException {
- // Either reuse an existing editor or open a new editor of the correct type.
- if (editor != null && editor instanceof IReusableEditor && page.isPartVisible(editor) && editor.getSite().getId().equals(id)) {
- // We can reuse the editor
- ((IReusableEditor) editor).setInput(new RemoteAnnotationEditorInput(file, contents));
- return editor;
- } else {
- // We can not reuse the editor so close the existing one and open a new one.
- if (editor != null) {
- page.closeEditor(editor, false);
- editor = null;
- }
- IEditorPart part = page.openEditor(new RemoteAnnotationEditorInput(file, contents), id);
- if (part instanceof ITextEditor) {
- return (ITextEditor)part;
- } else {
- // We asked for a text editor but didn't get one
- // so open a vanilla text editor
- page.closeEditor(part, false);
- part = page.openEditor(new RemoteAnnotationEditorInput(file, contents), IDEWorkbenchPlugin.DEFAULT_TEXT_EDITOR_ID);
- if (part instanceof ITextEditor) {
- return (ITextEditor)part;
- } else {
- // There is something really wrong so just bail
- throw new PartInitException(Policy.bind("AnnotateView.0")); //$NON-NLS-1$
- }
- }
- }
- }
-
- private String getEditorId(ICVSRemoteFile file) {
- String id;
- IEditorRegistry registry = CVSUIPlugin.getPlugin().getWorkbench().getEditorRegistry();
- IEditorDescriptor descriptor = registry.getDefaultEditor(file.getName());
- if (descriptor == null || !(descriptor instanceof EditorDescriptor) || !(((EditorDescriptor)descriptor).isInternal())) {
- id = IDEWorkbenchPlugin.DEFAULT_TEXT_EDITOR_ID; //$NON-NLS-1$
- } else {
- try {
- Object obj = IDEWorkbenchPlugin.createExtension(((EditorDescriptor) descriptor).getConfigurationElement(), "class"); //$NON-NLS-1$
- if (obj instanceof ITextEditor) {
- id = descriptor.getId();
- } else {
- id = IDEWorkbenchPlugin.DEFAULT_TEXT_EDITOR_ID;
- }
- } catch (CoreException e) {
- id = IDEWorkbenchPlugin.DEFAULT_TEXT_EDITOR_ID;
- }
- }
- return id;
- }
-
- // This method implemented to be an ISelectionChangeListener but we
- // don't really care when the List or Editor get focus.
- public void setFocus() {
- return;
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/AvoidableMessageDialog.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/AvoidableMessageDialog.java
deleted file mode 100644
index 3259f7911..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/AvoidableMessageDialog.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui;
-
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
-
-public class AvoidableMessageDialog extends MessageDialog {
- Button dontShowAgain;
- boolean dontShow;
- boolean showOption;
-
- public AvoidableMessageDialog(Shell shell, String dialogTitle, Image dialogTitleImage, String dialogMessage, int dialogImageType, String[] dialogButtonLabels, int defaultIndex) {
- this(shell, dialogTitle, dialogTitleImage, dialogMessage, dialogImageType, dialogButtonLabels, defaultIndex, true);
- }
-
- public AvoidableMessageDialog(Shell shell, String dialogTitle, Image dialogTitleImage, String dialogMessage, int dialogImageType, String[] dialogButtonLabels, int defaultIndex, boolean showOption) {
- super(shell, dialogTitle, dialogTitleImage, dialogMessage, dialogImageType, dialogButtonLabels, defaultIndex);
- this.showOption = showOption;
- }
-
- protected Control createCustomArea(Composite composite) {
- if ( ! showOption) return null;
- dontShow = false;
- dontShowAgain = new Button(composite, SWT.CHECK);
- GridData data = new GridData();
- data.horizontalIndent = 50;
- dontShowAgain.setLayoutData(data);
- dontShowAgain.setText(Policy.bind("AvoidableMessageDialog.dontShowAgain")); //$NON-NLS-1$
- dontShowAgain.setSelection(dontShow);
- dontShowAgain.addSelectionListener(new SelectionListener() {
- public void widgetSelected(SelectionEvent e) {
- dontShow = dontShowAgain.getSelection();
- }
- public void widgetDefaultSelected(SelectionEvent e) {
- widgetSelected(e);
- }
-
- });
- return dontShowAgain;
- }
-
- public boolean isDontShowAgain() {
- return dontShow;
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSCompareEditorInput.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSCompareEditorInput.java
deleted file mode 100644
index f1a012da7..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSCompareEditorInput.java
+++ /dev/null
@@ -1,457 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui;
-
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.compare.CompareConfiguration;
-import org.eclipse.compare.CompareEditorInput;
-import org.eclipse.compare.ITypedElement;
-import org.eclipse.compare.structuremergeviewer.DiffNode;
-import org.eclipse.compare.structuremergeviewer.Differencer;
-import org.eclipse.compare.structuremergeviewer.IDiffContainer;
-import org.eclipse.compare.structuremergeviewer.IStructureComparator;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.SubProgressMonitor;
-import org.eclipse.jface.viewers.*;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.CVSTag;
-import org.eclipse.team.internal.ccvs.core.ICVSRemoteFile;
-import org.eclipse.team.internal.ccvs.core.ICVSRemoteFolder;
-import org.eclipse.team.internal.ccvs.core.ICVSRemoteResource;
-import org.eclipse.team.internal.ccvs.core.ICVSResource;
-import org.eclipse.team.internal.ccvs.core.syncinfo.ResourceSyncInfo;
-
-/**
- * A compare input for comparing remote resources. Use CVSLocalCompareInput
- * when comparing resources in the workspace to remote resources.
- */
-public class CVSCompareEditorInput extends CompareEditorInput {
- private ITypedElement left;
- private ITypedElement right;
- private ITypedElement ancestor;
- private Image leftImage;
- private Image rightImage;
- private Image ancestorImage;
-
- // comparison constants
- private static final int NODE_EQUAL = 0;
- private static final int NODE_NOT_EQUAL = 1;
- private static final int NODE_UNKNOWN = 2;
-
- String toolTipText;
- private String title;
-
- /**
- * Creates a new CVSCompareEditorInput.
- */
- public CVSCompareEditorInput(ResourceEditionNode left, ResourceEditionNode right) {
- this(left, right, null);
- }
-
- public CVSCompareEditorInput(String title, String toolTip, ResourceEditionNode left, ResourceEditionNode right) {
- this(left, right, null);
- this.title = title;
- this.toolTipText = toolTip;
- }
-
- /**
- * Creates a new CVSCompareEditorInput.
- */
- public CVSCompareEditorInput(ResourceEditionNode left, ResourceEditionNode right, ResourceEditionNode ancestor) {
- super(new CompareConfiguration());
- // TODO: Invokers of this method should ensure that trees and contents are prefetched
- this.left = left;
- this.right = right;
- this.ancestor = ancestor;
- if (left != null) {
- this.leftImage = left.getImage();
- }
- if (right != null) {
- this.rightImage = right.getImage();
- }
- if (ancestor != null) {
- this.ancestorImage = ancestor.getImage();
- }
- }
-
- /**
- * Returns the label for the given input element.
- */
- private String getLabel(ITypedElement element) {
- if (element instanceof ResourceEditionNode) {
- ICVSRemoteResource edition = ((ResourceEditionNode)element).getRemoteResource();
- ICVSResource resource = edition;
- if (edition instanceof ICVSRemoteFile) {
- try {
- return Policy.bind("nameAndRevision", resource.getName(), ((ICVSRemoteFile)edition).getRevision()); //$NON-NLS-1$
- } catch (TeamException e) {
- // fall through
- }
- }
- try {
- if (edition.isContainer()) {
- CVSTag tag = ((ICVSRemoteFolder)edition).getTag();
- if (tag == null) {
- return Policy.bind("CVSCompareEditorInput.inHead", edition.getName()); //$NON-NLS-1$
- } else if (tag.getType() == CVSTag.BRANCH) {
- return Policy.bind("CVSCompareEditorInput.inBranch", new Object[] {edition.getName(), tag.getName()}); //$NON-NLS-1$
- } else {
- return Policy.bind("CVSCompareEditorInput.repository", new Object[] {edition.getName(), tag.getName()}); //$NON-NLS-1$
- }
- } else {
- return Policy.bind("CVSCompareEditorInput.repository", new Object[] {edition.getName(), resource.getSyncInfo().getRevision()}); //$NON-NLS-1$
- }
- } catch (TeamException e) {
- handle(e);
- // Fall through and get the default label
- }
- }
- return element.getName();
- }
-
- /**
- * Returns the label for the given input element.
- */
- private String getVersionLabel(ITypedElement element) {
- if (element instanceof ResourceEditionNode) {
- ICVSRemoteResource edition = ((ResourceEditionNode)element).getRemoteResource();
- ICVSResource resource = edition;
- try {
- if (edition.isContainer()) {
- CVSTag tag = ((ICVSRemoteFolder)resource).getTag();
- if (tag == null) {
- return Policy.bind("CVSCompareEditorInput.headLabel"); //$NON-NLS-1$
- } else if (tag.getType() == CVSTag.BRANCH) {
- return Policy.bind("CVSCompareEditorInput.branchLabel", tag.getName()); //$NON-NLS-1$
- } else {
- return tag.getName();
- }
- } else {
- return resource.getSyncInfo().getRevision();
- }
- } catch (TeamException e) {
- handle(e);
- // Fall through and get the default label
- }
- }
- return element.getName();
- }
-
- /*
- * Returns a guess of the resource name being compared, for display
- * in the title.
- */
- private String guessResourceName() {
- if (left != null) {
- return left.getName();
- }
- if (right != null) {
- return right.getName();
- }
- if (ancestor != null) {
- return ancestor.getName();
- }
- return ""; //$NON-NLS-1$
- }
-
- /*
- * Returns a guess of the resource path being compared, for display
- * in the tooltip.
- */
- private Object guessResourcePath() {
- if (left != null && left instanceof ResourceEditionNode) {
- return ((ResourceEditionNode)left).getRemoteResource().getRepositoryRelativePath();
- }
- if (right != null && right instanceof ResourceEditionNode) {
- return ((ResourceEditionNode)right).getRemoteResource().getRepositoryRelativePath();
- }
- if (ancestor != null && ancestor instanceof ResourceEditionNode) {
- return ((ResourceEditionNode)ancestor).getRemoteResource().getRepositoryRelativePath();
- }
- return guessResourceName();
- }
-
- /**
- * Handles a random exception and sanitizes it into a reasonable
- * error message.
- */
- private void handle(Exception e) {
- // create a status
- Throwable t = e;
- // unwrap the invocation target exception
- if (t instanceof InvocationTargetException) {
- t = ((InvocationTargetException)t).getTargetException();
- }
- IStatus error;
- if (t instanceof CoreException) {
- error = ((CoreException)t).getStatus();
- } else if (t instanceof TeamException) {
- error = ((TeamException)t).getStatus();
- } else {
- error = new Status(IStatus.ERROR, CVSUIPlugin.ID, 1, Policy.bind("internal"), t); //$NON-NLS-1$
- }
- setMessage(error.getMessage());
- if (!(t instanceof TeamException)) {
- CVSUIPlugin.log(error.getSeverity(), error.getMessage(), t);
- }
- }
-
- /**
- * Sets up the title and pane labels for the comparison view.
- */
- private void initLabels() {
- CompareConfiguration cc = getCompareConfiguration();
- setLabels(cc, new StructuredSelection());
-
- if (title == null) {
- if (ancestor != null) {
- title = Policy.bind("CVSCompareEditorInput.titleAncestor", new Object[] {guessResourceName(), getVersionLabel(ancestor), getVersionLabel(left), getVersionLabel(right)} ); //$NON-NLS-1$
- toolTipText = Policy.bind("CVSCompareEditorInput.titleAncestor", new Object[] {guessResourcePath(), getVersionLabel(ancestor), getVersionLabel(left), getVersionLabel(right)} ); //$NON-NLS-1$
- } else {
- String leftName = null;
- if (left != null) leftName = left.getName();
- String rightName = null;
- if (right != null) rightName = right.getName();
- if (leftName != null && !leftName.equals(rightName)) {
- title = Policy.bind("CVSCompareEditorInput.titleNoAncestorDifferent", new Object[] {leftName, getVersionLabel(left), rightName, getVersionLabel(right)} ); //$NON-NLS-1$
- } else {
- title = Policy.bind("CVSCompareEditorInput.titleNoAncestor", new Object[] {guessResourceName(), getVersionLabel(left), getVersionLabel(right)} ); //$NON-NLS-1$
- title = Policy.bind("CVSCompareEditorInput.titleNoAncestor", new Object[] {guessResourcePath(), getVersionLabel(left), getVersionLabel(right)} ); //$NON-NLS-1$
- }
- }
- }
- setTitle(title);
- }
-
- private void setLabels(CompareConfiguration cc, IStructuredSelection selection) {
- ITypedElement left = this.left;
- ITypedElement right = this.right;
- ITypedElement ancestor = this.ancestor;
-
- if (left != null) {
- cc.setLeftLabel(getLabel(left));
- cc.setLeftImage(leftImage);
- }
-
- if (right != null) {
- cc.setRightLabel(getLabel(right));
- cc.setRightImage(rightImage);
- }
-
- if (ancestor != null) {
- cc.setAncestorLabel(getLabel(ancestor));
- cc.setAncestorImage(ancestorImage);
- }
- }
-
- /* (Non-javadoc)
- * Method declared on CompareEditorInput
- */
- public boolean isSaveNeeded() {
- return false;
- }
-
- /* (non-Javadoc)
- * Method declared on CompareEditorInput
- */
- protected Object prepareInput(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- final boolean threeWay = ancestor != null;
- if (right == null || left == null) {
- setMessage(Policy.bind("CVSCompareEditorInput.different")); //$NON-NLS-1$
- return null;
- }
-
- initLabels();
-
- final Differencer d = new Differencer() {
- protected boolean contentsEqual(Object input1, Object input2) {
- int compare = teamEqual(input1, input2);
- if (compare == NODE_EQUAL) {
- return true;
- }
- if (compare == NODE_NOT_EQUAL) {
- return false;
- }
- //revert to slow content comparison
- return super.contentsEqual(input1, input2);
- }
- protected void updateProgress(IProgressMonitor progressMonitor, Object node) {
- if (node instanceof ITypedElement) {
- ITypedElement element = (ITypedElement)node;
- progressMonitor.subTask(Policy.bind("CompareEditorInput.fileProgress", new String[] {element.getName()})); //$NON-NLS-1$
- progressMonitor.worked(1);
- }
- }
- protected Object[] getChildren(Object input) {
- if (input instanceof IStructureComparator) {
- Object[] children= ((IStructureComparator)input).getChildren();
- if (children != null)
- return children;
- }
- return null;
- }
- protected Object visit(Object data, int result, Object ancestor, Object left, Object right) {
- return new DiffNode((IDiffContainer) data, result, (ITypedElement)ancestor, (ITypedElement)left, (ITypedElement)right);
- }
- };
-
- try {
- // do the diff
- Object result = null;
- monitor.beginTask(Policy.bind("CVSCompareEditorInput.comparing"), 30); //$NON-NLS-1$
- IProgressMonitor sub = new SubProgressMonitor(monitor, 30);
- sub.beginTask(Policy.bind("CVSCompareEditorInput.comparing"), 100); //$NON-NLS-1$
- try {
- result = d.findDifferences(threeWay, sub, null, ancestor, left, right);
- } finally {
- sub.done();
- }
- return result;
- } catch (OperationCanceledException e) {
- throw new InterruptedException(e.getMessage());
- } catch (RuntimeException e) {
- handle(e);
- return null;
- } finally {
- monitor.done();
- }
- }
-
- /**
- * Compares two nodes to determine if they are equal. Returns NODE_EQUAL
- * of they are the same, NODE_NOT_EQUAL if they are different, and
- * NODE_UNKNOWN if comparison was not possible.
- */
- protected int teamEqual(Object left, Object right) {
- // calculate the type for the left contribution
- ICVSRemoteResource leftEdition = null;
- if (left instanceof ResourceEditionNode) {
- leftEdition = ((ResourceEditionNode)left).getRemoteResource();
- }
-
- // calculate the type for the right contribution
- ICVSRemoteResource rightEdition = null;
- if (right instanceof ResourceEditionNode)
- rightEdition = ((ResourceEditionNode)right).getRemoteResource();
-
-
- // compare them
-
- if (leftEdition == null || rightEdition == null) {
- return NODE_UNKNOWN;
- }
- // if they're both non-files, they're the same
- if (leftEdition.isContainer() && rightEdition.isContainer()) {
- return NODE_EQUAL;
- }
- // if they have different types, they're different
- if (leftEdition.isContainer() != rightEdition.isContainer()) {
- return NODE_NOT_EQUAL;
- }
-
- String leftLocation = leftEdition.getRepository().getLocation();
- String rightLocation = rightEdition.getRepository().getLocation();
- if (!leftLocation.equals(rightLocation)) {
- return NODE_UNKNOWN;
- }
- try {
- ResourceSyncInfo leftInfo = ((ICVSResource)leftEdition).getSyncInfo();
- ResourceSyncInfo rightInfo = ((ICVSResource)rightEdition).getSyncInfo();
-
- if (leftEdition.getRepositoryRelativePath().equals(rightEdition.getRepositoryRelativePath()) &&
- leftInfo.getRevision().equals(rightInfo.getRevision())) {
- return NODE_EQUAL;
- } else {
- if(considerContentIfRevisionOrPathDiffers()) {
- return NODE_UNKNOWN;
- } else {
- return NODE_NOT_EQUAL;
- }
- }
- } catch (TeamException e) {
- handle(e);
- return NODE_UNKNOWN;
- }
- }
-
- private boolean considerContentIfRevisionOrPathDiffers() {
- return CVSUIPlugin.getPlugin().getPreferenceStore().getBoolean(ICVSUIConstants.PREF_CONSIDER_CONTENTS);
- }
-
- public Viewer createDiffViewer(Composite parent) {
- Viewer viewer = super.createDiffViewer(parent);
- viewer.addSelectionChangedListener(new ISelectionChangedListener() {
- public void selectionChanged(SelectionChangedEvent event) {
- CompareConfiguration cc = getCompareConfiguration();
- setLabels(cc, (IStructuredSelection)event.getSelection());
- }
- });
- ((StructuredViewer)viewer).addOpenListener(new IOpenListener() {
- public void open(OpenEvent event) {
- ISelection selection = event.getSelection();
- if (! selection.isEmpty() && selection instanceof IStructuredSelection) {
- Object o = ((IStructuredSelection)selection).getFirstElement();
- if (o instanceof DiffNode) {
- updateLabelsFor((DiffNode)o);
- }
- }
- }
- });
- return viewer;
- }
-
- /*
- * Update the labels for the given DiffNode
- */
- protected void updateLabelsFor(DiffNode node) {
- CompareConfiguration cc = getCompareConfiguration();
- ITypedElement l = node.getLeft();
- if (l == null) {
- cc.setLeftLabel(Policy.bind("CVSCompareEditorInput.0")); //$NON-NLS-1$
- cc.setLeftImage(null);
- } else {
- cc.setLeftLabel(getLabel(l));
- cc.setLeftImage(l.getImage());
- }
- ITypedElement r = node.getRight();
- if (r == null) {
- cc.setRightLabel(Policy.bind("CVSCompareEditorInput.1")); //$NON-NLS-1$
- cc.setRightImage(null);
- } else {
- cc.setRightLabel(getLabel(r));
- cc.setRightImage(r.getImage());
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.compare.CompareEditorInput#getToolTipText()
- */
- public String getToolTipText() {
- if (toolTipText != null) {
- return toolTipText;
- }
- return super.getToolTipText();
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSCompareRevisionsInput.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSCompareRevisionsInput.java
deleted file mode 100644
index fe20f0053..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSCompareRevisionsInput.java
+++ /dev/null
@@ -1,453 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui;
-
-
-import java.io.ByteArrayInputStream;
-import java.io.InputStream;
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.compare.CompareConfiguration;
-import org.eclipse.compare.CompareEditorInput;
-import org.eclipse.compare.CompareUI;
-import org.eclipse.compare.ITypedElement;
-import org.eclipse.compare.ResourceNode;
-import org.eclipse.compare.structuremergeviewer.DiffContainer;
-import org.eclipse.compare.structuremergeviewer.DiffNode;
-import org.eclipse.compare.structuremergeviewer.Differencer;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IMenuListener;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.dialogs.ProgressMonitorDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.CVSTag;
-import org.eclipse.team.internal.ccvs.core.ICVSFile;
-import org.eclipse.team.internal.ccvs.core.ICVSRemoteFile;
-import org.eclipse.team.internal.ccvs.core.ICVSRemoteResource;
-import org.eclipse.team.internal.ccvs.core.ILogEntry;
-import org.eclipse.team.internal.ccvs.core.client.Command;
-import org.eclipse.team.internal.ccvs.core.client.Update;
-import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot;
-import org.eclipse.team.internal.ccvs.ui.actions.CVSAction;
-import org.eclipse.team.internal.ccvs.ui.operations.UpdateOperation;
-import org.eclipse.team.internal.ui.Utils;
-import org.eclipse.team.ui.ISaveableWorkbenchPart;
-import org.eclipse.ui.IPropertyListener;
-import org.eclipse.ui.IWorkbenchPartSite;
-import org.eclipse.ui.actions.WorkspaceModifyOperation;
-import org.eclipse.ui.help.WorkbenchHelp;
-
-public class CVSCompareRevisionsInput extends CompareEditorInput implements ISaveableWorkbenchPart {
- IFile resource;
- ILogEntry[] editions;
- TableViewer viewer;
- Action getRevisionAction;
- Action getContentsAction;
- Shell shell;
-
- // Provide the widget for the history table
- private HistoryTableProvider historyTableProvider;
-
- /**
- * Provide a wrapper for a resource node that doesn't buffer. Changes are saved directly to the
- * underlying file.
- */
- class TypedBufferedContent extends ResourceNode {
- public TypedBufferedContent(IFile resource) {
- super(resource);
- }
- protected InputStream createStream() throws CoreException {
- return ((IFile)getResource()).getContents();
- }
- public void setContent(byte[] contents) {
- if (contents == null) contents = new byte[0];
- final InputStream is = new ByteArrayInputStream(contents);
- IRunnableWithProgress runnable = new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- try {
- IFile file = resource;
- if (is != null) {
- if (!file.exists()) {
- file.create(is, false, monitor);
- } else {
- file.setContents(is, false, true, monitor);
- }
- } else {
- file.delete(false, true, monitor);
- }
- } catch (CoreException e) {
- throw new InvocationTargetException(e);
- }
- }
- };
- try {
- new ProgressMonitorDialog(shell).run(false, false, runnable);
- } catch (InvocationTargetException e) {
- CVSUIPlugin.openError(CVSUIPlugin.getPlugin().getWorkbench().getActiveWorkbenchWindow().getShell(), Policy.bind("TeamFile.saveChanges", resource.getName()), null, e); //$NON-NLS-1$
- } catch (InterruptedException e) {
- // Ignore
- }
- fireContentChanged();
- }
- public ITypedElement replace(ITypedElement child, ITypedElement other) {
- return null;
- }
- public void fireChange() {
- fireContentChanged();
- }
- }
-
- /**
- * This class is an edition node which knows the log entry it came from.
- */
- class ResourceRevisionNode extends ResourceEditionNode {
- ILogEntry entry;
- public ResourceRevisionNode(ILogEntry entry) {
- super(entry.getRemoteFile());
- this.entry = entry;
- }
- public ILogEntry getLogEntry() {
- return entry;
- }
- public String getName() {
- String revisionName = entry.getRevision();
- if (revisionName != null) {
- IResource resource = CVSCompareRevisionsInput.this.resource;
- try {
- ICVSRemoteFile currentEdition = (ICVSRemoteFile) CVSWorkspaceRoot.getRemoteResourceFor(resource);
- if (currentEdition != null && currentEdition.getRevision().equals(revisionName)) {
- Policy.bind("currentRevision", revisionName); //$NON-NLS-1$
- } else {
- return revisionName;
- }
- } catch (TeamException e) {
- handle(e);
- }
- }
- return super.getName();
- }
- }
-
- /**
- * A compare node that gets its label from the right element
- */
- class VersionCompareDiffNode extends DiffNode implements IAdaptable {
- public VersionCompareDiffNode(ITypedElement left, ITypedElement right) {
- super(left, right);
- }
- public String getName() {
- return getRight().getName();
- }
- public Object getAdapter(Class adapter) {
- if (adapter == ILogEntry.class) {
- return ((ResourceRevisionNode)getRight()).getLogEntry();
- }
- return null;
- }
- public void fireContentChanges() {
- fireChange();
- }
- }
- /**
- * A content provider which knows how to get the children of the diff container
- */
- class VersionCompareContentProvider implements IStructuredContentProvider {
- public void dispose() {
- }
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
- }
- public Object[] getElements(Object inputElement) {
- if (inputElement instanceof DiffContainer) {
- return ((DiffContainer)inputElement).getChildren();
- }
- return null;
- }
- }
-
- public CVSCompareRevisionsInput(IFile resource, ILogEntry[] editions) {
- super(new CompareConfiguration());
- this.resource = resource;
- this.editions = editions;
- updateCurrentEdition();
- initializeActions();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.compare.CompareEditorInput#createContents(org.eclipse.swt.widgets.Composite)
- */
- public Control createContents(Composite parent) {
- Control c = super.createContents(parent);
- c.setLayoutData(new GridData(GridData.FILL_BOTH));
- return c;
- }
-
- public Viewer createDiffViewer(Composite parent) {
- this.shell = parent.getShell();
- viewer = getHistoryTableProvider().createTable(parent);
- Table table = viewer.getTable();
- table.setData(CompareUI.COMPARE_VIEWER_TITLE, getTitle()); //$NON-NLS-1$
-
- viewer.setContentProvider(new VersionCompareContentProvider());
-
- MenuManager mm = new MenuManager();
- mm.setRemoveAllWhenShown(true);
- mm.addMenuListener(
- new IMenuListener() {
- public void menuAboutToShow(IMenuManager mm) {
- mm.add(getContentsAction);
- mm.add(getRevisionAction);
- }
- }
- );
- table.setMenu(mm.createContextMenu(table));
- viewer.addSelectionChangedListener(new ISelectionChangedListener() {
- public void selectionChanged(SelectionChangedEvent event) {
- ISelection selection = event.getSelection();
- if (!(selection instanceof IStructuredSelection)) {
- getRevisionAction.setEnabled(false);
- getContentsAction.setEnabled(false);
- return;
- }
- IStructuredSelection ss = (IStructuredSelection)selection;
- getRevisionAction.setEnabled(ss.size() == 1);
- getContentsAction.setEnabled(ss.size() == 1);
- }
- });
-
- // Add F1 help.
- WorkbenchHelp.setHelp(table, IHelpContextIds.COMPARE_REVISIONS_VIEW);
- return viewer;
- }
-
- private void initLabels() {
- CompareConfiguration cc = getCompareConfiguration();
- cc.setLeftEditable(true);
- cc.setRightEditable(false);
- String resourceName = resource.getName();
- String leftLabel = Policy.bind("CVSCompareRevisionsInput.workspace", new Object[] {resourceName}); //$NON-NLS-1$
- cc.setLeftLabel(leftLabel);
- String rightLabel = Policy.bind("CVSCompareRevisionsInput.repository", new Object[] {resourceName}); //$NON-NLS-1$
- cc.setRightLabel(rightLabel);
- }
- private void initializeActions() {
- getRevisionAction = new Action(Policy.bind("HistoryView.getRevisionAction"), null) { //$NON-NLS-1$
- public void run() {
- try {
- new ProgressMonitorDialog(shell).run(false, true, new WorkspaceModifyOperation(null) {
- protected void execute(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- IStructuredSelection selection = (IStructuredSelection)viewer.getSelection();
- if (selection.size() != 1) return;
- VersionCompareDiffNode node = (VersionCompareDiffNode)selection.getFirstElement();
- ResourceEditionNode right = (ResourceEditionNode)node.getRight();
- ICVSRemoteResource edition = right.getRemoteResource();
- // Do the load. This just consists of setting the local contents. We don't
- // actually want to change the base.
- try {
- CVSTag revisionTag = new CVSTag(((ICVSRemoteFile)edition).getRevision(), CVSTag.VERSION);
- if(CVSAction.checkForMixingTags(shell, new IResource[] {resource}, revisionTag)) {
- new UpdateOperation(
- null,
- new IResource[] {resource},
- new Command.LocalOption[] {Update.IGNORE_LOCAL_CHANGES},
- revisionTag)
- .run(monitor);
- getHistoryTableProvider().setFile((ICVSFile)edition);
- }
- } catch (TeamException e) {
- throw new InvocationTargetException(e);
- }
- }
- });
- } catch (InterruptedException e) {
- // Do nothing
- return;
- } catch (InvocationTargetException e) {
- handle(e);
- }
- // fire change
- IStructuredSelection selection = (IStructuredSelection)viewer.getSelection();
- if (selection.size() != 1) return;
- VersionCompareDiffNode node = (VersionCompareDiffNode)selection.getFirstElement();
- TypedBufferedContent left = (TypedBufferedContent)node.getLeft();
- left.fireChange();
- // recompute the labels on the viewer
- viewer.refresh();
- }
- };
- getContentsAction = new Action(Policy.bind("HistoryView.getContentsAction")) { //$NON-NLS-1$
- public void run() {
- try {
- replaceLocalWithCurrentlySelectedRevision();
- } catch (CoreException e) {
- Utils.handle(e);
- }
- }
- };
- }
- protected Object prepareInput(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- initLabels();
- DiffNode diffRoot = new DiffNode(Differencer.NO_CHANGE);
- ITypedElement left = new TypedBufferedContent(resource);
- for (int i = 0; i < editions.length; i++) {
- ITypedElement right = new ResourceRevisionNode(editions[i]);
- diffRoot.add(new VersionCompareDiffNode(left, right));
- }
- return diffRoot;
- }
- private void updateCurrentEdition() {
- try {
- getHistoryTableProvider().setFile((ICVSFile) CVSWorkspaceRoot.getRemoteResourceFor(resource));
- } catch (TeamException e) {
- handle(e);
- }
- }
- private void handle(Exception e) {
- setMessage(CVSUIPlugin.openError(shell, null, null, e, CVSUIPlugin.LOG_NONTEAM_EXCEPTIONS).getMessage());
- }
- /**
- * Returns the historyTableProvider.
- * @return HistoryTableProvider
- */
- public HistoryTableProvider getHistoryTableProvider() {
- if (historyTableProvider == null) {
- historyTableProvider = new HistoryTableProvider();
- }
- return historyTableProvider;
- }
-
-
- /* (non-Javadoc)
- * @see org.eclipse.compare.CompareEditorInput#saveChanges(org.eclipse.core.runtime.IProgressMonitor)
- */
- public void saveChanges(IProgressMonitor pm) throws CoreException {
- super.saveChanges(pm);
- }
-
- public void replaceLocalWithCurrentlySelectedRevision() throws CoreException {
- IStructuredSelection selection = (IStructuredSelection)viewer.getSelection();
- if (selection.size() != 1) return;
- VersionCompareDiffNode node = (VersionCompareDiffNode)selection.getFirstElement();
- ResourceRevisionNode right = (ResourceRevisionNode)node.getRight();
- TypedBufferedContent left = (TypedBufferedContent)node.getLeft();
- left.setContent(Utils.readBytes(right.getContents()));
- }
-
- public Viewer getViewer() {
- return viewer;
- }
-
-
- /* (non-Javadoc)
- * @see org.eclipse.compare.CompareEditorInput#getTitle()
- */
- public String getTitle() {
- return Policy.bind("CVSCompareRevisionsInput.compareResourceAndVersions", new Object[] {resource.getFullPath().toString()}); //$NON-NLS-1$
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.ISaveablePart#doSave(org.eclipse.core.runtime.IProgressMonitor)
- */
- public void doSave(IProgressMonitor monitor) {
- try {
- saveChanges(monitor);
- } catch (CoreException e) {
- Utils.handle(e);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.ISaveablePart#doSaveAs()
- */
- public void doSaveAs() {
- // noop
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.ISaveablePart#isDirty()
- */
- public boolean isDirty() {
- return isSaveNeeded();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.ISaveablePart#isSaveAsAllowed()
- */
- public boolean isSaveAsAllowed() {
- return true;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.ISaveablePart#isSaveOnCloseNeeded()
- */
- public boolean isSaveOnCloseNeeded() {
- return true;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.IWorkbenchPart#addPropertyListener(org.eclipse.ui.IPropertyListener)
- */
- public void addPropertyListener(IPropertyListener listener) {
- // noop
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.IWorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
- */
- public void createPartControl(Composite parent) {
- createContents(parent);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.IWorkbenchPart#dispose()
- */
- public void dispose() {
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.IWorkbenchPart#getSite()
- */
- public IWorkbenchPartSite getSite() {
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.IWorkbenchPart#getTitleToolTip()
- */
- public String getTitleToolTip() {
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.IWorkbenchPart#removePropertyListener(org.eclipse.ui.IPropertyListener)
- */
- public void removePropertyListener(IPropertyListener listener) {
- // noop
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSDecoration.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSDecoration.java
deleted file mode 100644
index 0e8caf800..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSDecoration.java
+++ /dev/null
@@ -1,427 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui;
-
-import java.util.HashMap;
-import java.util.Map;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.Preferences;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.IDecoration;
-import org.eclipse.swt.graphics.*;
-import org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.internal.ccvs.core.util.Assert;
-import org.eclipse.team.internal.ui.TeamUIPlugin;
-import org.eclipse.team.ui.ISharedImages;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.themes.ITheme;
-
-/**
- * A decoration describes the annotations to a user interface element. The
- * annotations can apply to text (e.g. prefix, suffix, color, font) and to an
- * image (e.g. overlays).
- * IDecoration
and is often used in conjunction with the label
- * decoration APIs. As such a client can convert between them using helpers
- * defined in this class.
- * EditorsView
shows the result of cvs editors command
- *
- * @author Gregor Kohlwes
- * @see org.eclipse.team.internal.ccvs.ui.actions.ShowEditorsAction
- */
-public class EditorsView extends ViewPart {
- public static final String VIEW_ID = "org.eclipse.team.ccvs.ui.EditorsView"; //$NON-NLS-1$
-
- private Table table;
- private TableViewer tableViewer;
-
- class EditorsContentProvider implements IStructuredContentProvider {
-
- /**
- * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
- */
- public Object[] getElements(Object inputElement) {
- return (EditorsInfo[]) inputElement;
- }
-
- /**
- * @see org.eclipse.jface.viewers.IContentProvider#dispose()
- */
- public void dispose() {
- }
-
- /**
- * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
- */
- public void inputChanged(
- Viewer viewer,
- Object oldInput,
- Object newInput) {
- }
-
- }
-
- class EditorsLabelProvider implements ITableLabelProvider {
- /**
- * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object, int)
- */
- public Image getColumnImage(Object element, int columnIndex) {
- return null;
- }
-
- /**
- * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, int)
- */
- public String getColumnText(Object element, int columnIndex) {
- if (element == null)
- return ""; //$NON-NLS-1$
- EditorsInfo info = (EditorsInfo) element;
-
- String result = null;
- switch (columnIndex) {
- case 0 :
- result = info.getFileName();
- break;
- case 1 :
- result = info.getUserName();
- break;
- case 2 :
- result = info.getDateString();
- break;
- case 3 :
- result = info.getComputerName();
- break;
- }
- // This method must not return null
- if (result == null) result = ""; //$NON-NLS-1$
- return result;
-
- }
-
- /**
- * @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener)
- */
- public void addListener(ILabelProviderListener listener) {
- }
-
- /**
- * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
- */
- public void dispose() {
- }
-
- /**
- * @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(java.lang.Object, java.lang.String)
- */
- public boolean isLabelProperty(Object element, String property) {
- return false;
- }
-
- /**
- * @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener)
- */
- public void removeListener(ILabelProviderListener listener) {
- }
-
- }
-
- /**
- * @see org.eclipse.ui.IWorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
- */
- public void createPartControl(Composite parent) {
- table = new Table(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);
- table.setHeaderVisible(true);
- table.setLinesVisible(true);
-
- GridData gridData = new GridData(GridData.FILL_BOTH);
- gridData.widthHint=500;
- gridData.heightHint=100;
- table.setLayoutData(gridData);
-
- TableLayout layout = new TableLayout();
- table.setLayout(layout);
-
- tableViewer = new TableViewer(table);
- createColumns(table, layout);
-
- tableViewer.setContentProvider(new EditorsContentProvider());
- tableViewer.setLabelProvider(new EditorsLabelProvider());
- // set F1 help
- WorkbenchHelp.setHelp(tableViewer.getControl(), IHelpContextIds.CVS_EDITORS_VIEW);
- }
- public void setInput(EditorsInfo[] infos) {
- tableViewer.setInput(infos);
- }
- /**
- * Method createColumns.
- * @param table
- * @param layout
- * @param viewer
- */
- private void createColumns(Table table, TableLayout layout) {
-
- TableColumn col;
- // file name
- col = new TableColumn(table, SWT.NONE);
- col.setResizable(true);
- col.setText(Policy.bind("EditorsView.file")); //$NON-NLS-1$
- layout.addColumnData(new ColumnWeightData(30, true));
-
- // user name
- col = new TableColumn(table, SWT.NONE);
- col.setResizable(true);
- col.setText(Policy.bind("EditorsView.user")); //$NON-NLS-1$
- layout.addColumnData(new ColumnWeightData(20, true));
-
- // creation date
- col = new TableColumn(table, SWT.NONE);
- col.setResizable(true);
- col.setText(Policy.bind("EditorsView.date")); //$NON-NLS-1$
- layout.addColumnData(new ColumnWeightData(30, true));
-
- // computer name
- col = new TableColumn(table, SWT.NONE);
- col.setResizable(true);
- col.setText(Policy.bind("EditorsView.computer")); //$NON-NLS-1$
- layout.addColumnData(new ColumnWeightData(20, true));
-
- }
-
- /**
- * @see org.eclipse.ui.IWorkbenchPart#setFocus()
- */
- public void setFocus() {
- }
- /**
- * Method getTable.
- */
- public Table getTable() {
- return table;
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ExtMethodPreferencePage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ExtMethodPreferencePage.java
deleted file mode 100644
index 7ff41d56f..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ExtMethodPreferencePage.java
+++ /dev/null
@@ -1,283 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui;
-
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.preference.PreferencePage;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.FileDialog;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.team.internal.ccvs.core.CVSProviderPlugin;
-import org.eclipse.team.internal.ccvs.core.IConnectionMethod;
-import org.eclipse.team.internal.ccvs.core.connection.CVSRepositoryLocation;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
-import org.eclipse.ui.help.WorkbenchHelp;
-
-public class ExtMethodPreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
-
- Text cvsRsh;
- Text cvsServer;
- Text cvsRshParameters;
- private Button useExternal;
- private Button useInternal;
- private Combo methodType;
- private Control internal, external;
-
- /*
- * @see PreferencePage#createContents(Composite)
- */
- protected Control createContents(Composite parent) {
- Composite composite = new Composite(parent, SWT.NULL);
- GridLayout layout = new GridLayout();
- layout.marginWidth = 0;
- layout.marginHeight = 0;
- layout.numColumns = 1;
- composite.setLayout(layout);
- composite.setLayoutData(new GridData());
-
- SelectionAdapter selectionListener = new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- updateEnablements();
- }
- };
-
- useExternal = createRadioButton(composite, Policy.bind("ExtMethodPreferencePage.0"), 1); //$NON-NLS-1$
- useExternal.addSelectionListener(selectionListener);
- external = createExternalArea(composite);
-
- useInternal = createRadioButton(composite, Policy.bind("ExtMethodPreferencePage.1"), 1); //$NON-NLS-1$
- useInternal.addSelectionListener(selectionListener);
- internal = createInternalArea(composite);
-
- initializeDefaults();
- WorkbenchHelp.setHelp(composite, IHelpContextIds.EXT_PREFERENCE_PAGE);
- Dialog.applyDialogFont(parent);
- return composite;
- }
-
- private void updateEnablements() {
- external.setEnabled(useExternal.getSelection());
- cvsRsh.setEnabled(useExternal.getSelection());
- cvsRshParameters.setEnabled(useExternal.getSelection());
- cvsServer.setEnabled(useExternal.getSelection());
- internal.setEnabled(!useExternal.getSelection());
- methodType.setEnabled(!useExternal.getSelection());
- }
-
- private Control createInternalArea(Composite parent) {
- Composite composite = new Composite(parent, SWT.NULL);
- GridLayout layout = new GridLayout();
- layout.marginWidth = 5;
- layout.marginHeight = 5;
- layout.numColumns = 2;
- composite.setLayout(layout);
- composite.setLayoutData(new GridData(GridData.FILL_BOTH));
-
- Label intro = new Label(composite, SWT.LEFT | SWT.WRAP);
- intro.setText(Policy.bind("ExtMethodPreferencePage.2")); //$NON-NLS-1$
- GridData data = new GridData();
- data.horizontalSpan = 2;
- data.horizontalAlignment = GridData.FILL;
- data.widthHint = 300;
- intro.setLayoutData(data);
-
- createLabel(composite, Policy.bind("CVSPropertiesPage.connectionType"), 1); //$NON-NLS-1$
- methodType = createCombo(composite);
- return composite;
- }
- protected Control createExternalArea(Composite parent) {
- Composite composite = new Composite(parent, SWT.NULL);
- GridLayout layout = new GridLayout();
- layout.marginWidth = 5;
- layout.marginHeight = 5;
- layout.numColumns = 3;
- composite.setLayout(layout);
- composite.setLayoutData(new GridData(GridData.FILL_BOTH));
-
- Label intro = new Label(composite, SWT.LEFT | SWT.WRAP);
- intro.setText(Policy.bind("ExtMethodPreferencePage_message")); //$NON-NLS-1$
- GridData data = new GridData();
- data.horizontalSpan = 3;
- data.horizontalAlignment = GridData.FILL;
- data.widthHint = 300;
- intro.setLayoutData(data);
-
- new Label(composite, SWT.LEFT).setText(Policy.bind("ExtMethodPreferencePage_CVS_RSH")); //$NON-NLS-1$
- cvsRsh = new Text(composite, SWT.BORDER);
- cvsRsh.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
- final Button b = new Button(composite, SWT.NONE);
- b.setText(Policy.bind("ExtMethodPreferencePage_Browse")); //$NON-NLS-1$
- data = new GridData();
- data.horizontalAlignment = GridData.FILL;
- data.heightHint = convertVerticalDLUsToPixels(IDialogConstants.BUTTON_HEIGHT);
- int widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
- data.widthHint = Math.max(widthHint, b.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).x);
- b.setLayoutData(data);
- b.addListener(SWT.MouseDown, new Listener() {
- public void handleEvent (Event event) {
- FileDialog d = new FileDialog(getShell());
- d.setText(Policy.bind("ExtMethodPreferencePage_Details")); //$NON-NLS-1$
- String file = d.open();
- if(file!=null) {
- setCvsRshText(file);
- }
- }
- });
-
- new Label(composite, SWT.LEFT).setText(Policy.bind("ExtMethodPreferencePage_CVS_RSH_Parameters")); //$NON-NLS-1$
- cvsRshParameters = new Text(composite, SWT.BORDER);
- data = new GridData();
- data.horizontalSpan = 2;
- data.horizontalAlignment = GridData.FILL;
- cvsRshParameters.setLayoutData(data);
-
- new Label(composite, SWT.LEFT).setText(Policy.bind("ExtMethodPreferencePage_CVS_SERVER__7")); //$NON-NLS-1$
- cvsServer = new Text(composite, SWT.BORDER);
- data = new GridData();
- data.horizontalSpan = 2;
- data.horizontalAlignment = GridData.FILL;
- cvsServer.setLayoutData(data);
-
- WorkbenchHelp.setHelp(cvsRsh, IHelpContextIds.EXT_PREFERENCE_RSH);
- WorkbenchHelp.setHelp(cvsRshParameters, IHelpContextIds.EXT_PREFERENCE_PARAM);
- WorkbenchHelp.setHelp(cvsServer, IHelpContextIds.EXT_PREFERENCE_SERVER);
- return composite;
- }
-
- private void initializeDefaults() {
- IPreferenceStore store = getPreferenceStore();
- String rsh = store.getString(ICVSUIConstants.PREF_CVS_RSH);
- String parameter = store.getString(ICVSUIConstants.PREF_CVS_RSH_PARAMETERS);
- String server = store.getString(ICVSUIConstants.PREF_CVS_SERVER);
- String method = store.getString(ICVSUIConstants.PREF_EXT_CONNECTION_METHOD_PROXY);
- initializeDefaults(rsh, parameter, server, method);
- }
-
- /*
- * Set CVS_RSH program
- */
- protected void setCvsRshText(String s) {
- cvsRsh.setText(s);
- }
-
- /*
- * @see IWorkbenchPreferencePage#init(IWorkbench)
- */
- public void init(IWorkbench workbench) {
- }
-
- /*
- * @see IPreferencePage#performOk()
- */
- public boolean performOk() {
- IPreferenceStore store = getPreferenceStore();
- String method;
- if (useExternal.getSelection()) {
- method = "ext"; //$NON-NLS-1$
- store.setValue(ICVSUIConstants.PREF_CVS_RSH, cvsRsh.getText());
- store.setValue(ICVSUIConstants.PREF_CVS_RSH_PARAMETERS, cvsRshParameters.getText());
- store.setValue(ICVSUIConstants.PREF_CVS_SERVER, cvsServer.getText());
- CVSProviderPlugin.getPlugin().setCvsRshCommand(cvsRsh.getText());
- CVSProviderPlugin.getPlugin().setCvsRshParameters(cvsRshParameters.getText());
- CVSProviderPlugin.getPlugin().setCvsServer(cvsServer.getText());
- } else {
- method = methodType.getText();
- }
- store.setValue(ICVSUIConstants.PREF_EXT_CONNECTION_METHOD_PROXY, method);
- CVSRepositoryLocation.setExtConnectionMethodProxy(method);
- CVSUIPlugin.getPlugin().savePluginPreferences();
- return super.performOk();
- }
-
- /*
- * @see PreferencePage#performDefaults()
- */
- protected void performDefaults() {
- IPreferenceStore store = getPreferenceStore();
- String rsh = store.getDefaultString(ICVSUIConstants.PREF_CVS_RSH);
- String parameter = store.getDefaultString(ICVSUIConstants.PREF_CVS_RSH_PARAMETERS);
- String server = store.getDefaultString(ICVSUIConstants.PREF_CVS_SERVER);
- String method = store.getDefaultString(ICVSUIConstants.PREF_EXT_CONNECTION_METHOD_PROXY);
- initializeDefaults(rsh, parameter, server, method);
- super.performDefaults();
- }
-
- private void initializeDefaults(String rsh, String parameters, String server, String method) {
- cvsRsh.setText(rsh);
- cvsRshParameters.setText(parameters);
- cvsServer.setText(server);
- IConnectionMethod[] methods = CVSRepositoryLocation.getPluggedInConnectionMethods();
- for (int i = 0; i < methods.length; i++) {
- String name = methods[i].getName();
- if (!name.equals("ext")) { //$NON-NLS-1$
- methodType.add(name);
- }
- }
- if (method.equals("ext")) { //$NON-NLS-1$
- methodType.select(0);
- } else {
- methodType.select(methodType.indexOf(method));
- }
- useExternal.setSelection(method.equals("ext")); //$NON-NLS-1$
- useInternal.setSelection(!method.equals("ext")); //$NON-NLS-1$
- updateEnablements();
- }
-
- /*
- * @see PreferencePage#doGetPreferenceStore()
- */
- protected IPreferenceStore doGetPreferenceStore() {
- return CVSUIPlugin.getPlugin().getPreferenceStore();
- }
-
- protected Button createRadioButton(Composite parent, String label, int span) {
- Button button = new Button(parent, SWT.RADIO);
- button.setText(label);
- GridData data = new GridData();
- data.horizontalSpan = span;
- button.setLayoutData(data);
- return button;
- }
-
- protected Label createLabel(Composite parent, String text, int span) {
- Label label = new Label(parent, SWT.LEFT);
- label.setText(text);
- GridData data = new GridData();
- data.horizontalSpan = span;
- data.horizontalAlignment = GridData.FILL;
- label.setLayoutData(data);
- return label;
- }
- protected Combo createCombo(Composite parent) {
- Combo combo = new Combo(parent, SWT.READ_ONLY);
- GridData data = new GridData(GridData.FILL_HORIZONTAL);
- data.widthHint = IDialogConstants.ENTRY_FIELD_WIDTH;
- data.horizontalSpan = 1;
- combo.setLayoutData(data);
- return combo;
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/FileModificationValidator.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/FileModificationValidator.java
deleted file mode 100644
index 45c3eabb4..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/FileModificationValidator.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.*;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.CVSCoreFileModificationValidator;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-import org.eclipse.team.internal.ccvs.ui.actions.EditorsAction;
-
-/**
- * IFileModificationValidator that is pluged into the CVS Repository Provider
- */
-public class FileModificationValidator extends CVSCoreFileModificationValidator {
-
- public FileModificationValidator() {
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.core.CVSCoreFileModificationValidator#edit(org.eclipse.core.resources.IFile[], java.lang.Object)
- */
- protected IStatus edit(IFile[] readOnlyFiles, Object context) {
- return edit(readOnlyFiles, getShell(context));
- }
-
- private Shell getShell(Object context) {
- if (context instanceof Shell)
- return (Shell)context;
- return null;
- }
-
- private IStatus getStatus(InvocationTargetException e) {
- Throwable target = e.getTargetException();
- if (target instanceof TeamException) {
- return ((TeamException) target).getStatus();
- } else if (target instanceof CoreException) {
- return ((CoreException) target).getStatus();
- }
- return new Status(IStatus.ERROR, CVSUIPlugin.ID, 0, Policy.bind("internal"), target); //$NON-NLS-1$
- }
-
- private IStatus edit(final IFile[] files, final Shell shell) {
- if (isPerformEdit()) {
- try {
- if (shell != null && !promptToEditFiles(files, shell)) {
- // The user didn't want to edit.
- // OK is returned but the file remains read-only
- throw new InterruptedException();
- }
-
- // Run the edit in a runnable in order to get a busy cursor.
- // This runnable is syncExeced in order to get a busy cursor
- IRunnableWithProgress editRunnable = new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- try {
- performEdit(files, monitor);
- } catch (CVSException e) {
- new InvocationTargetException(e);
- }
- }
- };
- if (isRunningInUIThread()) {
- // Only show a busy cursor if validate edit is blocking the UI
- CVSUIPlugin.runWithProgress(shell, false, editRunnable);
- } else {
- // We can't show a busy cursor (i.e., run in the UI thread)
- // since this thread may hold locks and
- // running an edit in the UI thread could try to obtain the
- // same locks, resulting in a deadlock.
- editRunnable.run(new NullProgressMonitor());
- }
- } catch (InvocationTargetException e) {
- return getStatus(e);
- } catch (InterruptedException e) {
- // Must return an error to indicate that it is not OK to edit the files
- return new Status(IStatus.CANCEL, CVSUIPlugin.ID, 0, Policy.bind("FileModificationValidator.vetoMessage"), null); //$NON-NLS-1$;
- }
- } else {
- // Allow the files to be edited without notifying the server
- return setWritable(files);
- }
-
- return Status.OK_STATUS;
-
- }
-
- private boolean isRunningInUIThread() {
- return Display.getCurrent() != null;
- }
-
- private boolean promptToEditFiles(IFile[] files, Shell shell) throws InvocationTargetException, InterruptedException {
- if (files.length == 0)
- return true;
-
- if(isNeverPrompt())
- return true;
-
- // Contact the server to see if anyone else is editing the files
- EditorsAction editors = fetchEditors(files, shell);
- if (editors.isEmpty()) {
- if (isAlwaysPrompt())
- return (promptEdit(shell));
- return true;
- } else {
- return (editors.promptToEdit(shell));
- }
- }
-
- private boolean promptEdit(Shell shell) {
- // Open the dialog using a sync exec (there are no guarentees that we
- // were called from the UI thread
- final boolean[] result = new boolean[] { false };
- int flags = isRunningInUIThread() ? 0 : CVSUIPlugin.PERFORM_SYNC_EXEC;
- CVSUIPlugin.openDialog(shell, new CVSUIPlugin.IOpenableInShell() {
- public void open(Shell shell) {
- result[0] = MessageDialog.openQuestion(shell,Policy.bind("FileModificationValidator.3"),Policy.bind("FileModificationValidator.4")); //$NON-NLS-1$ //$NON-NLS-2$
- }
- }, flags);
- return result[0];
- }
-
- private boolean isPerformEdit() {
- return ICVSUIConstants.PREF_EDIT_PROMPT_EDIT.equals(CVSUIPlugin.getPlugin().getPreferenceStore().getString(ICVSUIConstants.PREF_EDIT_ACTION));
- }
-
- private EditorsAction fetchEditors(IFile[] files, Shell shell) throws InvocationTargetException, InterruptedException {
- final EditorsAction editors = new EditorsAction(getProvider(files), files);
- IRunnableWithProgress runnable = new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- editors.run(monitor);
- }
- };
- if (isRunningInUIThread()) {
- // Show a busy cursor if we are running in the UI thread
- CVSUIPlugin.runWithProgress(shell, false, runnable);
- } else {
- // We can't show a busy cursor (i.e., run in the UI thread)
- // since this thread may hold locks and
- // running a CVS operation in the UI thread could try to obtain the
- // same locks, resulting in a deadlock.
- runnable.run(new NullProgressMonitor());
- }
- return editors;
- }
-
- private boolean isNeverPrompt() {
- return ICVSUIConstants.PREF_EDIT_PROMPT_NEVER.equals(CVSUIPlugin.getPlugin().getPreferenceStore().getString(ICVSUIConstants.PREF_EDIT_PROMPT));
- }
-
- private boolean isAlwaysPrompt() {
- return ICVSUIConstants.PREF_EDIT_PROMPT_ALWAYS.equals(CVSUIPlugin.getPlugin().getPreferenceStore().getString(ICVSUIConstants.PREF_EDIT_PROMPT));
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/HistoryDropAdapter.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/HistoryDropAdapter.java
deleted file mode 100644
index 1e3fe6ee5..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/HistoryDropAdapter.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui;
-
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.jface.viewers.StructuredViewer;
-import org.eclipse.jface.viewers.ViewerDropAdapter;
-import org.eclipse.swt.dnd.DND;
-import org.eclipse.swt.dnd.DropTargetEvent;
-import org.eclipse.swt.dnd.TransferData;
-import org.eclipse.ui.part.ResourceTransfer;
-
-public class HistoryDropAdapter extends ViewerDropAdapter {
- HistoryView view;
-
- public HistoryDropAdapter(StructuredViewer viewer, HistoryView view) {
- super(viewer);
- this.view = view;
- }
- /*
- * Override dragOver to slam the detail to DROP_LINK, as we do not
- * want to really execute a DROP_MOVE, although we want to respond
- * to it.
- */
- public void dragOver(DropTargetEvent event) {
- if ((event.operations & DND.DROP_LINK) == DND.DROP_LINK) {
- event.detail = DND.DROP_LINK;
- }
- super.dragOver(event);
- }
- /*
- * Override drop to slam the detail to DROP_LINK, as we do not
- * want to really execute a DROP_MOVE, although we want to respond
- * to it.
- */
- public void drop(DropTargetEvent event) {
- super.drop(event);
- event.detail = DND.DROP_LINK;
- }
- public boolean performDrop(Object data) {
- if (data == null) return false;
- IResource[] sources = (IResource[])data;
- if (sources.length == 0) return false;
- IResource resource = sources[0];
- if (!(resource instanceof IFile)) return false;
- view.showHistory(resource, true /* fetch */);
- return true;
- }
- public boolean validateDrop(Object target, int operation, TransferData transferType) {
- if (transferType != null && ResourceTransfer.getInstance().isSupportedType(transferType)) {
- return true;
- }
- return false;
- }
-}
-
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/HistoryFilter.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/HistoryFilter.java
deleted file mode 100644
index 2be43c760..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/HistoryFilter.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui;
-
-import java.util.Date;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerFilter;
-import org.eclipse.team.internal.ccvs.core.ILogEntry;
-
-public class HistoryFilter extends ViewerFilter {
- private HistoryView view;
- public String author;
- public Date fromDate;
- public Date toDate;
- public String comment;
- public boolean isOr;
-
- public HistoryFilter(HistoryView hView, String author, String comment, Date fromDate, Date toDate, boolean isOr) {
- this.view = hView;
- this.author = author;
- this.comment = comment;
- this.fromDate = fromDate;
- this.toDate = toDate;
- this.isOr = isOr;
- }
- /**
- * @see ViewerFilter#select(Viewer, Object, Object)
- */
- public boolean select(Viewer aviewer, Object parentElement, Object element) {
- if (element instanceof ILogEntry) {
- ILogEntry entry = (ILogEntry)element;
- if (isOr) {
- //empty fields should be considered a non-match
- return (hasAuthor() && authorMatch(entry) )
- || (hasDate() && dateMatch(entry))
- || (hasComment() && commentMatch(entry));
- } else {
- //"and" search
- //empty fields should be considered a match
- return (!hasAuthor() || authorMatch(entry))
- && (!hasDate() || dateMatch(entry))
- && (!hasComment() || commentMatch(entry));
- }
- }
- return false;
- }
- protected boolean authorMatch(ILogEntry entry) {
- return entry.getAuthor().equals(author);
- }
- protected boolean commentMatch(ILogEntry entry) {
- return !(entry.getComment().toLowerCase().indexOf(comment.toLowerCase()) == -1);
- }
- protected boolean dateMatch(ILogEntry entry) {
- return (fromDate.before(entry.getDate()))
- && (toDate.after(entry.getDate()));
- }
- protected boolean hasAuthor() {
- return !author.equals(""); //$NON-NLS-1$
- }
- protected boolean hasComment() {
- return !comment.equals(""); //$NON-NLS-1$
- }
- protected boolean hasDate() {
- return fromDate != null && toDate != null;
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/HistoryFilterAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/HistoryFilterAction.java
deleted file mode 100644
index 3dda72428..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/HistoryFilterAction.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui;
-
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.window.Window;
-import org.eclipse.ui.IViewActionDelegate;
-import org.eclipse.ui.IViewPart;
-
-public class HistoryFilterAction implements IViewActionDelegate {
- private HistoryView view;
- private HistoryFilter filter;
-
- /**
- * @see IViewActionDelegate#init(IViewPart)
- */
- public void init(IViewPart view) {
- this.view = (HistoryView)view;
- }
- /**
- * @see IActionDelegate#run(IAction)
- */
- public void run(IAction action) {
- HistoryFilterDialog historyDialog = new HistoryFilterDialog(view);
- if (filter != null) {
- historyDialog.setFilter(filter);
- }
- if (historyDialog.open() == Window.CANCEL) {
- return;
- }
- if (filter != null) {
- view.getViewer().removeFilter(filter);
- }
- filter = historyDialog.getFilter();
- //don't add the filter if it is blank
- if (!(filter.hasAuthor() || filter.hasDate() || filter.hasComment())) {
- return;
- }
- view.getViewer().addFilter(filter);
- }
- /**
- * @see IActionDelegate#selectionChanged(IAction, ISelection)
- */
- public void selectionChanged(IAction action, ISelection selection) {
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/HistoryFilterDialog.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/HistoryFilterDialog.java
deleted file mode 100644
index 1e27ea851..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/HistoryFilterDialog.java
+++ /dev/null
@@ -1,265 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui;
-
-import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.Date;
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.help.WorkbenchHelp;
-
-public class HistoryFilterDialog extends Dialog {
-
- private HistoryView historyView;
- private HistoryFilter historyFilter;
-
- //widgets
- private Button orRadio;
- private Button andRadio;
- private Combo fromDayCombo;
- private Combo toDayCombo;
- private Combo fromMonthCombo;
- private Combo toMonthCombo;
- private Combo fromYearCombo;
- private Combo toYearCombo;
- private Text author;
- private Text comment;
-
- public HistoryFilterDialog(HistoryView view) {
- super(view.getViewSite().getShell());
- this.historyView = view;
- }
-
- protected void configureShell(Shell newShell) {
- super.configureShell(newShell);
- newShell.setText(Policy.bind("HistoryFilterDialog.title")); //$NON-NLS-1$
- }
-
- protected Control createDialogArea(Composite parent) {
- Composite topLevel = new Composite(parent, SWT.NONE);
- GridLayout layout = new GridLayout();
- layout.numColumns = 2;
- layout.marginHeight = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);
- layout.marginWidth = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
- topLevel.setLayout(layout);
-
- //"and" and "or" search radio buttons
- Label label = new Label(topLevel, SWT.NONE);
- GridData data = new GridData(GridData.FILL_HORIZONTAL);
- data.horizontalSpan = 2;
- label.setLayoutData(data);
- label.setText(Policy.bind("HistoryFilterDialog.showMatching")); //$NON-NLS-1$
-
- andRadio = new Button(topLevel, SWT.RADIO);
- andRadio.setText(Policy.bind("HistoryFilterDialog.matchingAll")); //$NON-NLS-1$
- data = new GridData(GridData.FILL_HORIZONTAL);
- data.horizontalSpan = 2;
- andRadio.setLayoutData(data);
- andRadio.setSelection(true);
-
- orRadio = new Button(topLevel, SWT.RADIO);
- orRadio.setText(Policy.bind("HistoryFilterDialog.matchingAny")); //$NON-NLS-1$
- data = new GridData(GridData.FILL_HORIZONTAL);
- data.horizontalSpan = 2;
- orRadio.setLayoutData(data);
-
- //author
- label = new Label(topLevel, SWT.NONE);
- label.setText(Policy.bind("HistoryFilterDialog.author")); //$NON-NLS-1$
- author = new Text(topLevel, SWT.BORDER);
- author.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
- //comment
- label = new Label(topLevel, SWT.NONE);
- label.setText(Policy.bind("HistoryFilterDialog.comment")); //$NON-NLS-1$
- comment = new Text(topLevel, SWT.BORDER);
- comment.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
- //"from" date
- label = new Label(topLevel, SWT.NONE);
- label.setText(Policy.bind("HistoryFilterDialog.fromDate")); //$NON-NLS-1$
- Composite fdComposite = new Composite(topLevel, SWT.NONE);
- GridLayout fdLayout = new GridLayout();
- fdLayout.numColumns = 3;
- fdComposite.setLayout(fdLayout);
- fromMonthCombo = new Combo(fdComposite, SWT.READ_ONLY);
- fromDayCombo = new Combo(fdComposite, SWT.READ_ONLY);
- fromYearCombo = new Combo(fdComposite, SWT.NONE);
- fromYearCombo.setTextLimit(4);
-
- //"to" date
- label = new Label(topLevel, SWT.NONE);
- label.setText(Policy.bind("HistoryFilterDialog.toDate")); //$NON-NLS-1$
- Composite tdComposite = new Composite(topLevel, SWT.NONE);
- GridLayout tdLayout = new GridLayout();
- tdLayout.numColumns = 3;
- tdComposite.setLayout(tdLayout);
- toMonthCombo = new Combo(tdComposite, SWT.READ_ONLY);
- toDayCombo = new Combo(tdComposite, SWT.READ_ONLY);
- toYearCombo = new Combo(tdComposite, SWT.NONE);
- toYearCombo.setTextLimit(4);
-
- //set day, month and year combos with numbers
- //years allows a selection from the past 5 years
- //or any year written in
- String days[] = new String[32];
- days[0] = "---"; //$NON-NLS-1$
- for (int i = 1; i < 32; i++) {
- days[i] = String.valueOf(i);
- }
-
- String months[] = new String[13];
- months[0] = "---"; //$NON-NLS-1$
- SimpleDateFormat format = new SimpleDateFormat("MMMM"); //$NON-NLS-1$
- Calendar calendar = Calendar.getInstance();
- for (int i = 1; i < 13; i++) {
- calendar.set(Calendar.MONTH, i - 1);
- months[i] = format.format(calendar.getTime());
- }
-
- String years[] = new String[5];
- Calendar calender = Calendar.getInstance();
- for (int i = 0; i < 5; i++) {
- years[i] = String.valueOf(calender.get(1) - i);
- }
- fromDayCombo.setItems(days);
- fromDayCombo.select(0);
- toDayCombo.setItems(days);
- toDayCombo.select(0);
- fromMonthCombo.setItems(months);
- fromMonthCombo.select(0);
- toMonthCombo.setItems(months);
- toMonthCombo.select(0);
- fromYearCombo.setItems(years);
- toYearCombo.setItems(years);
- fromYearCombo.select(0);
- toYearCombo.select(0);
-
- initializeValues();
-
- // set F1 help
- WorkbenchHelp.setHelp(topLevel, IHelpContextIds.HISTORY_FILTER_DIALOG);
- Dialog.applyDialogFont(parent);
- return topLevel;
- }
- void initializeValues() {
- if (historyFilter == null) return;
- if (historyFilter.author != null) {
- author.setText(historyFilter.author);
- }
- if (historyFilter.comment != null) {
- comment.setText(historyFilter.comment);
- }
- orRadio.setSelection(historyFilter.isOr);
- andRadio.setSelection(!historyFilter.isOr);
- Calendar calendar = Calendar.getInstance();
- if (historyFilter.fromDate != null) {
- calendar.setTime(historyFilter.fromDate);
- fromDayCombo.select(calendar.get(Calendar.DATE));
- fromMonthCombo.select(calendar.get(Calendar.MONTH) + 1);
- String yearValue = String.valueOf(calendar.get(Calendar.YEAR));
- int index = fromYearCombo.indexOf(yearValue);
- if (index == -1) {
- fromYearCombo.add(yearValue);
- index = fromYearCombo.indexOf(yearValue);
- }
- fromYearCombo.select(index);
- }
- if (historyFilter.toDate != null) {
- calendar.setTime(historyFilter.toDate);
- toDayCombo.select(calendar.get(Calendar.DATE));
- toMonthCombo.select(calendar.get(Calendar.MONTH) + 1);
- String yearValue = String.valueOf(calendar.get(Calendar.YEAR));
- int index = toYearCombo.indexOf(yearValue);
- if (index == -1) {
- toYearCombo.add(yearValue);
- index = toYearCombo.indexOf(yearValue);
- }
- toYearCombo.select(index);
- }
- }
- /**
- * A button has been pressed. Process the dialog contents.
- */
- protected void buttonPressed(int buttonId) {
- if (IDialogConstants.CANCEL_ID == buttonId) {
- super.buttonPressed(buttonId);
- return;
- }
- Date fromDate = null, toDate = null;
-
- if ((fromMonthCombo.getSelectionIndex() > 0)
- && (toMonthCombo.getSelectionIndex() > 0)
- && (fromDayCombo.getSelectionIndex() > 0)
- && (toDayCombo.getSelectionIndex() > 0)
- && (fromYearCombo.getText().length() > 0)
- && (toYearCombo.getText().length() > 0)) {
-
- //set the calendar with the user input
- //set the hours, minutes and seconds to 00
- //so as to cover the whole day
- Calendar calendar = Calendar.getInstance();
- calendar.set(
- Integer.parseInt(String.valueOf(fromYearCombo.getText())),
- fromMonthCombo.getSelectionIndex() - 1,
- Integer.parseInt(String.valueOf(fromDayCombo.getText())),
- 00, 00, 00);
- fromDate = calendar.getTime();
-
- //set the calendar with the user input
- //set the hours, minutes and seconds to 23, 59, 59
- //so as to cover the whole day
- calendar.set(
- Integer.parseInt(String.valueOf(toYearCombo.getText())),
- toMonthCombo.getSelectionIndex() - 1,
- Integer.parseInt(String.valueOf(toDayCombo.getText())),
- 23, 59, 59);
- toDate = calendar.getTime();
- }
-
- //create the filter
- historyFilter = new HistoryFilter(
- historyView,
- author.getText(),
- comment.getText(),
- fromDate,
- toDate,
- orRadio.getSelection());
-
- super.buttonPressed(buttonId);
- }
-
- /**
- * Returns the filter that was created from the provided
- * user input.
- */
- public HistoryFilter getFilter() {
- return historyFilter;
- }
- /**
- * Set the intial value of the dialog to the given filter.
- */
- public void setFilter(HistoryFilter filter) {
- this.historyFilter = filter;
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/HistoryTableProvider.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/HistoryTableProvider.java
deleted file mode 100644
index 528977f13..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/HistoryTableProvider.java
+++ /dev/null
@@ -1,428 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui;
-
-import java.text.DateFormat;
-import java.util.Date;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.viewers.*;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.*;
-import org.eclipse.swt.graphics.*;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.core.syncinfo.ResourceSyncInfo;
-
-/**
- * This class provides the table and it's required components for a file's revision
- * history
- */
-public class HistoryTableProvider {
-
- private ICVSFile currentFile;
- private String currentRevision;
- private TableViewer viewer;
- private Font currentRevisionFont;
-
- /**
- * Constructor for HistoryTableProvider.
- */
- public HistoryTableProvider() {
- super();
- }
-
- //column constants
- private static final int COL_REVISION = 0;
- private static final int COL_TAGS = 1;
- private static final int COL_DATE = 2;
- private static final int COL_AUTHOR = 3;
- private static final int COL_COMMENT = 4;
-
- /**
- * The history label provider.
- */
- class HistoryLabelProvider extends LabelProvider implements ITableLabelProvider, IColorProvider, IFontProvider {
- public Image getColumnImage(Object element, int columnIndex) {
- return null;
- }
- public String getColumnText(Object element, int columnIndex) {
- ILogEntry entry = adaptToLogEntry(element);
- if (entry == null) return ""; //$NON-NLS-1$
- switch (columnIndex) {
- case COL_REVISION:
- String revision = entry.getRevision();
- String currentRevision = getCurrentRevision();
- if (currentRevision != null && currentRevision.equals(revision)) {
- revision = Policy.bind("currentRevision", revision); //$NON-NLS-1$
- }
- return revision;
- case COL_TAGS:
- CVSTag[] tags = entry.getTags();
- StringBuffer result = new StringBuffer();
- for (int i = 0; i < tags.length; i++) {
- result.append(tags[i].getName());
- if (i < tags.length - 1) {
- result.append(", "); //$NON-NLS-1$
- }
- }
- return result.toString();
- case COL_DATE:
- Date date = entry.getDate();
- if (date == null) return Policy.bind("notAvailable"); //$NON-NLS-1$
- return DateFormat.getInstance().format(date);
- case COL_AUTHOR:
- return entry.getAuthor();
- case COL_COMMENT:
- String comment = entry.getComment();
- int index = comment.indexOf("\n"); //$NON-NLS-1$
- switch (index) {
- case -1:
- return comment;
- case 0:
- return Policy.bind("HistoryView.[...]_4"); //$NON-NLS-1$
- default:
- return Policy.bind("CVSCompareRevisionsInput.truncate", comment.substring(0, index)); //$NON-NLS-1$
- }
- }
- return ""; //$NON-NLS-1$
- }
- /* (non-Javadoc)
- * @see org.eclipse.jface.viewers.IColorProvider#getForeground(java.lang.Object)
- */
- public Color getForeground(Object element) {
- ILogEntry entry = adaptToLogEntry(element);
- if (entry.isDeletion()) {
- return Display.getCurrent().getSystemColor(SWT.COLOR_WIDGET_NORMAL_SHADOW);
- } else {
- return null;
- }
- }
- /* (non-Javadoc)
- * @see org.eclipse.jface.viewers.IColorProvider#getBackground(java.lang.Object)
- */
- public Color getBackground(Object element) {
- return null;
- }
- /*
- * (non-Javadoc)
- * @see org.eclipse.jface.viewers.IFontProvider#getFont(java.lang.Object)
- */
- public Font getFont(Object element) {
- ILogEntry entry = adaptToLogEntry(element);
- if (entry == null)
- return null;
- String revision = entry.getRevision();
- String currentRevision = getCurrentRevision();
- if (currentRevision != null && currentRevision.equals(revision)) {
- if (currentRevisionFont == null) {
- Font defaultFont = JFaceResources.getDefaultFont();
- FontData[] data = defaultFont.getFontData();
- for (int i = 0; i < data.length; i++) {
- data[i].setStyle(SWT.BOLD);
- }
- currentRevisionFont = new Font(viewer.getTable().getDisplay(), data);
- }
- return currentRevisionFont;
- }
- return null;
- }
- }
-
- /**
- * The history sorter
- */
- class HistorySorter extends ViewerSorter {
- private boolean reversed = false;
- private int columnNumber;
-
- private VersionCollator versionCollator = new VersionCollator();
-
- // column headings: "Revision" "Tags" "Date" "Author" "Comment"
- private int[][] SORT_ORDERS_BY_COLUMN = {
- {COL_REVISION, COL_DATE, COL_AUTHOR, COL_COMMENT, COL_TAGS}, /* revision */
- {COL_TAGS, COL_REVISION, COL_DATE, COL_AUTHOR, COL_COMMENT}, /* tags */
- {COL_DATE, COL_REVISION, COL_AUTHOR, COL_COMMENT, COL_TAGS}, /* date */
- {COL_AUTHOR, COL_REVISION, COL_DATE, COL_COMMENT, COL_TAGS}, /* author */
- {COL_COMMENT, COL_REVISION, COL_DATE, COL_AUTHOR, COL_TAGS} /* comment */
- };
-
- /**
- * The constructor.
- */
- public HistorySorter(int columnNumber) {
- this.columnNumber = columnNumber;
- }
- /**
- * Compares two log entries, sorting first by the main column of this sorter,
- * then by subsequent columns, depending on the column sort order.
- */
- public int compare(Viewer viewer, Object o1, Object o2) {
- ILogEntry e1 = adaptToLogEntry(o1);
- ILogEntry e2 = adaptToLogEntry(o2);
- int result = 0;
- if (e1 == null || e2 == null) {
- result = super.compare(viewer, o1, o2);
- } else {
- int[] columnSortOrder = SORT_ORDERS_BY_COLUMN[columnNumber];
- for (int i = 0; i < columnSortOrder.length; ++i) {
- result = compareColumnValue(columnSortOrder[i], e1, e2);
- if (result != 0)
- break;
- }
- }
- if (reversed)
- result = -result;
- return result;
- }
- /**
- * Compares two markers, based only on the value of the specified column.
- */
- int compareColumnValue(int columnNumber, ILogEntry e1, ILogEntry e2) {
- switch (columnNumber) {
- case 0: /* revision */
- return versionCollator.compare(e1.getRevision(), e2.getRevision());
- case 1: /* tags */
- CVSTag[] tags1 = e1.getTags();
- CVSTag[] tags2 = e2.getTags();
- if (tags2.length == 0) {
- return -1;
- }
- if (tags1.length == 0) {
- return 1;
- }
- return getCollator().compare(tags1[0].getName(), tags2[0].getName());
- case 2: /* date */
- Date date1 = e1.getDate();
- Date date2 = e2.getDate();
- return date1.compareTo(date2);
- case 3: /* author */
- return getCollator().compare(e1.getAuthor(), e2.getAuthor());
- case 4: /* comment */
- return getCollator().compare(e1.getComment(), e2.getComment());
- default:
- return 0;
- }
- }
- /**
- * Returns the number of the column by which this is sorting.
- */
- public int getColumnNumber() {
- return columnNumber;
- }
- /**
- * Returns true for descending, or false
- * for ascending sorting order.
- */
- public boolean isReversed() {
- return reversed;
- }
- /**
- * Sets the sorting order.
- */
- public void setReversed(boolean newReversed) {
- reversed = newReversed;
- }
- }
-
- protected ILogEntry adaptToLogEntry(Object element) {
- // Get the log entry for the provided object
- ILogEntry entry = null;
- if (element instanceof ILogEntry) {
- entry = (ILogEntry) element;
- } else if (element instanceof IAdaptable) {
- entry = (ILogEntry)((IAdaptable)element).getAdapter(ILogEntry.class);
- }
- return entry;
- }
-
- /**
- * Create a TableViewer that can be used to display a list of ILogEntry instances.
- * Ths method provides the labels and sorter but does not provide a content provider
- *
- * @param parent
- * @return TableViewer
- */
- public TableViewer createTable(Composite parent) {
- Table table = new Table(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.MULTI | SWT.FULL_SELECTION);
- table.setHeaderVisible(true);
- table.setLinesVisible(true);
- GridData data = new GridData(GridData.FILL_BOTH);
- table.setLayoutData(data);
-
- TableLayout layout = new TableLayout();
- table.setLayout(layout);
-
- TableViewer viewer = new TableViewer(table);
-
- createColumns(table, layout, viewer);
-
- viewer.setLabelProvider(new HistoryLabelProvider());
-
- // By default, reverse sort by revision.
- HistorySorter sorter = new HistorySorter(COL_REVISION);
- sorter.setReversed(true);
- viewer.setSorter(sorter);
-
- table.addDisposeListener(new DisposeListener() {
- public void widgetDisposed(DisposeEvent e) {
- if(currentRevisionFont != null) {
- currentRevisionFont.dispose();
- }
- }
- });
-
- this.viewer = viewer;
- return viewer;
- }
-
- /**
- * Create a CheckBoxTableViewer that can be used to display a list of ILogEntry instances.
- * Ths method provides the labels and sorter but does not provide a content provider
- *
- * @param parent
- * @return TableViewer
- */
- public CheckboxTableViewer createCheckBoxTable(Composite parent) {
- Table table = new Table(parent, SWT.CHECK | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);
- table.setHeaderVisible(true);
- table.setLinesVisible(true);
- GridData data = new GridData(GridData.FILL_BOTH);
- table.setLayoutData(data);
-
- TableLayout layout = new TableLayout();
- table.setLayout(layout);
-
- CheckboxTableViewer viewer = new CheckboxTableViewer(table);
-
- createColumns(table, layout, viewer);
-
- viewer.setLabelProvider(new HistoryLabelProvider());
-
- // By default, reverse sort by revision.
- HistorySorter sorter = new HistorySorter(COL_REVISION);
- sorter.setReversed(true);
- viewer.setSorter(sorter);
-
- table.addDisposeListener(new DisposeListener() {
- public void widgetDisposed(DisposeEvent e) {
- if(currentRevisionFont != null) {
- currentRevisionFont.dispose();
- }
- }
- });
-
- this.viewer = viewer;
- return viewer;
- }
-
- /**
- * Creates the columns for the history table.
- */
- private void createColumns(Table table, TableLayout layout, TableViewer viewer) {
- SelectionListener headerListener = getColumnListener(viewer);
- // revision
- TableColumn col = new TableColumn(table, SWT.NONE);
- col.setResizable(true);
- col.setText(Policy.bind("HistoryView.revision")); //$NON-NLS-1$
- col.addSelectionListener(headerListener);
- layout.addColumnData(new ColumnWeightData(20, true));
-
- // tags
- col = new TableColumn(table, SWT.NONE);
- col.setResizable(true);
- col.setText(Policy.bind("HistoryView.tags")); //$NON-NLS-1$
- col.addSelectionListener(headerListener);
- layout.addColumnData(new ColumnWeightData(20, true));
-
- // creation date
- col = new TableColumn(table, SWT.NONE);
- col.setResizable(true);
- col.setText(Policy.bind("HistoryView.date")); //$NON-NLS-1$
- col.addSelectionListener(headerListener);
- layout.addColumnData(new ColumnWeightData(20, true));
-
- // author
- col = new TableColumn(table, SWT.NONE);
- col.setResizable(true);
- col.setText(Policy.bind("HistoryView.author")); //$NON-NLS-1$
- col.addSelectionListener(headerListener);
- layout.addColumnData(new ColumnWeightData(20, true));
-
- //comment
- col = new TableColumn(table, SWT.NONE);
- col.setResizable(true);
- col.setText(Policy.bind("HistoryView.comment")); //$NON-NLS-1$
- col.addSelectionListener(headerListener);
- layout.addColumnData(new ColumnWeightData(50, true));
- }
-
- /**
- * Adds the listener that sets the sorter.
- */
- private SelectionListener getColumnListener(final TableViewer tableViewer) {
- /**
- * This class handles selections of the column headers.
- * Selection of the column header will cause resorting
- * of the shown tasks using that column's sorter.
- * Repeated selection of the header will toggle
- * sorting order (ascending versus descending).
- */
- return new SelectionAdapter() {
- /**
- * Handles the case of user selecting the
- * header area.
- * null
is returned.
- * Otherwise the opened view part is returned.
- */
- public static HistoryView openInActivePerspective() {
- try {
- return (HistoryView)CVSUIPlugin.getActivePage().showView(VIEW_ID);
- } catch (PartInitException pe) {
- return null;
- }
- }
- /** (Non-javadoc)
- * Method declared on IWorkbenchPart
- */
- public void setFocus() {
- if (tableViewer != null) {
- Table control = tableViewer.getTable();
- if (control != null && !control.isDisposed()) {
- control.setFocus();
- }
- }
- }
-
- /**
- * Shows the history for the given IResource in the view.
- *
- * Only files are supported for now.
- */
- public void showHistory(IResource resource, boolean refetch) {
- if (resource instanceof IFile) {
- IFile newfile = (IFile)resource;
- if(!refetch && this.file != null && newfile.equals(this.file)) {
- return;
- }
- this.file = newfile;
- RepositoryProvider teamProvider = RepositoryProvider.getProvider(file.getProject(), CVSProviderPlugin.getTypeId());
- if (teamProvider != null) {
- try {
- // for a file this will return the base
- ICVSRemoteFile remoteFile = (ICVSRemoteFile)CVSWorkspaceRoot.getRemoteResourceFor(file);
- if(remoteFile != null) {
- historyTableProvider.setFile(remoteFile);
- // input is set asynchronously so we can't assume that the view
- // has been populated until the job that queries for the history
- // has completed.
- tableViewer.setInput(remoteFile);
- setContentDescription(remoteFile.getName());
- setTitleToolTip(resource.getFullPath().toString());
- }
- } catch (TeamException e) {
- CVSUIPlugin.openError(getViewSite().getShell(), null, null, e);
- }
- }
- } else {
- this.file = null;
- tableViewer.setInput(null);
- setContentDescription(""); //$NON-NLS-1$
- setTitleToolTip(""); //$NON-NLS-1$
- }
- }
-
- /**
- * An editor has been activated. Fetch the history if it is shared with CVS and the history view
- * is visible in the current page.
- *
- * @param editor the active editor
- * @since 3.0
- */
- protected void editorActivated(IEditorPart editor) {
- // Only fetch contents if the view is shown in the current page.
- if (editor == null || !isLinkingEnabled() || !checkIfPageIsVisible()) {
- return;
- }
- IEditorInput input = editor.getEditorInput();
- // Handle compare editors opened from the Synchronize View
- if (input instanceof SyncInfoCompareInput) {
- SyncInfoCompareInput syncInput = (SyncInfoCompareInput) input;
- SyncInfo info = syncInput.getSyncInfo();
- if(info instanceof CVSSyncInfo && info.getLocal().getType() == IResource.FILE) {
- ICVSRemoteFile remote = (ICVSRemoteFile)info.getRemote();
- ICVSRemoteFile base = (ICVSRemoteFile)info.getBase();
- if(remote != null) {
- showHistory(remote, false);
- } else if(base != null) {
- showHistory(base, false);
- }
- }
- // Handle editors opened on remote files
- } else if(input instanceof RemoteFileEditorInput) {
- ICVSRemoteFile remote = ((RemoteFileEditorInput)input).getCVSRemoteFile();
- if(remote != null) {
- showHistory(remote, false);
- }
- // Handle regular file editors
- } else if (input instanceof IFileEditorInput) {
- IFileEditorInput fileInput = (IFileEditorInput) input;
- IFile file = fileInput.getFile();
- showHistory(file, false /* don't fetch if already cached */);
- }
- }
-
- private boolean checkIfPageIsVisible() {
- return getViewSite().getPage().isPartVisible(this);
- }
- /**
- * Shows the history for the given ICVSRemoteFile in the view.
- */
- public void showHistory(ICVSRemoteFile remoteFile, boolean refetch) {
- try {
- if (remoteFile == null) {
- tableViewer.setInput(null);
- setContentDescription(""); //$NON-NLS-1$
- setTitleToolTip(""); //$NON-NLS-1$
- return;
- }
- ICVSFile existingFile = historyTableProvider.getICVSFile();
- if(!refetch && existingFile != null && existingFile.equals(remoteFile)) return;
- this.file = null;
- historyTableProvider.setFile(remoteFile);
- tableViewer.setInput(remoteFile);
- setContentDescription(remoteFile.getName());
- setTitleToolTip(remoteFile.getRepositoryRelativePath());
- } catch (TeamException e) {
- CVSUIPlugin.openError(getViewSite().getShell(), null, null, e);
- }
- }
-
- private Action getContextMenuAction(String title, final boolean needsProgressDialog, final IWorkspaceRunnable action) {
- return new Action(title) {
- public void run() {
- try {
- if (file == null) return;
- ISelection selection = tableViewer.getSelection();
- if (!(selection instanceof IStructuredSelection)) return;
- IStructuredSelection ss = (IStructuredSelection)selection;
- Object o = ss.getFirstElement();
- currentSelection = (ILogEntry)o;
- if(needsProgressDialog) {
- PlatformUI.getWorkbench().getProgressService().run(true, true, new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- try {
- action.run(monitor);
- } catch (CoreException e) {
- throw new InvocationTargetException(e);
- }
- }
- });
- } else {
- try {
- action.run(null);
- } catch (CoreException e) {
- throw new InvocationTargetException(e);
- }
- }
- } catch (InvocationTargetException e) {
- CVSUIPlugin.openError(getViewSite().getShell(), null, null, e, CVSUIPlugin.LOG_NONTEAM_EXCEPTIONS);
- } catch (InterruptedException e) {
- // Do nothing
- }
- }
-
- public boolean isEnabled() {
- ISelection selection = tableViewer.getSelection();
- if (!(selection instanceof IStructuredSelection)) return false;
- IStructuredSelection ss = (IStructuredSelection)selection;
- if(ss.size() != 1) return false;
- return true;
- }
- };
- }
-
- private boolean confirmOverwrite() {
- if (file!=null && file.exists()) {
- ICVSFile cvsFile = CVSWorkspaceRoot.getCVSFileFor(file);
- try {
- if(cvsFile.isModified(null)) {
- String title = Policy.bind("HistoryView.overwriteTitle"); //$NON-NLS-1$
- String msg = Policy.bind("HistoryView.overwriteMsg"); //$NON-NLS-1$
- final MessageDialog dialog = new MessageDialog(getViewSite().getShell(), title, null, msg, MessageDialog.QUESTION, new String[] { IDialogConstants.YES_LABEL, IDialogConstants.CANCEL_LABEL }, 0);
- final int[] result = new int[1];
- getViewSite().getShell().getDisplay().syncExec(new Runnable() {
- public void run() {
- result[0] = dialog.open();
- }});
- if (result[0] != 0) {
- // cancel
- return false;
- }
- }
- } catch(CVSException e) {
- CVSUIPlugin.log(e);
- }
- }
- return true;
- }
-
- /*
- * Refresh the view by refetching the log entries for the remote file
- */
- private void refresh() {
- entries = null;
- BusyIndicator.showWhile(tableViewer.getTable().getDisplay(), new Runnable() {
- public void run() {
- // if a local file was fed to the history view then we will have to refetch the handle
- // to properly display the current revision marker.
- if(file != null) {
- ICVSRemoteFile remoteFile;
- try {
- remoteFile = (ICVSRemoteFile) CVSWorkspaceRoot.getRemoteResourceFor(file);
- historyTableProvider.setFile(remoteFile);
- } catch (CVSException e) {
- // use previously fetched remote file, but log error
- CVSUIPlugin.log(e);
- }
- }
- tableViewer.refresh();
- }
- });
- }
-
- /**
- * Select the revision in the receiver.
- */
- public void selectRevision(String revision) {
- if (entries == null) {
- return;
- }
-
- ILogEntry entry = null;
- for (int i = 0; i < entries.length; i++) {
- if (entries[i].getRevision().equals(revision)) {
- entry = entries[i];
- break;
- }
- }
-
- if (entry != null) {
- IStructuredSelection selection = new StructuredSelection(entry);
- tableViewer.setSelection(selection, true);
- }
- }
-
- /**
- * Enabled linking to the active editor
- * @since 3.0
- */
- public void setLinkingEnabled(boolean enabled) {
- this.linkingEnabled = enabled;
-
- // remember the last setting in the dialog settings
- settings.setValue(ICVSUIConstants.PREF_HISTORY_VIEW_EDITOR_LINKING, enabled);
-
- // if turning linking on, update the selection to correspond to the active editor
- if (enabled) {
- editorActivated(getSite().getPage().getActiveEditor());
- }
- }
-
- /**
- * Returns if linking to the ative editor is enabled or disabled.
- * @return boolean indicating state of editor linking.
- */
- private boolean isLinkingEnabled() {
- return linkingEnabled;
- }
-
- /*
- * Flatten the text in the multiline comment
- */
- public static String flattenText(String string) {
- StringBuffer buffer = new StringBuffer(string.length() + 20);
- boolean skipAdjacentLineSeparator = true;
- for (int i = 0; i < string.length(); i++) {
- char c = string.charAt(i);
- if (c == '\r' || c == '\n') {
- if (!skipAdjacentLineSeparator)
- buffer.append(Policy.bind("separator")); //$NON-NLS-1$
- skipAdjacentLineSeparator = true;
- } else {
- buffer.append(c);
- skipAdjacentLineSeparator = false;
- }
- }
- return buffer.toString();
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ICVSUIConstants.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ICVSUIConstants.java
deleted file mode 100644
index 8ac63fa4d..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ICVSUIConstants.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.team.internal.ccvs.ui;
-
-public interface ICVSUIConstants {
- public final String PREFIX = CVSUIPlugin.ID + "."; //$NON-NLS-1$
-
- // image path
- public final String ICON_PATH = "icons/full/"; //$NON-NLS-1$
-
- // images
- public final String IMG_CVS_CONSOLE = "eview16/console_view.gif"; //$NON-NLS-1$
- public final String IMG_CVS_PERSPECTIVE = "eview16/cvs_persp.gif"; //$NON-NLS-1$
-
- // overlays
- public final String IMG_MERGEABLE_CONFLICT = "ovr16/confauto_ov.gif"; //$NON-NLS-1$
- public final String IMG_QUESTIONABLE = "ovr16/question_ov.gif"; //$NON-NLS-1$
- public final String IMG_MERGED = "ovr16/merged_ov.gif"; //$NON-NLS-1$
- public final String IMG_EDITED = "ovr16/edited_ov.gif"; //$NON-NLS-1$
- public final String IMG_NO_REMOTEDIR = "ovr16/no_remotedir_ov.gif"; //$NON-NLS-1$
-
- // objects
- public final String IMG_REPOSITORY = "obj16/repository_rep.gif"; //$NON-NLS-1$
- public final String IMG_TAG = "obj16/tag.gif"; //$NON-NLS-1$
- public final String IMG_BRANCHES_CATEGORY = "obj16/branches_rep.gif"; //$NON-NLS-1$
- public final String IMG_VERSIONS_CATEGORY = "obj16/versions_rep.gif"; //$NON-NLS-1$
- public final String IMG_DATES_CATEGORY = "obj16/dates.gif"; //$NON-NLS-1$
-
- public final String IMG_MODULE = "obj16/module_rep.gif"; //$NON-NLS-1$
- public final String IMG_PROJECT_VERSION = "obj16/prjversions_rep.gif"; //$NON-NLS-1$
- public final String IMG_DATE = "obj16/date.gif"; //$NON-NLS-1$
- public final String IMG_CHANGELOG = "obj16/changelog_obj.gif"; //$NON-NLS-1$
-
- // toolbar
- public final String IMG_REFRESH = "elcl16/refresh.gif"; //$NON-NLS-1$
- public final String IMG_CLEAR = "elcl16/clear_co.gif"; //$NON-NLS-1$
- public final String IMG_COLLAPSE_ALL = "elcl16/collapseall.gif"; //$NON-NLS-1$
- public final String IMG_LINK_WITH_EDITOR = "elcl16/synced.gif"; //$NON-NLS-1$
- public final String IMG_REMOVE_CONSOLE = "elcl16/console_rem.gif"; //$NON-NLS-1$
-
- // toolbar (disabled)
- public final String IMG_REFRESH_DISABLED = "dlcl16/refresh.gif"; //$NON-NLS-1$
- public final String IMG_CLEAR_DISABLED = "dlcl16/clear_co.gif"; //$NON-NLS-1$
- public final String IMG_REMOVE_CONSOLE_DISABLED = "dlcl16/console_rem.gif"; //$NON-NLS-1$
-
- // toolbar (enabled)
- public final String IMG_REFRESH_ENABLED = "elcl16/refresh.gif"; //$NON-NLS-1$
- public final String IMG_CLEAR_ENABLED = "elcl16/clear_co.gif"; //$NON-NLS-1$
- public final String IMG_COLLAPSE_ALL_ENABLED = "elcl16/collapseall.gif"; //$NON-NLS-1$
- public final String IMG_LINK_WITH_EDITOR_ENABLED = "elcl16/synced.gif"; //$NON-NLS-1$
-
- // wizards
- public final String IMG_NEWLOCATION = "etool16/newlocation_wiz.gif"; //$NON-NLS-1$
- public final String IMG_CVSLOGO = "etool16/newconnect_wiz.gif"; //$NON-NLS-1$
-
- // preferences
- public final String PREF_SHOW_COMMENTS = "pref_show_comments"; //$NON-NLS-1$
- public final String PREF_SHOW_TAGS = "pref_show_tags"; //$NON-NLS-1$
- public final String PREF_HISTORY_VIEW_EDITOR_LINKING = "pref_history_view_linking"; //$NON-NLS-1$
- public final String PREF_PRUNE_EMPTY_DIRECTORIES = "pref_prune_empty_directories"; //$NON-NLS-1$
- public final String PREF_TIMEOUT = "pref_timeout"; //$NON-NLS-1$
- public final String PREF_QUIETNESS = "pref_quietness"; //$NON-NLS-1$
- public final String PREF_CVS_RSH = "pref_cvs_rsh"; //$NON-NLS-1$
- public final String PREF_CVS_RSH_PARAMETERS = "pref_cvs_rsh_parameters"; //$NON-NLS-1$
- public final String PREF_CVS_SERVER = "pref_cvs_server"; //$NON-NLS-1$
- public final String PREF_CONSIDER_CONTENTS = "pref_consider_contents"; //$NON-NLS-1$
- public final String PREF_REPLACE_UNMANAGED = "pref_replace_unmanaged"; //$NON-NLS-1$
- public final String PREF_COMPRESSION_LEVEL = "pref_compression_level"; //$NON-NLS-1$
- public final String PREF_TEXT_KSUBST = "pref_text_ksubst"; //$NON-NLS-1$
- public final String PREF_USE_PLATFORM_LINEEND = "pref_lineend"; //$NON-NLS-1$
- public final String PREF_PROMPT_ON_MIXED_TAGS = "pref_prompt_on_mixed_tags"; //$NON-NLS-1$
- public final String PREF_PROMPT_ON_SAVING_IN_SYNC = "pref_prompt_on_saving_in_sync"; //$NON-NLS-1$
- public final String PREF_SAVE_DIRTY_EDITORS = "pref_save_dirty_editors"; //$NON-NLS-1$
- public final String PREF_PROMPT_ON_CHANGE_GRANULARITY = "pref_prompt_on_change_granularity"; //$NON-NLS-1$
- public final String PREF_REPOSITORIES_ARE_BINARY = "pref_repositories_are_binary"; //$NON-NLS-1$
- public final String PREF_DETERMINE_SERVER_VERSION = "pref_determine_server_version"; //$NON-NLS-1$
- public final String PREF_CONFIRM_MOVE_TAG = "pref_confirm_move_tag"; //$NON-NLS-1$
- public final String PREF_DEBUG_PROTOCOL = "pref_debug_protocol"; //$NON-NLS-1$
- public final String PREF_WARN_REMEMBERING_MERGES = "pref_remember_merges"; //$NON-NLS-1$
- public final String PREF_FIRST_STARTUP = "pref_first_startup"; //$NON-NLS-1$
- public final String PREF_EXT_CONNECTION_METHOD_PROXY = "pref_ext_connection_method_proxy"; //$NON-NLS-1$
- public final String PREF_SHOW_COMPARE_REVISION_IN_DIALOG = "pref_show_compare_revision_in_dialog"; //$NON-NLS-1$
- public final String PREF_SHOW_AUTHOR_IN_EDITOR = "pref_show_author_in_editor"; //$NON-NLS-1$
- public final String PREF_COMMIT_SET_DEFAULT_ENABLEMENT = "pref_enable_commit_sets"; //$NON-NLS-1$
-
- // console preferences
- public final String PREF_CONSOLE_COMMAND_COLOR = "pref_console_command_color"; //$NON-NLS-1$
- public final String PREF_CONSOLE_MESSAGE_COLOR = "pref_console_message_color"; //$NON-NLS-1$
- public final String PREF_CONSOLE_ERROR_COLOR = "pref_console_error_color"; //$NON-NLS-1$
- public final String PREF_CONSOLE_FONT = "pref_console_font"; //$NON-NLS-1$
- public final String PREF_CONSOLE_SHOW_ON_MESSAGE = "pref_console_show_on_message"; //$NON-NLS-1$
- public final String PREF_CONSOLE_LIMIT_OUTPUT = "pref_console_limit_output"; //$NON-NLS-1$
- public final String PREF_CONSOLE_HIGH_WATER_MARK = "pref_console_high_water_mark"; //$NON-NLS-1$
- public final String PREF_CONSOLE_WRAP = "pref_console_wrap"; //$NON-NLS-1$
- public final String PREF_CONSOLE_WIDTH = "pref_console_width"; //$NON-NLS-1$
-
- // decorator preferences
- public final String PREF_FILETEXT_DECORATION = "pref_filetext_decoration"; //$NON-NLS-1$
- public final String PREF_FOLDERTEXT_DECORATION = "pref_foldertext_decoration"; //$NON-NLS-1$
- public final String PREF_PROJECTTEXT_DECORATION = "pref_projecttext_decoration"; //$NON-NLS-1$
-
- public final String PREF_SHOW_DIRTY_DECORATION = "pref_show_overlaydirty"; //$NON-NLS-1$
- public final String PREF_SHOW_ADDED_DECORATION = "pref_show_added"; //$NON-NLS-1$
- public final String PREF_SHOW_HASREMOTE_DECORATION = "pref_show_hasremote"; //$NON-NLS-1$
- public final String PREF_SHOW_NEWRESOURCE_DECORATION = "pref_show_newresource"; //$NON-NLS-1$
-
- public final String PREF_DIRTY_FLAG = "pref_dirty_flag"; //$NON-NLS-1$
- public final String PREF_ADDED_FLAG = "pref_added_flag"; //$NON-NLS-1$
-
- public final String PREF_CALCULATE_DIRTY = "pref_calculate_dirty"; //$NON-NLS-1$
-
- // watch/edit preferences
- public final String PREF_CHECKOUT_READ_ONLY = "pref_checkout_read_only"; //$NON-NLS-1$
- public final String PREF_EDIT_ACTION = "pref_edit_action"; //$NON-NLS-1$
- public final String PREF_EDIT_PROMPT_EDIT = "edit"; //$NON-NLS-1$
- public final String PREF_EDIT_PROMPT_HIGHJACK = "highjack"; //$NON-NLS-1$
- public final String PREF_EDIT_PROMPT = "pref_edit_prompt"; //$NON-NLS-1$
- public final String PREF_EDIT_PROMPT_NEVER = "never"; //$NON-NLS-1$
- public final String PREF_EDIT_PROMPT_ALWAYS = "always"; //$NON-NLS-1$
- public final String PREF_EDIT_PROMPT_IF_EDITORS = "only"; //$NON-NLS-1$
-
- // Repositories view preferences
- public final String PREF_GROUP_VERSIONS_BY_PROJECT = "pref_group_versions_by_project"; //$NON-NLS-1$
-
- // Work in Progress preferences
- public final String PREF_CHANGE_PERSPECTIVE_ON_SHOW_ANNOTATIONS= "pref_change_perspective_on_show_annotations"; //$NON-NLS-1$
- public final String PREF_DEFAULT_PERSPECTIVE_FOR_SHOW_ANNOTATIONS= "pref_default_perspective_for_show_annotations"; //$NON-NLS-1$
-
- // Wizard banners
- public final String IMG_WIZBAN_SHARE = "wizban/newconnect_wizban.gif"; //$NON-NLS-1$
- public final String IMG_WIZBAN_MERGE = "wizban/mergestream_wizban.gif"; //$NON-NLS-1$
- public final String IMG_WIZBAN_DIFF = "wizban/createpatch_wizban.gif"; //$NON-NLS-1$
- public final String IMG_WIZBAN_KEYWORD = "wizban/keywordsub_wizban.gif"; //$NON-NLS-1$
- public final String IMG_WIZBAN_NEW_LOCATION = "wizban/newlocation_wizban.gif"; //$NON-NLS-1$
- public final String IMG_WIZBAN_CHECKOUT = "wizban/newconnect_wizban.gif"; //$NON-NLS-1$
-
- // Properties
- public final String PROP_NAME = "cvs.name"; //$NON-NLS-1$
- public final String PROP_REVISION = "cvs.revision"; //$NON-NLS-1$
- public final String PROP_AUTHOR = "cvs.author"; //$NON-NLS-1$
- public final String PROP_COMMENT = "cvs.comment"; //$NON-NLS-1$
- public final String PROP_DATE = "cvs.date"; //$NON-NLS-1$
- public final String PROP_DIRTY = "cvs.dirty"; //$NON-NLS-1$
- public final String PROP_MODIFIED = "cvs.modified"; //$NON-NLS-1$
- public final String PROP_KEYWORD = "cvs.date"; //$NON-NLS-1$
- public final String PROP_TAG = "cvs.tag"; //$NON-NLS-1$
- public final String PROP_PERMISSIONS = "cvs.permissions"; //$NON-NLS-1$
- public final String PROP_HOST = "cvs.host"; //$NON-NLS-1$
- public final String PROP_USER = "cvs.user"; //$NON-NLS-1$
- public final String PROP_METHOD = "cvs.method"; //$NON-NLS-1$
- public final String PROP_PORT = "cvs.port"; //$NON-NLS-1$
- public final String PROP_ROOT = "cvs.root"; //$NON-NLS-1$
-
- // preference options
- public final int OPTION_NEVER = 1;
- public final int OPTION_PROMPT = 2;
- public final int OPTION_AUTOMATIC = 3;
-
- public final String OPTION_NO_PERSPECTIVE= "none"; //$NON-NLS-1$
-}
-
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/IHelpContextIds.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/IHelpContextIds.java
deleted file mode 100644
index 5088907cd..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/IHelpContextIds.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui;
-
-/**
- * Here's how to reference the help context in code:
- *
- * WorkbenchHelp.setHelp(actionOrControl, IHelpContextIds.NAME_DEFIED_BELOW);
- */
-public interface IHelpContextIds {
-
- public static final String PREFIX = CVSUIPlugin.ID + "."; //$NON-NLS-1$
-
- // Dialogs
- public static final String TAG_CONFIGURATION_OVERVIEW = PREFIX + "tag_configuration_overview"; //$NON-NLS-1$
- public static final String TAG_CONFIGURATION_REFRESHLIST = PREFIX + "tag_configuration_refreshlist"; //$NON-NLS-1$
- public static final String TAG_CONFIGURATION_REFRESHACTION = PREFIX + "tag_configuration_refreshaction"; //$NON-NLS-1$
- public static final String USER_VALIDATION_DIALOG = PREFIX + "user_validation_dialog_context"; //$NON-NLS-1$
- public static final String RELEASE_COMMENT_DIALOG = PREFIX + "release_comment_dialog_context"; //$NON-NLS-1$
- public static final String BRANCH_DIALOG = PREFIX + "branch_dialog_context"; //$NON-NLS-1$
- public static final String ADD_TO_VERSION_CONTROL_DIALOG = PREFIX + "add_to_version_control_dialog_context"; //$NON-NLS-1$
- public static final String EDITORS_DIALOG = PREFIX + "editors_dialog_context"; //$NON-NLS-1$
- public static final String HISTORY_FILTER_DIALOG = PREFIX + "history_filter_dialog_context"; //$NON-NLS-1$
- public static final String DATE_TAG_DIALOG = PREFIX + "date_tag_dialog_context"; //$NON-NLS-1$
- public static final String KEYBOARD_INTERACTIVE_DIALOG = PREFIX + "keyboard_interactive_dialog_context"; //$NON-NLS-1$
- public static final String COMMIT_SET_DIALOG = PREFIX + "commit_set_dialog_context"; //$NON-NLS-1$
-
- // Different uses of the TagSelectionDialog
- public static final String REPLACE_TAG_SELECTION_DIALOG = PREFIX + "replace_tag_selection_dialog_context"; //$NON-NLS-1$
- public static final String COMPARE_TAG_SELECTION_DIALOG = PREFIX + "compare_tag_selection_dialog_context"; //$NON-NLS-1$
- public static final String TAG_REMOTE_WITH_EXISTING_DIALOG = PREFIX + "tag_remote_with_existing_dialog_context"; //$NON-NLS-1$
-
- // Different uses of the TagAsVersionDialog
- public static final String TAG_AS_VERSION_DIALOG = PREFIX + "tag_as_version_dialog_context"; //$NON-NLS-1$
-
- // Wizard Pages
- public static final String SHARING_AUTOCONNECT_PAGE = PREFIX + "sharing_autoconnect_page_context"; //$NON-NLS-1$
- public static final String SHARING_SELECT_REPOSITORY_PAGE = PREFIX + "sharing_select_repository_page_context"; //$NON-NLS-1$
- public static final String SHARING_NEW_REPOSITORY_PAGE = PREFIX + "sharing_new_repository_page_context"; //$NON-NLS-1$
- public static final String SHARING_MODULE_PAGE = PREFIX + "sharing_module_page_context"; //$NON-NLS-1$
- public static final String SHARING_TAG_SELETION_PAGE = PREFIX + "sharing_tag_selection_page_context"; //$NON-NLS-1$
- public static final String SHARING_SYNC_PAGE = PREFIX + "sharing_sync_page_context"; //$NON-NLS-1$
-
- public static final String PATCH_SELECTION_PAGE = PREFIX + "patch_selection_page_context"; //$NON-NLS-1$
- public static final String PATCH_OPTIONS_PAGE = PREFIX + "patch_options_page_context"; //$NON-NLS-1$
-
- public static final String KEYWORD_SUBSTITUTION_SELECTION_PAGE = PREFIX + "keyword_substituton_selection_page_context"; //$NON-NLS-1$
- public static final String KEYWORD_SUBSTITUTION_SUMMARY_PAGE = PREFIX + "keyword_substituton_summary_page_context"; //$NON-NLS-1$
- public static final String KEYWORD_SUBSTITUTION_SHARED_PAGE = PREFIX + "keyword_substituton_shared_page_context"; //$NON-NLS-1$
- public static final String KEYWORD_SUBSTITUTION_CHANGED_PAGE = PREFIX + "keyword_substituton_changed_page_context"; //$NON-NLS-1$
- public static final String KEYWORD_SUBSTITUTION_COMMIT_COMMENT_PAGE = PREFIX + "keyword_substituton_commit_comment_page_context"; //$NON-NLS-1$
-
- public static final String MERGE_START_PAGE = PREFIX + "merge_start_page_context"; //$NON-NLS-1$
- public static final String MERGE_END_PAGE = PREFIX + "merge_end_page_context"; //$NON-NLS-1$
-
- public static final String CHECKOUT_MODULE_SELECTION_PAGE = PREFIX + "checkout_module_selection_context"; //$NON-NLS-1$
- public static final String CHECKOUT_CONFIGURATION_PAGE = PREFIX + "checkout_configuration_context"; //$NON-NLS-1$
- public static final String CHECKOUT_LOCATION_SELECTION_PAGE = PREFIX + "checkout_location_selection_context"; //$NON-NLS-1$
- public static final String CHECKOUT_PROJECT_SELECTION_PAGE = PREFIX + "checkout_into_resource_selection_page_context"; //$NON-NLS-1$
- public static final String CHECKOUT_TAG_SELETION_PAGE = PREFIX + "checkout_tag_selection_page_context"; //$NON-NLS-1$
-
- public static final String UPDATE_TAG_SELETION_PAGE = PREFIX + "update_tag_selection_page_context"; //$NON-NLS-1$
-
- public static final String RESTORE_FROM_REPOSITORY_FILE_SELECTION_PAGE = PREFIX + "restore_from_repository_file_selection_page_context"; //$NON-NLS-1$
- public static final String REFRESH_REMOTE_PROJECT_SELECTION_PAGE = PREFIX + "refresh_remote_project_selection_page_context"; //$NON-NLS-1$
-
- // Preference Pages
- public static final String PREF_PRUNE = PREFIX + "prune_empty_directories_pref"; //$NON-NLS-1$
- public static final String PREF_QUIET = PREFIX + "quietness_level_pref"; //$NON-NLS-1$
- public static final String PREF_COMPRESSION = PREFIX + "compression_level_pref"; //$NON-NLS-1$
- public static final String PREF_KEYWORDMODE = PREFIX + "default_keywordmode_pref"; //$NON-NLS-1$
- public static final String PREF_LINEEND = PREFIX + "line_end_pref"; //$NON-NLS-1$
- public static final String PREF_COMMS_TIMEOUT = PREFIX + "comms_timeout_pref"; //$NON-NLS-1$
- public static final String PREF_CONSIDER_CONTENT = PREFIX + "consider_content_pref"; //$NON-NLS-1$
- public static final String PREF_REPLACE_DELETE_UNMANAGED = PREFIX + "replace_deletion_of_unmanaged_pref"; //$NON-NLS-1$
- public static final String PREF_SAVE_DIRTY_EDITORS = PREFIX + "save_dirty_editors_pref"; //$NON-NLS-1$
-
- public static final String PREF_TREAT_NEW_FILE_AS_BINARY = PREFIX + "treat_new_files_as_binary_pref"; //$NON-NLS-1$
- public static final String PREF_DETERMINE_SERVER_VERSION = PREFIX + "determine_server_version"; //$NON-NLS-1$
- public static final String PREF_CONFIRM_MOVE_TAG = PREFIX + "confirm_move_tag"; //$NON-NLS-1$
-
- public static final String CONSOLE_PREFERENCE_PAGE = PREFIX + "console_preference_page_context"; //$NON-NLS-1$
- public static final String EXT_PREFERENCE_PAGE = PREFIX + "ext_preference_page_context"; //$NON-NLS-1$
- public static final String EXT_PREFERENCE_RSH = PREFIX + "ext_preference_rsh_context"; //$NON-NLS-1$
- public static final String EXT_PREFERENCE_PARAM = PREFIX + "ext_preference_param_context"; //$NON-NLS-1$
- public static final String EXT_PREFERENCE_SERVER = PREFIX + "ext_preference_server_context"; //$NON-NLS-1$
- public static final String DECORATORS_PREFERENCE_PAGE = PREFIX + "decorators_preference_page_context"; //$NON-NLS-1$
- public static final String WATCH_EDIT_PREFERENCE_PAGE = PREFIX + "watch_edit_preference_page_context"; //$NON-NLS-1$
- public static final String PASSWORD_MANAGEMENT_PAGE = PREFIX + "password_management_preference_page_context"; //$NON-NLS-1$
- public static final String COMPARE_PREFERENCE_PAGE = PREFIX + "cvs_compare_preference_page_context"; //$NON-NLS-1$
-
- // Views
- public static final String CONSOLE_VIEW = PREFIX + "console_view_context"; //$NON-NLS-1$
- public static final String REPOSITORIES_VIEW = PREFIX + "repositories_view_context"; //$NON-NLS-1$
- public static final String RESOURCE_HISTORY_VIEW = PREFIX + "resource_history_view_context"; //$NON-NLS-1$
- public static final String COMPARE_REVISIONS_VIEW = PREFIX + "compare_revision_view_context"; //$NON-NLS-1$
-
- public static final String CVS_EDITORS_VIEW = PREFIX + "cvs_editors_view_context"; //$NON-NLS-1$
- public static final String ANNOTATE_VIEW = PREFIX + "annotate_view_context"; //$NON-NLS-1$
-
- // Viewers
- public static final String CATCHUP_RELEASE_VIEWER = PREFIX + "catchup_release_viewer_context"; //$NON-NLS-1$
-
- // Add to .cvsignore dialog
- public static final String ADD_TO_CVSIGNORE = PREFIX + "add_to_cvsignore_context"; //$NON-NLS-1$
-
- // Actions
- public static final String GET_ANNOTATE_ACTION = PREFIX + "get_annotate_action_context"; //$NON-NLS-1$
- public static final String GET_FILE_REVISION_ACTION = PREFIX + "get_file_revision_action_context"; //$NON-NLS-1$
- public static final String GET_FILE_CONTENTS_ACTION = PREFIX + "get_file_contents_action_context"; //$NON-NLS-1$
- public static final String TAG_WITH_EXISTING_ACTION = PREFIX + "tag_with_existing_action_context"; //$NON-NLS-1$
- public static final String NEW_REPOSITORY_LOCATION_ACTION = PREFIX + "new_repository_location_action_context"; //$NON-NLS-1$
- public static final String NEW_DEV_ECLIPSE_REPOSITORY_LOCATION_ACTION = PREFIX + "new_dev_eclipse repository_location_action_context"; //$NON-NLS-1$
- public static final String SHOW_COMMENT_IN_HISTORY_ACTION = PREFIX + "show_comment_in_history_action_context"; //$NON-NLS-1$
- public static final String SHOW_TAGS_IN_HISTORY_ACTION = PREFIX + "show_tag_in_history_action_context"; //$NON-NLS-1$
- public static final String SELECT_WORKING_SET_ACTION = PREFIX + "select_working_set_action_context"; //$NON-NLS-1$
- public static final String DESELECT_WORKING_SET_ACTION = PREFIX + "deselect_working_set_action_context"; //$NON-NLS-1$
- public static final String EDIT_WORKING_SET_ACTION = PREFIX + "edit_working_set_action_context"; //$NON-NLS-1$
- public static final String REMOVE_REPOSITORY_LOCATION_ACTION = PREFIX + "remove_root_action_context"; //$NON-NLS-1$
- public static final String SHOW_IN_RESOURCE_HISTORY = PREFIX + "show_in_history_action_context"; //$NON-NLS-1$
- public static final String SELECT_NEW_RESOURCES_ACTION = PREFIX + "select_new_action_context"; //$NON-NLS-1$
- public static final String CONFIRM_MERGE_ACTION = PREFIX + "confirm_merge_action_context"; //$NON-NLS-1$;
- public static final String DISCONNECT_ACTION = PREFIX + "disconnect_action_context"; //$NON-NLS-1$;
-
- // Sync view menu actions
- public static final String SYNC_COMMIT_ACTION = PREFIX + "sync_commit_action_context"; //$NON-NLS-1$
- public static final String SYNC_FORCED_COMMIT_ACTION = PREFIX + "sync_forced_commit_action_context"; //$NON-NLS-1$
- public static final String SYNC_UPDATE_ACTION = PREFIX + "sync_update_action_context"; //$NON-NLS-1$
- public static final String SYNC_FORCED_UPDATE_ACTION = PREFIX + "sync_forced_update_action_context"; //$NON-NLS-1$
- public static final String SYNC_ADD_ACTION = PREFIX + "sync_add_action_context"; //$NON-NLS-1$
- public static final String SYNC_IGNORE_ACTION = PREFIX + "sync_ignore_action_context"; //$NON-NLS-1$
- public static final String MERGE_UPDATE_ACTION = PREFIX + "merge_update_action_context"; //$NON-NLS-1$
- public static final String MERGE_FORCED_UPDATE_ACTION = PREFIX + "merge_forced_update_action_context"; //$NON-NLS-1$
- public static final String MERGE_UPDATE_WITH_JOIN_ACTION = PREFIX + "merge_update_with_joinaction_context"; //$NON-NLS-1$
-
- // properties pages
- public static final String REPOSITORY_LOCATION_PROPERTY_PAGE = PREFIX + "repository_location_property_page_context"; //$NON-NLS-1$
- public static final String REPOSITORY_ENCODING_PROPERTY_PAGE = PREFIX + "repository_encoding_property_page_context"; //$NON-NLS-1$
- public static final String PROJECT_PROPERTY_PAGE = PREFIX + "project_property_page_context"; //$NON-NLS-1$
- public static final String FOLDER_PROPERTY_PAGE = PREFIX + "folder_property_page_context"; //$NON-NLS-1$
- public static final String FILE_PROPERTY_PAGE = PREFIX + "file_property_page_context"; //$NON-NLS-1$
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/IRepositoryListener.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/IRepositoryListener.java
deleted file mode 100644
index e488cdf7f..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/IRepositoryListener.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui;
-
-import org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation;
-
-public interface IRepositoryListener {
- public void repositoryAdded(ICVSRepositoryLocation root);
- public void repositoryRemoved(ICVSRepositoryLocation root);
- public void repositoriesChanged(ICVSRepositoryLocation[] roots);
-}
-
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/IgnoreResourcesDialog.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/IgnoreResourcesDialog.java
deleted file mode 100644
index 6348357fb..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/IgnoreResourcesDialog.java
+++ /dev/null
@@ -1,248 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.jface.resource.JFaceColors;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.team.internal.ccvs.core.util.FileNameMatcher;
-import org.eclipse.ui.help.WorkbenchHelp;
-
-public class IgnoreResourcesDialog extends Dialog {
- // resources that should be ignored
- private IResource[] resources;
-
- // preference keys
- private final String ACTION_KEY = "Action"; //$NON-NLS-1$
- private static final int ADD_NAME_ENTRY = 0;
- private static final int ADD_EXTENSION_ENTRY = 1;
- private static final int ADD_CUSTOM_ENTRY = 2;
-
- // dialogs settings that are persistent between workbench sessions
- private IDialogSettings settings;
-
- // buttons
- private Button addNameEntryButton;
- private Button addExtensionEntryButton;
- private Button addCustomEntryButton;
- private Text customEntryText;
- private Label statusMessageLabel;
-
- private int selectedAction;
- private String customPattern;
-
- // layout controls
- private static final int LABEL_INDENT_WIDTH = 32;
-
- /**
- * Creates a new dialog for ignoring resources.
- * @param shell the parent shell
- * @param resources the array of resources to be ignored
- */
- public IgnoreResourcesDialog(Shell shell, IResource[] resources) {
- super(shell);
- this.resources = resources;
-
- IDialogSettings workbenchSettings = CVSUIPlugin.getPlugin().getDialogSettings();
- this.settings = workbenchSettings.getSection("IgnoreResourcesDialog");//$NON-NLS-1$
- if (settings == null) {
- this.settings = workbenchSettings.addNewSection("IgnoreResourcesDialog");//$NON-NLS-1$
- }
-
- try {
- selectedAction = settings.getInt(ACTION_KEY);
- } catch (NumberFormatException e) {
- selectedAction = ADD_NAME_ENTRY;
- }
- }
-
- /**
- * Determines the ignore pattern to use for a resource given the selected action.
- *
- * @param resource the resource
- * @return the ignore pattern for the specified resource
- */
- public String getIgnorePatternFor(IResource resource) {
- switch (selectedAction) {
- case ADD_NAME_ENTRY:
- return resource.getName();
- case ADD_EXTENSION_ENTRY: {
- String extension = resource.getFileExtension();
- return (extension == null) ? resource.getName() : "*." + extension; //$NON-NLS-1$
- }
- case ADD_CUSTOM_ENTRY:
- return customPattern;
- }
- throw new IllegalStateException();
- }
-
- /* (non-Javadoc)
- * Method declared on Dialog.
- */
- protected void createButtonsForButtonBar(Composite parent) {
- createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true);
- createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false);
- }
-
- /* (non-Javadoc)
- * Method declared on Dialog.
- */
- protected void configureShell(Shell newShell) {
- super.configureShell(newShell);
- if (resources.length == 1) {
- newShell.setText(Policy.bind("IgnoreResourcesDialog.titleSingle", resources[0].getName())); //$NON-NLS-1$
- } else {
- newShell.setText(Policy.bind("IgnoreResourcesDialog.titleMany", Integer.toString(resources.length))); //$NON-NLS-1$
- }
- }
-
- /* (non-Javadoc)
- * Method declared on Dialog.
- */
- protected Control createContents(Composite parent) {
- Control control = super.createContents(parent);
- updateEnablements();
- return control;
- }
-
- /* (non-Javadoc)
- * Method declared on Dialog.
- */
- protected Control createDialogArea(Composite parent) {
- Composite top = new Composite(parent, SWT.NONE);
- top.setLayout(new GridLayout());
-
- WorkbenchHelp.setHelp(top, IHelpContextIds.ADD_TO_CVSIGNORE);
-
- createIndentedLabel(top, Policy.bind("IgnoreResourcesDialog.prompt"), 0); //$NON-NLS-1$
-
- Listener selectionListener = new Listener() {
- public void handleEvent(Event event) {
- updateEnablements();
- }
- };
- Listener modifyListener = new Listener() {
- public void handleEvent(Event event) {
- validate();
- }
- };
-
- addNameEntryButton = createRadioButton(top, Policy.bind("IgnoreResourcesDialog.addNameEntryButton")); //$NON-NLS-1$
- addNameEntryButton.addListener(SWT.Selection, selectionListener);
- addNameEntryButton.setSelection(selectedAction == ADD_NAME_ENTRY);
- createIndentedLabel(top, Policy.bind("IgnoreResourcesDialog.addNameEntryExample"), LABEL_INDENT_WIDTH); //$NON-NLS-1$
-
- addExtensionEntryButton = createRadioButton(top, Policy.bind("IgnoreResourcesDialog.addExtensionEntryButton")); //$NON-NLS-1$
- addExtensionEntryButton.addListener(SWT.Selection, selectionListener);
- addExtensionEntryButton.setSelection(selectedAction == ADD_EXTENSION_ENTRY);
- createIndentedLabel(top, Policy.bind("IgnoreResourcesDialog.addExtensionEntryExample"), LABEL_INDENT_WIDTH); //$NON-NLS-1$
-
- addCustomEntryButton = createRadioButton(top, Policy.bind("IgnoreResourcesDialog.addCustomEntryButton")); //$NON-NLS-1$
- addCustomEntryButton.addListener(SWT.Selection, selectionListener);
- addCustomEntryButton.setSelection(selectedAction == ADD_CUSTOM_ENTRY);
- createIndentedLabel(top, Policy.bind("IgnoreResourcesDialog.addCustomEntryExample"), LABEL_INDENT_WIDTH); //$NON-NLS-1$
-
- customEntryText = createIndentedText(top, resources[0].getName(), LABEL_INDENT_WIDTH);
- customEntryText.addListener(SWT.Modify, modifyListener);
-
- statusMessageLabel = createIndentedLabel(top, "", 0); //$NON-NLS-1$
- Dialog.applyDialogFont(parent);
- return top;
- }
-
- /* (non-Javadoc)
- * Method declared on Dialog.
- */
- protected void okPressed() {
- settings.put(ACTION_KEY, selectedAction);
- super.okPressed();
- }
-
- private Label createIndentedLabel(Composite parent, String text, int indent) {
- Label label = new Label(parent, SWT.LEFT);
- label.setText(text);
- GridData data = new GridData(GridData.VERTICAL_ALIGN_FILL | GridData.FILL_HORIZONTAL);
- data.horizontalIndent = indent;
- label.setLayoutData(data);
- return label;
- }
-
- private Text createIndentedText(Composite parent, String text, int indent) {
- Text textbox = new Text(parent, SWT.BORDER);
- textbox.setText(text);
- GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
- data.horizontalIndent = indent;
- textbox.setLayoutData(data);
- return textbox;
- }
-
- private Button createRadioButton(Composite parent, String text) {
- Button button = new Button(parent, SWT.RADIO);
- button.setText(text);
- button.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_FILL | GridData.FILL_HORIZONTAL));
- return button;
- }
-
- private void updateEnablements() {
- if (addNameEntryButton.getSelection()) {
- selectedAction = ADD_NAME_ENTRY;
- } else if (addExtensionEntryButton.getSelection()) {
- selectedAction = ADD_EXTENSION_ENTRY;
- } else if (addCustomEntryButton.getSelection()) {
- selectedAction = ADD_CUSTOM_ENTRY;
- }
- customEntryText.setEnabled(selectedAction == ADD_CUSTOM_ENTRY);
- validate();
- }
-
- private void validate() {
- if (selectedAction == ADD_CUSTOM_ENTRY) {
- customPattern = customEntryText.getText();
- if (customPattern.length() == 0) {
- setError(Policy.bind("IgnoreResourcesDialog.patternMustNotBeEmpty")); //$NON-NLS-1$
- return;
- }
- FileNameMatcher matcher = new FileNameMatcher(new String[] { customPattern });
- for (int i = 0; i < resources.length; i++) {
- String name = resources[i].getName();
- if (! matcher.match(name)) {
- setError(Policy.bind("IgnoreResourcesDialog.patternDoesNotMatchFile", name)); //$NON-NLS-1$
- return;
- }
- }
- }
- setError(null);
- }
-
- private void setError(String text) {
- if (text == null) {
- statusMessageLabel.setText(""); //$NON-NLS-1$
- getButton(IDialogConstants.OK_ID).setEnabled(true);
- } else {
- statusMessageLabel.setText(text);
- statusMessageLabel.setForeground(JFaceColors.getErrorText(getShell().getDisplay()));
- getButton(IDialogConstants.OK_ID).setEnabled(false);
- }
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/KeyboardInteractiveDialog.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/KeyboardInteractiveDialog.java
deleted file mode 100644
index 5add39551..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/KeyboardInteractiveDialog.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/* -*-mode:java; c-basic-offset:2; -*- */
-/**********************************************************************
-Copyright (c) 2004, Atsuhiko Yamanaka, JCraft,Inc. and others.
-All rights reserved. This program and the accompanying materials
-are made available under the terms of the Common Public License v1.0
-which accompanies this distribution, and is available at
-http://www.eclipse.org/legal/cpl-v10.html
-
-Contributors:
- Atsuhiko Yamanaka, JCraft,Inc. - initial API and implementation.
-**********************************************************************/
-package org.eclipse.team.internal.ccvs.ui;
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.ui.help.WorkbenchHelp;
-
-/**
- * A dialog for keyboad-interactive authentication for the ssh2 connection.
- */
-public class KeyboardInteractiveDialog extends Dialog {
- // widgets
- private Text[] texts;
-
- protected String domain;
- protected String destination;
- protected String name;
- protected String instruction;
- protected String lang;
- protected String[] prompt;
- protected boolean[] echo;
- private String message;
- private String[] result;
-
- /**
- * Creates a nwe KeyboardInteractiveDialog.
- *
- * @param parentShell the parent shell
- * @param destication the location
- * @param name the name
- * @param instruction the instruction
- * @param prompt the titles for textfields
- * @param echo '*' should be used or not
- */
- public KeyboardInteractiveDialog(Shell parentShell,
- String location,
- String destination,
- String name,
- String instruction,
- String[] prompt,
- boolean[] echo){
- super(parentShell);
- this.domain=location;
- this.destination=destination;
- this.name=name;
- this.instruction=instruction;
- this.prompt=prompt;
- this.echo=echo;
- this.message=Policy.bind("KeyboradInteractiveDialog.message", destination+(name!=null && name.length()>0 ? ": "+name : "")); //NON-NLS-1$ //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- }
- /**
- * @see Window#configureShell
- */
- protected void configureShell(Shell newShell) {
- super.configureShell(newShell);
- newShell.setText(message);
- }
- /**
- * @see Window#create
- */
- public void create() {
- super.create();
- if(texts.length>0){
- texts[0].setFocus();
- }
- }
- /**
- * @see Dialog#createDialogArea
- */
- protected Control createDialogArea(Composite parent) {
- Composite main=new Composite(parent, SWT.NONE);
- GridLayout layout=new GridLayout();
- layout.numColumns=3;
- main.setLayout(layout);
- main.setLayoutData(new GridData(GridData.FILL_BOTH));
-
- // set F1 help
- WorkbenchHelp.setHelp(main, IHelpContextIds.KEYBOARD_INTERACTIVE_DIALOG);
-
- if (message!=null) {
- Label messageLabel=new Label(main, SWT.WRAP);
- messageLabel.setText(message);
- GridData data=new GridData(GridData.FILL_HORIZONTAL);
- data.horizontalSpan=3;
- messageLabel.setLayoutData(data);
- }
- if(domain!=null){
- Label label = new Label(main, SWT.WRAP);
- label.setText(Policy.bind("KeyboardInteractiveDialog.labelRepository", domain)); //$NON-NLS-1$
- GridData data=new GridData(GridData.FILL_HORIZONTAL);
- data.horizontalSpan=3;
- label.setLayoutData(data);
- }
- if (instruction!=null && instruction.length()>0) {
- Label messageLabel=new Label(main, SWT.WRAP);
- messageLabel.setText(instruction);
- GridData data=new GridData(GridData.FILL_HORIZONTAL);
- data.horizontalSpan=3;
- messageLabel.setLayoutData(data);
- }
- createPasswordFields(main);
- return main;
- }
- /**
- * Creates the widgets that represent the entry area.
- *
- * @param parent the parent of the widgets
- */
- protected void createPasswordFields(Composite parent) {
- texts=new Text[prompt.length];
-
- for(int i=0; iWindow.OK
- * and closes the dialog. Subclasses may override.
- * Window.CANCEL
- * and closes the dialog. Subclasses may override.
- *
- * This method is primarily used to determine if an editor input should
- * appear in the "File Most Recently Used" menu. An editor input will appear
- * in the list until the return value of exists
becomes
- * false
or it drops off the bottom of the list.
- *
- * @return true
if the editor input exists; false
- * otherwise
- */
- public boolean exists() {
- return true;
- }
- public boolean equals(Object o) {
- if (!(o instanceof RemoteFileEditorInput)) return false;
- RemoteFileEditorInput input = (RemoteFileEditorInput)o;
- return file.equals(input.file);
- }
- /**
- * Returns an object which is an instance of the given class
- * associated with this object. Returns null
if
- * no such object can be found.
- *
- * @param adapter the adapter class to look up
- * @return a object castable to the given class,
- * or null
if this object does not
- * have an adapter for the given class
- */
- public Object getAdapter(Class adapter) {
- if (adapter == IWorkbenchAdapter.class) {
- return this;
- }
- return null;
- }
- /**
- * Returns the children of this object. When this object
- * is displayed in a tree, the returned objects will be this
- * element's children. Returns an empty array if this
- * object has no children.
- *
- * @param object The object to get the children for.
- */
- public Object[] getChildren(Object o) {
- return new Object[0];
- }
- /**
- * Returns the content type of the input. For instance, if the input
- * wraps an IFile
the content type would be derived from
- * the extension or mime type. If the input wraps another object it
- * may just be the object type. The content type is used for
- * editor mapping.
- */
- public String getContentType() {
- String name = file.getName();
- return name.substring(name.lastIndexOf('.')+1);
- }
- /**
- * Returns the fully qualified path name of the input.
- */
- public String getFullPath() {
- //use path to make sure slashes are correct
- ICVSRepositoryLocation location = file.getRepository();
- IPath path = new Path(null, location.getRootDirectory());
- path = path.setDevice(location.getHost() + Path.DEVICE_SEPARATOR);
- path = path.append(file.getRepositoryRelativePath());
- String fullPath;
- try {
- String revision = file.getRevision();
- fullPath = Policy.bind("RemoteFileEditorInput.fullPathAndRevision", path.toString(), revision); //$NON-NLS-1$
- } catch (TeamException e) {
- CVSUIPlugin.log(e);
- fullPath = path.toString();
- }
- return fullPath;
- }
- /**
- * Returns the image descriptor for this input.
- *
- * @return the image descriptor for this input
- */
- public ImageDescriptor getImageDescriptor() {
- IWorkbenchAdapter fileAdapter = (IWorkbenchAdapter)file.getAdapter(IWorkbenchAdapter.class);
- return fileAdapter == null ? null : fileAdapter.getImageDescriptor(file);
- }
- /**
- * @see IWorkbenchAdapter#getImageDescriptor
- */
- public ImageDescriptor getImageDescriptor(Object object) {
- IWorkbenchAdapter fileAdapter = (IWorkbenchAdapter)file.getAdapter(IWorkbenchAdapter.class);
- return fileAdapter == null ? null : fileAdapter.getImageDescriptor(file);
- }
- /**
- * @see IWorkbenchAdapter#getLabel
- */
- public String getLabel(Object o) {
- return file.getName();
- }
- /**
- * Returns the input name for display purposes. For instance, if
- * the fully qualified input name is "a\b\MyFile.gif" the return value for
- * getName
is "MyFile.gif".
- */
- public String getName() {
- String name = file.getName();
- try {
- return Policy.bind("nameAndRevision", name, file.getRevision()); //$NON-NLS-1$
- } catch (TeamException e) {
- return name;
- }
- }
- /**
- * Returns the logical parent of the given object in its tree.
- * Returns null
if there is no parent, or if this object doesn't
- * belong to a tree.
- *
- * @param object The object to get the parent for.
- */
- public Object getParent(Object o) {
- return null;
- }
- /*
- * Returns an interface used to persist the object. If the editor input
- * cannot be persisted this method returns null
.
- */
- public IPersistableElement getPersistable() {
- //not persistable
- return null;
- }
- /**
- * Returns the underlying IStorage object.
- *
- * @return an IStorage object.
- * @exception CoreException if this method fails
- */
- public IStorage getStorage() throws CoreException {
- if (storage == null) {
- initializeStorage(file, new NullProgressMonitor());
- }
- return storage;
- }
- /**
- * Returns the tool tip text for this editor input. This text
- * is used to differentiate between two input with the same name.
- * For instance, MyClass.java in folder X and MyClass.java in folder Y.
- *
- * The format of the path will vary with each input type. For instance,
- * if the editor input is of type IFileEditorInput
this method
- * should return the fully qualified resource path. For editor input of
- * other types it may be different.
- *
null
- * if the provider doesn't not have access to a CVS managed file.
- * @return the handle to a CVS file
- */
- private ICVSFile getManagedCVSFile() throws CVSException {
- if(fEditor != null) {
- IFile file = getFileFromEditor();
- if(file != null && CVSWorkspaceRoot.isSharedWithCVS(file)) {
- return CVSWorkspaceRoot.getCVSFileFor(file);
- }
- }
- return null;
- }
-
- private IFile getFileFromEditor() {
- if(fEditor != null) {
- IEditorInput input= fEditor.getEditorInput();
- if (input instanceof IFileEditorInput) {
- return ((IFileEditorInput)input).getFile();
- }
- }
- return null;
- }
-
- /**
- * Runs a job that updates the document. If a previous job is already running it
- * is stopped before the new job can start.
- */
- private void fetchContentsInJob() {
- if(! fReferenceInitialized) return;
- if(fUpdateJob != null && fUpdateJob.getState() != Job.NONE) {
- fUpdateJob.cancel();
- }
- fUpdateJob = new Job(Policy.bind("RemoteRevisionQuickDiffProvider.fetchingFile")) { //$NON-NLS-1$
- protected IStatus run(IProgressMonitor monitor) {
- try {
- readDocument(monitor);
- } catch (CoreException e) {
- // continue and return ok for now. The error will be reported
- // when the quick diff supports calls getReference() again.
- // continue
- }
- return Status.OK_STATUS;
- }
- };
- fUpdateJob.schedule();
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ResizableWizardDialog.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ResizableWizardDialog.java
deleted file mode 100644
index 2025039f5..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ResizableWizardDialog.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui;
-
-
-import org.eclipse.jface.wizard.IWizard;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Shell;
-
-public class ResizableWizardDialog extends WizardDialog {
- /**
- * Creates a new resizable wizard dialog.
- */
- public ResizableWizardDialog(Shell parent, IWizard wizard) {
- super(parent, wizard);
- setShellStyle(getShellStyle() | SWT.RESIZE);
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ResourceEditionNode.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ResourceEditionNode.java
deleted file mode 100644
index 20e229e79..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ResourceEditionNode.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui;
-
-
-import java.io.ByteArrayInputStream;
-import java.io.InputStream;
-import java.lang.reflect.InvocationTargetException;
-import org.eclipse.compare.CompareUI;
-import org.eclipse.compare.IEncodedStreamContentAccessor;
-import org.eclipse.compare.IStreamContentAccessor;
-import org.eclipse.compare.ITypedElement;
-import org.eclipse.compare.structuremergeviewer.IStructureComparator;
-import org.eclipse.core.internal.dtree.IComparator;
-import org.eclipse.core.resources.IEncodedStorage;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IStorage;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.variants.IResourceVariant;
-import org.eclipse.team.internal.ccvs.core.ICVSRemoteResource;
-
-/**
- * A class for comparing ICVSRemoteResource objects
- */
-public class ResourceEditionNode implements IStructureComparator, ITypedElement, IEncodedStreamContentAccessor {
- private ICVSRemoteResource resource;
- private ResourceEditionNode[] children;
-
- /**
- * Creates a new ResourceEditionNode on the given resource edition.
- */
- public ResourceEditionNode(ICVSRemoteResource resourceEdition) {
- this.resource = resourceEdition;
- }
-
- /**
- * Returns true if both resources names are identical.
- * The content is not considered.
- * @see IComparator#equals
- */
- public boolean equals(Object other) {
- if (other instanceof ITypedElement) {
- String otherName = ((ITypedElement)other).getName();
- return getName().equals(otherName);
- }
- return super.equals(other);
- }
-
- /**
- * Enumerate children of this node (if any).
- */
- public Object[] getChildren() {
- if (children == null) {
- children = new ResourceEditionNode[0];
- if (resource != null) {
- try {
- CVSUIPlugin.runWithProgress(null, true /*cancelable*/, new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- try {
- ICVSRemoteResource[] members = resource.members(monitor);
- children = new ResourceEditionNode[members.length];
- for (int i = 0; i < members.length; i++) {
- children[i] = new ResourceEditionNode(members[i]);
- }
- } catch (TeamException e) {
- throw new InvocationTargetException(e);
- }
- }
- });
- } catch (InterruptedException e) {
- // operation canceled
- } catch (InvocationTargetException e) {
- Throwable t = e.getTargetException();
- if (t instanceof TeamException) {
- CVSUIPlugin.log(((TeamException) t));
- }
- }
- }
- }
- return children;
- }
-
- /**
- * @see IStreamContentAccessor#getContents()
- */
- public InputStream getContents() throws CoreException {
- IStorage storage = getStorage();
- if (storage != null) {
- return storage.getContents();
- }
- return new ByteArrayInputStream(new byte[0]);
- }
-
- public Image getImage() {
- return CompareUI.getImage(resource);
- }
-
- /**
- * Returns the name of this node.
- */
- public String getName() {
- return resource == null ? "" : resource.getName(); //$NON-NLS-1$
- }
-
- public ICVSRemoteResource getRemoteResource() {
- return resource;
- }
-
- /**
- * Returns the comparison type for this node.
- */
- public String getType() {
- if (resource == null) {
- return UNKNOWN_TYPE;
- }
- if (resource.isContainer()) {
- return FOLDER_TYPE;
- }
- String name = resource.getName();
- name = name.substring(name.lastIndexOf('.') + 1);
- return name.length() == 0 ? UNKNOWN_TYPE : name;
- }
-
- /**
- * @see IComparator#equals
- */
- public int hashCode() {
- return getName().hashCode();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.compare.IEncodedStreamContentAccessor#getCharset()
- */
- public String getCharset() throws CoreException {
- // Use the local file encoding if there is one
- IResource local = resource.getIResource();
- if (local != null && local.getType() == IResource.FILE) {
- return ((IFile)local).getCharset();
- }
- // See if the remote file has an encoding
- IStorage storage = getStorage();
- if (storage instanceof IEncodedStorage) {
- String charset = ((IEncodedStorage)storage).getCharset();
- if (charset != null) {
- return charset;
- }
- }
- return null;
- }
-
- private IStorage getStorage() throws TeamException {
- if (resource == null) {
- return null;
- }
- final IStorage[] holder = new IStorage[1];
- try {
- CVSUIPlugin.runWithProgress(null, true /*cancelable*/, new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- try {
- holder[0] = ((IResourceVariant)resource).getStorage(monitor);
- } catch (TeamException e) {
- throw new InvocationTargetException(e);
- }
- }
- });
- } catch (InvocationTargetException e) {
- throw TeamException.asTeamException(e);
- } catch (InterruptedException e) {
- // Shouldn't happen. Ignore
- }
- return holder[0];
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ResourcePropertiesPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ResourcePropertiesPage.java
deleted file mode 100644
index 35c401709..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ResourcePropertiesPage.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui;
-
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.ICVSFolder;
-import org.eclipse.team.internal.ccvs.core.ICVSResource;
-import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot;
-import org.eclipse.team.internal.ccvs.core.syncinfo.ResourceSyncInfo;
-import org.eclipse.ui.dialogs.PropertyPage;
-
-/**
- * A property page which displays the CVS-specific properties for the
- * selected resource.
- */
-public class ResourcePropertiesPage extends PropertyPage {
- // The resource to show properties for
- IResource resource;
-
- /*
- * @see PreferencePage#createContents(Composite)
- */
- protected Control createContents(Composite parent) {
- Composite composite = new Composite(parent, SWT.NONE);
- GridLayout layout = new GridLayout();
- layout.numColumns = 2;
- layout.marginHeight = layout.marginWidth = 0;
- composite.setLayout(layout);
- composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
- try {
- IResource resource = getSelectedElement();
- if (resource != null) {
- ICVSResource cvsResource = CVSWorkspaceRoot.getCVSResourceFor(resource);
- if (!cvsResource.isManaged()) {
- createPair(composite, Policy.bind("ResourcePropertiesPage.status"), Policy.bind("ResourcePropertiesPage.notManaged")); //$NON-NLS-1$ //$NON-NLS-2$
- } else {
- boolean hasRemote = false;
- if(cvsResource.isFolder()) {
- hasRemote = ((ICVSFolder)cvsResource).isCVSFolder();
- } else {
- ResourceSyncInfo info = cvsResource.getSyncInfo();
- if(info!=null && !info.isAdded()) {
- hasRemote = true;
- }
- }
- createPair(composite, Policy.bind("ResourcePropertiesPage.status"), hasRemote ? Policy.bind("ResourcePropertiesPage.versioned") : Policy.bind("ResourcePropertiesPage.notVersioned")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- }
- }
- } catch (TeamException e) {
- createPair(composite, Policy.bind("ResourcePropertiesPage.error"), e.getMessage()); //$NON-NLS-1$
- }
- Dialog.applyDialogFont(parent);
- return composite;
- }
-
- /**
- * Creates a key-value property pair in the given parent.
- *
- * @param parent the parent for the labels
- * @param left the string for the left label
- * @param right the string for the right label
- */
- protected void createPair(Composite parent, String left, String right) {
- Label label = new Label(parent, SWT.NONE);
- label.setText(left);
-
- label = new Label(parent, SWT.NONE);
- label.setText(right);
- label.setToolTipText(right);
- label.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- }
-
- /**
- * Returns the element selected when the properties was run
- *
- * @return the selected element
- */
- protected IResource getSelectedElement() {
- // get the resource that is the source of this property page
- IResource resource = null;
- IAdaptable element = getElement();
- if (element instanceof IResource) {
- resource = (IResource)element;
- } else {
- Object adapter = element.getAdapter(IResource.class);
- if (adapter instanceof IResource) {
- resource = (IResource)adapter;
- }
- }
- return resource;
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/SimpleContentProvider.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/SimpleContentProvider.java
deleted file mode 100644
index 6fa9117f8..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/SimpleContentProvider.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui;
-
-
-import org.eclipse.jface.viewers.*;
-
-/**
- * A default content provider to prevent subclasses from
- * having to implement methods they don't need.
- */
-public class SimpleContentProvider implements IStructuredContentProvider {
-
- /**
- * SimpleContentProvider constructor.
- */
- public SimpleContentProvider() {
- super();
- }
-
- /*
- * @see SimpleContentProvider#dispose()
- */
- public void dispose() {
- }
-
- /*
- * @see SimpleContentProvider#getElements()
- */
- public Object[] getElements(Object element) {
- return new Object[0];
- }
-
- /*
- * @see SimpleContentProvider#inputChanged()
- */
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/TagetLocationSelectionDialog.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/TagetLocationSelectionDialog.java
deleted file mode 100644
index 5e3317424..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/TagetLocationSelectionDialog.java
+++ /dev/null
@@ -1,438 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui;
-
-import java.io.File;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IWorkspace;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.resource.JFaceColors;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.DirectoryDialog;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.dialogs.SelectionDialog;
-
-/**
- * Select the target location that will be the parent of the selected projects.
- * The behavior of the dialog differs between 1 project and multiple projects.
- * For one project, the location specified is the location of the project and
- * the project name can be modified. For multiple projects, it is the parent
- * location which is specified.
- */
-public class TagetLocationSelectionDialog extends SelectionDialog {
-
- // widgets
- private Text projectNameField;
- private Text locationPathField;
- private Label locationLabel;
- private Label statusMessageLabel;
- private Button browseButton;
-
- // state
- private boolean useDefaults = true;
- private IProject[] targetProjects;
- private String newProjectName;
- private String targetLocation;
-
- // constants
- private static final int SIZING_TEXT_FIELD_WIDTH = 250;
-
- /**
- * Constructor.
- * @param parentShell
- */
- public TagetLocationSelectionDialog(Shell parentShell, String title, IProject targetProject) {
- this(parentShell, title, new IProject[] { targetProject });
- }
-
- /**
- * Constructor.
- * @param parentShell
- */
- public TagetLocationSelectionDialog(Shell parentShell, String title, IProject[] targetProjects) {
- super(parentShell);
- setTitle(title);
- this.targetProjects = targetProjects;
- if (targetProjects.length == 1) newProjectName = targetProjects[0].getName();
- }
-
- /* (non-Javadoc)
- * Method declared on Dialog.
- */
- protected Control createDialogArea(Composite parent) {
- // page group
- Composite composite = (Composite) super.createDialogArea(parent);
- composite.setLayout(new GridLayout());
- composite.setLayoutData(new GridData(GridData.FILL_BOTH));
-
- if (isSingleCheckout())
- createProjectNameGroup(composite);
- createProjectLocationGroup(composite);
-
- //Add in a label for status messages if required
- statusMessageLabel = new Label(composite, SWT.NONE);
- statusMessageLabel.setLayoutData(new GridData(GridData.FILL_BOTH));
-
- Dialog.applyDialogFont(parent);
- return composite;
- }
-
- /**
- * Creates the project name specification controls.
- *
- * @param parent the parent composite
- */
- private void createProjectNameGroup(Composite parent) {
- // project specification group
- Composite projectGroup = new Composite(parent,SWT.NONE);
- GridLayout layout = new GridLayout();
- layout.numColumns = 2;
- projectGroup.setLayout(layout);
- projectGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
- // new project label
- Label projectLabel = new Label(projectGroup,SWT.NONE);
- projectLabel.setText(Policy.bind("TargetLocationSelectionDialog.projectNameLabel")); //$NON-NLS-1$
-
- // new project name entry field
- projectNameField = new Text(projectGroup, SWT.BORDER);
- GridData data = new GridData(GridData.FILL_HORIZONTAL);
- data.widthHint = SIZING_TEXT_FIELD_WIDTH;
- projectNameField.setLayoutData(data);
-
- // Set the initial value first before listener
- // to avoid handling an event during the creation.
- projectNameField.setText(getNewProjectName());
- projectNameField.selectAll();
-
- createNameListener();
-
- }
-
- /**
- * Create the listener that is used to validate the entries for the receiver
- */
- private void createNameListener() {
-
- Listener listener = new Listener() {
- public void handleEvent(Event event) {
- newProjectName = projectNameField.getText();
- setLocationForSelection(false);
- applyValidationResult(checkValid());
- }
- };
-
- this.projectNameField.addListener(SWT.Modify, listener);
- }
-
- /**
- * Set the location to the default location if we are set to useDefaults.
- */
- private void setLocationForSelection(boolean changed) {
- if (useDefaults) {
- IPath defaultPath = null;
- if (isSingleCheckout()) {
- try {
- defaultPath = getSingleProject().getDescription().getLocation();
- } catch (CoreException e) {
- // ignore
- }
- if (defaultPath == null) {
- defaultPath = Platform.getLocation().append(getSingleProject().getName());
- }
- } else {
- defaultPath = Platform.getLocation();
- }
- locationPathField.setText(defaultPath.toOSString());
- targetLocation = null;
- } else if (changed) {
- IPath location = null;
- try {
- location = this.targetProjects[0].getDescription().getLocation();
- } catch (CoreException e) {
- // ignore the exception
- }
- if (location == null) {
- targetLocation = null;
- locationPathField.setText(""); //$NON-NLS-1$
- } else {
- if (isSingleCheckout()) {
- targetLocation = location.toOSString();
- } else {
- targetLocation = location.removeLastSegments(1).toOSString();
- }
- locationPathField.setText(targetLocation);
- }
- }
- }
-
- /**
- * Creates the project location specification controls.
- *
- * @param parent the parent composite
- */
- private final void createProjectLocationGroup(Composite parent) {
-
- // project specification group
- Composite projectGroup = new Composite(parent, SWT.NONE);
- GridLayout layout = new GridLayout();
- layout.numColumns = 3;
- projectGroup.setLayout(layout);
- projectGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
- final Button useDefaultsButton =
- new Button(projectGroup, SWT.CHECK | SWT.RIGHT);
- useDefaultsButton.setText(Policy.bind("TargetLocationSelectionDialog.useDefaultLabel")); //$NON-NLS-1$
- useDefaultsButton.setSelection(this.useDefaults);
- GridData buttonData = new GridData();
- buttonData.horizontalSpan = 3;
- useDefaultsButton.setLayoutData(buttonData);
-
- createUserSpecifiedProjectLocationGroup(projectGroup, !this.useDefaults);
-
- SelectionListener listener = new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- useDefaults = useDefaultsButton.getSelection();
- browseButton.setEnabled(!useDefaults);
- locationPathField.setEnabled(!useDefaults);
- locationLabel.setEnabled(!useDefaults);
- setLocationForSelection(true);
- }
- };
- useDefaultsButton.addSelectionListener(listener);
- }
-
- /**
- * Creates the project location specification controls.
- *
- * @return the parent of the widgets created
- * @param projectGroup the parent composite
- * @param enabled - sets the initial enabled state of the widgets
- */
- private Composite createUserSpecifiedProjectLocationGroup(Composite projectGroup, boolean enabled) {
-
- // location label
- locationLabel = new Label(projectGroup, SWT.NONE);
- if (isSingleCheckout()) {
- locationLabel.setText(Policy.bind("TargetLocationSelectionDialog.locationLabel")); //$NON-NLS-1$
- } else {
- locationLabel.setText(Policy.bind("TargetLocationSelectionDialog.parentDirectoryLabel")); //$NON-NLS-1$
- }
- locationLabel.setEnabled(enabled);
-
- // project location entry field
- locationPathField = new Text(projectGroup, SWT.BORDER);
- GridData data = new GridData(GridData.FILL_HORIZONTAL);
- data.widthHint = SIZING_TEXT_FIELD_WIDTH;
- locationPathField.setLayoutData(data);
- locationPathField.setEnabled(enabled);
-
- // browse button
- this.browseButton = new Button(projectGroup, SWT.PUSH);
- this.browseButton.setText(Policy.bind("TargetLocationSelectionDialog.browseLabel")); //$NON-NLS-1$
- this.browseButton.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent event) {
- handleLocationBrowseButtonPressed();
- }
- });
- this.browseButton.setEnabled(enabled);
- setButtonLayoutData(this.browseButton);
-
- // Set the initial value first before listener
- // to avoid handling an event during the creation.
- setLocationForSelection(true);
- createLocationListener();
- return projectGroup;
-
- }
-
- /**
- * Open an appropriate directory browser
- */
- private void handleLocationBrowseButtonPressed() {
- DirectoryDialog dialog = new DirectoryDialog(locationPathField.getShell());
- if (isSingleCheckout()) {
- dialog.setMessage(Policy.bind("TargetLocationSelectionDialog.messageForSingle", newProjectName)); //$NON-NLS-1$
- } else {
- dialog.setMessage(Policy.bind("TargetLocationSelectionDialog.messageForMulti", new Integer(targetProjects.length).toString())); //$NON-NLS-1$
- }
-
- String dirName = locationPathField.getText();
- if (!dirName.equals("")) {//$NON-NLS-1$
- File path = new File(dirName);
- if (path.exists())
- dialog.setFilterPath(dirName);
- }
-
- String selectedDirectory = dialog.open();
- if (selectedDirectory != null) {
- if (targetProjects.length == 1) {
- locationPathField.setText(new Path(selectedDirectory).append(newProjectName).toOSString());
- } else {
- locationPathField.setText(new Path(selectedDirectory).toOSString());
- }
- }
- targetLocation = locationPathField.getText();
- }
-
- /**
- * Method isSingleCheckout.
- * @return boolean
- */
- private boolean isSingleCheckout() {
- return targetProjects.length == 1;
- }
-
- private IProject getSingleProject() {
- if (newProjectName == null || newProjectName.length() == 0 || targetProjects[0].getName().equals(newProjectName))
- return targetProjects[0];
- else
- return ResourcesPlugin.getWorkspace().getRoot().getProject(newProjectName);
- }
-
- /**
- * Create the listener that is used to validate the location entered by the iser
- */
- private void createLocationListener() {
-
- Listener listener = new Listener() {
- public void handleEvent(Event event) {
- applyValidationResult(checkValid());
- }
- };
-
- this.locationPathField.addListener(SWT.Modify, listener);
- }
-
- /**
- * Check the message. If it is null then continue otherwise inform the user via the
- * status value and disable the OK.
- * @param message - the error message to show if it is not null.
- */
- private void applyValidationResult(String errorMsg) {
-
- if (errorMsg == null) {
- statusMessageLabel.setText("");//$NON-NLS-1$
- getOkButton().setEnabled(true);
- } else {
- statusMessageLabel.setForeground(
- JFaceColors.getErrorText(
- statusMessageLabel.getDisplay()));
- statusMessageLabel.setText(errorMsg);
- getOkButton().setEnabled(false);
- }
- }
- /**
- * Check whether the entries are valid. If so return null. Otherwise
- * return a string that indicates the problem.
- */
- private String checkValid() {
- if (isSingleCheckout()) {
- String valid = checkValidName();
- if (valid != null)
- return valid;
- }
- return checkValidLocation();
- }
- /**
- * Check if the entry in the widget location is valid. If it is valid return null. Otherwise
- * return a string that indicates the problem.
- */
- private String checkValidLocation() {
-
- if (useDefaults) {
- targetLocation = null;
- return null;
- } else {
- targetLocation = locationPathField.getText();
- if (targetLocation.equals("")) {//$NON-NLS-1$
- return(Policy.bind("TagetLocationSelectionDialog.locationEmpty")); //$NON-NLS-1$
- }
- else{
- IPath path = new Path("");//$NON-NLS-1$
- if (!path.isValidPath(targetLocation)) {
- return Policy.bind("TagetLocationSelectionDialog.invalidLocation"); //$NON-NLS-1$
- }
- }
-
- if (isSingleCheckout()) {
- IStatus locationStatus =
- ResourcesPlugin.getWorkspace().validateProjectLocation(
- getSingleProject(),
- new Path(targetLocation));
-
- if (!locationStatus.isOK())
- return locationStatus.getMessage();
- } else {
- for (int i = 0; i < targetProjects.length; i++) {
- ResourcesPlugin.getWorkspace().validateProjectLocation(
- targetProjects[i],
- new Path(targetLocation).append(targetProjects[i].getName()));
- }
- }
-
- return null;
- }
- }
- /**
- * Check if the entries in the widget are valid. If they are return null otherwise
- * return a string that indicates the problem.
- */
- private String checkValidName() {
-
- newProjectName = this.projectNameField.getText();
- IWorkspace workspace = ResourcesPlugin.getWorkspace();
- IStatus nameStatus = workspace.validateName(newProjectName, IResource.PROJECT);
- if (!nameStatus.isOK())
- return nameStatus.getMessage();
-// IProject newProject = workspace.getRoot().getProject(newProjectName);
-// if (newProject.exists()) {
-// return Policy.bind("TagetLocationSelectionDialog.alreadyExists", newProjectName); //$NON-NLS-1$
-// }
-
- return null;
- }
-
- /**
- * @return String
- */
- public String getNewProjectName() {
- return newProjectName;
- }
-
- /**
- * @return String
- */
- public String getTargetLocation() {
- return targetLocation;
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/TextViewerAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/TextViewerAction.java
deleted file mode 100644
index f2491e590..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/TextViewerAction.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui;
-
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.text.ITextOperationTarget;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.ui.texteditor.IUpdate;
-
-public class TextViewerAction extends Action implements IUpdate {
- private int operationCode = -1;
- private ITextOperationTarget operationTarget;
-
- public TextViewerAction(ITextViewer viewer, int operationCode) {
- this.operationCode = operationCode;
- operationTarget = viewer.getTextOperationTarget();
- update();
- }
- public void update() {
- boolean wasEnabled = isEnabled();
- boolean isEnabled = (operationTarget != null && operationTarget.canDoOperation(operationCode));
- setEnabled(isEnabled);
- if (wasEnabled != isEnabled) {
- firePropertyChange(ENABLED, wasEnabled ? Boolean.TRUE : Boolean.FALSE, isEnabled ? Boolean.TRUE : Boolean.FALSE);
- }
- }
- public void run() {
- if (operationCode != -1 && operationTarget != null) {
- operationTarget.doOperation(operationCode);
- }
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/TimeoutProgressMonitorDialog.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/TimeoutProgressMonitorDialog.java
deleted file mode 100644
index 4b7d1f0ce..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/TimeoutProgressMonitorDialog.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.jface.dialogs.ProgressMonitorDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.operation.ModalContext;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-
-public class TimeoutProgressMonitorDialog extends ProgressMonitorDialog {
- // the timeout
- private int timeout;
- // the number of currently running runnables.
- private int runningRunnables = 0;
-
- /**
- * Creates a progress monitor dialog under the given shell.
- * The dialog has a standard title and no image.
- * open
is non-blocking.
- *
- * @param parent the parent shell
- * @param timeout the delay after which the dialog will be opened during a run()
- */
- public TimeoutProgressMonitorDialog(Shell parent, int timeout) {
- super(parent);
- this.timeout = timeout;
- }
-
- /* (non-Javadoc)
- * Method declared on ITeamRunnableContext.
- * Runs the given IRunnableWithProgress
with the progress monitor for this
- * progress dialog. The dialog is opened before it is run, and closed after it completes.
- */
- public void run(final boolean fork, boolean cancelable, final IRunnableWithProgress runnable) throws InvocationTargetException, InterruptedException {
- setCancelable(cancelable);
- create(); // create the Shell but don't open it yet
- try {
- runningRunnables++;
- final Display display = getShell().getDisplay();
- display.timerExec(timeout, new Runnable() {
- public void run() {
- Shell shell = getShell();
- if (shell != null && ! shell.isDisposed()) open();
- }
- });
-
- final Exception[] holder = new Exception[1];
- BusyIndicator.showWhile(display, new Runnable() {
- public void run() {
- try {
- ModalContext.run(runnable, fork, getProgressMonitor(), display);
- } catch (InvocationTargetException ite) {
- holder[0] = ite;
- } catch (InterruptedException ie) {
- holder[0] = ie;
- }
- }
- });
- if (holder[0] != null) {
- if (holder[0] instanceof InvocationTargetException) {
- throw (InvocationTargetException) holder[0];
- } else if (holder[0] instanceof InterruptedException) {
- throw (InterruptedException) holder[0];
- }
- }
- } finally {
- runningRunnables--;
- close();
- }
- }
-
- public boolean close() {
- if (runningRunnables <= 0) return super.close();
- return false;
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/UserValidationDialog.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/UserValidationDialog.java
deleted file mode 100644
index 6aad93aed..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/UserValidationDialog.java
+++ /dev/null
@@ -1,286 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui;
-
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.team.internal.ui.ITeamUIImages;
-import org.eclipse.team.ui.TeamImages;
-import org.eclipse.ui.help.WorkbenchHelp;
-
-/**
- * A dialog for prompting for a username and password
- */
-public class UserValidationDialog extends Dialog {
- // widgets
- protected Text usernameField;
- protected Text passwordField;
- protected Button allowCachingButton;
-
- protected String domain;
- protected String defaultUsername;
- protected String password = null;
- protected boolean allowCaching = false;
- protected Image keyLockImage;
-
- // whether or not the username can be changed
- protected boolean isUsernameMutable = true;
- protected boolean showAllowCachingButton = true;
- protected String username = null;
- protected String message = null;
-
- /**
- * Creates a new UserValidationDialog.
- *
- * @param parentShell the parent shell
- * @param location the location
- * @param defaultName the default user name
- * @param message a mesage to display to the user
- */
- public UserValidationDialog(Shell parentShell, String location, String defaultName, String message) {
- super(parentShell);
- this.defaultUsername = defaultName;
- this.domain = location;
- this.message = message;
- }
- /**
- * @see Window#configureShell
- */
- protected void configureShell(Shell newShell) {
- super.configureShell(newShell);
- newShell.setText(Policy.bind("UserValidationDialog.required")); //$NON-NLS-1$
- // set F1 help
- WorkbenchHelp.setHelp(newShell, IHelpContextIds.USER_VALIDATION_DIALOG);
- }
- /**
- * @see Window#create
- */
- public void create() {
- super.create();
- // add some default values
- usernameField.setText(defaultUsername);
-
- if (isUsernameMutable) {
- // give focus to username field
- usernameField.selectAll();
- usernameField.setFocus();
- } else {
- usernameField.setEditable(false);
- passwordField.setFocus();
- }
- }
-
- /**
- * @see Dialog#createDialogArea
- */
- protected Control createDialogArea(Composite parent) {
- Composite top = new Composite(parent, SWT.NONE);
- GridLayout layout = new GridLayout();
- layout.numColumns = 2;
-
- top.setLayout(layout);
- top.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
- Composite imageComposite = new Composite(top, SWT.NONE);
- layout = new GridLayout();
- imageComposite.setLayout(layout);
- imageComposite.setLayoutData(new GridData(GridData.FILL_VERTICAL));
-
- Composite main = new Composite(top, SWT.NONE);
- layout = new GridLayout();
- layout.numColumns = 3;
- main.setLayout(layout);
- main.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
- Label imageLabel = new Label(imageComposite, SWT.NONE);
- keyLockImage = TeamImages.getImageDescriptor(ITeamUIImages.IMG_KEY_LOCK).createImage();
- imageLabel.setImage(keyLockImage);
- GridData data = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
- imageLabel.setLayoutData(data);
-
- if (message != null) {
- Label messageLabel = new Label(main, SWT.WRAP);
- messageLabel.setText(message);
- data = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
- data.horizontalSpan = 3;
- data.widthHint = 300;
- messageLabel.setLayoutData(data);
- }
- if (domain != null) {
- Label d = new Label(main, SWT.WRAP);
- d.setText(Policy.bind("UserValidationDialog.5")); //$NON-NLS-1$
- data = new GridData();
- d.setLayoutData(data);
- Label label = new Label(main, SWT.WRAP);
- if (isUsernameMutable) {
- label.setText(Policy.bind("UserValidationDialog.labelUser", domain)); //$NON-NLS-1$
- } else {
- label.setText(Policy.bind("UserValidationDialog.labelPassword", new Object[]{defaultUsername, domain})); //$NON-NLS-1$
- }
- data = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
- data.horizontalSpan = 2;
- data.widthHint = 300;
- label.setLayoutData(data);
- }
- createUsernameFields(main);
- createPasswordFields(main);
-
- if(domain != null && showAllowCachingButton) {
- allowCachingButton = new Button(main, SWT.CHECK);
- allowCachingButton.setText(Policy.bind("UserValidationDialog.6")); //$NON-NLS-1$
- data = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
- data.horizontalSpan = 3;
- allowCachingButton.setLayoutData(data);
- allowCachingButton.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- allowCaching = allowCachingButton.getSelection();
- }
- });
- Composite warningComposite = new Composite(main, SWT.NONE);
- layout = new GridLayout();
- layout.numColumns = 2;
- layout.marginHeight = 0;
- layout.marginHeight = 0;
- warningComposite.setLayout(layout);
- data = new GridData(GridData.FILL_HORIZONTAL);
- data.horizontalSpan = 3;
- warningComposite.setLayoutData(data);
- Label warningLabel = new Label(warningComposite, SWT.NONE);
- warningLabel.setImage(getImage(DLG_IMG_MESSAGE_WARNING));
- warningLabel.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING | GridData.HORIZONTAL_ALIGN_BEGINNING));
- Label warningText = new Label(warningComposite, SWT.WRAP);
- warningText.setText(Policy.bind("UserValidationDialog.7")); //$NON-NLS-1$
- data = new GridData(GridData.FILL_HORIZONTAL);
- data.widthHint = 300;
- warningText.setLayoutData(data);
- }
-
- Dialog.applyDialogFont(parent);
-
- return main;
- }
- /**
- * Create a spacer.
- */
- protected void createSpacer(Composite top, int columnSpan, int vertSpan) {
- Label l = new Label(top, SWT.NONE);
- GridData data = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
- data.horizontalSpan = columnSpan;
- data.verticalSpan = vertSpan;
- l.setLayoutData(data);
- }
-
- /**
- * Creates the three widgets that represent the password entry area.
- *
- * @param parent the parent of the widgets
- */
- protected void createPasswordFields(Composite parent) {
- new Label(parent, SWT.NONE).setText(Policy.bind("UserValidationDialog.password")); //$NON-NLS-1$
-
- passwordField = new Text(parent, SWT.BORDER | SWT.PASSWORD);
- GridData data = new GridData(GridData.FILL_HORIZONTAL);
- data.horizontalSpan = 2;
- data.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.ENTRY_FIELD_WIDTH);
- passwordField.setLayoutData(data);
- }
- /**
- * Creates the three widgets that represent the user name entry area.
- *
- * @param parent the parent of the widgets
- */
- protected void createUsernameFields(Composite parent) {
- new Label(parent, SWT.NONE).setText(Policy.bind("UserValidationDialog.user")); //$NON-NLS-1$
-
- usernameField = new Text(parent, SWT.BORDER);
- GridData data = new GridData(GridData.FILL_HORIZONTAL);
- data.horizontalSpan = 2;
- data.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.ENTRY_FIELD_WIDTH);
- usernameField.setLayoutData(data);
- }
-
- /**
- * Returns the password entered by the user, or null
- * if the user canceled.
- *
- * @return the entered password
- */
- public String getPassword() {
- return password;
- }
-
- /**
- * Returns the username entered by the user, or null
- * if the user canceled.
- *
- * @return the entered username
- */
- public String getUsername() {
- return username;
- }
-
- /**
- * Returns true
if the save password checkbox was selected.
- * @return true
if the save password checkbox was selected and false
- * otherwise.
- */
- public boolean getAllowCaching() {
- return allowCaching;
- }
-
- /**
- * Notifies that the ok button of this dialog has been pressed.
- *
- * The default implementation of this framework method sets
- * this dialog's return code to Window.OK
- * and closes the dialog. Subclasses may override.
- *
CVSAction#execute(IAction)
- * method. It can preform any prechecking and initialization required before
- * the action is executed. Sunclasses may override but must invoke this
- * inherited method to ensure proper initialization of this superclass is performed.
- * These included prepartion to accumulate IStatus and checking for dirty editors.
- */
- protected boolean beginExecution(IAction action) throws TeamException {
- accumulatedStatus.clear();
- if(needsToSaveDirtyEditors()) {
- if(!saveAllEditors()) {
- return false;
- }
- }
- return true;
- }
-
- /**
- * Actions must override to do their work.
- */
- abstract protected void execute(IAction action) throws InvocationTargetException, InterruptedException;
-
- /**
- * This method gets invoked after CVSAction#execute(IAction)
- * if no exception occured. Sunclasses may override but should invoke this
- * inherited method to ensure proper handling oy any accumulated IStatus.
- */
- protected void endExecution() throws TeamException {
- if ( ! accumulatedStatus.isEmpty()) {
- handle(null);
- }
- }
-
- /**
- * Add a status to the list of accumulated status.
- * These will be provided to method handle(Exception, IStatus[])
- * when the action completes.
- */
- protected void addStatus(IStatus status) {
- accumulatedStatus.add(status);
- }
-
- /**
- * Return the list of status accumulated so far by the action. This
- * will include any OK status that were added using addStatus(IStatus)
- */
- protected IStatus[] getAccumulatedStatus() {
- return (IStatus[]) accumulatedStatus.toArray(new IStatus[accumulatedStatus.size()]);
- }
-
- /**
- * Return the title to be displayed on error dialogs.
- * Sunclasses should override to present a custon message.
- */
- protected String getErrorTitle() {
- return Policy.bind("CVSAction.errorTitle"); //$NON-NLS-1$
- }
-
- /**
- * Return the title to be displayed on error dialogs when warnigns occur.
- * Sunclasses should override to present a custon message.
- */
- protected String getWarningTitle() {
- return Policy.bind("CVSAction.warningTitle"); //$NON-NLS-1$
- }
-
- /**
- * Return the message to be used for the parent MultiStatus when
- * mulitple errors occur during an action.
- * Sunclasses should override to present a custon message.
- */
- protected String getMultiStatusMessage() {
- return Policy.bind("CVSAction.multipleProblemsMessage"); //$NON-NLS-1$
- }
-
- /**
- * Return the status to be displayed in an error dialog for the given list
- * of non-OK status.
- *
- * This method can be overridden bu subclasses. Returning an OK status will
- * prevent the error dialog from being shown.
- */
- protected IStatus getStatusToDisplay(IStatus[] problems) {
- if (problems.length == 1) {
- return problems[0];
- }
- MultiStatus combinedStatus = new MultiStatus(CVSUIPlugin.ID, 0, getMultiStatusMessage(), null); //$NON-NLS-1$
- for (int i = 0; i < problems.length; i++) {
- combinedStatus.merge(problems[i]);
- }
- return combinedStatus;
- }
-
- /**
- * Method that implements generic handling of an exception.
- *
- * Thsi method will also use any accumulated status when determining what
- * information (if any) to show the user.
- *
- * @param exception the exception that occured (or null if none occured)
- * @param status any status accumulated by the action before the end of
- * the action or the exception occured.
- */
- protected void handle(Exception exception) {
- // Get the non-OK statii
- List problems = new ArrayList();
- IStatus[] status = getAccumulatedStatus();
- if (status != null) {
- for (int i = 0; i < status.length; i++) {
- IStatus iStatus = status[i];
- if ( ! iStatus.isOK() || iStatus.getCode() == CVSStatus.SERVER_ERROR) {
- problems.add(iStatus);
- }
- }
- }
- // Handle the case where there are no problem statii
- if (problems.size() == 0) {
- if (exception == null) return;
- handle(exception, getErrorTitle(), null);
- return;
- }
-
- // For now, display both the exception and the problem status
- // Later, we can determine how to display both together
- if (exception != null) {
- handle(exception, getErrorTitle(), null);
- }
-
- String message = null;
- IStatus statusToDisplay = getStatusToDisplay((IStatus[]) problems.toArray(new IStatus[problems.size()]));
- if (statusToDisplay.isOK()) return;
- if (statusToDisplay.isMultiStatus() && statusToDisplay.getChildren().length == 1) {
- message = statusToDisplay.getMessage();
- statusToDisplay = statusToDisplay.getChildren()[0];
- }
- String title;
- if (statusToDisplay.getSeverity() == IStatus.ERROR) {
- title = getErrorTitle();
- } else {
- title = getWarningTitle();
- }
- CVSUIPlugin.openError(getShell(), title, message, new CVSException(statusToDisplay));
- }
-
- /**
- * Convenience method for running an operation with the appropriate progress.
- * Any exceptions are propogated so they can be handled by the
- * CVSAction#run(IAction)
error handling code.
- *
- * @param runnable the runnable which executes the operation
- * @param cancelable indicate if a progress monitor should be cancelable
- * @param progressKind one of PROGRESS_BUSYCURSOR or PROGRESS_DIALOG
- */
- final protected void run(final IRunnableWithProgress runnable, boolean cancelable, int progressKind) throws InvocationTargetException, InterruptedException {
- final Exception[] exceptions = new Exception[] {null};
-
- // Ensure that no repository view refresh happens until after the action
- final IRunnableWithProgress innerRunnable = new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- getRepositoryManager().run(runnable, monitor);
- }
- };
-
- switch (progressKind) {
- case PROGRESS_BUSYCURSOR :
- BusyIndicator.showWhile(Display.getCurrent(), new Runnable() {
- public void run() {
- try {
- innerRunnable.run(new NullProgressMonitor());
- } catch (InvocationTargetException e) {
- exceptions[0] = e;
- } catch (InterruptedException e) {
- exceptions[0] = e;
- }
- }
- });
- break;
- case PROGRESS_DIALOG :
- default :
- new ProgressMonitorDialog(getShell()).run(cancelable, true, innerRunnable);
- break;
- }
- if (exceptions[0] != null) {
- if (exceptions[0] instanceof InvocationTargetException)
- throw (InvocationTargetException)exceptions[0];
- else
- throw (InterruptedException)exceptions[0];
- }
- }
-
- /**
- * Answers if the action would like dirty editors to saved
- * based on the CVS preference before running the action. By
- * default, CVSActions do not save dirty editors.
- */
- protected boolean needsToSaveDirtyEditors() {
- return false;
- }
-
- /**
- * Returns the selected CVS resources
- */
- protected ICVSResource[] getSelectedCVSResources() {
- ArrayList resources = null;
- if (!selection.isEmpty()) {
- resources = new ArrayList();
- Iterator elements = selection.iterator();
- while (elements.hasNext()) {
- Object next = elements.next();
- if (next instanceof ICVSResource) {
- resources.add(next);
- continue;
- }
- if (next instanceof IAdaptable) {
- IAdaptable a = (IAdaptable) next;
- Object adapter = a.getAdapter(ICVSResource.class);
- if (adapter instanceof ICVSResource) {
- resources.add(adapter);
- continue;
- }
- }
- }
- }
- if (resources != null && !resources.isEmpty()) {
- return (ICVSResource[])resources.toArray(new ICVSResource[resources.size()]);
- }
- return new ICVSResource[0];
- }
-
- /**
- * Get selected CVS remote folders
- */
- protected ICVSRemoteFolder[] getSelectedRemoteFolders() {
- ArrayList resources = null;
- if (!selection.isEmpty()) {
- resources = new ArrayList();
- Iterator elements = selection.iterator();
- while (elements.hasNext()) {
- Object next = elements.next();
- if (next instanceof ICVSRemoteFolder) {
- resources.add(next);
- continue;
- }
- if (next instanceof IAdaptable) {
- IAdaptable a = (IAdaptable) next;
- Object adapter = a.getAdapter(ICVSRemoteFolder.class);
- if (adapter instanceof ICVSRemoteFolder) {
- resources.add(adapter);
- continue;
- }
- }
- }
- }
- if (resources != null && !resources.isEmpty()) {
- return (ICVSRemoteFolder[])resources.toArray(new ICVSRemoteFolder[resources.size()]);
- }
- return new ICVSRemoteFolder[0];
- }
-
- /**
- * Returns the selected remote resources
- */
- protected ICVSRemoteResource[] getSelectedRemoteResources() {
- ArrayList resources = null;
- if (!selection.isEmpty()) {
- resources = new ArrayList();
- Iterator elements = selection.iterator();
- while (elements.hasNext()) {
- Object next = elements.next();
- if (next instanceof ICVSRemoteResource) {
- resources.add(next);
- continue;
- }
- if (next instanceof ILogEntry) {
- resources.add(((ILogEntry)next).getRemoteFile());
- continue;
- }
- if (next instanceof IAdaptable) {
- IAdaptable a = (IAdaptable) next;
- Object adapter = a.getAdapter(ICVSRemoteResource.class);
- if (adapter instanceof ICVSRemoteResource) {
- resources.add(adapter);
- continue;
- }
- }
- }
- }
- if (resources != null && !resources.isEmpty()) {
- ICVSRemoteResource[] result = new ICVSRemoteResource[resources.size()];
- resources.toArray(result);
- return result;
- }
- return new ICVSRemoteResource[0];
- }
-
- /**
- * A helper prompt condition for prompting for CVS dirty state.
- */
- public static IPromptCondition getOverwriteLocalChangesPrompt(final IResource[] dirtyResources) {
- return new IPromptCondition() {
- List resources = Arrays.asList(dirtyResources);
- public boolean needsPrompt(IResource resource) {
- return resources.contains(resource);
- }
- public String promptMessage(IResource resource) {
- return Policy.bind("ReplaceWithAction.localChanges", resource.getName());//$NON-NLS-1$
- }
- };
- }
-
- /**
- * Checks if a the resources' parent's tags are different then the given tag.
- * Prompts the user that they are adding mixed tags and returns true
if
- * the user wants to continue or false
otherwise.
- */
- public static boolean checkForMixingTags(final Shell shell, IResource[] resources, final CVSTag tag) throws CVSException {
- final IPreferenceStore store = CVSUIPlugin.getPlugin().getPreferenceStore();
- if(!store.getBoolean(ICVSUIConstants.PREF_PROMPT_ON_MIXED_TAGS)) {
- return true;
- };
-
- final boolean[] result = new boolean[] { true };
-
- for (int i = 0; i < resources.length; i++) {
- IResource resource = resources[i];
- if (resource.getType() != IResource.PROJECT) {
- ICVSResource cvsResource = CVSWorkspaceRoot.getCVSResourceFor(resource);
- CVSTag parentTag = cvsResource.getParent().getFolderSyncInfo().getTag();
- // prompt if the tags are not equal
- // consider BASE to be equal the parent tag since we don't make BASE sticky on replace
- if (!CVSTag.equalTags(tag, parentTag) && !CVSTag.equalTags(tag, CVSTag.BASE)) {
- shell.getDisplay().syncExec(new Runnable() {
- public void run() {
- AvoidableMessageDialog dialog = new AvoidableMessageDialog(
- shell,
- Policy.bind("CVSAction.mixingTagsTitle"), //$NON-NLS-1$
- null, // accept the default window icon
- Policy.bind("CVSAction.mixingTags", tag.getName()), //$NON-NLS-1$
- MessageDialog.QUESTION,
- new String[] {IDialogConstants.OK_LABEL, IDialogConstants.CANCEL_LABEL},
- 0);
-
- result[0] = dialog.open() == 0;
- if(result[0] && dialog.isDontShowAgain()) {
- store.setValue(ICVSUIConstants.PREF_PROMPT_ON_MIXED_TAGS, false);
- }
- }
- });
- // only prompt once
- break;
- }
- }
- }
- return result[0];
- }
-
- /**
- * Based on the CVS preference for saving dirty editors this method will either
- * ignore dirty editors, save them automatically, or prompt the user to save them.
- *
- * @return true
if the command succeeded, and false
- * if at least one editor with unsaved changes was not saved
- */
- private boolean saveAllEditors() {
- final int option = CVSUIPlugin.getPlugin().getPreferenceStore().getInt(ICVSUIConstants.PREF_SAVE_DIRTY_EDITORS);
- final boolean[] okToContinue = new boolean[] {true};
- if (option != ICVSUIConstants.OPTION_NEVER) {
- Display.getDefault().syncExec(new Runnable() {
- public void run() {
- boolean confirm = option == ICVSUIConstants.OPTION_PROMPT;
- IResource[] selectedResources = getSelectedResources();
- if (selectedResources != null) {
- okToContinue[0] = IDE.saveAllEditors(selectedResources, confirm);
- }
- }
- });
- }
- return okToContinue[0];
- }
- /**
- * @see org.eclipse.team.internal.ui.actions.TeamAction#handle(java.lang.Exception, java.lang.String, java.lang.String)
- */
- protected void handle(Exception exception, String title, String message) {
- CVSUIPlugin.openError(getShell(), title, message, exception, CVSUIPlugin.LOG_NONTEAM_EXCEPTIONS);
- }
-
- protected RepositoryManager getRepositoryManager() {
- return CVSUIPlugin.getPlugin().getRepositoryManager();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ui.actions.TeamAction#getSelectedResources()
- */
- protected IResource[] getSelectedResources() {
- return Utils.getResources(selection.toArray());
- }
-
- public void setActiveEditor(IAction action, IEditorPart targetEditor) {
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CheckoutAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CheckoutAction.java
deleted file mode 100644
index bdd61d96f..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CheckoutAction.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.jface.action.IAction;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.ICVSRemoteFolder;
-import org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.internal.ccvs.ui.operations.CheckoutMultipleProjectsOperation;
-
-/**
- * Checkout a remote module into the workspace ensuring that the user is prompted for
- * any overwrites that may occur.
- */
-public class CheckoutAction extends CVSAction {
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.actions.CVSAction#execute(org.eclipse.jface.action.IAction)
- */
- protected void execute(IAction action) throws InvocationTargetException, InterruptedException {
- new CheckoutMultipleProjectsOperation(getTargetPart(), getSelectedRemoteFolders(), null)
- .run();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ui.actions.TeamAction#isEnabled()
- */
- protected boolean isEnabled() throws TeamException {
- ICVSRemoteFolder[] folders = getSelectedRemoteFolders();
- if (folders.length == 0) return false;
- // only enabled when all folders are in the same repository
- ICVSRepositoryLocation location = folders[0].getRepository();
- for (int i = 1; i < folders.length; i++) {
- ICVSRemoteFolder folder = folders[i];
- if (!folder.getRepository().equals(location)) {
- return false;
- }
- }
- return true;
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CheckoutAsAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CheckoutAsAction.java
deleted file mode 100644
index c06aeb4fe..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CheckoutAsAction.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.ICVSRemoteFolder;
-import org.eclipse.team.internal.ccvs.ui.operations.HasProjectMetaFileOperation;
-import org.eclipse.team.internal.ccvs.ui.wizards.CheckoutAsWizard;
-
-public class CheckoutAsAction extends CVSAction {
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.actions.CVSAction#execute(org.eclipse.jface.action.IAction)
- */
- public void execute(IAction action) throws InvocationTargetException, InterruptedException {
- ICVSRemoteFolder[] folders = getSelectedRemoteFolders();
- CheckoutAsWizard wizard = new CheckoutAsWizard(getTargetPart(), folders, allowProjectConfiguration(folders));
- WizardDialog dialog = new WizardDialog(shell, wizard);
- dialog.open();
- }
-
- /*
- * Return true if the remote project does not have a .project file
- * so that the checkout wizard will give the option to launch
- * the New Project wizard
- */
- protected boolean allowProjectConfiguration(ICVSRemoteFolder[] folders) throws InvocationTargetException, InterruptedException {
- if (folders.length != 1) return false;
- return !HasProjectMetaFileOperation.hasMetaFile(getTargetPart(), folders[0]);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ui.actions.TeamAction#isEnabled()
- */
- protected boolean isEnabled() throws TeamException {
- return getSelectedRemoteFolders().length > 0;
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CheckoutWizardAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CheckoutWizardAction.java
deleted file mode 100644
index 036b22c2a..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CheckoutWizardAction.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.internal.ccvs.ui.wizards.CheckoutWizard;
-import org.eclipse.ui.*;
-
-/**
- * Action that launches the checkout wizard
- */
-public class CheckoutWizardAction implements IWorkbenchWindowActionDelegate {
-
- Shell shell;
-
- /**
- * @see IWorkbenchWindowActionDelegate#dispose()
- */
- public void dispose() {
- }
-
- /**
- * @see IWorkbenchWindowActionDelegate#init(IWorkbenchWindow)
- */
- public void init(IWorkbenchWindow window) {
- this.shell = window.getShell();
- }
-
- /**
- * @see IActionDelegate#run(IAction)
- */
- public void run(IAction action) {
- CheckoutWizard wizard = new CheckoutWizard();
- WizardDialog dialog = new WizardDialog(shell, wizard);
- dialog.open();
- }
-
- /**
- * @see IActionDelegate#selectionChanged(IAction, ISelection)
- */
- public void selectionChanged(IAction action, ISelection selection) {
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CommitAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CommitAction.java
deleted file mode 100644
index f9972b260..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CommitAction.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.operations.CommitOperation;
-
-/**
- * Action for checking in files to a CVS provider.
- * Prompts the user for a release comment.
- */
-public class CommitAction extends WorkspaceAction {
-
- /*
- * @see CVSAction#execute(IAction)
- */
- public void execute(IAction action) throws InvocationTargetException, InterruptedException {
- final CommitOperation operation = new CommitOperation(getTargetPart(), getSelectedResources(), null);
- final boolean[] retVal = {true};
- run(new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- try {
- retVal[0] = operation.performPrompting(monitor);
- } catch (CVSException e) {
- new InvocationTargetException(e);
- }
- }
- }, false, PROGRESS_BUSYCURSOR);
- if(retVal[0])
- operation.run();
- }
-
- /**
- * @see org.eclipse.team.internal.ccvs.ui.actions.CVSAction#getErrorTitle()
- */
- protected String getErrorTitle() {
- return Policy.bind("CommitAction.commitFailed"); //$NON-NLS-1$
- }
-
- /**
- * @see org.eclipse.team.internal.ccvs.ui.actions.WorkspaceAction#isEnabledForUnmanagedResources()
- */
- protected boolean isEnabledForUnmanagedResources() {
- return true;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.actions.WorkspaceAction#isEnabledForNonExistantResources()
- */
- protected boolean isEnabledForNonExistantResources() {
- return true;
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareRemoteResourcesAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareRemoteResourcesAction.java
deleted file mode 100644
index b7bc01154..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareRemoteResourcesAction.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.compare.CompareUI;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-import org.eclipse.team.internal.ccvs.core.ICVSRemoteResource;
-import org.eclipse.team.internal.ccvs.ui.*;
-import org.eclipse.team.internal.ccvs.ui.operations.RemoteCompareOperation;
-
-/**
- * This action is used for comparing two arbitrary remote resources. This is
- * enabled in the repository explorer.
- */
-public class CompareRemoteResourcesAction extends CVSAction {
-
- public void execute(IAction action) throws InvocationTargetException, InterruptedException {
- ICVSRemoteResource[] editions = getSelectedRemoteResources();
- if (editions == null || editions.length != 2) {
- MessageDialog.openError(getShell(), Policy.bind("CompareRemoteResourcesAction.unableToCompare"), Policy.bind("CompareRemoteResourcesAction.selectTwoResources")); //$NON-NLS-1$ //$NON-NLS-2$
- return;
- }
- try {
- if (isSameFolder(editions)) {
- new RemoteCompareOperation(null, editions[0], RemoteCompareOperation.getTag(editions[1])).run();
- } else {
- ResourceEditionNode left = new ResourceEditionNode(editions[0]);
- ResourceEditionNode right = new ResourceEditionNode(editions[1]);
- CompareUI.openCompareEditorOnPage(new CVSCompareEditorInput(left, right), getTargetPage());
- }
- } catch (CVSException e) {
- throw new InvocationTargetException(e);
- }
- }
-
- protected boolean isSameFolder(ICVSRemoteResource[] editions) {
- return editions[0].isContainer() && editions[0].getRepository().equals(editions[1].getRepository())
- && editions[0].getRepositoryRelativePath().equals(editions[1].getRepositoryRelativePath());
- }
-
- /*
- * @see TeamAction#isEnabled()
- */
- protected boolean isEnabled() throws TeamException {
- ICVSRemoteResource[] resources = getSelectedRemoteResources();
- if (resources.length != 2) return false;
- if (resources[0].isContainer() != resources[1].isContainer()) return false;
- // Don't allow comparisons of two unrelated remote projects
- return !resources[0].isContainer() || isSameFolder(resources);
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareRemoteWithTagAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareRemoteWithTagAction.java
deleted file mode 100644
index cd6c7e6a3..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareRemoteWithTagAction.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.ui.operations.RemoteCompareOperation;
-import org.eclipse.team.internal.ccvs.ui.tags.TagSelectionDialog;
-import org.eclipse.team.internal.ccvs.ui.tags.TagSource;
-
-/**
- * Compare to versions of a remote resource.
- */
-public class CompareRemoteWithTagAction extends CVSAction {
-
- /**
- * @see org.eclipse.team.internal.ccvs.ui.actions.CVSAction#execute(org.eclipse.jface.action.IAction)
- */
- protected void execute(IAction action) throws InvocationTargetException, InterruptedException {
-
- final ICVSRemoteResource[] resources = getSelectedRemoteResources();
- if (resources.length == 0) return;
-
- // Obtain the tag to compare against
- final ICVSRemoteResource resource = resources[0];
- final CVSTag[] tag = new CVSTag[] { null};
- run(new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) {
- tag[0] = TagSelectionDialog.getTagToCompareWith(getShell(), TagSource.create(resources),
- TagSelectionDialog.INCLUDE_BRANCHES |
- TagSelectionDialog.INCLUDE_VERSIONS |
- TagSelectionDialog.INCLUDE_DATES |
- TagSelectionDialog.INCLUDE_HEAD_TAG);
- }
- }, false /* cancelable */, PROGRESS_BUSYCURSOR);
- if (tag[0] == null) return;
-
- // Run the compare operation in the background
- new RemoteCompareOperation(getTargetPart(), resource, tag[0])
- .run();
- }
-
- /**
- * @see org.eclipse.team.internal.ui.actions.TeamAction#isEnabled()
- */
- protected boolean isEnabled() {
- ICVSRemoteResource[] resources = getSelectedRemoteResources();
- // Only support single select for now.
- // Need to avoid overlap if multi-select is supported
- return resources.length == 1;
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareWithRemoteAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareWithRemoteAction.java
deleted file mode 100644
index 98c59288a..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareWithRemoteAction.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-import org.eclipse.jface.action.IAction;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-import org.eclipse.team.internal.ccvs.core.ICVSResource;
-
-/**
- * This action shows the CVS workspace participant into a model dialog. For single file
- * selection, the compare editor is shown instead.
- *
- * @since 3.0
- */
-public class CompareWithRemoteAction extends SyncAction {
-
- /*
- * Update the text label for the action based on the tags in the selection.
- * @see TeamAction#setActionEnablement(org.eclipse.jface.action.IAction)
- */
- protected void setActionEnablement(IAction action) {
- super.setActionEnablement(action);
- action.setText(calculateActionTagValue());
- }
-
- /**
- * Enable for resources that are managed (using super) or whose parent is a CVS folder.
- *
- * @see org.eclipse.team.internal.ccvs.ui.actions.WorkspaceAction#isEnabledForCVSResource(org.eclipse.team.internal.ccvs.core.ICVSResource)
- */
- protected boolean isEnabledForCVSResource(ICVSResource cvsResource) throws CVSException {
- return super.isEnabledForCVSResource(cvsResource) || cvsResource.getParent().isCVSFolder();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.actions.WorkspaceAction#isEnabledForNonExistantResources()
- */
- protected boolean isEnabledForNonExistantResources() {
- return true;
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareWithRevisionAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareWithRevisionAction.java
deleted file mode 100644
index ef683b19c..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareWithRevisionAction.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.compare.CompareUI;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot;
-import org.eclipse.team.internal.ccvs.ui.*;
-import org.eclipse.team.internal.ccvs.ui.CVSCompareRevisionsInput;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.ui.SaveablePartDialog;
-
-/**
- * Compare with revision will allow a user to browse the history of a file, compare with the
- * other revisions and merge changes from other revisions into the workspace copy.
- */
-public class CompareWithRevisionAction extends WorkspaceAction {
-
- /**
- * Returns the selected remote file
- */
- protected ICVSRemoteFile getSelectedRemoteFile() {
- IResource[] resources = getSelectedResources();
- if (resources.length != 1) return null;
- if (!(resources[0] instanceof IFile)) return null;
- IFile file = (IFile)resources[0];
- try {
- return (ICVSRemoteFile)CVSWorkspaceRoot.getRemoteResourceFor(file);
- } catch (TeamException e) {
- handle(e, null, null);
- return null;
- }
- }
-
- /*
- * @see CVSAction#execute(IAction)
- */
- public void execute(IAction action) throws InvocationTargetException, InterruptedException {
-
- // Setup holders
- final ICVSRemoteFile[] file = new ICVSRemoteFile[] { null };
- final ILogEntry[][] entries = new ILogEntry[][] { null };
-
- // Get the selected file
- run(new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException {
- file[0] = getSelectedRemoteFile();
- }
- }, false /* cancelable */, PROGRESS_BUSYCURSOR);
-
- if (file[0] == null) {
- // No revisions for selected file
- MessageDialog.openWarning(getShell(), Policy.bind("CompareWithRevisionAction.noRevisions"), Policy.bind("CompareWithRevisionAction.noRevisionsLong")); //$NON-NLS-1$ //$NON-NLS-2$
- return;
- }
-
- // Fetch the log entries
- run(new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException {
- try {
- monitor.beginTask(Policy.bind("CompareWithRevisionAction.fetching"), 100); //$NON-NLS-1$
- entries[0] = file[0].getLogEntries(Policy.subMonitorFor(monitor, 100));
- monitor.done();
- } catch (TeamException e) {
- throw new InvocationTargetException(e);
- }
- }
- }, true /* cancelable */, PROGRESS_DIALOG);
-
- if (entries[0] == null) return;
-
- // Show the compare viewer
- run(new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InterruptedException, InvocationTargetException {
- CVSCompareRevisionsInput input = new CVSCompareRevisionsInput((IFile)getSelectedResources()[0], entries[0]);
- if(CVSUIPlugin.getPlugin().getPreferenceStore().getBoolean(ICVSUIConstants.PREF_SHOW_COMPARE_REVISION_IN_DIALOG)) {
- // running with a null progress monitor is fine because we have already pre-fetched the log entries above.
- input.run(new NullProgressMonitor());
- SaveablePartDialog cd = createCompareDialog(getShell(), input);
- cd.setBlockOnOpen(true);
- cd.open();
- } else {
- CompareUI.openCompareEditor(input);
- }
- }
- }, false /* cancelable */, PROGRESS_BUSYCURSOR);
- }
-
- /**
- * Return the compare dialog to use to show the compare input.
- */
- protected SaveablePartDialog createCompareDialog(Shell shell, CVSCompareRevisionsInput input) {
- return new SaveablePartDialog(shell, input); //$NON-NLS-1$
- }
-
- /**
- * Return the text describing this action
- */
- protected String getActionTitle() {
- return Policy.bind("CompareWithRevisionAction.4"); //$NON-NLS-1$
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.actions.CVSAction#getErrorTitle()
- */
- protected String getErrorTitle() {
- return Policy.bind("CompareWithRevisionAction.compare"); //$NON-NLS-1$
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.actions.WorkspaceAction#isEnabledForCVSResource(org.eclipse.team.internal.ccvs.core.ICVSResource)
- */
- protected boolean isEnabledForCVSResource(ICVSResource cvsResource) throws CVSException {
- return (!cvsResource.isFolder() && super.isEnabledForCVSResource(cvsResource));
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.actions.WorkspaceAction#isEnabledForMultipleResources()
- */
- protected boolean isEnabledForMultipleResources() {
- return false;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.actions.WorkspaceAction#isEnabledForAddedResources()
- */
- protected boolean isEnabledForAddedResources() {
- return false;
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareWithTagAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareWithTagAction.java
deleted file mode 100644
index 81c4abf7b..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareWithTagAction.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.ui.subscriber.CompareParticipant;
-import org.eclipse.team.internal.ccvs.ui.tags.TagSelectionDialog;
-import org.eclipse.team.internal.ccvs.ui.tags.TagSource;
-import org.eclipse.team.ui.TeamUI;
-import org.eclipse.team.ui.synchronize.ISynchronizeParticipant;
-
-public class CompareWithTagAction extends WorkspaceAction {
-
- public void execute(IAction action) throws InvocationTargetException, InterruptedException {
- final IResource[] resources = getSelectedResources();
- CVSTag tag = promptForTag(resources);
- if (tag == null)
- return;
-
- CVSCompareSubscriber compareSubscriber = new CVSCompareSubscriber(resources, tag);
- if (SyncAction.isSingleFile(resources)) {
- SyncAction.showSingleFileComparison(getShell(), compareSubscriber, resources[0]);
- compareSubscriber.dispose();
- } else {
- try {
- compareSubscriber.primeRemoteTree();
- } catch(CVSException e) {
- // ignore, the compare will fail if there is a real problem.
- }
- // First check if there is an existing matching participant, if so then re-use it
- CompareParticipant participant = CompareParticipant.getMatchingParticipant(resources, tag);
- if (participant == null) {
- CVSCompareSubscriber s = compareSubscriber;
- participant = new CompareParticipant(s);
- TeamUI.getSynchronizeManager().addSynchronizeParticipants(new ISynchronizeParticipant[]{participant});
- }
- participant.refresh(resources, null, null, null); //$NON-NLS-1$
- }
- }
-
- protected CVSTag promptForTag(IResource[] resources) {
- CVSTag tag = TagSelectionDialog.getTagToCompareWith(getShell(), TagSource.create(resources), TagSelectionDialog.INCLUDE_ALL_TAGS);
- return tag;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.actions.WorkspaceAction#isEnabledForNonExistantResources()
- */
- protected boolean isEnabledForNonExistantResources() {
- return true;
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ConfigureTagsFromRepoViewOnFolder.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ConfigureTagsFromRepoViewOnFolder.java
deleted file mode 100644
index 81c0c5b73..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ConfigureTagsFromRepoViewOnFolder.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.ICVSFolder;
-import org.eclipse.team.internal.ccvs.core.ICVSRemoteFolder;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.model.RemoteModule;
-import org.eclipse.team.internal.ccvs.ui.tags.TagConfigurationDialog;
-import org.eclipse.team.internal.ccvs.ui.tags.TagSource;
-;
-
-/**
- * DefineTagAction remembers a tag by name
- */
-public class ConfigureTagsFromRepoViewOnFolder extends CVSAction {
-
- /**
- * Returns the selected remote folders
- */
- protected ICVSRemoteFolder[] getSelectedRemoteFolders() {
- ArrayList resources = null;
- if (!selection.isEmpty()) {
- resources = new ArrayList();
- Iterator elements = selection.iterator();
- while (elements.hasNext()) {
- Object next = elements.next();
- if (next instanceof RemoteModule) {
- next = ((RemoteModule)next).getCVSResource();
- }
- if (next instanceof ICVSRemoteFolder) {
- ICVSRemoteFolder folder = (ICVSRemoteFolder)next;
- if (folder.isDefinedModule()) {
- resources.add(next);
- } else if(new Path(null, ((ICVSRemoteFolder)next).getRepositoryRelativePath()).segmentCount()==1) {
- resources.add(next);
- }
- }
- }
- }
- if (resources != null && !resources.isEmpty()) {
- return (ICVSRemoteFolder[])resources.toArray(new ICVSRemoteFolder[resources.size()]);
- }
- return new ICVSRemoteFolder[0];
- }
-
- /*
- * @see CVSAction@execute(IAction)
- */
- public void execute(IAction action) throws InvocationTargetException, InterruptedException {
- run(new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException {
- final ICVSRemoteFolder[] roots = getSelectedRemoteFolders();
- final Shell shell = getShell();
- shell.getDisplay().syncExec(new Runnable() {
- public void run() {
- ICVSFolder[] cvsFolders = new ICVSFolder[roots.length];
- for (int i = 0; i < roots.length; i++) {
- cvsFolders[i] = roots[i];
- }
- TagConfigurationDialog d = new TagConfigurationDialog(shell, TagSource.create(cvsFolders));
- d.open();
- }
- });
- }
- }, false /* cancelable */, PROGRESS_BUSYCURSOR);
- }
-
- /*
- * @see TeamAction#isEnabled()
- */
- protected boolean isEnabled() throws TeamException {
- ICVSRemoteFolder[] roots = getSelectedRemoteFolders();
- if (roots.length != 1) return false;
- return true;
- }
- /**
- * @see org.eclipse.team.internal.ccvs.ui.actions.CVSAction#getErrorTitle()
- */
- protected String getErrorTitle() {
- return Policy.bind("ConfigureTagsFromRepoViewConfigure_Tag_Error_1"); //$NON-NLS-1$
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/EditAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/EditAction.java
deleted file mode 100644
index e798bdb84..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/EditAction.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.team.core.Team;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.ui.PlatformUI;
-
-public class EditAction extends WorkspaceAction {
-
- /**
- * @see org.eclipse.team.internal.ccvs.ui.actions.CVSAction#execute(org.eclipse.jface.action.IAction)
- */
- protected void execute(IAction action) throws InvocationTargetException, InterruptedException {
- // Get the editors
- final EditorsAction editors = new EditorsAction();
- PlatformUI.getWorkbench().getProgressService().busyCursorWhile(new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- executeProviderAction(editors, Policy.subMonitorFor(monitor, 25));
-
- // If there are editors show them and prompt the user to execute the edit command
- if (!editors.promptToEdit(shell)) {
- return;
- }
-
- executeProviderAction(new IProviderAction() {
- public IStatus execute(CVSTeamProvider provider, IResource[] resources, IProgressMonitor monitor) throws CVSException {
- provider.edit(resources, false /* recurse */, true /* notify server */, ICVSFile.NO_NOTIFICATION, monitor);
- return Team.OK_STATUS;
- }
- }, Policy.subMonitorFor(monitor, 75));
- }
- });
- }
-
- /**
- * @see org.eclipse.team.internal.ccvs.ui.actions.WorkspaceAction#isEnabledForAddedResources()
- */
- protected boolean isEnabledForAddedResources() {
- return false;
- }
- /**
- * @see org.eclipse.team.internal.ccvs.ui.actions.WorkspaceAction#isEnabledForCVSResource(org.eclipse.team.internal.ccvs.core.ICVSResource)
- */
- protected boolean isEnabledForCVSResource(ICVSResource cvsResource) throws CVSException {
- if (cvsResource.isFolder()) return false;
- if (super.isEnabledForCVSResource(cvsResource)) {
- return ((ICVSFile)cvsResource).isReadOnly();
- } else {
- return false;
- }
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/EditorsAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/EditorsAction.java
deleted file mode 100644
index 7f6d5a678..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/EditorsAction.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003 CSC SoftwareConsult GmbH & Co. OHG, Germany and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * CSC - Intial implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.core.Team;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.ui.*;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.actions.WorkspaceAction.IProviderAction;
-
-/**
- * This Action gets the EditorsInfo[]
- * It is used by the ShowEditorAction
- * and ShowEditorAction
.
- *
- * @author Gregor
- * Kohlwes
- *
- */
-public class EditorsAction implements IProviderAction, IRunnableWithProgress {
- EditorsInfo[] f_editorsInfo = new EditorsInfo[0];
- CVSTeamProvider f_provider;
- IResource[] f_resources;
-
- public EditorsAction() {
- }
-
- public EditorsAction(CVSTeamProvider provider, IResource[] resources) {
- f_provider = provider;
- f_resources = resources;
- }
- /**
- * @see org.eclipse.team.internal.ccvs.ui.actions.WorkspaceAction.IProviderAction#execute(org.eclipse.team.internal.ccvs.core.CVSTeamProvider, org.eclipse.core.resources.IResource, org.eclipse.core.runtime.IProgressMonitor)
- */
- public IStatus execute(CVSTeamProvider provider, IResource[] resources, IProgressMonitor monitor) throws CVSException {
- f_editorsInfo = provider.editors(resources, monitor);
- return Team.OK_STATUS;
- }
-
- public boolean promptToEdit(Shell shell) {
- if (!isEmpty()) {
- final EditorsDialog view = new EditorsDialog(shell, f_editorsInfo);
- // Open the dialog using a sync exec (there are no guarentees that we
- // were called from the UI thread
- CVSUIPlugin.openDialog(shell, new CVSUIPlugin.IOpenableInShell() {
- public void open(Shell shell) {
- view.open();
- }
- }, CVSUIPlugin.PERFORM_SYNC_EXEC);
- return (view.getReturnCode() == EditorsDialog.OK);
- }
- return true;
- }
-
- /**
- * Contact the server to determine if there are any editors on the associatd files.
- *
- * @see org.eclipse.jface.operation.IRunnableWithProgress#run(org.eclipse.core.runtime.IProgressMonitor)
- */
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- if (f_provider == null || f_resources == null) {
- throw new InvocationTargetException(new RuntimeException(Policy.bind("EditorsAction.classNotInitialized", this.getClass().getName()))); //$NON-NLS-1$
- }
- try {
- execute(f_provider,f_resources,monitor);
- } catch (CVSException e) {
- throw new InvocationTargetException(e);
- }
- }
-
- /**
- * Returns the f_editorsInfo.
- * @return EditorsInfo[]
- */
- public EditorsInfo[] getEditorsInfo() {
- return f_editorsInfo;
- }
-
- /**
- * Indicates whether there are editors of any of the associated files.
- * The run(IProgressMonitor)
must be invoked first to
- * fetch any editors from the server.
- * @return boolean
- */
- public boolean isEmpty() {
- return f_editorsInfo.length == 0;
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/GenerateDiffFileAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/GenerateDiffFileAction.java
deleted file mode 100644
index 21197ffe1..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/GenerateDiffFileAction.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.wizards.GenerateDiffFileWizard;
-
-/**
- * Action to generate a patch file using the CVS diff command.
- *
- * NOTE: This is a temporary action and should eventually be replaced
- * by a create patch command in the compare viewer.
- */
-public class GenerateDiffFileAction extends WorkspaceAction {
-
- // The initial size of this wizard.
- private final static int INITIAL_WIDTH = 300;
- private final static int INITIAL_HEIGHT = 350;
-
- /** (Non-javadoc)
- * Method declared on IActionDelegate.
- */
- public void execute(IAction action) {
- final String title = Policy.bind("GenerateCVSDiff.title"); //$NON-NLS-1$
- final IResource[] resources = getSelectedResources();
- final GenerateDiffFileWizard wizard = new GenerateDiffFileWizard(resources[0]);
- wizard.setWindowTitle(title);
- WizardDialog dialog = new WizardDialog(getShell(), wizard);
- dialog.setMinimumPageSize(INITIAL_WIDTH, INITIAL_HEIGHT);
- dialog.open();
- }
-
- /**
- * @see org.eclipse.team.internal.ccvs.ui.actions.WorkspaceAction#isEnabledForMultipleResources()
- */
- protected boolean isEnabledForMultipleResources() {
- return false;
- }
-
- /**
- * @see org.eclipse.team.internal.ccvs.ui.actions.WorkspaceAction#isEnabledForUnmanagedResources()
- */
- protected boolean isEnabledForUnmanagedResources() {
- return true;
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/IgnoreAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/IgnoreAction.java
deleted file mode 100644
index 80dbe9fdc..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/IgnoreAction.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.synchronize.SyncInfo;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot;
-import org.eclipse.team.internal.ccvs.ui.IgnoreResourcesDialog;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.operations.RepositoryProviderOperation;
-import org.eclipse.ui.IWorkbenchPart;
-
-public class IgnoreAction extends WorkspaceAction {
-
- /**
- * Define an operation that can be run in the background.
- * We divide the ignores by provider to obtain project
- * locks while modifying the .cvsignore files
- */
- class IgnoreOperation extends RepositoryProviderOperation {
-
- private final IgnoreResourcesDialog dialog;
-
- public IgnoreOperation(IWorkbenchPart part, IResource[] resources, IgnoreResourcesDialog dialog) {
- super(part, resources);
- this.dialog = dialog;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.operations.RepositoryProviderOperation#getTaskName(org.eclipse.team.internal.ccvs.core.CVSTeamProvider)
- */
- protected String getTaskName(CVSTeamProvider provider) {
- return Policy.bind("IgnoreAction.0", provider.getProject().getName()); //$NON-NLS-1$
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.operations.RepositoryProviderOperation#execute(org.eclipse.team.internal.ccvs.core.CVSTeamProvider, org.eclipse.core.resources.IResource[], org.eclipse.core.runtime.IProgressMonitor)
- */
- protected void execute(CVSTeamProvider provider, IResource[] resources, IProgressMonitor monitor) throws CVSException, InterruptedException {
- try {
- monitor.beginTask(null, resources.length);
- for (int i = 0; i < resources.length; i++) {
- IResource resource = resources[i];
- String pattern = dialog.getIgnorePatternFor(resource);
- ICVSResource cvsResource = CVSWorkspaceRoot.getCVSResourceFor(resource);
- cvsResource.setIgnoredAs(pattern);
- monitor.worked(1);
- }
- } catch (TeamException e) {
- collectStatus(e.getStatus());
- return;
- } finally {
- monitor.done();
- }
- collectStatus(Status.OK_STATUS);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.operations.CVSOperation#getTaskName()
- */
- protected String getTaskName() {
- return Policy.bind("IgnoreAction.1"); //$NON-NLS-1$
- }
-
- }
-
- protected void execute(final IAction action) throws InvocationTargetException, InterruptedException {
- run(new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- IResource[] resources = getSelectedResources();
- IgnoreResourcesDialog dialog = new IgnoreResourcesDialog(getShell(), resources);
- if (dialog.open() != IgnoreResourcesDialog.OK) return;
- new IgnoreOperation(getTargetPart(), resources, dialog).run();
-
- //if (action != null) action.setEnabled(isEnabled());
- }
- }, false /* cancelable */, PROGRESS_BUSYCURSOR);
- }
- /**
- * @see org.eclipse.team.internal.ccvs.ui.actions.CVSAction#getErrorTitle()
- */
- protected String getErrorTitle() {
- return Policy.bind("IgnoreAction.ignore"); //$NON-NLS-1$
- }
-
- /**
- * @see org.eclipse.team.internal.ccvs.ui.actions.WorkspaceAction#isEnabledForManagedResources()
- */
- protected boolean isEnabledForManagedResources() {
- return false;
- }
-
- /**
- * @see org.eclipse.team.internal.ccvs.ui.actions.WorkspaceAction#isEnabledForUnmanagedResources()
- */
- protected boolean isEnabledForUnmanagedResources() {
- return true;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.actions.WorkspaceAction#isEnabledForCVSResource(org.eclipse.team.internal.ccvs.core.ICVSResource)
- */
- protected boolean isEnabledForCVSResource(ICVSResource cvsResource) throws CVSException {
- if (super.isEnabledForCVSResource(cvsResource)) {
- // Perform an extra check against the subscriber to ensure there is no conflict
- CVSWorkspaceSubscriber subscriber = CVSProviderPlugin.getPlugin().getCVSWorkspaceSubscriber();
- IResource resource = cvsResource.getIResource();
- if (resource == null) return false;
- try {
- SyncInfo info = subscriber.getSyncInfo(resource);
- return ((info.getKind() & SyncInfo.DIRECTION_MASK) == SyncInfo.OUTGOING);
- } catch (TeamException e) {
- // Let the enablement happen
- return true;
- }
- }
- return false;
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/MergeAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/MergeAction.java
deleted file mode 100644
index 795c1c833..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/MergeAction.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.internal.ccvs.ui.wizards.MergeWizard;
-
-public class MergeAction extends WorkspaceAction {
-
- /*
- * @see CVSAction#execute()
- */
- public void execute(IAction action) {
- final Shell shell = getShell();
- shell.getDisplay().syncExec(new Runnable() {
- public void run() {
- MergeWizard wizard = new MergeWizard(getTargetPart(), getSelectedResources());
- WizardDialog dialog = new WizardDialog(shell, wizard);
- dialog.open();
- }
- });
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/MoveRemoteTagAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/MoveRemoteTagAction.java
deleted file mode 100644
index 923721ca2..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/MoveRemoteTagAction.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.core.CVSTag;
-import org.eclipse.team.internal.ccvs.core.ICVSFolder;
-import org.eclipse.team.internal.ccvs.ui.IHelpContextIds;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.operations.ITagOperation;
-import org.eclipse.team.internal.ccvs.ui.tags.TagSelectionDialog;
-
-public class MoveRemoteTagAction extends TagInRepositoryAction {
-
- /**
- * @see TagRemoteAction#promptForTag(ICVSFolder[])
- */
- protected ITagOperation configureOperation() {
- // Allow the user to select a tag
- ITagOperation operation = createTagOperation();
- TagSelectionDialog dialog = new TagSelectionDialog(getShell(), operation.getTagSource(),
- Policy.bind("MoveTagAction.title"), //$NON-NLS-1$
- Policy.bind("MoveTagAction.message"), //$NON-NLS-1$
- TagSelectionDialog.INCLUDE_BRANCHES | TagSelectionDialog.INCLUDE_VERSIONS,
- isFolderSelected(), /* show recurse */
- IHelpContextIds.TAG_REMOTE_WITH_EXISTING_DIALOG);
- dialog.setBlockOnOpen(true);
- if (dialog.open() == Dialog.CANCEL) {
- return null;
- }
- CVSTag tag = dialog.getResult();
- if (tag == null) return null;
- operation.setTag(tag);
- operation.moveTag();
- boolean recursive = dialog.getRecursive();
- if (!recursive) {
- operation.recurse();
- }
- return operation;
- }
-
- private boolean isFolderSelected() {
- ICVSResource[] resources = getSelectedCVSResources();
- for (int i = 0; i < resources.length; i++) {
- ICVSResource resource = resources[i];
- if (resource.isFolder())
- return true;
- }
- return false;
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/NewRepositoryAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/NewRepositoryAction.java
deleted file mode 100644
index a1d5f2f64..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/NewRepositoryAction.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.internal.ccvs.ui.wizards.NewLocationWizard;
-import org.eclipse.ui.*;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.IWorkbenchWindowActionDelegate;
-
-public class NewRepositoryAction implements IWorkbenchWindowActionDelegate, IViewActionDelegate {
- Shell shell;
-
- /**
- * @see IWorkbenchWindowActionDelegate#dispose()
- */
- public void dispose() {
- }
-
- /**
- * @see IWorkbenchWindowActionDelegate#init(IWorkbenchWindow)
- */
- public void init(IWorkbenchWindow window) {
- this.shell = window.getShell();
- }
-
- public void init(IViewPart view) {
- shell = view.getSite().getShell();
- }
-
- /**
- * @see IActionDelegate#run(IAction)
- */
- public void run(IAction action) {
- NewLocationWizard wizard = new NewLocationWizard();
- WizardDialog dialog = new WizardDialog(shell, wizard);
- dialog.open();
- }
-
- /**
- * @see IActionDelegate#selectionChanged(IAction, ISelection)
- */
- public void selectionChanged(IAction action, ISelection selection) {
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/OpenLogEntryAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/OpenLogEntryAction.java
deleted file mode 100644
index e3da4a6e5..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/OpenLogEntryAction.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.ICVSRemoteFile;
-import org.eclipse.team.internal.ccvs.core.ILogEntry;
-import org.eclipse.team.internal.ccvs.ui.*;
-import org.eclipse.ui.*;
-
-public class OpenLogEntryAction extends CVSAction {
- /**
- * Returns the selected remote files
- */
- protected ILogEntry[] getSelectedLogEntries() {
- ArrayList entries = null;
- if (!selection.isEmpty()) {
- entries = new ArrayList();
- Iterator elements = selection.iterator();
- while (elements.hasNext()) {
- Object next = elements.next();
- if (next instanceof ILogEntry) {
- entries.add(next);
- continue;
- }
- if (next instanceof IAdaptable) {
- IAdaptable a = (IAdaptable) next;
- Object adapter = a.getAdapter(ILogEntry.class);
- if (adapter instanceof ILogEntry) {
- entries.add(adapter);
- continue;
- }
- }
- }
- }
- if (entries != null && !entries.isEmpty()) {
- ILogEntry[] result = new ILogEntry[entries.size()];
- entries.toArray(result);
- return result;
- }
- return new ILogEntry[0];
- }
- /*
- * @see CVSAction#execute(IAction)
- */
- public void execute(IAction action) throws InterruptedException, InvocationTargetException {
- run(new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException {
- IWorkbench workbench = CVSUIPlugin.getPlugin().getWorkbench();
- IEditorRegistry registry = workbench.getEditorRegistry();
- IWorkbenchPage page = workbench.getActiveWorkbenchWindow().getActivePage();
- final ILogEntry[] entries = getSelectedLogEntries();
- for (int i = 0; i < entries.length; i++) {
- if (entries[i].isDeletion()) {
- MessageDialog.openError(getShell(), Policy.bind("OpenLogEntryAction.deletedTitle"), Policy.bind("OpenLogEntryAction.deleted")); //$NON-NLS-1$ //$NON-NLS-2$
- } else {
- ICVSRemoteFile file = entries[i].getRemoteFile();
- String filename = file.getName();
- IEditorDescriptor descriptor = registry.getDefaultEditor(filename);
- String id;
- if (descriptor == null) {
- id = "org.eclipse.ui.DefaultTextEditor"; //$NON-NLS-1$
- } else {
- id = descriptor.getId();
- }
- try {
- try {
- page.openEditor(new RemoteFileEditorInput(file, monitor), id);
- } catch (PartInitException e) {
- if (id.equals("org.eclipse.ui.DefaultTextEditor")) { //$NON-NLS-1$
- throw e;
- } else {
- page.openEditor(new RemoteFileEditorInput(file, monitor), "org.eclipse.ui.DefaultTextEditor"); //$NON-NLS-1$
- }
- }
- } catch (PartInitException e) {
- throw new InvocationTargetException(e);
- }
- }
- }
- }
- }, false, PROGRESS_BUSYCURSOR); //$NON-NLS-1$
- }
- /*
- * @see TeamAction#isEnabled()
- */
- protected boolean isEnabled() throws TeamException {
- ILogEntry[] entries = getSelectedLogEntries();
- if (entries.length == 0) return false;
- return true;
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/OpenRemoteFileAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/OpenRemoteFileAction.java
deleted file mode 100644
index 033fd3b9a..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/OpenRemoteFileAction.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.ICVSRemoteFile;
-import org.eclipse.team.internal.ccvs.core.ILogEntry;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.RemoteFileEditorInput;
-import org.eclipse.ui.*;
-
-public class OpenRemoteFileAction extends CVSAction {
- /**
- * Returns the selected remote files
- */
- protected ICVSRemoteFile[] getSelectedRemoteFiles() {
- ArrayList resources = null;
- if (!selection.isEmpty()) {
- resources = new ArrayList();
- Iterator elements = selection.iterator();
- while (elements.hasNext()) {
- Object next = elements.next();
- if (next instanceof ICVSRemoteFile) {
- resources.add(next);
- continue;
- }
- if (next instanceof ILogEntry) {
- resources.add(((ILogEntry)next).getRemoteFile());
- continue;
- }
- if (next instanceof IAdaptable) {
- IAdaptable a = (IAdaptable) next;
- Object adapter = a.getAdapter(ICVSRemoteFile.class);
- if (adapter instanceof ICVSRemoteFile) {
- resources.add(adapter);
- continue;
- }
- }
- }
- }
- if (resources != null && !resources.isEmpty()) {
- ICVSRemoteFile[] result = new ICVSRemoteFile[resources.size()];
- resources.toArray(result);
- return result;
- }
- return new ICVSRemoteFile[0];
- }
- /*
- * @see CVSAction#execute(IAction)
- */
- public void execute(IAction action) throws InterruptedException, InvocationTargetException {
- run(new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException {
- IWorkbench workbench = CVSUIPlugin.getPlugin().getWorkbench();
- IEditorRegistry registry = workbench.getEditorRegistry();
- IWorkbenchPage page = workbench.getActiveWorkbenchWindow().getActivePage();
- ICVSRemoteFile[] files = getSelectedRemoteFiles();
- for (int i = 0; i < files.length; i++) {
- ICVSRemoteFile file = files[i];
- String filename = file.getName();
- IEditorDescriptor descriptor = registry.getDefaultEditor(filename);
- String id;
- if (descriptor == null) {
- id = "org.eclipse.ui.DefaultTextEditor"; //$NON-NLS-1$
- } else {
- id = descriptor.getId();
- }
- try {
- try {
- page.openEditor(new RemoteFileEditorInput(files[i], monitor), id);
- } catch (PartInitException e) {
- if (id.equals("org.eclipse.ui.DefaultTextEditor")) { //$NON-NLS-1$
- throw e;
- } else {
- page.openEditor(new RemoteFileEditorInput(files[i], monitor), "org.eclipse.ui.DefaultTextEditor"); //$NON-NLS-1$
- }
- }
- } catch (PartInitException e) {
- throw new InvocationTargetException(e);
- }
- }
- }
- }, false, PROGRESS_BUSYCURSOR); //$NON-NLS-1$
- }
- /*
- * @see TeamAction#isEnabled()
- */
- protected boolean isEnabled() throws TeamException {
- ICVSRemoteFile[] resources = getSelectedRemoteFiles();
- if (resources.length == 0) return false;
- return true;
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ReplaceWithRemoteAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ReplaceWithRemoteAction.java
deleted file mode 100644
index d182ccdb5..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ReplaceWithRemoteAction.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-import org.eclipse.team.internal.ccvs.core.ICVSResource;
-import org.eclipse.team.internal.ccvs.core.syncinfo.ResourceSyncInfo;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.operations.ReplaceOperation;
-import org.eclipse.team.internal.core.InfiniteSubProgressMonitor;
-import org.eclipse.team.internal.ui.dialogs.IPromptCondition;
-
-public class ReplaceWithRemoteAction extends WorkspaceAction {
- public void execute(IAction action) throws InvocationTargetException, InterruptedException {
-
- final IResource[][] resources = new IResource[][] {null};
- run(new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InterruptedException, InvocationTargetException {
- try {
- monitor = Policy.monitorFor(monitor);
- monitor.beginTask(null, 100);
- resources[0] = checkOverwriteOfDirtyResources(getSelectedResources(), new InfiniteSubProgressMonitor(monitor, 100));
- } catch (TeamException e) {
- throw new InvocationTargetException(e);
- } finally {
- monitor.done();
- }
- }
- }, false /* cancelable */, PROGRESS_BUSYCURSOR);
-
- if (resources[0] == null || resources[0].length == 0) return;
-
- // Peform the replace in the background
- new ReplaceOperation(getTargetPart(), resources[0], null, true).run();
- }
-
- protected IPromptCondition getPromptCondition(IResource[] dirtyResources) {
- return getOverwriteLocalChangesPrompt(dirtyResources);
- }
-
- /**
- * @see org.eclipse.team.internal.ccvs.ui.actions.CVSAction#getErrorTitle()
- */
- protected String getErrorTitle() {
- return Policy.bind("ReplaceWithRemoteAction.problemMessage"); //$NON-NLS-1$
- }
-
- /**
- * @see org.eclipse.team.internal.ccvs.ui.actions.WorkspaceAction#isEnabledForAddedResources()
- */
- protected boolean isEnabledForAddedResources() {
- return false;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.actions.WorkspaceAction#isEnabledForNonExistantResources()
- */
- protected boolean isEnabledForNonExistantResources() {
- return true;
- }
-
- /**
- * @see org.eclipse.team.internal.ccvs.ui.actions.WorkspaceAction#isEnabledForCVSResource(org.eclipse.team.internal.ccvs.core.ICVSResource)
- */
- protected boolean isEnabledForCVSResource(ICVSResource cvsResource) throws CVSException {
- if (super.isEnabledForCVSResource(cvsResource)) {
- // Don't enable if there are sticky file revisions in the lineup
- if (!cvsResource.isFolder()) {
- ResourceSyncInfo info = cvsResource.getSyncInfo();
- if (info != null && info.getTag() != null) {
- String revision = info.getRevision();
- String tag = info.getTag().getName();
- if (revision.equals(tag)) return false;
- }
- }
- return true;
- } else {
- return false;
- }
- }
-
- /*
- * Update the text label for the action based on the tags in the
- * selection.
- *
- * @see TeamAction#setActionEnablement(org.eclipse.jface.action.IAction)
- */
- protected void setActionEnablement(IAction action) {
- super.setActionEnablement(action);
-
- action.setText(calculateActionTagValue());
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ReplaceWithRevisionAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ReplaceWithRevisionAction.java
deleted file mode 100644
index d0fc01de5..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ReplaceWithRevisionAction.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.viewers.*;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.team.internal.ccvs.ui.CVSCompareRevisionsInput;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ui.Utils;
-import org.eclipse.team.ui.SaveablePartDialog;
-
-/**
- * Displays a compare dialog and allows the same behavior as the compare. In addition
- * a replace button is added to the dialog that will replace the local with the currently
- * selected revision.
- *
- * @since 3.0
- */
-public class ReplaceWithRevisionAction extends CompareWithRevisionAction {
-
- protected static final int REPLACE_ID = 10;
- private CVSCompareRevisionsInput input;
-
- protected class ReplaceCompareDialog extends SaveablePartDialog {
- private Button replaceButton;
-
- public ReplaceCompareDialog(Shell shell, CVSCompareRevisionsInput input) {
- super(shell, input);
- // Don't allow editing of the merge viewers in the replace
- input.getCompareConfiguration().setLeftEditable(false);
- input.getCompareConfiguration().setRightEditable(false);
- }
-
- /**
- * Add the replace button to the dialog.
- */
- protected void createButtonsForButtonBar(Composite parent) {
- replaceButton = createButton(parent, REPLACE_ID, Policy.bind("ReplaceWithRevisionAction.0"), true); //$NON-NLS-1$
- replaceButton.setEnabled(false);
- input.getViewer().addSelectionChangedListener(
- new ISelectionChangedListener() {
- public void selectionChanged(SelectionChangedEvent e) {
- ISelection s= e.getSelection();
- replaceButton.setEnabled(s != null && ! s.isEmpty());
- }
- }
- );
- createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false); //$NON-NLS-1$
- // Don't call super because we don't want the OK button to appear
- }
-
- /**
- * If the replace button was pressed.
- */
- protected void buttonPressed(int buttonId) {
- if(buttonId == REPLACE_ID) {
- try {
- input.replaceLocalWithCurrentlySelectedRevision();
- } catch (CoreException e) {
- Utils.handle(e);
- }
- buttonId = IDialogConstants.OK_ID;
- }
- super.buttonPressed(buttonId);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.actions.CompareWithRevisionAction#createCompareDialog(org.eclipse.swt.widgets.Shell, org.eclipse.team.internal.ccvs.ui.CVSCompareRevisionsInput)
- */
- protected SaveablePartDialog createCompareDialog(Shell shell, CVSCompareRevisionsInput input) {
- this.input = input;
- return new ReplaceCompareDialog(shell, input); //$NON-NLS-1$
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.actions.CompareWithRevisionAction#getActionTitle()
- */
- protected String getActionTitle() {
- return Policy.bind("ReplaceWithRevisionAction.1"); //$NON-NLS-1$
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ReplaceWithTagAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ReplaceWithTagAction.java
deleted file mode 100644
index f0d90294f..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ReplaceWithTagAction.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-import org.eclipse.team.internal.ccvs.core.CVSTag;
-import org.eclipse.team.internal.ccvs.ui.IHelpContextIds;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.operations.ReplaceOperation;
-import org.eclipse.team.internal.ccvs.ui.tags.TagSelectionDialog;
-import org.eclipse.team.internal.ccvs.ui.tags.TagSource;
-
-/**
- * Action for replace with tag.
- */
-public class ReplaceWithTagAction extends WorkspaceAction {
- /*
- * Method declared on IActionDelegate.
- */
- public void execute(IAction action) throws InterruptedException, InvocationTargetException {
-
- // Setup the holders
- final IResource[][] resources = new IResource[][] {null};
- final CVSTag[] tag = new CVSTag[] {null};
- final boolean[] recurse = new boolean[] {true};
-
- // Show a busy cursor while display the tag selection dialog
- run(new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InterruptedException, InvocationTargetException {
-
- try {
- resources[0] =
- checkOverwriteOfDirtyResources(
- getSelectedResources(),
- null /* no progress just a busy cursor for now */);
- } catch (CVSException e) {
- throw new InvocationTargetException(e);
- }
- if(resources[0].length == 0) {
- // nothing to do
- return;
- }
- TagSelectionDialog dialog = new TagSelectionDialog(getShell(), TagSource.create(resources[0]),
- Policy.bind("ReplaceWithTagAction.message"), //$NON-NLS-1$
- Policy.bind("TagSelectionDialog.Select_a_Tag_1"), //$NON-NLS-1$
- TagSelectionDialog.INCLUDE_ALL_TAGS,
- true, /*show recurse*/
- IHelpContextIds.REPLACE_TAG_SELECTION_DIALOG); //$NON-NLS-1$
- dialog.setBlockOnOpen(true);
- if (dialog.open() == Dialog.CANCEL) {
- return;
- }
- tag[0] = dialog.getResult();
- recurse[0] = dialog.getRecursive();
-
- // For non-projects determine if the tag being loaded is the same as the resource's parent
- // If it's not, warn the user that they will have strange sync behavior
- try {
- if(!CVSAction.checkForMixingTags(getShell(), resources[0], tag[0])) {
- tag[0] = null;
- return;
- }
- } catch (CVSException e) {
- throw new InvocationTargetException(e);
- }
- }
- }, false /* cancelable */, PROGRESS_BUSYCURSOR); //$NON-NLS-1$
-
- if (resources[0] == null || resources[0].length == 0 || tag[0] == null) return;
-
- // Peform the replace in the background
- new ReplaceOperation(getTargetPart(), resources[0], tag[0], recurse[0]).run();
- }
-
- /**
- * @see org.eclipse.team.internal.ccvs.ui.actions.CVSAction#getErrorTitle()
- */
- protected String getErrorTitle() {
- return Policy.bind("ReplaceWithTagAction.replace"); //$NON-NLS-1$
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.actions.WorkspaceAction#isEnabledForNonExistantResources()
- */
- protected boolean isEnabledForNonExistantResources() {
- return true;
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/RestoreFromRepositoryAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/RestoreFromRepositoryAction.java
deleted file mode 100644
index 1c9c95e02..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/RestoreFromRepositoryAction.java
+++ /dev/null
@@ -1,198 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.core.client.*;
-import org.eclipse.team.internal.ccvs.core.client.Command.LocalOption;
-import org.eclipse.team.internal.ccvs.core.client.Command.QuietOption;
-import org.eclipse.team.internal.ccvs.core.connection.CVSRepositoryLocation;
-import org.eclipse.team.internal.ccvs.core.connection.CVSServerException;
-import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot;
-import org.eclipse.team.internal.ccvs.core.syncinfo.FolderSyncInfo;
-import org.eclipse.team.internal.ccvs.core.util.KnownRepositories;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.ResizableWizardDialog;
-import org.eclipse.team.internal.ccvs.ui.wizards.RestoreFromRepositoryWizard;
-
-/**
- * @author Administrator
- *
- * To change this generated comment edit the template variable "typecomment":
- * Window>Preferences>Java>Templates.
- * To enable and disable the creation of type comments go to
- * Window>Preferences>Java>Code Generation.
- */
-public class RestoreFromRepositoryAction extends CVSAction {
-
- /*
- * This class handles the output from "cvs log -R ..." where -R
- * indicates that only the RCS file name is to be returned. Files
- * that have been deleted will be in the Attic. The Attic may also
- * contains files that exist on a branch but not in HEAD
- */
- class AtticLogListener extends CommandOutputListener {
- private static final String ATTIC = "Attic"; //$NON-NLS-1$
- private static final String RCS_FILE_POSTFIX = ",v"; //$NON-NLS-1$
- private static final String LOGGING_PREFIX = "Logging "; //$NON-NLS-1$
- ICVSFolder currentFolder;
- List atticFiles = new ArrayList();
-
- public IStatus messageLine(
- String line,
- ICVSRepositoryLocation location,
- ICVSFolder commandRoot,
- IProgressMonitor monitor) {
-
- // Find all RCS file names that contain "Attic"
- int index = line.indexOf(ATTIC);
- if (index == -1) return OK;
- // Extract the file name and path from the RCS path
- // String filePath = line.substring(index);
- int start = line.indexOf(Session.SERVER_SEPARATOR, index);
- String fileName = line.substring(start + 1);
- if (fileName.endsWith(RCS_FILE_POSTFIX)) {
- fileName = fileName.substring(0, fileName.length() - RCS_FILE_POSTFIX.length());
- }
- try {
- atticFiles.add(currentFolder.getFile(fileName));
- } catch (CVSException e) {
- return e.getStatus();
- }
- return OK;
- }
-
- public IStatus errorLine(
- String line,
- ICVSRepositoryLocation location,
- ICVSFolder commandRoot,
- IProgressMonitor monitor) {
-
- CVSRepositoryLocation repo = (CVSRepositoryLocation)location;
- String folderPath = repo.getServerMessageWithoutPrefix(line, SERVER_PREFIX);
- if (folderPath != null) {
- if (folderPath.startsWith(LOGGING_PREFIX)) {
- folderPath = folderPath.substring(LOGGING_PREFIX.length());
- try {
- currentFolder = commandRoot.getFolder(folderPath);
- } catch (CVSException e) {
- return e.getStatus();
- }
- return OK;
- }
- }
- return super.errorLine(line, location, commandRoot, monitor);
- }
-
- public ICVSFile[] getAtticFilePaths() {
- return (ICVSFile[]) atticFiles.toArray(new ICVSFile[atticFiles.size()]);
- }
- }
-
- /**
- * @see org.eclipse.team.internal.ccvs.ui.actions.CVSAction#execute(org.eclipse.jface.action.IAction)
- */
- protected void execute(IAction action) throws InvocationTargetException, InterruptedException {
- IContainer resource = (IContainer)getSelectedResources()[0];
- ICVSFile[] files = fetchDeletedFiles(resource);
- if (files == null) return;
- if (files.length == 0) {
- MessageDialog.openInformation(getShell(), Policy.bind("RestoreFromRepositoryAction.noFilesTitle"), Policy.bind("RestoreFromRepositoryAction.noFilesMessage", resource.getName())); //$NON-NLS-1$ //$NON-NLS-2$
- return;
- }
- RestoreFromRepositoryWizard wizard = new RestoreFromRepositoryWizard(resource, files);
- WizardDialog dialog = new ResizableWizardDialog(shell, wizard);
- dialog.setMinimumPageSize(350, 250);
- dialog.open();
- }
-
- /**
- * @see org.eclipse.team.internal.ui.actions.TeamAction#isEnabled()
- */
- protected boolean isEnabled() throws TeamException {
- IResource[] resources = getSelectedResources();
- if (resources.length != 1) return false;
- if (resources[0].getType() == IResource.FILE) return false;
- ICVSFolder folder = CVSWorkspaceRoot.getCVSFolderFor((IContainer)resources[0]);
- if (!folder.isCVSFolder()) return false;
- return true;
- }
-
- private ICVSFile[] fetchDeletedFiles(final IContainer parent) {
- final ICVSFile[][] files = new ICVSFile[1][0];
- files[0] = null;
- try {
- run(new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- try {
- ICVSFolder folder = CVSWorkspaceRoot.getCVSFolderFor(parent);
- FolderSyncInfo info = folder.getFolderSyncInfo();
- ICVSRepositoryLocation location = KnownRepositories.getInstance().getRepository(info.getRoot());
- files[0] = fetchFilesInAttic(location, folder, monitor);
- } catch (CVSException e) {
- throw new InvocationTargetException(e);
- }
- }
- }, true, PROGRESS_DIALOG);
- } catch (InvocationTargetException e) {
- handle(e);
- } catch (InterruptedException e) {
- return null;
- }
- return files[0];
- }
-
- /*
- * Fetch the RCS paths (minus the Attic segment) of all files in the Attic.
- * This path includes the repository root path.
- */
- private ICVSFile[] fetchFilesInAttic(ICVSRepositoryLocation location, ICVSFolder parent, IProgressMonitor monitor) throws CVSException {
- monitor = Policy.monitorFor(monitor);
- monitor.beginTask(null, 100);
- AtticLogListener listener = new AtticLogListener();
- Session session = new Session(location, parent, true /* output to console */);
- session.open(Policy.subMonitorFor(monitor, 10), false /* read-only */);
- try {
- QuietOption quietness = CVSProviderPlugin.getPlugin().getQuietness();
- try {
- CVSProviderPlugin.getPlugin().setQuietness(Command.VERBOSE);
- IStatus status = Command.LOG.execute(
- session,
- Command.NO_GLOBAL_OPTIONS,
- new LocalOption[] { Log.RCS_FILE_NAMES_ONLY },
- new ICVSResource[] { parent }, listener,
- Policy.subMonitorFor(monitor, 90));
- if (status.getCode() == CVSStatus.SERVER_ERROR) {
- throw new CVSServerException(status);
- }
- } finally {
- CVSProviderPlugin.getPlugin().setQuietness(quietness);
- monitor.done();
- }
- } finally {
- session.close();
- }
- return listener.getAtticFilePaths();
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/SetKeywordSubstitutionAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/SetKeywordSubstitutionAction.java
deleted file mode 100644
index dffb82f44..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/SetKeywordSubstitutionAction.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.team.internal.ccvs.core.client.Command.KSubstOption;
-import org.eclipse.team.internal.ccvs.ui.ResizableWizardDialog;
-import org.eclipse.team.internal.ccvs.ui.wizards.KSubstWizard;
-
-/**
- * TagAction tags the selected resources with a version tag specified by the user.
- */
-public class SetKeywordSubstitutionAction extends WorkspaceAction {
- private KSubstOption previousOption = null; // automatic
-
- /*
- * @see IActionDelegate#run(IAction)
- */
- public void execute(IAction action) {
- final IResource[] resources = getSelectedResources();
- KSubstWizard wizard = new KSubstWizard(resources, IResource.DEPTH_INFINITE, previousOption);
- WizardDialog dialog = new ResizableWizardDialog(getShell(), wizard);
- wizard.setParentDialog(dialog);
- dialog.setMinimumPageSize(350, 250);
- dialog.open();
- previousOption = wizard.getKSubstOption();
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ShowAnnotationAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ShowAnnotationAction.java
deleted file mode 100644
index e7e190b74..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ShowAnnotationAction.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.core.client.listeners.LogEntry;
-import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot;
-import org.eclipse.team.internal.ccvs.core.syncinfo.ResourceSyncInfo;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.operations.ShowAnnotationOperation;
-
-public class ShowAnnotationAction extends WorkspaceAction {
-
- /**
- * Action to open a CVS Annotate View
- */
- public void execute(IAction action) throws InvocationTargetException, InterruptedException {
- final ICVSResource resource= getSingleSelectedCVSResource();
- if (resource == null)
- return;
- execute(resource);
- }
-
- /**
- * Fetch the revision number of a CVS resource and perform a ShowAnnotationOperation
- * in the background.
- *
- * @param cvsResource The CVS resource (must not be null)
- *
- * @throws InvocationTargetException
- * @throws InterruptedException
- */
- public void execute(final ICVSResource cvsResource) throws InvocationTargetException, InterruptedException {
- final String revision= getRevision(cvsResource);
- if (revision == null)
- return;
- boolean binary = isBinary(cvsResource);
- if (binary) {
- if (!MessageDialog.openQuestion(getShell(), Policy.bind("ShowAnnotationAction.2"), Policy.bind("ShowAnnotationAction.3", cvsResource.getName()))) { //$NON-NLS-1$ //$NON-NLS-2$
- return;
- }
- }
- new ShowAnnotationOperation(getTargetPart(), cvsResource, revision, binary).run();
- }
-
- private boolean isBinary(ICVSResource cvsResource) {
- if (cvsResource.isFolder()) return false;
- try {
- byte[] syncBytes = ((ICVSFile)cvsResource).getSyncBytes();
- if (syncBytes == null)
- return false;
- return ResourceSyncInfo.isBinary(syncBytes);
- } catch (CVSException e) {
- return false;
- }
- }
-
- /**
- * Ony enabled for single resource selection
- */
- protected boolean isEnabled() throws TeamException {
- ICVSResource resource = getSingleSelectedCVSResource();
- return (resource != null && ! resource.isFolder() && resource.isManaged());
- }
-
- /**
- * This action is called from one of a Resource Navigator a CVS Resource
- * Navigator or a History Log Viewer. Return the selected resource as an
- * ICVSResource
- *
- * @return ICVSResource
- */
- private ICVSResource getSingleSelectedCVSResource() {
- // Selected from a CVS Resource Navigator
- final ICVSResource[] cvsResources = getSelectedCVSResources();
- if (cvsResources.length == 1) {
- return cvsResources[0];
- }
-
- // Selected from a History Viewer
- final Object[] logEntries = getSelectedResources(LogEntry.class);
- if (logEntries.length == 1) {
- final LogEntry aLogEntry = (LogEntry) logEntries[0];
- final ICVSRemoteFile cvsRemoteFile = aLogEntry.getRemoteFile();
- return cvsRemoteFile;
- }
-
- // Selected from a Resource Navigator
- final IResource[] resources = getSelectedResources();
- if (resources.length == 1) {
- return CVSWorkspaceRoot.getCVSResourceFor(resources[0]);
- }
- return null;
- }
-
-
- /**
- * Get the revision for the CVS resource. Throws an InvocationTargetException
- * if the revision could not be determined.
- *
- * @param cvsResource The CVS resource
- * @return The revision of the resource.
- * @throws InvocationTargetException
- */
- private String getRevision(ICVSResource cvsResource) throws InvocationTargetException {
- final ResourceSyncInfo info;
- try {
- info= cvsResource.getSyncInfo();
- if (info == null)
- throw new CVSException(Policy.bind("ShowAnnotationAction.noSyncInfo", cvsResource.getName())); //$NON-NLS-1$
- } catch (CVSException e) {
- throw new InvocationTargetException(e);
- }
- return info.getRevision();
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ShowCVSPerspectiveAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ShowCVSPerspectiveAction.java
deleted file mode 100644
index 53e039ab4..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ShowCVSPerspectiveAction.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.ui.IPerspectiveDescriptor;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-
-public class ShowCVSPerspectiveAction extends Action {
- public void run() {
- IWorkbench workbench = PlatformUI.getWorkbench();
- IWorkbenchWindow activeWindow = workbench.getActiveWorkbenchWindow();
- if (activeWindow == null) {
- return;
- }
- IWorkbenchPage activePage = activeWindow.getActivePage();
- if (activePage == null) {
- return;
- }
- IPerspectiveDescriptor cvsPerspective = workbench.getPerspectiveRegistry().findPerspectiveWithId("org.eclipse.team.cvs.ui.cvsPerspective"); //$NON-NLS-1$
- if(cvsPerspective!=null) {
- activePage.setPerspective(cvsPerspective);
- }
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ShowEditorsAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ShowEditorsAction.java
deleted file mode 100644
index 92624cfe8..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ShowEditorsAction.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003 CSC SoftwareConsult GmbH & Co. OHG, Germany and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * CSC - Intial implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-import java.lang.reflect.InvocationTargetException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.team.internal.ccvs.core.EditorsInfo;
-import org.eclipse.team.internal.ccvs.ui.EditorsView;
-/**
- *
- *
- * Action for Show Editors in popup menus
- *
- * @author Gregor Kohlwes
- *
- */
-public class ShowEditorsAction extends WorkspaceAction {
-
- protected void execute(IAction action) throws InvocationTargetException, InterruptedException {
- final EditorsAction editorsAction = new EditorsAction();
- run(new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor)
- throws InvocationTargetException, InterruptedException {
- executeProviderAction(editorsAction, monitor);
- }
- }, true /* cancelable */ , PROGRESS_DIALOG);
- EditorsInfo[] infos = editorsAction.getEditorsInfo();
- EditorsView view = (EditorsView)showView(EditorsView.VIEW_ID);
- if (view != null) {
- view.setInput(infos);
- }
-
- }
-
- /**
- * @see org.eclipse.team.internal.ccvs.ui.actions.WorkspaceAction#isEnabledForAddedResources()
- */
- protected boolean isEnabledForAddedResources() {
- return false;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.actions.WorkspaceAction#isEnabledForNonExistantResources()
- */
- protected boolean isEnabledForNonExistantResources() {
- return true;
- }
-
- /**
- * @see org.eclipse.team.internal.ccvs.ui.actions.WorkspaceAction#isEnabledForMultipleResources()
- */
- protected boolean isEnabledForMultipleResources() {
- // We support one selected Resource,
- // because the editors command will
- // show the editors of all children too.
- return false;
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ShowHistoryAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ShowHistoryAction.java
deleted file mode 100644
index 47a88521a..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ShowHistoryAction.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.ICVSRemoteFile;
-import org.eclipse.team.internal.ccvs.ui.HistoryView;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-
-public class ShowHistoryAction extends CVSAction {
- /**
- * Returns the selected remote files
- */
- protected ICVSRemoteFile[] getSelectedRemoteFiles() {
- ArrayList resources = null;
- if (!selection.isEmpty()) {
- resources = new ArrayList();
- Iterator elements = selection.iterator();
- while (elements.hasNext()) {
- Object next = elements.next();
- if (next instanceof ICVSRemoteFile) {
- resources.add(next);
- continue;
- }
- if (next instanceof IAdaptable) {
- IAdaptable a = (IAdaptable)next;
- Object adapter = a.getAdapter(ICVSRemoteFile.class);
- if (adapter instanceof ICVSRemoteFile) {
- resources.add(adapter);
- continue;
- }
- }
- }
- }
- if (resources != null && !resources.isEmpty()) {
- ICVSRemoteFile[] result = new ICVSRemoteFile[resources.size()];
- resources.toArray(result);
- return result;
- }
- return new ICVSRemoteFile[0];
- }
- /*
- * @see CVSAction#executeIAction)
- */
- public void execute(IAction action) throws InterruptedException, InvocationTargetException {
- run(new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException {
- ICVSRemoteFile[] files = getSelectedRemoteFiles();
- HistoryView view = (HistoryView)showView(HistoryView.VIEW_ID);
- if (view != null) {
- view.showHistory(files[0], true /* refetch */);
- }
- }
- }, false /* cancelable */, PROGRESS_BUSYCURSOR);
- }
- /*
- * @see TeamAction#isEnabled()
- */
- protected boolean isEnabled() throws TeamException {
- ICVSRemoteFile[] resources = getSelectedRemoteFiles();
- return resources.length == 1;
- }
- /**
- * @see org.eclipse.team.internal.ccvs.ui.actions.CVSAction#getErrorTitle()
- */
- protected String getErrorTitle() {
- return Policy.bind("ShowHistoryAction.showHistory"); //$NON-NLS-1$
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ShowResourceInHistoryAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ShowResourceInHistoryAction.java
deleted file mode 100644
index dbd91c537..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ShowResourceInHistoryAction.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-import org.eclipse.team.internal.ccvs.core.ICVSResource;
-import org.eclipse.team.internal.ccvs.ui.HistoryView;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-
-public class ShowResourceInHistoryAction extends WorkspaceAction {
- /*
- * @see IActionDelegate#run(IAction)
- */
- public void execute(IAction action) throws InterruptedException, InvocationTargetException {
- run(new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException {
- IResource[] resources = getSelectedResources();
- if (resources.length != 1) return;
- HistoryView view = (HistoryView)showView(HistoryView.VIEW_ID);
- if (view != null) {
- view.showHistory(resources[0], true /* fetch */);
- }
- }
- }, false /* cancelable */, PROGRESS_BUSYCURSOR);
- }
-
- /**
- * @see org.eclipse.team.internal.ccvs.ui.actions.CVSAction#getErrorTitle()
- */
- protected String getErrorTitle() {
- return Policy.bind("ShowHistoryAction.showHistory"); //$NON-NLS-1$
- }
-
- /**
- * @see org.eclipse.team.internal.ccvs.ui.actions.WorkspaceAction#isEnabledForMultipleResources()
- */
- protected boolean isEnabledForMultipleResources() {
- return false;
- }
-
- /**
- * @see org.eclipse.team.internal.ccvs.ui.actions.WorkspaceAction#isEnabledForAddedResources()
- */
- protected boolean isEnabledForAddedResources() {
- return false;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.actions.WorkspaceAction#isEnabledForNonExistantResources()
- */
- protected boolean isEnabledForNonExistantResources() {
- return true;
- }
-
- /**
- * @see org.eclipse.team.internal.ccvs.ui.actions.WorkspaceAction#isEnabledForCVSResource(org.eclipse.team.internal.ccvs.core.ICVSResource)
- */
- protected boolean isEnabledForCVSResource(ICVSResource cvsResource) throws CVSException {
- return (!cvsResource.isFolder() && super.isEnabledForCVSResource(cvsResource));
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/SyncAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/SyncAction.java
deleted file mode 100644
index 14acbc3b1..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/SyncAction.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.compare.CompareUI;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.subscribers.Subscriber;
-import org.eclipse.team.core.synchronize.SyncInfo;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.subscriber.WorkspaceSynchronizeParticipant;
-import org.eclipse.team.internal.ui.Utils;
-import org.eclipse.team.ui.TeamUI;
-import org.eclipse.team.ui.synchronize.*;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * Action to initiate a CVS workspace synchronize
- */
-public class SyncAction extends WorkspaceAction {
-
- public void execute(IAction action) throws InvocationTargetException {
- final IResource[] resources = getResourcesToSync();
- if (resources == null || resources.length == 0) return;
-
- if(isSingleFile(resources)) {
- showSingleFileComparison(getShell(), CVSProviderPlugin.getPlugin().getCVSWorkspaceSubscriber(), resources[0]);
- } else {
- // First check if there is an existing matching participant
- WorkspaceSynchronizeParticipant participant = (WorkspaceSynchronizeParticipant)SubscriberParticipant.getMatchingParticipant(WorkspaceSynchronizeParticipant.ID, resources);
- // If there isn't, create one and add to the manager
- if (participant == null) {
- participant = new WorkspaceSynchronizeParticipant(new ResourceScope(resources));
- TeamUI.getSynchronizeManager().addSynchronizeParticipants(new ISynchronizeParticipant[] {participant});
- }
- participant.refresh(resources, getTargetPart().getSite());
- }
- }
-
- /**
- * Refresh the subscriber directly and show the resulting synchronization state in a compare editor. If there
- * is no difference the user is prompted.
- *
- * @param resources the file to refresh and compare
- */
- public static void showSingleFileComparison(final Shell shell, final Subscriber subscriber, final IResource resource) {
- try {
- PlatformUI.getWorkbench().getProgressService().busyCursorWhile(new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- try {
- subscriber.refresh(new IResource[]{resource}, IResource.DEPTH_ZERO, monitor);
- } catch (TeamException e) {
- throw new InvocationTargetException(e);
- }
- }
- });
- final SyncInfo info = subscriber.getSyncInfo(resource);
- if (info == null) return;
- shell.getDisplay().syncExec(new Runnable() {
- public void run() {
- if (info.getKind() == SyncInfo.IN_SYNC) {
- MessageDialog.openInformation(shell, Policy.bind("SyncAction.noChangesTitle"), Policy.bind("SyncAction.noChangesMessage")); //$NON-NLS-1$ //$NON-NLS-2$
- } else {
- SyncInfoCompareInput input = new SyncInfoCompareInput(subscriber.getName(), info);
- CompareUI.openCompareEditor(input);
- }
- }
- });
- } catch (InvocationTargetException e) {
- Utils.handle(e);
- } catch (InterruptedException e) {
- } catch (TeamException e) {
- Utils.handle(e);
- }
- }
-
- public static boolean isSingleFile(IResource[] resources) {
- return resources.length == 1 && resources[0].getType() == IResource.FILE;
- }
-
- protected IResource[] getResourcesToSync() {
- return getSelectedResources();
- }
-
- /**
- * Enable for resources that are managed (using super) or whose parent is a
- * CVS folder.
- *
- * @see org.eclipse.team.internal.ccvs.ui.actions.WorkspaceAction#isEnabledForCVSResource(org.eclipse.team.internal.ccvs.core.ICVSResource)
- */
- protected boolean isEnabledForCVSResource(ICVSResource cvsResource) throws CVSException {
- return (super.isEnabledForCVSResource(cvsResource) || (cvsResource.getParent().isCVSFolder() && !cvsResource.isIgnored()));
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/TagAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/TagAction.java
deleted file mode 100644
index 92a610bda..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/TagAction.java
+++ /dev/null
@@ -1,161 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.MessageDialogWithToggle;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.window.Window;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-import org.eclipse.team.internal.ccvs.core.CVSTag;
-import org.eclipse.team.internal.ccvs.core.ICVSFolder;
-import org.eclipse.team.internal.ccvs.core.ICVSResource;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.ICVSUIConstants;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.operations.ITagOperation;
-import org.eclipse.team.internal.ccvs.ui.repo.RepositoryManager;
-import org.eclipse.team.internal.ccvs.ui.tags.TagAsVersionDialog;
-
-/**
- * TagAction tags the selected resources with a version tag specified by the user.
- */
-public abstract class TagAction extends WorkspaceAction {
-
- // remember if the execute action was cancelled
- private boolean wasCancelled = false;
-
- /**
- * @see CVSAction#execute(IAction)
- */
- public void execute(IAction action) throws InvocationTargetException, InterruptedException {
- setWasCancelled(false);
- if (!performPrompting()) {
- setWasCancelled(true);
- return;
- }
-
- // Prompt for the tag name
- final ITagOperation[] result = new ITagOperation[1];
- getShell().getDisplay().syncExec(new Runnable() {
- public void run() {
- result[0] = configureOperation();
- if (result[0] == null) {
- return;
- }
- }});
-
- if (result[0] == null) {
- setWasCancelled(true);
- return;
- }
-
- result[0].run();
- }
-
- protected boolean performPrompting() {
- return true;
- }
-
- /**
- * Prompts the user for a tag name.
- * Note: This method is designed to be overridden by test cases.
- * @return the operation, or null to cancel
- */
- protected ITagOperation configureOperation() {
- IPreferenceStore store = CVSUIPlugin.getPlugin().getPreferenceStore();
- ITagOperation operation = createTagOperation();
- if (operation.getCVSResources().length == 0) {
- return null;
- }
- TagAsVersionDialog dialog = new TagAsVersionDialog(getShell(),
- Policy.bind("TagAction.tagResources"), //$NON-NLS-1$
- operation);
- if (dialog.open() != Window.OK) return null;
-
- // The user has indicated they want to force a move. Make sure they really do.
- if (dialog.shouldMoveTag() && store.getBoolean(ICVSUIConstants.PREF_CONFIRM_MOVE_TAG)) {
- MessageDialogWithToggle confirmDialog = MessageDialogWithToggle.openYesNoQuestion(getShell(),
- Policy.bind("TagAction.moveTagConfirmTitle"), //$NON-NLS-1$
- Policy.bind("TagAction.moveTagConfirmMessage", dialog.getTagName()), //$NON-NLS-1$
- null,
- false,
- null,
- null);
-
- if (confirmDialog.getReturnCode() == IDialogConstants.YES_ID) {
- store.setValue(ICVSUIConstants.PREF_CONFIRM_MOVE_TAG, !confirmDialog.getToggleState());
- } else {
- return null;
- }
- }
-
- // The user is a cowboy and wants to do it.
- return dialog.getOperation();
- }
-
- protected abstract ITagOperation createTagOperation();
-
- protected String getErrorTitle() {
- return Policy.bind("TagAction.tagErrorTitle"); //$NON-NLS-1$
- }
-
- protected String getWarningTitle() {
- return Policy.bind("TagAction.tagWarningTitle"); //$NON-NLS-1$
- }
-
- /**
- * @see org.eclipse.team.internal.ccvs.ui.actions.WorkspaceAction#isEnabledForAddedResources()
- */
- protected boolean isEnabledForAddedResources() {
- return false;
- }
-
- public boolean wasCancelled() {
- return wasCancelled;
- }
-
- public void setWasCancelled(boolean b) {
- wasCancelled = b;
- }
-
- public static void broadcastTagChange(final ICVSResource[] resources, final CVSTag tag) throws InvocationTargetException, InterruptedException {
- final RepositoryManager manager = CVSUIPlugin.getPlugin().getRepositoryManager();
- manager.run(new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) {
- try {
- for (int i = 0; i < resources.length; i++) {
- ICVSResource resource = resources[i];
- // Cache the new tag creation even if the tag may have had warnings.
- manager.addTags(getRootParent(resource), new CVSTag[] {tag});
- }
- } catch (CVSException e) {
- CVSUIPlugin.log(e);
- }
- }
- private ICVSResource getRootParent(ICVSResource resource) throws CVSException {
- if (!resource.isManaged()) return resource;
- ICVSFolder parent = resource.getParent();
- if (parent == null) return resource;
- // Special check for a parent which is the repository itself
- if (parent.getName().length() == 0) return resource;
- return getRootParent(parent);
- }
- }, new NullProgressMonitor());
- }
-}
-
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/TagInRepositoryAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/TagInRepositoryAction.java
deleted file mode 100644
index 14bd56d53..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/TagInRepositoryAction.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.internal.ccvs.core.ICVSResource;
-import org.eclipse.team.internal.ccvs.ui.operations.ITagOperation;
-import org.eclipse.team.internal.ccvs.ui.operations.TagInRepositoryOperation;
-
-public class TagInRepositoryAction extends TagAction {
-
- /**
- * @see TeamAction#isEnabled()
- */
- protected boolean isEnabled() throws TeamException {
- ICVSResource[] resources = getSelectedCVSResources();
- if (resources.length == 0) return false;
- for (int i = 0; i < resources.length; i++) {
- if (resources[i] instanceof ICVSRepositoryLocation) return false;
- }
- return true;
- }
-
- /**
- * @see CVSAction#needsToSaveDirtyEditors()
- */
- protected boolean needsToSaveDirtyEditors() {
- return false;
- }
-
- /**
- * @see org.eclipse.team.internal.ccvs.ui.actions.WorkspaceAction#requiresLocalSyncInfo()
- */
- protected boolean requiresLocalSyncInfo() {
- return false;
- }
-
- protected ITagOperation createTagOperation() {
- return new TagInRepositoryOperation(getTargetPart(), getSelectedRemoteResources());
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/TagLocalAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/TagLocalAction.java
deleted file mode 100644
index 5f0a41f27..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/TagLocalAction.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.team.internal.ccvs.ui.CVSLightweightDecorator;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.operations.ITagOperation;
-import org.eclipse.team.internal.ccvs.ui.operations.TagOperation;
-import org.eclipse.team.internal.ui.dialogs.IPromptCondition;
-import org.eclipse.team.internal.ui.dialogs.PromptingDialog;
-
-public class TagLocalAction extends TagAction {
-
- IResource[] resources;
-
- protected boolean performPrompting() {
- // Prompt for any uncommitted changes
- PromptingDialog prompt = new PromptingDialog(getShell(), getSelectedResources(),
- getPromptCondition(), Policy.bind("TagAction.uncommittedChangesTitle"));//$NON-NLS-1$
- try {
- resources = prompt.promptForMultiple();
- } catch(InterruptedException e) {
- return false;
- }
- if(resources.length == 0) {
- // nothing to do
- return false;
- }
-
- return true;
- }
-
- protected ITagOperation createTagOperation() {
- return new TagOperation(getTargetPart(), resources);
- }
-
- /**
- * Note: This method is designed to be overridden by test cases.
- */
- protected IPromptCondition getPromptCondition() {
- return new IPromptCondition() {
- public boolean needsPrompt(IResource resource) {
- return CVSLightweightDecorator.isDirty(resource);
- }
- public String promptMessage(IResource resource) {
- return Policy.bind("TagAction.uncommittedChanges", resource.getName());//$NON-NLS-1$
- }
- };
- }
-
- /**
- * Return the resources that have been selected by the user. The user has been given
- * a chance to remove any resources with outgoing changes so all provided resources
- * are to be tagged.
- * @return Returns the resources.
- */
- protected IResource[] getResources() {
- return resources;
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/UneditAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/UneditAction.java
deleted file mode 100644
index 2c5ac01f8..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/UneditAction.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.team.core.Team;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-import org.eclipse.team.internal.ccvs.core.CVSTeamProvider;
-import org.eclipse.team.internal.ccvs.core.ICVSFile;
-import org.eclipse.team.internal.ccvs.core.ICVSResource;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.ui.actions.WorkspaceModifyOperation;
-
-public class UneditAction extends WorkspaceAction {
-
- /**
- * @see org.eclipse.team.internal.ccvs.ui.actions.CVSAction#execute(org.eclipse.jface.action.IAction)
- */
- protected void execute(IAction action) throws InvocationTargetException, InterruptedException {
-
- if(! MessageDialog.openConfirm(getShell(), Policy.bind("Uneditaction.confirmTitle"), Policy.bind("Uneditaction.confirmMessage"))) { //$NON-NLS-1$ //$NON-NLS-2$
- return;
- }
-
- run(new WorkspaceModifyOperation(null) {
- public void execute(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- executeProviderAction(new IProviderAction() {
- public IStatus execute(CVSTeamProvider provider, IResource[] resources, IProgressMonitor monitor) throws CVSException {
- provider.unedit(resources, false /* recurse */, true /* notify server */, monitor);
- return Team.OK_STATUS;
- }
- }, monitor);
- }
- }, true /* cancelable */, PROGRESS_DIALOG);
- }
-
- /**
- * @see org.eclipse.team.internal.ccvs.ui.actions.WorkspaceAction#isEnabledForAddedResources()
- */
- protected boolean isEnabledForAddedResources() {
- return false;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.actions.WorkspaceAction#isEnabledForNonExistantResources()
- */
- protected boolean isEnabledForNonExistantResources() {
- return true;
- }
-
- /**
- * @see org.eclipse.team.internal.ccvs.ui.actions.WorkspaceAction#isEnabledForCVSResource(org.eclipse.team.internal.ccvs.core.ICVSResource)
- */
- protected boolean isEnabledForCVSResource(ICVSResource cvsResource) throws CVSException {
- if (cvsResource.isFolder()) return false;
- if (super.isEnabledForCVSResource(cvsResource)) {
- return !((ICVSFile)cvsResource).isReadOnly() && ((ICVSFile)cvsResource).isEdited();
- } else {
- return false;
- }
- }
-
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/UnmanageAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/UnmanageAction.java
deleted file mode 100644
index 61badd0fe..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/UnmanageAction.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.*;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-import org.eclipse.team.internal.ccvs.core.ICVSResource;
-import org.eclipse.team.internal.ccvs.ui.IHelpContextIds;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.operations.DisconnectOperation;
-import org.eclipse.ui.help.WorkbenchHelp;
-
-/**
- * Unmanage action removes the cvs feature from a project and optionally
- * deletes the CVS meta information that is stored on disk.
- */
-public class UnmanageAction extends WorkspaceAction {
-
- static class DeleteProjectDialog extends MessageDialog {
-
- boolean deleteContent = false;
- Button radio1;
- Button radio2;
-
- DeleteProjectDialog(Shell parentShell, IProject[] projects) {
- super(
- parentShell,
- getTitle(projects),
- null, // accept the default window icon
- getMessage(projects),
- MessageDialog.QUESTION,
- new String[] {IDialogConstants.YES_LABEL, IDialogConstants.NO_LABEL},
- 0); // yes is the default
- }
-
- static String getTitle(IProject[] projects) {
- if (projects.length == 1)
- return Policy.bind("Unmanage.title"); //$NON-NLS-1$
- else
- return Policy.bind("Unmanage.titleN"); //$NON-NLS-1$
- }
-
- static String getMessage(IProject[] projects) {
- if (projects.length == 1) {
- IProject project = projects[0];
- return Policy.bind("Unmanage.message", project.getName()); //$NON-NLS-1$
- }
- else {
- return Policy.bind("Unmanage.messageN", new Integer(projects.length).toString()); //$NON-NLS-1$
- }
- }
-
- protected Control createCustomArea(Composite parent) {
- Composite composite = new Composite(parent, SWT.NONE);
- composite.setLayout(new GridLayout());
- radio1 = new Button(composite, SWT.RADIO);
- radio1.addSelectionListener(selectionListener);
-
- radio1.setText(Policy.bind("Unmanage.option2")); //$NON-NLS-1$
-
- radio2 = new Button(composite, SWT.RADIO);
- radio2.addSelectionListener(selectionListener);
-
- radio2.setText(Policy.bind("Unmanage.option1")); //$NON-NLS-1$
-
- // set initial state
- radio1.setSelection(deleteContent);
- radio2.setSelection(!deleteContent);
-
- WorkbenchHelp.setHelp(composite, IHelpContextIds.DISCONNECT_ACTION);
-
- return composite;
- }
-
- private SelectionListener selectionListener = new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- Button button = (Button) e.widget;
- if (button.getSelection()) {
- deleteContent = (button == radio1);
- }
- }
- };
-
- public boolean getDeleteContent() {
- return deleteContent;
- }
- }
-
- private boolean deleteContent = false;
-
- /*
- * @see IActionDelegate#run(IAction)
- */
- public void execute(IAction action) throws InterruptedException, InvocationTargetException {
- if(confirmDeleteProjects()) {
- new DisconnectOperation(getTargetPart(), getSelectedProjects(), deleteContent)
- .run();
- }
- }
-
- boolean confirmDeleteProjects() {
- final int[] result = new int[] { MessageDialog.OK };
- IProject[] projects = getSelectedProjects();
- final DeleteProjectDialog dialog = new DeleteProjectDialog(shell, projects);
- shell.getDisplay().syncExec(new Runnable() {
- public void run() {
- result[0] = dialog.open();
- }
- });
- deleteContent = dialog.getDeleteContent();
- return result[0] == 0; // YES
- }
-
- /**
- * @see org.eclipse.team.internal.ccvs.ui.actions.CVSAction#getErrorTitle()
- */
- protected String getErrorTitle() {
- return Policy.bind("Unmanage.unmanagingError");//$NON-NLS-1$
- }
-
- /**
- * @see org.eclipse.team.internal.ccvs.ui.actions.WorkspaceAction#isEnabledForCVSResource(org.eclipse.team.internal.ccvs.core.ICVSResource)
- */
- protected boolean isEnabledForCVSResource(ICVSResource cvsResource) throws CVSException {
- IResource resource = cvsResource.getIResource();
- return resource != null && resource.getType() == IResource.PROJECT;
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/UpdateAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/UpdateAction.java
deleted file mode 100644
index 758d4e8f2..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/UpdateAction.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.team.internal.ccvs.ui.wizards.UpdateWizard;
-
-/**
- * UpdateAction performs a 'cvs update' command on the selected resources.
- * If conflicts are present (file has been changed both remotely and locally),
- * the changes will be merged into the local file such that the user must
- * resolve the conflicts. This action is temporary code; it will be removed
- * when a functional synchronize view has been implemented.
- */
-public class UpdateAction extends WorkspaceAction {
- /*
- * @see IActionDelegate#run(IAction)
- */
- public void execute(IAction action) throws InterruptedException, InvocationTargetException {
- UpdateWizard wizard = new UpdateWizard(getTargetPart(), getSelectedResources());
- WizardDialog dialog = new WizardDialog(getShell(), wizard);
- dialog.open();
- }
-
- /**
- * @see org.eclipse.team.internal.ccvs.ui.actions.WorkspaceAction#isEnabledForAddedResources()
- */
- protected boolean isEnabledForAddedResources() {
- return false;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.actions.WorkspaceAction#isEnabledForNonExistantResources()
- */
- protected boolean isEnabledForNonExistantResources() {
- return true;
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/UpdateSilentAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/UpdateSilentAction.java
deleted file mode 100644
index ba1e4af31..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/UpdateSilentAction.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-import java.lang.reflect.InvocationTargetException;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.team.internal.ccvs.core.client.Command;
-import org.eclipse.team.internal.ccvs.ui.operations.UpdateOperation;
-
-/**
- * Action that runs an update without prompting the user for a tag.
- *
- * @since 3.1
- */
-public class UpdateSilentAction extends UpdateAction {
- public void execute(IAction action) throws InterruptedException, InvocationTargetException {
- new UpdateOperation(getTargetPart(), getSelectedResources(), Command.NO_LOCAL_OPTIONS, null /* no tag */).run();
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/WorkspaceAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/WorkspaceAction.java
deleted file mode 100644
index 0970263b0..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/WorkspaceAction.java
+++ /dev/null
@@ -1,616 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashSet;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IResourceStatus;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.core.runtime.SubProgressMonitor;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.core.RepositoryProvider;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-import org.eclipse.team.internal.ccvs.core.CVSProviderPlugin;
-import org.eclipse.team.internal.ccvs.core.CVSTag;
-import org.eclipse.team.internal.ccvs.core.CVSTeamProvider;
-import org.eclipse.team.internal.ccvs.core.ICVSFolder;
-import org.eclipse.team.internal.ccvs.core.ICVSResource;
-import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot;
-import org.eclipse.team.internal.ccvs.core.resources.EclipseSynchronizer;
-import org.eclipse.team.internal.ccvs.core.syncinfo.FolderSyncInfo;
-import org.eclipse.team.internal.ccvs.core.syncinfo.ResourceSyncInfo;
-import org.eclipse.team.internal.ccvs.core.util.Util;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ui.dialogs.IPromptCondition;
-import org.eclipse.team.internal.ui.dialogs.PromptingDialog;
-
-/**
- * This class represents an action performed on a local CVS workspace
- */
-public abstract class WorkspaceAction extends CVSAction {
-
- public interface IProviderAction {
- public IStatus execute(CVSTeamProvider provider, IResource[] resources, IProgressMonitor monitor) throws CVSException;
- }
-
- /**
- * @see org.eclipse.team.internal.ccvs.ui.actions.CVSAction#beginExecution(IAction)
- */
- protected boolean beginExecution(IAction action) throws TeamException {
- if (super.beginExecution(action)) {
- // Ensure that the required sync info is loaded
- if (requiresLocalSyncInfo()) {
- // There is a possibility of the selection containing an orphaned subtree.
- // If it does, they will be purged and enablement rechecked before the
- // operation is performed.
- handleOrphanedSubtrees();
- // Check enablement just in case the sync info wasn't loaded
- if (!isEnabled()) {
- MessageDialog.openInformation(getShell(), Policy.bind("CVSAction.disabledTitle"), Policy.bind("CVSAction.disabledMessage")); //$NON-NLS-1$ //$NON-NLS-2$
- return false;
- }
- }
- return true;
- } else {
- return false;
- }
- }
-
- /*
- * Determine if any of the selected resources are deascendants of
- * an orphaned CVS subtree and if they are, purge the CVS folders.
- */
- private boolean handleOrphanedSubtrees() {
- // invoke the inherited method so that overlaps are maintained
- IResource[] resources = getSelectedResources();
- for (int i = 0; i < resources.length; i++) {
- IResource resource = resources[i];
- handleOrphanedSubtree(resource);
- }
- return false;
- }
-
- /*
- * Determine if the resource is a descendant of an orphaned subtree.
- * If it is, purge the CVS folders of the subtree.
- */
- private void handleOrphanedSubtree(IResource resource) {
- try {
- if (!CVSWorkspaceRoot.isSharedWithCVS(resource)) return ;
- ICVSFolder folder;
- if (resource.getType() == IResource.FILE) {
- folder = CVSWorkspaceRoot.getCVSFolderFor(resource.getParent());
- } else {
- folder = CVSWorkspaceRoot.getCVSFolderFor((IContainer)resource);
- }
- handleOrphanedSubtree(folder);
- } catch (CVSException e) {
- CVSProviderPlugin.log(e);
- }
- }
-
- /*
- * Recursively check for and handle orphaned CVS folders
- */
- private void handleOrphanedSubtree(final ICVSFolder folder) throws CVSException {
- if (folder.getIResource().getType() == IResource.PROJECT) return;
- if (CVSWorkspaceRoot.isOrphanedSubtree((IContainer)folder.getIResource())) {
- try {
- run(new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- try {
- folder.unmanage(null);
- } catch (CVSException e) {
- CVSProviderPlugin.log(e);
- }
- }
- }, true, PROGRESS_BUSYCURSOR);
- } catch (InvocationTargetException e) {
- // Ignore this since we logged the one we care about above
- } catch (InterruptedException e) {
- throw new OperationCanceledException();
- }
- }
- handleOrphanedSubtree(folder.getParent());
- }
-
- /**
- * Return true if the sync info is loaded for all selected resources.
- * The purpose of this method is to allow enablement code to be as fast
- * as possible. If the sync info is not loaded, the menu should be enabled
- * and, if choosen, the action will verify that it is indeed enabled before
- * performing the associated operation
- */
- protected boolean isSyncInfoLoaded(IResource[] resources) throws CVSException {
- return EclipseSynchronizer.getInstance().isSyncInfoLoaded(resources, getEnablementDepth());
- }
-
- /**
- * Returns the resource depth of the action for use in determining if the required
- * sync info is loaded. The default is IResource.DEPTH_INFINITE. Sunclasses can override
- * as required.
- */
- protected int getActionDepth() {
- return IResource.DEPTH_INFINITE;
- }
-
- /**
- * Returns the resource depth of the action enablement for use in determining if the required
- * sync info is loaded. The default is IResource.DEPTH_ZERO. Sunclasses can override
- * as required.
- */
- protected int getEnablementDepth() {
- return IResource.DEPTH_ZERO;
- }
-
- /**
- * Ensure that the sync info for all the provided resources has been loaded.
- * If an out-of-sync resource is found, prompt to refresh all the projects involved.
- */
- protected boolean ensureSyncInfoLoaded(IResource[] resources) throws CVSException {
- boolean keepTrying = true;
- while (keepTrying) {
- try {
- EclipseSynchronizer.getInstance().ensureSyncInfoLoaded(resources, getActionDepth());
- keepTrying = false;
- } catch (CVSException e) {
- if (e.getStatus().getCode() == IResourceStatus.OUT_OF_SYNC_LOCAL) {
- // determine the projects of the resources involved
- Set projects = new HashSet();
- for (int i = 0; i < resources.length; i++) {
- IResource resource = resources[i];
- projects.add(resource.getProject());
- }
- // prompt to refresh
- if (promptToRefresh(getShell(), (IResource[]) projects.toArray(new IResource[projects.size()]), e.getStatus())) {
- for (Iterator iter = projects.iterator();iter.hasNext();) {
- IProject project = (IProject) iter.next();
- try {
- project.refreshLocal(IResource.DEPTH_INFINITE, null);
- } catch (CoreException coreException) {
- throw CVSException.wrapException(coreException);
- }
- }
- } else {
- return false;
- }
- } else {
- throw e;
- }
- }
- }
- return true;
- }
-
- /**
- * Override to ensure that the sync info is available before performing the
- * real isEnabled()
test.
- *
- * @see org.eclipse.team.internal.ui.actions.TeamAction#setActionEnablement(IAction)
- */
- protected void setActionEnablement(IAction action) {
- try {
- boolean requires = requiresLocalSyncInfo();
- if (!requires || (requires && isSyncInfoLoaded(getSelectedResources()))) {
- super.setActionEnablement(action);
- } else {
- // If the sync info is not loaded, enable the menu item
- // Performing the action will ensure that the action should really
- // be enabled before anything else is done
- action.setEnabled(true);
- }
- } catch (CVSException e) {
- // We couldn't determine if the sync info was loaded.
- // Enable the action so that performing the action will
- // reveal the error to the user.
- action.setEnabled(true);
- }
- }
-
- /**
- * Return true if the action requires the sync info for the selected resources.
- * If the sync info is required, the real enablement code will only be run if
- * the sync info is loaded from disc. Otherwise, the action is enabled and
- * performing the action will load the sync info and verify that the action is truely
- * enabled before doing anything else.
- *
- * This implementation returns true
. Subclasses must override if they do
- * not require the sync info of the selected resources.
- *
- * @return boolean
- */
- protected boolean requiresLocalSyncInfo() {
- return true;
- }
-
- protected boolean promptToRefresh(final Shell shell, final IResource[] resources, final IStatus status) {
- final boolean[] result = new boolean[] { false};
- Runnable runnable = new Runnable() {
- public void run() {
- Shell shellToUse = shell;
- if (shell == null) {
- shellToUse = new Shell(Display.getCurrent());
- }
- String question;
- if (resources.length == 1) {
- question = Policy.bind("CVSAction.refreshQuestion", status.getMessage(), resources[0].getFullPath().toString()); //$NON-NLS-1$
- } else {
- question = Policy.bind("CVSAction.refreshMultipleQuestion", status.getMessage()); //$NON-NLS-1$
- }
- result[0] = MessageDialog.openQuestion(shellToUse, Policy.bind("CVSAction.refreshTitle"), question); //$NON-NLS-1$
- }
- };
- Display.getDefault().syncExec(runnable);
- return result[0];
- }
-
- /**
- * Most CVS workspace actions modify the workspace and thus should
- * save dirty editors.
- * @see org.eclipse.team.internal.ccvs.ui.actions.CVSAction#needsToSaveDirtyEditors()
- */
- protected boolean needsToSaveDirtyEditors() {
- return true;
- }
-
- /**
- * The action is enabled for the appropriate resources. This method checks
- * that:
- * init()
- * and dispose()
.
- */
- public class MyLifecycle implements org.eclipse.ui.console.IConsoleListener {
- public void consolesAdded(IConsole[] consoles) {
- for (int i = 0; i < consoles.length; i++) {
- IConsole console = consoles[i];
- if (console == CVSOutputConsole.this) {
- init();
- }
- }
-
- }
- public void consolesRemoved(IConsole[] consoles) {
- for (int i = 0; i < consoles.length; i++) {
- IConsole console = consoles[i];
- if (console == CVSOutputConsole.this) {
- ConsolePlugin.getDefault().getConsoleManager().removeConsoleListener(this);
- dispose();
- }
- }
- }
- }
-
- /**
- * Constructor initializes preferences and colors but doesn't create the console
- * page yet.
- */
- public CVSOutputConsole() {
- super("CVS", CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_CVS_CONSOLE)); //$NON-NLS-1$
- showOnMessage = CVSUIPlugin.getPlugin().getPreferenceStore().getBoolean(ICVSUIConstants.PREF_CONSOLE_SHOW_ON_MESSAGE);
- document = new ConsoleDocument();
- consoleManager = ConsolePlugin.getDefault().getConsoleManager();
- CVSProviderPlugin.getPlugin().setConsoleListener(CVSOutputConsole.this);
- CVSUIPlugin.getPlugin().getPreferenceStore().addPropertyChangeListener(CVSOutputConsole.this);
- setAutoScroll(true);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.console.AbstractConsole#init()
- */
- protected void init() {
- // Called when console is added to the console view
- super.init();
-
- initLimitOutput();
- initWrapSetting();
-
- // Ensure that initialization occurs in the ui thread
- CVSUIPlugin.getStandardDisplay().asyncExec(new Runnable() {
- public void run() {
- JFaceResources.getFontRegistry().addListener(CVSOutputConsole.this);
- initializeStreams();
- dump();
- }
- });
- }
-
- private void initWrapSetting() {
- IPreferenceStore store = CVSUIPlugin.getPlugin().getPreferenceStore();
- if(store.getBoolean(ICVSUIConstants.PREF_CONSOLE_WRAP)) {
- setConsoleWidth(store.getInt(ICVSUIConstants.PREF_CONSOLE_WIDTH));
- } else {
- setConsoleWidth(-1);
- }
- }
-
- private void initLimitOutput() {
- IPreferenceStore store = CVSUIPlugin.getPlugin().getPreferenceStore();
- if(store.getBoolean(ICVSUIConstants.PREF_CONSOLE_LIMIT_OUTPUT)) {
- setWaterMarks(1000, store.getInt(ICVSUIConstants.PREF_CONSOLE_HIGH_WATER_MARK));
- } else {
- setWaterMarks(-1, 0);
- }
- }
-
- /*
- * Initialize thre streams of the console. Must be
- * called from the UI thread.
- */
- private void initializeStreams() {
- synchronized(document) {
- if (!initialized) {
- commandStream = newMessageStream();
- errorStream = newMessageStream();
- messageStream = newMessageStream();
- // install colors
- commandColor = createColor(CVSUIPlugin.getStandardDisplay(), ICVSUIConstants.PREF_CONSOLE_COMMAND_COLOR);
- commandStream.setColor(commandColor);
- messageColor = createColor(CVSUIPlugin.getStandardDisplay(), ICVSUIConstants.PREF_CONSOLE_MESSAGE_COLOR);
- messageStream.setColor(messageColor);
- errorColor = createColor(CVSUIPlugin.getStandardDisplay(), ICVSUIConstants.PREF_CONSOLE_ERROR_COLOR);
- errorStream.setColor(errorColor);
- // install font
- Font f = PlatformUI.getWorkbench().getThemeManager().getCurrentTheme().getFontRegistry().get(ICVSUIConstants.PREF_CONSOLE_FONT);
- setFont(f);
- initialized = true;
- }
- }
- }
-
- private void dump() {
- synchronized(document) {
- visible = true;
- ConsoleDocument.ConsoleLine[] lines = document.getLines();
- for (int i = 0; i < lines.length; i++) {
- ConsoleDocument.ConsoleLine line = lines[i];
- appendLine(line.type, line.line);
- }
- document.clear();
- }
- }
-
- private void appendLine(int type, String line) {
- showConsole();
- synchronized(document) {
- if(visible) {
- switch(type) {
- case ConsoleDocument.COMMAND:
- commandStream.println(line);
- break;
- case ConsoleDocument.MESSAGE:
- messageStream.println(" " + line); //$NON-NLS-1$
- break;
- case ConsoleDocument.ERROR:
- errorStream.println(" " + line); //$NON-NLS-1$
- break;
- }
- } else {
- document.appendConsoleLine(type, line);
- }
- }
- }
-
- private void showConsole() {
- show(false);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.console.MessageConsole#dispose()
- */
- protected void dispose() {
- // Here we can't call super.dispose() because we actually want the partitioner to remain
- // connected, but we won't show lines until the console is added to the console manager
- // again.
-
- // Called when console is removed from the console view
- synchronized (document) {
- visible = false;
- JFaceResources.getFontRegistry().removeListener(this);
- }
- }
-
- /**
- * Clean-up created fonts.
- */
- public void shutdown() {
- // Call super dispose because we want the partitioner to be
- // disconnected.
- super.dispose();
- if (commandColor != null)
- commandColor.dispose();
- if (messageColor != null)
- messageColor.dispose();
- if (errorColor != null)
- errorColor.dispose();
- CVSUIPlugin.getPlugin().getPreferenceStore().removePropertyChangeListener(this);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.core.client.listeners.IConsoleListener#commandInvoked(java.lang.String)
- */
- public void commandInvoked(Session session, String line) {
- if (!session.isOutputToConsole()) return;
- commandStarted = System.currentTimeMillis();
- appendLine(ConsoleDocument.COMMAND, Policy.bind("Console.preExecutionDelimiter")); //$NON-NLS-1$
- appendLine(ConsoleDocument.COMMAND, line);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.core.client.listeners.IConsoleListener#messageLineReceived(java.lang.String)
- */
- public void messageLineReceived(Session session, String line, IStatus status) {
- if (session.isOutputToConsole()) {
- appendLine(ConsoleDocument.MESSAGE, " " + line); //$NON-NLS-1$
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.core.client.listeners.IConsoleListener#errorLineReceived(java.lang.String)
- */
- public void errorLineReceived(Session session, String line, IStatus status) {
- if (session.isOutputToConsole()) {
- appendLine(ConsoleDocument.ERROR, " " + line); //$NON-NLS-1$
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.core.client.listeners.IConsoleListener#commandCompleted(org.eclipse.core.runtime.IStatus, java.lang.Exception)
- */
- public void commandCompleted(Session session, IStatus status, Exception exception) {
- if (!session.isOutputToConsole()) return;
- long commandRuntime = System.currentTimeMillis() - commandStarted;
- String time;
- try {
- time = TIME_FORMAT.format(new Date(commandRuntime));
- } catch (RuntimeException e) {
- CVSUIPlugin.log(IStatus.ERROR, Policy.bind("Console.couldNotFormatTime"), e); //$NON-NLS-1$
- time = ""; //$NON-NLS-1$
- }
- String statusText;
- if (status != null) {
- boolean includeRoot = true;
- if (status.getCode() == CVSStatus.SERVER_ERROR) {
- statusText = Policy.bind("Console.resultServerError", status.getMessage(), time); //$NON-NLS-1$
- includeRoot = false;
- } else {
- statusText = Policy.bind("Console.resultOk", time); //$NON-NLS-1$
- }
- appendLine(ConsoleDocument.COMMAND, statusText);
- outputStatus(status, includeRoot, includeRoot ? 0 : 1);
- } else if (exception != null) {
- if (exception instanceof OperationCanceledException) {
- statusText = Policy.bind("Console.resultAborted", time); //$NON-NLS-1$
- } else {
- statusText = Policy.bind("Console.resultException", time); //$NON-NLS-1$
- }
- appendLine(ConsoleDocument.COMMAND, statusText);
- if (exception instanceof CoreException) {
- outputStatus(((CoreException)exception).getStatus(), true, 1);
- }
- } else {
- statusText = Policy.bind("Console.resultOk", time); //$NON-NLS-1$
- }
- appendLine(ConsoleDocument.COMMAND, Policy.bind("Console.postExecutionDelimiter")); //$NON-NLS-1$
- appendLine(ConsoleDocument.COMMAND, ""); //$NON-NLS-1$
- }
-
- private void outputStatus(IStatus status, boolean includeParent, int nestingLevel) {
- if (includeParent && !status.isOK()) {
- outputStatusMessage(status, nestingLevel);
- nestingLevel++;
- }
-
- // Include a CoreException in the status
- Throwable t = status.getException();
- if (t instanceof CoreException) {
- outputStatus(((CoreException)t).getStatus(), true, nestingLevel);
- }
-
- // Include child status
- IStatus[] children = status.getChildren();
- for (int i = 0; i < children.length; i++) {
- outputStatus(children[i], true, nestingLevel);
- }
- }
-
- private void outputStatusMessage(IStatus status, int nesting) {
- StringBuffer buffer = new StringBuffer();
- for (int i = 0; i < nesting; i++) {
- buffer.append(NESTING);
- }
- buffer.append(messageLineForStatus(status));
- appendLine(ConsoleDocument.COMMAND, buffer.toString());
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
- */
- public void propertyChange(PropertyChangeEvent event) {
- String property = event.getProperty();
- // colors
- if (visible) {
- if (property.equals(ICVSUIConstants.PREF_CONSOLE_COMMAND_COLOR)) {
- Color newColor = createColor(CVSUIPlugin.getStandardDisplay(), ICVSUIConstants.PREF_CONSOLE_COMMAND_COLOR);
- commandStream.setColor(newColor);
- commandColor.dispose();
- commandColor = newColor;
- } else if (property.equals(ICVSUIConstants.PREF_CONSOLE_MESSAGE_COLOR)) {
- Color newColor = createColor(CVSUIPlugin.getStandardDisplay(), ICVSUIConstants.PREF_CONSOLE_MESSAGE_COLOR);
- messageStream.setColor(newColor);
- messageColor.dispose();
- messageColor = newColor;
- } else if (property.equals(ICVSUIConstants.PREF_CONSOLE_ERROR_COLOR)) {
- Color newColor = createColor(CVSUIPlugin.getStandardDisplay(), ICVSUIConstants.PREF_CONSOLE_ERROR_COLOR);
- errorStream.setColor(newColor);
- errorColor.dispose();
- errorColor = newColor;
- // font
- } else if (property.equals(ICVSUIConstants.PREF_CONSOLE_FONT)) {
- setFont(((FontRegistry) event.getSource()).get(ICVSUIConstants.PREF_CONSOLE_FONT));
- }
- }
- if (property.equals(ICVSUIConstants.PREF_CONSOLE_SHOW_ON_MESSAGE)) {
- Object value = event.getNewValue();
- if (value instanceof String) {
- showOnMessage = Boolean.valueOf((String) value).booleanValue();
- } else {
- showOnMessage = ((Boolean) value).booleanValue();
- }
- } else if(property.equals(ICVSUIConstants.PREF_CONSOLE_LIMIT_OUTPUT)) {
- initLimitOutput();
- } else if(property.equals(ICVSUIConstants.PREF_CONSOLE_WRAP)) {
- initWrapSetting();
- }
- }
-
- /**
- * Returns the NLSd message based on the status returned from the CVS
- * command.
- *
- * @param status an NLSd message based on the status returned from the CVS
- * command.
- */
- private String messageLineForStatus(IStatus status) {
- if (status.getSeverity() == IStatus.ERROR) {
- return Policy.bind("Console.error", status.getMessage()); //$NON-NLS-1$
- } else if (status.getSeverity() == IStatus.WARNING) {
- return Policy.bind("Console.warning", status.getMessage()); //$NON-NLS-1$
- } else if (status.getSeverity() == IStatus.INFO) {
- return Policy.bind("Console.info", status.getMessage()); //$NON-NLS-1$
- }
- return status.getMessage();
- }
-
- /**
- * Returns a color instance based on data from a preference field.
- */
- private Color createColor(Display display, String preference) {
- RGB rgb = PreferenceConverter.getColor(CVSUIPlugin.getPlugin().getPreferenceStore(), preference);
- return new Color(display, rgb);
- }
-
- /**
- * Show the console.
- * @param showNoMatterWhat ignore preferences if true
- */
- public void show(boolean showNoMatterWhat) {
- if(showNoMatterWhat || showOnMessage) {
- if(!visible)
- CVSConsoleFactory.showConsole();
- else
- consoleManager.showConsoleView(this);
- }
-
- }
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/console/ConsoleDocument.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/console/ConsoleDocument.java
deleted file mode 100644
index ba8f41ef5..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/console/ConsoleDocument.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.console;
-
-/**
- * Simple circular buffer that stores a fix number of lines.
- */
-public class ConsoleDocument {
- public static final int COMMAND = 0; // command text
- public static final int MESSAGE = 1; // message received
- public static final int ERROR = 2; // error received
- public static final int STATUS = 3; // status text
- public static final int DELIMITER = 4; // delimiter text between runs
-
- private int[] lineTypes;
- private String[] lines;
-
- private int writeIndex = 0;
- private int readIndex = 0;
-
- private static final int BUFFER_SIZE = 200;
-
- protected static class ConsoleLine {
- public String line;
- public int type;
- ConsoleLine(String line, int type) {
- this.line = line;
- this.type = type;
- }
- }
-
- /**
- * Creates an empty console document.
- */
- public ConsoleDocument() {
- }
-
- /**
- * Clears the console document.
- */
- public void clear() {
- lineTypes = null;
- lines = null;
- writeIndex = 0;
- readIndex = 0;
- }
-
- /**
- * Appends a line of the specified type to the end of the console.
- */
- public void appendConsoleLine(int type, String line) {
- if(lines == null) {
- lines = new String[BUFFER_SIZE];
- lineTypes = new int[BUFFER_SIZE];
- }
- lines[writeIndex] = line; //$NON-NLS-1$
- lineTypes[writeIndex] = type;
-
- if(++writeIndex >= BUFFER_SIZE) {
- writeIndex = 0;
- }
- if(writeIndex == readIndex) {
- if(++readIndex >= BUFFER_SIZE) {
- readIndex = 0;
- }
- }
- }
-
- public ConsoleLine[] getLines() {
- if(isEmpty()) return new ConsoleLine[0];
- ConsoleLine[] docLines = new ConsoleLine[readIndex > writeIndex ? BUFFER_SIZE : writeIndex];
- int index = readIndex;
- for (int i = 0; i < docLines.length; i++) {
- docLines[i] = new ConsoleLine(lines[index], lineTypes[index]);
- if (++index >= BUFFER_SIZE) {
- index = 0;
- }
- }
- return docLines;
- }
-
- public boolean isEmpty() {
- return writeIndex == readIndex;
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/console/ConsolePreferencesPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/console/ConsolePreferencesPage.java
deleted file mode 100644
index c162cf8fd..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/console/ConsolePreferencesPage.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.console;
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.preference.*;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.team.internal.ccvs.ui.*;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
-import org.eclipse.ui.help.WorkbenchHelp;
-
-public class ConsolePreferencesPage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
-
- public ConsolePreferencesPage() {
- super(GRID);
- setPreferenceStore(CVSUIPlugin.getPlugin().getPreferenceStore());
- }
- private ColorFieldEditor commandColorEditor;
- private ColorFieldEditor messageColorEditor;
- private ColorFieldEditor errorColorEditor;
- private BooleanFieldEditor showOnMessage;
- private BooleanFieldEditor restrictOutput;
- private BooleanFieldEditor wrap;
- private IntegerFieldEditor highWaterMark;
- private IntegerFieldEditor width;
-
- protected void createFieldEditors() {
- final Composite composite = getFieldEditorParent();
- createLabel(composite, Policy.bind("ConsolePreferencesPage.9")); //$NON-NLS-1$
- IPreferenceStore store = getPreferenceStore();
-
- // ** WRAP
- wrap = new BooleanFieldEditor(ICVSUIConstants.PREF_CONSOLE_WRAP, Policy.bind("ConsolePreferencesPage.6"), composite); //$NON-NLS-1$
- addField(wrap);
-
- width = new IntegerFieldEditor(ICVSUIConstants.PREF_CONSOLE_WIDTH, Policy.bind("ConsolePreferencesPage.7"), composite); //$NON-NLS-1$)
- width.setValidRange(80, Integer.MAX_VALUE - 1);
- addField(width);
- width.setEnabled(store.getBoolean(ICVSUIConstants.PREF_CONSOLE_WRAP), composite);
-
- // ** RESTRICT OUTPUT
- restrictOutput = new BooleanFieldEditor(ICVSUIConstants.PREF_CONSOLE_LIMIT_OUTPUT, Policy.bind("ConsolePreferencesPage.5"), composite); //$NON-NLS-1$
- addField(restrictOutput);
-
- highWaterMark = new IntegerFieldEditor(ICVSUIConstants.PREF_CONSOLE_HIGH_WATER_MARK, Policy.bind("ConsolePreferencesPage.8"), composite); //$NON-NLS-1$)
- highWaterMark.setValidRange(1000, Integer.MAX_VALUE - 1);
- addField(highWaterMark);
- highWaterMark.setEnabled(store.getBoolean(ICVSUIConstants.PREF_CONSOLE_LIMIT_OUTPUT), composite);
-
- // ** SHOW AUTOMATICALLY
- showOnMessage = new BooleanFieldEditor(ICVSUIConstants.PREF_CONSOLE_SHOW_ON_MESSAGE, Policy.bind("ConsolePreferencesPage.4"), composite); //$NON-NLS-1$
- addField(showOnMessage);
-
- createLabel(composite, Policy.bind("ConsolePreferencePage.consoleColorSettings")); //$NON-NLS-1$
-
- // ** COLORS AND FONTS
- commandColorEditor = createColorFieldEditor(ICVSUIConstants.PREF_CONSOLE_COMMAND_COLOR,
- Policy.bind("ConsolePreferencePage.commandColor"), composite); //$NON-NLS-1$
- addField(commandColorEditor);
-
- messageColorEditor = createColorFieldEditor(ICVSUIConstants.PREF_CONSOLE_MESSAGE_COLOR,
- Policy.bind("ConsolePreferencePage.messageColor"), composite); //$NON-NLS-1$
- addField(messageColorEditor);
-
- errorColorEditor = createColorFieldEditor(ICVSUIConstants.PREF_CONSOLE_ERROR_COLOR,
- Policy.bind("ConsolePreferencePage.errorColor"), composite); //$NON-NLS-1$
- addField(errorColorEditor);
-
- Dialog.applyDialogFont(composite);
- WorkbenchHelp.setHelp(composite, IHelpContextIds.CONSOLE_PREFERENCE_PAGE);
- }
-
-
- public void propertyChange(PropertyChangeEvent event) {
- super.propertyChange(event);
- highWaterMark.setEnabled(restrictOutput.getBooleanValue(), getFieldEditorParent());
- width.setEnabled(wrap.getBooleanValue(), getFieldEditorParent());
- }
-
- /**
- * Utility method that creates a label instance
- * and sets the default layout data.
- *
- * @param parent the parent for the new label
- * @param text the text for the new label
- * @return the new label
- */
- private Label createLabel(Composite parent, String text) {
- Label label = new Label(parent, SWT.LEFT);
- label.setText(text);
- GridData data = new GridData();
- data.horizontalSpan = 2;
- data.horizontalAlignment = GridData.FILL;
- label.setLayoutData(data);
- return label;
- }
- /**
- * Creates a new color field editor.
- */
- private ColorFieldEditor createColorFieldEditor(String preferenceName, String label, Composite parent) {
- ColorFieldEditor editor = new ColorFieldEditor(preferenceName, label, parent);
- editor.setPreferencePage(this);
- editor.setPreferenceStore(getPreferenceStore());
- return editor;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
- */
- public void init(IWorkbench workbench) {
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.preference.IPreferencePage#performOk()
- */
- public boolean performOk() {
- CVSUIPlugin.getPlugin().savePluginPreferences();
- return super.performOk();
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/console/ConsoleRemoveAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/console/ConsoleRemoveAction.java
deleted file mode 100644
index f9564f461..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/console/ConsoleRemoveAction.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.console;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ui.Utils;
-
-/**
- * Action that removed the CVS console from the console view. The console
- * can be re-added via the console view "Open Console" drop-down.
- *
- * @since 3.1
- */
-public class ConsoleRemoveAction extends Action {
-
- ConsoleRemoveAction() {
- Utils.initAction(this, "ConsoleRemoveAction.", Policy.getBundle()); //$NON-NLS-1$
- }
-
- public void run() {
- CVSConsoleFactory.closeConsole();
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/messages.properties b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/messages.properties
deleted file mode 100644
index 15eeb5723..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/messages.properties
+++ /dev/null
@@ -1,1327 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2004 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Common Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/cpl-v10.html
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-PasswordManagementPreferencePage.2=When you create a CVS repository location you have the option of saving the password to disk. This page allows you to manage the stored passwords. The following CVS repository locations have saved passwords:
-PasswordManagementPreferencePage.3=Location
-PasswordManagementPreferencePage.4=Username
-PasswordManagementPreferencePage.5=&Remove
-PasswordManagementPreferencePage.6=Remove &All
-UserValidationDialog.5=CVS Repository:
-UserValidationDialog.6=&Save Password
-UserValidationDialog.7=Saved passwords are stored on your computer in a file that's difficult, but not impossible, for an intruder to read.
-details=Press the details button for more information.
-simpleInternal=Internal error
-internal=An internal error has occurred, consult the error log for details.
-yes=Yes
-no=No
-information=Server Information
-exception=Server Exception
-confirmOverwriteTitle=Confirm Overwrite Project
-confirmOverwrite=The project already exists in the workspace. Its contents will be overwritten.
-question=Question
-localChanges=You have local changes which you are about to overwrite. Do you wish to continue?
-error=Error
-cvs=CVS
-notAvailable=Not Available
-buildError=A build error occurred after the CVS operation completed.
-ok=OK
-separator=/
-
-nameAndRevision={0} {1}
-currentRevision=*{0}
-
-AddAction.addFailed=Error occurred during Add
-AddAction.adding=Adding...
-AddAction.addIgnoredTitle=Add Ignored Resource?
-AddAction.addIgnoredQuestion=You have explicitly asked to version control one or more resources that otherwise would have been ignored. Continue?
-
-AddToVersionControlDialog.title=Add to CVS Version Control
-AddToVersionControlDialog.thereIsAnUnaddedResource=There is {0} resource that is not under CVS version control. Do you want to add it?
-AddToVersionControlDialog.thereAreUnaddedResources=There are {0} resources that are not under CVS version control. Do you want to add them?
-
-CheckoutAction.overlappingModuleExpansions=You have attempted to check out multiple remote modules that expand to the same local resource ''{0}''.
-
-AutoDefineTagsAction.defineTags = Auto-discover tags
-
-AvoidableMessageDialog.dontShowAgain=Don't show this again
-
-BranchWizard.title=Create a new CVS Branch
-BranchWizard.errorBranching=Error Branching Resources
-BranchWizardPage.pageDescription=Creates a new branch and a starting point version.
-BranchWizardPage.pageDescriptionVersion=Creates a new branch based on the version in the workspace.
-BranchWizardPage.specifyVersion=The version will provide a starting point for merging the branch back to the source branch.
-BranchWizardPage.branchName=Branch Name:
-BranchWizardPage.versionName=Version Name:
-BranchWizardPage.startWorking=Start working in the branch
-BranchWizardPage.versionPrefix=Root_
-BranchWizard.versionNameWarning=Version name: {0}
-BranchWizard.branchNameWarning=Branch name: {0}
-BranchWizard.branchAndVersionMustBeDifferent=The branch name and version name must be different.
-BranchWizard.branchNameAlreadyExists=Branch name already exists.
-BranchWizard.versionNameAlreadyExists=Version name already exists.
-BranchWizardPage.existingVersionsAndBranches=Existing Versions and Branches
-
-ConsolePreferencePage.consoleColorSettings=Console text color settings:
-ConsolePreferencePage.commandColor=Command &Line:
-ConsolePreferencePage.messageColor=&Message:
-ConsolePreferencePage.errorColor=E&rror:
-ConsolePreferencePage.font=Console font setting:
-
-CVSAction.errorTitle=Errors occurred
-CVSAction.warningTitle=Warnings occurred
-CVSAction.multipleProblemsMessage=Multiple problems occurred:
-CVSAction.mixingTagsTitle=Confirm Mixing Tags
-CVSAction.mixingTags=You are mixing tags within a project. Beware that synchronization uses the tag information associated with each resource to determine the remote resource with which the local resource is compared. \n\nThis means that the part(s) of your project that you are replacing with another tag will be synchronized with the tag ''{0}'' while other resources in the project will be synchronized with another tag. \n\nDo you wish to continue?
-
-CVSAnnotateView.showFileAnnotation=CVS Annotate - {0}
-CVSAnnotateView.viewInstructions=This view shows annotations for a file in CVS. Select a file and then choose \"Team->Show Annotation\" from the context menu.
-
-ShowAnnotationAction.noSyncInfo=Cannot display annotation for {0} because it doesn't have a remote revision.
-ShowAnnotationOperation.taskName=Fetching annotations from repository
-ShowAnnotationOperation.0=Error opening perspective
-ShowAnnotationOperation.1=Confirm Perspective Switch
-ShowAnnotationOperation.2=The CVS Annotate View is associated with the {0} perspective. Do you want to switch to that perspective now?
-ShowAnnotationOperation.4=&Remember my decision
-
-CVSCatchupReleaseViewer.commit=&Commit...
-CVSCatchupReleaseViewer.update=&Update from Repository
-CVSCatchupReleaseViewer.forceCommit=Override and Co&mmit...
-CVSCatchupReleaseViewer.forceUpdate=Override and U&pdate
-CVSCatchupReleaseViewer.ignore=A&dd to .cvsignore
-CVSCatchupReleaseViewer.mergeUpdate=&Merge Changes into Local Copy
-CVSCatchupReleaseViewer.commonFile=Common file: {0}
-CVSCatchupReleaseViewer.commonFileRevision=Common file: {0} {1}
-CVSCatchupReleaseViewer.noCommonFile=No common file
-CVSCatchupReleaseViewer.noRepositoryFile=No repository file
-CVSCatchupReleaseViewer.repositoryFile=Repository file: {0}
-CVSCatchupReleaseViewer.repositoryFileRevision=Repository file: {0} {1} [{2}]
-CVSCatchupReleaseViewer.workspaceFile=Workspace file: {0}
-CVSCatchupReleaseViewer.showInHistory=Show in &Resource History
-CVSCatchupReleaseViewer.fileDecoration={0} ({1})
-CVSCatchupReleaseViewer.folderDecoration={0} {1}
-CVSCatchupReleaseViewer.confirmMerge=Mark as Mer&ged
-CVSCatchupReleaseViewer.addAction=&Add to Version Control
-CVSCatchupReleaseViewer.labelWithSyncKind={0} {1}
-
-CVSCompareEditorInput.branchLabel=internalGetChildren
.
- * A appropriate progress indicator will be used if requested.
- */
- protected Object[] getChildren(final Object o, boolean needsProgress) {
- try {
- if (needsProgress) {
- final Object[][] result = new Object[1][];
- IRunnableWithProgress runnable = new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- try {
- result[0] = CVSModelElement.this.fetchChildren(o, monitor);
- } catch (TeamException e) {
- throw new InvocationTargetException(e);
- }
- }
- };
- getRunnableContext().run(true /*fork*/, true /*cancelable*/, runnable);
- return result[0];
- } else {
- return fetchChildren(o, null);
- }
- } catch (InterruptedException e) {
- } catch (InvocationTargetException e) {
- handle(e);
- } catch (TeamException e) {
- handle(e);
- }
- return new Object[0];
- }
-
- abstract protected Object[] fetchChildren(Object o, IProgressMonitor monitor) throws TeamException;
-
- /**
- * Handle an exception that occurred in CVS model elements by displaying an error dialog.
- * @param title the title of the error dialog
- * @param description the description to be displayed
- * @param e the exception that occurred
- */
- protected void handle(final String title, final String description, final Throwable e) {
- CVSUIPlugin.openError(null, title, description, e, CVSUIPlugin.LOG_NONTEAM_EXCEPTIONS | CVSUIPlugin.PERFORM_SYNC_EXEC);
- }
-
- /**
- * Helper methed error handler that displayes a generic dialog title and message when displaying an error to the user.
- * @param t the exception that occurred.
- */
- protected void handle(Throwable t) {
- handle(Policy.bind("CVSModelElement.0"), Policy.bind("CVSModelElement.1"), t); //$NON-NLS-1$ //$NON-NLS-2$
- }
-
- /**
- * Handle an exception that occurred while fetching the children for a deferred workbench adapter.
- * @param collector the collector for the adapter
- * @param e the exception that occurred
- */
- protected void handle(IElementCollector collector, Throwable t) {
- // TODO: For now, just display a dialog (see bug 65008 and 65741)
- handle(t);
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSRemoteFilePropertySource.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSRemoteFilePropertySource.java
deleted file mode 100644
index 4067cea15..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSRemoteFilePropertySource.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.model;
-
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.ICVSRemoteFile;
-import org.eclipse.team.internal.ccvs.core.ILogEntry;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.ICVSUIConstants;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.ui.views.properties.PropertyDescriptor;
-
-public class CVSRemoteFilePropertySource implements IPropertySource {
- ICVSRemoteFile file;
- ILogEntry entry;
- boolean initialized;
-
- // Property Descriptors
- static protected IPropertyDescriptor[] propertyDescriptors = new IPropertyDescriptor[5];
- {
- PropertyDescriptor descriptor;
- String category = Policy.bind("cvs"); //$NON-NLS-1$
-
- // resource name
- descriptor = new PropertyDescriptor(ICVSUIConstants.PROP_NAME, Policy.bind("CVSRemoteFilePropertySource.name")); //$NON-NLS-1$
- descriptor.setAlwaysIncompatible(true);
- descriptor.setCategory(category);
- propertyDescriptors[0] = descriptor;
- // revision
- descriptor = new PropertyDescriptor(ICVSUIConstants.PROP_REVISION, Policy.bind("CVSRemoteFilePropertySource.revision")); //$NON-NLS-1$
- descriptor.setAlwaysIncompatible(true);
- descriptor.setCategory(category);
- propertyDescriptors[1] = descriptor;
- // date
- descriptor = new PropertyDescriptor(ICVSUIConstants.PROP_DATE, Policy.bind("CVSRemoteFilePropertySource.date")); //$NON-NLS-1$
- descriptor.setAlwaysIncompatible(true);
- descriptor.setCategory(category);
- propertyDescriptors[2] = descriptor;
- // author
- descriptor = new PropertyDescriptor(ICVSUIConstants.PROP_AUTHOR, Policy.bind("CVSRemoteFilePropertySource.author")); //$NON-NLS-1$
- descriptor.setAlwaysIncompatible(true);
- descriptor.setCategory(category);
- propertyDescriptors[3] = descriptor;
- // comment
- descriptor = new PropertyDescriptor(ICVSUIConstants.PROP_COMMENT, Policy.bind("CVSRemoteFilePropertySource.comment")); //$NON-NLS-1$
- descriptor.setAlwaysIncompatible(true);
- descriptor.setCategory(category);
- propertyDescriptors[4] = descriptor;
- }
-
- /**
- * Create a PropertySource and store its file
- */
- public CVSRemoteFilePropertySource(ICVSRemoteFile file) {
- this.file = file;
- }
-
- /**
- * Do nothing because properties are read only.
- */
- public Object getEditableValue() {
- return this;
- }
-
- /**
- * Return the Property Descriptors for the receiver.
- */
- public IPropertyDescriptor[] getPropertyDescriptors() {
- return propertyDescriptors;
- }
-
- /*
- * @see IPropertySource#getPropertyValue(Object)
- */
- public Object getPropertyValue(Object id) {
- if (!initialized) {
- initialize();
- initialized = true;
- }
- if (id.equals(ICVSUIConstants.PROP_NAME)) {
- return file.getName();
- }
- if (entry != null) {
- if (id.equals(ICVSUIConstants.PROP_REVISION)) {
- return entry.getRevision();
- }
- if (id.equals(ICVSUIConstants.PROP_DATE)) {
- return entry.getDate();
- }
- if (id.equals(ICVSUIConstants.PROP_AUTHOR)) {
- return entry.getAuthor();
- }
- if (id.equals(ICVSUIConstants.PROP_COMMENT)) {
- return entry.getComment();
- }
- }
- return ""; //$NON-NLS-1$
- }
-
- /**
- * Answer true if the value of the specified property
- * for this object has been changed from the default.
- */
- public boolean isPropertySet(Object property) {
- return false;
- }
- /**
- * Reset the specified property's value to its default value.
- * Do nothing because properties are read only.
- *
- * @param property The property to reset.
- */
- public void resetPropertyValue(Object property) {
- }
- /**
- * Do nothing because properties are read only.
- */
- public void setPropertyValue(Object name, Object value) {
- }
-
- private void initialize() {
- try {
- CVSUIPlugin.runWithProgress(null, true /*cancelable*/, new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- try {
- ILogEntry[] entries = file.getLogEntries(monitor);
- String revision = file.getRevision();
- for (int i = 0; i < entries.length; i++) {
- if (entries[i].getRevision().equals(revision)) {
- entry = entries[i];
- return;
- }
- }
- } catch (TeamException e) {
- throw new InvocationTargetException(e);
- }
- }
- });
- } catch (InterruptedException e) { // ignore cancellation
- } catch (InvocationTargetException e) {
- CVSUIPlugin.openError(null, null, null, e);
- }
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSRemoteFolderPropertySource.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSRemoteFolderPropertySource.java
deleted file mode 100644
index 618d69ec3..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSRemoteFolderPropertySource.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.model;
-
-
-import org.eclipse.team.internal.ccvs.core.CVSTag;
-import org.eclipse.team.internal.ccvs.core.ICVSRemoteFolder;
-import org.eclipse.team.internal.ccvs.ui.ICVSUIConstants;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.ui.views.properties.PropertyDescriptor;
-
-public class CVSRemoteFolderPropertySource implements IPropertySource {
- ICVSRemoteFolder folder;
-
- // Property Descriptors
- static protected IPropertyDescriptor[] propertyDescriptors = new IPropertyDescriptor[2];
- {
- PropertyDescriptor descriptor;
- String category = Policy.bind("cvs"); //$NON-NLS-1$
-
- // resource name
- descriptor = new PropertyDescriptor(ICVSUIConstants.PROP_NAME, Policy.bind("CVSRemoteFolderPropertySource.name")); //$NON-NLS-1$
- descriptor.setAlwaysIncompatible(true);
- descriptor.setCategory(category);
- propertyDescriptors[0] = descriptor;
- // tag
- descriptor = new PropertyDescriptor(ICVSUIConstants.PROP_TAG, Policy.bind("CVSRemoteFolderPropertySource.tag")); //$NON-NLS-1$
- descriptor.setAlwaysIncompatible(true);
- descriptor.setCategory(category);
- propertyDescriptors[1] = descriptor;
- }
-
- /**
- * Create a PropertySource and store its file
- */
- public CVSRemoteFolderPropertySource(ICVSRemoteFolder folder) {
- this.folder = folder;
- }
-
- /**
- * Do nothing because properties are read only.
- */
- public Object getEditableValue() {
- return this;
- }
-
- /**
- * Return the Property Descriptors for the receiver.
- */
- public IPropertyDescriptor[] getPropertyDescriptors() {
- return propertyDescriptors;
- }
-
- /*
- * @see IPropertySource#getPropertyValue(Object)
- */
- public Object getPropertyValue(Object id) {
- if (id.equals(ICVSUIConstants.PROP_NAME)) {
- return folder.getName();
- }
- if (id.equals(ICVSUIConstants.PROP_TAG)) {
- CVSTag tag = folder.getTag();
- if (tag == null) {
- return Policy.bind("CVSRemoteFolderPropertySource.none"); //$NON-NLS-1$
- }
- return tag.getName();
- }
- return ""; //$NON-NLS-1$
- }
-
- /**
- * Answer true if the value of the specified property
- * for this object has been changed from the default.
- */
- public boolean isPropertySet(Object property) {
- return false;
- }
- /**
- * Reset the specified property's value to its default value.
- * Do nothing because properties are read only.
- *
- * @param property The property to reset.
- */
- public void resetPropertyValue(Object property) {
- }
- /**
- * Do nothing because properties are read only.
- */
- public void setPropertyValue(Object name, Object value) {
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSRepositoryLocationPropertySource.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSRepositoryLocationPropertySource.java
deleted file mode 100644
index e4c45de8a..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSRepositoryLocationPropertySource.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.model;
-
-
-import org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.internal.ccvs.ui.ICVSUIConstants;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.ui.views.properties.PropertyDescriptor;
-
-public class CVSRepositoryLocationPropertySource implements IPropertySource {
- ICVSRepositoryLocation location;
-
- // Property Descriptors
- static protected IPropertyDescriptor[] propertyDescriptors = new IPropertyDescriptor[5];
- {
- PropertyDescriptor descriptor;
- String category = Policy.bind("cvs"); //$NON-NLS-1$
-
- // host
- descriptor = new PropertyDescriptor(ICVSUIConstants.PROP_HOST, Policy.bind("CVSRepositoryLocationPropertySource.host")); //$NON-NLS-1$
- descriptor.setAlwaysIncompatible(true);
- descriptor.setCategory(category);
- propertyDescriptors[0] = descriptor;
- // user
- descriptor = new PropertyDescriptor(ICVSUIConstants.PROP_USER, Policy.bind("CVSRepositoryLocationPropertySource.user")); //$NON-NLS-1$
- descriptor.setAlwaysIncompatible(true);
- descriptor.setCategory(category);
- propertyDescriptors[1] = descriptor;
- // port
- descriptor = new PropertyDescriptor(ICVSUIConstants.PROP_PORT, Policy.bind("CVSRepositoryLocationPropertySource.port")); //$NON-NLS-1$
- descriptor.setAlwaysIncompatible(true);
- descriptor.setCategory(category);
- propertyDescriptors[2] = descriptor;
- // root
- descriptor = new PropertyDescriptor(ICVSUIConstants.PROP_ROOT, Policy.bind("CVSRepositoryLocationPropertySource.root")); //$NON-NLS-1$
- descriptor.setAlwaysIncompatible(true);
- descriptor.setCategory(category);
- propertyDescriptors[3] = descriptor;
- // method
- descriptor = new PropertyDescriptor(ICVSUIConstants.PROP_METHOD, Policy.bind("CVSRepositoryLocationPropertySource.method")); //$NON-NLS-1$
- descriptor.setAlwaysIncompatible(true);
- descriptor.setCategory(category);
- propertyDescriptors[4] = descriptor;
- }
-
- /**
- * Create a PropertySource and store its file
- */
- public CVSRepositoryLocationPropertySource(ICVSRepositoryLocation location) {
- this.location = location;
- }
-
- /**
- * Do nothing because properties are read only.
- */
- public Object getEditableValue() {
- return this;
- }
-
- /**
- * Return the Property Descriptors for the receiver.
- */
- public IPropertyDescriptor[] getPropertyDescriptors() {
- return propertyDescriptors;
- }
-
- /*
- * @see IPropertySource#getPropertyValue(Object)
- */
- public Object getPropertyValue(Object id) {
- if (id.equals(ICVSUIConstants.PROP_HOST)) {
- return location.getHost();
- }
- if (id.equals(ICVSUIConstants.PROP_USER)) {
- return location.getUsername();
- }
- if (id.equals(ICVSUIConstants.PROP_METHOD)) {
- return location.getMethod().getName();
- }
- if (id.equals(ICVSUIConstants.PROP_ROOT)) {
- return location.getRootDirectory();
- }
- if (id.equals(ICVSUIConstants.PROP_PORT)) {
- int port = location.getPort();
- if (port == ICVSRepositoryLocation.USE_DEFAULT_PORT) {
- return Policy.bind("CVSRepositoryLocationPropertySource.default"); //$NON-NLS-1$
- }
- return "" + port; //$NON-NLS-1$
- }
- return ""; //$NON-NLS-1$
- }
-
- /**
- * Answer true if the value of the specified property
- * for this object has been changed from the default.
- */
- public boolean isPropertySet(Object property) {
- return false;
- }
- /**
- * Reset the specified property's value to its default value.
- * Do nothing because properties are read only.
- *
- * @param property The property to reset.
- */
- public void resetPropertyValue(Object property) {
- }
- /**
- * Do nothing because properties are read only.
- */
- public void setPropertyValue(Object name, Object value) {
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSRepositoryRootElement.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSRepositoryRootElement.java
deleted file mode 100644
index 6a36ee995..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSRepositoryRootElement.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.model;
-
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.team.internal.ccvs.core.CVSTag;
-import org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.ICVSUIConstants;
-import org.eclipse.team.internal.ccvs.ui.repo.RepositoryRoot;
-
-/**
- * RemoteRootElement is the model element for a repository that
- * appears in the repositories view. Its children are:
- * a) HEAD
- * b) Branch tags category
- * c) Version tags category
- */
-public class CVSRepositoryRootElement extends CVSModelElement {
- public ImageDescriptor getImageDescriptor(Object object) {
- if (object instanceof ICVSRepositoryLocation || object instanceof RepositoryRoot) {
- return CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_REPOSITORY);
- }
- return null;
- }
- public String getLabel(Object o) {
- if (o instanceof ICVSRepositoryLocation) {
- ICVSRepositoryLocation root = (ICVSRepositoryLocation)o;
- o = CVSUIPlugin.getPlugin().getRepositoryManager().getRepositoryRootFor(root);
- if (o == null) {
- return root.getLocation();
- }
- }
- if (o instanceof RepositoryRoot) {
- RepositoryRoot root = (RepositoryRoot)o;
- String name = root.getName();
- if (name == null)
- return root.getRoot().getLocation();
- else
- return name;
- }
- return null;
- }
- public Object getParent(Object o) {
- return null;
- }
- public Object[] fetchChildren(Object o, IProgressMonitor monitor) {
- ICVSRepositoryLocation location = null;
- if (o instanceof ICVSRepositoryLocation) {
- location = (ICVSRepositoryLocation)o;
- }
- if (o instanceof RepositoryRoot) {
- RepositoryRoot root = (RepositoryRoot)o;
- location = root.getRoot();
- }
- if (location == null) return null;
- return new Object[] {
- new CVSTagElement(CVSTag.DEFAULT, location),
- new BranchCategory(location),
- new VersionCategory(location),
- new DateTagCategory(location)
- };
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSResourceElement.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSResourceElement.java
deleted file mode 100644
index 6bf857197..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSResourceElement.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.model;
-
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.team.internal.ccvs.core.ICVSResource;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-
-public abstract class CVSResourceElement extends CVSModelElement implements IAdaptable {
- public Object getAdapter(Class adapter) {
- if (adapter == IWorkbenchAdapter.class) return this;
- return null;
- }
- /**
- * Initial implementation: return the resource's name
- */
- public String getLabel(Object o) {
- if (!(o instanceof ICVSResource)) return null;
- return ((ICVSResource)o).getName();
- }
- /**
- * Return null.
- */
- public Object getParent(Object o) {
- if (!(o instanceof ICVSResource)) return null;
- return null;
- }
-
- abstract public ICVSResource getCVSResource();
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSTagElement.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSTagElement.java
deleted file mode 100644
index dddebca71..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSTagElement.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.model;
-
-import java.lang.reflect.InvocationTargetException;
-import java.text.SimpleDateFormat;
-import java.util.*;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.jobs.ISchedulingRule;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.core.resources.RemoteFolder;
-import org.eclipse.team.internal.ccvs.ui.*;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.operations.FetchMembersOperation;
-import org.eclipse.team.internal.ccvs.ui.operations.FetchMembersOperation.RemoteFolderFilter;
-import org.eclipse.ui.progress.IDeferredWorkbenchAdapter;
-import org.eclipse.ui.progress.IElementCollector;
-
-public class CVSTagElement extends CVSModelElement implements IDeferredWorkbenchAdapter {
- CVSTag tag;
- ICVSRepositoryLocation root;
-
- private static final String REPO_VIEW_LONG_FORAMT = "dd MMM yyyy HH:mm:ss"; //$NON-NLS-1$
- private static final String REPO_VIEW_SHORT_FORMAT = "dd MMM yyyy"; //$NON-NLS-1$
- private static final String TIME_ONLY_COLUMN_FORMAT = "HH:mm:ss"; //$NON-NLS-1$
- private static SimpleDateFormat localLongFormat = new SimpleDateFormat(REPO_VIEW_LONG_FORAMT,Locale.getDefault());
- private static SimpleDateFormat localShortFormat = new SimpleDateFormat(REPO_VIEW_SHORT_FORMAT,Locale.getDefault());
- private static SimpleDateFormat timeColumnFormat = new SimpleDateFormat(TIME_ONLY_COLUMN_FORMAT, Locale.getDefault());
-
- static synchronized public String toDisplayString(Date date){
- String localTime = timeColumnFormat.format(date);
- timeColumnFormat.setTimeZone(TimeZone.getDefault());
- if(localTime.equals("00:00:00")){ //$NON-NLS-1$
- return localShortFormat.format(date);
- }
- return localLongFormat.format(date);
- }
-
- public CVSTagElement(CVSTag tag, ICVSRepositoryLocation root) {
- this.tag = tag;
- this.root = root;
- }
-
- public ICVSRepositoryLocation getRoot() {
- return root;
- }
-
- public CVSTag getTag() {
- return tag;
- }
-
- public boolean equals(Object o) {
- if (!(o instanceof CVSTagElement))
- return false;
- CVSTagElement t = (CVSTagElement) o;
- if (!tag.equals(t.tag))
- return false;
- return root.equals(t.root);
- }
-
- public int hashCode() {
- return root.hashCode() ^ tag.hashCode();
- }
-
- public ImageDescriptor getImageDescriptor(Object object) {
- if (!(object instanceof CVSTagElement))
- return null;
- if (tag.getType() == CVSTag.BRANCH || tag.getType() == CVSTag.HEAD) {
- return CVSUIPlugin.getPlugin().getImageDescriptor(
- ICVSUIConstants.IMG_TAG);
- } else if (tag.getType() == CVSTag.VERSION) {
- return CVSUIPlugin.getPlugin().getImageDescriptor(
- ICVSUIConstants.IMG_PROJECT_VERSION);
- } else {
- // This could be a Date tag
- return CVSUIPlugin.getPlugin().getImageDescriptor(
- ICVSUIConstants.IMG_DATE);
- }
- }
- public String getLabel(Object o) {
- if (!(o instanceof CVSTagElement))
- return null;
- CVSTag aTag = ((CVSTagElement) o).tag;
- if(aTag.getType() == CVSTag.DATE){
- Date date = tag.asDate();
- if (date != null){
- return toDisplayString(date);
- }
- }
- return aTag.getName();
- }
-
- public String toString() {
- return tag.getName();
- }
-
- public Object getParent(Object o) {
- if (!(o instanceof CVSTagElement))
- return null;
- return ((CVSTagElement) o).root;
- }
-
- protected Object[] fetchChildren(Object o, IProgressMonitor monitor) throws TeamException {
- ICVSRemoteResource[] children = CVSUIPlugin.getPlugin().getRepositoryManager().getFoldersForTag(root, tag, monitor);
- if (getWorkingSet() != null)
- children = CVSUIPlugin.getPlugin().getRepositoryManager().filterResources(getWorkingSet(), children);
- return children;
- }
-
- public void fetchDeferredChildren(Object o, IElementCollector collector, IProgressMonitor monitor) {
- if (tag.getType() == CVSTag.HEAD || tag.getType() == CVSTag.DATE) {
- try {
- monitor = Policy.monitorFor(monitor);
- RemoteFolder folder = new RemoteFolder(null, root, ICVSRemoteFolder.REPOSITORY_ROOT_FOLDER_NAME, tag);
- monitor.beginTask(Policy.bind("RemoteFolderElement.fetchingRemoteChildren", root.toString()), 100); //$NON-NLS-1$
- FetchMembersOperation operation = new FetchMembersOperation(null, folder, collector);
- operation.setFilter(new RemoteFolderFilter() {
- public ICVSRemoteResource[] filter(ICVSRemoteResource[] folders) {
- return CVSUIPlugin.getPlugin().getRepositoryManager().filterResources(getWorkingSet(), folders);
- }
- });
- operation.run(Policy.subMonitorFor(monitor, 100));
- } catch (final InvocationTargetException e) {
- handle(collector, e);
- } catch (InterruptedException e) {
- // Cancelled by the user;
- } finally {
- monitor.done();
- }
- } else {
- try {
- collector.add(fetchChildren(o, monitor), monitor);
- } catch (TeamException e) {
- handle(collector, e);
- }
- }
- }
-
- public ISchedulingRule getRule(Object element) {
- return new RepositoryLocationSchedulingRule(root); //$NON-NLS-1$
- }
-
- public boolean isContainer() {
- return true;
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/DateTagCategory.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/DateTagCategory.java
deleted file mode 100644
index ec08b51f2..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/DateTagCategory.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.model;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.ICVSUIConstants;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-
-/**
- * The DateTagCategory is the parent of all the date tags in the repositories view.
- */
-public class DateTagCategory extends TagCategory {
-
- public DateTagCategory(ICVSRepositoryLocation repository) {
- super(repository);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.model.TagCategory#getTags(org.eclipse.core.runtime.IProgressMonitor)
- */
- protected CVSTag[] getTags(IProgressMonitor monitor) throws CVSException {
- return CVSUIPlugin.getPlugin().getRepositoryManager().getRepositoryRootFor(repository).getDateTags();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.model.IWorkbenchAdapter#getImageDescriptor(java.lang.Object)
- */
- public ImageDescriptor getImageDescriptor(Object object) {
- return CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_DATES_CATEGORY);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.model.IWorkbenchAdapter#getLabel(java.lang.Object)
- */
- public String getLabel(Object o) {
- return Policy.bind("DateTagCategory.0"); //$NON-NLS-1$
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.model.TagCategory#getAdapter(java.lang.Class)
- */
- public Object getAdapter(Class adapter) {
- if (adapter.equals(ICVSRepositoryLocation.class)) {
- return getRepository(null);
- }
- return super.getAdapter(adapter);
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/GroupedByVersionCategory.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/GroupedByVersionCategory.java
deleted file mode 100644
index b44805524..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/GroupedByVersionCategory.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.model;
-
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.team.internal.ccvs.core.CVSTag;
-import org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.internal.ccvs.core.resources.RemoteFolder;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.ICVSUIConstants;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-
-public class GroupedByVersionCategory extends CVSModelElement implements IAdaptable {
- private ICVSRepositoryLocation repository;
-
- /**
- * ProjectVersionsCategory constructor.
- */
- public GroupedByVersionCategory(ICVSRepositoryLocation repo) {
- super();
- this.repository = repo;
- }
-
- /**
- * Returns an object which is an instance of the given class
- * associated with this object. Returns null
if
- * no such object can be found.
- */
- public Object getAdapter(Class adapter) {
- if (adapter == IWorkbenchAdapter.class) return this;
- return null;
- }
-
- /**
- * Returns the children of this object. When this object
- * is displayed in a tree, the returned objects will be this
- * element's children. Returns an empty enumeration if this
- * object has no children.
- *
- * XXX This method looks wrong to me somehow
- */
- public Object[] fetchChildren(Object o, IProgressMonitor monitor) {
- //String -> CTags[]
- Map mappings = CVSUIPlugin.getPlugin().getRepositoryManager().getKnownProjectsAndVersions(repository);
- Map remoteVersionModules = new HashMap();
- for (Iterator it = mappings.keySet().iterator(); it.hasNext();) {
- String project = (String) it.next();
- CVSTag[] versions = (CVSTag[])((HashSet)mappings.get(project)).toArray(new CVSTag[0]);
- for (int i = 0; i < versions.length; i++) {
- CVSTag tag = versions[i];
- RemoteVersionModule module = (RemoteVersionModule)remoteVersionModules.get(tag);
- if(module==null) {
- module = new RemoteVersionModule(tag, this);
- remoteVersionModules.put(tag, module);
- }
- module.addProject(new RemoteFolder(null, repository, project, tag));
- }
- }
- return (RemoteVersionModule[])remoteVersionModules.values().toArray(new RemoteVersionModule[0]);
- }
-
- /**
- * Returns an image descriptor to be used for displaying an object in the workbench.
- * Returns null if there is no appropriate image.
- *
- * @param object The object to get an image descriptor for.
- */
- public ImageDescriptor getImageDescriptor(Object object) {
- return CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_VERSIONS_CATEGORY);
- }
-
- /**
- * Returns the name of this element. This will typically
- * be used to assign a label to this object when displayed
- * in the UI. Returns an empty string if there is no appropriate
- * name for this object.
- *
- * @param object The object to get a label for.
- */
- public String getLabel(Object o) {
- return Policy.bind("GroupedByVersionCategory.Versions_1"); //$NON-NLS-1$
- }
-
- /**
- * Returns the logical parent of the given object in its tree.
- * Returns null if there is no parent, or if this object doesn't
- * belong to a tree.
- *
- * @param object The object to get the parent for.
- */
- public Object getParent(Object o) {
- return repository;
- }
-
- /**
- * Return the repository the given element belongs to.
- */
- public ICVSRepositoryLocation getRepository(Object o) {
- return repository;
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/ModulesCategory.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/ModulesCategory.java
deleted file mode 100644
index b50274e0b..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/ModulesCategory.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.model;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.CVSTag;
-import org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.ICVSUIConstants;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-
-/**
- * ModulesCategory is the model element for the mdoules category
- * for a particular repository. Its children are the array of all
- * modules defined in the CVSROOT/Modules file
- */
-public class ModulesCategory extends CVSModelElement implements IAdaptable {
- private ICVSRepositoryLocation repository;
-
- public ModulesCategory(ICVSRepositoryLocation repository) {
- super();
- this.repository = repository;
- }
-
- /**
- * Returns an object which is an instance of the given class
- * associated with this object. Returns null
if
- * no such object can be found.
- */
- public Object getAdapter(Class adapter) {
- if (adapter == IWorkbenchAdapter.class) return this;
- return null;
- }
-
- /**
- * @see org.eclipse.ui.model.IWorkbenchAdapter#getChildren(java.lang.Object)
- */
- public Object[] fetchChildren(Object o, IProgressMonitor monitor) throws TeamException {
- return repository.members(CVSTag.DEFAULT, true /* module definitions */, monitor);
- }
-
- /**
- * @see org.eclipse.ui.model.IWorkbenchAdapter#getImageDescriptor(java.lang.Object)
- */
- public ImageDescriptor getImageDescriptor(Object object) {
- return CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_PROJECT_VERSION);
- }
-
- /**
- * @see org.eclipse.ui.model.IWorkbenchAdapter#getLabel(java.lang.Object)
- */
- public String getLabel(Object o) {
- return Policy.bind("ModulesCategory.label"); //$NON-NLS-1$
- }
-
- /**
- * @see org.eclipse.ui.model.IWorkbenchAdapter#getParent(java.lang.Object)
- */
- public Object getParent(Object o) {
- return repository;
- }
-
- /**
- * @see org.eclipse.team.internal.ccvs.ui.model.CVSModelElement#isRemoteElement()
- */
- public boolean isRemoteElement() {
- return true;
- }
-
- /**
- * Returns the repository.
- * @return ICVSRepositoryLocation
- */
- public ICVSRepositoryLocation getRepository() {
- return repository;
- }
-
- public String toString() {
- return getRepository().toString() + " (modules)"; //$NON-NLS-1$
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteContentProvider.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteContentProvider.java
deleted file mode 100644
index ed617d0b7..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteContentProvider.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.model;
-
-import org.eclipse.jface.viewers.AbstractTreeViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.core.resources.RemoteResource;
-import org.eclipse.team.internal.ccvs.ui.repo.RepositoryRoot;
-import org.eclipse.ui.IWorkingSet;
-import org.eclipse.ui.model.WorkbenchContentProvider;
-import org.eclipse.ui.progress.DeferredTreeContentManager;
-
-/**
- * Extension to the generic workbench content provider mechanism
- * to lazily determine whether an element has children. That is,
- * children for an element aren't fetched until the user clicks
- * on the tree expansion box.
- */
-public class RemoteContentProvider extends WorkbenchContentProvider {
-
- IWorkingSet workingSet;
- DeferredTreeContentManager manager;
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
- */
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
- if (viewer instanceof AbstractTreeViewer) {
- manager = new DeferredTreeContentManager(this, (AbstractTreeViewer) viewer);
- }
- super.inputChanged(viewer, oldInput, newInput);
- }
-
- public boolean hasChildren(Object element) {
- // the + box will always appear, but then disappear
- // if not needed after you first click on it.
- if (element instanceof ICVSRemoteResource) {
- if (element instanceof ICVSRemoteFolder) {
- return ((ICVSRemoteFolder) element).isExpandable();
- }
- return ((ICVSRemoteResource) element).isContainer();
- } else if (element instanceof CVSResourceElement) {
- ICVSResource r = ((CVSResourceElement) element).getCVSResource();
- if (r instanceof RemoteResource) {
- return r.isFolder();
- }
- } else if (element instanceof VersionCategory) {
- return true;
- } else if (element instanceof BranchCategory) {
- return true;
- } else if (element instanceof ModulesCategory) {
- return true;
- } else if (element instanceof CVSTagElement) {
- return true;
- } else if (element instanceof RemoteModule) {
- return true;
- }
- if (manager != null) {
- if (manager.isDeferredAdapter(element))
- return manager.mayHaveChildren(element);
- }
-
- return super.hasChildren(element);
- }
-
- /**
- * Sets the workingSet.
- * @param workingSet The workingSet to set
- */
- public void setWorkingSet(IWorkingSet workingSet) {
- this.workingSet = workingSet;
- }
-
- /**
- * Returns the workingSet.
- * @return IWorkingSet
- */
- public IWorkingSet getWorkingSet() {
- return workingSet;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.model.WorkbenchContentProvider#getChildren(java.lang.Object)
- */
- public Object[] getChildren(Object element) {
- if (manager != null) {
- Object[] children = manager.getChildren(element);
- if (children != null) {
- // This will be a placeholder to indicate
- // that the real children are being fetched
- return children;
- }
- }
- Object[] children = super.getChildren(element);
- for (int i = 0; i < children.length; i++) {
- Object object = children[i];
- if (object instanceof CVSModelElement)
- ((CVSModelElement)object).setWorkingSet(getWorkingSet());
- }
- return children;
- }
-
- public void cancelJobs(RepositoryRoot[] roots) {
- if (manager != null) {
- for (int i = 0; i < roots.length; i++) {
- RepositoryRoot root = roots[i];
- cancelJobs(root.getRoot());
- }
- }
- }
-
- /**
- * Cancel any jobs that are fetching content from the given location.
- * @param location
- */
- public void cancelJobs(ICVSRepositoryLocation location) {
- if (manager != null) {
- manager.cancel(location);
- }
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteFileElement.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteFileElement.java
deleted file mode 100644
index 5c20e22fb..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteFileElement.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.model;
-
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.ICVSRemoteFile;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.ui.PlatformUI;
-
-public class RemoteFileElement extends RemoteResourceElement {
- /**
- * Initial implementation: return null;
- */
- public Object[] fetchChildren(Object o, IProgressMonitor monitor) {
- return new Object[0];
- }
- /**
- * Initial implementation: return null.
- */
- public ImageDescriptor getImageDescriptor(Object object) {
- if (!(object instanceof ICVSRemoteFile)) return null;
- return PlatformUI.getWorkbench().getEditorRegistry().getImageDescriptor(((ICVSRemoteFile)object).getName());
- }
- /**
- * Initial implementation: return the file's name and version
- */
- public String getLabel(Object o) {
- if (!(o instanceof ICVSRemoteFile)) return null;
- ICVSRemoteFile file = (ICVSRemoteFile)o;
- try {
- return Policy.bind("nameAndRevision", file.getName(), file.getRevision()); //$NON-NLS-1$
- } catch (TeamException e) {
- handle(null, null, e);
- return null;
- }
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteFolderElement.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteFolderElement.java
deleted file mode 100644
index d999ff0ae..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteFolderElement.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.team.internal.ccvs.ui.model;
-import java.lang.reflect.InvocationTargetException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.jobs.ISchedulingRule;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.ui.*;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.operations.FetchMembersOperation;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.progress.IDeferredWorkbenchAdapter;
-import org.eclipse.ui.progress.IElementCollector;
-
-public class RemoteFolderElement extends RemoteResourceElement implements IDeferredWorkbenchAdapter {
-
- /**
- * Overridden to append the version name to remote folders which
- * have version tags and are top-level folders.
- */
- public String getLabel(Object o) {
- if (!(o instanceof ICVSRemoteFolder))
- return null;
- ICVSRemoteFolder folder = (ICVSRemoteFolder) o;
- CVSTag tag = folder.getTag();
- if (tag != null && tag.getType() != CVSTag.HEAD) {
- if (folder.getRemoteParent() == null) {
- return Policy.bind("RemoteFolderElement.nameAndTag", folder.getName(), tag.getName()); //$NON-NLS-1$
- }
- }
- return folder.getName();
- }
-
- public ImageDescriptor getImageDescriptor(Object object) {
- if (!(object instanceof ICVSRemoteFolder))
- return null;
- ICVSRemoteFolder folder = (ICVSRemoteFolder) object;
- if (folder.isDefinedModule()) {
- return CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_MODULE);
- }
- return PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_OBJ_FOLDER);
- }
-
- public Object[] fetchChildren(Object o, IProgressMonitor monitor) throws TeamException {
- if (!(o instanceof ICVSRemoteFolder))
- return new Object[0];
- return ((ICVSRemoteFolder) o).members(monitor);
- }
-
- public void fetchDeferredChildren(Object o, IElementCollector collector, IProgressMonitor monitor) {
- // If it's not a folder, return an empty array
- if (!(o instanceof ICVSRemoteFolder)) {
- collector.add(new Object[0], monitor);
- }
- try {
- monitor = Policy.monitorFor(monitor);
- monitor.beginTask(Policy.bind("RemoteFolderElement.fetchingRemoteChildren", getLabel(o)), 100); //$NON-NLS-1$
- FetchMembersOperation operation = new FetchMembersOperation(null, (ICVSRemoteFolder)o, collector);
- operation.run(Policy.subMonitorFor(monitor, 100));
- } catch (InvocationTargetException e) {
- handle(collector, e);
- } catch (InterruptedException e) {
- // Cancelled by the user;
- } finally {
- monitor.done();
- }
- }
-
- public ISchedulingRule getRule(Object element) {
- ICVSRepositoryLocation location = getRepositoryLocation(element);
- return new RepositoryLocationSchedulingRule(location); //$NON-NLS-1$
- }
-
- private ICVSRepositoryLocation getRepositoryLocation(Object o) {
- if (!(o instanceof ICVSRemoteFolder))
- return null;
- return ((ICVSRemoteFolder)o).getRepository();
- }
-
- public boolean isContainer() {
- return true;
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteModule.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteModule.java
deleted file mode 100644
index ffa796cbc..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteModule.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.model;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.jobs.ISchedulingRule;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.ICVSUIConstants;
-import org.eclipse.team.internal.ccvs.ui.repo.RepositoryManager;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-import org.eclipse.ui.progress.IDeferredWorkbenchAdapter;
-import org.eclipse.ui.progress.IElementCollector;
-
-/**
- * This class represents an IProject resource in a repository. The children of a
- * RemoteModule are its versions. A RemoteModule is a child of the
- * VersionsCategory.
- */
-public class RemoteModule extends CVSModelElement implements IAdaptable,
- IDeferredWorkbenchAdapter {
- ICVSRemoteFolder folder;
-
- VersionCategory parent;
-
- /**
- * RemoteProject constructor.
- */
- public RemoteModule(ICVSRemoteFolder folder, VersionCategory parent) {
- this.folder = folder;
- this.parent = parent;
- }
-
- /**
- * Returns an object which is an instance of the given class associated with
- * this object. Returns null
if no such object can be found.
- */
- public Object getAdapter(Class adapter) {
- if (adapter == IWorkbenchAdapter.class)
- return this;
- if (adapter == IDeferredWorkbenchAdapter.class)
- return this;
- return null;
- }
-
- /**
- * Returns an image to be used for displaying an object in the desktop.
- *
- * @param object The object to get an image for.
- * @param owner The viewer that the image will be used in. The image will be
- * disposed when this viewer is closed. If the owner is null, a
- * new image is returned, and the caller is responsible for
- * disposing it.
- */
- public ImageDescriptor getImageDescriptor(Object object) {
- return CVSUIPlugin.getPlugin().getImageDescriptor(
- ICVSUIConstants.IMG_PROJECT_VERSION);
- }
-
- /**
- * Returns the name of this element. This will typically be used to assign a
- * label to this object when displayed in the UI.
- */
- public String getLabel(Object o) {
- return folder.getName();
- }
-
- /**
- * Returns the logical parent of the given object in its tree.
- */
- public Object getParent(Object o) {
- return parent;
- }
-
- /**
- * Return the repository the given element belongs to.
- */
- public ICVSRepositoryLocation getRepository(Object o) {
- return folder.getRepository();
- }
-
- /**
- * (Non-javadoc) For debugging purposes only.
- */
- public String toString() {
- return "RemoteModule(" + folder.getName() + ")"; //$NON-NLS-1$ //$NON-NLS-2$
- }
-
- public ICVSRemoteResource getCVSResource() {
- return folder;
- }
-
- /**
- * Returns the children of this object. When this object is displayed in a
- * tree, the returned objects will be this element's children. Returns an
- * empty enumeration if this object has no children. The children of the
- * RemoteModule are the versions for that module.
- *
- * @see org.eclipse.team.internal.ccvs.ui.model.CVSModelElement#internalGetChildren(java.lang.Object,
- * org.eclipse.core.runtime.IProgressMonitor)
- */
- public Object[] fetchChildren(Object o, IProgressMonitor monitor)
- throws TeamException {
- RepositoryManager manager = CVSUIPlugin.getPlugin()
- .getRepositoryManager();
- try {
- manager.refreshDefinedTags(folder, false /* recurse */, false /* notify */, monitor);
- } catch (TeamException e) {
- // continue
- }
- CVSTag[] tags = CVSUIPlugin.getPlugin().getRepositoryManager()
- .getKnownTags(folder, CVSTag.VERSION);
- Object[] versions = new Object[tags.length];
- for (int i = 0; i < versions.length; i++) {
- versions[i] = folder.forTag(tags[i]);
- }
- return versions;
- }
-
- public void fetchDeferredChildren(Object o, IElementCollector collector,
- IProgressMonitor monitor) {
- try {
- collector.add(fetchChildren(o, monitor), monitor);
- } catch (TeamException e) {
- handle(collector, e);
- }
- }
-
- public boolean isContainer() {
- return true;
- }
-
- public ISchedulingRule getRule(Object element) {
- return new RepositoryLocationSchedulingRule(folder.getRepository()); //$NON-NLS-1$
- }
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteProjectsElement.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteProjectsElement.java
deleted file mode 100644
index 3f75d89c0..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteProjectsElement.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.model;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.CVSTag;
-import org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation;
-
-/**
- * This model element provides the remote projects for a given repository and
- * tag.
- */
-public class RemoteProjectsElement extends CVSTagElement {
-
- /**
- * Constructor for RemoteProjectsElement.
- */
- public RemoteProjectsElement() {
- super(CVSTag.DEFAULT, null);
- }
-
- /**
- * Constructor for RemoteProjectsElement.
- */
- public RemoteProjectsElement(ICVSRepositoryLocation root) {
- super(CVSTag.DEFAULT, root);
- }
-
- /**
- * Sets the root.
- * @param root The root to set
- */
- public void setRoot(ICVSRepositoryLocation root) {
- this.root = root;
- }
-
- /**
- * Sets the tag.
- * @param tag The tag to set
- */
- public void setTag(CVSTag tag) {
- this.tag = tag;
- }
- /**
- * @see java.lang.Object#equals(java.lang.Object)
- */
- public boolean equals(Object o) {
- if (!(o instanceof RemoteProjectsElement)) return false;
- RemoteProjectsElement element = (RemoteProjectsElement)o;
- if (root == null) {
- return element.root == null && tag.equals(element.tag);
- }
- return super.equals(o);
- }
-
- /**
- * @see org.eclipse.ui.model.IWorkbenchAdapter#getParent(java.lang.Object)
- */
- public Object getParent(Object o) {
- return null;
- }
-
- /**
- * @see java.lang.Object#hashCode()
- */
- public int hashCode() {
- if (root == null) return tag.hashCode();
- return super.hashCode();
- }
-
- /**
- * @see org.eclipse.team.internal.ccvs.ui.model.CVSModelElement#internalGetChildren(java.lang.Object, org.eclipse.core.runtime.IProgressMonitor)
- */
- public Object[] fetchChildren(Object o, IProgressMonitor monitor) throws TeamException {
- if (root == null) return new Object[0];
- return super.fetchChildren(o, monitor);
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteResourceElement.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteResourceElement.java
deleted file mode 100644
index c70214163..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteResourceElement.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.model;
-
-
-import org.eclipse.team.internal.ccvs.core.ICVSRemoteResource;
-
-public abstract class RemoteResourceElement extends CVSModelElement {
- /**
- * Initial implementation: return the resource's name
- */
- public String getLabel(Object o) {
- if (!(o instanceof ICVSRemoteResource)) return null;
- return ((ICVSRemoteResource)o).getName();
- }
- /**
- * Return null.
- */
- public Object getParent(Object o) {
- if (!(o instanceof ICVSRemoteResource)) return null;
- ICVSRemoteResource rr = (ICVSRemoteResource)o;
- return rr.getParent();
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteVersionModule.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteVersionModule.java
deleted file mode 100644
index d81650861..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteVersionModule.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.model;
-
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.team.internal.ccvs.core.CVSTag;
-import org.eclipse.team.internal.ccvs.core.ICVSRemoteFolder;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.ICVSUIConstants;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-
-/**
- * This class represents an IProject resource in a repository. The
- * children of a RemoteModule are its versions. A RemoteModule is
- * a child of the VersionsCategory.
- */
-public class RemoteVersionModule extends CVSModelElement implements IAdaptable {
- CVSTag tag;
- List projects = new ArrayList();
- GroupedByVersionCategory parent;
-
- /**
- * RemoteProject constructor.
- */
- public RemoteVersionModule(CVSTag tag, GroupedByVersionCategory parent) {
- this.tag = tag;
- this.parent = parent;
- }
-
- /**
- * Returns an object which is an instance of the given class
- * associated with this object. Returns null
if
- * no such object can be found.
- */
- public Object getAdapter(Class adapter) {
- if (adapter == IWorkbenchAdapter.class) return this;
- return null;
- }
-
- public void addProject(ICVSRemoteFolder project) {
- projects.add(project);
- }
-
- /**
- * Returns the children of this object. When this object
- * is displayed in a tree, the returned objects will be this
- * element's children. Returns an empty enumeration if this
- * object has no children. The children of the RemoteModule
- * are the versions for that module.
- */
- public Object[] fetchChildren(Object o, IProgressMonitor monitor) {
- return (ICVSRemoteFolder[]) projects.toArray(new ICVSRemoteFolder[projects.size()]);
- }
-
- /**
- * Returns an image to be used for displaying an object in the desktop.
- * @param object The object to get an image for.
- * @param owner The viewer that the image will be used in. The image will
- * be disposed when this viewer is closed. If the owner is null, a new
- * image is returned, and the caller is responsible for disposing it.
- */
- public ImageDescriptor getImageDescriptor(Object object) {
- return CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_PROJECT_VERSION);
- }
-
- /**
- * Returns the name of this element. This will typically
- * be used to assign a label to this object when displayed
- * in the UI.
- */
- public String getLabel(Object o) {
- return tag.getName();
- }
-
- /**
- * Returns the logical parent of the given object in its tree.
- */
- public Object getParent(Object o) {
- return parent;
- }
-
-
- /** (Non-javadoc)
- * For debugging purposes only.
- */
- public String toString() {
- return "RemoteVersionModule(" + tag.getName() + ")"; //$NON-NLS-1$ //$NON-NLS-2$
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RepositoryLocationSchedulingRule.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RepositoryLocationSchedulingRule.java
deleted file mode 100644
index 94228114f..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RepositoryLocationSchedulingRule.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.model;
-
-import org.eclipse.core.runtime.jobs.ISchedulingRule;
-import org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation;
-
-/**
- * A simple job scheduling rule for serializing jobs for an ICVSRepositoryLocation
- */
-public class RepositoryLocationSchedulingRule implements ISchedulingRule {
- ICVSRepositoryLocation location;
- public RepositoryLocationSchedulingRule(ICVSRepositoryLocation location) {
- this.location = location;
- }
- public boolean isConflicting(ISchedulingRule rule) {
- if(rule instanceof RepositoryLocationSchedulingRule) {
- return ((RepositoryLocationSchedulingRule)rule).location.equals(location);
- }
- return false;
- }
- public boolean contains(ISchedulingRule rule) {
- return isConflicting(rule);
- }
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/TagCategory.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/TagCategory.java
deleted file mode 100644
index 666dd0978..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/TagCategory.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.model;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-import org.eclipse.team.internal.ccvs.core.CVSTag;
-import org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-
-/**
- * This class provides common behavior between the branch and date tag categories
- */
-public abstract class TagCategory extends CVSModelElement {
- protected ICVSRepositoryLocation repository;
-
- public TagCategory(ICVSRepositoryLocation repository) {
- this.repository = repository;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.model.CVSModelElement#fetchChildren(java.lang.Object, org.eclipse.core.runtime.IProgressMonitor)
- */
- public Object[] fetchChildren(Object o, IProgressMonitor monitor) throws CVSException {
- CVSTag[] tags = getTags(monitor);
- CVSTagElement[] elements = new CVSTagElement[tags.length];
- for (int i = 0; i < tags.length; i++) {
- elements[i] = new CVSTagElement(tags[i], repository);
- }
- return elements;
- }
-
- /**
- * Return the tags that are to be displyed as children of this category
- * @param monitor
- * @return
- */
- protected abstract CVSTag[] getTags(IProgressMonitor monitor) throws CVSException;
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.model.IWorkbenchAdapter#getParent(java.lang.Object)
- */
- public Object getParent(Object o) {
- return repository;
- }
-
- /**
- * Return the repository the given element belongs to.
- */
- public ICVSRepositoryLocation getRepository(Object o) {
- return repository;
- }
-
- /**
- * Returns an object which is an instance of the given class
- * associated with this object. Returns null
if
- * no such object can be found.
- */
- public Object getAdapter(Class adapter) {
- if (adapter == IWorkbenchAdapter.class) return this;
- return null;
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/VersionCategory.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/VersionCategory.java
deleted file mode 100644
index f629351da..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/VersionCategory.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.model;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.jobs.ISchedulingRule;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.ui.*;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-import org.eclipse.ui.progress.IDeferredWorkbenchAdapter;
-import org.eclipse.ui.progress.IElementCollector;
-
-public class VersionCategory extends CVSModelElement implements IAdaptable,
- IDeferredWorkbenchAdapter {
- private ICVSRepositoryLocation repository;
-
- /**
- * ProjectVersionsCategory constructor.
- */
- public VersionCategory(ICVSRepositoryLocation repo) {
- super();
- this.repository = repo;
- }
-
- /**
- * Returns an object which is an instance of the given class associated with
- * this object. Returns null
if no such object can be found.
- */
- public Object getAdapter(Class adapter) {
- if (adapter == IWorkbenchAdapter.class)
- return this;
- if (adapter == IDeferredWorkbenchAdapter.class)
- return this;
- return null;
- }
-
- /**
- * Returns the children of this object. When this object is displayed in a
- * tree, the returned objects will be this element's children. Returns an
- * empty enumeration if this object has no children.
- */
- public Object[] fetchChildren(Object o, IProgressMonitor monitor)
- throws TeamException {
- if (CVSUIPlugin.getPlugin().getRepositoryManager()
- .isDisplayingProjectVersions(repository)) {
- return getProjectVersionChildren(o, monitor);
- } else {
- return getVersionTagChildren(o, monitor);
- }
- }
-
- /*
- * Return the children as a list of versions whose children are projects
- */
- private Object[] getVersionTagChildren(Object o, IProgressMonitor monitor)
- throws CVSException {
- CVSTag[] tags = CVSUIPlugin.getPlugin().getRepositoryManager()
- .getKnownTags(repository, getWorkingSet(), CVSTag.VERSION, monitor);
- CVSTagElement[] versionElements = new CVSTagElement[tags.length];
- for (int i = 0; i < tags.length; i++) {
- versionElements[i] = new CVSTagElement(tags[i], repository);
- }
- return versionElements;
- }
-
- /*
- * Return the children as a list of projects whose children ar project
- * versions
- */
- private Object[] getProjectVersionChildren(Object o,
- IProgressMonitor monitor) throws TeamException {
-
- ICVSRemoteResource[] resources = CVSUIPlugin.getPlugin()
- .getRepositoryManager().getFoldersForTag(repository,
- CVSTag.DEFAULT, monitor);
- if (getWorkingSet() != null)
- resources = CVSUIPlugin.getPlugin().getRepositoryManager()
- .filterResources(getWorkingSet(), resources);
- Object[] modules = new Object[resources.length];
- for (int i = 0; i < resources.length; i++) {
- modules[i] = new RemoteModule((ICVSRemoteFolder) resources[i],
- VersionCategory.this);
- }
- return modules;
- }
-
- /**
- * Returns an image descriptor to be used for displaying an object in the
- * workbench. Returns null if there is no appropriate image.
- *
- * @param object The object to get an image descriptor for.
- */
- public ImageDescriptor getImageDescriptor(Object object) {
- return CVSUIPlugin.getPlugin().getImageDescriptor(
- ICVSUIConstants.IMG_VERSIONS_CATEGORY);
- }
-
- /**
- * Returns the name of this element. This will typically be used to assign a
- * label to this object when displayed in the UI. Returns an empty string if
- * there is no appropriate name for this object.
- *
- * @param object The object to get a label for.
- */
- public String getLabel(Object o) {
- return Policy.bind("VersionCategory.Versions_1"); //$NON-NLS-1$
- }
-
- /**
- * Returns the logical parent of the given object in its tree. Returns null
- * if there is no parent, or if this object doesn't belong to a tree.
- *
- * @param object The object to get the parent for.
- */
- public Object getParent(Object o) {
- return repository;
- }
-
- /**
- * Return the repository the given element belongs to.
- */
- public ICVSRepositoryLocation getRepository(Object o) {
- return repository;
- }
-
- public void fetchDeferredChildren(Object o, IElementCollector collector,
- IProgressMonitor monitor) {
- try {
- collector.add(fetchChildren(o, monitor), monitor);
- } catch (TeamException e) {
- handle(collector, e);
- }
- }
-
- public boolean isContainer() {
- return true;
- }
-
- public ISchedulingRule getRule(Object element) {
- return new RepositoryLocationSchedulingRule(repository); //$NON-NLS-1$
- }
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/AddOperation.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/AddOperation.java
deleted file mode 100644
index 6164e3cd5..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/AddOperation.java
+++ /dev/null
@@ -1,205 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.operations;
-
-import java.util.*;
-
-import org.eclipse.core.resources.*;
-import org.eclipse.core.runtime.*;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.core.client.Command;
-import org.eclipse.team.internal.ccvs.core.client.Session;
-import org.eclipse.team.internal.ccvs.core.client.Command.KSubstOption;
-import org.eclipse.team.internal.ccvs.core.client.Command.LocalOption;
-import org.eclipse.team.internal.ccvs.core.connection.CVSServerException;
-import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.ui.IWorkbenchPart;
-
-/**
- * Performs a "cvs add"
- */
-public class AddOperation extends RepositoryProviderOperation {
-
- public AddOperation(IWorkbenchPart part, IResource[] resources) {
- super(part, resources);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.operations.RepositoryProviderOperation#execute(org.eclipse.team.internal.ccvs.core.CVSTeamProvider, org.eclipse.core.resources.IResource[], org.eclipse.core.runtime.IProgressMonitor)
- */
- protected void execute(CVSTeamProvider provider, IResource[] resources, IProgressMonitor monitor) throws CVSException, InterruptedException {
- add(provider, resources, IResource.DEPTH_INFINITE, monitor);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.operations.CVSOperation#getTaskName()
- */
- protected String getTaskName() {
- return Policy.bind("AddAction.adding"); //$NON-NLS-1$
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.operations.RepositoryProviderOperation#getTaskName(org.eclipse.team.internal.ccvs.core.CVSTeamProvider)
- */
- protected String getTaskName(CVSTeamProvider provider) {
- return Policy.bind("AddOperation.0", provider.getProject().getName()); //$NON-NLS-1$
- }
-
- /*
- * Add the given resources to the project.
- * - * The sematics follow that of CVS in the sense that any folders - * being added are created remotely as a result of this operation - * while files are created remotely on the next commit. - *
- *- * This method uses the team file type registry to determine the type - * of added files. If the extension of the file is not in the registry, - * the file is assumed to be binary. - *
- *- * NOTE: for now we do three operations: one each for folders, text files and binary files. - * We should optimize this when time permits to either use one operations or defer server - * contact until the next commit. - *
- * - *- * There are special semantics for adding the project itself to the repo. In this case, the project - * must be included in the resources array. - *
- */ - private void add(CVSTeamProvider provider, IResource[] resources, int depth, IProgressMonitor progress) throws CVSException { - - // Visit the children of the resources using the depth in order to - // determine which folders, text files and binary files need to be added - // A TreeSet is needed for the folders so they are in the right order (i.e. parents created before children) - final SortedSet folders = new TreeSet(); - // Sets are required for the files to ensure that files will not appear twice if there parent was added as well - // and the depth isn't zero - final Map /* from KSubstOption to Set */ files = new HashMap(); - final CVSException[] eHolder = new CVSException[1]; - for (int i=0; itrue
if the resource has a sticky tag
- */
- private boolean hasStickyTag(IResource resource) {
- try {
- ICVSResource cvsResource = CVSWorkspaceRoot.getCVSResourceFor(resource);
- CVSTag tag;
- if(cvsResource.isFolder()) {
- FolderSyncInfo folderInfo = ((ICVSFolder)cvsResource).getFolderSyncInfo();
- tag = folderInfo.getTag();
- } else {
- ResourceSyncInfo info = cvsResource.getSyncInfo();
- tag = info.getTag();
- }
- if(tag!=null) {
- int tagType = tag.getType();
- if(tagType==CVSTag.VERSION) {
- return true;
- }
- }
- } catch(CVSException e) {
- CVSUIPlugin.log(e);
- return false;
- }
- return false;
- }
-
- private String calculateInitialVersionName(IResource[] resources, boolean allSticky) {
- String versionName = ""; //$NON-NLS-1$
- try {
- if(allSticky) {
- IResource stickyResource = resources[0];
- if(stickyResource.getType()==IResource.FILE) {
- ICVSFile cvsFile = CVSWorkspaceRoot.getCVSFileFor((IFile)stickyResource);
- versionName = cvsFile.getSyncInfo().getTag().getName();
- } else {
- ICVSFolder cvsFolder = CVSWorkspaceRoot.getCVSFolderFor((IContainer)stickyResource);
- versionName = cvsFolder.getFolderSyncInfo().getTag().getName();
- }
- }
- } catch(CVSException e) {
- CVSUIPlugin.log(e);
- versionName = ""; //$NON-NLS-1$
- }
- return versionName;
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/CVSOperation.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/CVSOperation.java
deleted file mode 100644
index 3d33624ef..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/CVSOperation.java
+++ /dev/null
@@ -1,366 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.operations;
-
-import java.lang.reflect.InvocationTargetException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.*;
-
-import org.eclipse.core.runtime.*;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-import org.eclipse.team.internal.ccvs.core.CVSStatus;
-import org.eclipse.team.internal.ccvs.core.util.Assert;
-import org.eclipse.team.internal.ccvs.ui.*;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.console.CVSOutputConsole;
-import org.eclipse.team.ui.TeamOperation;
-import org.eclipse.ui.IWorkbenchPart;
-
-
-/**
- * This class is the abstract superclass for CVS operations. It provides
- * error handling, prompting and other UI.
- */
-public abstract class CVSOperation extends TeamOperation {
-
- private int statusCount;
-
- private boolean involvesMultipleResources = false;
-
- private List errors = new ArrayList(); // of IStatus
-
- protected static final IStatus OK = Status.OK_STATUS; //$NON-NLS-1$
-
- private Shell shell;
-
- // instance variable used to indicate behavior while prompting for overwrite
- private boolean confirmOverwrite = true;
-
- protected CVSOperation(IWorkbenchPart part) {
- super(part);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ui.actions.TeamOperation#getJobName()
- */
- protected String getJobName() {
- return getTaskName();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.ui.TeamOperation#getOperationIcon()
- */
- protected URL getOperationIcon() {
- URL url = null;
- try {
- URL baseURL = CVSUIPlugin.getPlugin().getBundle().getEntry("/"); //$NON-NLS-1$
- return new URL(baseURL, ICVSUIConstants.ICON_PATH + ICVSUIConstants.IMG_CVS_PERSPECTIVE);
- } catch (MalformedURLException e) {
- return null;
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.operation.IRunnableWithProgress#run(org.eclipse.core.runtime.IProgressMonitor)
- */
- public final void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- startOperation();
- try {
- monitor = Policy.monitorFor(monitor);
- monitor.beginTask(null, 100);
- monitor.setTaskName(getTaskName());
- execute(Policy.subMonitorFor(monitor, 100));
- endOperation();
- } catch (CVSException e) {
- // TODO: errors may not be empty (i.e. endOperation has not been executed)
- throw new InvocationTargetException(e);
- } finally {
- monitor.done();
- }
- }
-
- protected void startOperation() {
- statusCount = 0;
- resetErrors();
- confirmOverwrite = true;
- }
-
- protected void endOperation() throws CVSException {
- handleErrors((IStatus[]) errors.toArray(new IStatus[errors.size()]));
- }
-
- /**
- * Subclasses must override this method to perform the operation.
- * Clients should never call this method directly.
- *
- * @param monitor
- * @throws CVSException
- * @throws InterruptedException
- */
- protected abstract void execute(IProgressMonitor monitor) throws CVSException, InterruptedException;
-
- protected void addError(IStatus status) {
- if (status.isOK()) return;
- if (isLastError(status)) return;
- errors.add(status);
- }
-
- protected void collectStatus(IStatus status) {
- if (isLastError(status)) return;
- statusCount++;
- if (!status.isOK()) addError(status);
- }
-
- protected void resetErrors() {
- errors.clear();
- statusCount = 0;
- }
-
- /**
- * Get the last error taht occured. This can be useful when a method
- * has a return type but wants to signal an error. The method in question
- * can add the error using addError(IStatus)
and return null.
- * The caller can then query the error using this method. Also, addError(IStatus)
- * will not add the error if it is already on the end of the list (using identity comparison)
- * which allows the caller to still perform a collectStatus(IStatus)
- * to get a valid operation count.
- * @return
- */
- protected IStatus getLastError() {
- Assert.isTrue(errors.size() > 0);
- IStatus status = (IStatus)errors.get(errors.size() - 1);
- return status;
- }
-
- private boolean isLastError(IStatus status) {
- return (errors.size() > 0 && getLastError() == status);
- }
-
- /**
- * Throw an exception that contains the given error status
- * @param errors the errors that occurred during the operation
- * @throws CVSException an exception that wraps the errors
- */
- protected void asException(IStatus[] errors) throws CVSException {
- if (errors.length == 0) return;
- if (errors.length == 1 && statusCount == 1) {
- throw new CVSException(errors[0]);
- }
- MultiStatus result = new MultiStatus(CVSUIPlugin.ID, 0, getErrorMessage(errors, statusCount), null);
- for (int i = 0; i < errors.length; i++) {
- IStatus s = errors[i];
- if (s.isMultiStatus()) {
- result.add(new CVSStatus(s.getSeverity(), s.getMessage(), s.getException()));
- result.addAll(s);
- } else {
- result.add(s);
- }
- }
- throw new CVSException(result);
- }
-
- /**
- * Handle the errors that occured during an operation.
- * The default is to throw an exception containing an status
- * that are reportable (determined using isReportableError
).
- * @param errors the errors that occurred during the operation.
- * Subclasses may override.
- * @throws CVSException an exception if appropriate
- */
- protected void handleErrors(IStatus[] errors) throws CVSException {
- // We are only concerned with reportable errors.
- // Others will appear in the console
- List serverErrors = new ArrayList();
- for (int i = 0; i < errors.length; i++) {
- IStatus status = errors[i];
- if (isReportableError(status)) {
- serverErrors.add(status);
- } else if (status.isMultiStatus()) {
- IStatus[] children = status.getChildren();
- for (int j = 0; j < children.length; j++) {
- IStatus child = children[j];
- if (isReportableError(child)) {
- serverErrors.add(status);
- break;
- }
- }
- }
- }
- if (!serverErrors.isEmpty())
- asException((IStatus[]) serverErrors.toArray(new IStatus[serverErrors.size()]));
- }
-
- /**
- * Return whether the given status is reportable. By default,
- * only server errors are reportable. Subclasses may override.
- * @param status an error status
- * @return whether the status is reportable or should be ignored
- */
- protected boolean isReportableError(IStatus status) {
- return status.getCode() == CVSStatus.SERVER_ERROR;
- }
-
- protected String getErrorMessage(IStatus[] failures, int totalOperations) {
- return Policy.bind("CVSOperation.0", String.valueOf(failures.length), String.valueOf(totalOperations)); //$NON-NLS-1$
- }
-
- /**
- * This method prompts the user to overwrite an existing resource. It uses the
- * involvesMultipleResources
to determine what buttons to show.
- * @param project
- * @return
- */
- protected boolean promptToOverwrite(final String title, final String msg) {
- if (!confirmOverwrite) {
- return true;
- }
- final String buttons[];
- if (involvesMultipleResources()) {
- buttons = new String[] {
- IDialogConstants.YES_LABEL,
- IDialogConstants.YES_TO_ALL_LABEL,
- IDialogConstants.NO_LABEL,
- IDialogConstants.CANCEL_LABEL};
- } else {
- buttons = new String[] {IDialogConstants.OK_LABEL, IDialogConstants.CANCEL_LABEL};
- }
- final Shell displayShell = getShell();
- if (displayShell == null) {
- // We couldn't get a shell (perhaps due to shutdown)
- return false;
- }
-
- // run in syncExec because callback is from an operation,
- // which is probably not running in the UI thread.
- final int[] code = new int[] {0};
- displayShell.getDisplay().syncExec(
- new Runnable() {
- public void run() {
- MessageDialog dialog =
- new MessageDialog(displayShell, title, null, msg, MessageDialog.QUESTION, buttons, 0);
- dialog.open();
- code[0] = dialog.getReturnCode();
- }
- });
- if (involvesMultipleResources()) {
- switch (code[0]) {
- case 0://Yes
- return true;
- case 1://Yes to all
- confirmOverwrite = false;
- return true;
- case 2://No
- return false;
- case 3://Cancel
- default:
- throw new OperationCanceledException();
- }
- } else {
- return code[0] == 0;
- }
- }
-
- /**
- * This method is used by promptToOverwrite
to determine which
- * buttons to show in the prompter.
- *
- * @return
- */
- protected boolean involvesMultipleResources() {
- return involvesMultipleResources;
- }
-
- public void setInvolvesMultipleResources(boolean b) {
- involvesMultipleResources = b;
- }
-
- /**
- * Return the string that is to be used as the task name for the operation
- *
- * @param remoteFolders
- * @return
- */
- protected abstract String getTaskName();
-
- /**
- * Return true if any of the accumulated status have a severity of ERROR
- * @return
- */
- protected boolean errorsOccurred() {
- for (Iterator iter = errors.iterator(); iter.hasNext();) {
- IStatus status = (IStatus) iter.next();
- if (status.getSeverity() == IStatus.ERROR) return true;
- }
- return false;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ui.actions.TeamOperation#getShell()
- */
- protected Shell getShell() {
- // Use the shell assigned to the operation if possible
- if (shell != null && !shell.isDisposed()) {
- return shell;
- }
- return super.getShell();
- }
-
- /**
- * Set the shell to be used by the operation. This only needs
- * to be done if the operation does not have a workbench part.
- * For example, if the operation is being run in a wizard.
- * @param shell The shell to set.
- */
- public void setShell(Shell shell) {
- this.shell = shell;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.ui.TeamOperation#canRunAsJob()
- */
- protected boolean canRunAsJob() {
- // Put CVS jobs in the background by default.
- return true;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.ui.TeamOperation#isSameFamilyAs(org.eclipse.team.ui.TeamOperation)
- */
- protected boolean isSameFamilyAs(TeamOperation operation) {
- // Trat all CVS operations as a single family
- return operation instanceof CVSOperation;
- }
-
- /*
- * Action to show the console that can be used by subclasses
- * that wish to link the progress service to the console
- */
- protected IAction getShowConsoleAction() {
- // Show the console as the goto action
- return new Action(Policy.bind("CVSOperation.1")) { //$NON-NLS-1$
- public void run() {
- CVSOutputConsole console = CVSUIPlugin.getPlugin().getConsole();
- if (console != null)
- console.show(true);
- }
- public String getToolTipText() {
- return Policy.bind("CVSOperation.2"); //$NON-NLS-1$
- }
- };
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/CheckoutIntoOperation.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/CheckoutIntoOperation.java
deleted file mode 100644
index 6a3433720..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/CheckoutIntoOperation.java
+++ /dev/null
@@ -1,442 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.operations;
-
-import java.util.*;
-
-import org.eclipse.core.resources.*;
-import org.eclipse.core.runtime.*;
-import org.eclipse.core.runtime.jobs.ISchedulingRule;
-import org.eclipse.team.core.RepositoryProvider;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.core.client.*;
-import org.eclipse.team.internal.ccvs.core.client.Command.LocalOption;
-import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot;
-import org.eclipse.team.internal.ccvs.core.resources.EclipseSynchronizer;
-import org.eclipse.team.internal.ccvs.core.syncinfo.FolderSyncInfo;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.ui.IWorkbenchPart;
-
-/**
- * This method checks out one or more remote folders from the same repository
- * into an existing project or folder in the workspace. The target project
- * must either be shared with the same repository or it must not be shared
- * with any repository
- */
-public class CheckoutIntoOperation extends CheckoutOperation {
-
- private boolean recursive;
- private ICVSFolder localFolder;
- private String localFolderName;
-
- /**
- * Constructor which takes a set of remote folders and the local folder into which the folders should be
- * loaded.
- */
- public CheckoutIntoOperation(IWorkbenchPart part, ICVSRemoteFolder[] remoteFolders, IContainer localFolder, boolean recursive) {
- super(part, remoteFolders);
- this.recursive = recursive;
- this.localFolder = CVSWorkspaceRoot.getCVSFolderFor(localFolder);
- }
-
- /**
- * Constructor which takes a single remote folder and the target local folder.
- */
- public CheckoutIntoOperation(IWorkbenchPart part, ICVSRemoteFolder remoteFolder, IContainer localFolder, boolean recursive) {
- this(part, new ICVSRemoteFolder[] { remoteFolder }, localFolder.getParent(), recursive);
- this.localFolderName = localFolder.getName();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.operations.CheckoutOperation#getTaskName()
- */
- protected String getTaskName() {
- ICVSRemoteFolder[] remoteFolders = getRemoteFolders();
- String localFolderName = ""; //$NON-NLS-1$
- try {
- localFolderName = getLocalFolder().getIResource().getFullPath().toString();
- } catch (CVSException e) {
- CVSUIPlugin.log(e);
- }
- return Policy.bind("CheckoutIntoOperation.taskname", new Integer(remoteFolders.length).toString(), localFolderName); //$NON-NLS-1$
- }
-
- /**
- * @return
- */
- public ICVSFolder getLocalFolder() {
- return localFolder;
- }
-
- /**
- * @return
- */
- public boolean isRecursive() {
- return recursive;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.operations.CheckoutOperation#checkout(org.eclipse.team.internal.ccvs.core.ICVSRemoteFolder, org.eclipse.core.runtime.IProgressMonitor)
- */
- protected IStatus checkout(final ICVSRemoteFolder folder, IProgressMonitor monitor) throws CVSException {
- final IStatus[] result = new IStatus[] { null };
- try {
- // Wrap in a workspace runnable to avoid auto-build.
- // This is necessary because CVS has a POST_BUILD
- // listener that will clear the sync info from
- // orphaned (i.e. unmanaged) subtrees and we will
- // purposely create some which we subsequently manage
- // from their parent (see manageFolders())
- ResourcesPlugin.getWorkspace().run(new IWorkspaceRunnable() {
- public void run(IProgressMonitor monitor) throws CoreException {
- result[0] = checkout(folder, getLocalFolder(), isRecursive(), monitor);
- }
- }, getSchedulingRule(), 0, monitor);
- } catch (CoreException e) {
- result[0] = CVSException.wrapException(e).getStatus();
- }
- return result[0];
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.operations.CheckoutOperation#checkout(org.eclipse.team.internal.ccvs.core.ICVSRemoteFolder[], org.eclipse.core.runtime.IProgressMonitor)
- */
- protected void checkout(final ICVSRemoteFolder[] folders, IProgressMonitor monitor) throws CVSException {
- // Batch sync info changes with the CVS synchronizer to optimize cache writing
- EclipseSynchronizer.getInstance().run(getSchedulingRule(), new ICVSRunnable() {
- public void run(IProgressMonitor monitor) throws CVSException {
- monitor.beginTask(null, 100);
- try {
- // Obtain a scheduling rule on the projects were about to overwrite
- CheckoutIntoOperation.super.checkout(folders, Policy.subMonitorFor(monitor, 90));
- refreshRoot(getLocalRoot(getLocalFolder()), Policy.subMonitorFor(monitor, 10));
- } finally {
- monitor.done();
- }
- }
- }, Policy.monitorFor(monitor));
- }
-
- /*
- * Prepare the local folders to receive the remote folders. If localFolderName is not null, then
- * if will be the only target folder of the checkout. Otherwise, the remote folder
- * could expand to multiple local folders witinb the given parent folder.
- */
- private ICVSFolder[] prepareLocalFolders(Session session, ICVSRemoteFolder remoteFolder, ICVSFolder parentFolder, String localFolderName, IProgressMonitor monitor) throws CVSException {
- Set targetFolderSet = new HashSet();
- monitor.beginTask(null, 30);
- if (localFolderName == null) {
-
- // Determine which local folders will be afected
- IStatus status = Request.EXPAND_MODULES.execute(session, new String[] { remoteFolder.getRepositoryRelativePath()}, Policy.subMonitorFor(monitor, 10));
- if (status.getCode() == CVSStatus.SERVER_ERROR) {
- addError(status);
- return null;
- }
-
- // Convert the module expansions to target folders
- String[] expansions = session.getModuleExpansions();
- for (int j = 0; j < expansions.length; j++) {
- String childPath = new Path(null, expansions[j]).segment(0);
- ICVSResource resource = parentFolder.getChild(childPath);
- if (resource != null && !resource.isFolder()) {
- // The target folder conflicts with an existing file
- addError(new CVSStatus(IStatus.ERROR, Policy.bind("CheckoutIntoOperation.targetIsFile", remoteFolder.getName(), resource.getIResource().getFullPath().toString()))); //$NON-NLS-1$
- return null;
- }
- targetFolderSet.add(parentFolder.getFolder(childPath));
- }
-
- } else {
- targetFolderSet.add(parentFolder.getFolder(localFolderName));
- }
-
- final ICVSFolder[] targetFolders = (ICVSFolder[]) targetFolderSet.toArray(new ICVSFolder[targetFolderSet.size()]);
-
- // Ensure that the checkout will not conflict with existing resources
- IStatus status = validateTargetFolders(remoteFolder, targetFolders, Policy.subMonitorFor(monitor, 10));
- if (!status.isOK()) {
- addError(status);
- return null;
- }
-
- // Prepare the target projects to receive resources
- status = scrubFolders(remoteFolder, targetFolders, Policy.subMonitorFor(monitor, 10));
- // return the target projects if the scrub succeeded
- if (status.isOK()) {
- return targetFolders;
- } else {
- addError(status);
- return null;
- }
- }
-
- /*
- * Ensure that the new folders will not conflict with existing folders (even those that are pruned).
- */
- private IStatus validateTargetFolders(ICVSRemoteFolder remoteFolder, ICVSFolder[] targetFolders, IProgressMonitor monitor) throws CVSException {
- for (int i = 0; i < targetFolders.length; i++) {
- ICVSFolder targetFolder = targetFolders[i];
- FolderSyncInfo localInfo = targetFolder.getFolderSyncInfo();
- FolderSyncInfo remoteInfo = remoteFolder.getFolderSyncInfo();
-
- if (!remoteInfo.isSameMapping(localInfo)) {
- if (localInfo != null ) {
- if (isRemoteChildOfParent(targetFolder)) {
- // if the local folder is child of it's parent remotely (i.e. path of child is parent/child)
- // then the remote cannot be loaded.
- String message;
- if (targetFolder.exists()) {
- message = Policy.bind("CheckoutIntoOperation.targetIsFolder", remoteFolder.getName(), targetFolder.getIResource().getFullPath().toString()); //$NON-NLS-1$
- } else {
- message = Policy.bind("CheckoutIntoOperation.targetIsPrunedFolder", remoteFolder.getName(), targetFolder.getFolderSyncInfo().getRepository()); //$NON-NLS-1$
- }
- return new CVSStatus(IStatus.ERROR, message);
- }
- }
- // Verify that no other folders in the local workspace are mapped to the remote folder
- IStatus status = validateUniqueMapping(remoteFolder, targetFolder, Policy.subMonitorFor(monitor, 10));
- if (!status.isOK()) return status;
- }
- }
- return OK;
- }
-
- /*
- * Return true if the given local folder is a direct descendant of it's local parent in
- * the repository as well
- */
- private boolean isRemoteChildOfParent(ICVSFolder targetFolder) throws CVSException {
- FolderSyncInfo localInfo = targetFolder.getFolderSyncInfo();
- if (localInfo == null) return false;
- FolderSyncInfo parentInfo = targetFolder.getParent().getFolderSyncInfo();
- if (parentInfo == null) return false;
- IPath childPath = new Path(null, localInfo.getRepository());
- IPath parentPath = new Path(null, parentInfo.getRepository());
- return parentPath.isPrefixOf(childPath);
- }
-
- /**
- * @param targetFolder
- * @return
- */
- private IContainer getLocalRoot(ICVSFolder targetFolder) throws CVSException {
- return targetFolder.getIResource().getProject();
- }
-
- /*
- * Ensure that there is no equivalent mapping alreay in the local workspace
- */
- private IStatus validateUniqueMapping(final ICVSRemoteFolder remoteFolder, final ICVSFolder targetFolder, IProgressMonitor iProgressMonitor) throws CVSException {
-
- final IContainer root = getLocalRoot(targetFolder);
- final FolderSyncInfo remoteInfo = remoteFolder.getFolderSyncInfo();
- if (remoteInfo.equals(FolderSyncInfo.VIRTUAL_DIRECTORY)) {
- // We can't really check the mapping ahead of time
- // so we'll let the operation continue
- return OK;
- }
- ICVSFolder cvsFolder = CVSWorkspaceRoot.getCVSFolderFor(root);
- try {
- cvsFolder.accept(new ICVSResourceVisitor() {
- public void visitFile(ICVSFile file) throws CVSException {
- // do nothing
- }
- public void visitFolder(ICVSFolder folder) throws CVSException {
- if (!folder.isCVSFolder()) return;
- IResource resource = folder.getIResource();
- if (resource == null) return;
- FolderSyncInfo info = folder.getFolderSyncInfo();
- if (info.isSameMapping(remoteInfo)) {
- throw new CVSException(Policy.bind("CheckoutIntoOperation.mappingAlreadyExists", //$NON-NLS-1$
- new Object[] {
- remoteFolder.getName(),
- targetFolder.getIResource().getFullPath().toString(),
- resource.getFullPath().toString()
- }));
- }
- folder.acceptChildren(this);
- }
- });
- } catch (CVSException e) {
- return e.getStatus();
- }
- return OK;
- }
-
- /*
- * Purge the local contents of the given folders
- */
- private IStatus scrubFolders(ICVSRemoteFolder remoteFolder, ICVSFolder[] targetFolders, IProgressMonitor monitor) throws CVSException {
- monitor.beginTask(null, 100 * targetFolders.length);
-
- // Prompt first before any work is done
- if (targetFolders.length > 1) {
- setInvolvesMultipleResources(true);
- }
- for (int i=0;icheckout(ICVSRemoteFolder, IProgressMonitor)
- * for each remote folder of the operation.
- * @param folders the remote folders for the operation
- * @param monitor the progress monitor
- * @throws CVSException if an error occured that should prevent the remaining
- * folders from being checked out
- */
- protected void checkout(ICVSRemoteFolder[] folders, IProgressMonitor monitor) throws CVSException {
- monitor.beginTask(null, folders.length * 100);
- for (int i = 0; i < folders.length; i++) {
- ICVSRemoteFolder folder = folders[i];
- IStatus result = checkout(folder, Policy.subMonitorFor(monitor, 100));
- collectStatus(result);
- Policy.checkCanceled(monitor);
- }
- monitor.done();
- }
-
- protected ICVSRemoteFolder[] getRemoteFolders() {
- return (ICVSRemoteFolder[])getRemoteResources();
- }
-
- /**
- * Checkout the selected remote folders in a form appropriate for the operation subclass.
- * @param folders
- * @param monitor
- */
- protected abstract IStatus checkout(ICVSRemoteFolder folder, IProgressMonitor monitor) throws CVSException;
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.operations.CVSOperation#canRunAsJob()
- */
- public boolean canRunAsJob() {
- return true;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.ui.TeamOperation#isKeepOneProgressServiceEntry()
- */
- public boolean isKeepOneProgressServiceEntry() {
- // Keep the last repository provider operation in the progress service
- return true;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.ui.TeamOperation#getGotoAction()
- */
- protected IAction getGotoAction() {
- return getShowConsoleAction();
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/CheckoutProjectOperation.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/CheckoutProjectOperation.java
deleted file mode 100644
index 3fc09d18d..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/CheckoutProjectOperation.java
+++ /dev/null
@@ -1,481 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.operations;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.*;
-
-import org.eclipse.core.resources.*;
-import org.eclipse.core.runtime.*;
-import org.eclipse.core.runtime.jobs.ISchedulingRule;
-import org.eclipse.core.runtime.jobs.MultiRule;
-import org.eclipse.team.core.RepositoryProvider;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.core.client.*;
-import org.eclipse.team.internal.ccvs.core.client.Command.LocalOption;
-import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot;
-import org.eclipse.team.internal.ccvs.core.resources.EclipseSynchronizer;
-import org.eclipse.team.internal.ccvs.core.syncinfo.FolderSyncInfo;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.ui.IWorkbenchPart;
-/**
- * This class acts as an abstract class for checkout operations.
- * It provides a few common methods.
- */
-public abstract class CheckoutProjectOperation extends CheckoutOperation {
-
- private String targetLocation;
-
- public CheckoutProjectOperation(IWorkbenchPart part, ICVSRemoteFolder[] remoteFolders, String targetLocation) {
- super(part, remoteFolders);
- this.targetLocation = targetLocation;
- }
-
- /**
- * Create and open the project, using a custom location if there is one.
- *
- * @param project
- * @param monitor
- * @throws CVSException
- */
- protected void createAndOpenProject(IProject project, IProgressMonitor monitor) throws CVSException {
- try {
- monitor.beginTask(null, 5);
- IProjectDescription desc = getDescriptionFor(project);
- if (project.exists()) {
- if (desc != null) {
- project.move(desc, true, Policy.subMonitorFor(monitor, 3));
- }
- } else {
- if (desc == null) {
- // create in default location
- project.create(Policy.subMonitorFor(monitor, 3));
- } else {
- // create in some other location
- project.create(desc, Policy.subMonitorFor(monitor, 3));
- }
- }
- if (!project.isOpen()) {
- project.open(Policy.subMonitorFor(monitor, 2));
- }
- } catch (CoreException e) {
- throw CVSException.wrapException(e);
- } finally {
- monitor.done();
- }
- }
-
- protected IProjectDescription getDescriptionFor(IProject project) {
- if (targetLocation == null) return null;
- String projectName = project.getName();
- IProjectDescription description = ResourcesPlugin.getWorkspace().newProjectDescription(projectName);
- description.setLocation(getTargetLocationFor(project));
- return description;
- }
-
- /**
- * Return the target location where the given project should be located or
- * null if the default location should be used.
- *
- * @param project
- */
- protected IPath getTargetLocationFor(IProject project) {
- if (targetLocation == null) return null;
- return new Path(targetLocation);
- }
-
- protected String getRemoteModuleName(ICVSRemoteFolder resource) {
- String moduleName;
- if (resource.isDefinedModule()) {
- moduleName = resource.getName();
- } else {
- moduleName = resource.getRepositoryRelativePath();
- }
- return moduleName;
- }
-
- protected IStatus checkout(final ICVSRemoteFolder resource, IProject project, IProgressMonitor pm) throws CVSException {
- // Get the location and the workspace root
- ICVSFolder root = CVSWorkspaceRoot.getCVSFolderFor(ResourcesPlugin.getWorkspace().getRoot());
- ICVSRepositoryLocation repository = resource.getRepository();
- // Open a connection session to the repository
- final Session session = new Session(repository, root);
- pm.beginTask(null, 100);
- Policy.checkCanceled(pm);
- session.open(Policy.subMonitorFor(pm, 5), false /* read-only */);
- try {
-
- // Check to see if the entire repo is being checked out.
- if (project == null && resource.getName().equals(".")) { //$NON-NLS-1$
- // No project was specified but we need on for this to work
- String name = new Path(null, resource.getRepository().getRootDirectory()).lastSegment();
- project = ResourcesPlugin.getWorkspace().getRoot().getProject(name);
- }
-
- // Determine the local target projects (either the project provider or the module expansions)
- // Note: Module expansions can be run over the same connection as a checkout
- final IProject[] targetProjects = determineProjects(session, resource, project, Policy.subMonitorFor(pm, 5));
- if (targetProjects == null) {
- // An error occurred and was recorded so return it
- return getLastError();
- } else if (targetProjects.length == 0) {
- return OK;
- }
-
- final boolean sendModuleName = project != null;
- final IStatus[] result = new IStatus[] { null };
- ISchedulingRule schedulingRule = getSchedulingRule(targetProjects);
- if (schedulingRule instanceof IResource && ((IResource)schedulingRule).getType() == IResource.ROOT) {
- // One of the projects is mapped to a provider that locks the workspace.
- // Just return the workspace root rule
- try {
- Platform.getJobManager().beginRule(schedulingRule, pm);
- result[0] = performCheckout(session, resource, targetProjects, sendModuleName, Policy.subMonitorFor(pm, 90));
- } finally {
- Platform.getJobManager().endRule(schedulingRule);
- }
- } else {
- EclipseSynchronizer.getInstance().run(schedulingRule, new ICVSRunnable() {
- public void run(IProgressMonitor monitor) throws CVSException {
- result[0] = performCheckout(session, resource, targetProjects, sendModuleName, monitor);
- }
- }, Policy.subMonitorFor(pm, 90));
- }
- return result[0];
- } catch (CVSException e) {
- // An exception occurred either during the module-expansion or checkout
- // Since we were able to make a connection, return the status so the
- // checkout of any other modules can proceed
- return e.getStatus();
- } finally {
- session.close();
- pm.done();
- }
- }
-
- private ISchedulingRule getSchedulingRule(IProject[] projects) {
- if (projects.length == 1) {
- return ResourcesPlugin.getWorkspace().getRuleFactory().modifyRule(projects[0]);
- } else {
- Set rules = new HashSet();
- for (int i = 0; i < projects.length; i++) {
- ISchedulingRule modifyRule = ResourcesPlugin.getWorkspace().getRuleFactory().modifyRule(projects[i]);
- if (modifyRule instanceof IResource && ((IResource)modifyRule).getType() == IResource.ROOT) {
- // One of the projects is mapped to a provider that locks the workspace.
- // Just return the workspace root rule
- return modifyRule;
- }
- rules.add(modifyRule);
- }
- return new MultiRule((ISchedulingRule[]) rules.toArray(new ISchedulingRule[rules.size()]));
- }
- }
-
- /* private */ IStatus performCheckout(Session session, ICVSRemoteFolder resource, IProject[] targetProjects, boolean sendModuleName, IProgressMonitor pm) throws CVSException {
- // Set the task name of the progress monitor to let the user know
- // which project we're on. Don't use subTask since that will be
- // changed when the checkout command is run.
- String taskName;
- if (targetProjects.length == 1) {
- taskName = Policy.bind("CheckoutProjectOperation.8", resource.getName(), targetProjects[0].getName()); //$NON-NLS-1$
- } else {
- taskName = Policy.bind("CheckoutProjectOperation.9", resource.getName(), String.valueOf(targetProjects.length)); //$NON-NLS-1$
- }
- pm.beginTask(taskName, 100);
- pm.setTaskName(taskName);
- Policy.checkCanceled(pm);
- try {
- // Scrub the local contents if requested
- if (performScrubProjects()) {
- IStatus result = scrubProjects(resource, targetProjects, Policy.subMonitorFor(pm, 9));
- if (!result.isOK()) {
- return result;
- }
- }
-
- // Determine if t
- // in which case we'll use -d to flatten the directory structure.
- // Only flatten the directory structure if the folder is not a root folder
- IProject project = null;
- if (targetProjects.length == 1) {
- if (sendModuleName) {
- project = targetProjects[0];
- } else if (targetProjects[0].getName().equals(resource.getName())) {
- // The target project has the same name as the remote folder.
- // If the repository relative path has multiple segments
- // we will want to flatten the directory structure
- String path = resource.getRepositoryRelativePath();
- if (!path.equals(FolderSyncInfo.VIRTUAL_DIRECTORY)
- && new Path(null, path).segmentCount() > 1) {
- project = targetProjects[0];
- }
- }
- }
-
- try {
- // Build the local options
- List localOptions = new ArrayList();
- // Add the option to load into the target project if one was supplied
- if (project != null) {
- localOptions.add(Checkout.makeDirectoryNameOption(project.getName()));
- }
- // Prune empty directories if pruning enabled
- if (CVSProviderPlugin.getPlugin().getPruneEmptyDirectories())
- localOptions.add(Checkout.PRUNE_EMPTY_DIRECTORIES);
- // Add the options related to the CVSTag
- CVSTag tag = resource.getTag();
- if (tag == null) {
- // A null tag in a remote resource indicates HEAD
- tag = CVSTag.DEFAULT;
- }
- localOptions.add(Update.makeTagOption(tag));
-
- // Perform the checkout
- IStatus status = Command.CHECKOUT.execute(session,
- Command.NO_GLOBAL_OPTIONS,
- (LocalOption[])localOptions.toArray(new LocalOption[localOptions.size()]),
- new String[]{getRemoteModuleName(resource)},
- null,
- Policy.subMonitorFor(pm, 90));
- return status;
- } finally {
- // Map the projects if they have CVS meta infomation even if a failure occurred
- refreshProjects(targetProjects, Policy.subMonitorFor(pm, 1));
- }
- } finally {
- pm.done();
- }
- }
-
- /*
- * Determine the workspace project(s) that will be affected by the checkout.
- * If project is not null, then it will be the only target project of the checkout.
- * Otherwise, the remote folder could expand to multiple projects.
- *
- * If the remote resource is a folder which is not a root folder (i.e. a/b/c),
- * then the target project will be the last segment (i.e. c).
- */
- private IProject[] determineProjects(Session session, final ICVSRemoteFolder remoteFolder, IProject project, IProgressMonitor pm) throws CVSException {
-
- Set targetProjectSet = new HashSet();
- String moduleName = getRemoteModuleName(remoteFolder);
- if (project == null) {
-
- // Fetch the module expansions
- Policy.checkCanceled(pm);
- IStatus status = Request.EXPAND_MODULES.execute(session, new String[] {moduleName}, pm);
- if (status.getCode() == CVSStatus.SERVER_ERROR) {
- collectStatus(status);
- return null;
- }
-
- // Convert the module expansions to local projects
- String[] expansions = session.getModuleExpansions();
- if (expansions.length == 1 && expansions[0].equals(moduleName)) {
- // For a remote folder, use the last segment as the project to be created
- String lastSegment = new Path(null, expansions[0]).lastSegment();
- targetProjectSet.add(ResourcesPlugin.getWorkspace().getRoot().getProject(lastSegment));
- } else {
- for (int j = 0; j < expansions.length; j++) {
- targetProjectSet.add(ResourcesPlugin.getWorkspace().getRoot().getProject(new Path(null, expansions[j]).segment(0)));
- }
- }
-
- } else {
- targetProjectSet.add(project);
- }
-
- // Return the local projects affected by the checkout
- IProject[] targetProjects = (IProject[]) targetProjectSet.toArray(new IProject[targetProjectSet.size()]);
- return targetProjects;
- }
-
- /**
- * Return true if the target projects should be scrubbed before the checkout occurs.
- * Default is to scrub the projects. Can be overridden by subclasses.
- */
- protected boolean performScrubProjects() {
- return true;
- }
-
- /*
- * This method is invoked to scrub the local projects that are the check out target of
- * a single remote module.
- */
- private IStatus scrubProjects(ICVSRemoteFolder remoteFolder, IProject[] projects, IProgressMonitor monitor) throws CVSException {
- if (projects == null) {
- monitor.done();
- return OK;
- }
- // Prompt first before any work is done
- if (projects.length > 1) {
- setInvolvesMultipleResources(true);
- }
- for (int i=0;ihasMetaFile
- * static method of by executing the operation and then checking metaFileExists
- */
-public class HasProjectMetaFileOperation extends CVSOperation {
-
- private ICVSRemoteFolder remoteFolder;
- private boolean metaFileExists;
-
- public static boolean hasMetaFile(IWorkbenchPart part, ICVSRemoteFolder remoteFolder) throws InvocationTargetException, InterruptedException {
- HasProjectMetaFileOperation op = new HasProjectMetaFileOperation(part, remoteFolder);
- op.run();
- return op.metaFileExists();
- }
-
- public HasProjectMetaFileOperation(IWorkbenchPart part, ICVSRemoteFolder remoteFolder) {
- super(part);
- this.remoteFolder = remoteFolder;
- }
-
- /*
- * Return true if the provided remote folder contains a valid meta-file
- * (i.e. .project file).
- */
- private boolean hasMetaFile(ICVSRemoteFolder folder, IProgressMonitor monitor) throws CVSException {
-
- // make a copy of the folder so that we will not effect the original folder when we refetch the members
- // TODO: this is a strange thing to need to do. We shold fix this.
- folder = (ICVSRemoteFolder)folder.forTag(remoteFolder.getTag());
-
- try {
- folder.members(monitor);
- } catch (TeamException e) {
- throw CVSException.wrapException(e);
- }
- // Check for the existance of the .project file
- try {
- folder.getFile(".project"); //$NON-NLS-1$
- return true;
- } catch (TeamException e) {
- // We couldn't retrieve the meta file so assume it doesn't exist
- }
- return false;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.operations.CVSOperation#execute(org.eclipse.core.runtime.IProgressMonitor)
- */
- public void execute(IProgressMonitor monitor) throws CVSException, InterruptedException {
- metaFileExists = hasMetaFile(remoteFolder, monitor);
- }
-
- /**
- * Return true if the meta file exists remotely. This method should only be invoked
- * after the operation has been executed;
- * @return
- */
- public boolean metaFileExists() {
- return metaFileExists;
- }
-
- protected String getTaskName() {
- return Policy.bind("HasProjectMetaFile.taskName"); //$NON-NLS-1$
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.operations.CVSOperation#canRunAsJob()
- */
- public boolean canRunAsJob() {
- // This operation should never be run in the background.
- return false;
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/ITagOperation.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/ITagOperation.java
deleted file mode 100644
index 493126987..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/ITagOperation.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.operations;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.team.internal.ccvs.core.CVSTag;
-import org.eclipse.team.internal.ccvs.core.ICVSResource;
-import org.eclipse.team.internal.ccvs.ui.tags.TagSource;
-
-public interface ITagOperation {
- public abstract CVSTag getTag();
- public abstract void setTag(CVSTag tag);
- public abstract void run() throws InvocationTargetException, InterruptedException;
- public abstract ICVSResource[] getCVSResources();
- public abstract void moveTag();
- public abstract void recurse();
- public abstract TagSource getTagSource();
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/OverrideAndUpdateOperation.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/OverrideAndUpdateOperation.java
deleted file mode 100644
index c5bb066f3..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/OverrideAndUpdateOperation.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.operations;
-
-import java.util.*;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.ui.IWorkbenchPart;
-
-/**
- * A specialized Replace operation that will update managed resources and
- * unmanaged resources that are conflicting additions (so that the remote is fetched)
- */
-public class OverrideAndUpdateOperation extends ReplaceOperation {
-
- private IResource[] conflictingAdditions;
-
- public OverrideAndUpdateOperation(IWorkbenchPart part, IResource[] allResources, IResource[] conflictingAdditions, CVSTag tag, boolean recurse) {
- super(part, allResources, tag, recurse);
- this.conflictingAdditions = conflictingAdditions;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.operations.ReplaceOperation#getResourcesToUpdate(org.eclipse.team.internal.ccvs.core.ICVSResource[])
- */
- protected ICVSResource[] getResourcesToUpdate(ICVSResource[] resources) throws CVSException {
- // Add the conflicting additions to the list of resources to update
- Set update = new HashSet();
- ICVSResource[] conflicts = getCVSArguments(conflictingAdditions);
- update.addAll(Arrays.asList(conflicts));
- update.addAll(Arrays.asList(super.getResourcesToUpdate(resources)));
- return (ICVSResource[]) update.toArray(new ICVSResource[update.size()]);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.operations.RepositoryProviderOperation#updateWorkspaceSubscriber(org.eclipse.team.internal.ccvs.core.CVSTeamProvider, org.eclipse.team.internal.ccvs.core.ICVSResource[], org.eclipse.core.runtime.IProgressMonitor)
- */
- protected void updateWorkspaceSubscriber(CVSTeamProvider provider, ICVSResource[] resources, IProgressMonitor monitor) {
- // No need to update the workspace subscriber since we know this operation will do it properly by itself
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/ReconcileProjectOperation.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/ReconcileProjectOperation.java
deleted file mode 100644
index 875b30376..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/ReconcileProjectOperation.java
+++ /dev/null
@@ -1,175 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.operations;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.Date;
-
-import org.eclipse.core.resources.*;
-import org.eclipse.core.runtime.*;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.synchronize.SyncInfoFilter.ContentComparisonSyncInfoFilter;
-import org.eclipse.team.core.variants.IResourceVariant;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot;
-import org.eclipse.team.internal.ccvs.core.syncinfo.MutableResourceSyncInfo;
-import org.eclipse.team.internal.ccvs.core.syncinfo.ResourceSyncInfo;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-
-/**
- * Reconcile an existing unshared local project with an existing remote folder.
- */
-public class ReconcileProjectOperation extends ShareProjectOperation {
-
- private ICVSRemoteFolder folder;
- private ContentComparisonSyncInfoFilter contentCompare = new ContentComparisonSyncInfoFilter(false);
- private CVSWorkspaceSubscriber subscriber = CVSProviderPlugin.getPlugin().getCVSWorkspaceSubscriber();
-
- public ReconcileProjectOperation(Shell shell, IProject project, ICVSRemoteFolder folder) {
- super(shell, folder.getRepository(), project, folder.getRepositoryRelativePath());
- this.folder = folder;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.operations.CVSOperation#getTaskName()
- */
- protected String getTaskName() {
- return Policy.bind("ReconcileProjectOperation.0", getProject().getName(), folder.getRepositoryRelativePath()); //$NON-NLS-1$
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.operations.ShareProjectOperation#createRemoteFolder(org.eclipse.core.runtime.IProgressMonitor)
- */
- protected ICVSRemoteFolder createRemoteFolder(IProgressMonitor monitor) throws CVSException {
- // The folder already exists so just return the handle
- return folder;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.operations.ShareProjectOperation#mapProjectToRemoteFolder(org.eclipse.team.internal.ccvs.core.ICVSRemoteFolder, org.eclipse.core.runtime.IProgressMonitor)
- */
- protected void mapProjectToRemoteFolder(ICVSRemoteFolder remote, IProgressMonitor monitor) throws TeamException {
- // Map the project
- monitor.beginTask(null, 100);
- super.mapProjectToRemoteFolder(remote, Policy.subMonitorFor(monitor, 10));
- // Reconcile the sync info
- reconcileSyncInfo(Policy.subMonitorFor(monitor, 90));
- monitor.done();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.operations.CVSOperation#execute(org.eclipse.core.runtime.IProgressMonitor)
- */
- protected void reconcileSyncInfo(IProgressMonitor monitor) throws CVSException {
- try {
- monitor.beginTask(null, 100);
- // Fetch the entire remote tree
- ICVSRemoteFolder remote = CheckoutToRemoteFolderOperation.checkoutRemoteFolder(getPart(), folder, Policy.subMonitorFor(monitor, 80));
- // Traverse the tree and populate the workspace base or remote
- // with the sync info depending on file contents
- populateWorkspace(remote, Policy.subMonitorFor(monitor, 20));
- } catch (InvocationTargetException e) {
- throw CVSException.wrapException(e);
- } catch (TeamException e) {
- throw CVSException.wrapException(e);
- } catch (InterruptedException e) {
- throw new OperationCanceledException();
- } finally {
- monitor.done();
- }
-
- }
-
- private void populateWorkspace(final ICVSRemoteFolder remote, IProgressMonitor monitor) throws CVSException {
- CVSWorkspaceRoot.getCVSFolderFor(getProject()).run(new ICVSRunnable() {
- public void run(IProgressMonitor monitor) throws CVSException {
- populateWorkspace(getProject(), remote, monitor);
- }
- }, monitor);
-
- }
-
- /* private */ void populateWorkspace(IResource resource, ICVSRemoteResource remote, IProgressMonitor monitor) throws CVSException {
- try {
- if (resource.getType() == IResource.FILE) {
- if (remote.isContainer()) {
- CVSUIPlugin.log(IStatus.ERROR, Policy.bind("ReconcileProjectOperation.1", resource.getFullPath().toString(), remote.getRepositoryRelativePath()), null); //$NON-NLS-1$
- } else {
- IFile file = (IFile)resource;
- IResourceVariant variant = (IResourceVariant)remote;
- if (file.exists()
- && variant != null
- && contentCompare.compareContents(file, variant, monitor)) {
- // The contents are the same so populate the local workspace
- // with the remote sync info and make the file in-sync
- makeInSync(file, remote, monitor);
- } else {
- // Would like to put the bytes in the remote but this
- // is complicated due to subscriber events.
- // We'll refresh the subcriber at the end.
- }
- }
- } else {
- if (!remote.isContainer()) {
- CVSUIPlugin.log(IStatus.ERROR, Policy.bind("ReconcileProjectOperation.2", resource.getFullPath().toString(), remote.getRepositoryRelativePath()), null); //$NON-NLS-1$
- } else {
- // Map the local folder to the remote folder.
- // (Note that this will make phantoms for non-exisiting local folders)
- ICVSFolder folder = (ICVSFolder)CVSWorkspaceRoot.getCVSResourceFor(resource);
- folder.setFolderSyncInfo(((ICVSFolder)remote).getFolderSyncInfo());
- // Traverse the children of the remote
- // (The members were prefetched).
- ICVSRemoteResource[] members = remote.members(monitor);
- for (int i = 0; i < members.length; i++) {
- ICVSRemoteResource member = members[i];
- populateWorkspace(getLocalChild((IContainer)resource, member), member, monitor);
- }
- }
- }
- } catch (TeamException e) {
- throw CVSException.wrapException(e);
- }
- }
-
- /*
- * Get the local resource handle for corresponding to the remote resource
- */
- private IResource getLocalChild(IContainer parent, ICVSRemoteResource member) {
- IResource resource = parent.findMember(member.getName());
- if (resource == null) {
- if (member.isContainer()) {
- resource = parent.getFolder(new Path(null, member.getName()));
- } else {
- resource = parent.getFile(new Path(null, member.getName()));
- }
- }
- return resource;
- }
-
- /*
- * Make the file in-sync with its corresponding remote.
- */
- private void makeInSync(IFile file, ICVSRemoteResource remote, IProgressMonitor monitor) throws CVSException {
- ICVSFile cvsFile = CVSWorkspaceRoot.getCVSFileFor(file);
- ResourceSyncInfo info = remote.getSyncInfo();
- Date modTime = info.getTimeStamp();
- if (modTime != null) {
- cvsFile.setTimeStamp(modTime);
- }
- modTime = cvsFile.getTimeStamp();
- MutableResourceSyncInfo newInfoWithTimestamp = info.cloneMutable();
- newInfoWithTimestamp.setTimeStamp(modTime);
- cvsFile.setSyncInfo(newInfoWithTimestamp, ICVSFile.CLEAN);
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/RemoteCompareOperation.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/RemoteCompareOperation.java
deleted file mode 100644
index 3c5fb84ff..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/RemoteCompareOperation.java
+++ /dev/null
@@ -1,381 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.operations;
-
-import java.util.*;
-
-import org.eclipse.compare.CompareUI;
-import org.eclipse.core.runtime.*;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.core.client.*;
-import org.eclipse.team.internal.ccvs.core.client.Command.LocalOption;
-import org.eclipse.team.internal.ccvs.core.client.listeners.RDiffSummaryListener;
-import org.eclipse.team.internal.ccvs.core.resources.*;
-import org.eclipse.team.internal.ccvs.core.syncinfo.ResourceSyncInfo;
-import org.eclipse.team.internal.ccvs.core.util.Assert;
-import org.eclipse.team.internal.ccvs.ui.*;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ui.TeamUIPlugin;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-
-/**
- * Compare the two versions of given remote folders obtained from the two tags specified.
- */
-public class RemoteCompareOperation extends RemoteOperation {
-
- private CompareTreeBuilder builder;
- private CVSTag left, right;
-
- /**
- * Helper class for builder and comparing the resource trees
- */
- public static class CompareTreeBuilder implements RDiffSummaryListener.IFileDiffListener {
- private ICVSRepositoryLocation location;
- private RemoteFolderTree leftTree, rightTree;
- private CVSTag left, right;
-
- public CompareTreeBuilder(ICVSRepositoryLocation location, CVSTag left, CVSTag right) {
- this.left = left;
- this.right = right;
- this.location = location;
- reset();
- }
-
- public RemoteFolderTree getLeftTree() {
- return leftTree;
- }
- public RemoteFolderTree getRightTree() {
- return rightTree;
- }
-
- /**
- * Reset the builder to prepare for a new build
- */
- public void reset() {
- leftTree = new RemoteFolderTree(null, location, ICVSRemoteFolder.REPOSITORY_ROOT_FOLDER_NAME, left);
- leftTree.setChildren(new ICVSRemoteResource[0]);
- rightTree = new RemoteFolderTree(null, location, ICVSRemoteFolder.REPOSITORY_ROOT_FOLDER_NAME, right);
- rightTree.setChildren(new ICVSRemoteResource[0]);
- }
-
- /**
- * Cache the contents for the files that are about to be compares
- * @throws CVSException
- */
- public void cacheContents(IProgressMonitor monitor) throws CVSException {
- String[] overlappingFilePaths = getOverlappingFilePaths();
- if (overlappingFilePaths.length > 0) {
- monitor.beginTask(null, 100);
- fetchFileContents(leftTree, overlappingFilePaths, Policy.subMonitorFor(monitor, 50));
- fetchFileContents(rightTree, overlappingFilePaths, Policy.subMonitorFor(monitor, 50));
- monitor.done();
- }
- }
-
- /**
- * Open the comparison in a compare editor
- */
- public void openCompareEditor(final IWorkbenchPage page, final String title, final String toolTip) {
- if (leftTree == null || rightTree == null) return;
- Display.getDefault().asyncExec(new Runnable() {
- public void run() {
- CompareUI.openCompareEditorOnPage(
- new CVSCompareEditorInput(title, toolTip, new ResourceEditionNode(leftTree), new ResourceEditionNode(rightTree)), page);
- }
- });
- }
-
- /**
- * Add the predecessor to the left tree and the remote to the right tree.
- * @param predecessor
- * @param remote
- */
- public void addToTrees(ICVSRemoteFile predecessor, ICVSRemoteFile remote) {
- if (remote != null) {
- try {
- Path filePath = new Path(null, remote.getRepositoryRelativePath());
- addFile(rightTree, right, filePath, remote.getRevision());
- getFolder(leftTree, left, filePath.removeLastSegments(1), Path.EMPTY);
- } catch (TeamException e) {
- CVSUIPlugin.log(e);
- }
- }
- if (predecessor != null) {
- try {
- Path filePath = new Path(null, predecessor.getRepositoryRelativePath());
- addFile(leftTree, left, filePath, predecessor.getRevision());
- getFolder(rightTree, right, filePath.removeLastSegments(1), Path.EMPTY);
- } catch (TeamException e) {
- CVSUIPlugin.log(e);
- }
- }
- }
-
- private void addFile(RemoteFolderTree tree, CVSTag tag, Path filePath, String revision) throws CVSException {
- RemoteFolderTree parent = (RemoteFolderTree)getFolder(tree, tag, filePath.removeLastSegments(1), Path.EMPTY);
- String name = filePath.lastSegment();
- ICVSRemoteFile file = new RemoteFile(parent, 0, name, revision, null, getTag(revision, tag));
- addChild(parent, file);
- }
-
- private CVSTag getTag(String revision, CVSTag tag) {
- if (tag == null) {
- tag = new CVSTag(revision, CVSTag.VERSION);
- }
- return tag;
- }
-
- /*
- * Get the folder at the given path in the given tree, creating any missing folders as needed.
- */
- private ICVSRemoteFolder getFolder(RemoteFolderTree tree, CVSTag tag, IPath remoteFolderPath, IPath parentPath) throws CVSException {
- if (remoteFolderPath.segmentCount() == 0) return tree;
- String name = remoteFolderPath.segment(0);
- ICVSResource child;
- IPath childPath = parentPath.append(name);
- if (tree.childExists(name)) {
- child = tree.getChild(name);
- } else {
- child = new RemoteFolderTree(tree, tree.getRepository(), childPath.toString(), tag);
- ((RemoteFolderTree)child).setChildren(new ICVSRemoteResource[0]);
- addChild(tree, (ICVSRemoteResource)child);
- }
- return getFolder((RemoteFolderTree)child, tag, remoteFolderPath.removeFirstSegments(1), childPath);
- }
-
- private void addChild(RemoteFolderTree tree, ICVSRemoteResource resource) {
- ICVSRemoteResource[] children = tree.getChildren();
- ICVSRemoteResource[] newChildren;
- if (children == null) {
- newChildren = new ICVSRemoteResource[] { resource };
- } else {
- newChildren = new ICVSRemoteResource[children.length + 1];
- System.arraycopy(children, 0, newChildren, 0, children.length);
- newChildren[children.length] = resource;
- }
- tree.setChildren(newChildren);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.core.client.listeners.RDiffSummaryListener.IFileDiffListener#fileDiff(java.lang.String, java.lang.String, java.lang.String)
- */
- public void fileDiff(String remoteFilePath, String leftRevision, String rightRevision) {
- try {
- addFile(rightTree, right, new Path(null, remoteFilePath), rightRevision);
- } catch (CVSException e) {
- CVSUIPlugin.log(e);
- }
- try {
- addFile(leftTree, left, new Path(null, remoteFilePath), leftRevision);
- } catch (CVSException e) {
- CVSUIPlugin.log(e);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.core.client.listeners.RDiffSummaryListener.IFileDiffListener#newFile(java.lang.String, java.lang.String)
- */
- public void newFile(String remoteFilePath, String rightRevision) {
- try {
- addFile(rightTree, right, new Path(null, remoteFilePath), rightRevision);
- } catch (CVSException e) {
- CVSUIPlugin.log(e);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.core.client.listeners.RDiffSummaryListener.IFileDiffListener#deletedFile(java.lang.String)
- */
- public void deletedFile(String remoteFilePath, String leftRevision) {
- // The leftRevision may be null in which case the tag is used
- try {
- addFile(leftTree, left, new Path(null, remoteFilePath), leftRevision);
- } catch (CVSException e) {
- CVSUIPlugin.log(e);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.core.client.listeners.RDiffSummaryListener.IFileDiffListener#directory(java.lang.String)
- */
- public void directory(String remoteFolderPath) {
- try {
- getFolder(leftTree, left, new Path(null, remoteFolderPath), Path.EMPTY);
- } catch (CVSException e) {
- CVSUIPlugin.log(e);
- }
- try {
- getFolder(rightTree, right, new Path(null, remoteFolderPath), Path.EMPTY);
- } catch (CVSException e) {
- CVSUIPlugin.log(e);
- }
- }
-
- private String[] getOverlappingFilePaths() {
- String[] leftFiles = getFilePaths(leftTree);
- String[] rightFiles = getFilePaths(rightTree);
- Set set = new HashSet();
- for (int i = 0; i < rightFiles.length; i++) {
- String rightFile = rightFiles[i];
- for (int j = 0; j < leftFiles.length; j++) {
- String leftFile = leftFiles[j];
- if (leftFile.equals(rightFile)) {
- set.add(leftFile);
- }
- }
- }
- return (String[]) set.toArray(new String[set.size()]);
- }
-
- private void fetchFileContents(RemoteFolderTree tree, String[] overlappingFilePaths, IProgressMonitor monitor) throws CVSException {
- FileContentCachingService.fetchFileContents(tree, overlappingFilePaths, monitor);
- }
-
- private String[] getFilePaths(RemoteFolderTree tree) {
- ICVSRemoteResource[] children = tree.getChildren();
- List result = new ArrayList();
- for (int i = 0; i < children.length; i++) {
- ICVSRemoteResource resource = children[i];
- if (resource.isContainer()) {
- result.addAll(Arrays.asList(getFilePaths((RemoteFolderTree)resource)));
- } else {
- result.add(resource.getRepositoryRelativePath());
- }
- }
- return (String[]) result.toArray(new String[result.size()]);
- }
- }
-
- public static CVSTag getTag(ICVSRemoteResource resource) throws CVSException {
- CVSTag tag = null;
- try {
- if (resource.isContainer()) {
- tag = ((ICVSRemoteFolder)resource).getTag();
- } else {
- ICVSRemoteFile file = (ICVSRemoteFile)resource;
- String revision = file.getRevision();
- if (revision.equals(ResourceSyncInfo.ADDED_REVISION)) {
- ResourceSyncInfo info =file.getSyncInfo();
- if (info != null) tag = info.getTag();
- } else {
- tag = new CVSTag(revision, CVSTag.VERSION);
- }
- }
- } catch (TeamException e) {
- throw CVSException.wrapException(e);
- }
- if (tag == null) tag = CVSTag.DEFAULT;
- return tag;
- }
-
- /**
- * Compare two versions of the given remote resource.
- * @param shell
- * @param remoteResource the resource whose tags are being compared
- * @param left the earlier tag (not null)
- * @param right the later tag (not null)
- */
- public RemoteCompareOperation(IWorkbenchPart part, ICVSRemoteResource remoteResource, CVSTag tag) {
- super(part, new ICVSRemoteResource[] {remoteResource});
- Assert.isNotNull(tag);
- this.right = tag;
- try {
- this.left = getTag(remoteResource);
- } catch (CVSException e) {
- // This shouldn't happen but log it just in case
- CVSProviderPlugin.log(e);
- }
- if (this.left == null) {
- this.left = CVSTag.DEFAULT;
- }
- builder = new CompareTreeBuilder(remoteResource.getRepository(), left, right);
- }
-
- /*
- * This command only supports the use of a single resource
- */
- private ICVSRemoteResource getRemoteResource() {
- return getRemoteResources()[0];
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.operations.CVSOperation#execute(org.eclipse.core.runtime.IProgressMonitor)
- */
- protected void execute(IProgressMonitor monitor) throws CVSException {
- boolean fetchContents = CVSUIPlugin.getPlugin().getPluginPreferences().getBoolean(ICVSUIConstants.PREF_CONSIDER_CONTENTS);
- monitor.beginTask(getTaskName(), 50 + (fetchContents ? 100 : 0));
- try {
- ICVSRemoteResource resource = getRemoteResource();
- IStatus status = buildTrees(resource, Policy.subMonitorFor(monitor, 50));
- if (status.isOK() && fetchContents) {
- builder.cacheContents(Policy.subMonitorFor(monitor, 100));
- }
- collectStatus(status);
- openCompareEditor(builder);
- } finally {
- monitor.done();
- }
- }
-
- /**
- * This method is here to allow subclasses to override
- */
- protected void openCompareEditor(CompareTreeBuilder builder) {
- builder.openCompareEditor(getTargetPage(), null, null);
- }
-
- /*
- * Build the two trees uses the reponses from "cvs rdiff -s ...".
- */
- private IStatus buildTrees(ICVSRemoteResource resource, IProgressMonitor monitor) throws CVSException {
- // Initialize the resulting trees
- builder.reset();
- Command.QuietOption oldOption= CVSProviderPlugin.getPlugin().getQuietness();
- Session session = new Session(resource.getRepository(), builder.getLeftTree(), false);
- try {
- monitor.beginTask(getTaskName(), 100);
- CVSProviderPlugin.getPlugin().setQuietness(Command.VERBOSE);
- session.open(Policy.subMonitorFor(monitor, 10));
- IStatus status = Command.RDIFF.execute(session,
- Command.NO_GLOBAL_OPTIONS,
- getLocalOptions(),
- new ICVSResource[] { resource },
- new RDiffSummaryListener(builder),
- Policy.subMonitorFor(monitor, 90));
- return status;
- } finally {
- try {
- session.close();
- } finally {
- CVSProviderPlugin.getPlugin().setQuietness(oldOption);
- }
- monitor.done();
- }
- }
-
- private LocalOption[] getLocalOptions() {
- return new LocalOption[] {RDiff.SUMMARY, RDiff.makeTagOption(left), RDiff.makeTagOption(right)};
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.operations.CVSOperation#getTaskName()
- */
- protected String getTaskName() {
- return Policy.bind("RemoteCompareOperation.0", new Object[] {left.getName(), right.getName(), getRemoteResource().getRepositoryRelativePath()}); //$NON-NLS-1$
- }
-
- protected IWorkbenchPage getTargetPage() {
- return TeamUIPlugin.getActivePage();
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/RemoteLogOperation.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/RemoteLogOperation.java
deleted file mode 100644
index b2ad792ce..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/RemoteLogOperation.java
+++ /dev/null
@@ -1,282 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.operations;
-
-import java.util.*;
-
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.core.client.*;
-import org.eclipse.team.internal.ccvs.core.client.listeners.*;
-import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot;
-import org.eclipse.team.internal.ccvs.core.util.Util;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.ui.IWorkbenchPart;
-
-/**
- * Performs an rlog on the resources and caches the results.
- */
-public class RemoteLogOperation extends RepositoryLocationOperation {
-
- private RLog rlog = new RLog();
- private CVSTag tag1;
- private CVSTag tag2;
- private LogEntryCache entryCache;
-
- /**
- * A log entry cache that can be shared by multiple instances of the
- * remote log operation.
- */
- public static class LogEntryCache implements ILogEntryListener {
-
- /*
- * Cache of all log entries
- */
- private Map entries = new HashMap(); /* Map String:remoteFilePath->Map (String:revision -> ILogEntry) */
-
- private Map internalGetLogEntries(String path) {
- return (Map)entries.get(path);
- }
-
- /**
- * Return all the log entries at the given path
- * @param path the file path
- * @return the log entries for the file
- */
- public ILogEntry[] getLogEntries(String path) {
- Map map = internalGetLogEntries(path);
- return (ILogEntry[]) map.values().toArray(new ILogEntry[map.values().size()]);
- }
-
- private ILogEntry internalGetLogEntry(String path, String revision) {
- Map fileEntries = internalGetLogEntries(path);
- if (fileEntries != null) {
- return (ILogEntry)fileEntries.get(revision);
- }
- return null;
- }
-
- public String[] getCachedFilePaths() {
- return (String[]) entries.keySet().toArray(new String[entries.size()]);
- }
-
- /**
- * Return the log entry that for the given resource
- * or null
if no entry was fetched or the
- * resource is not a file.
- * @param getFullPath(resource) the resource
- * @return the log entry or null
- */
- public synchronized ILogEntry getLogEntry(ICVSRemoteResource resource) {
- if (resource instanceof ICVSRemoteFile) {
- try {
- String path = getFullPath(resource);
- String revision = ((ICVSRemoteFile)resource).getRevision();
- return internalGetLogEntry(path, revision);
- } catch (TeamException e) {
- // Log and return null
- CVSUIPlugin.log(e);
- }
- }
- return null;
- }
-
- /**
- * Return the log entries that were fetched for the given resource
- * or an empty list if no entry was fetched.
- * @param getFullPath(resource) the resource
- * @return the fetched log entries or an empty list is none were found
- */
- public synchronized ILogEntry[] getLogEntries(ICVSRemoteResource resource) {
- Map fileEntries = internalGetLogEntries(getFullPath(resource));
- if (fileEntries != null) {
- return (ILogEntry[]) fileEntries.values().toArray(new ILogEntry[fileEntries.size()]);
- }
- return new ILogEntry[0];
- }
-
- /*
- * Return the full path that uniquely identifies the resource
- * accross repositories. This path include the repository and
- * resource path but does not include the revision so that
- * all log entries for a file can be retrieved.
- */
- private String getFullPath(ICVSRemoteResource resource) {
- return Util.appendPath(resource.getRepository().getLocation(), resource.getRepositoryRelativePath());
- }
-
- public synchronized void clearEntries() {
- entries.clear();
- }
-
- public synchronized ICVSRemoteFile getImmediatePredecessor(ICVSRemoteFile file) throws TeamException {
- ILogEntry[] allLogs = getLogEntries(file);
- String revision = file.getRevision();
- // First decrement the last digit and see if that revision exists
- String predecessorRevision = getPredecessorRevision(revision);
- ICVSRemoteFile predecessor = findRevison(allLogs, predecessorRevision);
- // If nothing was found, try to fond the base of a branch
- if (predecessor == null && isBrancheRevision(revision)) {
- predecessorRevision = getBaseRevision(revision);
- predecessor = findRevison(allLogs, predecessorRevision);
- }
- // If that fails, it is still possible that there is a revision.
- // This can happen if the revision has been manually set.
- if (predecessor == null) {
- // We don't search in this case since this is costly and would be done
- // for any file that is new as well.
- }
- return predecessor;
- }
-
- /*
- * Find the given revision in the list of log entries.
- * Return null if the revision wasn't found.
- */
- private ICVSRemoteFile findRevison(ILogEntry[] allLogs, String predecessorRevision) throws TeamException {
- for (int i = 0; i < allLogs.length; i++) {
- ILogEntry entry = allLogs[i];
- ICVSRemoteFile file = entry.getRemoteFile();
- if (file.getRevision().equals(predecessorRevision)) {
- return file;
- }
- }
- return null;
- }
- /*
- * Decrement the trailing digit by one.
- */
- private String getPredecessorRevision(String revision) {
- int digits[] = Util.convertToDigits(revision);
- digits[digits.length -1]--;
- StringBuffer buffer = new StringBuffer(revision.length());
- for (int i = 0; i < digits.length; i++) {
- buffer.append(Integer.toString(digits[i]));
- if (i < digits.length - 1) {
- buffer.append('.');
- }
- }
- return buffer.toString();
- }
-
- /*
- * Return true if there are more than 2 digits in the revision number
- * (i.e. the revision is on a branch)
- */
- private boolean isBrancheRevision(String revision) {
- return Util.convertToDigits(revision).length > 2;
- }
-
- /*
- * Remove the trailing revision digits such that the
- * returned revision is shorter than the given revision
- * and is an even number of digits long
- */
- private String getBaseRevision(String revision) {
- int digits[] = Util.convertToDigits(revision);
- int length = digits.length - 1;
- if (length % 2 == 1) {
- length--;
- }
- StringBuffer buffer = new StringBuffer(revision.length());
- for (int i = 0; i < length; i++) {
- buffer.append(Integer.toString(digits[i]));
- if (i < length - 1) {
- buffer.append('.');
- }
- }
- return buffer.toString();
- }
- /**
- * Remove any entries for the remote resources
- * @param resource the remote resource
- */
- public synchronized void clearEntries(ICVSRemoteResource resource) {
- String remotePath = getFullPath(resource);
- entries.remove(remotePath);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.core.client.listeners.ILogEntryListener#addEntry(org.eclipse.team.internal.ccvs.core.client.listeners.LogEntry)
- */
- public void handleLogEntryReceived(ILogEntry entry) {
- ICVSRemoteFile file = entry.getRemoteFile();
- String fullPath = getFullPath(file);
- String revision = entry.getRevision();
- Map fileEntries = internalGetLogEntries(fullPath);
- if (fileEntries == null) {
- fileEntries = new HashMap();
- entries.put(fullPath, fileEntries);
- }
- fileEntries.put(revision, entry);
- }
- }
-
- public RemoteLogOperation(IWorkbenchPart part, ICVSRemoteResource[] remoteResources, CVSTag tag1, CVSTag tag2, LogEntryCache cache) {
- super(part, remoteResources);
- this.tag1 = tag1;
- this.tag2 = tag2;
- this.entryCache = cache;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.operations.RepositoryLocationOperation#execute(org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation, org.eclipse.team.internal.ccvs.core.ICVSRemoteResource[], org.eclipse.core.runtime.IProgressMonitor)
- */
- protected void execute(ICVSRepositoryLocation location, ICVSRemoteResource[] remoteResources, IProgressMonitor monitor) throws CVSException {
- monitor.beginTask(Policy.bind("RemoteLogOperation.0", location.getHost()), 100); //$NON-NLS-1$
- Session s = new Session(location, CVSWorkspaceRoot.getCVSFolderFor(ResourcesPlugin.getWorkspace().getRoot()), false /* do not output to console */);
- // Create a log listener that will update the cache as entries are received
- LogListener listener = new LogListener(entryCache);
-
- ICVSRemoteResource[] remotes = remoteResources;
- Command.LocalOption[] localOptions = getLocalOptions(tag1, tag2);
- if(tag1 == null || tag2 == null) {
- // Optimize the cases were we are only fetching the history for a single revision. If it is
- // already cached, don't fetch it again.
- ArrayList unCachedRemotes = new ArrayList();
- for (int i = 0; i < remoteResources.length; i++) {
- ICVSRemoteResource r = remoteResources[i];
- if(entryCache.getLogEntry(r) == null) {
- unCachedRemotes.add(r);
- }
- }
- remotes = (ICVSRemoteResource[]) unCachedRemotes.toArray(new ICVSRemoteResource[unCachedRemotes.size()]);
- }
- if (remotes.length > 0) {
- try {
- s.open(Policy.subMonitorFor(monitor, 10));
- IStatus status = rlog.execute(s, Command.NO_GLOBAL_OPTIONS, localOptions, remotes, listener, Policy.subMonitorFor(monitor, 90));
- collectStatus(status);
- } finally {
- s.close();
- }
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.operations.CVSOperation#getTaskName()
- */
- protected String getTaskName() {
- return Policy.bind("RemoteLogOperation.1"); //$NON-NLS-1$
- }
-
- protected Command.LocalOption[] getLocalOptions(CVSTag tag1, CVSTag tag2) {
- if(tag1 != null && tag2 != null) {
- return new Command.LocalOption[] {RLog.NO_TAGS, RLog.ONLY_INCLUDE_CHANGES, RLog.makeTagOption(tag1, tag2)};
- } else {
- return new Command.LocalOption[] {RLog.NO_TAGS, RLog.ONLY_INCLUDE_CHANGES};
- }
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/RemoteOperation.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/RemoteOperation.java
deleted file mode 100644
index 8e778e947..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/RemoteOperation.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.operations;
-
-import org.eclipse.team.internal.ccvs.core.ICVSRemoteResource;
-import org.eclipse.team.internal.ccvs.core.ICVSResource;
-import org.eclipse.ui.IWorkbenchPart;
-
-public abstract class RemoteOperation extends CVSOperation {
-
- private ICVSRemoteResource[] remoteResources;
-
- protected RemoteOperation(IWorkbenchPart part, ICVSRemoteResource[] remoteResources) {
- super(part);
- this.remoteResources =remoteResources;
- }
-
- protected ICVSRemoteResource[] getRemoteResources() {
- return remoteResources;
- }
-
- public void setRemoteResources(ICVSRemoteResource[] remoteResources) {
- this.remoteResources = remoteResources;
- }
-
- public ICVSResource[] getCVSResources() {
- ICVSResource[] cvsResources = new ICVSResource[remoteResources.length];
- for (int i = 0; i < remoteResources.length; i++) {
- cvsResources[i] = remoteResources[i];
- }
- return cvsResources;
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/ReplaceOperation.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/ReplaceOperation.java
deleted file mode 100644
index c12f535b3..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/ReplaceOperation.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.operations;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.core.client.*;
-import org.eclipse.team.internal.ccvs.core.client.Command.LocalOption;
-import org.eclipse.team.internal.ccvs.core.syncinfo.ResourceSyncInfo;
-import org.eclipse.team.internal.ccvs.core.util.PrepareForReplaceVisitor;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.ui.IWorkbenchPart;
-
-/**
- * Thsi operation replaces the local resources with their remote contents
- */
-public class ReplaceOperation extends UpdateOperation {
-
- boolean recurse = true;
-
- public ReplaceOperation(IWorkbenchPart part, IResource[] resources, CVSTag tag, boolean recurse) {
- super(part, resources, getReplaceOptions(recurse), tag);
- this.recurse = recurse;
- }
-
- /*
- * Create the local options required to do a replace
- */
- private static LocalOption[] getReplaceOptions(boolean recurse) {
- List options = new ArrayList();
- options.add(Update.IGNORE_LOCAL_CHANGES);
- if(!recurse) {
- options.add(Command.DO_NOT_RECURSE);
- }
- return (LocalOption[]) options.toArray(new LocalOption[options.size()]);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.operations.CVSOperation#getTaskName()
- */
- protected String getTaskName() {
- return Policy.bind("ReplaceOperation.taskName"); //$NON-NLS-1$
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.operations.SingleCommandOperation#executeCommand(org.eclipse.team.internal.ccvs.core.client.Session, org.eclipse.team.internal.ccvs.core.CVSTeamProvider, org.eclipse.core.resources.IResource[], org.eclipse.core.runtime.IProgressMonitor)
- */
- protected IStatus executeCommand(
- Session session,
- CVSTeamProvider provider,
- ICVSResource[] resources,
- IProgressMonitor monitor)
- throws CVSException, InterruptedException {
-
- monitor.beginTask(null, 100);
- ICVSResource[] managedResources = getResourcesToUpdate(resources);
- try {
- // Purge any unmanaged or added files
- new PrepareForReplaceVisitor().visitResources(
- provider.getProject(),
- resources,
- "CVSTeamProvider.scrubbingResource", // TODO: This is a key in CVS core! //$NON-NLS-1$
- recurse ? IResource.DEPTH_INFINITE : IResource.DEPTH_ZERO,
- Policy.subMonitorFor(monitor, 30)); //$NON-NLS-1$
-
- // Only perform the remote command if some of the resources being replaced were managed
- IStatus status = OK;
- if (managedResources.length > 0) {
- // Perform an update, ignoring any local file modifications
- status = super.executeCommand(session, provider, managedResources, Policy.subMonitorFor(monitor, 70));
- }
-
- // Prune any empty folders left after the resources were purged.
- // This is done to prune any empty folders that contained only unmanaged resources
- if (status.isOK() && CVSProviderPlugin.getPlugin().getPruneEmptyDirectories()) {
- new PruneFolderVisitor().visit(session, resources);
- }
-
- return status;
- } finally {
- monitor.done();
- }
- }
-
- /**
- * Return the resources that need to be updated from the server.
- * By default, this is all resources that are managed.
- * @param resources all resources being replaced
- * @return resources that ae to be updated from the server
- * @throws CVSException
- */
- protected ICVSResource[] getResourcesToUpdate(ICVSResource[] resources) throws CVSException {
- // Accumulate the managed resources from the list of provided resources
- List managedResources = new ArrayList();
- for (int i = 0; i < resources.length; i++) {
- ICVSResource resource = resources[i];
- if ((resource.isFolder() && ((ICVSFolder)resource).isCVSFolder())) {
- managedResources.add(resource);
- } else if (!resource.isFolder()){
- byte[] syncBytes = ((ICVSFile)resource).getSyncBytes();
- if (syncBytes != null && !ResourceSyncInfo.isAddition(syncBytes)) {
- managedResources.add(resource);
- }
- }
- }
- return (ICVSResource[]) managedResources.toArray(new ICVSResource[managedResources.size()]);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.operations.UpdateOperation#getUpdateCommand()
- */
- protected Update getUpdateCommand() {
- return Command.REPLACE;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.operations.RepositoryProviderOperation#getTaskName(org.eclipse.team.internal.ccvs.core.CVSTeamProvider)
- */
- protected String getTaskName(CVSTeamProvider provider) {
- return Policy.bind("ReplaceOperation.0", provider.getProject().getName()); //$NON-NLS-1$
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/RepositoryLocationOperation.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/RepositoryLocationOperation.java
deleted file mode 100644
index 0da7eaaec..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/RepositoryLocationOperation.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.operations;
-
-import java.util.*;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.ui.IWorkbenchPart;
-
-/**
- * Operation that divides the resources by location
- */
-public abstract class RepositoryLocationOperation extends RemoteOperation {
-
- protected RepositoryLocationOperation(IWorkbenchPart part, ICVSRemoteResource[] remoteResources) {
- super(part, remoteResources);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.operations.CVSOperation#execute(org.eclipse.core.runtime.IProgressMonitor)
- */
- public void execute(IProgressMonitor monitor) throws CVSException, InterruptedException {
- Map table = getLocationMapping(getRemoteResources());
- Set keySet = table.keySet();
- monitor.beginTask(null, keySet.size() * 100);
- Iterator iterator = keySet.iterator();
- while (iterator.hasNext()) {
- ICVSRepositoryLocation location = (ICVSRepositoryLocation)iterator.next();
- List list = (List)table.get(location);
- ICVSRemoteResource[] remoteResources = (ICVSRemoteResource[])list.toArray(new ICVSRemoteResource[list.size()]);
- execute(location, remoteResources, Policy.subMonitorFor(monitor, 100));
- }
- }
-
- /**
- * Perform the operation for the given resources found on the
- * given repository.
- * @param location the repository location
- * @param resources the resources of this operation found in the repository
- * @param monitor a progres monitor
- */
- protected abstract void execute(ICVSRepositoryLocation location, ICVSRemoteResource[] resources, IProgressMonitor monitor) throws CVSException;
-
- /*
- * Return a map that maps a location to all the resources
- * from the given list that are located in that repository.
- */
- private Map getLocationMapping(ICVSRemoteResource[] remoteResources) {
- Map locationsMap = new HashMap();
- for (int i = 0; i < remoteResources.length; i++) {
- ICVSRemoteResource resource = remoteResources[i];
- ICVSRepositoryLocation location = resource.getRepository();
- List resources = (List)locationsMap.get(location);
- if (resources == null) {
- resources = new ArrayList();
- locationsMap.put(location, resources);
- }
- resources.add(resource);
- }
- return locationsMap;
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/RepositoryProviderOperation.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/RepositoryProviderOperation.java
deleted file mode 100644
index cc2e0bf5a..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/RepositoryProviderOperation.java
+++ /dev/null
@@ -1,211 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.operations;
-
-import java.util.*;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.*;
-import org.eclipse.core.runtime.jobs.ISchedulingRule;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.team.core.RepositoryProvider;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.core.client.Session;
-import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.ui.IWorkbenchPart;
-
-/**
- * Performs a cvs operation on multiple repository providers
- */
-public abstract class RepositoryProviderOperation extends CVSOperation {
-
- private IResource[] resources;
-
- public RepositoryProviderOperation(IWorkbenchPart part, IResource[] resources) {
- super(part);
- this.resources = resources;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.operations.CVSOperation#execute(org.eclipse.core.runtime.IProgressMonitor)
- */
- public void execute(IProgressMonitor monitor) throws CVSException, InterruptedException {
- Map table = getProviderMapping(getResources());
- Set keySet = table.keySet();
- monitor.beginTask(null, keySet.size() * 1000);
- Iterator iterator = keySet.iterator();
- while (iterator.hasNext()) {
- IProgressMonitor subMonitor = new SubProgressMonitor(monitor, 1000);
- CVSTeamProvider provider = (CVSTeamProvider)iterator.next();
- List list = (List)table.get(provider);
- IResource[] providerResources = (IResource[])list.toArray(new IResource[list.size()]);
- ISchedulingRule rule = getSchedulingRule(provider);
- try {
- Platform.getJobManager().beginRule(rule, monitor);
- monitor.setTaskName(getTaskName(provider));
- execute(provider, providerResources, subMonitor);
- } finally {
- Platform.getJobManager().endRule(rule);
- }
- }
- }
-
- /**
- * Return the taskname to be shown in the progress monitor while operating
- * on the given provider.
- * @param provider the provider being processed
- * @return the taskname to be shown in the progress monitor
- */
- protected abstract String getTaskName(CVSTeamProvider provider);
-
- /**
- * Retgurn the scheduling rule to be obtained before work
- * begins on the given provider. By default, it is the provider's project.
- * This can be changed by subclasses.
- * @param provider
- * @return
- */
- protected ISchedulingRule getSchedulingRule(CVSTeamProvider provider) {
- return provider.getProject();
- }
-
- /*
- * Helper method. Return a Map mapping provider to a list of resources
- * shared with that provider.
- */
- private Map getProviderMapping(IResource[] resources) {
- Map result = new HashMap();
- for (int i = 0; i < resources.length; i++) {
- RepositoryProvider provider = RepositoryProvider.getProvider(resources[i].getProject(), CVSProviderPlugin.getTypeId());
- List list = (List)result.get(provider);
- if (list == null) {
- list = new ArrayList();
- result.put(provider, list);
- }
- list.add(resources[i]);
- }
- return result;
- }
-
- /**
- * Return the resources that the operation is being performed on
- * @return
- */
- protected IResource[] getResources() {
- return resources;
- }
-
- /**
- * Set the resources that the operation is to be performed on
- * @param resources
- */
- protected void setResources(IResource[] resources) {
- this.resources = resources;
- }
-
- /**
- * Execute the operation on the resources for the given provider.
- * @param provider
- * @param providerResources
- * @param subMonitor
- * @throws CVSException
- * @throws InterruptedException
- */
- protected abstract void execute(CVSTeamProvider provider, IResource[] resources, IProgressMonitor monitor) throws CVSException, InterruptedException;
-
- protected ICVSResource[] getCVSArguments(IResource[] resources) {
- ICVSResource[] cvsResources = new ICVSResource[resources.length];
- for (int i = 0; i < cvsResources.length; i++) {
- cvsResources[i] = CVSWorkspaceRoot.getCVSResourceFor(resources[i]);
- }
- return cvsResources;
- }
-
- /*
- * Get the arguments to be passed to a commit or update
- */
- protected String[] getStringArguments(IResource[] resources) throws CVSException {
- List arguments = new ArrayList(resources.length);
- for (int i=0;inull
.
- * @return
- */
- protected ICommandOutputListener getCommandOutputListener() {
- return null;
- }
-
- protected boolean isReportableError(IStatus status) {
- return super.isReportableError(status)
- || status.getCode() == CVSStatus.UNMEGERED_BINARY_CONFLICT
- || status.getCode() == CVSStatus.INVALID_LOCAL_RESOURCE_PATH
- || status.getCode() == CVSStatus.RESPONSE_HANDLING_FAILURE;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.operations.CVSOperation#getErrorMessage(org.eclipse.core.runtime.IStatus[], int)
- */
- protected String getErrorMessage(IStatus[] failures, int totalOperations) {
- return Policy.bind("UpdateAction.update"); //$NON-NLS-1$
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/AddToBranchAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/AddToBranchAction.java
deleted file mode 100644
index be3b44f37..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/AddToBranchAction.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.repo;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.IInputValidator;
-import org.eclipse.jface.dialogs.InputDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-import org.eclipse.team.internal.ccvs.core.CVSTag;
-import org.eclipse.team.internal.ccvs.core.ICVSRemoteFolder;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.actions.CVSAction;
-
-/**
- * Action to add a root remote folder to a branch
- */
-public class AddToBranchAction extends CVSAction {
-
- IInputValidator validator = new IInputValidator() {
- public String isValid(String newText) {
- IStatus status = CVSTag.validateTagName(newText);
- if (status.isOK()) return null;
- return status.getMessage();
- }
- };
-
- /**
- * @see org.eclipse.team.internal.ccvs.ui.actions.CVSAction#execute(org.eclipse.jface.action.IAction)
- */
- protected void execute(IAction action) throws InvocationTargetException, InterruptedException {
- run(new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException {
- final ICVSRemoteFolder folder = getSelectedRootFolder();
- if (folder == null) return;
- Shell shell = getShell();
- final CVSException[] exception = new CVSException[] { null };
- shell.getDisplay().syncExec(new Runnable() {
- public void run() {
- InputDialog dialog = new InputDialog(getShell(), Policy.bind("AddToBranchAction.enterTag"), Policy.bind("AddToBranchAction.enterTagLong"), null, validator); //$NON-NLS-1$ //$NON-NLS-2$
- if (dialog.open() == InputDialog.OK) {
- CVSTag tag = new CVSTag(dialog.getValue(), CVSTag.BRANCH);
- try {
- CVSUIPlugin.getPlugin().getRepositoryManager().addTags(folder, new CVSTag[] {tag});
- } catch (CVSException e) {
- exception[0] = e;
- }
- }
- }
- });
- if (exception[0] != null)
- throw new InvocationTargetException(exception[0]);
- }
- }, false, PROGRESS_BUSYCURSOR); //$NON-NLS-1$
- }
-
- /**
- * @see org.eclipse.team.internal.ui.actions.TeamAction#isEnabled()
- */
- protected boolean isEnabled() throws TeamException {
- return getSelectedRootFolder() != null;
- }
-
- protected ICVSRemoteFolder getSelectedRootFolder() {
- ICVSRemoteFolder[] folders = getSelectedRemoteFolders();
- ICVSRemoteFolder selectedFolder = null;
- for (int i = 0; i < folders.length; i++) {
- ICVSRemoteFolder folder = folders[i];
- if (folder.isDefinedModule() || new Path(null, folder.getRepositoryRelativePath()).segmentCount()==1) {
- // only return a folder if one valid one is selected.
- if (selectedFolder != null) return null;
- selectedFolder = folder;
- }
- }
- return selectedFolder;
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/CVSRepoViewAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/CVSRepoViewAction.java
deleted file mode 100644
index df4f9ccdf..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/CVSRepoViewAction.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.repo;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.internal.ccvs.ui.actions.CVSAction;
-import org.eclipse.team.internal.ccvs.ui.model.BranchCategory;
-
-/**
- * Abstract superclass for actions in the repositories view
- */
-public abstract class CVSRepoViewAction extends CVSAction {
-
- /**
- * Returns the selected CVS Repository locations
- */
- protected ICVSRepositoryLocation[] getSelectedRepositoryLocations() {
- ArrayList tags = new ArrayList();
- if (!selection.isEmpty()) {
- Iterator elements = selection.iterator();
- while (elements.hasNext()) {
- Object element = elements.next();
- Object adapter = getAdapter(element, ICVSRepositoryLocation.class);
- if (adapter != null) {
- tags.add(adapter);
- } else {
- adapter = getAdapter(element, BranchCategory.class);
- if(adapter != null) {
- tags.add(((BranchCategory)adapter).getRepository(adapter));
- }
- }
- }
- }
- return (ICVSRepositoryLocation[])tags.toArray(new ICVSRepositoryLocation[tags.size()]);
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/CVSRepositoryPropertiesPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/CVSRepositoryPropertiesPage.java
deleted file mode 100644
index f79f1e72d..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/CVSRepositoryPropertiesPage.java
+++ /dev/null
@@ -1,595 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.repo;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.*;
-import java.util.List;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.*;
-import org.eclipse.jface.dialogs.*;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.team.core.RepositoryProvider;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.core.connection.CVSRepositoryLocation;
-import org.eclipse.team.internal.ccvs.core.util.KnownRepositories;
-import org.eclipse.team.internal.ccvs.ui.*;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.wizards.ConfigurationWizardMainPage;
-import org.eclipse.team.internal.ui.dialogs.DetailsDialogWithProjects;
-import org.eclipse.ui.actions.WorkspaceModifyOperation;
-import org.eclipse.ui.dialogs.PropertyPage;
-import org.eclipse.ui.help.WorkbenchHelp;
-
-public class CVSRepositoryPropertiesPage extends PropertyPage {
- private static final String FAKE_PASSWORD = "*********"; //$NON-NLS-1$
- ICVSRepositoryLocation location;
-
- // Widgets
- Text userText;
- Text passwordText;
- Combo methodType;
- Text hostText;
- Text pathText;
- // Port
- private Text portText;
- private Button useDefaultPort;
- private Button useCustomPort;
-
- // Caching password
- private Button allowCachingButton;
- private boolean allowCaching = false;
-
- boolean passwordChanged;
- boolean connectionInfoChanged;
-
- IUserInfo info;
-
- // Label
- private Button useLocationAsLabel;
- private Button useCustomLabel;
- private Text labelText;
-
- /*
- * @see PreferencesPage#createContents
- */
- protected Control createContents(Composite parent) {
- initialize();
-
- Composite composite = new Composite(parent, SWT.NULL);
- composite.setLayoutData(new GridData(GridData.FILL_BOTH));
- GridLayout layout = new GridLayout();
- layout.numColumns = 3;
- composite.setLayout(layout);
-
- // Repository Label
- // create a composite to ensure the radio buttons come in the correct order
- Composite labelGroup = new Composite(composite, SWT.NONE);
- GridData data = new GridData();
- data.horizontalSpan = 3;
- labelGroup.setLayoutData(data);
- layout = new GridLayout();
- layout.numColumns = 3;
- layout.marginHeight = 0;
- layout.marginWidth = 0;
- labelGroup.setLayout(layout);
- Listener labelListener = new Listener() {
- public void handleEvent(Event event) {
- updateWidgetEnablements();
- }
- };
- useLocationAsLabel = createRadioButton(labelGroup, Policy.bind("CVSRepositoryPropertiesPage.useLocationAsLabel"), 3); //$NON-NLS-1$
- useCustomLabel = createRadioButton(labelGroup, Policy.bind("CVSRepositoryPropertiesPage.useCustomLabel"), 1); //$NON-NLS-1$
- useCustomLabel.addListener(SWT.Selection, labelListener);
- labelText = createTextField(labelGroup);
- labelText.addListener(SWT.Modify, labelListener);
-
- // Add some extra space
- createLabel(composite, "", 3); //$NON-NLS-1$
-
- createLabel(composite, Policy.bind("CVSPropertiesPage.connectionType"), 1); //$NON-NLS-1$
- methodType = createCombo(composite);
-
- createLabel(composite, Policy.bind("CVSPropertiesPage.user"), 1); //$NON-NLS-1$
- userText = createTextField(composite);
-
- createLabel(composite, Policy.bind("CVSPropertiesPage.password"), 1); //$NON-NLS-1$
- passwordText = createPasswordField(composite);
-
- createLabel(composite, Policy.bind("CVSPropertiesPage.host"), 1); //$NON-NLS-1$
- hostText = createTextField(composite);
-
- createLabel(composite, Policy.bind("CVSPropertiesPage.path"), 1); //$NON-NLS-1$
- pathText = createTextField(composite);
-
- // Port number
- // create a composite to ensure the radio buttons come in the correct order
- Composite portGroup = new Composite(composite, SWT.NONE);
- data = new GridData();
- data.horizontalSpan = 3;
- portGroup.setLayoutData(data);
- layout = new GridLayout();
- layout.numColumns = 3;
- layout.marginHeight = 0;
- layout.marginWidth = 0;
- portGroup.setLayout(layout);
- useDefaultPort = createRadioButton(portGroup, Policy.bind("ConfigurationWizardMainPage.useDefaultPort"), 3); //$NON-NLS-1$
- useCustomPort = createRadioButton(portGroup, Policy.bind("ConfigurationWizardMainPage.usePort"), 1); //$NON-NLS-1$
- portText = createTextField(portGroup);
-
- // Add some extra space
- createLabel(composite, "", 3); //$NON-NLS-1$
-
- allowCachingButton = new Button(composite, SWT.CHECK);
- allowCachingButton.setText(Policy.bind("UserValidationDialog.6")); //$NON-NLS-1$
- data = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
- data.horizontalSpan = 3;
- allowCachingButton.setLayoutData(data);
- allowCachingButton.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- allowCaching = allowCachingButton.getSelection();
- }
- });
-
- Composite warningComposite = new Composite(composite, SWT.NONE);
- layout = new GridLayout();
- layout.numColumns = 2;
- layout.marginHeight = 0;
- layout.marginHeight = 0;
- warningComposite.setLayout(layout);
- data = new GridData(GridData.FILL_HORIZONTAL);
- data.horizontalSpan = 3;
- warningComposite.setLayoutData(data);
- Label warningLabel = new Label(warningComposite, SWT.NONE);
- warningLabel.setImage(Dialog.getImage(Dialog.DLG_IMG_MESSAGE_WARNING));
- warningLabel.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING | GridData.HORIZONTAL_ALIGN_BEGINNING));
- Label warningText = new Label(warningComposite, SWT.WRAP);
- warningText.setText(Policy.bind("UserValidationDialog.7")); //$NON-NLS-1$
- data = new GridData(GridData.FILL_HORIZONTAL);
- data.widthHint = 300;
- warningText.setLayoutData(data);
-
- // Add some extra space
- createLabel(composite, "", 3); //$NON-NLS-1$
-
- initializeValues();
- updateWidgetEnablements();
- Listener connectionInfoChangedListener = new Listener() {
- public void handleEvent(Event event) {
- connectionInfoChanged = true;
- updateWidgetEnablements();
- }
- };
- passwordText.addListener(SWT.Modify, new Listener() {
- public void handleEvent(Event event) {
- passwordChanged = !passwordText.getText().equals(FAKE_PASSWORD);
- }
- });
- userText.addListener(SWT.Modify, connectionInfoChangedListener);
- methodType.addListener(SWT.Modify, connectionInfoChangedListener);
- hostText.addListener(SWT.Modify, connectionInfoChangedListener);
- portText.addListener(SWT.Modify, connectionInfoChangedListener);
- useCustomPort.addListener(SWT.Selection, connectionInfoChangedListener);
- pathText.addListener(SWT.Modify, connectionInfoChangedListener);
-
- WorkbenchHelp.setHelp(getControl(), IHelpContextIds.REPOSITORY_LOCATION_PROPERTY_PAGE);
- Dialog.applyDialogFont(parent);
- return composite;
- }
-
- /**
- * Utility method that creates a combo box
- *
- * @param parent the parent for the new label
- * @return the new widget
- */
- protected Combo createCombo(Composite parent) {
- Combo combo = new Combo(parent, SWT.READ_ONLY);
- GridData data = new GridData(GridData.FILL_HORIZONTAL);
- data.widthHint = IDialogConstants.ENTRY_FIELD_WIDTH;
- data.horizontalSpan = 2;
- combo.setLayoutData(data);
- return combo;
- }
- /**
- * Utility method that creates a label instance
- * and sets the default layout data.
- *
- * @param parent the parent for the new label
- * @param text the text for the new label
- * @return the new label
- */
- protected Label createLabel(Composite parent, String text, int span) {
- Label label = new Label(parent, SWT.LEFT);
- label.setText(text);
- GridData data = new GridData();
- data.horizontalSpan = span;
- data.horizontalAlignment = GridData.FILL;
- label.setLayoutData(data);
- return label;
- }
- /**
- * Create a text field specific for this application
- *
- * @param parent the parent of the new text field
- * @return the new text field
- */
- protected Text createTextField(Composite parent) {
- Text text = new Text(parent, SWT.SINGLE | SWT.BORDER);
- return layoutTextField(text);
- }
- /**
- * Create a password field specific for this application
- *
- * @param parent the parent of the new text field
- * @return the new text field
- */
- protected Text createPasswordField(Composite parent) {
- Text text = new Text(parent, SWT.SINGLE | SWT.BORDER | SWT.PASSWORD);
- return layoutTextField(text);
- }
- /**
- * Layout a text or password field specific for this application
- *
- * @param parent the parent of the new text field
- * @return the new text field
- */
- protected Text layoutTextField(Text text) {
- GridData data = new GridData(GridData.FILL_HORIZONTAL);
- data.verticalAlignment = GridData.CENTER;
- data.grabExcessVerticalSpace = false;
- data.widthHint = IDialogConstants.ENTRY_FIELD_WIDTH;
- data.horizontalSpan = 2;
- text.setLayoutData(data);
- return text;
- }
-
- /**
- * Utility method to create a radio button
- *
- * @param parent the parent of the radio button
- * @param label the label of the radio button
- * @param span the number of columns to span
- * @return the created radio button
- */
- protected Button createRadioButton(Composite parent, String label, int span) {
- Button button = new Button(parent, SWT.RADIO);
- button.setText(label);
- GridData data = new GridData();
- data.horizontalSpan = span;
- button.setLayoutData(data);
- return button;
- }
- /**
- * Initializes the page
- */
- private void initialize() {
- location = null;
- IAdaptable element = getElement();
- if (element instanceof ICVSRepositoryLocation) {
- location = (ICVSRepositoryLocation)element;
- } else {
- Object adapter = element.getAdapter(ICVSRepositoryLocation.class);
- if (adapter instanceof ICVSRepositoryLocation) {
- location = (ICVSRepositoryLocation)adapter;
- }
- }
- }
- /**
- * Set the initial values of the widgets
- */
- private void initializeValues() {
- passwordChanged = false;
- connectionInfoChanged = false;
-
- IConnectionMethod[] methods = CVSRepositoryLocation.getPluggedInConnectionMethods();
- for (int i = 0; i < methods.length; i++) {
- methodType.add(methods[i].getName());
- }
- String method = location.getMethod().getName();
- methodType.select(methodType.indexOf(method));
- info = location.getUserInfo(true);
- userText.setText(info.getUsername());
- passwordText.setText(FAKE_PASSWORD);
- hostText.setText(location.getHost());
- int port = location.getPort();
- if (port == ICVSRepositoryLocation.USE_DEFAULT_PORT) {
- useDefaultPort.setSelection(true);
- useCustomPort.setSelection(false);
- portText.setEnabled(false);
- } else {
- useDefaultPort.setSelection(false);
- useCustomPort.setSelection(true);
- portText.setText("" + port); //$NON-NLS-1$
- }
- pathText.setText(location.getRootDirectory());
- allowCachingButton.setSelection(location.getUserInfoCached());
-
- // get the repository label
- String label = null;
- RepositoryRoot root = CVSUIPlugin.getPlugin().getRepositoryManager().getRepositoryRootFor(location);
- label = root.getName();
- useLocationAsLabel.setSelection(label == null);
- useCustomLabel.setSelection(!useLocationAsLabel.getSelection());
- if (label == null) {
- label = location.getLocation();
- }
- labelText.setText(label);
- }
-
- private boolean performConnectionInfoChanges() {
- // Set the caching mode of the location
- if (!connectionInfoChanged) {
- location.setAllowCaching(allowCaching);
- if (!passwordChanged) {
- ((CVSRepositoryLocation)location).updateCache();
- }
- }
- // Don't do anything else if there wasn't a password or connection change
- if (!passwordChanged && !connectionInfoChanged) return true;
-
- try {
- // Check if the password was the only thing to change.
- if (passwordChanged && !connectionInfoChanged) {
- CVSRepositoryLocation oldLocation = (CVSRepositoryLocation)location;
- oldLocation.setPassword(getNewPassword());
- if (allowCaching) {
- oldLocation.updateCache();
- }
- passwordChanged = false;
- return true;
- }
-
- // Otherwise change the connection info and the password
- // This operation is done inside a workspace operation in case the sharing
- // info for existing projects is changed
- if (!(location.getHost().equals(hostText.getText()) && location.getRootDirectory().equals(pathText.getText()))) {
- // The host or path has changed
- if (!MessageDialog.openConfirm(getShell(),
- Policy.bind("CVSRepositoryPropertiesPage.0"), //$NON-NLS-1$
- Policy.bind("CVSRepositoryPropertiesPage.1"))) { //$NON-NLS-1$
- return false;
- }
- }
- final boolean[] result = new boolean[] { false };
- final ProgressMonitorDialog progressMonitorDialog = new ProgressMonitorDialog(getShell());
- progressMonitorDialog.run(false, false, new WorkspaceModifyOperation(null) {
- public void execute(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- try {
- // Create a new repository location with the new information
- CVSRepositoryLocation newLocation = CVSRepositoryLocation.fromProperties(createProperties());
- location.setAllowCaching(allowCaching);
- try {
- // For each project shared with the old location, set connection info to the new one
- List projects = new ArrayList();
- IProject[] allProjects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
- for (int i = 0; i < allProjects.length; i++) {
- RepositoryProvider teamProvider = RepositoryProvider.getProvider(allProjects[i], CVSProviderPlugin.getTypeId());
- if (teamProvider != null) {
- CVSTeamProvider cvsProvider = (CVSTeamProvider)teamProvider;
- if (cvsProvider.getCVSWorkspaceRoot().getRemoteLocation().equals(location)) {
- projects.add(allProjects[i]);
- }
- }
- }
- if (projects.size() > 0) {
- // To do: warn the user
- DetailsDialogWithProjects dialog = new DetailsDialogWithProjects(
- progressMonitorDialog.getShell(),
- Policy.bind("CVSRepositoryPropertiesPage.Confirm_Project_Sharing_Changes_1"), //$NON-NLS-1$
- Policy.bind("CVSRepositoryPropertiesPage.There_are_projects_in_the_workspace_shared_with_this_repository_2"), //$NON-NLS-1$
- Policy.bind("CVSRepositoryPropertiesPage.sharedProject", location.toString()), //$NON-NLS-1$
- (IProject[]) projects.toArray(new IProject[projects.size()]),
- true,
- DetailsDialogWithProjects.DLG_IMG_WARNING);
- int r = dialog.open();
- if (r != DetailsDialogWithProjects.OK) {
- result[0] = false;
- return;
- }
- monitor.beginTask(null, 1000 * projects.size());
- try {
- Iterator it = projects.iterator();
- while (it.hasNext()) {
- IProject project = (IProject)it.next();
- RepositoryProvider teamProvider = RepositoryProvider.getProvider(project, CVSProviderPlugin.getTypeId());
- CVSTeamProvider cvsProvider = (CVSTeamProvider)teamProvider;
- cvsProvider.setRemoteRoot(newLocation, Policy.subMonitorFor(monitor, 1000));
- }
- } finally {
- monitor.done();
- }
- }
-
- // Dispose the old repository location
- CVSUIPlugin.getPlugin().getRepositoryManager().replaceRepositoryLocation(location, newLocation);
-
- } finally {
- // Even if we failed, ensure that the new location appears in the repo view.
- newLocation = (CVSRepositoryLocation)KnownRepositories.getInstance().addRepository(newLocation, !KnownRepositories.getInstance().isKnownRepository(newLocation.getLocation()));
- }
-
- // Set the location of the page to the new location in case Apply was chosen
- location = newLocation;
- connectionInfoChanged = false;
- passwordChanged = false;
- } catch (TeamException e) {
- throw new InvocationTargetException(e);
- }
- result[0] = true;
- }
- });
- return result[0];
- } catch (InvocationTargetException e) {
- handle(e);
- } catch (InterruptedException e) {
- }
- return false; /* we only get here if an exception occurred */
- }
-
- private void performNonConnectionInfoChanges() {
- recordNewLabel((CVSRepositoryLocation)location);
- }
- /*
- * @see PreferencesPage#performOk
- */
- public boolean performOk() {
- if (performConnectionInfoChanges()) {
- performNonConnectionInfoChanges();
- return true;
- }
- return false;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.preference.PreferencePage#performDefaults()
- */
- protected void performDefaults() {
- super.performDefaults();
- initializeValues();
- }
-
- /**
- * Shows the given errors to the user.
- */
- protected void handle(Throwable e) {
- CVSUIPlugin.openError(getShell(), null, null, e);
- }
-
- /**
- * Updates widget enablements and sets error message if appropriate.
- */
- protected void updateWidgetEnablements() {
- if (useLocationAsLabel.getSelection()) {
- labelText.setEnabled(false);
- } else {
- labelText.setEnabled(true);
- }
- if (useDefaultPort.getSelection()) {
- portText.setEnabled(false);
- } else {
- portText.setEnabled(true);
- }
- validateFields();
- }
-
- private void validateFields() {
- if (labelText.isEnabled()) {
- if (labelText.getText().length() == 0) {
- setValid(false);
- return;
- }
- }
- String user = userText.getText();
- IStatus status = ConfigurationWizardMainPage.validateUserName(user);
- if (!isStatusOK(status)) {
- return;
- }
-
- String host = hostText.getText();
- status = ConfigurationWizardMainPage.validateHost(host);
- if (!isStatusOK(status)) {
- return;
- }
-
- if (portText.isEnabled()) {
- String port = portText.getText();
- status = ConfigurationWizardMainPage.validatePort(port);
- if (!isStatusOK(status)) {
- return;
- }
- }
-
- String pathString = pathText.getText();
- status = ConfigurationWizardMainPage.validatePath(pathString);
- if (!isStatusOK(status)) {
- return;
- }
-
- try {
- CVSRepositoryLocation l = CVSRepositoryLocation.fromProperties(createProperties());
- if (!l.equals(location) && KnownRepositories.getInstance().isKnownRepository(l.getLocation())) {
- setErrorMessage(Policy.bind("ConfigurationWizardMainPage.0")); //$NON-NLS-1$
- setValid(false);
- return;
- }
- } catch (CVSException e) {
- CVSUIPlugin.log(e);
- // Let it pass. Creation should fail
- }
-
- setErrorMessage(null);
- setValid(true);
- }
-
- private boolean isStatusOK(IStatus status) {
- if (!status.isOK()) {
- setErrorMessage(status.getMessage());
- setValid(false);
- return false;
- }
- return true;
- }
-
- private void recordNewLabel(CVSRepositoryLocation location) {
- String newLabel = getNewLabel(location);
- if (newLabel == null) {
- String oldLabel = getOldLabel(location);
- if (oldLabel == null || oldLabel.equals(location.getLocation())) {
- return;
- }
- } else if (newLabel.equals(getOldLabel(location))) {
- return;
- }
- CVSUIPlugin.getPlugin().getRepositoryManager().setLabel(location, newLabel);
- }
- private String getOldLabel(CVSRepositoryLocation location) {
- return CVSUIPlugin.getPlugin().getRepositoryManager().getRepositoryRootFor(location).getName();
- }
- private String getNewLabel(CVSRepositoryLocation location) {
- String label = null;
- if (useCustomLabel.getSelection()) {
- label = labelText.getText();
- if (label.equals(location.getLocation())) {
- label = null;
- }
- }
- return label;
- }
- /* internal use only */ String getNewPassword() {
- return passwordText.getText();
- }
-
- private Properties createProperties() {
- Properties result = new Properties();
- result.setProperty("connection", methodType.getText()); //$NON-NLS-1$
- result.setProperty("user", userText.getText()); //$NON-NLS-1$
- if (passwordChanged) {
- result.setProperty("password", passwordText.getText()); //$NON-NLS-1$
- }
- result.setProperty("host", hostText.getText()); //$NON-NLS-1$
- if (useCustomPort.getSelection()) {
- result.setProperty("port", portText.getText()); //$NON-NLS-1$
- }
- result.setProperty("root", pathText.getText()); //$NON-NLS-1$
- return result;
- }
-}
-
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/CommentHistoryContentHandler.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/CommentHistoryContentHandler.java
deleted file mode 100644
index f3f3d58f2..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/CommentHistoryContentHandler.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.team.internal.ccvs.ui.repo;
-
-import java.util.Vector;
-
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.DefaultHandler;
-import org.xml.sax.Attributes;
-
-class CommentHistoryContentHandler extends DefaultHandler {
-
- private StringBuffer buffer;
- private Vector comments;
- public CommentHistoryContentHandler() {
- }
-
- /**
- * @see ContentHandler#characters(char[], int, int)
- */
- public void characters(char[] chars, int startIndex, int length) throws SAXException {
- if (buffer == null) return;
- buffer.append(chars, startIndex, length);
- }
-
- /**
- * @see ContentHandler#startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes)
- */
- public void startElement(
- String namespaceURI,
- String localName,
- String qName,
- Attributes atts)
- throws SAXException {
-
- String elementName = getElementName(namespaceURI, localName, qName);
- if (elementName.equals(RepositoryManager.ELEMENT_COMMIT_COMMENT)) {
- buffer = new StringBuffer();
- return;
- }
- if (elementName.equals(RepositoryManager.ELEMENT_COMMIT_HISTORY)) {
- comments = new Vector(RepositoryManager.MAX_COMMENTS);
- return;
- }
- }
-
- /**
- * @see org.xml.sax.ContentHandler#endElement(java.lang.String, java.lang.String, java.lang.String)
- */
- public void endElement(String namespaceURI, String localName, String qName) {
- String elementName = getElementName(namespaceURI, localName, qName);
- if (elementName.equals(RepositoryManager.ELEMENT_COMMIT_COMMENT)) {
- comments.add(buffer.toString());
- buffer = null;
- return;
- }
- if (elementName.equals(RepositoryManager.ELEMENT_COMMIT_HISTORY)) {
- RepositoryManager.previousComments = new String[comments.size()];
- comments.copyInto(RepositoryManager.previousComments);
- return;
- }
- }
-
- /*
- * Couldn't figure out from the SAX API exactly when localName vs. qName is used.
- * However, the XML for project sets doesn't use namespaces so either of the two names
- * is fine. Therefore, use whichever one is provided.
- */
- private String getElementName(String namespaceURI, String localName, String qName) {
- if (localName != null && localName.length() > 0) {
- return localName;
- } else {
- return qName;
- }
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/CopyRepositoryNameAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/CopyRepositoryNameAction.java
deleted file mode 100644
index 50b1cbb54..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/CopyRepositoryNameAction.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.repo;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.jface.action.IAction;
-import org.eclipse.swt.dnd.*;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.internal.ccvs.ui.actions.CVSAction;
-
-public class CopyRepositoryNameAction extends CVSAction {
- protected boolean isEnabled() throws TeamException {
- return true;
- }
- public void execute(IAction action) {
- ICVSRepositoryLocation[] locations = getSelectedRepositories();
- StringBuffer buffer = new StringBuffer();
- for (int i = 0; i < locations.length; i++) {
- buffer.append(locations[i].getLocation());
- if (i < locations.length - 1) buffer.append("\n"); //$NON-NLS-1$
- }
- copyToClipbard(Display.getDefault(), buffer.toString());
- }
- protected ICVSRepositoryLocation[] getSelectedRepositories() {
- ArrayList repositories = null;
- if (!selection.isEmpty()) {
- repositories = new ArrayList();
- Iterator elements = selection.iterator();
- while (elements.hasNext()) {
- Object next = getAdapter(elements.next(), ICVSRepositoryLocation.class);
- if (next instanceof ICVSRepositoryLocation) {
- repositories.add(next);
- continue;
- }
- }
- }
- if (repositories != null && !repositories.isEmpty()) {
- ICVSRepositoryLocation[] result = new ICVSRepositoryLocation[repositories.size()];
- repositories.toArray(result);
- return result;
- }
- return new ICVSRepositoryLocation[0];
- }
- private void copyToClipbard(Display display, String str) {
- Clipboard clipboard = new Clipboard(display);
- clipboard.setContents(new String[] { str }, new Transfer[] { TextTransfer.getInstance()});
- clipboard.dispose();
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/NewCVSRepositoryAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/NewCVSRepositoryAction.java
deleted file mode 100644
index 172607e6a..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/NewCVSRepositoryAction.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.repo;
-
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.wizards.NewLocationWizard;
-import org.eclipse.ui.IWorkbenchWindow;
-
-/**
- * Called from Welcome page only.
- */
-public class NewCVSRepositoryAction extends Action {
- public void run() {
- Shell shell;
- IWorkbenchWindow window = CVSUIPlugin.getPlugin().getWorkbench().getActiveWorkbenchWindow();
- if (window != null) {
- shell = window.getShell();
- } else {
- Display display = Display.getCurrent();
- shell = new Shell(display);
- }
- NewLocationWizard wizard = new NewLocationWizard();
- WizardDialog dialog = new WizardDialog(shell, wizard);
- dialog.open();
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/NewDateTagAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/NewDateTagAction.java
deleted file mode 100644
index b536fb34a..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/NewDateTagAction.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.repo;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.Date;
-
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.internal.ccvs.core.CVSTag;
-import org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.DateTagDialog;
-
-/**
- * Action for creating a CVS Date tag.
- */
-public class NewDateTagAction extends CVSRepoViewAction {
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.actions.CVSAction#execute(org.eclipse.jface.action.IAction)
- */
- protected void execute(IAction action) throws InvocationTargetException, InterruptedException {
- ICVSRepositoryLocation[] locations = getSelectedRepositoryLocations();
- if (locations.length != 1) return;
- CVSTag tag = getDateTag(getShell(), locations[0]);
- CVSUIPlugin.getPlugin().getRepositoryManager().addDateTag(locations[0], tag);
- }
-
- public static CVSTag getDateTag(Shell shell, ICVSRepositoryLocation location) {
- DateTagDialog dialog = new DateTagDialog(shell);
- if (dialog.open() == Window.OK) {
- Date date = dialog.getDate();
- CVSTag tag = new CVSTag(date);
- return tag;
- }
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ui.actions.TeamAction#isEnabled()
- */
- protected boolean isEnabled() {
- ICVSRepositoryLocation[] locations = getSelectedRepositoryLocations();
- if (locations.length != 1) return false;
- return true;
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RefreshRemoteProjectSelectionPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RefreshRemoteProjectSelectionPage.java
deleted file mode 100644
index 8dfb75598..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RefreshRemoteProjectSelectionPage.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.repo;
-
-import java.util.Arrays;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.team.internal.ccvs.core.ICVSRemoteResource;
-import org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.IHelpContextIds;
-import org.eclipse.team.internal.ccvs.ui.ListSelectionArea;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.WorkingSetSelectionArea;
-import org.eclipse.team.internal.ccvs.ui.model.RemoteContentProvider;
-import org.eclipse.team.internal.ccvs.ui.wizards.CVSWizardPage;
-import org.eclipse.ui.IWorkingSet;
-import org.eclipse.ui.help.WorkbenchHelp;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-import org.eclipse.ui.model.WorkbenchLabelProvider;
-
-/**
- * Page that allows the user to select the remote projects whose tags should be
- * refreshed.
- */
-public class RefreshRemoteProjectSelectionPage extends CVSWizardPage {
-
- private ICVSRemoteResource[] rootFolders;
- private ListSelectionArea listArea;
- private WorkingSetSelectionArea workingSetArea;
- private IWorkingSet workingSet;
- private IDialogSettings settings;
-
- /**
- * Custom input provider which returns the list of root folders
- */
- private class InputElement implements IWorkbenchAdapter, IAdaptable {
- public Object[] getChildren(Object o) {
- return rootFolders;
- }
- public ImageDescriptor getImageDescriptor(Object object) {
- return null;
- }
- public String getLabel(Object o) {
- return null;
- }
- public Object getParent(Object o) {
- return null;
- }
- public Object getAdapter(Class adapter) {
- if (adapter == IWorkbenchAdapter.class) return this;
- return null;
- }
- }
-
- /**
- * Constructor for RemoteProjectSelectionPage.
- * @param pageName
- * @param title
- * @param titleImage
- * @param description
- */
- public RefreshRemoteProjectSelectionPage(
- String pageName,
- String title,
- ImageDescriptor titleImage,
- String description,
- IDialogSettings settings,
- ICVSRepositoryLocation root,
- ICVSRemoteResource[] rootFolders) {
- super(pageName, title, titleImage, description);
- this.settings = settings;
- this.rootFolders = rootFolders;
- }
-
- /**
- * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
- */
- public void createControl(Composite parent) {
-
- final Composite composite = new Composite(parent, SWT.NONE);
- composite.setLayout(new GridLayout(1, false));
-
- setControl(composite);
-
- // set F1 help
- WorkbenchHelp.setHelp(composite, IHelpContextIds.REFRESH_REMOTE_PROJECT_SELECTION_PAGE);
-
- listArea = new ListSelectionArea(
- new InputElement(),
- new RemoteContentProvider(),
- new WorkbenchLabelProvider(),
- Policy.bind("RefreshRemoteProjectSelectionPage.selectRemoteProjects")); //$NON-NLS-1$
- listArea.createArea(composite);
-
- listArea.addPropertyChangeListener(new IPropertyChangeListener() {
- public void propertyChange(PropertyChangeEvent event) {
- updateEnablement();
- }
- });
- listArea.getViewer().setSorter(new RepositorySorter());
-
- workingSetArea = new WorkingSetSelectionArea(getShell(), Policy.bind("RefreshRemoteProjectSelectionPage.noWorkingSet"), Policy.bind("RefreshRemoteProjectSelectionPage.workingSet"), settings); //$NON-NLS-1$ //$NON-NLS-2$
- setWorkingSet(workingSet);
- workingSetArea.addPropertyChangeListener(new IPropertyChangeListener() {
- public void propertyChange(PropertyChangeEvent event) {
- workingSet = (IWorkingSet)event.getNewValue();
- handleWorkingSetChange();
- }
- });
- workingSetArea.createArea(composite);
- Dialog.applyDialogFont(parent);
- }
-
- /**
- * Sets the working set that should be selected in the most recently
- * used working set list.
- *
- * @param workingSet the working set that should be selected.
- * has to exist in the list returned by
- * org.eclipse.ui.IWorkingSetManager#getRecentWorkingSets().
- * Must not be null.
- */
- public void setWorkingSet(IWorkingSet workingSet) {
- this.workingSet = workingSet;
-
- if (workingSetArea != null) {
- workingSetArea.setWorkingSet(workingSet);
- }
- }
-
- private void handleWorkingSetChange() {
- if (workingSet != null) {
- // check any projects in the working set
- listArea.getViewer().setAllChecked(false);
- RepositoryManager manager = CVSUIPlugin.getPlugin().getRepositoryManager();
- ICVSRemoteResource[] resources = manager.filterResources(workingSet, rootFolders);
- for (int i = 0; i < resources.length; i++) {
- ICVSRemoteResource resource = resources[i];
- listArea.getViewer().setChecked(resource, true);
- }
- }
- }
-
- private void updateEnablement() {
- boolean atLeastOne = listArea.getViewer().getCheckedElements().length > 0;
- setPageComplete(atLeastOne);
- }
-
- /**
- * Method getSelectedRemoteProject.
- * @return ICVSRemoteResource[]
- */
- public ICVSRemoteResource[] getSelectedRemoteProject() {
- Object[] checked = listArea.getViewer().getCheckedElements();
- return (ICVSRemoteResource[]) Arrays.asList(checked).toArray(new ICVSRemoteResource[checked.length]);
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RefreshRemoteProjectWizard.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RefreshRemoteProjectWizard.java
deleted file mode 100644
index 6f9e95087..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RefreshRemoteProjectWizard.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.repo;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.dialogs.*;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.window.Window;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.ui.*;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-
-/**
- * Wizard for refreshing the tags for a CVS repository location
- */
-public class RefreshRemoteProjectWizard extends Wizard {
-
- // The initial size of this wizard.
- private final static int INITIAL_WIDTH = 300;
- private final static int INITIAL_HEIGHT = 350;
-
- private ICVSRepositoryLocation root;
- private ICVSRemoteResource[] rootFolders;
- private RefreshRemoteProjectSelectionPage projectSelectionPage;
- private IDialogSettings settings;
-
- public static boolean execute(Shell shell, final ICVSRepositoryLocation root) {
- final ICVSRemoteResource[][] rootFolders = new ICVSRemoteResource[1][0];
- rootFolders[0] = null;
- try {
- new ProgressMonitorDialog(shell).run(true, true, new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- try {
- rootFolders[0] = CVSUIPlugin.getPlugin().getRepositoryManager().getFoldersForTag(root, CVSTag.DEFAULT, monitor);
- } catch (CVSException e) {
- throw new InvocationTargetException(e);
- }
- }
- });
- } catch (InvocationTargetException e) {
- CVSUIPlugin.openError(shell, null, null, e);
- return false;
- } catch (InterruptedException e) {
- return false;
- }
- RefreshRemoteProjectWizard wizard = new RefreshRemoteProjectWizard(root, rootFolders[0]);
- WizardDialog dialog = new WizardDialog(shell, wizard);
- /**
- * This is the only place where a size hint > 0 is required. The wizard
- * page should in general have hints of 0 (and grab excessive space).
- */
- dialog.setMinimumPageSize(INITIAL_WIDTH, INITIAL_HEIGHT);
- return (dialog.open() == Window.OK);
- }
-
- public RefreshRemoteProjectWizard(ICVSRepositoryLocation root, ICVSRemoteResource[] rootFolders) {
- this.root = root;
- this.rootFolders = rootFolders;
- IDialogSettings workbenchSettings = CVSUIPlugin.getPlugin().getDialogSettings();
- this.settings = workbenchSettings.getSection("RefreshRemoteProjectWizard");//$NON-NLS-1$
- if (settings == null) {
- this.settings = workbenchSettings.addNewSection("RefreshRemoteProjectWizard");//$NON-NLS-1$
- }
- setWindowTitle(Policy.bind("RefreshRemoteProjectWizard.title")); //$NON-NLS-1$
- }
-
- /**
- * @see org.eclipse.jface.wizard.IWizard#addPages()
- */
- public void addPages() {
- setNeedsProgressMonitor(true);
- ImageDescriptor substImage = CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_WIZBAN_NEW_LOCATION);
- projectSelectionPage = new RefreshRemoteProjectSelectionPage(
- "ProjectSelectionPage", //$NON-NLS-1$
- Policy.bind("RefreshRemoteProjectSelectionPage.pageTitle"), //$NON-NLS-1$
- substImage,
- Policy.bind("RefreshRemoteProjectSelectionPage.pageDescription"), //$NON-NLS-1$
- settings, root, rootFolders);
- addPage(projectSelectionPage);
- }
-
- /**
- * @see org.eclipse.jface.wizard.Wizard#performFinish()
- */
- public boolean performFinish() {
- final ICVSRemoteResource[] selectedFolders = projectSelectionPage.getSelectedRemoteProject();
- try {
- getContainer().run(true, true, new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- final RepositoryManager manager = CVSUIPlugin.getPlugin().getRepositoryManager();
- // Run in the manager to avoid multiple repo view updates
- manager.run(new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException,InterruptedException {
- monitor.beginTask(null, 100);
- ICVSRemoteResource[] failedFolders = internalRefresh(manager, selectedFolders, false /* recurse */, Policy.subMonitorFor(monitor, 80));
- if (failedFolders.length > 0) {
- // Go deep any any failed folders.
- if (promptForDeepRefresh(failedFolders))
- internalRefresh(manager, failedFolders, true /* recurse */, Policy.subMonitorFor(monitor, 20));
- }
- monitor.done();
- }
- }, monitor);
- }
- });
- return true;
- } catch (InvocationTargetException e) {
- CVSUIPlugin.openError(getShell(), null, null ,e);
- } catch (InterruptedException e) {
- }
- return false;
- }
-
- /*
- * Refresh the tags of the given resources and return those for which no tags were found.
- */
- private ICVSRemoteResource[] internalRefresh(final RepositoryManager manager, final ICVSRemoteResource[] selectedFolders, final boolean recurse, IProgressMonitor monitor) throws InvocationTargetException {
- List failedFolders = new ArrayList();
- monitor.beginTask(null, 100 * selectedFolders.length);
- try {
- for (int i = 0; i < selectedFolders.length; i++) {
- ICVSRemoteResource resource = selectedFolders[i];
- if (resource instanceof ICVSFolder) {
- CVSTag[] tags = manager.refreshDefinedTags((ICVSFolder)resource, recurse, true /* notify */, Policy.subMonitorFor(monitor, 100));
- if (tags.length == 0) {
- failedFolders.add(resource);
- }
- }
- }
- return (ICVSRemoteResource[]) failedFolders.toArray(new ICVSRemoteResource[failedFolders.size()]);
- } catch (TeamException e) {
- throw new InvocationTargetException(e);
- } finally {
- monitor.done();
- }
- }
-
- private boolean promptForDeepRefresh(final ICVSRemoteResource[] folders) {
- final boolean[] prompt = new boolean[] { false };
- getShell().getDisplay().syncExec(new Runnable() {
- public void run() {
- MessageDialog dialog = new MessageDialog(getShell(), Policy.bind("RefreshRemoteProjectWizard.0"), null, //$NON-NLS-1$
- getNoTagsMessage(folders),
- MessageDialog.INFORMATION,
- new String[] {
- Policy.bind("RefreshRemoteProjectWizard.1"), //$NON-NLS-1$
- Policy.bind("RefreshRemoteProjectWizard.2") //$NON-NLS-1$
- }, 1);
- int code = dialog.open();
- if (code == 0) {
- prompt[0] = true;
- }
-
- }
- });
- return prompt[0];
- }
-
- private String getNoTagsMessage(ICVSRemoteResource[] folders) {
- if (folders.length == 1) {
- return Policy.bind("RefreshRemoteProjectWizard.3", folders[0].getRepositoryRelativePath()); //$NON-NLS-1$
- }
- return Policy.bind("RefreshRemoteProjectWizard.4", Integer.toString(folders.length)); //$NON-NLS-1$
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RefreshTagsAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RefreshTagsAction.java
deleted file mode 100644
index a845aa27c..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RefreshTagsAction.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.repo;
-
-import org.eclipse.jface.action.IAction;
-import org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation;
-
-/**
- * Action that refreshs the tags in the CVS repositories view.
- */
-public class RefreshTagsAction extends CVSRepoViewAction {
-
- /**
- * @see org.eclipse.team.internal.ccvs.ui.actions.CVSAction#execute(org.eclipse.jface.action.IAction)
- */
- protected void execute(IAction action) {
- ICVSRepositoryLocation[] locations = getSelectedRepositoryLocations();
- RefreshRemoteProjectWizard.execute(getShell(), locations[0]);
- }
-
- /**
- * @see org.eclipse.team.internal.ui.actions.TeamAction#isEnabled()
- */
- protected boolean isEnabled() {
- ICVSRepositoryLocation[] locations = getSelectedRepositoryLocations();
- if (locations.length != 1) return false;
- return true;
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RemoteProjectsView.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RemoteProjectsView.java
deleted file mode 100644
index 84b0a63dc..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RemoteProjectsView.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.repo;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.internal.ccvs.ui.model.CVSTagElement;
-import org.eclipse.team.internal.ccvs.ui.model.RemoteProjectsElement;
-import org.eclipse.team.internal.ui.actions.TeamAction;
-import org.eclipse.ui.IWorkbenchPart;
-
-/**
- * This view shows a list of projects stored in a repository that share the same
- * tag
- */
-public class RemoteProjectsView extends RemoteViewPart {
-
- public static final String VIEW_ID = "org.eclipse.team.ccvs.ui.RemoteProjectsView"; //$NON-NLS-1$
-
- private RemoteProjectsElement root;
-
- /**
- * Constructor for RemoteProjectsView.
- * @param partName
- */
- public RemoteProjectsView() {
- super(VIEW_ID);
- }
-
- protected void initializeListeners() {
- // listen for selection changes in the repo view
- getSite().getWorkbenchWindow().getSelectionService().addPostSelectionListener(RepositoriesView.VIEW_ID, this);
- getSite().getWorkbenchWindow().getSelectionService().addPostSelectionListener(RemoteTagsView.VIEW_ID, this);
- }
-
- /**
- * @see org.eclipse.ui.IWorkbenchPart#dispose()
- */
- public void dispose() {
- getSite().getWorkbenchWindow().getSelectionService().removePostSelectionListener(RepositoriesView.VIEW_ID, this);
- getSite().getWorkbenchWindow().getSelectionService().removePostSelectionListener(RemoteTagsView.VIEW_ID, this);
- super.dispose();
- }
-
- /**
- * @see org.eclipse.ui.ISelectionListener#selectionChanged(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
- */
- public void selectionChanged(IWorkbenchPart part, ISelection selection) {
- Object[] selected = TeamAction.getSelectedAdaptables(selection, ICVSRepositoryLocation.class);
- if (selected.length != 0) {
- root.setRoot((ICVSRepositoryLocation)selected[0]);
- } else {
- selected = TeamAction.getSelectedAdaptables(selection, CVSTagElement.class);
- if (selected.length != 0) {
- CVSTagElement element = (CVSTagElement)selected[0];
- root.setRoot(element.getRoot());
- root.setTag(element.getTag());
- }
- };
- refreshViewer();
- }
-
- /**
- * @see org.eclipse.team.internal.ccvs.ui.repo.RemoteViewPart#getTreeInput()
- */
- protected Object getTreeInput() {
- root = new RemoteProjectsElement();
- return root;
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RemoteTagsView.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RemoteTagsView.java
deleted file mode 100644
index 9826ee5ce..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RemoteTagsView.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.repo;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.internal.ui.actions.TeamAction;
-import org.eclipse.ui.IWorkbenchPart;
-
-
-/**
- * This view shows the tags for the repository selected in the Repositories view
- */
-public class RemoteTagsView extends RemoteViewPart {
-
- public static final String VIEW_ID = "org.eclipse.team.ccvs.ui.RemoteTagsView"; //$NON-NLS-1$
-
- /**
- * Constructor for RemoteTagsView.
- * @param partName
- */
- public RemoteTagsView() {
- super(VIEW_ID);
- }
-
- /**
- * @see org.eclipse.team.internal.ccvs.ui.repo.RemoteViewPart#getTreeInput()
- */
- protected Object getTreeInput() {
- return null;
- }
-
- protected void initializeListeners() {
- // listen for selection changes in the repo view
- getSite().getWorkbenchWindow().getSelectionService().addPostSelectionListener(RepositoriesView.VIEW_ID, this);
- }
-
- /**
- * @see org.eclipse.ui.IWorkbenchPart#dispose()
- */
- public void dispose() {
- getSite().getWorkbenchWindow().getSelectionService().removePostSelectionListener(RepositoriesView.VIEW_ID, this);
- super.dispose();
- }
-
- /**
- * @see org.eclipse.ui.ISelectionListener#selectionChanged(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
- */
- public void selectionChanged(IWorkbenchPart part, ISelection selection) {
- Object[] selected = TeamAction.getSelectedAdaptables(selection, ICVSRepositoryLocation.class);
- if (selected.length == 0) {
- getViewer().setInput(null);
- } else {
- getViewer().setInput(selected[0]);
- };
- refreshViewer();
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RemoteViewPart.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RemoteViewPart.java
deleted file mode 100644
index 13319967e..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RemoteViewPart.java
+++ /dev/null
@@ -1,429 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.repo;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IMenuListener;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.window.Window;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.KeyAdapter;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.team.internal.ccvs.core.ICVSRemoteFile;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.ICVSUIConstants;
-import org.eclipse.team.internal.ccvs.ui.IHelpContextIds;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.actions.OpenRemoteFileAction;
-import org.eclipse.team.internal.ccvs.ui.model.RemoteContentProvider;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.ISelectionListener;
-import org.eclipse.ui.IWorkbenchActionConstants;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkingSet;
-import org.eclipse.ui.IWorkingSetManager;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.actions.ActionFactory;
-import org.eclipse.ui.dialogs.IWorkingSetEditWizard;
-import org.eclipse.ui.dialogs.IWorkingSetSelectionDialog;
-import org.eclipse.ui.help.WorkbenchHelp;
-import org.eclipse.ui.model.WorkbenchLabelProvider;
-import org.eclipse.ui.part.DrillDownAdapter;
-import org.eclipse.ui.part.ViewPart;
-
-/**
- * This class acts as a superclass to all remote CVS tree views.
- */
-public abstract class RemoteViewPart extends ViewPart implements ISelectionListener {
-
- // The tree viewer
- protected TreeViewer viewer;
-
- // Drill down adapter
- private DrillDownAdapter drillPart;
-
- private Action refreshAction;
- private Action collapseAllAction;
-
- private Action selectWorkingSetAction;
- private Action deselectWorkingSetAction;
- private Action editWorkingSetAction;
- private OpenRemoteFileAction openAction;
-
- private RemoteContentProvider contentProvider;
- private IDialogSettings settings;
- private static final String SELECTED_WORKING_SET = "SelectedWorkingSet"; //$NON-NLS-1$
-
- private class ChangeWorkingSetAction extends Action {
- String name;
- public ChangeWorkingSetAction(String name, int index) {
- super(Policy.bind("RepositoriesView.workingSetMenuItem", new Integer(index).toString(), name)); //$NON-NLS-1$
- this.name = name;
- }
- public void run() {
- IWorkingSetManager manager = PlatformUI.getWorkbench().getWorkingSetManager();
- setWorkingSet(manager.getWorkingSet(name), true);
- }
- }
-
- protected RemoteViewPart(String partName) {
- IDialogSettings workbenchSettings = CVSUIPlugin.getPlugin().getDialogSettings();
- settings = workbenchSettings.getSection(partName);
- if (settings == null) {
- settings = workbenchSettings.addNewSection(partName);
- }
- String name = settings.get(SELECTED_WORKING_SET);
- IWorkingSet set = null;
- if (name != null)
- set = PlatformUI.getWorkbench().getWorkingSetManager().getWorkingSet(name);
- setWorkingSet(set, false);
- }
-
- /**
- * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
- */
- public void createPartControl(Composite parent) {
- viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
- viewer.setContentProvider(getContentProvider());
- viewer.setLabelProvider(new WorkbenchLabelProvider());
- getSite().setSelectionProvider(viewer);
- viewer.setInput(getTreeInput());
- viewer.setSorter(new RepositorySorter());
- viewer.getControl().addKeyListener(getKeyListener());
- drillPart = new DrillDownAdapter(viewer);
-
- contributeActions();
- initializeListeners();
-
- // F1 Help
- String helpID = getHelpContextId();
- if (helpID != null)
- WorkbenchHelp.setHelp(viewer.getControl(), helpID);
- }
-
- /**
- * @see WorkbenchPart#setFocus
- */
- public void setFocus() {
- viewer.getControl().setFocus();
- }
-
- /**
- * Method getHelpContextId should be overridden by subclasses to provide the
- * appropriate help id.
- *
- * @return String
- */
- protected String getHelpContextId() {
- return null;
- }
-
- /**
- * Method getTreeInput.
- * @return Object
- */
- protected abstract Object getTreeInput();
-
- /**
- * @see org.eclipse.team.internal.ccvs.ui.repo.RemoteViewPart#getContentProvider()
- */
- protected RemoteContentProvider getContentProvider() {
- if (contentProvider == null) {
- contentProvider = new RemoteContentProvider();
- }
- return contentProvider;
- };
-
- protected KeyAdapter getKeyListener() {
- return new KeyAdapter() {
- public void keyPressed(KeyEvent event) {
- if (event.keyCode == SWT.F5) {
- refreshAction.run();
- }
- }
- };
- }
-
- protected void initializeListeners() {
- // listen for selection changes in the repo view
- getSite().getWorkbenchWindow().getSelectionService().addPostSelectionListener(this);
- }
-
- protected IWorkingSet getWorkingSet() {
- return getContentProvider().getWorkingSet();
- }
-
- protected void setWorkingSet(IWorkingSet workingSet, boolean refreshViewer) {
- if (settings != null) {
- String name = null;
- if (workingSet != null)
- name = workingSet.getName();
- settings.put(SELECTED_WORKING_SET, name);
- }
- getContentProvider().setWorkingSet(workingSet);
- String toolTip;
- if (workingSet == null) {
- toolTip = null;
- } else {
- toolTip = Policy.bind("RemoteViewPart.workingSetToolTip", workingSet.getName()); //$NON-NLS-1$
- }
- setTitleToolTip(toolTip);
- if (refreshViewer) refreshViewer();
- }
-
- /**
- * Contribute actions to the view
- */
- protected void contributeActions() {
-
- final Shell shell = getShell();
-
- // Refresh (toolbar)
- CVSUIPlugin plugin = CVSUIPlugin.getPlugin();
- refreshAction = new Action(Policy.bind("RepositoriesView.refresh"), CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_REFRESH_ENABLED)) { //$NON-NLS-1$
- public void run() {
- refreshAll();
- }
- };
- refreshAction.setToolTipText(Policy.bind("RepositoriesView.refreshTooltip")); //$NON-NLS-1$
- refreshAction.setDisabledImageDescriptor(plugin.getImageDescriptor(ICVSUIConstants.IMG_REFRESH_DISABLED));
- refreshAction.setHoverImageDescriptor(plugin.getImageDescriptor(ICVSUIConstants.IMG_REFRESH));
- getViewSite().getActionBars().setGlobalActionHandler(ActionFactory.REFRESH.getId(), refreshAction);
-
- collapseAllAction = new Action(Policy.bind("RepositoriesView.collapseAll"), CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_COLLAPSE_ALL_ENABLED)) { //$NON-NLS-1$
- public void run() {
- collapseAll();
- }
- };
- collapseAllAction.setToolTipText(Policy.bind("RepositoriesView.collapseAllTooltip")); //$NON-NLS-1$
- collapseAllAction.setHoverImageDescriptor(plugin.getImageDescriptor(ICVSUIConstants.IMG_COLLAPSE_ALL));
-
- // Select Working Set (popup)
- selectWorkingSetAction = new Action(Policy.bind("RepositoriesView.newWorkingSet")) { //$NON-NLS-1$
- public void run() {
- IWorkingSetManager manager = PlatformUI.getWorkbench().getWorkingSetManager();
- IWorkingSetSelectionDialog dialog = manager.createWorkingSetSelectionDialog(shell, false);
- IWorkingSet workingSet = null;
- if (workingSet != null)
- dialog.setSelection(new IWorkingSet[]{workingSet});
-
- if (dialog.open() == Window.OK) {
- IWorkingSet[] result = dialog.getSelection();
- if (result != null && result.length > 0) {
- setWorkingSet(result[0], true);
- manager.addRecentWorkingSet(result[0]);
- } else {
- setWorkingSet(null, true);
- }
- }
- }
- };
- WorkbenchHelp.setHelp(selectWorkingSetAction, IHelpContextIds.SELECT_WORKING_SET_ACTION);
-
- // Deselect Working Set (popup)
- deselectWorkingSetAction = new Action(Policy.bind("RepositoriesView.deselectWorkingSet")) { //$NON-NLS-1$
- public void run() {
- setWorkingSet(null, true);
- }
- };
- WorkbenchHelp.setHelp(deselectWorkingSetAction, IHelpContextIds.DESELECT_WORKING_SET_ACTION);
-
- // Edit Working Set (popup)
- editWorkingSetAction = new Action(Policy.bind("RepositoriesView.editWorkingSet")) { //$NON-NLS-1$
- public void run() {
- IWorkingSetManager manager = PlatformUI.getWorkbench().getWorkingSetManager();
- IWorkingSet workingSet = getWorkingSet();
- if (workingSet == null) {
- setEnabled(false);
- return;
- }
- IWorkingSetEditWizard wizard = manager.createWorkingSetEditWizard(workingSet);
- if (wizard == null) {
- // todo
- String title = Policy.bind("EditWorkingSetAction.error.nowizard.title"); //$NON-NLS-1$
- String message = Policy.bind("EditWorkingSetAction.error.nowizard.message"); //$NON-NLS-1$
- CVSUIPlugin.openError(shell, title, message, null);
- return;
- }
- WizardDialog dialog = new WizardDialog(shell, wizard);
- dialog.create();
- if (dialog.open() == WizardDialog.OK)
- setWorkingSet(wizard.getSelection(), true);
- }
- };
- WorkbenchHelp.setHelp(editWorkingSetAction, IHelpContextIds.EDIT_WORKING_SET_ACTION);
-
- // Create the popup menu
- MenuManager menuMgr = new MenuManager();
- Tree tree = viewer.getTree();
- Menu menu = menuMgr.createContextMenu(tree);
- menuMgr.addMenuListener(new IMenuListener() {
- public void menuAboutToShow(IMenuManager manager) {
- addWorkbenchActions(manager);
- }
-
- });
- menuMgr.setRemoveAllWhenShown(true);
- tree.setMenu(menu);
- getSite().registerContextMenu(menuMgr, viewer);
-
- // Create the local tool bar
- IActionBars bars = getViewSite().getActionBars();
- IToolBarManager tbm = bars.getToolBarManager();
- drillPart.addNavigationActions(tbm);
- tbm.add(refreshAction);
- tbm.add(new Separator());
- tbm.add(collapseAllAction);
- tbm.update(false);
-
- // Create the open action for double clicks
- openAction = new OpenRemoteFileAction();
- viewer.addDoubleClickListener(new IDoubleClickListener() {
- public void doubleClick(DoubleClickEvent e) {
- handleDoubleClick(e);
- }
- });
-
- updateWorkingSetMenu();
- bars.updateActionBars();
- }
-
- /**
- * Add the menu actions that were contributed in plugin.xml
- *
- * @param manager
- */
- protected void addWorkbenchActions(IMenuManager manager) {
- // File actions go first (view file)
- manager.add(new Separator(IWorkbenchActionConstants.GROUP_FILE));
- // Misc additions
- manager.add(new Separator("checkoutGroup")); //$NON-NLS-1$
- manager.add(new Separator("tagGroup")); //$NON-NLS-1$
- manager.add(new Separator("miscGroup")); //$NON-NLS-1$
- manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
-
- manager.add(refreshAction);
- }
-
- /**
- * Method getShell.
- * @return Shell
- */
- protected Shell getShell() {
- return viewer.getTree().getShell();
- }
-
- public void updateWorkingSetMenu() {
- IActionBars bars = getViewSite().getActionBars();
- IMenuManager mgr = bars.getMenuManager();
-
- mgr.removeAll();
-
- mgr.add(selectWorkingSetAction);
- mgr.add(deselectWorkingSetAction);
- deselectWorkingSetAction.setEnabled(getWorkingSet() != null);
- mgr.add(editWorkingSetAction);
- editWorkingSetAction.setEnabled(getWorkingSet() != null);
-
- mgr.add(new Separator());
-
- IWorkingSetManager manager = PlatformUI.getWorkbench().getWorkingSetManager();
- IWorkingSet[] workingSets = manager.getWorkingSets();
- for (int i = 0; i < workingSets.length; i++) {
- String name = workingSets[i].getName();
- ChangeWorkingSetAction action = new ChangeWorkingSetAction(name, i + 1);
- mgr.add(action);
- action.setChecked(getWorkingSet() != null && getWorkingSet().getName().equals(name));
- }
-
- bars.updateActionBars();
- }
-
- protected void refreshAll() {
- //CVSUIPlugin.getPlugin().getRepositoryManager().clearCaches();
- refreshViewer();
- }
-
- protected void refreshViewer() {
- if (viewer == null) return;
- ((RemoteContentProvider)viewer.getContentProvider()).cancelJobs(CVSUIPlugin.getPlugin().getRepositoryManager().getKnownRepositoryRoots());
- CVSUIPlugin.getPlugin().getRepositoryManager().purgeCache();
- updateWorkingSetMenu();
- viewer.refresh();
- }
-
- public void collapseAll() {
- if (viewer == null) return;
- viewer.getControl().setRedraw(false);
- viewer.collapseToLevel(viewer.getInput(), TreeViewer.ALL_LEVELS);
- viewer.getControl().setRedraw(true);
- }
- /**
- * The mouse has been double-clicked in the tree, perform appropriate
- * behaviour.
- */
- private void handleDoubleClick(DoubleClickEvent e) {
- // Only act on single selection
- ISelection selection = e.getSelection();
- if (selection instanceof IStructuredSelection) {
- IStructuredSelection structured = (IStructuredSelection)selection;
- if (structured.size() == 1) {
- Object first = structured.getFirstElement();
- if (first instanceof ICVSRemoteFile) {
- // It's a file, open it.
- openAction.selectionChanged(null, selection);
- openAction.run(null);
- } else {
- // Try to expand/contract
- viewer.setExpandedState(first, !viewer.getExpandedState(first));
- }
- }
- }
- }
-
- /**
- * Returns the viewer.
- * @return TreeViewer
- */
- protected TreeViewer getViewer() {
- return viewer;
- }
-
- /**
- * @see org.eclipse.ui.ISelectionListener#selectionChanged(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
- */
- public void selectionChanged(IWorkbenchPart part, ISelection selection) {
- }
-
- /**
- * @see org.eclipse.ui.IWorkbenchPart#dispose()
- */
- public void dispose() {
- getSite().getWorkbenchWindow().getSelectionService().removePostSelectionListener(this);
- super.dispose();
- viewer = null;
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RemoveDateTagAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RemoveDateTagAction.java
deleted file mode 100644
index 342491766..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RemoveDateTagAction.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.repo;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.team.internal.ccvs.core.CVSTag;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.actions.CVSAction;
-import org.eclipse.team.internal.ccvs.ui.model.CVSTagElement;
-import org.eclipse.ui.actions.SelectionListenerAction;
-
-
-public class RemoveDateTagAction extends SelectionListenerAction {
- private IStructuredSelection selection;
-
- public RemoveDateTagAction() {
- super(Policy.bind("RemoveDateTagAction.0")); //$NON-NLS-1$
- }
-
- public void run() {
- CVSTagElement[] elements = getSelectedCVSTagElements();
- if (elements.length == 0) return;
- for(int i = 0; i < elements.length; i++){
- RepositoryManager mgr = CVSUIPlugin.getPlugin().getRepositoryManager();
- CVSTag tag = elements[i].getTag();
- if(tag.getType() == CVSTag.DATE){
- mgr.removeDateTag(elements[i].getRoot(),tag);
- }
- }
- }
-
- protected boolean updateSelection(IStructuredSelection selection) {
- this.selection = selection;
- boolean b = containsDataTag();
- setEnabled(b);
- return b;
- }
-
- private boolean containsDataTag(){
- CVSTagElement[] elements = getSelectedCVSTagElements();
- if (elements.length > 0){
- for(int i = 0; i < elements.length; i++){
- CVSTag tag = elements[i].getTag();
- if(tag.getType() == CVSTag.DATE){
- return true;
- }
- }
- }
- return false;
- }
-
- /**
- * Returns the selected CVS date tag elements
- */
- private CVSTagElement[] getSelectedCVSTagElements() {
- ArrayList cvsTagElements = null;
- if (selection!=null && !selection.isEmpty()) {
- cvsTagElements = new ArrayList();
- Iterator elements = selection.iterator();
- while (elements.hasNext()) {
- Object next = CVSAction.getAdapter(elements.next(), CVSTagElement.class);
- if (next instanceof CVSTagElement) {
- cvsTagElements.add(next);
- }
- }
- }
- if (cvsTagElements != null && !cvsTagElements.isEmpty()) {
- CVSTagElement[] result = new CVSTagElement[cvsTagElements.size()];
- cvsTagElements.toArray(result);
- return result;
- }
- return new CVSTagElement[0];
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RemoveRootAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RemoveRootAction.java
deleted file mode 100644
index d5b72d705..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RemoveRootAction.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.repo;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.jobs.ISchedulingRule;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.core.RepositoryProvider;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.core.util.KnownRepositories;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.actions.CVSAction;
-import org.eclipse.team.internal.ccvs.ui.model.RepositoryLocationSchedulingRule;
-import org.eclipse.team.internal.ui.dialogs.DetailsDialogWithProjects;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.actions.SelectionListenerAction;
-import org.eclipse.ui.progress.IProgressService;
-
-
-/**
- * RemoveRootAction removes a repository
- */
-public class RemoveRootAction extends SelectionListenerAction {
- private IStructuredSelection selection;
- /* internal use only */ Shell shell;
- private RepositoriesView view;
-
- public RemoveRootAction(Shell shell, RepositoriesView view) {
- super(Policy.bind("RemoteRootAction.label")); //$NON-NLS-1$
- this.view = view;
- this.shell = shell;
- }
-
- /**
- * Returns the selected remote files
- */
- protected ICVSRepositoryLocation[] getSelectedRemoteRoots() {
- ArrayList resources = null;
- if (selection!=null && !selection.isEmpty()) {
- resources = new ArrayList();
- Iterator elements = selection.iterator();
- while (elements.hasNext()) {
- Object next = CVSAction.getAdapter(elements.next(), RepositoryRoot.class);
- if (next instanceof RepositoryRoot) {
- resources.add(((RepositoryRoot)next).getRoot());
- }
- }
- }
- if (resources != null && !resources.isEmpty()) {
- ICVSRepositoryLocation[] result = new ICVSRepositoryLocation[resources.size()];
- resources.toArray(result);
- return result;
- }
- return new ICVSRepositoryLocation[0];
- }
-
- protected String getErrorTitle() {
- return Policy.bind("RemoveRootAction.removeRoot_3"); //$NON-NLS-1$
- }
-
- public void run() {
- ICVSRepositoryLocation[] roots = getSelectedRemoteRoots();
- if (roots.length == 0) return;
- for (int i = 0; i < roots.length; i++) {
- final ICVSRepositoryLocation root = roots[i];
- try {
- // Check if any projects are shared with the repository
- IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
- final ArrayList shared = new ArrayList();
- for (int j = 0; j < projects.length; j++) {
- RepositoryProvider teamProvider = RepositoryProvider.getProvider(projects[j], CVSProviderPlugin.getTypeId());
- if (teamProvider!=null) {
- CVSTeamProvider cvsProvider = (CVSTeamProvider)teamProvider;
- if (cvsProvider.getCVSWorkspaceRoot().getRemoteLocation().equals(roots[i])) {
- shared.add(projects[j]);
- }
- }
- }
-
- // This will notify the RepositoryManager of the removal
- if (!shared.isEmpty()) {
- final String location = roots[i].getLocation();
- shell.getDisplay().syncExec(new Runnable() {
- public void run() {
- DetailsDialogWithProjects dialog = new DetailsDialogWithProjects(
- shell,
- Policy.bind("RemoteRootAction.Unable_to_Discard_Location_1"), //$NON-NLS-1$
- Policy.bind("RemoteRootAction.Projects_in_the_local_workspace_are_shared_with__2", location), //$NON-NLS-1$
- Policy.bind("RemoteRootAction.The_projects_that_are_shared_with_the_above_repository_are__4"), //$NON-NLS-1$
- (IProject[]) shared.toArray(new IProject[shared.size()]),
- false,
- DetailsDialogWithProjects.DLG_IMG_ERROR);
- dialog.open();
- }
- });
- } else {
- IProgressService manager = PlatformUI.getWorkbench().getProgressService();
- try {
- manager.busyCursorWhile(new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- ISchedulingRule rule = new RepositoryLocationSchedulingRule(root);
- try {
- Platform.getJobManager().beginRule(rule, monitor);
- view.getContentProvider().cancelJobs(root);
- KnownRepositories.getInstance().disposeRepository(root);
- } finally {
- Platform.getJobManager().endRule(rule);
- }
-
- }
- });
- } catch (InvocationTargetException e) {
- throw CVSException.wrapException(e);
- } catch (InterruptedException e) {
- // Canceled
- return;
- }
- }
- } catch (CVSException e) {
- CVSUIPlugin.openError(view.getShell(), null, null, e, CVSUIPlugin.PERFORM_SYNC_EXEC | CVSUIPlugin.LOG_TEAM_EXCEPTIONS | CVSUIPlugin.LOG_NONTEAM_EXCEPTIONS);
- }
- }
- }
-
- protected boolean updateSelection(IStructuredSelection selection) {
- this.selection = selection;
- ICVSRepositoryLocation[] roots = getSelectedRemoteRoots();
- boolean b = roots.length > 0;
- setEnabled(b);
- return b;
- }
-
-}
-
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RepositoriesView.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RepositoriesView.java
deleted file mode 100644
index 8735040af..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RepositoriesView.java
+++ /dev/null
@@ -1,327 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.repo;
-
-
-import java.util.Properties;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.KeyAdapter;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.ICVSRemoteFile;
-import org.eclipse.team.internal.ccvs.core.ICVSRemoteResource;
-import org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.internal.ccvs.core.ICVSResource;
-import org.eclipse.team.internal.ccvs.core.util.KnownRepositories;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.ICVSUIConstants;
-import org.eclipse.team.internal.ccvs.ui.IHelpContextIds;
-import org.eclipse.team.internal.ccvs.ui.IRepositoryListener;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.WorkbenchUserAuthenticator;
-import org.eclipse.team.internal.ccvs.ui.actions.CVSAction;
-import org.eclipse.team.internal.ccvs.ui.model.AllRootsElement;
-import org.eclipse.team.internal.ccvs.ui.wizards.NewLocationWizard;
-import org.eclipse.team.internal.core.TeamPlugin;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IWorkbenchActionConstants;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.actions.ActionFactory;
-import org.eclipse.ui.dialogs.PropertyDialogAction;
-import org.eclipse.ui.help.WorkbenchHelp;
-
-/**
- * RepositoriesView is a view on a set of known CVS repositories
- * which allows navigation of the structure of the repository and
- * the performing of CVS-specific operations on the repository contents.
- */
-public class RepositoriesView extends RemoteViewPart {
- public static final String VIEW_ID = "org.eclipse.team.ccvs.ui.RepositoriesView"; //$NON-NLS-1$
-
- // The root
- private AllRootsElement root;
-
- // Actions
- private IAction removeAction;
- private Action newAction;
- private Action newAnonAction;
- private PropertyDialogAction propertiesAction;
- private RemoveRootAction removeRootAction;
- private RemoveDateTagAction removeDateTagAction;
-
- IRepositoryListener listener = new IRepositoryListener() {
- public void repositoryAdded(final ICVSRepositoryLocation root) {
- getViewer().getControl().getDisplay().asyncExec(new Runnable() {
- public void run() {
- refreshViewer();
- getViewer().setSelection(new StructuredSelection(root));
- }
- });
- }
- public void repositoryRemoved(ICVSRepositoryLocation root) {
- refresh();
- }
- public void repositoriesChanged(ICVSRepositoryLocation[] roots) {
- refresh();
- }
- private void refresh() {
- Display display = getViewer().getControl().getDisplay();
- display.asyncExec(new Runnable() {
- public void run() {
- RepositoriesView.this.refreshViewer();
- }
- });
- }
- };
-
- /**
- * Constructor for RepositoriesView.
- * @param partName
- */
- public RepositoriesView() {
- super(VIEW_ID);
- }
-
- /**
- * Contribute actions to the view
- */
- protected void contributeActions() {
-
- final Shell shell = getShell();
-
- // Create actions
-
- // New Repository (popup)
- newAction = new Action(Policy.bind("RepositoriesView.new"), CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_NEWLOCATION)) { //$NON-NLS-1$
- public void run() {
- NewLocationWizard wizard = new NewLocationWizard();
- WizardDialog dialog = new WizardDialog(shell, wizard);
- dialog.open();
- }
- };
- WorkbenchHelp.setHelp(newAction, IHelpContextIds.NEW_REPOSITORY_LOCATION_ACTION);
-
- if (includeAnonConnection()) {
- newAnonAction = new Action(Policy.bind("RepositoriesView.newAnonCVS"), CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_NEWLOCATION)) { //$NON-NLS-1$
- public void run() {
- Properties p = new Properties();
- p.setProperty("connection", "pserver"); //$NON-NLS-1$ //$NON-NLS-2$
- p.setProperty("user", "anonymous"); //$NON-NLS-1$ //$NON-NLS-2$
- p.setProperty("host", "dev.eclipse.org"); //$NON-NLS-1$ //$NON-NLS-2$
- p.setProperty("root", "/home/eclipse"); //$NON-NLS-1$ //$NON-NLS-2$
- NewLocationWizard wizard = new NewLocationWizard(p);
- WizardDialog dialog = new WizardDialog(shell, wizard);
- dialog.open();
- }
- };
- WorkbenchHelp.setHelp(newAnonAction, IHelpContextIds.NEW_DEV_ECLIPSE_REPOSITORY_LOCATION_ACTION);
- }
-
- // Properties
- propertiesAction = new PropertyDialogAction(shell, getViewer());
- getViewSite().getActionBars().setGlobalActionHandler(ActionFactory.PROPERTIES.getId(), propertiesAction);
- IStructuredSelection selection = (IStructuredSelection)getViewer().getSelection();
- if (selection.size() == 1 && selection.getFirstElement() instanceof RepositoryRoot) {
- propertiesAction.setEnabled(true);
- } else {
- propertiesAction.setEnabled(false);
- }
- getViewer().addSelectionChangedListener(new ISelectionChangedListener() {
- public void selectionChanged(SelectionChangedEvent event) {
- IStructuredSelection ss = (IStructuredSelection)event.getSelection();
- boolean enabled = ss.size() == 1 && ss.getFirstElement() instanceof RepositoryRoot;
- propertiesAction.setEnabled(enabled);
- }
- });
- removeRootAction = new RemoveRootAction(viewer.getControl().getShell(), this);
- removeRootAction.selectionChanged((IStructuredSelection)null);
- removeDateTagAction = new RemoveDateTagAction();
- removeDateTagAction.selectionChanged( (IStructuredSelection)null);
- removeAction = new Action(){
- public void run(){
- if(removeRootAction.isEnabled()){
- removeRootAction.run();
- }
- if(removeDateTagAction.isEnabled()){
- removeDateTagAction.run();
- }
- }
- };
- WorkbenchHelp.setHelp(removeRootAction, IHelpContextIds.REMOVE_REPOSITORY_LOCATION_ACTION);
- IActionBars bars = getViewSite().getActionBars();
- bars.setGlobalActionHandler(ActionFactory.DELETE.getId(), removeAction);
-
- super.contributeActions();
- }
-
- /**
- * Method includeEclipseConnection.
- * @return boolean
- */
- private boolean includeAnonConnection() {
- return System.getProperty("eclipse.cvs.anon") != null; //$NON-NLS-1$
- }
-
- /**
- * @see org.eclipse.team.internal.ccvs.ui.repo.RemoteViewPart#addWorkbenchActions(org.eclipse.jface.action.IMenuManager)
- */
- protected void addWorkbenchActions(IMenuManager manager) {
- // New actions go next
- MenuManager sub = new MenuManager(Policy.bind("RepositoriesView.newSubmenu"), IWorkbenchActionConstants.GROUP_ADD); //$NON-NLS-1$
- manager.add(sub);
- super.addWorkbenchActions(manager);
- IStructuredSelection selection = (IStructuredSelection)getViewer().getSelection();
-
- removeRootAction.selectionChanged(selection);
- removeDateTagAction.selectionChanged(selection);
- if(removeRootAction.isEnabled()) {
- manager.add(removeRootAction);
- }
- if(removeDateTagAction.isEnabled()){
- manager.add(removeDateTagAction);
- }
- if (selection.size() == 1 && selection.getFirstElement() instanceof RepositoryRoot) {
- manager.add(new Separator());
- manager.add(propertiesAction);
- }
- sub.add(newAction);
- if (newAnonAction != null)
- sub.add(newAnonAction);
- sub.add(new Separator("group1")); //$NON-NLS-1$
- }
-
- /*
- * @see WorkbenchPart#createPartControl
- */
- public void createPartControl(Composite parent) {
- super.createPartControl(parent);
- CVSUIPlugin.getPlugin().getRepositoryManager().addRepositoryListener(listener);
- }
-
- /*
- * @see WorkbenchPart#dispose
- */
- public void dispose() {
- CVSUIPlugin.getPlugin().getRepositoryManager().removeRepositoryListener(listener);
- super.dispose();
- }
-
- /**
- * Initialize the repositories and actions
- */
- private void initialize() {
- root = new AllRootsElement();
- }
-
- protected void initializeListeners() {
- super.initializeListeners();
- viewer.addSelectionChangedListener(removeRootAction);
- viewer.addSelectionChangedListener(removeDateTagAction);
- viewer.addSelectionChangedListener(new ISelectionChangedListener(){
- public void selectionChanged(SelectionChangedEvent event) {
- IStructuredSelection selection = (IStructuredSelection)event.getSelection();
- handleChange(selection);
- }
- });
- }
-
- /**
- * @see org.eclipse.team.internal.ccvs.ui.repo.RemoteViewPart#getTreeInput()
- */
- protected Object getTreeInput() {
- initialize();
- return root;
- }
-
- /**
- * @see org.eclipse.ui.ISelectionListener#selectionChanged(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
- */
- public void selectionChanged(IWorkbenchPart part, ISelection selection) {
- String msg = getStatusLineMessage(selection);
- getViewSite().getActionBars().getStatusLineManager().setMessage(msg);
- }
-
- private String getStatusLineMessage(ISelection selection) {
- if (selection==null || selection.isEmpty()) return ""; //$NON-NLS-1$
- if (!(selection instanceof IStructuredSelection)) return ""; //$NON-NLS-1$
- IStructuredSelection s = (IStructuredSelection)selection;
-
- if (s.size() > 1) return Policy.bind("RepositoriesView.NItemsSelected", String.valueOf(s.size())); //$NON-NLS-1$
- Object element = CVSAction.getAdapter(s.getFirstElement(), ICVSResource.class);
- if (element instanceof ICVSRemoteResource) {
- ICVSRemoteResource res = (ICVSRemoteResource)element;
- String name;
- if (res.isContainer()) {
- name = res.getRepositoryRelativePath();
- } else {
- try {
- name = res.getRepositoryRelativePath() + " " + ((ICVSRemoteFile)res).getRevision(); //$NON-NLS-1$
- } catch (TeamException e) {
- TeamPlugin.log(IStatus.ERROR, Policy.bind("RepositoriesView.CannotGetRevision"), e); //$NON-NLS-1$
- name = res.getRepositoryRelativePath();
- }
- }
- return Policy.bind("RepositoriesView.ResourceInRepository", name, res.getRepository().getLocation()); //$NON-NLS-1$
- }
- return Policy.bind("RepositoriesView.OneItemSelected"); //$NON-NLS-1$
- }
-
- /**
- * @see org.eclipse.team.internal.ccvs.ui.repo.RemoteViewPart#getHelpContextId()
- */
- protected String getHelpContextId() {
- return IHelpContextIds.REPOSITORIES_VIEW;
- }
-
- /**
- * @see org.eclipse.team.internal.ccvs.ui.repo.RemoteViewPart#getKeyListener()
- */
- protected KeyAdapter getKeyListener() {
- return new KeyAdapter() {
- public void keyPressed(KeyEvent event) {
- if (event.keyCode == SWT.F5) {
- if (WorkbenchUserAuthenticator.USE_ALTERNATE_PROMPTER) {
- ICVSRepositoryLocation[] locations = KnownRepositories.getInstance().getRepositories();
- for (int i = 0; i < locations.length; i++) {
- locations[i].flushUserInfo();
- }
- } else {
- refreshAll();
- }
- } else if (event.keyCode == SWT.F9 && WorkbenchUserAuthenticator.USE_ALTERNATE_PROMPTER) {
- refreshAll();
- }
- }
- };
- }
-
- private void handleChange(IStructuredSelection selection){
- removeRootAction.updateSelection(selection);
- removeDateTagAction.updateSelection(selection);
- removeAction.setEnabled(removeRootAction.isEnabled() || removeDateTagAction.isEnabled());
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RepositoriesViewContentHandler.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RepositoriesViewContentHandler.java
deleted file mode 100644
index 2b78cedc9..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RepositoriesViewContentHandler.java
+++ /dev/null
@@ -1,248 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.repo;
-
-import java.util.*;
-
-import org.eclipse.core.runtime.Path;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.core.util.KnownRepositories;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.xml.sax.*;
-import org.xml.sax.helpers.DefaultHandler;
-
-public class RepositoriesViewContentHandler extends DefaultHandler {
-
- public static final String REPOSITORIES_VIEW_TAG = "repositories-view"; //$NON-NLS-1$
-
- public static final String REPOSITORY_TAG = "repository"; //$NON-NLS-1$
- public static final String WORKING_SET_TAG = "working-set"; //$NON-NLS-1$
- public static final String CURRENT_WORKING_SET_TAG = "current-working-set"; //$NON-NLS-1$
- public static final String MODULE_TAG = "module"; //$NON-NLS-1$
- public static final String TAG_TAG = "tag"; //$NON-NLS-1$
- public static final String AUTO_REFRESH_FILE_TAG = "auto-refresh-file"; //$NON-NLS-1$
- public static final String DATE_TAGS_TAG = "date-tags"; //$NON-NLS-1$
- public static final String DATE_TAG_TAG = "date-tag"; //$NON-NLS-1$
-
- public static final String ID_ATTRIBUTE = "id"; //$NON-NLS-1$
- public static final String NAME_ATTRIBUTE = "name"; //$NON-NLS-1$
- public static final String PATH_ATTRIBUTE = "path"; //$NON-NLS-1$
- public static final String FULL_PATH_ATTRIBUTE = "full-path"; //$NON-NLS-1$
- public static final String TYPE_ATTRIBUTE = "type"; //$NON-NLS-1$
- public static final String READ_ID_ATTRIBUTE = "read-id"; //$NON-NLS-1$
- public static final String WRITE_ID_ATTRIBUTE = "write-id"; //$NON-NLS-1$
- public static final String LAST_ACCESS_TIME_ATTRIBUTE = "lastAcessTime"; //$NON-NLS-1$
-
- public static final String[] TAG_TYPES = {"head", "branch", "version", "date"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- public static final String DEFAULT_TAG_TYPE = "version"; //$NON-NLS-1$
- public static final String DEFINED_MODULE_TYPE = "defined"; //$NON-NLS-1$
-
- private RepositoryManager manager;
- private StringBuffer buffer = new StringBuffer();
- private Stack tagStack = new Stack();
- private RepositoryRoot currentRepositoryRoot;
- private String currentRemotePath;
- private List tags;
- private List dateTags;
- private List autoRefreshFiles;
- private boolean ignoreElements;
-
- private long lastAccessTime;
-
- public RepositoriesViewContentHandler(RepositoryManager manager) {
- this.manager = manager;
- }
-
- /**
- * @see ContentHandler#characters(char[], int, int)
- */
- public void characters(char[] chars, int startIndex, int length) throws SAXException {
- buffer.append(chars, startIndex, length);
- }
-
- /**
- * @see ContentHandler#endElement(java.lang.String, java.lang.String, java.lang.String)
- */
- public void endElement(String namespaceURI, String localName, String qName) throws SAXException {
-
- String elementName = getElementName(namespaceURI, localName, qName);
- if (!elementName.equals(tagStack.peek())) {
- throw new SAXException(Policy.bind("RepositoriesViewContentHandler.unmatchedTag", elementName)); //$NON-NLS-1$
- }
-
- if (elementName.equals(REPOSITORIES_VIEW_TAG)) {
- // all done
- } else if (elementName.equals(REPOSITORY_TAG)) {
- if (!ignoreElements) {
- manager.add(currentRepositoryRoot);
- }
- currentRepositoryRoot = null;
- } else if (elementName.equals(WORKING_SET_TAG)) {
- // This tag is no longer used
- ignoreElements = false;
- } else if (elementName.equals(CURRENT_WORKING_SET_TAG)) {
- // This tag is no longer used
- ignoreElements = false;
- } else if (elementName.equals(MODULE_TAG)) {
- if (! ignoreElements && currentRepositoryRoot != null) {
- currentRepositoryRoot.addTags(currentRemotePath,
- (CVSTag[]) tags.toArray(new CVSTag[tags.size()]));
- if (lastAccessTime > 0)
- currentRepositoryRoot.setLastAccessedTime(currentRemotePath, lastAccessTime);
- currentRepositoryRoot.setAutoRefreshFiles(currentRemotePath,
- (String[]) autoRefreshFiles.toArray(new String[autoRefreshFiles.size()]));
- }
- }else if(elementName.equals(DATE_TAG_TAG)){
- if (! ignoreElements && currentRepositoryRoot != null) {
- Iterator iter = dateTags.iterator();
- while(iter.hasNext()){
- CVSTag tag = (CVSTag)iter.next();
- currentRepositoryRoot.addDateTag(tag);
- }
- }
- }
- tagStack.pop();
- }
-
- /**
- * @see ContentHandler#startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes)
- */
- public void startElement(
- String namespaceURI,
- String localName,
- String qName,
- Attributes atts)
- throws SAXException {
-
- String elementName = getElementName(namespaceURI, localName, qName);
- if (elementName.equals(REPOSITORIES_VIEW_TAG)) {
- // just started
- } else if (elementName.equals(REPOSITORY_TAG)) {
- String id = atts.getValue(ID_ATTRIBUTE);
- if (id == null) {
- throw new SAXException(Policy.bind("RepositoriesViewContentHandler.missingAttribute", REPOSITORY_TAG, ID_ATTRIBUTE)); //$NON-NLS-1$
- }
- ICVSRepositoryLocation root;
- try {
- root = KnownRepositories.getInstance().getRepository(id);
- if (!KnownRepositories.getInstance().isKnownRepository(id)) {
- KnownRepositories.getInstance().addRepository(root, false);
- }
- } catch (CVSException e) {
- throw new SAXException(Policy.bind("RepositoriesViewContentHandler.errorCreatingRoot", id), e); //$NON-NLS-1$
- }
- currentRepositoryRoot = new RepositoryRoot(root);
- String name = atts.getValue(NAME_ATTRIBUTE);
- if (name != null) {
- currentRepositoryRoot.setName(name);
- }
- } else if(elementName.equals(DATE_TAGS_TAG)){
- //prepare to collect date tag
- dateTags = new ArrayList();
- } else if (elementName.equals(DATE_TAG_TAG)){
- String name = atts.getValue(NAME_ATTRIBUTE);
- if (name == null) {
- throw new SAXException(Policy.bind("RepositoriesViewContentHandler.missingAttribute", DATE_TAGS_TAG, NAME_ATTRIBUTE)); //$NON-NLS-1$
- }
- dateTags.add(new CVSTag(name, CVSTag.DATE));
- }else if (elementName.equals(WORKING_SET_TAG)) {
- String name = atts.getValue(NAME_ATTRIBUTE);
- if (name == null) {
- throw new SAXException(Policy.bind("RepositoriesViewContentHandler.missingAttribute", WORKING_SET_TAG, NAME_ATTRIBUTE)); //$NON-NLS-1$
- }
- // Ignore any elements until the corresponding end tag is reached
- ignoreElements = true;
- } else if (elementName.equals(MODULE_TAG)) {
- String path = atts.getValue(PATH_ATTRIBUTE);
- if (path == null) {
- throw new SAXException(Policy.bind("RepositoriesViewContentHandler.missingAttribute", MODULE_TAG, PATH_ATTRIBUTE)); //$NON-NLS-1$
- }
- String type = atts.getValue(TYPE_ATTRIBUTE);
- if (type != null && type.equals(DEFINED_MODULE_TYPE)) {
- path = RepositoryRoot.asDefinedModulePath(path);
- }
- long cachedTime = 0;
- String cachedTimeString = atts.getValue(LAST_ACCESS_TIME_ATTRIBUTE);
- if (cachedTimeString != null) {
- try {
- Long time = Long.valueOf(cachedTimeString);
- cachedTime = time.longValue();
- } catch (NumberFormatException e) {
- // Ignore
- }
- }
- startModule(path, cachedTime);
- } else if (elementName.equals(TAG_TAG)) {
- String type = atts.getValue(TYPE_ATTRIBUTE);
- if (type == null) {
- type = DEFAULT_TAG_TYPE;
- }
- String name = atts.getValue(NAME_ATTRIBUTE);
- if (name == null) {
- throw new SAXException(Policy.bind("RepositoriesViewContentHandler.missingAttribute", TAG_TAG, NAME_ATTRIBUTE)); //$NON-NLS-1$
- }
- tags.add(new CVSTag(name, getCVSTagType(type)));
- } else if (elementName.equals(AUTO_REFRESH_FILE_TAG)) {
- String path = atts.getValue(FULL_PATH_ATTRIBUTE);
- if (path == null) {
- // get the old path attribute format which was relative to the module
- path = atts.getValue(PATH_ATTRIBUTE);
- if (path == null) {
- throw new SAXException(Policy.bind("RepositoriesViewContentHandler.missingAttribute", AUTO_REFRESH_FILE_TAG, FULL_PATH_ATTRIBUTE)); //$NON-NLS-1$
- }
- if (RepositoryRoot.isDefinedModuleName(currentRemotePath)) {
- path = null;
- } else {
- path = new Path(null, currentRemotePath).append(path).toString();
- }
- }
- if (path != null) autoRefreshFiles.add(path);
- } else if (elementName.equals(CURRENT_WORKING_SET_TAG)) {
- // Ignore any elements until the corresponding end tag is reached
- ignoreElements = true;
- }
- // empty buffer
- buffer = new StringBuffer();
- tagStack.push(elementName);
- }
-
- private void startModule(String path, long cachedTime) {
- currentRemotePath = path;
- tags = new ArrayList();
- this.lastAccessTime = cachedTime;
- autoRefreshFiles = new ArrayList();
- }
-
- /**
- * Method getCVSTagType.
- * @param type
- */
- public int getCVSTagType(String type) {
- for (int i = 0; i < TAG_TYPES.length; i++) {
- if (TAG_TYPES[i].equals(type))
- return i;
- }
- return CVSTag.VERSION;
- }
-
- /*
- * Couldn't figure out from the SAX API exactly when localName vs. qName is used.
- * However, the XML for project sets doesn't use namespaces so either of the two names
- * is fine. Therefore, use whichever one is provided.
- */
- private String getElementName(String namespaceURI, String localName, String qName) {
- if (localName != null && localName.length() > 0) {
- return localName;
- } else {
- return qName;
- }
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RepositoryEncodingPropertyPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RepositoryEncodingPropertyPage.java
deleted file mode 100644
index cc893bb7f..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RepositoryEncodingPropertyPage.java
+++ /dev/null
@@ -1,419 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.repo;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.preference.FieldEditor;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.team.internal.ccvs.core.CVSStatus;
-import org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.internal.ccvs.core.connection.CVSRepositoryLocation;
-import org.eclipse.team.internal.ccvs.core.util.KnownRepositories;
-import org.eclipse.team.internal.ccvs.ui.*;
-import org.eclipse.ui.dialogs.PropertyPage;
-import org.eclipse.ui.help.WorkbenchHelp;
-import org.eclipse.ui.ide.dialogs.EncodingFieldEditor;
-import org.osgi.service.prefs.BackingStoreException;
-import org.osgi.service.prefs.Preferences;
-
-/**
- * Repository preference page for setting the encoding of the server
- */
-public class RepositoryEncodingPropertyPage extends PropertyPage implements IPropertyChangeListener {
-
- private static final int LABEL_WIDTH_HINT = 400;
-
- private EncodingFieldEditor encoding;
- private ICVSRepositoryLocation location;
-
- public class OSGIPreferenceStore implements IPreferenceStore {
- private Preferences preferences, defaults;
- private boolean dirty;
-
- /**
- * Create a wrapper for the given OSGI preferences node
- * @param preferences an OSGI preferences node
- */
- public OSGIPreferenceStore(Preferences preferences, Preferences defaults) {
- this.preferences = preferences;
- this.defaults = defaults;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.preference.IPreferenceStore#addPropertyChangeListener(org.eclipse.jface.util.IPropertyChangeListener)
- */
- public void addPropertyChangeListener(IPropertyChangeListener listener) {
- // TODO Auto-generated method stub
-
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.preference.IPreferenceStore#removePropertyChangeListener(org.eclipse.jface.util.IPropertyChangeListener)
- */
- public void removePropertyChangeListener(IPropertyChangeListener listener) {
- // TODO Auto-generated method stub
-
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.preference.IPreferenceStore#firePropertyChangeEvent(java.lang.String, java.lang.Object, java.lang.Object)
- */
- public void firePropertyChangeEvent(String name, Object oldValue, Object newValue) {
- // TODO Auto-generated method stub
-
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.preference.IPreferenceStore#contains(java.lang.String)
- */
- public boolean contains(String name) {
- try {
- String[] keys = preferences.keys();
- for (int i = 0; i < keys.length; i++) {
- String string = keys[i];
- if (string.equals(name)) {
- return true;
- }
- }
- return false;
- } catch (BackingStoreException e) {
- CVSUIPlugin.log(new CVSStatus(IStatus.ERROR, Policy.bind("internal"), e)); //$NON-NLS-1$
- return false;
- }
- }
-
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.preference.IPreferenceStore#getBoolean(java.lang.String)
- */
- public boolean getBoolean(String name) {
- return preferences.getBoolean(name, getDefaultBoolean(name));
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.preference.IPreferenceStore#getDefaultBoolean(java.lang.String)
- */
- public boolean getDefaultBoolean(String name) {
- if (defaults != null) {
- return defaults.getBoolean(name, false);
- }
- return false;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.preference.IPreferenceStore#getDefaultDouble(java.lang.String)
- */
- public double getDefaultDouble(String name) {
- if (defaults != null) {
- return defaults.getDouble(name, 0);
- }
- return 0;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.preference.IPreferenceStore#getDefaultFloat(java.lang.String)
- */
- public float getDefaultFloat(String name) {
- if (defaults != null) {
- return defaults.getFloat(name, 0);
- }
- return 0;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.preference.IPreferenceStore#getDefaultInt(java.lang.String)
- */
- public int getDefaultInt(String name) {
- if (defaults != null) {
- return defaults.getInt(name, 0);
- }
- return 0;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.preference.IPreferenceStore#getDefaultLong(java.lang.String)
- */
- public long getDefaultLong(String name) {
- if (defaults != null) {
- return defaults.getLong(name, 0);
- }
- return 0;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.preference.IPreferenceStore#getDefaultString(java.lang.String)
- */
- public String getDefaultString(String name) {
- if (defaults != null) {
- return defaults.get(name, null);
- }
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.preference.IPreferenceStore#getDouble(java.lang.String)
- */
- public double getDouble(String name) {
- return preferences.getDouble(name, getDefaultDouble(name));
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.preference.IPreferenceStore#getFloat(java.lang.String)
- */
- public float getFloat(String name) {
- return preferences.getFloat(name, getDefaultFloat(name));
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.preference.IPreferenceStore#getInt(java.lang.String)
- */
- public int getInt(String name) {
- return preferences.getInt(name, getDefaultInt(name));
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.preference.IPreferenceStore#getLong(java.lang.String)
- */
- public long getLong(String name) {
- return preferences.getLong(name, getDefaultLong(name));
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.preference.IPreferenceStore#getString(java.lang.String)
- */
- public String getString(String name) {
- return preferences.get(name, getDefaultString(name));
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.preference.IPreferenceStore#isDefault(java.lang.String)
- */
- public boolean isDefault(String name) {
- return !contains(name);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.preference.IPreferenceStore#needsSaving()
- */
- public boolean needsSaving() {
- return dirty;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.preference.IPreferenceStore#putValue(java.lang.String, java.lang.String)
- */
- public void putValue(String name, String value) {
- preferences.put(name, value);
- dirty = true;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.preference.IPreferenceStore#setDefault(java.lang.String, double)
- */
- public void setDefault(String name, double value) {
- // Defaults cannot be set this way
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.preference.IPreferenceStore#setDefault(java.lang.String, float)
- */
- public void setDefault(String name, float value) {
- // Defaults cannot be set this way
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.preference.IPreferenceStore#setDefault(java.lang.String, int)
- */
- public void setDefault(String name, int value) {
- // Defaults cannot be set this way
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.preference.IPreferenceStore#setDefault(java.lang.String, long)
- */
- public void setDefault(String name, long value) {
- // Defaults cannot be set this way
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.preference.IPreferenceStore#setDefault(java.lang.String, java.lang.String)
- */
- public void setDefault(String name, String defaultObject) {
- // Defaults cannot be set this way
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.preference.IPreferenceStore#setDefault(java.lang.String, boolean)
- */
- public void setDefault(String name, boolean value) {
- // Defaults cannot be set this way
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.preference.IPreferenceStore#setToDefault(java.lang.String)
- */
- public void setToDefault(String name) {
- preferences.remove(name);
- dirty = true;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.preference.IPreferenceStore#setValue(java.lang.String, double)
- */
- public void setValue(String name, double value) {
- preferences.putDouble(name, value);
- dirty = true;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.preference.IPreferenceStore#setValue(java.lang.String, float)
- */
- public void setValue(String name, float value) {
- preferences.putFloat(name, value);
- dirty = true;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.preference.IPreferenceStore#setValue(java.lang.String, int)
- */
- public void setValue(String name, int value) {
- preferences.putInt(name, value);
- dirty = true;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.preference.IPreferenceStore#setValue(java.lang.String, long)
- */
- public void setValue(String name, long value) {
- preferences.putLong(name, value);
- dirty = true;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.preference.IPreferenceStore#setValue(java.lang.String, java.lang.String)
- */
- public void setValue(String name, String value) {
- putValue(name, value);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.preference.IPreferenceStore#setValue(java.lang.String, boolean)
- */
- public void setValue(String name, boolean value) {
- preferences.putBoolean(name, value);
- dirty = true;
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
- */
- protected Control createContents(Composite parent) {
- initialize();
-
- Composite composite = new Composite(parent, SWT.NULL);
- composite.setLayoutData(new GridData(GridData.FILL_BOTH));
- GridLayout layout = new GridLayout();
- composite.setLayout(layout);
-
- createWrappingLabel(composite, Policy.bind("RepositoryEncodingPropertyPage.2"), 1); //$NON-NLS-1$
-
- encoding = new EncodingFieldEditor(CVSRepositoryLocation.PREF_SERVER_ENCODING, Policy.bind("RepositoryEncodingPropertyPage.3"), composite); //$NON-NLS-1$
- encoding.setPreferencePage(this);
- encoding.setPreferenceStore(getLocationPreferenceStore());
- encoding.load();
- encoding.setPropertyChangeListener(this);
-
- createWrappingLabel(composite, Policy.bind("RepositoryEncodingPropertyPage.4"), 1); //$NON-NLS-1$
-
- WorkbenchHelp.setHelp(getControl(), IHelpContextIds.REPOSITORY_ENCODING_PROPERTY_PAGE);
- Dialog.applyDialogFont(parent);
- return composite;
- }
-
- private IPreferenceStore getLocationPreferenceStore() {
- return new OSGIPreferenceStore(
- ((CVSRepositoryLocation)location).getPreferences(),
- CVSRepositoryLocation.getDefaultPreferences());
- }
-
- private void initialize() {
- location = null;
- IAdaptable element = getElement();
- if (element instanceof ICVSRepositoryLocation) {
- location = (ICVSRepositoryLocation)element;
- } else {
- Object adapter = element.getAdapter(ICVSRepositoryLocation.class);
- if (adapter instanceof ICVSRepositoryLocation) {
- location = (ICVSRepositoryLocation)adapter;
- }
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
- */
- public void propertyChange(PropertyChangeEvent event) {
- if (event.getProperty() == FieldEditor.IS_VALID) {
- setValid(((Boolean)event.getNewValue()).booleanValue());
- return;
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.preference.IPreferencePage#performOk()
- */
- public boolean performOk() {
- if (!KnownRepositories.getInstance().isKnownRepository(location.getLocation())) {
- // The location may have been replaced by the main properties page
- MessageDialog.openInformation(getShell(), Policy.bind("RepositoryEncodingPropertyPage.0"), Policy.bind("RepositoryEncodingPropertyPage.1", location.getLocation())); //$NON-NLS-1$ //$NON-NLS-2$
- return true;
- }
- encoding.store();
- try {
- ((CVSRepositoryLocation)location).getPreferences().flush();
- } catch (BackingStoreException e) {
- // Log and ignore
- CVSUIPlugin.log(new CVSStatus(IStatus.ERROR, Policy.bind("internal"), e)); //$NON-NLS-1$
- }
- return true;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.preference.PreferencePage#performDefaults()
- */
- protected void performDefaults() {
- super.performDefaults();
- encoding.loadDefault();
- }
-
- private Label createWrappingLabel(Composite parent, String text, int horizontalSpan) {
- Label label = new Label(parent, SWT.LEFT | SWT.WRAP);
- label.setText(text);
- label.setFont(parent.getFont());
- GridData data = new GridData();
- data.horizontalSpan = horizontalSpan;
- data.horizontalAlignment = GridData.FILL;
- data.grabExcessHorizontalSpace = true;
- data.widthHint = LABEL_WIDTH_HINT;
- label.setLayoutData(data);
- return label;
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RepositoryManager.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RepositoryManager.java
deleted file mode 100644
index 1e863e649..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RepositoryManager.java
+++ /dev/null
@@ -1,813 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.repo;
-
-
-import java.io.*;
-import java.lang.reflect.InvocationTargetException;
-import java.util.*;
-
-import javax.xml.parsers.*;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.*;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.core.connection.CVSRepositoryLocation;
-import org.eclipse.team.internal.ccvs.core.util.KnownRepositories;
-import org.eclipse.team.internal.ccvs.ui.*;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.ui.IWorkingSet;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-
-/**
- * This class is repsible for maintaining the UI's list of known repositories,
- * and a list of known tags within each of those repositories.
- *
- * It also provides a number of useful methods for assisting in repository operations.
- */
-public class RepositoryManager {
- // old state file
- private static final String STATE_FILE = ".repositoryManagerState"; //$NON-NLS-1$
- private static final int STATE_FILE_VERSION_1 = -1;
- // new state file
- private static final String REPOSITORIES_VIEW_FILE = "repositoriesView.xml"; //$NON-NLS-1$
- private static final String COMMENT_HIST_FILE = "commitCommentHistory.xml"; //$NON-NLS-1$
- static final String ELEMENT_COMMIT_COMMENT = "CommitComment"; //$NON-NLS-1$
- static final String ELEMENT_COMMIT_HISTORY = "CommitComments"; //$NON-NLS-1$
-
- private Map repositoryRoots = new HashMap();
-
- List listeners = new ArrayList();
-
- // The previously remembered comment
- static String[] previousComments = new String[0];
-
- public static boolean notifyRepoView = true;
-
- // Cache of changed repository roots
- private int notificationLevel = 0;
- private Map changedRepositories = new HashMap();
-
- static final int MAX_COMMENTS = 10;
-
- /**
- * Answer an array of all known remote roots.
- */
- public ICVSRepositoryLocation[] getKnownRepositoryLocations() {
- return KnownRepositories.getInstance().getRepositories();
- }
-
- /**
- * Method getRepositoryRoots.
- * @param iCVSRepositoryLocations
- * @return RepositoryRoot[]
- */
- private RepositoryRoot[] getRepositoryRoots(ICVSRepositoryLocation[] locations) {
- List roots = new ArrayList();
- for (int i = 0; i < locations.length; i++) {
- ICVSRepositoryLocation location = locations[i];
- RepositoryRoot root = getRepositoryRootFor(location);
- if (root != null)
- roots.add(root);
- }
- return (RepositoryRoot[]) roots.toArray(new RepositoryRoot[roots.size()]);
- }
-
- public RepositoryRoot[] getKnownRepositoryRoots() {
- return getRepositoryRoots(getKnownRepositoryLocations());
- }
-
- /**
- * Get the list of known branch tags for a given remote root.
- */
- public CVSTag[] getKnownTags(ICVSFolder project, int tagType) {
- try {
- CVSTag[] tags = getKnownTags(project);
- Set result = new HashSet();
- for (int i = 0; i < tags.length; i++) {
- CVSTag tag = tags[i];
- if (tag.getType() == tagType)
- result.add(tag);
- }
-
- return (CVSTag[])result.toArray(new CVSTag[result.size()]);
- } catch(CVSException e) {
- CVSUIPlugin.log(e);
- return new CVSTag[0];
- }
- }
-
- /**
- * Get the list of known version tags for a given project.
- */
- public CVSTag[] getKnownTags(ICVSRepositoryLocation location, int tagType) {
- Set result = new HashSet();
- RepositoryRoot root = (RepositoryRoot)repositoryRoots.get(location.getLocation());
- if (root != null) {
- String[] paths = root.getKnownRemotePaths();
- for (int i = 0; i < paths.length; i++) {
- String path = paths[i];
- CVSTag[] tags = root.getAllKnownTags(path);
- for (int j = 0; j < tags.length; j++) {
- CVSTag tag = tags[j];
- if (tag.getType() == tagType)
- result.add(tag);
- }
- }
- }
- return (CVSTag[])result.toArray(new CVSTag[0]);
- }
-
- /**
- * Method getKnownTags.
- * @param repository
- * @param set
- * @param i
- * @param monitor
- * @return CVSTag[]
- */
- public CVSTag[] getKnownTags(ICVSRepositoryLocation repository, IWorkingSet set, int tagType, IProgressMonitor monitor) throws CVSException {
- if (set == null) {
- return getKnownTags(repository, tagType);
- }
- ICVSRemoteResource[] folders = getFoldersForTag(repository, CVSTag.DEFAULT, monitor);
- folders = filterResources(set, folders);
- Set tags = new HashSet();
- for (int i = 0; i < folders.length; i++) {
- ICVSRemoteFolder folder = (ICVSRemoteFolder)folders[i];
- tags.addAll(Arrays.asList(getKnownTags(folder, tagType)));
- }
- return (CVSTag[]) tags.toArray(new CVSTag[tags.size()]);
- }
-
- public CVSTag[] getKnownTags(ICVSFolder project) throws CVSException {
- RepositoryRoot root = getRepositoryRootFor(project);
- String remotePath = RepositoryRoot.getRemotePathFor(project);
- return root.getAllKnownTags(remotePath);
- }
-
- /*
- * XXX I hope this methos is not needed in this form
- */
- public Map getKnownProjectsAndVersions(ICVSRepositoryLocation location) {
- Map knownTags = new HashMap();
- RepositoryRoot root = getRepositoryRootFor(location);
- String[] paths = root.getKnownRemotePaths();
- for (int i = 0; i < paths.length; i++) {
- String path = paths[i];
- Set result = new HashSet();
- result.addAll(Arrays.asList(root.getAllKnownTags(path)));
- knownTags.put(path, result);
- }
- return knownTags;
- }
-
- public ICVSRemoteResource[] getFoldersForTag(ICVSRepositoryLocation location, CVSTag tag, IProgressMonitor monitor) throws CVSException {
- monitor = Policy.monitorFor(monitor);
- try {
- monitor.beginTask(Policy.bind("RepositoryManager.fetchingRemoteFolders", tag.getName()), 100); //$NON-NLS-1$
- if (tag.getType() == CVSTag.HEAD) {
- ICVSRemoteResource[] resources = location.members(tag, false, Policy.subMonitorFor(monitor, 60));
- RepositoryRoot root = getRepositoryRootFor(location);
- ICVSRemoteResource[] modules = root.getDefinedModules(tag, Policy.subMonitorFor(monitor, 40));
- ICVSRemoteResource[] result = new ICVSRemoteResource[resources.length + modules.length];
- System.arraycopy(resources, 0, result, 0, resources.length);
- System.arraycopy(modules, 0, result, resources.length, modules.length);
- return result;
- }
- if (tag.getType() == CVSTag.DATE) {
- ICVSRemoteResource[] resources = location.members(tag, false, Policy.subMonitorFor(monitor, 60));
- RepositoryRoot root = getRepositoryRootFor(location);
- ICVSRemoteResource[] modules = root.getDefinedModules(tag, Policy.subMonitorFor(monitor, 40));
- ICVSRemoteResource[] result = new ICVSRemoteResource[resources.length + modules.length];
- System.arraycopy(resources, 0, result, 0, resources.length);
- System.arraycopy(modules, 0, result, resources.length, modules.length);
- return result;
- }
- Set result = new HashSet();
- // Get the tags for the location
- RepositoryRoot root = getRepositoryRootFor(location);
- String[] paths = root.getKnownRemotePaths();
- for (int i = 0; i < paths.length; i++) {
- String path = paths[i];
- List tags = Arrays.asList(root.getAllKnownTags(path));
- if (tags.contains(tag)) {
- ICVSRemoteFolder remote = root.getRemoteFolder(path, tag, Policy.subMonitorFor(monitor, 100));
- result.add(remote);
- }
- }
- return (ICVSRemoteResource[])result.toArray(new ICVSRemoteResource[result.size()]);
- } finally {
- monitor.done();
- }
- }
-
- /*
- * Fetches tags from auto-refresh files if they exist. Then fetches tags from the user defined auto-refresh file
- * list. The fetched tags are cached in the CVS ui plugin's tag cache.
- */
- public CVSTag[] refreshDefinedTags(ICVSFolder folder, boolean recurse, boolean notify, IProgressMonitor monitor) throws TeamException {
- RepositoryRoot root = getRepositoryRootFor(folder);
- CVSTag[] tags = root.refreshDefinedTags(folder, recurse, monitor);
- if (tags.length > 0 && notify)
- broadcastRepositoryChange(root);
- return tags;
- }
-
- /**
- * A repository root has been added. Notify any listeners.
- */
- public void rootAdded(ICVSRepositoryLocation root) {
- Iterator it = listeners.iterator();
- while (it.hasNext()) {
- IRepositoryListener listener = (IRepositoryListener)it.next();
- listener.repositoryAdded(root);
- }
- }
-
- /**
- * A repository root has been removed.
- * Remove the tags defined for this root and notify any listeners
- */
- public void rootRemoved(ICVSRepositoryLocation root) {
- RepositoryRoot repoRoot = (RepositoryRoot)repositoryRoots.remove(root.getLocation());
- if (repoRoot != null)
- broadcastRepositoryChange(repoRoot);
- }
-
- /**
- * Accept tags for any CVS resource. However, for the time being,
- * the given version tags are added to the list of known tags for the
- * remote ancestor of the resource that is a direct child of the remote root
- */
- public void addTags(ICVSResource resource, CVSTag[] tags) throws CVSException {
- RepositoryRoot root = getRepositoryRootFor(resource);
- // XXX could be a file or folder
- String remotePath = RepositoryRoot.getRemotePathFor(resource);
- root.addTags(remotePath, tags);
- broadcastRepositoryChange(root);
- }
- public void addDateTag(ICVSRepositoryLocation location, CVSTag tag) {
- if(tag == null) return;
- RepositoryRoot root = getRepositoryRootFor(location);
- root.addDateTag(tag);
- broadcastRepositoryChange(root);
- }
- public CVSTag[] getDateTags(ICVSRepositoryLocation location) {
- RepositoryRoot root = getRepositoryRootFor(location);
- return root.getDateTags();
- }
- public void removeDateTag(ICVSRepositoryLocation location, CVSTag tag){
- RepositoryRoot root = getRepositoryRootFor(location);
- root.removeDateTag(tag);
- broadcastRepositoryChange(root);
- }
- public void setAutoRefreshFiles(ICVSFolder project, String[] filePaths) throws CVSException {
- RepositoryRoot root = getRepositoryRootFor(project);
- String remotePath = RepositoryRoot.getRemotePathFor(project);
- root.setAutoRefreshFiles(remotePath, filePaths);
- }
-
- public void removeAutoRefreshFiles(ICVSFolder project, String[] relativeFilePaths) throws CVSException {
- RepositoryRoot root = getRepositoryRootFor(project);
- String remotePath = RepositoryRoot.getRemotePathFor(project);
- Set set = new HashSet();
- set.addAll(Arrays.asList(root.getAutoRefreshFiles(remotePath)));
- set.removeAll(Arrays.asList(relativeFilePaths));
- root.setAutoRefreshFiles(remotePath, (String[]) set.toArray(new String[set.size()]));
- }
-
- public String[] getAutoRefreshFiles(ICVSFolder project) throws CVSException {
- RepositoryRoot root = getRepositoryRootFor(project);
- String remotePath = RepositoryRoot.getRemotePathFor(project);
- return root.getAutoRefreshFiles(remotePath);
- }
-
- /**
- * Remove the given tags from the list of known tags for the
- * given remote root.
- */
- public void removeTags(ICVSFolder project, CVSTag[] tags) throws CVSException {
- RepositoryRoot root = getRepositoryRootFor(project);
- String remotePath = RepositoryRoot.getRemotePathFor(project);
- root.removeTags(remotePath, tags);
- broadcastRepositoryChange(root);
- }
-
- public void startup() {
- loadState();
- loadCommentHistory();
- CVSProviderPlugin.getPlugin().addRepositoryListener(new ICVSListener() {
- public void repositoryAdded(ICVSRepositoryLocation root) {
- rootAdded(root);
- }
- public void repositoryRemoved(ICVSRepositoryLocation root) {
- rootRemoved(root);
- }
- });
- }
-
- public void shutdown() throws TeamException {
- saveState();
- saveCommentHistory();
- }
-
- private void loadState() {
- IPath pluginStateLocation = CVSUIPlugin.getPlugin().getStateLocation().append(REPOSITORIES_VIEW_FILE);
- File file = pluginStateLocation.toFile();
- if (file.exists()) {
- try {
- BufferedInputStream is = new BufferedInputStream(new FileInputStream(file));
- try {
- readState(is);
- } finally {
- is.close();
- }
- } catch (IOException e) {
- CVSUIPlugin.log(Status.ERROR, Policy.bind("RepositoryManager.ioException"), e); //$NON-NLS-1$
- } catch (TeamException e) {
- CVSUIPlugin.log(e);
- }
- } else {
- IPath oldPluginStateLocation = CVSUIPlugin.getPlugin().getStateLocation().append(STATE_FILE);
- file = oldPluginStateLocation.toFile();
- if (file.exists()) {
- try {
- DataInputStream dis = new DataInputStream(new FileInputStream(file));
- try {
- readOldState(dis);
- } finally {
- dis.close();
- }
- saveState();
- file.delete();
- } catch (IOException e) {
- CVSUIPlugin.log(Status.ERROR, Policy.bind("RepositoryManager.ioException"), e); //$NON-NLS-1$
- } catch (TeamException e) {
- CVSUIPlugin.log(e);
- }
- }
- }
- }
- private void loadCommentHistory() {
- IPath pluginStateLocation = CVSUIPlugin.getPlugin().getStateLocation().append(COMMENT_HIST_FILE);
- File file = pluginStateLocation.toFile();
- if (!file.exists()) return;
- try {
- BufferedInputStream is = new BufferedInputStream(new FileInputStream(file));
- try {
- readCommentHistory(is);
- } finally {
- is.close();
- }
- } catch (IOException e) {
- CVSUIPlugin.log(Status.ERROR, Policy.bind("RepositoryManager.ioException"), e); //$NON-NLS-1$
- } catch (TeamException e) {
- CVSUIPlugin.log(e);
- }
- }
-
- protected void saveState() throws TeamException {
- IPath pluginStateLocation = CVSUIPlugin.getPlugin().getStateLocation();
- File tempFile = pluginStateLocation.append(REPOSITORIES_VIEW_FILE + ".tmp").toFile(); //$NON-NLS-1$
- File stateFile = pluginStateLocation.append(REPOSITORIES_VIEW_FILE).toFile();
- try {
- XMLWriter writer = new XMLWriter(new BufferedOutputStream(new FileOutputStream(tempFile)));
- try {
- writeState(writer);
- } finally {
- writer.close();
- }
- if (stateFile.exists()) {
- stateFile.delete();
- }
- boolean renamed = tempFile.renameTo(stateFile);
- if (!renamed) {
- throw new TeamException(new Status(Status.ERROR, CVSUIPlugin.ID, TeamException.UNABLE, Policy.bind("RepositoryManager.rename", tempFile.getAbsolutePath()), null)); //$NON-NLS-1$
- }
- } catch (IOException e) {
- throw new TeamException(new Status(Status.ERROR, CVSUIPlugin.ID, TeamException.UNABLE, Policy.bind("RepositoryManager.save",stateFile.getAbsolutePath()), e)); //$NON-NLS-1$
- }
- }
- private void writeState(XMLWriter writer) {
- writer.startTag(RepositoriesViewContentHandler.REPOSITORIES_VIEW_TAG, null, true);
- // Write the repositories
- Collection repos = Arrays.asList(getKnownRepositoryLocations());
- Iterator it = repos.iterator();
- while (it.hasNext()) {
- CVSRepositoryLocation location = (CVSRepositoryLocation)it.next();
- RepositoryRoot root = getRepositoryRootFor(location);
- root.writeState(writer);
- }
- writer.endTag(RepositoriesViewContentHandler.REPOSITORIES_VIEW_TAG);
- }
-
- private void readState(InputStream stream) throws IOException, TeamException {
- try {
- SAXParserFactory factory = SAXParserFactory.newInstance();
- SAXParser parser = factory.newSAXParser();
- parser.parse(new InputSource(stream), new RepositoriesViewContentHandler(this));
- } catch (SAXException ex) {
- throw new CVSException(Policy.bind("RepositoryManager.parsingProblem", REPOSITORIES_VIEW_FILE), ex); //$NON-NLS-1$
- } catch (ParserConfigurationException ex) {
- throw new CVSException(Policy.bind("RepositoryManager.parsingProblem", REPOSITORIES_VIEW_FILE), ex); //$NON-NLS-1$
- }
- }
- private void readCommentHistory(InputStream stream) throws IOException, TeamException {
- try {
- SAXParserFactory factory = SAXParserFactory.newInstance();
- SAXParser parser = factory.newSAXParser();
- parser.parse(new InputSource(stream), new CommentHistoryContentHandler());
- } catch (SAXException ex) {
- throw new CVSException(Policy.bind("RepositoryManager.parsingProblem", COMMENT_HIST_FILE), ex); //$NON-NLS-1$
- } catch (ParserConfigurationException ex) {
- throw new CVSException(Policy.bind("RepositoryManager.parsingProblem", COMMENT_HIST_FILE), ex); //$NON-NLS-1$
- }
- }
-
- private void readOldState(DataInputStream dis) throws IOException, TeamException {
- int repoSize = dis.readInt();
- boolean version1 = false;
- if (repoSize == STATE_FILE_VERSION_1) {
- version1 = true;
- repoSize = dis.readInt();
- }
- for (int i = 0; i < repoSize; i++) {
- ICVSRepositoryLocation root = KnownRepositories.getInstance().getRepository(dis.readUTF());
- RepositoryRoot repoRoot = getRepositoryRootFor(root);
-
- // read branch tags associated with this root
- int tagsSize = dis.readInt();
- CVSTag[] branchTags = new CVSTag[tagsSize];
- for (int j = 0; j < tagsSize; j++) {
- String tagName = dis.readUTF();
- int tagType = dis.readInt();
- branchTags[j] = new CVSTag(tagName, tagType);
- }
- // Ignore the branch tags since they are handled differently now
- // addBranchTags(root, branchTags);
-
- // read the number of projects for this root that have version tags
- int projSize = dis.readInt();
- if (projSize > 0) {
- for (int j = 0; j < projSize; j++) {
- String name = dis.readUTF();
- Set tagSet = new HashSet();
- int numTags = dis.readInt();
- for (int k = 0; k < numTags; k++) {
- tagSet.add(new CVSTag(dis.readUTF(), CVSTag.VERSION));
- }
- CVSTag[] tags = (CVSTag[]) tagSet.toArray(new CVSTag[tagSet.size()]);
- repoRoot.addTags(name, tags);
- }
- }
- // read the auto refresh filenames for this project
- if (version1) {
- try {
- projSize = dis.readInt();
- if (projSize > 0) {
- for (int j = 0; j < projSize; j++) {
- String name = dis.readUTF();
- Set filenames = new HashSet();
- int numFilenames = dis.readInt();
- for (int k = 0; k < numFilenames; k++) {
- filenames.add(name + "/" + dis.readUTF()); //$NON-NLS-1$
- }
- repoRoot.setAutoRefreshFiles(name, (String[]) filenames.toArray(new String[filenames.size()]));
- }
- }
- } catch (EOFException e) {
- // auto refresh files are not persisted, continue and save them next time.
- }
- }
- broadcastRepositoryChange(repoRoot);
- }
- }
-
- protected void saveCommentHistory() throws TeamException {
- IPath pluginStateLocation = CVSUIPlugin.getPlugin().getStateLocation();
- File tempFile = pluginStateLocation.append(COMMENT_HIST_FILE + ".tmp").toFile(); //$NON-NLS-1$
- File histFile = pluginStateLocation.append(COMMENT_HIST_FILE).toFile();
- try {
- XMLWriter writer = new XMLWriter(new BufferedOutputStream(new FileOutputStream(tempFile)));
- try {
- writeCommentHistory(writer);
- } finally {
- writer.close();
- }
- if (histFile.exists()) {
- histFile.delete();
- }
- boolean renamed = tempFile.renameTo(histFile);
- if (!renamed) {
- throw new TeamException(new Status(Status.ERROR, CVSUIPlugin.ID, TeamException.UNABLE, Policy.bind("RepositoryManager.rename", tempFile.getAbsolutePath()), null)); //$NON-NLS-1$
- }
- } catch (IOException e) {
- throw new TeamException(new Status(Status.ERROR, CVSUIPlugin.ID, TeamException.UNABLE, Policy.bind("RepositoryManager.save",histFile.getAbsolutePath()), e)); //$NON-NLS-1$
- }
- }
- private void writeCommentHistory(XMLWriter writer) {
- writer.startTag(ELEMENT_COMMIT_HISTORY, null, false);
- for (int i=0; inull
- */
- public void setListener(ILogsFetchedListener listener) {
- this.listener = listener;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.core.BackgroundEventHandler#getJobFamiliy()
- */
- protected Object getJobFamiliy() {
- return ISynchronizeManager.FAMILY_SYNCHRONIZE_OPERATION;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.core.BackgroundEventHandler#createEventHandlingJob()
- */
- protected void createEventHandlingJob() {
- super.createEventHandlingJob();
- Job job = getEventHandlerJob();
- job.setSystem(false);
- job.setUser(false);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.core.BackgroundEventHandler#processEvent(org.eclipse.team.internal.core.BackgroundEventHandler.Event, org.eclipse.core.runtime.IProgressMonitor)
- */
- protected void processEvent(Event event, IProgressMonitor monitor) throws CoreException {
- switch (event.getType()) {
- case REMOVAL:
- case CHANGE:
- updates.add(event);
- break;
- case FETCH_REQUEST:
- fetches.add(event);
- break;
- case PAUSE:
- throw PAUSE_EXCEPTION;
- }
-
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.core.BackgroundEventHandler#doDispatchEvents(org.eclipse.core.runtime.IProgressMonitor)
- */
- protected boolean doDispatchEvents(IProgressMonitor monitor) throws TeamException {
- boolean dispatched = false;
- monitor.beginTask(null, 50);
- dispatched |= updateCache(Policy.subMonitorFor(monitor, 20));
- dispatched |= processQueuedFetches(Policy.subMonitorFor(monitor, 80));
- monitor.done();
- return dispatched;
- }
-
- /*
- * Remove any stale or unneeded log entries from the cache.
- * Return whether there were any entries to purge.
- */
- private boolean updateCache(IProgressMonitor monitor) {
- if (updates.isEmpty()) return false;
- try {
- collectedInfos.beginInput();
- // Cycle through the update events
- for (Iterator iter = updates.iterator(); iter.hasNext();) {
- Event event = (Event) iter.next();
- Policy.checkCanceled(monitor);
- if (event.getType() == REMOVAL) {
- remove(event.getResource(), ((ResourceEvent)event).getDepth());
- } else if (event.getType() == CHANGE) {
- change(event.getResource(), ((ResourceEvent)event).getDepth());
- }
- // Use the iterator to remove so that updates will not be lost
- // if the job is cancelled and then restarted.
- iter.remove();
- }
- } finally {
- collectedInfos.endInput(monitor);
- }
- return true;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.core.BackgroundEventHandler#shutdown()
- */
- public void shutdown() {
- super.shutdown();
- collector.dispose();
- // Probably not necessary as GC would take care of it but we'll do it anyway
- if (cacheReference != null) {
- LogEntryCache cache = (LogEntryCache)cacheReference.get();
- if (cache != null) {
- cache.clearEntries();
- }
- }
- collectedInfos.clear();
-
- }
-
- private void remove(IResource resource, int depth) {
- collectedInfos.remove(resource, depth);
- }
-
- private void remove(SyncInfo info) {
- if (info != null) {
- collectedInfos.remove(info.getLocal());
- LogEntryCache cache = (LogEntryCache)cacheReference.get();
- if (cache != null)
- cache.clearEntries(getRemoteResource(info));
- }
- }
-
- protected ICVSRemoteResource getRemoteResource(SyncInfo info) {
- try {
- ICVSRemoteResource remote = (ICVSRemoteResource) info.getRemote();
- ICVSRemoteResource local = CVSWorkspaceRoot.getRemoteResourceFor(info.getLocal());
- if(local == null) {
- local = (ICVSRemoteResource)info.getBase();
- }
-
- boolean useRemote = true;
- if (local != null && remote != null) {
- String remoteRevision = getRevisionString(remote);
- String localRevision = getRevisionString(local);
- useRemote = useRemote(localRevision, remoteRevision);
- } else if (remote == null) {
- useRemote = false;
- }
- if (useRemote) {
- return remote;
- } else if (local != null) {
- return local;
- }
- return null;
- } catch (CVSException e) {
- CVSUIPlugin.log(e);
- return null;
- }
- }
-
- private boolean useRemote(String localRevision, String remoteRevision) {
- boolean useRemote;
- if (remoteRevision == null && localRevision == null) {
- useRemote = true;
- } else if (localRevision == null) {
- useRemote = true;
- } else if (remoteRevision == null) {
- useRemote = false;
- } else {
- useRemote = ResourceSyncInfo.isLaterRevision(remoteRevision, localRevision);
- }
- return useRemote;
- }
-
- private String getRevisionString(ICVSRemoteResource remoteFile) {
- if(remoteFile instanceof RemoteFile) {
- return ((RemoteFile)remoteFile).getRevision();
- }
- return null;
- }
-
- private void change(IResource resource, int depth) {
- // We only need to remove collected log entries that don't apply
- // any longer. They will be refetched when they are required.
- SyncInfo[] collected = collectedInfos.getSyncInfos(resource, depth);
- change(collected);
- }
-
- private void change(SyncInfo[] collected) {
- Subscriber subscriber = getSubscriber();
- for (int i = 0; i < collected.length; i++) {
- try {
- SyncInfo info = collected[i];
- SyncInfo newInfo = subscriber.getSyncInfo(info.getLocal());
- if (newInfo == null || !newInfo.equals(info)) {
- // The cached log entry no longer applies to the new sync info.
- // It will be refetched when required.
- remove(info);
- }
- } catch (TeamException e) {
- // Log and continue
- CVSUIPlugin.log(e);
- }
- }
- }
-
- /**
- * Queue a request to fetch log entries for the given SyncInfo nodes.
- * The event handler must be a non-system job when revision histories
- * are fetched.
- * @param infos the nodes whose log entries are to be fetched
- */
- public void fetch(SyncInfo[] infos) throws CVSException {
- synchronized(queueLock) {
- Job job = getEventHandlerJob();
- if (job.isSystem() && job.getState() != Job.NONE) {
- // queue an event to pause the processor
- super.queueEvent(new Event(PAUSE), true /* put on the front of the queue */);
- int count = 0;
- while (job.getState() != Job.NONE && count < MAX_WAIT) {
- count += WAIT_INCREMENT;
- try {
- Thread.sleep(WAIT_INCREMENT); // Wait a little while
- } catch (InterruptedException e) {
- // Ignore
- }
- }
- if (job.getState() != Job.NONE) {
- // The job never completed in the time aloted so throw an exception
- throw new CVSException(Policy.bind("LogEntryCacheUpdateHandler.2")); //$NON-NLS-1$
- }
- }
- // Queue the event even if the job didn't stop in the time aloted
- queueEvent(new FetchRequest(infos), false /* don't place at the end */);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.core.BackgroundEventHandler#queueEvent(org.eclipse.team.internal.core.BackgroundEventHandler.Event, boolean)
- */
- protected void queueEvent(Event event, boolean front) {
- // Override to snure that queues by this handler are serialized
- synchronized(queueLock) {
- Job job = getEventHandlerJob();
- if (job.getState() == Job.NONE) {
- job.setSystem(event.getType() != FETCH_REQUEST);
- }
- super.queueEvent(event, front);
- }
- }
-
- /*
- * Method invoked during event dispatch to fetch log entries
- */
- private boolean processQueuedFetches(IProgressMonitor monitor) {
- if (fetches.isEmpty()) return false;
- try {
- // Now perform the fetching
- Map projectMapping = getFetchesByProject();
- if (projectMapping.isEmpty()) return true;
- LogEntryCache logEntriesCache = (LogEntryCache)cacheReference.get();
- if (logEntriesCache == null) {
- logEntriesCache = new LogEntryCache();
- cacheReference = new SoftReference(logEntriesCache);
- }
- monitor.beginTask(Policy.bind("CVSChangeSetCollector.4"), 100 * projectMapping.size()); //$NON-NLS-1$
- monitor.setTaskName(Policy.bind("CVSChangeSetCollector.4")); //$NON-NLS-1$
- for (Iterator iter = projectMapping.values().iterator(); iter.hasNext();) {
- SyncInfoSet set = (SyncInfoSet) iter.next();
- fetchLogEntries(logEntriesCache, set, Policy.subMonitorFor(monitor, 90));
- fireFetchedNotification(logEntriesCache, set, Policy.subMonitorFor(monitor, 10));
- }
- } finally {
- // Clear the fetches even if we were cancelled.
- // Restarting will need to re-request all infos
- fetches.clear();
- monitor.done();
- }
- return true;
- }
-
- private void fireFetchedNotification(LogEntryCache logEntriesCache, SyncInfoSet set, IProgressMonitor monitor) {
- if (listener != null) {
- listener.logEntriesFetched(set, logEntriesCache, monitor);
- }
- }
-
- /*
- * Return a map of IProject to SyncInfoSet as that is how entries are fetched.
- * The set for each project includes all infos from the original set.
- * This is one so that the completion notification contains all infos
- * including those were a fetch was not required either because the
- * entry was already cached or the resource has no history.
- */
- private Map getFetchesByProject() {
- Map result = new HashMap();
- for (Iterator iter = fetches.iterator(); iter.hasNext();) {
- FetchRequest request = (FetchRequest) iter.next();
- SyncInfo[] infos = request.getInfos();
- for (int i = 0; i < infos.length; i++) {
- SyncInfo info = infos[i];
- IProject project = info.getLocal().getProject();
- SyncInfoSet infoSet = (SyncInfoSet)result.get(project);
- if (infoSet == null) {
- infoSet = new SyncInfoSet();
- result.put(project, infoSet);
- }
- infoSet.add(info);
- }
- }
- return result;
- }
-
- private boolean isFetchRequired(SyncInfo info) {
- // We only need to fetch if we don't have the log entry already
- // and the change is a remote change
- return info.getLocal().getType() == IResource.FILE && !isLogEntryCached(info) && isRemoteChange(info);
-
- }
-
- /*
- * Return whether the given SyncInfo is cached. If there is
- * an info for the resource that does not match the given info,
- * it is removed and false is returned.
- */
- private boolean isLogEntryCached(SyncInfo info) {
- SyncInfo collectedInfo = collectedInfos.getSyncInfo(info.getLocal());
- if (collectedInfo != null && !collectedInfo.equals(info)) {
- remove(collectedInfo);
- collectedInfo = null;
- }
- return collectedInfo != null;
- }
-
- /*
- * Return if this sync info should be considered as part of a remote change
- * meaning that it can be placed inside an incoming commit set (i.e. the
- * set is determined using the comments from the log entry of the file).
- */
- protected boolean isRemoteChange(SyncInfo info) {
- int kind = info.getKind();
- if(info.getLocal().getType() != IResource.FILE) return false;
- if(info.getComparator().isThreeWay()) {
- return (kind & SyncInfo.DIRECTION_MASK) != SyncInfo.OUTGOING;
- }
- // For two-way, the change is only remote if it has a remote or has a base locally
- if (info.getRemote() != null) return true;
- ICVSFile file = CVSWorkspaceRoot.getCVSFileFor((IFile)info.getLocal());
- try {
- return file.getSyncBytes() != null;
- } catch (CVSException e) {
- // Log the error and exclude the file from consideration
- CVSUIPlugin.log(e);
- return false;
- }
- }
-
- /*
- * Fetch the log entries for the info in the given set
- */
- private void fetchLogEntries(LogEntryCache logEntriesCache, SyncInfoSet set, IProgressMonitor monitor) {
- try {
- if (subscriber instanceof CVSCompareSubscriber) {
- CVSCompareSubscriber compareSubscriber = (CVSCompareSubscriber)subscriber;
- fetchLogEntries(logEntriesCache, compareSubscriber, set, monitor);
- } else {
- // Run the log command once with no tags
- fetchLogs(logEntriesCache, set, null, null, monitor);
- }
- } catch (CVSException e) {
- handleException(e);
- } catch (InterruptedException e) {
- throw new OperationCanceledException();
- }
-
- }
-
- private void fetchLogEntries(LogEntryCache logEntriesCache, CVSCompareSubscriber compareSubscriber, SyncInfoSet set, IProgressMonitor monitor) throws CVSException, InterruptedException {
- Map localTagMap = getLocalTagMap(set);
- monitor.beginTask(null, 100 * localTagMap.size());
- for (Iterator iter = localTagMap.keySet().iterator(); iter.hasNext();) {
- CVSTag localTag = (CVSTag) iter.next();
- fetchLogEntries(logEntriesCache, compareSubscriber, set, localTag, Policy.subMonitorFor(monitor, 100));
- }
- Policy.checkCanceled(monitor);
- monitor.done();
- }
-
- /*
- * Return the resources grouped by the tag found in the
- * workspace. The map is CVSTag->SyncInfoSet
- */
- private Map getLocalTagMap(SyncInfoSet set) {
- Map result = new HashMap();
- for (Iterator iter = set.iterator(); iter.hasNext();) {
- SyncInfo info = (SyncInfo) iter.next();
- CVSTag tag = getLocalTag(info);
- SyncInfoSet tagSet = (SyncInfoSet)result.get(tag);
- if (tagSet == null) {
- tagSet = new SyncInfoSet();
- result.put(tag, tagSet);
- }
- tagSet.add(info);
- }
- return result;
- }
-
- private CVSTag getLocalTag(SyncInfo syncInfo) {
- try {
- IResource local = syncInfo.getLocal();
- ICVSResource cvsResource = CVSWorkspaceRoot.getCVSResourceFor(local);
- CVSTag tag = null;
- if(cvsResource.isFolder()) {
- FolderSyncInfo info = ((ICVSFolder)cvsResource).getFolderSyncInfo();
- if(info != null) {
- tag = info.getTag();
- }
- if (tag != null && tag.getType() == CVSTag.BRANCH) {
- tag = Util.getAccurateFolderTag(local, tag);
- }
- } else {
- tag = Util.getAccurateFileTag(cvsResource);
- }
- if(tag == null) {
- tag = new CVSTag();
- }
- return tag;
- } catch (CVSException e) {
- CVSUIPlugin.log(e);
- return new CVSTag();
- }
- }
-
- private void fetchLogEntries(LogEntryCache logEntriesCache, CVSCompareSubscriber compareSubscriber, SyncInfoSet set, CVSTag localTag, IProgressMonitor monitor) throws CVSException, InterruptedException {
- if (compareSubscriber.isMultipleTagComparison()) {
- Map rootToInfoMap = getRootToInfoMap(compareSubscriber, set);
- monitor.beginTask(null, 100 * rootToInfoMap.size());
- for (Iterator iterator = rootToInfoMap.keySet().iterator(); iterator.hasNext();) {
- IResource root = (IResource) iterator.next();
- Policy.checkCanceled(monitor);
- fetchLogs(logEntriesCache, set, localTag, compareSubscriber.getTag(root), Policy.subMonitorFor(monitor, 100));
- }
- monitor.done();
- } else {
- Policy.checkCanceled(monitor);
- fetchLogs(logEntriesCache, set, localTag, compareSubscriber.getTag(), monitor);
- }
- }
-
- private Map getRootToInfoMap(CVSCompareSubscriber compareSubscriber, SyncInfoSet set) {
- Map rootToInfosMap = new HashMap();
- IResource[] roots = compareSubscriber.roots();
- for (Iterator iter = set.iterator(); iter.hasNext();) {
- SyncInfo info = (SyncInfo) iter.next();
- IPath localPath = info.getLocal().getFullPath();
- for (int j = 0; j < roots.length; j++) {
- IResource resource = roots[j];
- if (resource.getFullPath().isPrefixOf(localPath)) {
- SyncInfoSet infoList = (SyncInfoSet)rootToInfosMap.get(resource);
- if (infoList == null) {
- infoList = new SyncInfoSet();
- rootToInfosMap.put(resource, infoList);
- }
- infoList.add(info);
- break; // out of inner loop
- }
- }
-
- }
- return rootToInfosMap;
- }
-
- private void fetchLogs(LogEntryCache logEntriesCache, SyncInfoSet set, CVSTag localTag, CVSTag remoteTag, IProgressMonitor monitor) throws CVSException, InterruptedException {
- ICVSRemoteResource[] remoteResources = getRemotesToFetch(set.getSyncInfos());
- if (remoteResources.length > 0) {
- RemoteLogOperation logOperation = new RemoteLogOperation(getConfiguration().getSite().getPart(), remoteResources, localTag, remoteTag, logEntriesCache);
- logOperation.execute(monitor);
- }
- }
-
- private ICVSRemoteResource[] getRemotesToFetch(SyncInfo[] infos) {
- List remotes = new ArrayList();
- for (int i = 0; i < infos.length; i++) {
- SyncInfo info = infos[i];
- if (isFetchRequired(info)) {
- ICVSRemoteResource remote = getRemoteResource(info);
- if(remote != null) {
- remotes.add(remote);
- }
- }
- }
- return (ICVSRemoteResource[]) remotes.toArray(new ICVSRemoteResource[remotes.size()]);
- }
-
- /**
- * Stop any current fetch in process.
- */
- public void stopFetching() {
- try {
- getEventHandlerJob().cancel();
- getEventHandlerJob().join();
- } catch (InterruptedException e) {
- }
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/MergeSynchronizeParticipant.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/MergeSynchronizeParticipant.java
deleted file mode 100644
index 16ce5a9af..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/MergeSynchronizeParticipant.java
+++ /dev/null
@@ -1,280 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.subscriber;
-
-import java.util.*;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.*;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.subscribers.Subscriber;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.actions.ShowAnnotationAction;
-import org.eclipse.team.internal.ccvs.ui.actions.ShowResourceInHistoryAction;
-import org.eclipse.team.internal.ui.Utils;
-import org.eclipse.team.ui.TeamUI;
-import org.eclipse.team.ui.synchronize.*;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.PartInitException;
-
-public class MergeSynchronizeParticipant extends CVSParticipant {
-
- /**
- * The id of a workspace action group to which additions actions can
- * be added.
- */
- public static final String TOOLBAR_CONTRIBUTION_GROUP = "toolbar_group"; //$NON-NLS-1$
-
- public static final String CONTEXT_MENU_CONTRIBUTION_GROUP = "context_group_1"; //$NON-NLS-1$
- public static final String NON_MODAL_CONTEXT_MENU_CONTRIBUTION_GROUP = "context_group_2"; //$NON-NLS-1$
-
- private final static String CTX_ROOT = "root"; //$NON-NLS-1$
- private final static String CTX_ROOT_PATH = "root_resource"; //$NON-NLS-1$
- private final static String CTX_START_TAG = "start_tag"; //$NON-NLS-1$
- private final static String CTX_START_TAG_TYPE = "start_tag_type"; //$NON-NLS-1$
- private final static String CTX_END_TAG = "end_tag"; //$NON-NLS-1$
- private final static String CTX_END_TAG_TYPE = "end_tag_type"; //$NON-NLS-1$
-
- /**
- * Actions for the merge particpant's toolbar
- */
- public class MergeParticipantActionContribution extends SynchronizePageActionGroup {
- private MergeUpdateAction updateAction;
- public void initialize(ISynchronizePageConfiguration configuration) {
- super.initialize(configuration);
-
- updateAction = new MergeUpdateAction(
- configuration,
- getVisibleRootsSelectionProvider(),
- "WorkspaceToolbarUpdateAction."); //$NON-NLS-1$
- updateAction.setPromptBeforeUpdate(true);
- appendToGroup(
- ISynchronizePageConfiguration.P_TOOLBAR_MENU,
- TOOLBAR_CONTRIBUTION_GROUP,
- updateAction);
-
- appendToGroup(
- ISynchronizePageConfiguration.P_CONTEXT_MENU,
- CONTEXT_MENU_CONTRIBUTION_GROUP,
- new MergeUpdateAction(configuration));
- appendToGroup(
- ISynchronizePageConfiguration.P_CONTEXT_MENU,
- CONTEXT_MENU_CONTRIBUTION_GROUP,
- new ConfirmMergedAction(configuration));
-
- if (!configuration.getSite().isModal()) {
- appendToGroup(
- ISynchronizePageConfiguration.P_CONTEXT_MENU,
- NON_MODAL_CONTEXT_MENU_CONTRIBUTION_GROUP,
- new CVSActionDelegateWrapper(new ShowAnnotationAction(), configuration));
- appendToGroup(
- ISynchronizePageConfiguration.P_CONTEXT_MENU,
- NON_MODAL_CONTEXT_MENU_CONTRIBUTION_GROUP,
- new CVSActionDelegateWrapper(new ShowResourceInHistoryAction(), configuration));
- }
-
- }
- }
-
- public MergeSynchronizeParticipant() {
- super();
- }
-
- public MergeSynchronizeParticipant(CVSMergeSubscriber subscriber) {
- setSubscriber(subscriber);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.ui.sync.SubscriberParticipant#setSubscriber(org.eclipse.team.core.subscribers.TeamSubscriber)
- */
- public void setSubscriber(Subscriber subscriber) {
- super.setSubscriber(subscriber);
- try {
- ISynchronizeParticipantDescriptor descriptor = TeamUI.getSynchronizeManager().getParticipantDescriptor(CVSMergeSubscriber.ID);
- setInitializationData(descriptor);
- CVSMergeSubscriber s = (CVSMergeSubscriber)getSubscriber();
- setSecondaryId(s.getId().getLocalName());
- } catch (CoreException e) {
- CVSUIPlugin.log(e);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.ui.synchronize.ISynchronizeParticipant#init(org.eclipse.ui.IMemento)
- */
- public void init(String secondayId, IMemento memento) throws PartInitException {
- super.init(secondayId, memento);
- if(memento != null) {
- ISynchronizeParticipantDescriptor descriptor = TeamUI.getSynchronizeManager().getParticipantDescriptor(CVSMergeSubscriber.ID);
- String qualifier = descriptor.getId();
- String localname = secondayId;
- if(qualifier == null || localname == null) {
- throw new PartInitException(Policy.bind("MergeSynchronizeParticipant.8")); //$NON-NLS-1$
- }
- try {
- setSubscriber(read(new QualifiedName(qualifier, localname), memento));
- } catch (CVSException e) {
- throw new PartInitException(Policy.bind("MergeSynchronizeParticipant.9"), e); //$NON-NLS-1$
- }
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.ui.synchronize.ISynchronizeParticipant#init(org.eclipse.ui.IMemento)
- */
- public void saveState(IMemento memento) {
- super.saveState(memento);
- CVSMergeSubscriber s = (CVSMergeSubscriber)getSubscriber();
- write(s, memento);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.ui.sync.AbstractSynchronizeParticipant#dispose()
- */
- public void dispose() {
- super.dispose();
- if(TeamUI.getSynchronizeManager().get(getId(), getSecondaryId()) == null) {
- // If the participant isn't managed by the synchronize manager then we
- // must ensure that the state cached in the synchronizer is flushed.
- flushStateCache();
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.ui.synchronize.ISynchronizeParticipant#getName()
- */
- public String getName() {
- return Policy.bind("CompareParticipant.0", ((CVSMergeSubscriber)getSubscriber()).getName(), Utils.convertSelection(getSubscriber().roots())); //$NON-NLS-1$
- }
-
- /*
- * Returns the start tag for this merge participant. The start tag is actually stored with the subscriber.
- */
- protected CVSTag getStartTag() {
- return ((CVSMergeSubscriber)getSubscriber()).getStartTag();
- }
-
- /*
- * Returns the end tag for this merge participant. The end tag is actually stored with the subscriber.
- */
- protected CVSTag getEndTag() {
- return ((CVSMergeSubscriber)getSubscriber()).getEndTag();
- }
-
- /*
- * Returns a merge participant that exist and is configured with the given set of resources, start, and end tags.
- */
- public static MergeSynchronizeParticipant getMatchingParticipant(IResource[] resources, CVSTag startTag, CVSTag endTag) {
- ISynchronizeParticipantReference[] refs = TeamUI.getSynchronizeManager().getSynchronizeParticipants();
- for (int i = 0; i < refs.length; i++) {
- ISynchronizeParticipantReference reference = refs[i];
- if (reference.getId().equals(CVSMergeSubscriber.ID)) {
- MergeSynchronizeParticipant p;
- try {
- p = (MergeSynchronizeParticipant) reference.getParticipant();
- } catch (TeamException e) {
- continue;
- }
- IResource[] roots = p.getResources();
- Arrays.sort(resources, Utils.resourceComparator);
- Arrays.sort(roots, Utils.resourceComparator);
- if (Arrays.equals(resources, roots) && p.getStartTag().equals(startTag) && p.getEndTag().equals(endTag)) {
- return p;
- }
- }
- }
- return null;
- }
-
- private void write(CVSMergeSubscriber s, IMemento memento) {
- // start and end tags
- CVSTag start = s.getStartTag();
- CVSTag end = s.getEndTag();
- memento.putString(CTX_START_TAG, start.getName());
- memento.putInteger(CTX_START_TAG_TYPE, start.getType());
- memento.putString(CTX_END_TAG, end.getName());
- memento.putInteger(CTX_END_TAG_TYPE, end.getType());
-
- // resource roots
- IResource[] roots = s.roots();
- for (int i = 0; i < roots.length; i++) {
- IResource resource = roots[i];
- IMemento rootNode = memento.createChild(CTX_ROOT);
- rootNode.putString(CTX_ROOT_PATH, resource.getFullPath().toString());
- }
- }
-
- private CVSMergeSubscriber read(QualifiedName id, IMemento memento) throws CVSException {
- CVSTag start = new CVSTag(memento.getString(CTX_START_TAG), memento.getInteger(CTX_START_TAG_TYPE).intValue()); //$NON-NLS-1$ //$NON-NLS-2$
- CVSTag end = new CVSTag(memento.getString(CTX_END_TAG), memento.getInteger(CTX_END_TAG_TYPE).intValue()); //$NON-NLS-1$ //$NON-NLS-2$
-
- IMemento[] rootNodes = memento.getChildren(CTX_ROOT);
- if(rootNodes == null || rootNodes.length == 0) {
- throw new CVSException(Policy.bind("MergeSynchronizeParticipant.10", id.toString())); //$NON-NLS-1$
- }
-
- List resources = new ArrayList();
- for (int i = 0; i < rootNodes.length; i++) {
- IMemento rootNode = rootNodes[i];
- IPath path = new Path(rootNode.getString(CTX_ROOT_PATH)); //$NON-NLS-1$
- IResource resource = ResourcesPlugin.getWorkspace().getRoot().findMember(path, true /* include phantoms */);
- if(resource != null) {
- resources.add(resource);
- } else {
- // log that a resource previously in the merge set is no longer in the workspace
- CVSProviderPlugin.log(CVSStatus.INFO, Policy.bind("MergeSynchronizeParticipant.11", path.toString()), null); //$NON-NLS-1$
- }
- }
- if(resources.isEmpty()) {
- throw new CVSException(Policy.bind("MergeSynchronizeParticipant.12", id.toString())); //$NON-NLS-1$
- }
- IResource[] roots = (IResource[]) resources.toArray(new IResource[resources.size()]);
- return new CVSMergeSubscriber(id, roots, start, end);
- }
-
- private void flushStateCache() {
- ((CVSMergeSubscriber)getSubscriber()).cancel();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.ui.synchronize.subscribers.SubscriberParticipant#initializeConfiguration(org.eclipse.team.ui.synchronize.ISynchronizePageConfiguration)
- */
- protected void initializeConfiguration(ISynchronizePageConfiguration configuration) {
- super.initializeConfiguration(configuration);
- configuration.addMenuGroup(ISynchronizePageConfiguration.P_TOOLBAR_MENU, TOOLBAR_CONTRIBUTION_GROUP);
- configuration.addMenuGroup(
- ISynchronizePageConfiguration.P_CONTEXT_MENU,
- CONTEXT_MENU_CONTRIBUTION_GROUP);
- configuration.addMenuGroup(
- ISynchronizePageConfiguration.P_CONTEXT_MENU,
- NON_MODAL_CONTEXT_MENU_CONTRIBUTION_GROUP);
- configuration.setSupportedModes(ISynchronizePageConfiguration.INCOMING_MODE | ISynchronizePageConfiguration.CONFLICTING_MODE);
- configuration.setMode(ISynchronizePageConfiguration.INCOMING_MODE);
- configuration.addActionContribution(new MergeParticipantActionContribution());
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.ui.synchronize.SubscriberParticipant#getLongTaskName()
- */
- protected String getLongTaskName() {
- return getName();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.ui.synchronize.SubscriberParticipant#getShortTaskName()
- */
- protected String getShortTaskName() {
- return Policy.bind("Participant.merging"); //$NON-NLS-1$
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/MergeUpdateAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/MergeUpdateAction.java
deleted file mode 100644
index d844a77c6..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/MergeUpdateAction.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.subscriber;
-
-import org.eclipse.compare.structuremergeviewer.IDiffElement;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.team.core.synchronize.FastSyncInfoFilter;
-import org.eclipse.team.core.synchronize.SyncInfo;
-import org.eclipse.team.core.synchronize.FastSyncInfoFilter.OrSyncInfoFilter;
-import org.eclipse.team.core.synchronize.FastSyncInfoFilter.SyncInfoDirectionFilter;
-import org.eclipse.team.ui.synchronize.ISynchronizePageConfiguration;
-import org.eclipse.team.ui.synchronize.SynchronizeModelOperation;
-
-
-public class MergeUpdateAction extends CVSParticipantAction {
-
- public MergeUpdateAction(ISynchronizePageConfiguration configuration) {
- super(configuration);
- }
-
- public MergeUpdateAction(ISynchronizePageConfiguration configuration, ISelectionProvider provider, String bundleKey) {
- super(configuration, provider, bundleKey);
- }
-
- private boolean promptBeforeUpdate;
-
- /* (non-Javadoc)
- * @see org.eclipse.team.ui.sync.SubscriberAction#getSyncInfoFilter()
- */
- protected FastSyncInfoFilter getSyncInfoFilter() {
- // Update works for all incoming and conflicting nodes
- return new OrSyncInfoFilter(new FastSyncInfoFilter[] {
- new SyncInfoDirectionFilter(SyncInfo.INCOMING),
- new SyncInfoDirectionFilter(SyncInfo.CONFLICTING)
- });
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ui.actions.SubscriberAction#getSubscriberOperation(org.eclipse.compare.structuremergeviewer.IDiffElement[])
- */
- protected SynchronizeModelOperation getSubscriberOperation(ISynchronizePageConfiguration configuration, IDiffElement[] elements) {
- return new MergeUpdateOperation(configuration, elements, promptBeforeUpdate);
- }
-
- public void setPromptBeforeUpdate(boolean prompt) {
- promptBeforeUpdate = prompt;
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/MergeUpdateOperation.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/MergeUpdateOperation.java
deleted file mode 100644
index 3bc038108..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/MergeUpdateOperation.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.subscriber;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.compare.structuremergeviewer.IDiffElement;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.subscribers.Subscriber;
-import org.eclipse.team.core.synchronize.SyncInfo;
-import org.eclipse.team.core.synchronize.SyncInfoSet;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-import org.eclipse.team.internal.ccvs.core.CVSMergeSubscriber;
-import org.eclipse.team.internal.ccvs.core.CVSSyncInfo;
-import org.eclipse.team.internal.ccvs.core.CVSTag;
-import org.eclipse.team.internal.ccvs.core.client.Command;
-import org.eclipse.team.internal.ccvs.core.client.Update;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.ui.synchronize.ISynchronizePageConfiguration;
-
-/**
- * This action performs a "cvs update -j start -j end ..." to merge changes
- * into the local workspace.
- */
-public class MergeUpdateOperation extends SafeUpdateOperation {
-
- Subscriber currentSubcriber = null;
-
- protected MergeUpdateOperation(ISynchronizePageConfiguration configuration, IDiffElement[] elements, boolean promptBeforeUpdate) {
- super(configuration, elements, promptBeforeUpdate);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.subscriber.CVSSubscriberAction#getJobName(org.eclipse.team.ui.sync.SyncInfoSet)
- */
- protected String getJobName() {
- SyncInfoSet syncSet = getSyncInfoSet();
- return Policy.bind("MergeUpdateAction.jobName", new Integer(syncSet.size()).toString()); //$NON-NLS-1$
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.subscriber.SafeUpdateOperation#getOverwriteLocalChanges()
- */
- protected boolean getOverwriteLocalChanges() {
- return true;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.subscriber.SafeUpdateOperation#updated(org.eclipse.core.resources.IResource[])
- */
- protected void updated(IResource[] resources) throws TeamException {
- // Mark all succesfully updated resources as merged
- if(resources.length > 0 && currentSubcriber != null) {
- ((CVSMergeSubscriber)currentSubcriber).merged(resources);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.subscriber.SafeUpdateOperation#runUpdateDeletions(org.eclipse.team.core.synchronize.SyncInfo[], org.eclipse.core.runtime.IProgressMonitor)
- */
- protected void runUpdateDeletions(SyncInfo[] nodes, IProgressMonitor monitor) throws TeamException {
- // When merging, update deletions become outgoing deletions so just delete
- // the files locally without unmanaging (so the sync info is kept to
- // indicate an outgoing deletion
- try {
- monitor.beginTask(null, 100 * nodes.length);
- for (int i = 0; i < nodes.length; i++) {
- IResource resource = nodes[i].getLocal();
- if (resource.getType() == IResource.FILE) {
- ((IFile)resource).delete(false /* force */, true /* keep local history */, Policy.subMonitorFor(monitor, 100));
- }
- }
- } catch (CoreException e) {
- throw CVSException.wrapException(e);
- } finally {
- monitor.done();
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.subscriber.SafeUpdateOperation#runSafeUpdate(org.eclipse.team.core.synchronize.SyncInfo[], org.eclipse.core.runtime.IProgressMonitor)
- */
- protected void runSafeUpdate(SyncInfo[] nodes, IProgressMonitor monitor) throws TeamException {
- if(nodes.length > 0) {
- setSubscriber(nodes[0]);
- CVSTag startTag = ((CVSMergeSubscriber)currentSubcriber).getStartTag();
- CVSTag endTag = ((CVSMergeSubscriber)currentSubcriber).getEndTag();
-
- // Incoming additions require different handling then incoming changes and deletions
- List additions = new ArrayList();
- List changes = new ArrayList();
- for (int i = 0; i < nodes.length; i++) {
- SyncInfo resource = nodes[i];
- int kind = resource.getKind();
- if ((kind & SyncInfo.CHANGE_MASK) == SyncInfo.ADDITION) {
- additions.add(resource);
- } else {
- changes.add(resource);
- }
- }
-
- try {
- monitor.beginTask(null, (additions.size() + changes.size()) * 100);
- if (!additions.isEmpty()) {
- safeUpdate(
- getIResourcesFrom((SyncInfo[]) additions.toArray(new SyncInfo[additions.size()])),
- new Command.LocalOption[] {
- Command.DO_NOT_RECURSE,
- Command.makeArgumentOption(Update.JOIN, endTag.getName())
- },
- Policy.subMonitorFor(monitor, additions.size() * 100));
- }
- if (!changes.isEmpty()) {
- safeUpdate(
- getIResourcesFrom((SyncInfo[]) changes.toArray(new SyncInfo[changes.size()])),
- new Command.LocalOption[] {
- Command.DO_NOT_RECURSE,
- Command.makeArgumentOption(Update.JOIN, startTag.getName()),
- Command.makeArgumentOption(Update.JOIN, endTag.getName())
- },
- Policy.subMonitorFor(monitor, changes.size() * 100));
- }
- } finally {
- monitor.done();
- }
- }
- }
-
- /**
- * @param nodes
- * @throws CVSException
- */
- private void setSubscriber(SyncInfo node) throws CVSException {
- // Assumption that all nodes are from the same subscriber.
- currentSubcriber = ((CVSSyncInfo)node).getSubscriber();
- if (!(currentSubcriber instanceof CVSMergeSubscriber)) {
- throw new CVSException(Policy.bind("MergeUpdateAction.invalidSubscriber", currentSubcriber.toString())); //$NON-NLS-1$
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.subscriber.SafeUpdateOperation#overwriteUpdate(org.eclipse.team.core.synchronize.SyncInfoSet, org.eclipse.core.runtime.IProgressMonitor)
- */
- protected void overwriteUpdate(SyncInfoSet set, IProgressMonitor monitor) throws TeamException {
- SyncInfo[] nodes = set.getSyncInfos();
- if (nodes.length == 0) return;
- setSubscriber(nodes[0]);
- monitor.beginTask(null, 1000 * nodes.length);
- try {
- for (int i = 0; i < nodes.length; i++) {
- makeRemoteLocal(nodes[i], Policy.subMonitorFor(monitor, 1000));
- }
- } finally {
- monitor.done();
- }
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/OpenChangeSetAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/OpenChangeSetAction.java
deleted file mode 100644
index 753a7db46..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/OpenChangeSetAction.java
+++ /dev/null
@@ -1,215 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.subscriber;
-
-import java.lang.reflect.InvocationTargetException;
-import java.text.DateFormat;
-
-import org.eclipse.compare.structuremergeviewer.IDiffElement;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.subscribers.ChangeSet;
-import org.eclipse.team.core.subscribers.CheckedInChangeSet;
-import org.eclipse.team.core.synchronize.*;
-import org.eclipse.team.core.synchronize.FastSyncInfoFilter.*;
-import org.eclipse.team.core.variants.IResourceVariant;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.operations.RemoteCompareOperation.CompareTreeBuilder;
-import org.eclipse.team.internal.ui.synchronize.ChangeSetDiffNode;
-import org.eclipse.team.ui.synchronize.*;
-
-class OpenChangeSetAction extends SynchronizeModelAction {
-
- protected OpenChangeSetAction(ISynchronizePageConfiguration configuration) {
- super(Policy.bind("OpenCommitSetAction.20"), configuration); //$NON-NLS-1$
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.ui.synchronize.SynchronizeModelAction#getSyncInfoFilter()
- */
- protected FastSyncInfoFilter getSyncInfoFilter() {
- return new AndSyncInfoFilter(new FastSyncInfoFilter[] {
- new FastSyncInfoFilter() {
- public boolean select(SyncInfo info) {
- return info.getLocal().getType() == IResource.FILE;
- }
- },
- new OrSyncInfoFilter(new FastSyncInfoFilter[] {
- new SyncInfoDirectionFilter(new int[] { SyncInfo.INCOMING, SyncInfo.CONFLICTING }),
- new FastSyncInfoFilter() {
- public boolean select(SyncInfo info) {
- return !info.getComparator().isThreeWay();
- }
- }
- })
- });
- }
-
- private ChangeSet getChangeSet(IStructuredSelection selection) {
- // First, check to see if a change set is selected directly
- if (selection.size() == 1) {
- Object o = selection.getFirstElement();
- if (o instanceof IAdaptable) {
- ChangeSet set = (ChangeSet)((IAdaptable)o).getAdapter(ChangeSet.class);
- if (set != null)
- return set;
- }
- }
- // Failing that, check to see if all the selected elements and their childen are in the same change set
- return getChangeSet(selection.toArray());
- }
-
- private ChangeSet getChangeSet(Object[] elements) {
- ChangeSet foundSet = null;
- for (int i = 0; i < elements.length; i++) {
- Object object = elements[i];
- ChangeSet set = getChangeSet((ISynchronizeModelElement)object);
- if (set == null) return null;
- if (foundSet == null) {
- foundSet = set;
- } else if (foundSet != set) {
- return null;
- }
- }
- return foundSet;
- }
-
- private ChangeSet getChangeSet(ISynchronizeModelElement element) {
- if (element == null) return null;
- if (element instanceof IAdaptable) {
- ChangeSet set = (ChangeSet)((IAdaptable)element).getAdapter(ChangeSet.class);
- if (set != null)
- return set;
- }
- return getChangeSet((ISynchronizeModelElement)element.getParent());
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.ui.synchronize.SynchronizeModelAction#updateSelection(org.eclipse.jface.viewers.IStructuredSelection)
- */
- protected boolean updateSelection(IStructuredSelection selection) {
- boolean enabled = super.updateSelection(selection);
- if (enabled) {
- // The selection only contains appropriate files so
- // only enable if the selection is contained within a single change set
- ChangeSet set = getChangeSet(selection);
- return set != null;
- }
- return false;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.ui.synchronize.SynchronizeModelAction#getSubscriberOperation(org.eclipse.team.ui.synchronize.ISynchronizePageConfiguration, org.eclipse.compare.structuremergeviewer.IDiffElement[])
- */
- protected SynchronizeModelOperation getSubscriberOperation(ISynchronizePageConfiguration configuration, IDiffElement[] elements) {
- return new SynchronizeModelOperation(configuration, elements) {
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- SyncInfoSet set = getSyncInfoSet();
- SyncInfo[] infos = set.getSyncInfos();
- if (infos.length > 0) {
- ICVSRepositoryLocation location = getLocation(infos[0]);
- if (location == null) {
- handle(new CVSException(Policy.bind("OpenCommitSetAction.21"))); //$NON-NLS-1$
- return;
- }
- CompareTreeBuilder builder = new CompareTreeBuilder(location, null, null);
- if (buildTrees(builder, infos)) {
- try {
- builder.cacheContents(monitor);
- builder.openCompareEditor(getConfiguration().getSite().getPart().getSite().getPage(), getCompareTitle(), getCompareToolTip());
- } catch (CVSException e) {
- handle(e);
- return;
- }
- }
- }
- }
-
- private String getCompareToolTip() {
- IDiffElement[] elements = getSelectedDiffElements();
- for (int i = 0; i < elements.length; i++) {
- IDiffElement element = elements[i];
- while (element != null) {
- if (element instanceof ChangeSetDiffNode) {
- return ((ChangeSetDiffNode)element).getName();
- }
- element = element.getParent();
- }
- }
- return null;
- }
-
- private String getCompareTitle() {
- IDiffElement[] elements = getSelectedDiffElements();
- ChangeSet set = getChangeSet(elements);
- if (set instanceof CheckedInChangeSet) {
- CheckedInChangeSet cics = (CheckedInChangeSet)set;
- String date = DateFormat.getDateTimeInstance().format(cics.getDate());
- return "[" + cics.getAuthor() + "] (" + date + ")";
- }
- return "CVS Change";
- }
-
- private ICVSRepositoryLocation getLocation(SyncInfo info) {
- IResourceVariant remote = info.getRemote();
- if (remote == null) {
- remote = info.getBase();
- }
- if (remote != null) {
- return ((ICVSRemoteResource)remote).getRepository();
- }
- return null;
- }
-
- /*
- * Build the trees that will be compared
- */
- private boolean buildTrees(CompareTreeBuilder builder, SyncInfo[] infos) {
- for (int i = 0; i < infos.length; i++) {
- SyncInfo info = infos[i];
- IResourceVariant remote = info.getRemote();
- if (remote == null) {
- IResourceVariant predecessor = info.getBase();
- if (predecessor instanceof ICVSRemoteFile) {
- builder.addToTrees((ICVSRemoteFile)predecessor, null);
- }
- } else if (remote instanceof ICVSRemoteFile) {
- try {
- ICVSRemoteFile predecessor = getImmediatePredecessor(remote);
- builder.addToTrees(predecessor, (ICVSRemoteFile)remote);
- } catch (TeamException e) {
- handle(e);
- return false;
- }
- }
- }
- return true;
- }
- };
- }
-
- private ICVSRemoteFile getImmediatePredecessor(IResourceVariant remote) throws TeamException {
- CVSChangeSetCollector changeSetCollector = getChangeSetCollector();
- if (changeSetCollector != null) {
- return changeSetCollector.getImmediatePredecessor((ICVSRemoteFile)remote);
- }
- return null;
- }
-
- private CVSChangeSetCollector getChangeSetCollector() {
- return (CVSChangeSetCollector)getConfiguration().getProperty(CVSChangeSetCollector.CVS_CHECKED_IN_COLLECTOR);
- }
-
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/OverrideAndCommitAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/OverrideAndCommitAction.java
deleted file mode 100644
index 6ad1b6448..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/OverrideAndCommitAction.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.subscriber;
-
-import org.eclipse.compare.structuremergeviewer.IDiffElement;
-import org.eclipse.team.core.synchronize.FastSyncInfoFilter;
-import org.eclipse.team.core.synchronize.SyncInfo;
-import org.eclipse.team.core.synchronize.FastSyncInfoFilter.SyncInfoDirectionFilter;
-import org.eclipse.team.ui.synchronize.ISynchronizePageConfiguration;
-import org.eclipse.team.ui.synchronize.SynchronizeModelOperation;
-
-public class OverrideAndCommitAction extends CVSParticipantAction {
-
- public OverrideAndCommitAction(ISynchronizePageConfiguration configuration) {
- super(configuration);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ui.actions.SubscriberAction#getSyncInfoFilter()
- */
- protected FastSyncInfoFilter getSyncInfoFilter() {
- return new SyncInfoDirectionFilter(new int[] {SyncInfo.CONFLICTING, SyncInfo.INCOMING});
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ui.actions.SubscriberAction#getSubscriberOperation(org.eclipse.compare.structuremergeviewer.IDiffElement[])
- */
- protected SynchronizeModelOperation getSubscriberOperation(ISynchronizePageConfiguration configuration, IDiffElement[] elements) {
- return new WorkspaceCommitOperation(configuration, elements, true /* override */);
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/OverrideAndUpdateAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/OverrideAndUpdateAction.java
deleted file mode 100644
index 3b74f7522..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/OverrideAndUpdateAction.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.subscriber;
-
-import org.eclipse.compare.structuremergeviewer.IDiffElement;
-import org.eclipse.team.core.synchronize.FastSyncInfoFilter;
-import org.eclipse.team.core.synchronize.SyncInfo;
-import org.eclipse.team.core.synchronize.FastSyncInfoFilter.SyncInfoDirectionFilter;
-import org.eclipse.team.ui.synchronize.ISynchronizePageConfiguration;
-import org.eclipse.team.ui.synchronize.SynchronizeModelOperation;
-
-/**
- * Runs an update command that will prompt the user for overwritting local
- * changes to files that have non-mergeable conflicts. All the prompting logic
- * is in the super class.
- */
-public class OverrideAndUpdateAction extends CVSParticipantAction {
-
- public OverrideAndUpdateAction(ISynchronizePageConfiguration configuration) {
- super(configuration);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.ui.sync.SubscriberAction#getSyncInfoFilter()
- */
- protected FastSyncInfoFilter getSyncInfoFilter() {
- return new SyncInfoDirectionFilter(new int[] {SyncInfo.CONFLICTING, SyncInfo.OUTGOING});
- }
-
- protected SynchronizeModelOperation getSubscriberOperation(ISynchronizePageConfiguration configuration, IDiffElement[] elements) {
- return new OverrideAndUpdateSubscriberOperation(configuration, elements);
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/OverrideAndUpdateSubscriberOperation.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/OverrideAndUpdateSubscriberOperation.java
deleted file mode 100644
index e744c406f..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/OverrideAndUpdateSubscriberOperation.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.subscriber;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.compare.structuremergeviewer.IDiffElement;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.synchronize.FastSyncInfoFilter;
-import org.eclipse.team.core.synchronize.SyncInfo;
-import org.eclipse.team.core.synchronize.SyncInfoSet;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.operations.OverrideAndUpdateOperation;
-import org.eclipse.team.ui.synchronize.ISynchronizePageConfiguration;
-
-public class OverrideAndUpdateSubscriberOperation extends CVSSubscriberOperation {
- protected OverrideAndUpdateSubscriberOperation(ISynchronizePageConfiguration configuration, IDiffElement[] elements) {
- super(configuration, elements);
- }
- /* (non-Javadoc)
- * @see org.eclipse.team.ui.TeamOperation#shouldRun()
- */
- public boolean shouldRun() {
- SyncInfoSet syncSet = getSyncInfoSet();
- return(promptForOverwrite(syncSet));
- }
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.subscriber.CVSSubscriberOperation#run(org.eclipse.team.core.synchronize.SyncInfoSet, org.eclipse.core.runtime.IProgressMonitor)
- */
- protected void run(SyncInfoSet set, IProgressMonitor monitor) throws TeamException {
- try {
- SyncInfo[] conflicts = set.getNodes(getConflictingAdditionFilter());
- List conflictingResources = new ArrayList();
- for (int i = 0; i < conflicts.length; i++) {
- SyncInfo info = conflicts[i];
- conflictingResources.add(info.getLocal());
- }
- new OverrideAndUpdateOperation(getPart(), set.getResources(), (IResource[]) conflictingResources.toArray(new IResource[conflictingResources.size()]), null /* tag */, false /* recurse */).run(monitor);
- } catch (InvocationTargetException e) {
- throw CVSException.wrapException(e);
- } catch (InterruptedException e) {
- Policy.cancelOperation();
- }
- }
- private FastSyncInfoFilter getConflictingAdditionFilter() {
- return new FastSyncInfoFilter.AndSyncInfoFilter(
- new FastSyncInfoFilter[] {
- new FastSyncInfoFilter.SyncInfoDirectionFilter(new int[] {SyncInfo.CONFLICTING}),
- new FastSyncInfoFilter.SyncInfoChangeTypeFilter(new int[] {SyncInfo.ADDITION})
- });
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.subscriber.CVSSubscriberAction#getJobName(org.eclipse.team.ui.sync.SyncInfoSet)
- */
- protected String getJobName() {
- SyncInfoSet syncSet = getSyncInfoSet();
- return Policy.bind("UpdateAction.jobName", new Integer(syncSet.size()).toString()); //$NON-NLS-1$
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/RefreshDirtyStateAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/RefreshDirtyStateAction.java
deleted file mode 100644
index 160aca024..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/RefreshDirtyStateAction.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.subscriber;
-
-import org.eclipse.compare.structuremergeviewer.IDiffElement;
-import org.eclipse.team.core.synchronize.FastSyncInfoFilter;
-import org.eclipse.team.core.synchronize.SyncInfo;
-import org.eclipse.team.core.synchronize.FastSyncInfoFilter.AndSyncInfoFilter;
-import org.eclipse.team.core.synchronize.FastSyncInfoFilter.SyncInfoChangeTypeFilter;
-import org.eclipse.team.core.synchronize.FastSyncInfoFilter.SyncInfoDirectionFilter;
-import org.eclipse.team.ui.synchronize.ISynchronizePageConfiguration;
-import org.eclipse.team.ui.synchronize.SynchronizeModelOperation;
-
-/**
- * Resets the dirty state of files whose contents match their base.
- */
-public class RefreshDirtyStateAction extends CVSParticipantAction {
-
- public RefreshDirtyStateAction(ISynchronizePageConfiguration configuration) {
- super(configuration);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.ui.sync.SubscriberAction#getSyncInfoFilter()
- */
- protected FastSyncInfoFilter getSyncInfoFilter() {
- // Only interested in outgoing changes
- return new AndSyncInfoFilter(new FastSyncInfoFilter[] {
- new SyncInfoDirectionFilter(new int[] {SyncInfo.OUTGOING, SyncInfo.CONFLICTING }),
- new SyncInfoChangeTypeFilter(SyncInfo.CHANGE)
- });
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.ui.synchronize.SynchronizeModelAction#getSubscriberOperation(org.eclipse.ui.IWorkbenchPart, org.eclipse.compare.structuremergeviewer.IDiffElement[])
- */
- protected SynchronizeModelOperation getSubscriberOperation(
- ISynchronizePageConfiguration configuration, IDiffElement[] elements) {
- return new RefreshDirtyStateOperation(configuration, elements);
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/RefreshDirtyStateOperation.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/RefreshDirtyStateOperation.java
deleted file mode 100644
index a211580b2..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/RefreshDirtyStateOperation.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.subscriber;
-
-import org.eclipse.compare.structuremergeviewer.IDiffElement;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.synchronize.SyncInfo;
-import org.eclipse.team.core.synchronize.SyncInfoFilter;
-import org.eclipse.team.core.synchronize.SyncInfoSet;
-import org.eclipse.team.core.synchronize.SyncInfoFilter.ContentComparisonSyncInfoFilter;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-import org.eclipse.team.internal.ccvs.core.ICVSFile;
-import org.eclipse.team.internal.ccvs.core.ICVSFolder;
-import org.eclipse.team.internal.ccvs.core.ICVSRunnable;
-import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.ui.synchronize.ISynchronizePageConfiguration;
-
-/**
- * Resets the dirty state of files whose contents match their base.
- */
-public class RefreshDirtyStateOperation extends CVSSubscriberOperation {
-
- protected RefreshDirtyStateOperation(ISynchronizePageConfiguration configuration, IDiffElement[] elements) {
- super(configuration, elements);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.subscriber.CVSSubscriberOperation#run(org.eclipse.team.core.synchronize.SyncInfoSet, org.eclipse.core.runtime.IProgressMonitor)
- */
- protected void run(SyncInfoSet set, IProgressMonitor monitor) throws TeamException {
- final ContentComparisonSyncInfoFilter comparator = new SyncInfoFilter.ContentComparisonSyncInfoFilter(false);
- final SyncInfo[] infos = set.getSyncInfos();
- if (infos.length == 0) return;
- IProject project = infos[0].getLocal().getProject();
- ICVSFolder folder = CVSWorkspaceRoot.getCVSFolderFor(project);
- folder.run(new ICVSRunnable() {
- public void run(IProgressMonitor monitor) throws CVSException {
- monitor.beginTask(null, infos.length * 100);
- for (int i = 0; i < infos.length; i++) {
- SyncInfo info = infos[i];
- IResource resource = info.getLocal();
- if (resource.getType() == IResource.FILE) {
- if (comparator.compareContents((IFile)resource, info.getBase(), Policy.subMonitorFor(monitor, 100))) {
- ICVSFile cvsFile = CVSWorkspaceRoot.getCVSFileFor((IFile)resource);
- cvsFile.checkedIn(null, false /* not a commit */);
- }
- }
- }
- monitor.done();
- }
- }, monitor);
-
- }
-
- protected String getErrorTitle() {
- return Policy.bind("RefreshDirtyStateOperation.0"); //$NON-NLS-1$
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.subscriber.CVSSubscriberAction#getJobName(org.eclipse.team.ui.sync.SyncInfoSet)
- */
- protected String getJobName() {
- return Policy.bind("RefreshDirtyStateOperation.1"); //$NON-NLS-1$
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/SafeUpdateOperation.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/SafeUpdateOperation.java
deleted file mode 100644
index c3ef314cc..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/SafeUpdateOperation.java
+++ /dev/null
@@ -1,434 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.subscriber;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.compare.structuremergeviewer.IDiffElement;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.synchronize.FastSyncInfoFilter;
-import org.eclipse.team.core.synchronize.SyncInfo;
-import org.eclipse.team.core.synchronize.SyncInfoSet;
-import org.eclipse.team.core.synchronize.FastSyncInfoFilter.AndSyncInfoFilter;
-import org.eclipse.team.core.synchronize.FastSyncInfoFilter.OrSyncInfoFilter;
-import org.eclipse.team.core.synchronize.FastSyncInfoFilter.SyncInfoDirectionFilter;
-import org.eclipse.team.core.variants.IResourceVariant;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-import org.eclipse.team.internal.ccvs.core.CVSProviderPlugin;
-import org.eclipse.team.internal.ccvs.core.ICVSFile;
-import org.eclipse.team.internal.ccvs.core.client.Command.LocalOption;
-import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot;
-import org.eclipse.team.internal.ccvs.core.syncinfo.ResourceSyncInfo;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.operations.UpdateOnlyMergableOperation;
-import org.eclipse.team.internal.ui.TeamUIPlugin;
-import org.eclipse.team.ui.synchronize.ISynchronizePageConfiguration;
-
-/**
- * This update action will update all mergable resources first and then prompt the
- * user to overwrite any resources that failed the safe update.
- *
- * Subclasses should determine how the update should handle conflicts by implementing
- * the getOverwriteLocalChanges() method.
- */
-public abstract class SafeUpdateOperation extends CVSSubscriberOperation {
-
- private boolean promptBeforeUpdate = false;
-
- private SyncInfoSet skipped = new SyncInfoSet();
-
- protected SafeUpdateOperation(ISynchronizePageConfiguration configuration, IDiffElement[] elements, boolean promptBeforeUpdate) {
- super(configuration, elements);
- this.promptBeforeUpdate = promptBeforeUpdate;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.ui.TeamOperation#shouldRun()
- */
- public boolean shouldRun() {
- return promptIfNeeded();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.subscriber.CVSSubscriberOperation#run(org.eclipse.core.runtime.IProgressMonitor)
- */
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- skipped.clear();
- super.run(monitor);
- try {
- handleFailedUpdates(monitor);
- } catch (TeamException e) {
- throw new InvocationTargetException(e);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.subscriber.CVSSubscriberAction#run(org.eclipse.team.ui.sync.SyncInfoSet, org.eclipse.core.runtime.IProgressMonitor)
- */
- public void run(SyncInfoSet syncSet, IProgressMonitor monitor) throws TeamException {
- try {
- monitor.beginTask(null, 100);
-
- // Remove the cases that are known to fail (adding them to skipped list)
- removeKnownFailureCases(syncSet);
-
- // Run the update on the remaining nodes in the set
- // The update will fail for conflicts that turn out to be non-automergable
- safeUpdate(syncSet, Policy.subMonitorFor(monitor, 100));
-
- // Remove all failed conflicts from the original sync set
- syncSet.rejectNodes(new FastSyncInfoFilter() {
- public boolean select(SyncInfo info) {
- return skipped.getSyncInfo(info.getLocal()) != null;
- }
- });
-
- // Signal for the ones that were updated
- updated(syncSet.getResources());
- } finally {
- monitor.done();
- }
- }
-
- /**
- * @param syncSet
- * @return
- */
- private SyncInfoSet removeKnownFailureCases(SyncInfoSet syncSet) {
- // First, remove any known failure cases
- FastSyncInfoFilter failFilter = getKnownFailureCases();
- SyncInfo[] willFail = syncSet.getNodes(failFilter);
- syncSet.rejectNodes(failFilter);
- for (int i = 0; i < willFail.length; i++) {
- SyncInfo info = willFail[i];
- skipped.add(info);
- }
- return syncSet;
- }
-
- private void handleFailedUpdates(IProgressMonitor monitor) throws TeamException {
- // Handle conflicting files that can't be merged, ask the user what should be done.
- if(! skipped.isEmpty()) {
- if(getOverwriteLocalChanges()) {
- // Ask the user if a replace should be performed on the remaining nodes
- if(promptForOverwrite(skipped)) {
- overwriteUpdate(skipped, monitor);
- if (!skipped.isEmpty()) {
- updated(skipped.getResources());
- }
- }
- } else {
- // Warn the user that some nodes could not be updated. This can happen if there are
- // files with conflicts that are not auto-mergeable.
- warnAboutFailedResources(skipped);
- }
- }
- }
-
- protected boolean getOverwriteLocalChanges(){
- return false;
- }
-
- /**
- * Perform a safe update on the resources in the provided set. Any included resources
- * that cannot be updated safely wil be added to the skippedFiles list.
- * @param syncSet the set containing the resources to be updated
- * @param monitor
- */
- protected void safeUpdate(SyncInfoSet syncSet, IProgressMonitor monitor) throws TeamException {
- SyncInfo[] changed = syncSet.getSyncInfos();
- if (changed.length == 0) return;
-
- // The list of sync resources to be updated using "cvs update"
- List updateShallow = new ArrayList();
- // A list of sync resource folders which need to be created locally
- // (incoming addition or previously pruned)
- Set parentCreationElements = new HashSet();
- // A list of sync resources that are incoming deletions.
- // We do these first to avoid case conflicts
- List updateDeletions = new ArrayList();
-
- for (int i = 0; i < changed.length; i++) {
- SyncInfo changedNode = changed[i];
-
- // Make sure that parent folders exist
- SyncInfo parent = getParent(changedNode);
- if (parent != null && isOutOfSync(parent)) {
- // We need to ensure that parents that are either incoming folder additions
- // or previously pruned folders are recreated.
- parentCreationElements.add(parent);
- }
-
- IResource resource = changedNode.getLocal();
- int kind = changedNode.getKind();
- boolean willBeAttempted = false;
- if (resource.getType() == IResource.FILE) {
- // Not all change types will require a "cvs update"
- // Some can be deleted locally without performing an update
- switch (kind & SyncInfo.DIRECTION_MASK) {
- case SyncInfo.INCOMING:
- switch (kind & SyncInfo.CHANGE_MASK) {
- case SyncInfo.DELETION:
- // Incoming deletions can just be deleted instead of updated
- updateDeletions.add(changedNode);
- willBeAttempted = true;
- break;
- default:
- // add the file to the list of files to be updated
- updateShallow.add(changedNode);
- willBeAttempted = true;
- break;
- }
- break;
- case SyncInfo.CONFLICTING:
- switch (kind & SyncInfo.CHANGE_MASK) {
- case SyncInfo.CHANGE:
- // add the file to the list of files to be updated
- updateShallow.add(changedNode);
- willBeAttempted = true;
- break;
- }
- break;
- }
- if (!willBeAttempted) {
- skipped.add(syncSet.getSyncInfo(resource));
- }
- } else {
- // Special handling for folders to support shallow operations on files
- // (i.e. folder operations are performed using the sync info already
- // contained in the sync info.
- if (isOutOfSync(changedNode)) {
- parentCreationElements.add(changedNode);
- }
- }
-
- }
- try {
- monitor.beginTask(null, 100);
-
- if (parentCreationElements.size() > 0) {
- makeInSync((SyncInfo[]) parentCreationElements.toArray(new SyncInfo[parentCreationElements.size()]), Policy.subMonitorFor(monitor, 25));
- }
- if (updateDeletions.size() > 0) {
- runUpdateDeletions((SyncInfo[])updateDeletions.toArray(new SyncInfo[updateDeletions.size()]), Policy.subMonitorFor(monitor, 25));
- }
- if (updateShallow.size() > 0) {
- runSafeUpdate((SyncInfo[])updateShallow.toArray(new SyncInfo[updateShallow.size()]), Policy.subMonitorFor(monitor, 50));
- }
- } finally {
- monitor.done();
- }
- return;
- }
-
- /**
- * Perform an overwrite (unsafe) update on the resources in the provided set.
- * The passed sync set may containe resources from multiple projects and
- * it cannot be assumed that any scheduling rule is held when this method
- * is invoked.
- * @param syncSet the set containing the resources to be updated
- * @param monitor
- */
- protected abstract void overwriteUpdate(SyncInfoSet syncSet, IProgressMonitor monitor) throws TeamException;
-
- /*
- * Return a filter which selects the cases that we know ahead of time
- * will fail on an update
- */
- protected FastSyncInfoFilter getKnownFailureCases() {
- return new OrSyncInfoFilter(new FastSyncInfoFilter[] {
- // Conflicting additions of files will fail
- new AndSyncInfoFilter(new FastSyncInfoFilter[] {
- FastSyncInfoFilter.getDirectionAndChangeFilter(SyncInfo.CONFLICTING, SyncInfo.ADDITION),
- new FastSyncInfoFilter() {
- public boolean select(SyncInfo info) {
- return info.getLocal().getType() == IResource.FILE;
- }
- }
- }),
- // Conflicting changes of files will fail if the local is not managed
- // or is an addition
- new AndSyncInfoFilter(new FastSyncInfoFilter[] {
- FastSyncInfoFilter.getDirectionAndChangeFilter(SyncInfo.CONFLICTING, SyncInfo.CHANGE),
- new FastSyncInfoFilter() {
- public boolean select(SyncInfo info) {
- if (info.getLocal().getType() == IResource.FILE) {
- try {
- ICVSFile cvsFile = CVSWorkspaceRoot.getCVSFileFor((IFile)info.getLocal());
- byte[] syncBytes = cvsFile.getSyncBytes();
- return (syncBytes == null || ResourceSyncInfo.isAddition(syncBytes));
- } catch (CVSException e) {
- CVSUIPlugin.log(e);
- // Fall though and try to update
- }
- }
- return false;
- }
- }
- }),
- // Conflicting changes involving a deletion on one side will aways fail
- new AndSyncInfoFilter(new FastSyncInfoFilter[] {
- FastSyncInfoFilter.getDirectionAndChangeFilter(SyncInfo.CONFLICTING, SyncInfo.CHANGE),
- new FastSyncInfoFilter() {
- public boolean select(SyncInfo info) {
- IResourceVariant remote = info.getRemote();
- IResourceVariant base = info.getBase();
- if (info.getLocal().exists()) {
- // local != base and no remote will fail
- return (base != null && remote == null);
- } else {
- // no local and base != remote
- return (base != null && remote != null && !base.equals(remote));
- }
- }
- }
- }),
- // Conflicts where the file type is binary will work but are not merged
- // so they should be skipped
- new AndSyncInfoFilter(new FastSyncInfoFilter[] {
- FastSyncInfoFilter.getDirectionAndChangeFilter(SyncInfo.CONFLICTING, SyncInfo.CHANGE),
- new FastSyncInfoFilter() {
- public boolean select(SyncInfo info) {
- IResource local = info.getLocal();
- if (local.getType() == IResource.FILE) {
- try {
- ICVSFile file = CVSWorkspaceRoot.getCVSFileFor((IFile)local);
- byte[] syncBytes = file.getSyncBytes();
- if (syncBytes != null) {
- return ResourceSyncInfo.isBinary(syncBytes);
- }
- } catch (CVSException e) {
- // There was an error obtaining or interpreting the sync bytes
- // Log it and skip the file
- CVSProviderPlugin.log(e);
- return true;
- }
- }
- return false;
- }
- }
- }),
- // Outgoing changes may not fail but they are skipped as well
- new SyncInfoDirectionFilter(SyncInfo.OUTGOING)
- });
- }
-
- /**
- * Warn user that some files could not be updated.
- * Note: This method is designed to be overridden by test cases.
- */
- protected void warnAboutFailedResources(final SyncInfoSet syncSet) {
- TeamUIPlugin.getStandardDisplay().syncExec(new Runnable() {
- public void run() {
- MessageDialog.openInformation(getShell(),
- Policy.bind("SafeUpdateAction.warnFilesWithConflictsTitle"), //$NON-NLS-1$
- Policy.bind("SafeUpdateAction.warnFilesWithConflictsDescription")); //$NON-NLS-1$
- }
- });
- }
-
- /**
- * This method is invoked for all resources in the sync set that are incoming deletions.
- * It is done separately to allow deletions to be performed before additions that may
- * be the same name with different letter case.
- * @param nodes the SyncInfo nodes that are incoming deletions
- * @param monitor
- * @throws TeamException
- */
- protected abstract void runUpdateDeletions(SyncInfo[] nodes, IProgressMonitor monitor) throws TeamException;
-
- /**
- * This method is invoked for all resources in the sync set that are incoming changes
- * (but not deletions: @see runUpdateDeletions) or conflicting changes.
- * This method should only update those conflicting resources that are automergable.
- * @param nodes the incoming or conflicting SyncInfo nodes
- * @param monitor
- * @throws TeamException
- */
- protected abstract void runSafeUpdate(SyncInfo[] nodes, IProgressMonitor monitor) throws TeamException;
-
- protected void safeUpdate(IResource[] resources, LocalOption[] localOptions, IProgressMonitor monitor) throws TeamException {
- try {
- UpdateOnlyMergableOperation operation = new UpdateOnlyMergableOperation(getPart(), resources, localOptions);
- operation.run(monitor);
- addSkippedFiles(operation.getSkippedFiles());
- } catch (InvocationTargetException e) {
- throw CVSException.wrapException(e);
- } catch (InterruptedException e) {
- Policy.cancelOperation();
- }
- }
-
- /**
- * Notification of all resource that were updated (either safely or othrwise)
- */
- protected abstract void updated(IResource[] resources) throws TeamException;
-
- private void addSkippedFiles(IFile[] files) {
- SyncInfoSet set = getSyncInfoSet();
- for (int i = 0; i < files.length; i++) {
- IFile file = files[i];
- skipped.add(set.getSyncInfo(file));
- }
- }
-
- protected String getErrorTitle() {
- return Policy.bind("UpdateAction.update"); //$NON-NLS-1$
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.subscriber.CVSSubscriberAction#getJobName(org.eclipse.team.ui.sync.SyncInfoSet)
- */
- protected String getJobName() {
- SyncInfoSet syncSet = getSyncInfoSet();
- return Policy.bind("UpdateAction.jobName", new Integer(syncSet.size()).toString()); //$NON-NLS-1$
- }
-
- /**
- * Confirm with the user what we are going to be doing. By default the update action doesn't
- * prompt because the user has usually selected resources first. But in some cases, for example
- * when performing a toolbar action, a confirmation prompt is nice.
- * @param set the resources to be updated
- * @return true
if the update operation can continue, and false
- * if the update has been cancelled by the user.
- */
- private boolean promptIfNeeded() {
- final SyncInfoSet set = getSyncInfoSet();
- final boolean[] result = new boolean[] {true};
- if(getPromptBeforeUpdate()) {
- TeamUIPlugin.getStandardDisplay().syncExec(new Runnable() {
- public void run() {
- String sizeString = Integer.toString(set.size());
- String message = set.size() > 1 ? Policy.bind("UpdateAction.promptForUpdateSeveral", sizeString) : Policy.bind("UpdateAction.promptForUpdateOne", sizeString); //$NON-NLS-1$ //$NON-NLS-2$
- result[0] = MessageDialog.openQuestion(getShell(), Policy.bind("UpdateAction.promptForUpdateTitle", sizeString), message); //$NON-NLS-1$
- }
- });
- }
- return result[0];
- }
-
- public void setPromptBeforeUpdate(boolean prompt) {
- this.promptBeforeUpdate = prompt;
- }
-
- public boolean getPromptBeforeUpdate() {
- return promptBeforeUpdate;
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/SyncInfoSetDetailsDialog.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/SyncInfoSetDetailsDialog.java
deleted file mode 100644
index 9a8200f5f..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/SyncInfoSetDetailsDialog.java
+++ /dev/null
@@ -1,194 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.subscriber;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.viewers.*;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.*;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.team.core.synchronize.*;
-import org.eclipse.team.internal.ccvs.ui.AdaptableResourceList;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ui.dialogs.DetailsDialog;
-import org.eclipse.ui.model.WorkbenchContentProvider;
-import org.eclipse.ui.model.WorkbenchLabelProvider;
-
-/**
- * DetailsDialog that has a details area which shows the SyncInfos
- * in a SyncInfoSet.
- */
-public abstract class SyncInfoSetDetailsDialog extends DetailsDialog {
-
- private static final int WIDTH_HINT = 350;
- private final static int SELECTION_HEIGHT_HINT = 100;
-
- private CheckboxTableViewer listViewer;
-
- private SyncInfoSet syncSet;
- private Object[] selectedResources;
-
- /**
- * @param parentShell
- * @param dialogTitle
- */
- public SyncInfoSetDetailsDialog(Shell parentShell, String dialogTitle, String detailsTitle, SyncInfoSet syncSet) {
- super(parentShell, dialogTitle);
- this.syncSet = syncSet;
- //this.detailsTitle = detailsTitle;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ui.DetailsDialog#createDropDownDialogArea(org.eclipse.swt.widgets.Composite)
- */
- protected Composite createDropDownDialogArea(Composite parent) {
- Composite composite = createComposite(parent);
-
- addResourcesArea(composite);
-
- // TODO: set F1 help
- //WorkbenchHelp.setHelp(composite, IHelpContextIds.ADD_TO_VERSION_CONTROL_DIALOG);
-
- return composite;
- }
-
- /**
- * @param composite
- */
- private void addResourcesArea(Composite composite) {
- //createWrappingLabel(composite, detailsTitle);
- // add the selectable checkbox list
-
- listViewer = CheckboxTableViewer.newCheckList(composite, SWT.BORDER);
- GridData data = new GridData(GridData.FILL_BOTH);
- data.heightHint = SELECTION_HEIGHT_HINT;
- data.widthHint = WIDTH_HINT;
- listViewer.getTable().setLayoutData(data);
-
- // set the contents of the list
- listViewer.setLabelProvider(new WorkbenchLabelProvider() {
- protected String decorateText(String input, Object element) {
- if (element instanceof IResource)
- return ((IResource)element).getFullPath().toString();
- else
- return input;
- }
- });
- listViewer.setContentProvider(new WorkbenchContentProvider());
- setViewerInput();
- listViewer.addSelectionChangedListener(new ISelectionChangedListener() {
- public void selectionChanged(SelectionChangedEvent event) {
- selectedResources = listViewer.getCheckedElements();
- }
- });
-
- addSelectionButtons(composite);
-
- }
-
- /**
- * Add the selection and deselection buttons to the dialog.
- * @param composite org.eclipse.swt.widgets.Composite
- */
- private void addSelectionButtons(Composite composite) {
-
- Composite buttonComposite = new Composite(composite, SWT.RIGHT);
- GridLayout layout = new GridLayout();
- layout.numColumns = 2;
- buttonComposite.setLayout(layout);
- GridData data =
- new GridData(GridData.HORIZONTAL_ALIGN_END | GridData.GRAB_HORIZONTAL);
- data.grabExcessHorizontalSpace = true;
- composite.setData(data);
-
- Button selectButton = createButton(buttonComposite, IDialogConstants.SELECT_ALL_ID, Policy.bind("ReleaseCommentDialog.selectAll"), false); //$NON-NLS-1$
- SelectionListener listener = new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- listViewer.setAllChecked(true);
- selectedResources = null;
- }
- };
- selectButton.addSelectionListener(listener);
-
- Button deselectButton = createButton(buttonComposite, IDialogConstants.DESELECT_ALL_ID, Policy.bind("ReleaseCommentDialog.deselectAll"), false); //$NON-NLS-1$
- listener = new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- listViewer.setAllChecked(false);
- selectedResources = new Object[0];
-
- }
- };
- deselectButton.addSelectionListener(listener);
- }
-
- protected void setViewerInput() {
- if (listViewer == null || listViewer.getControl().isDisposed()) return;
- listViewer.setInput(new AdaptableResourceList(getAllResources()));
- if (selectedResources == null) {
- listViewer.setAllChecked(true);
- } else {
- listViewer.setCheckedElements(selectedResources);
- }
- }
-
- protected void resetViewerInput() {
- selectedResources = null;
- setViewerInput();
- }
- /**
- * Return a list of all the resources that are currently under consideration by the dialog
- */
- protected IResource[] getAllResources() {
- return syncSet.getResources();
- }
-
- /*
- * (non-Javadoc)
- * @see org.eclipse.team.internal.ui.DetailsDialog#updateEnablements()
- */
- protected void updateEnablements() {
- }
-
- /**
- * @return
- */
- public SyncInfoSet getSyncSet() {
- return syncSet;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.dialogs.Dialog#buttonPressed(int)
- */
- protected void buttonPressed(int id) {
- if (id == IDialogConstants.OK_ID) {
- filterSyncSet();
- }
- super.buttonPressed(id);
- }
-
- protected void filterSyncSet() {
- // Keep only the checked resources
- if (selectedResources != null) {
- getSyncSet().selectNodes(new FastSyncInfoFilter() {
- public boolean select(SyncInfo info) {
- IResource local = info.getLocal();
- for (int i = 0; i < selectedResources.length; i++) {
- if (local.equals(selectedResources[i])) return true;
- }
- return false;
- }
- });
- }
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/UpdateDialog.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/UpdateDialog.java
deleted file mode 100644
index bd1ca383a..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/UpdateDialog.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.subscriber;
-
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.core.synchronize.SyncInfoSet;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-
-/**
- * This dialog prompts for the type of update which should take place
- * (i.e. update of auto-mergable files or update of all ignore local
- * changes.
- */
-public class UpdateDialog extends SyncInfoSetDetailsDialog {
-
- public static final int YES = IDialogConstants.YES_ID;
-
- public UpdateDialog(Shell parentShell, SyncInfoSet syncSet) {
- super(parentShell, Policy.bind("UpdateDialog.overwriteTitle"), Policy.bind("UpdateDialog.overwriteDetailsTitle"), syncSet); //$NON-NLS-1$ //$NON-NLS-2$
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ui.DetailsDialog#createMainDialogArea(org.eclipse.swt.widgets.Composite)
- */
- protected void createMainDialogArea(Composite parent) {
- Composite composite = new Composite(parent, SWT.NONE);
- composite.setLayout(new GridLayout());
-
- // TODO: set F1 help
- //WorkbenchHelp.setHelp(composite, IHelpContextIds.ADD_TO_VERSION_CONTROL_DIALOG);
-
- createWrappingLabel(composite, Policy.bind("UpdateDialog.overwriteMessage")); //$NON-NLS-1$
- }
-
- protected void createButtonsForButtonBar(Composite parent) {
- createButton(parent, YES, IDialogConstants.YES_LABEL, true);
- createButton(parent, IDialogConstants.NO_ID, IDialogConstants.NO_LABEL, true);
- super.createButtonsForButtonBar(parent);
- }
-
- protected boolean includeOkButton() {
- return false;
- }
-
- protected boolean includeCancelButton() {
- return false;
- }
-
- protected void buttonPressed(int id) {
- // hijack yes and no buttons to set the correct return
- // codes.
- if(id == YES || id == IDialogConstants.NO_ID) {
- setReturnCode(id);
- filterSyncSet();
- close();
- } else {
- super.buttonPressed(id);
- }
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/WorkspaceCommitAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/WorkspaceCommitAction.java
deleted file mode 100644
index eea6dc9e7..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/WorkspaceCommitAction.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.subscriber;
-
-import org.eclipse.compare.structuremergeviewer.IDiffElement;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.team.core.synchronize.FastSyncInfoFilter;
-import org.eclipse.team.core.synchronize.SyncInfo;
-import org.eclipse.team.core.synchronize.FastSyncInfoFilter.SyncInfoDirectionFilter;
-import org.eclipse.team.ui.synchronize.ISynchronizePageConfiguration;
-import org.eclipse.team.ui.synchronize.SynchronizeModelOperation;
-
-public class WorkspaceCommitAction extends CVSParticipantAction {
-
- public WorkspaceCommitAction(ISynchronizePageConfiguration configuration) {
- super(configuration);
- }
-
- public WorkspaceCommitAction(ISynchronizePageConfiguration configuration, ISelectionProvider provider, String bundleKey) {
- super(configuration, provider, bundleKey);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.ui.sync.SubscriberAction#getSyncInfoFilter()
- */
- protected FastSyncInfoFilter getSyncInfoFilter() {
- return new SyncInfoDirectionFilter(new int[] {SyncInfo.OUTGOING});
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ui.actions.SubscriberAction#getSubscriberOperation(org.eclipse.compare.structuremergeviewer.IDiffElement[])
- */
- protected SynchronizeModelOperation getSubscriberOperation(ISynchronizePageConfiguration configuration, IDiffElement[] elements) {
- return new WorkspaceCommitOperation(configuration, elements, false /* override */);
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/WorkspaceCommitOperation.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/WorkspaceCommitOperation.java
deleted file mode 100644
index 5079542d6..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/WorkspaceCommitOperation.java
+++ /dev/null
@@ -1,354 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.subscriber;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.compare.structuremergeviewer.IDiffElement;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.subscribers.ChangeSet;
-import org.eclipse.team.core.synchronize.SyncInfo;
-import org.eclipse.team.core.synchronize.SyncInfoSet;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.core.client.Command;
-import org.eclipse.team.internal.ccvs.core.client.Commit;
-import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.operations.AddOperation;
-import org.eclipse.team.internal.ccvs.ui.operations.CommitOperation;
-import org.eclipse.team.internal.ccvs.ui.repo.RepositoryManager;
-import org.eclipse.team.internal.ccvs.ui.sync.ToolTipMessageDialog;
-import org.eclipse.team.internal.ui.Utils;
-import org.eclipse.team.ui.synchronize.ISynchronizePageConfiguration;
-
-public class WorkspaceCommitOperation extends CVSSubscriberOperation {
-
- private String comment;
- private SyncInfoSet syncSet;
- private boolean override;
-
- public WorkspaceCommitOperation(ISynchronizePageConfiguration configuration, IDiffElement[] elements, boolean override) {
- super(configuration, elements);
- this.override = override;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.subscriber.CVSSubscriberOperation#getErrorTitle()
- */
- protected String getErrorTitle() {
- return Policy.bind("CommitAction.commitFailed"); //$NON-NLS-1$
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ui.actions.TeamOperation#getJobName()
- */
- protected String getJobName() {
- SyncInfoSet syncSet = getSyncInfoSet();
- return Policy.bind("CommitAction.jobName", new Integer(syncSet.size()).toString()); //$NON-NLS-1$
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.ui.TeamOperation#shouldRun()
- */
- public boolean shouldRun() {
- SyncInfoSet set = getSyncInfoSet();
- return !set.isEmpty();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ui.actions.SubscriberOperation#getSyncInfoSet()
- */
- protected SyncInfoSet getSyncInfoSet() {
- if (syncSet == null) {
- syncSet = super.getSyncInfoSet();
- if (!promptForConflictHandling(syncSet)) {
- syncSet.clear();
- return syncSet;
- }
- try {
- if (!promptForUnaddedHandling(syncSet)) {
- syncSet.clear();
- return syncSet;
- }
- } catch (CVSException e) {
- Utils.handle(e);
- syncSet.clear();
- }
- }
- return syncSet;
- }
-
- protected boolean promptForConflictHandling(SyncInfoSet syncSet) {
- if (syncSet.hasConflicts() || syncSet.hasIncomingChanges()) {
- if (override) {
- // If overriding, prompt to ensure that is what the user wants
- switch (promptForConflicts(syncSet)) {
- case 0:
- // Yes, synchronize conflicts as well
- break;
- case 1:
- // No, stop here
- return false;
- case 2:
- default:
- // Cancel
- return false;
- }
- } else {
- // If there is a conflict in the syncSet, remove from sync set.
- syncSet.removeConflictingNodes();
- syncSet.removeIncomingNodes();
- }
- }
- return true;
- }
-
- /*
- * (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.subscriber.CVSSubscriberOperation#run(org.eclipse.team.core.synchronize.SyncInfoSet, org.eclipse.core.runtime.IProgressMonitor)
- */
- public void run(SyncInfoSet syncSet, IProgressMonitor monitor) throws TeamException {
-
- final SyncInfo[] changed = syncSet.getSyncInfos();
- if (changed.length == 0) return;
-
- // A list of files to be committed
- final List commits = new ArrayList(); // of IResource
- // New resources that are not yet under CVS control and need a "cvs add"
- final List additions = new ArrayList(); // of IResource
- // A list of incoming or conflicting file changes to be made outgoing changes
- final List makeOutgoing = new ArrayList(); // of SyncInfo
- // A list of out-of-sync folders that must be made in-sync
- final List makeInSync = new ArrayList(); // of SyncInfo
-
- for (int i = 0; i < changed.length; i++) {
- SyncInfo changedNode = changed[i];
- int kind = changedNode.getKind();
- IResource resource = changedNode.getLocal();
-
- // Any parent folders should be made in-sync.
- // Steps will be taken after the commit to prune any empty folders
- SyncInfo parent = getParent(changedNode);
- if (parent != null) {
- if (isOutOfSync(parent)) {
- makeInSync.add(parent);
- }
- }
-
- if (resource.getType() == IResource.FILE) {
- // By default, all files are committed
- commits.add(resource);
- // Determine what other work needs to be done for the file
- switch (kind & SyncInfo.DIRECTION_MASK) {
- case SyncInfo.INCOMING:
- // Convert the incoming change to an outgoing change
- makeOutgoing.add(changedNode);
- break;
- case SyncInfo.OUTGOING:
- switch (kind & SyncInfo.CHANGE_MASK) {
- case SyncInfo.ADDITION:
- // Outgoing addition. 'add' it before committing.
- if (!isAdded(resource))
- additions.add(resource);
- break;
- case SyncInfo.DELETION:
- // Outgoing deletion is handled by move/delete
- // hook and EclipseSynchronizer
- break;
- case SyncInfo.CHANGE:
- // Outgoing change. Just commit it.
- break;
- }
- break;
- case SyncInfo.CONFLICTING:
- // Convert the conflicting change to an outgoing change
- makeOutgoing.add(changedNode);
- break;
- }
- } else {
- if (((kind & SyncInfo.DIRECTION_MASK) == SyncInfo.OUTGOING)
- && ((kind & SyncInfo.CHANGE_MASK) == SyncInfo.ADDITION)) {
- // Outgoing folder additions must be added
- additions.add(changedNode.getLocal());
- } else if (isOutOfSync(changedNode)) {
- // otherwise, make any out-of-sync folders in-sync using the remote info
- makeInSync.add(changedNode);
- }
- }
- }
- monitor.beginTask(null, 200);
-
- if (makeInSync.size() > 0) {
- makeInSync((SyncInfo[]) makeInSync.toArray(new SyncInfo[makeInSync.size()]), Policy.subMonitorFor(monitor, 25));
- }
-
- if (makeOutgoing.size() > 0) {
- makeOutgoing((SyncInfo[]) makeOutgoing.toArray(new SyncInfo[makeInSync.size()]), Policy.subMonitorFor(monitor, 25));
- }
-
- if (additions.size() != 0) {
- add((IResource[])additions.toArray(new IResource[0]), Policy.subMonitorFor(monitor, 50));
- }
- commit((IResource[])commits.toArray(new IResource[commits.size()]), Policy.subMonitorFor(monitor, 100));
- }
-
- private void commit(IResource[] commits, IProgressMonitor monitor) throws TeamException {
- try {
- new CommitOperation(getPart(), commits,
- new Command.LocalOption[] { Commit.makeArgumentOption(Command.MESSAGE_OPTION, comment) })
- .run(monitor);
- } catch (InvocationTargetException e) {
- throw TeamException.asTeamException(e);
- } catch (InterruptedException e) {
- throw new OperationCanceledException();
- }
- }
-
- private void add(IResource[] additions, IProgressMonitor monitor) throws TeamException {
- try {
- new AddOperation(getPart(), additions).run(monitor);
- } catch (InvocationTargetException e1) {
- throw TeamException.asTeamException(e1);
- } catch (InterruptedException e1) {
- throw new OperationCanceledException();
- }
- }
-
- /**
- * Prompts the user to determine how conflicting changes should be handled.
- * Note: This method is designed to be overridden by test cases.
- * @return 0 to sync conflicts, 1 to sync all non-conflicts, 2 to cancel
- */
- protected int promptForConflicts(SyncInfoSet syncSet) {
- String[] buttons = new String[] {IDialogConstants.YES_LABEL, IDialogConstants.NO_LABEL, IDialogConstants.CANCEL_LABEL};
- String question = Policy.bind("CommitSyncAction.questionRelease"); //$NON-NLS-1$
- String title = Policy.bind("CommitSyncAction.titleRelease"); //$NON-NLS-1$
- String[] tips = new String[] {
- Policy.bind("CommitSyncAction.releaseAll"), //$NON-NLS-1$
- Policy.bind("CommitSyncAction.releasePart"), //$NON-NLS-1$
- Policy.bind("CommitSyncAction.cancelRelease") //$NON-NLS-1$
- };
- Shell shell = getShell();
- final ToolTipMessageDialog dialog = new ToolTipMessageDialog(shell, title, null, question, MessageDialog.QUESTION, buttons, tips, 0);
- shell.getDisplay().syncExec(new Runnable() {
- public void run() {
- dialog.open();
- }
- });
- return dialog.getReturnCode();
- }
-
- /**
- * Prompts the user for a release comment.
- * Note: This method is designed to be overridden by test cases.
- * @return the comment, or null to cancel
- */
- protected String promptForComment(RepositoryManager manager, IResource[] resourcesToCommit) {
- String proposedComment = getProposedComment(resourcesToCommit);
- return manager.promptForComment(getShell(), resourcesToCommit, proposedComment);
- }
-
- private String getProposedComment(IResource[] resourcesToCommit) {
- StringBuffer comment = new StringBuffer();
- ChangeSet[] sets = CVSUIPlugin.getPlugin().getChangeSetManager().getSets();
- int numMatchedSets = 0;
- for (int i = 0; i < sets.length; i++) {
- ChangeSet set = sets[i];
- if (containsOne(set, resourcesToCommit)) {
- if(numMatchedSets > 0) comment.append(System.getProperty("line.separator")); //$NON-NLS-1$
- comment.append(set.getComment());
- numMatchedSets++;
- }
- }
- return comment.toString();
- }
-
- private boolean containsOne(ChangeSet set, IResource[] resourcesToCommit) {
- for (int j = 0; j < resourcesToCommit.length; j++) {
- IResource resource = resourcesToCommit[j];
- if (set.contains(resource)) {
- return true;
- }
- }
- return false;
- }
-
- protected IResource[] promptForResourcesToBeAdded(RepositoryManager manager, IResource[] unadded) {
- return manager.promptForResourcesToBeAdded(getShell(), unadded);
- }
-
- private boolean promptForUnaddedHandling(SyncInfoSet syncSet) throws CVSException {
- if (syncSet.isEmpty()) return false;
-
- // accumulate any resources that are not under version control
- IResource[] unadded = getUnaddedResources(syncSet);
-
- // prompt to get comment and any resources to be added to version control
- RepositoryManager manager = CVSUIPlugin.getPlugin().getRepositoryManager();
- IResource[] toBeAdded = promptForResourcesToBeAdded(manager, unadded);
- if (toBeAdded == null) return false; // User cancelled.
- comment = promptForComment(manager, syncSet.getResources());
- if (comment == null) return false; // User cancelled.
-
- // remove unshared resources that were not selected by the user
- if (unadded != null && unadded.length > 0) {
- List resourcesToRemove = new ArrayList(unadded.length);
- for (int i = 0; i < unadded.length; i++) {
- IResource unaddedResource = unadded[i];
- boolean included = false;
- for (int j = 0; j < toBeAdded.length; j++) {
- IResource resourceToAdd = toBeAdded[j];
- if (unaddedResource.equals(resourceToAdd)) {
- included = true;
- break;
- }
- }
- if (!included)
- resourcesToRemove.add(unaddedResource);
- }
- syncSet.removeAll((IResource[]) resourcesToRemove.toArray(new IResource[resourcesToRemove.size()]));
- }
- return true;
- }
-
- private IResource[] getUnaddedResources(SyncInfoSet syncSet) throws CVSException {
- // TODO: Should only get outgoing additions (since conflicting additions
- // could be considered to be under version control already)
- IResource[] resources = syncSet.getResources();
- List result = new ArrayList();
- for (int i = 0; i < resources.length; i++) {
- IResource resource = resources[i];
- if (!isAdded(resource)) {
- result.add(resource);
- }
- }
- return (IResource[]) result.toArray(new IResource[result.size()]);
- }
-
- private boolean isAdded(IResource resource) throws CVSException {
- ICVSResource cvsResource = CVSWorkspaceRoot.getCVSResourceFor(resource);
- if (cvsResource.isFolder()) {
- return ((ICVSFolder)cvsResource).isCVSFolder();
- } else {
- return cvsResource.isManaged();
- }
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/WorkspaceSynchronizeParticipant.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/WorkspaceSynchronizeParticipant.java
deleted file mode 100644
index b40f36d70..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/WorkspaceSynchronizeParticipant.java
+++ /dev/null
@@ -1,259 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.subscriber;
-
-import org.eclipse.compare.CompareConfiguration;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.dialogs.InputDialog;
-import org.eclipse.jface.preference.PreferencePage;
-import org.eclipse.jface.viewers.ILabelDecorator;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.subscribers.ActiveChangeSet;
-import org.eclipse.team.core.subscribers.SubscriberChangeSetCollector;
-import org.eclipse.team.core.synchronize.SyncInfo;
-import org.eclipse.team.internal.ccvs.core.CVSProviderPlugin;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.actions.*;
-import org.eclipse.team.internal.ui.synchronize.ScopableSubscriberParticipant;
-import org.eclipse.team.ui.TeamUI;
-import org.eclipse.team.ui.synchronize.*;
-import org.eclipse.ui.*;
-
-public class WorkspaceSynchronizeParticipant extends ScopableSubscriberParticipant {
-
- public static final String ID = "org.eclipse.team.cvs.ui.cvsworkspace-participant"; //$NON-NLS-1$
-
- /**
- * The id of a workspace action group to which additions actions can
- * be added.
- */
- public static final String TOOLBAR_CONTRIBUTION_GROUP = "toolbar_group_1"; //$NON-NLS-1$
-
- public static final String CONTEXT_MENU_CONTRIBUTION_GROUP_1 = "context_group_1"; //$NON-NLS-1$
- public static final String CONTEXT_MENU_CONTRIBUTION_GROUP_2 = "context_group_2"; //$NON-NLS-1$
- public static final String CONTEXT_MENU_CONTRIBUTION_GROUP_3 = "context_group_3"; //$NON-NLS-1$
- public static final String CONTEXT_MENU_CONTRIBUTION_GROUP_4 = "context_group_4"; //$NON-NLS-1$
-
- private WorkspaceChangeSetCapability capability;
-
- /**
- * CVS workspace action contribution
- */
- public class WorkspaceActionContribution extends SynchronizePageActionGroup {
- private WorkspaceCommitAction commitToolbar;
- private WorkspaceUpdateAction updateToolbar;
-
- public void initialize(ISynchronizePageConfiguration configuration) {
- super.initialize(configuration);
-
- updateToolbar = new WorkspaceUpdateAction(
- configuration,
- getVisibleRootsSelectionProvider(),
- "WorkspaceToolbarUpdateAction."); //$NON-NLS-1$
- updateToolbar.setPromptBeforeUpdate(true);
- appendToGroup(
- ISynchronizePageConfiguration.P_TOOLBAR_MENU,
- TOOLBAR_CONTRIBUTION_GROUP,
- updateToolbar);
-
- commitToolbar = new WorkspaceCommitAction(
- configuration,
- getVisibleRootsSelectionProvider(),
- "WorkspaceToolbarCommitAction."); //$NON-NLS-1$
- appendToGroup(
- ISynchronizePageConfiguration.P_TOOLBAR_MENU,
- TOOLBAR_CONTRIBUTION_GROUP,
- commitToolbar);
-
- appendToGroup(
- ISynchronizePageConfiguration.P_CONTEXT_MENU,
- CONTEXT_MENU_CONTRIBUTION_GROUP_1,
- new WorkspaceUpdateAction(configuration));
- appendToGroup(
- ISynchronizePageConfiguration.P_CONTEXT_MENU,
- CONTEXT_MENU_CONTRIBUTION_GROUP_1,
- new WorkspaceCommitAction(configuration));
- appendToGroup(
- ISynchronizePageConfiguration.P_CONTEXT_MENU,
- CONTEXT_MENU_CONTRIBUTION_GROUP_2,
- new OverrideAndUpdateAction(configuration));
- appendToGroup(
- ISynchronizePageConfiguration.P_CONTEXT_MENU,
- CONTEXT_MENU_CONTRIBUTION_GROUP_2,
- new OverrideAndCommitAction(configuration));
- appendToGroup(
- ISynchronizePageConfiguration.P_CONTEXT_MENU,
- CONTEXT_MENU_CONTRIBUTION_GROUP_2,
- new ConfirmMergedAction(configuration));
- appendToGroup(
- ISynchronizePageConfiguration.P_CONTEXT_MENU,
- CONTEXT_MENU_CONTRIBUTION_GROUP_3,
- new CVSActionDelegateWrapper(new IgnoreAction(), configuration));
- if (!configuration.getSite().isModal()) {
- appendToGroup(
- ISynchronizePageConfiguration.P_CONTEXT_MENU,
- CONTEXT_MENU_CONTRIBUTION_GROUP_3,
- new CVSActionDelegateWrapper(new GenerateDiffFileAction(), configuration));
- appendToGroup(
- ISynchronizePageConfiguration.P_CONTEXT_MENU,
- CONTEXT_MENU_CONTRIBUTION_GROUP_3,
- new CVSActionDelegateWrapper(new BranchAction(), configuration));
- appendToGroup(
- ISynchronizePageConfiguration.P_CONTEXT_MENU,
- CONTEXT_MENU_CONTRIBUTION_GROUP_3,
- new CVSActionDelegateWrapper(new ShowAnnotationAction(), configuration));
- appendToGroup(
- ISynchronizePageConfiguration.P_CONTEXT_MENU,
- CONTEXT_MENU_CONTRIBUTION_GROUP_3,
- new CVSActionDelegateWrapper(new ShowResourceInHistoryAction(), configuration));
- }
- appendToGroup(
- ISynchronizePageConfiguration.P_CONTEXT_MENU,
- CONTEXT_MENU_CONTRIBUTION_GROUP_4,
- new RefreshDirtyStateAction(configuration));
- }
- }
-
- public class WorkspaceChangeSetCapability extends CVSChangeSetCapability {
- /* (non-Javadoc)
- * @see org.eclipse.team.ui.synchronize.ChangeSetCapability#createChangeSet(org.eclipse.team.core.synchronize.SyncInfo[])
- */
- public ActiveChangeSet createChangeSet(ISynchronizePageConfiguration configuration, SyncInfo[] infos) {
- ActiveChangeSet set = getActiveChangeSetManager().createSet(Policy.bind("WorkspaceChangeSetCapability.1"), new SyncInfo[0]); //$NON-NLS-1$
- CommitSetDialog dialog = new CommitSetDialog(configuration.getSite().getShell(), set, getResources(infos),
- Policy.bind("WorkspaceChangeSetCapability.2"), Policy.bind("WorkspaceChangeSetCapability.3")); //$NON-NLS-1$ //$NON-NLS-2$
- dialog.open();
- if (dialog.getReturnCode() != InputDialog.OK) return null;
- set.add(infos);
- return set;
- }
-
- private IResource[] getResources(SyncInfo[] infos) {
- IResource[] resources = new IResource[infos.length];
- for (int i = 0; i < resources.length; i++) {
- resources[i] = infos[i].getLocal();
- }
- return resources;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.ui.synchronize.ChangeSetCapability#editChangeSet(org.eclipse.team.core.subscribers.ActiveChangeSet)
- */
- public void editChangeSet(ISynchronizePageConfiguration configuration, ActiveChangeSet set) {
- CommitSetDialog dialog = new CommitSetDialog(configuration.getSite().getShell(), set, set.getResources(),
- Policy.bind("WorkspaceChangeSetCapability.7"), Policy.bind("WorkspaceChangeSetCapability.8")); //$NON-NLS-1$ //$NON-NLS-2$
- dialog.open();
- if (dialog.getReturnCode() != InputDialog.OK) return;
- // Nothing to do here as the set was updated by the dialog
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.ui.synchronize.ChangeSetCapability#getActiveChangeSetManager()
- */
- public SubscriberChangeSetCollector getActiveChangeSetManager() {
- return CVSUIPlugin.getPlugin().getChangeSetManager();
- }
- }
-
- /**
- * No arg contructor used for
- * creation of persisted participant after startup
- */
- public WorkspaceSynchronizeParticipant() {
- }
-
- public WorkspaceSynchronizeParticipant(ISynchronizeScope scope) {
- super(scope);
- setSubscriber(CVSProviderPlugin.getPlugin().getCVSWorkspaceSubscriber());
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.ui.synchronize.ISynchronizeParticipant#init(org.eclipse.ui.IMemento)
- */
- public void init(String secondaryId, IMemento memento) throws PartInitException {
- super.init(secondaryId, memento);
- setSubscriber(CVSProviderPlugin.getPlugin().getCVSWorkspaceSubscriber());
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.ui.synchronize.subscribers.SubscriberParticipant#initializeConfiguration(org.eclipse.team.ui.synchronize.ISynchronizePageConfiguration)
- */
- protected void initializeConfiguration(ISynchronizePageConfiguration configuration) {
- super.initializeConfiguration(configuration);
- ILabelDecorator labelDecorator = new CVSParticipantLabelDecorator(configuration);
- configuration.addLabelDecorator(labelDecorator);
- configuration.addMenuGroup(ISynchronizePageConfiguration.P_TOOLBAR_MENU, TOOLBAR_CONTRIBUTION_GROUP);
- configuration.addActionContribution(new WorkspaceActionContribution());
- configuration.setSupportedModes(ISynchronizePageConfiguration.ALL_MODES);
- configuration.setMode(ISynchronizePageConfiguration.BOTH_MODE);
-
- // Add context menu groups here to give the client displaying the
- // page a chance to remove the context menu
- configuration.addMenuGroup(
- ISynchronizePageConfiguration.P_CONTEXT_MENU,
- CONTEXT_MENU_CONTRIBUTION_GROUP_1);
- configuration.addMenuGroup(
- ISynchronizePageConfiguration.P_CONTEXT_MENU,
- CONTEXT_MENU_CONTRIBUTION_GROUP_2);
- configuration.addMenuGroup(
- ISynchronizePageConfiguration.P_CONTEXT_MENU,
- CONTEXT_MENU_CONTRIBUTION_GROUP_3);
- configuration.addMenuGroup(
- ISynchronizePageConfiguration.P_CONTEXT_MENU,
- CONTEXT_MENU_CONTRIBUTION_GROUP_4);
- }
-
- protected ISynchronizeParticipantDescriptor getDescriptor() {
- return TeamUI.getSynchronizeManager().getParticipantDescriptor(ID);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.ui.synchronize.SubscriberParticipant#updateLabels(org.eclipse.team.ui.synchronize.ISynchronizeModelElement, org.eclipse.compare.CompareConfiguration, org.eclipse.core.runtime.IProgressMonitor)
- */
- public void prepareCompareInput(ISynchronizeModelElement element, CompareConfiguration config, IProgressMonitor monitor) throws TeamException {
- monitor.beginTask(null, 100);
- CVSParticipant.deriveBaseContentsFromLocal(element, Policy.subMonitorFor(monitor, 10));
- super.prepareCompareInput(element, config, Policy.subMonitorFor(monitor, 80));
- CVSParticipant.updateLabelsForCVS(element, config, Policy.subMonitorFor(monitor, 10));
- monitor.done();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.ui.synchronize.AbstractSynchronizeParticipant#getPreferencePages()
- */
- public PreferencePage[] getPreferencePages() {
- return CVSParticipant.addCVSPreferencePages(super.getPreferencePages());
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.ui.synchronize.AbstractSynchronizeParticipant#getChangeSetCapability()
- */
- public ChangeSetCapability getChangeSetCapability() {
- if (capability == null) {
- capability = new WorkspaceChangeSetCapability();
- }
- return capability;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.ui.synchronize.AbstractSynchronizeParticipant#isViewerContributionsSupported()
- */
- protected boolean isViewerContributionsSupported() {
- return true;
- }
-
- public void refresh(IResource[] resources, IWorkbenchPartSite site) {
- refresh(resources, getShortTaskName(), getLongTaskName(resources), site);
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/WorkspaceUpdateAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/WorkspaceUpdateAction.java
deleted file mode 100644
index 6682d6ffe..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/WorkspaceUpdateAction.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.subscriber;
-
-import org.eclipse.compare.structuremergeviewer.IDiffElement;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.team.core.synchronize.FastSyncInfoFilter;
-import org.eclipse.team.core.synchronize.SyncInfo;
-import org.eclipse.team.core.synchronize.FastSyncInfoFilter.SyncInfoDirectionFilter;
-import org.eclipse.team.ui.synchronize.ISynchronizePageConfiguration;
-import org.eclipse.team.ui.synchronize.SynchronizeModelOperation;
-
-public class WorkspaceUpdateAction extends CVSParticipantAction {
-
- private boolean promptBeforeUpdate;
-
- public WorkspaceUpdateAction(ISynchronizePageConfiguration configuration) {
- super(configuration);
- }
-
- public WorkspaceUpdateAction(ISynchronizePageConfiguration configuration, ISelectionProvider provider, String bundleKey) {
- super(configuration, provider, bundleKey);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.ui.sync.SubscriberAction#getSyncInfoFilter()
- */
- protected FastSyncInfoFilter getSyncInfoFilter() {
- return new SyncInfoDirectionFilter(new int[] {SyncInfo.INCOMING, SyncInfo.CONFLICTING});
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ui.actions.SubscriberAction#getSubscriberOperation(org.eclipse.compare.structuremergeviewer.IDiffElement[])
- */
- protected SynchronizeModelOperation getSubscriberOperation(ISynchronizePageConfiguration configuration, IDiffElement[] elements) {
- return new WorkspaceUpdateOperation(configuration, elements, promptBeforeUpdate);
- }
-
- public void setPromptBeforeUpdate(boolean prompt) {
- promptBeforeUpdate = prompt;
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/WorkspaceUpdateOperation.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/WorkspaceUpdateOperation.java
deleted file mode 100644
index 4a510bf6d..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/WorkspaceUpdateOperation.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.subscriber;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.compare.structuremergeviewer.IDiffElement;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IFolder;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.synchronize.SyncInfo;
-import org.eclipse.team.core.synchronize.SyncInfoSet;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-import org.eclipse.team.internal.ccvs.core.client.Command;
-import org.eclipse.team.internal.ccvs.core.client.Command.LocalOption;
-import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.operations.ReplaceOperation;
-import org.eclipse.team.ui.synchronize.ISynchronizePageConfiguration;
-
-/**
- * This action performs an update for the CVSWorkspaceSubscriber.
- */
-public class WorkspaceUpdateOperation extends SafeUpdateOperation {
-
- protected WorkspaceUpdateOperation(ISynchronizePageConfiguration configuration, IDiffElement[] elements, boolean promptBeforeUpdate) {
- super(configuration, elements, promptBeforeUpdate);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.subscriber.SafeUpdateOperation#runUpdateDeletions(org.eclipse.team.core.synchronize.SyncInfo[], org.eclipse.core.runtime.IProgressMonitor)
- */
- protected void runUpdateDeletions(SyncInfo[] nodes, IProgressMonitor monitor) throws TeamException {
- monitor.beginTask(null, nodes.length * 100);
- for (int i = 0; i < nodes.length; i++) {
- SyncInfo node = nodes[i];
- unmanage(node, Policy.subMonitorFor(monitor, 50));
- deleteAndKeepHistory(node.getLocal(), Policy.subMonitorFor(monitor, 50));
- }
- pruneEmptyParents(nodes);
- monitor.done();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.subscriber.SafeUpdateOperation#runSafeUpdate(org.eclipse.team.core.synchronize.SyncInfo[], org.eclipse.core.runtime.IProgressMonitor)
- */
- protected void runSafeUpdate(SyncInfo[] nodes, IProgressMonitor monitor) throws TeamException {
- safeUpdate(getIResourcesFrom(nodes), new LocalOption[] { Command.DO_NOT_RECURSE }, monitor);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.subscriber.SafeUpdateOperation#overwriteUpdate(org.eclipse.team.core.synchronize.SyncInfoSet, org.eclipse.core.runtime.IProgressMonitor)
- */
- protected void overwriteUpdate(SyncInfoSet syncSet, IProgressMonitor monitor) throws TeamException {
- try {
- new ReplaceOperation(getPart(), syncSet.getResources(), null /* tag */, false /* recurse */)
- .run(monitor);
- } catch (InvocationTargetException e) {
- throw CVSException.wrapException(e);
- } catch (InterruptedException e) {
- Policy.cancelOperation();
- }
-
- }
-
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.subscriber.SafeUpdateOperation#updated(org.eclipse.core.resources.IResource[])
- */
- protected void updated(IResource[] resources) throws TeamException {
- // Do nothing
- }
-
- private void unmanage(SyncInfo element, IProgressMonitor monitor) throws CVSException {
- CVSWorkspaceRoot.getCVSResourceFor(element.getLocal()).unmanage(monitor);
- }
-
- private void deleteAndKeepHistory(IResource resource, IProgressMonitor monitor) throws CVSException {
- try {
- if (!resource.exists()) return;
- if (resource.getType() == IResource.FILE)
- ((IFile)resource).delete(false /* force */, true /* keep history */, monitor);
- else if (resource.getType() == IResource.FOLDER)
- ((IFolder)resource).delete(false /* force */, true /* keep history */, monitor);
- } catch (CoreException e) {
- throw CVSException.wrapException(e);
- }
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/sync/ToolTipMessageDialog.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/sync/ToolTipMessageDialog.java
deleted file mode 100644
index 1e06ab5e6..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/sync/ToolTipMessageDialog.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.sync;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Shell;
-/**
- * A class that adds tool-tips to the buttons of a standard message dialog.
- */
-public class ToolTipMessageDialog extends MessageDialog {
- private String[] buttonToolTips;
- /**
- * Same as the MessageDialog constructor, with the addition of a button tooltip
- * argument. The number of button tool tips must match the number of button labels.
- */
- public ToolTipMessageDialog(Shell parentShell, String dialogTitle, Image dialogTitleImage, String dialogMessage, int dialogImageType, String[] dialogButtonLabels, String[] buttonToolTips, int defaultIndex) {
- super(parentShell, dialogTitle, dialogTitleImage, dialogMessage, dialogImageType, dialogButtonLabels, defaultIndex);
- this.buttonToolTips = buttonToolTips;
- }
- /**
- * Method declared on MessageDialog.
- */
- protected void createButtonsForButtonBar(Composite parent) {
- super.createButtonsForButtonBar(parent);
- if (buttonToolTips != null) {
- for (int i = 0; i < buttonToolTips.length; i++) {
- getButton(i).setToolTipText(buttonToolTips[i]);
- }
- }
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/BranchPromptDialog.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/BranchPromptDialog.java
deleted file mode 100644
index 4a052014a..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/BranchPromptDialog.java
+++ /dev/null
@@ -1,231 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.tags;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.team.internal.ccvs.core.CVSTag;
-import org.eclipse.team.internal.ccvs.ui.IHelpContextIds;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.wizards.CVSWizardPage;
-import org.eclipse.team.internal.ui.dialogs.DetailsDialog;
-import org.eclipse.ui.help.WorkbenchHelp;
-
-public class BranchPromptDialog extends DetailsDialog {
-
- private String branchTag = ""; //$NON-NLS-1$
- private String versionTag= ""; //$NON-NLS-1$
- private String versionName= ""; //$NON-NLS-1$
-
- private boolean allStickyResources;
- private boolean update;
-
- private Text versionText;
- private Text branchText;
-
- private static final int TAG_AREA_HEIGHT_HINT = 200;
-
- // widgets;
- private TagSource tagSource;
- private TagSelectionArea tagArea;
- private final IResource[] resources;
-
- public BranchPromptDialog(Shell parentShell, String title, IResource[] resources, boolean allResourcesSticky, String versionName) {
- super(parentShell, title);
- this.resources = resources;
- this.tagSource = TagSource.create(resources);
- this.allStickyResources = allResourcesSticky;
- this.versionName = versionName;
- }
-
- /**
- * @see DetailsDialog#createMainDialogArea(Composite)
- */
- protected void createMainDialogArea(Composite composite) {
- // create message
- Label label = new Label(composite, SWT.WRAP);
- String message;
- if(allStickyResources) {
- message = Policy.bind("BranchWizardPage.pageDescriptionVersion"); //$NON-NLS-1$
- } else {
- message = Policy.bind("BranchWizardPage.pageDescription"); //$NON-NLS-1$
- }
- label.setText(message);
- GridData data = new GridData(
- GridData.GRAB_HORIZONTAL |
- GridData.HORIZONTAL_ALIGN_FILL |
- GridData.VERTICAL_ALIGN_CENTER);
- data.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH);
- label.setLayoutData(data);
-
- CVSWizardPage.createLabel(composite, Policy.bind("BranchWizardPage.branchName")); //$NON-NLS-1$
- branchText = CVSWizardPage.createTextField(composite);
- branchText.addListener(SWT.Modify, new Listener() {
- public void handleEvent(Event event) {
- branchTag = branchText.getText();
- updateEnablements();
- updateVersionName(branchTag);
- }
- });
- addBranchContentAssist();
-
- final Button check = new Button(composite, SWT.CHECK);
- data = new GridData();
- data.horizontalSpan = 2;
- check.setLayoutData(data);
- check.setText(Policy.bind("BranchWizardPage.startWorking")); //$NON-NLS-1$
- check.addListener(SWT.Selection, new Listener() {
- public void handleEvent(Event event) {
- update = check.getSelection();
- }
- });
- check.setSelection(true);
- update = true;
-
- label = new Label(composite, SWT.WRAP);
- label.setText(Policy.bind("BranchWizardPage.specifyVersion")); //$NON-NLS-1$
- data = new GridData(
- GridData.GRAB_HORIZONTAL |
- GridData.HORIZONTAL_ALIGN_FILL |
- GridData.VERTICAL_ALIGN_CENTER);
- data.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH);
- data.horizontalSpan = 2;
- label.setLayoutData(data);
-
- CVSWizardPage.createLabel(composite, Policy.bind("BranchWizardPage.versionName")); //$NON-NLS-1$
- versionText = CVSWizardPage.createTextField(composite);
- versionText.addListener(SWT.Modify, new Listener() {
- public void handleEvent(Event event) {
- versionTag = versionText.getText();
- updateEnablements();
- }
- });
-
- if(allStickyResources) {
- versionText.setEditable(false);
- versionText.setText(versionName);
- }
-
- // F1 Help
- WorkbenchHelp.setHelp(composite, IHelpContextIds.BRANCH_DIALOG);
- Dialog.applyDialogFont(composite);
- branchText.setFocus();
- }
-
- private void addBranchContentAssist() {
- TagSource projectTagSource = LocalProjectTagSource.create(getSeedProject());
- if (projectTagSource != null)
- TagContentAssistProcessor.createContentAssistant(branchText, projectTagSource, TagSelectionArea.INCLUDE_BRANCHES);
- }
-
- private IProject getSeedProject() {
- return resources[0].getProject();
- }
-
- /**
- * Updates version name
- */
- protected void updateVersionName(String branchName) {
- if(versionText!=null && !allStickyResources) {
- versionText.setText(Policy.bind("BranchWizardPage.versionPrefix") + branchName); //$NON-NLS-1$
- }
- }
-
- /**
- * @see DetailsDialog#createDropDownDialogArea(Composite)
- */
- protected Composite createDropDownDialogArea(Composite parent) {
-
- // create a composite with standard margins and spacing
- Composite composite = new Composite(parent, SWT.NONE);
- GridLayout layout = new GridLayout();
- layout.marginHeight = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);
- layout.marginWidth = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
- layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
- layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
- composite.setLayout(layout);
- GridData gridData = new GridData(GridData.FILL_BOTH);
- gridData.heightHint = TAG_AREA_HEIGHT_HINT;
- composite.setLayoutData(gridData);
-
- tagArea = new TagSelectionArea(getShell(), tagSource, TagSelectionArea.INCLUDE_VERSIONS | TagSelectionArea.INCLUDE_BRANCHES, null);
- tagArea.setTagAreaLabel(Policy.bind("BranchWizardPage.existingVersionsAndBranches")); //$NON-NLS-1$
- tagArea.setIncludeFilterInputArea(false);
- tagArea.createArea(composite);
-
- return composite;
- }
-
- /**
- * Validates branch and version names
- */
- protected void updateEnablements() {
- String message = null;
-
- if (branchTag.length() == 0) {
- message = ""; //$NON-NLS-1$
- } else {
- IStatus status = CVSTag.validateTagName(branchTag);
- if (!status.isOK()) {
- message = Policy.bind("BranchWizard.branchNameWarning", status.getMessage()); //$NON-NLS-1$
- } else {
- if(versionText!=null) {
- status = CVSTag.validateTagName(versionText.getText());
- if (!status.isOK()) {
- message = Policy.bind("BranchWizard.versionNameWarning", status.getMessage()); //$NON-NLS-1$
- } else {
- if(versionTag.length() != 0 && versionTag.equals(branchTag)) {
- message = Policy.bind("BranchWizard.branchAndVersionMustBeDifferent"); //$NON-NLS-1$
- }
- }
- }
- }
- }
- setPageComplete(message == null);
- setErrorMessage(message);
- }
-
- /**
- * Returns the branch tag name
- */
- public String getBranchTagName() {
- return branchTag;
- }
-
- /**
- * Returns the version tag name
- */
- public String getVersionTagName() {
- return versionTag;
- }
-
- /**
- * Returns the state of the update checkbox
- */
- public boolean getUpdate() {
- return update;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ui.dialogs.DetailsDialog#isMainGrabVertical()
- */
- protected boolean isMainGrabVertical() {
- return false;
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/CVSFileElement.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/CVSFileElement.java
deleted file mode 100644
index 4b4e05700..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/CVSFileElement.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.tags;
-
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.ICVSFile;
-import org.eclipse.team.internal.ccvs.core.ICVSResource;
-import org.eclipse.team.internal.ccvs.core.syncinfo.ResourceSyncInfo;
-import org.eclipse.team.internal.ccvs.ui.model.CVSResourceElement;
-import org.eclipse.ui.PlatformUI;
-
-public class CVSFileElement extends CVSResourceElement {
-
- private ICVSFile file;
-
- public CVSFileElement(ICVSFile file) {
- this.file = file;
- }
-
- /**
- * Initial implementation: return null;
- */
- public Object[] fetchChildren(Object o, IProgressMonitor monitor) {
- return new Object[0];
- }
- /**
- * Initial implementation: return null.
- */
- public ImageDescriptor getImageDescriptor(Object object) {
- return PlatformUI.getWorkbench().getEditorRegistry().getImageDescriptor(file.getName());
- }
- /**
- * Initial implementation: return the file's name and version
- */
- public String getLabel(Object o) {
- try {
- ResourceSyncInfo info = file.getSyncInfo();
- if(info!=null) {
- return file.getName() + " " + info.getRevision(); //$NON-NLS-1$
- } else {
- return file.getName();
- }
- } catch (TeamException e) {
- handle(null, null, e);
- return null;
- }
- }
- /**
- * @see IWorkbenchAdapter#getParent(Object)
- */
- public Object getParent(Object o) {
- return null;
- }
-
- public ICVSFile getCVSFile() {
- return file;
- }
- /**
- * @see CVSResourceElement#getCVSResource()
- */
- public ICVSResource getCVSResource() {
- return file;
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/CVSFolderElement.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/CVSFolderElement.java
deleted file mode 100644
index 865b95801..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/CVSFolderElement.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.tags;
-
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.ui.model.CVSResourceElement;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-
-public class CVSFolderElement extends CVSResourceElement {
-
- private ICVSFolder folder;
- private boolean includeUnmanaged;
-
- public CVSFolderElement(ICVSFolder folder, boolean includeUnmanaged) {
- this.folder = folder;
- this.includeUnmanaged = includeUnmanaged;
- }
-
- /**
- * Returns CVSResourceElement instances
- */
- public Object[] fetchChildren(Object o, IProgressMonitor monitor) throws TeamException {
- ICVSResource[] children = folder.fetchChildren(monitor);
- CVSResourceElement[] elements = new CVSResourceElement[children.length];
- for (int i = 0; i < children.length; i++) {
- ICVSResource resource = children[i];
- if(resource.isFolder()) {
- elements[i] = new CVSFolderElement((ICVSFolder)resource, includeUnmanaged);
- } else {
- elements[i] = new CVSFileElement((ICVSFile)resource);
- }
- }
- return elements;
- }
-
- /**
- * @see org.eclipse.team.internal.ccvs.ui.model.CVSModelElement#isRemoteElement()
- */
- public boolean isRemoteElement() {
- return true;
- }
-
- /**
- * Overridden to append the version name to remote folders which
- * have version tags and are top-level folders.
- */
- public String getLabel(Object o) {
- return folder.getName();
- }
-
- public ImageDescriptor getImageDescriptor(Object object) {
- return PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_OBJ_FOLDER);
- }
-
- /**
- * @see IWorkbenchAdapter#getParent(Object)
- */
- public Object getParent(Object o) {
- return new CVSFolderElement(folder.getParent(), includeUnmanaged);
- }
-
- /**
- * @see CVSResourceElement#getCVSResource()
- */
- public ICVSResource getCVSResource() {
- return folder ;
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/FilteredTagList.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/FilteredTagList.java
deleted file mode 100644
index a8266373d..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/FilteredTagList.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.tags;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.team.internal.ccvs.core.CVSTag;
-import org.eclipse.team.internal.ccvs.core.util.StringMatcher;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-
-/**
- * Workbench model element that returns a filtered list of tags
- */
-public class FilteredTagList implements IWorkbenchAdapter, IAdaptable {
-
- private final TagSource tagSource;
- private final int[] types;
- private StringMatcher matcher;
-
- public FilteredTagList(TagSource tagSource, int[] types) {
- this.tagSource = tagSource;
- this.types = types;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.model.IWorkbenchAdapter#getChildren(java.lang.Object)
- */
- public Object[] getChildren(Object o) {
- CVSTag[] tags = getTags();
- List filtered = new ArrayList();
- for (int i = 0; i < tags.length; i++) {
- CVSTag tag = tags[i];
- if (select(tag)) {
- filtered.add(new TagElement(this, tag));
- }
- }
- return filtered.toArray(new Object[filtered.size()]);
- }
-
- private boolean select(CVSTag tag) {
- if (matcher == null) return true;
- return matcher.match(tag.getName());
- }
-
- private CVSTag[] getTags() {
- return tagSource.getTags(types);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.model.IWorkbenchAdapter#getImageDescriptor(java.lang.Object)
- */
- public ImageDescriptor getImageDescriptor(Object object) {
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.model.IWorkbenchAdapter#getLabel(java.lang.Object)
- */
- public String getLabel(Object o) {
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.model.IWorkbenchAdapter#getParent(java.lang.Object)
- */
- public Object getParent(Object o) {
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
- */
- public Object getAdapter(Class adapter) {
- if (adapter == IWorkbenchAdapter.class) return this;
- return null;
- }
-
- public void setPattern(String pattern) {
- if (!pattern.endsWith("*")) { //$NON-NLS-1$
- pattern += "*"; //$NON-NLS-1$
- }
- matcher = new StringMatcher(pattern, true, false);
- }
-
- public CVSTag[] getMatchingTags() {
- CVSTag[] tags = getTags();
- List filtered = new ArrayList();
- for (int i = 0; i < tags.length; i++) {
- CVSTag tag = tags[i];
- if (select(tag)) {
- filtered.add(tag);
- }
- }
- return (CVSTag[])filtered.toArray(new CVSTag[filtered.size()]);
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/LocalProjectTagSource.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/LocalProjectTagSource.java
deleted file mode 100644
index 1ffa1c7f1..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/LocalProjectTagSource.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.tags;
-
-import java.util.*;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.team.core.RepositoryProvider;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-
-/**
- * Tag source that gets its tags from the projects exist in the workspace
- * and are mapped to the same repository as the seed project
- */
-public class LocalProjectTagSource extends TagSource {
-
- public static TagSource create(IProject seedProject) {
- try {
- ICVSRemoteFolder seedFolder = ((ICVSRemoteFolder)CVSWorkspaceRoot.getRemoteResourceFor(seedProject));
- ICVSRemoteFolder[] remoteFolders = getProjectRemoteFolders(seedFolder.getRepository());
- if (remoteFolders.length == 1) {
- // There are no other projects to get tags from so return null
- return null;
- }
- return new LocalProjectTagSource(seedFolder, remoteFolders);
- } catch (CVSException e) {
- // Log and return null
- CVSUIPlugin.log(e);
- return null;
- }
- }
-
- private ICVSRemoteFolder seedFolder;
- private ICVSRemoteFolder[] remoteFolders;
-
- private LocalProjectTagSource(ICVSRemoteFolder seedFolder, ICVSRemoteFolder[] remoteFolders) {
- this.seedFolder = seedFolder;
- this.remoteFolders = remoteFolders;
- }
-
- /*
- * Return the list of remote folders for the projects in the workspace mapped to the given repository
- */
- private static ICVSRemoteFolder[] getProjectRemoteFolders(ICVSRepositoryLocation repository) {
- IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
- List result = new ArrayList();
- for (int i = 0; i < projects.length; i++) {
- IProject project = projects[i];
- try {
- if (project.isAccessible() && RepositoryProvider.isShared(project)) {
- ICVSRemoteFolder remote = (ICVSRemoteFolder)CVSWorkspaceRoot.getRemoteResourceFor(project);
- if (remote != null && remote.getRepository().equals(repository)) {
- result.add(remote);
- }
- }
- } catch (CVSException e) {
- // Log and continue
- CVSUIPlugin.log(e);
- }
- }
- return (ICVSRemoteFolder[]) result.toArray(new ICVSRemoteFolder[result.size()]);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.tags.TagSource#refresh(boolean, org.eclipse.core.runtime.IProgressMonitor)
- */
- public CVSTag[] refresh(boolean bestEffort, IProgressMonitor monitor) throws TeamException {
- // This tag source should not be refreshed
- return new CVSTag[0];
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.tags.TagSource#getLocation()
- */
- public ICVSRepositoryLocation getLocation() {
- return seedFolder.getRepository();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.tags.TagSource#getShortDescription()
- */
- public String getShortDescription() {
- return Policy.bind("LocalProjectTagSource.0", Integer.toString(remoteFolders.length)); //$NON-NLS-1$
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.tags.TagSource#commit(org.eclipse.team.internal.ccvs.core.CVSTag[], boolean, org.eclipse.core.runtime.IProgressMonitor)
- */
- public void commit(CVSTag[] tags, boolean replace, IProgressMonitor monitor) throws CVSException {
- // Does not commit tags
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.tags.TagSource#getCVSResources()
- */
- public ICVSResource[] getCVSResources() {
- return remoteFolders;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.tags.TagSource#getTags(int)
- */
- public CVSTag[] getTags(int type) {
- if (type == CVSTag.HEAD || type == BASE) {
- return super.getTags(type);
- }
- // Accumulate the tags for all folders
- Set allTags = new HashSet();
- for (int i = 0; i < remoteFolders.length; i++) {
- ICVSRemoteFolder folder = remoteFolders[i];
- CVSTag[] tags = SingleFolderTagSource.getTags(folder, type);
- allTags.addAll(Arrays.asList(tags));
- }
- // Exclude the tags for the seedFolder
- CVSTag[] tags = SingleFolderTagSource.getTags(seedFolder, type);
- allTags.removeAll(Arrays.asList(tags));
- return (CVSTag[]) allTags.toArray(new CVSTag[allTags.size()]);
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/MultiFolderTagSource.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/MultiFolderTagSource.java
deleted file mode 100644
index ac8f949a3..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/MultiFolderTagSource.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.tags;
-
-import org.eclipse.team.internal.ccvs.core.ICVSFolder;
-import org.eclipse.team.internal.ccvs.core.ICVSResource;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-
-/**
- * A tag source for multiple folders.
- *
- * TODO: Temporarily a subclass of single folder until I
- * can figure out how to handle the multi-folder case.
- */
-public class MultiFolderTagSource extends SingleFolderTagSource {
-
- private final ICVSFolder[] folders;
-
- /* package */ MultiFolderTagSource(ICVSFolder[] folders) {
- super(folders[0]);
- this.folders = folders;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.merge.SingleFolderTagSource#getShortDescription()
- */
- public String getShortDescription() {
- return Policy.bind("MultiFolderTagSource.0", Integer.toString(folders.length)); //$NON-NLS-1$
- }
-
- /**
- * Return the folders of this tag source
- * @return
- */
- public ICVSFolder[] getFolders() {
- return folders;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.tags.SingleFolderTagSource#getCVSResources()
- */
- public ICVSResource[] getCVSResources() {
- return folders;
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/SingleFileTagSource.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/SingleFileTagSource.java
deleted file mode 100644
index 30cd23307..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/SingleFileTagSource.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.tags;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.repo.RepositoryManager;
-
-/**
- * A tag source for a single ICVSFile
- */
-public class SingleFileTagSource extends TagSource {
-
- public static CVSTag[] fetchTagsFor(ICVSFile file, IProgressMonitor monitor) throws TeamException {
- Set tagSet = new HashSet();
- ILogEntry[] entries = file.getLogEntries(monitor);
- for (int j = 0; j < entries.length; j++) {
- CVSTag[] tags = entries[j].getTags();
- for (int k = 0; k < tags.length; k++) {
- tagSet.add(tags[k]);
- }
- }
- return (CVSTag[])tagSet.toArray(new CVSTag[tagSet.size()]);
- }
-
- private ICVSFile file;
- private TagSource parentFolderTagSource;
-
- /* package */ /**
- *
- */
- public SingleFileTagSource(ICVSFile file) {
- this.file = file;
- parentFolderTagSource = TagSource.create(new ICVSResource[] { file.getParent() });
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.tags.TagSource#getTags(int)
- */
- public CVSTag[] getTags(int type) {
- return parentFolderTagSource.getTags(type);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.tags.TagSource#refresh(org.eclipse.core.runtime.IProgressMonitor)
- */
- public CVSTag[] refresh(boolean bestEffort, IProgressMonitor monitor) throws TeamException {
- CVSTag[] tags = fetchTagsFor(file, monitor);
- commit(tags, false, monitor);
- fireChange();
- return tags;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.tags.TagSource#getLocation()
- */
- public ICVSRepositoryLocation getLocation() {
- RepositoryManager mgr = CVSUIPlugin.getPlugin().getRepositoryManager();
- ICVSRepositoryLocation location = mgr.getRepositoryLocationFor(file);
- return location;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.tags.TagSource#getShortDescription()
- */
- public String getShortDescription() {
- return file.getName();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.tags.TagSource#commit(org.eclipse.team.internal.ccvs.core.CVSTag[], boolean, org.eclipse.core.runtime.IProgressMonitor)
- */
- public void commit(CVSTag[] tags, boolean replace, IProgressMonitor monitor) throws CVSException {
- parentFolderTagSource.commit(tags, replace, monitor);
- fireChange();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.tags.TagSource#getCVSResources()
- */
- public ICVSResource[] getCVSResources() {
- return new ICVSResource[] { file };
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/SingleFolderTagSource.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/SingleFolderTagSource.java
deleted file mode 100644
index 1c6bb08a8..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/SingleFolderTagSource.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.tags;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.operation.IRunnableContext;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.repo.RepositoryManager;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * A tag source that returns the tags associated with a single remote folder
- */
-public class SingleFolderTagSource extends TagSource {
-
- public static CVSTag[] getTags(ICVSFolder folder, int type) {
- if (type == CVSTag.HEAD)
- return new CVSTag[] { CVSTag.DEFAULT } ;
- return CVSUIPlugin.getPlugin().getRepositoryManager().getKnownTags(folder, type);
- }
-
- private ICVSFolder folder;
-
- /* package */ SingleFolderTagSource(ICVSFolder folder) {
- this.folder = folder;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.merge.TagSource#getTags(int)
- */
- public CVSTag[] getTags(int type) {
- if (type == CVSTag.HEAD || type == BASE) {
- return super.getTags(type);
- }
- return getTags(getFolder(), type);
- }
-
- /**
- * Return the folder the tags are obtained from
- * @return the folder the tags are obtained from
- */
- public ICVSFolder getFolder() {
- return folder;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.merge.TagSource#refresh(org.eclipse.core.runtime.IProgressMonitor)
- */
- public CVSTag[] refresh(boolean bestEffort, IProgressMonitor monitor) throws TeamException {
- CVSTag[] tags = CVSUIPlugin.getPlugin().getRepositoryManager().refreshDefinedTags(getFolder(), bestEffort /* recurse */, true /* notify */, monitor);
- fireChange();
- return tags;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.merge.TagSource#getLocation()
- */
- public ICVSRepositoryLocation getLocation() {
- RepositoryManager mgr = CVSUIPlugin.getPlugin().getRepositoryManager();
- ICVSRepositoryLocation location = mgr.getRepositoryLocationFor(getFolder());
- return location;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.merge.TagSource#getShortDescription()
- */
- public String getShortDescription() {
- return getFolder().getName();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.merge.TagSource#commit(org.eclipse.team.internal.ccvs.core.CVSTag[], boolean, org.eclipse.core.runtime.IProgressMonitor)
- */
- public void commit(final CVSTag[] tags, final boolean replace, IProgressMonitor monitor) throws CVSException {
- try {
- final RepositoryManager manager = CVSUIPlugin.getPlugin().getRepositoryManager();
- manager.run(new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- try {
- ICVSFolder folder = getFolder();
- if (replace) {
- CVSTag[] oldTags = manager.getKnownTags(folder);
- manager.removeTags(folder, oldTags);
- }
- manager.addTags(folder, tags);
- } catch (CVSException e) {
- throw new InvocationTargetException(e);
- }
- }
- }, monitor);
- } catch (InvocationTargetException e) {
- throw CVSException.wrapException(e);
- } catch (InterruptedException e) {
- // Ignore
- }
- fireChange();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.tags.TagSource#getCVSResources()
- */
- public ICVSResource[] getCVSResources() {
- final ICVSResource[][] resources = new ICVSResource[][] { null };
- try {
- getRunnableContext().run(true, true, new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- try {
- resources[0] = folder.fetchChildren(monitor);
- } catch (TeamException e) {
- throw new InvocationTargetException(e);
- } finally {
- monitor.done();
- }
- }
- });
- return resources[0];
- } catch (InvocationTargetException e) {
- CVSUIPlugin.log(CVSException.wrapException(e));
- } catch (InterruptedException e) {
- // Ignore
- }
- return new ICVSResource[] { folder };
- }
-
- private IRunnableContext getRunnableContext() {
- return PlatformUI.getWorkbench().getProgressService();
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagAsVersionDialog.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagAsVersionDialog.java
deleted file mode 100644
index 3a59a7026..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagAsVersionDialog.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.tags;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.*;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.team.internal.ccvs.core.CVSTag;
-import org.eclipse.team.internal.ccvs.ui.IHelpContextIds;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.operations.ITagOperation;
-import org.eclipse.team.internal.ui.dialogs.DetailsDialog;
-import org.eclipse.ui.help.WorkbenchHelp;
-
-public class TagAsVersionDialog extends DetailsDialog {
-
- private static final int TAG_AREA_HEIGHT_HINT = 200;
-
- private ITagOperation operation;
-
- private Text tagText;
- private Button moveTagButton;
-
- private String tagName = ""; //$NON-NLS-1$
- private boolean moveTag = false;
-
- private TagSource tagSource;
-
- private TagSelectionArea tagArea;
-
- public TagAsVersionDialog(Shell parentShell, String title, ITagOperation operation) {
- super(parentShell, title);
- this.tagSource = operation.getTagSource();
- this.operation = operation;
- }
-
- /**
- * @see DetailsDialog#createMainDialogArea(Composite)
- */
- protected void createMainDialogArea(Composite parent) {
- // create message
- Label label = new Label(parent, SWT.WRAP);
- label.setText(Policy.bind("TagAction.enterTag")); //$NON-NLS-1$
- GridData data = new GridData(
- GridData.GRAB_HORIZONTAL |
- GridData.HORIZONTAL_ALIGN_FILL |
- GridData.VERTICAL_ALIGN_CENTER);
- data.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH);;
- label.setLayoutData(data);
-
- tagText = new Text(parent, SWT.SINGLE | SWT.BORDER);
- tagText.setLayoutData(new GridData(
- GridData.GRAB_HORIZONTAL |
- GridData.HORIZONTAL_ALIGN_FILL));
- tagText.addModifyListener(
- new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- tagName = tagText.getText();
- updateEnablements();
- }
- }
- );
-
- moveTagButton = new Button(parent, SWT.CHECK);
- moveTagButton.setText(Policy.bind("TagAction.moveTag")); //$NON-NLS-1$
- moveTagButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
- moveTagButton.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- moveTag = moveTagButton.getSelection();
- }
- });
-
- // Add F1 help
- WorkbenchHelp.setHelp(parent, IHelpContextIds.TAG_AS_VERSION_DIALOG);
- Dialog.applyDialogFont(parent);
- }
-
- public boolean shouldMoveTag() {
- return moveTag;
- }
-
- /**
- * @see DetailsDialog#createDropDownDialogArea(Composite)
- */
- protected Composite createDropDownDialogArea(Composite parent) {
- // create a composite with standard margins and spacing
- Composite composite = new Composite(parent, SWT.NONE);
- GridLayout layout = new GridLayout();
- layout.marginHeight = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);
- layout.marginWidth = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
- layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
- layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
- composite.setLayout(layout);
- GridData gridData = new GridData(GridData.FILL_BOTH);
- gridData.heightHint = TAG_AREA_HEIGHT_HINT;
- composite.setLayoutData(gridData);
-
- tagArea = new TagSelectionArea(getShell(), tagSource, TagSelectionArea.INCLUDE_VERSIONS, null);
- tagArea.setTagAreaLabel(Policy.bind("TagAction.existingVersions")); //$NON-NLS-1$
- tagArea.setIncludeFilterInputArea(false);
- tagArea.createArea(composite);
- tagArea.addPropertyChangeListener(new IPropertyChangeListener() {
- public void propertyChange(PropertyChangeEvent event) {
- if (event.getProperty().equals(TagSelectionArea.SELECTED_TAG)) {
- CVSTag tag = tagArea.getSelection();
- if (tag != null) {
- tagText.setText(tag.getName());
- }
- } else if (event.getProperty().equals(TagSelectionArea.OPEN_SELECTED_TAG)) {
- CVSTag tag = tagArea.getSelection();
- if (tag != null) {
- tagText.setText(tag.getName());
- okPressed();
- }
- }
- }
- });
- return composite;
- }
-
- /**
- * Validates tag name
- */
- protected void updateEnablements() {
- String message = null;
- if(tagName.length() == 0) {
- message = ""; //$NON-NLS-1$
- } else {
- IStatus status = CVSTag.validateTagName(tagName);
- if (!status.isOK()) {
- message = status.getMessage();
- }
- }
- setPageComplete(message == null);
- setErrorMessage(message);
- if (tagArea != null) {
- tagArea.setFilter(tagName);
- }
- }
-
- /**
- * Returns the tag name entered into this dialog
- */
- public String getTagName() {
- return tagName;
- }
-
- /**
- * @return
- */
- public ITagOperation getOperation() {
- operation.setTag(new CVSTag(tagName, CVSTag.VERSION));
- if (moveTag) {
- operation.moveTag();
- }
- return operation;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ui.dialogs.DetailsDialog#isMainGrabVertical()
- */
- protected boolean isMainGrabVertical() {
- return false;
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagConfigurationDialog.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagConfigurationDialog.java
deleted file mode 100644
index 0f3a41d3e..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagConfigurationDialog.java
+++ /dev/null
@@ -1,763 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.tags;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.*;
-import java.util.List;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.jface.dialogs.*;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.viewers.*;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.*;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.ui.*;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.model.RemoteContentProvider;
-import org.eclipse.team.internal.ccvs.ui.repo.NewDateTagAction;
-import org.eclipse.team.internal.ccvs.ui.repo.RepositoryManager;
-import org.eclipse.team.internal.ccvs.ui.tags.TagSourceWorkbenchAdapter.ProjectElementSorter;
-import org.eclipse.ui.help.WorkbenchHelp;
-import org.eclipse.ui.model.WorkbenchContentProvider;
-import org.eclipse.ui.model.WorkbenchLabelProvider;
-
-/**
- * Allows configuration of the CVS tags that are shown within the workbench.
- */
-public class TagConfigurationDialog extends Dialog {
-
- // show the resource contained within the roots
- private TreeViewer cvsResourceTree;
-
- // shows the tags found on the selected resources
- private CheckboxTableViewer cvsTagTree;
-
- // shows the defined tags for the given root
- private TreeViewer cvsDefinedTagsTree;
-
- // remember the root element in the defined tags tree
- private TagSourceWorkbenchAdapter cvsDefinedTagsRootElement;
-
- // list of auto-refresh files
- private org.eclipse.swt.widgets.List autoRefreshFileList;
-
- // enable selecting auto-refresh files
- private boolean allowSettingAutoRefreshFiles = true;
-
- // preference keys
- private final String ALLOWREFRESH_WIDTH_KEY = "AllowRefreshWidth"; //$NON-NLS-1$
- private final String ALLOWREFRESH_HEIGHT_KEY = "AllowRefreshHeight"; //$NON-NLS-1$
- private final String NOREFRESH_WIDTH_KEY = "NoRefreshWidth"; //$NON-NLS-1$
- private final String NOREFRESH_HEIGHT_KEY = "NoRefreshHeight"; //$NON-NLS-1$
-
- // buttons
- private Button addSelectedTagsButton;
- private Button addSelectedFilesButton;
- private Button removeFileButton;
- private Button removeTagButton;
-
- // dialogs settings that are persistent between workbench sessions
- private IDialogSettings settings;
-
- private final TagSource tagSource;
-
- private final TagSourceWrapper wrappedTagSource;
-
- class FileSorter extends ViewerSorter {
- public int compare(Viewer viewer, Object e1, Object e2) {
- boolean oneIsFile = e1 instanceof CVSFileElement;
- boolean twoIsFile = e2 instanceof CVSFileElement;
- if (oneIsFile != twoIsFile) {
- return oneIsFile ? 1 : -1;
- }
- return super.compare(viewer, e1, e2);
- }
- }
-
- /*
- * Create a tag source that cahces the added and removed tags
- * so that the changes can be propogated to the repository
- * manager when OK is pressed
- */
- class TagSourceWrapper extends TagSource {
-
- private final TagSource tagSource;
- private final List branches = new ArrayList();
- private final List versions = new ArrayList();
- private final List dates = new ArrayList();
-
- public TagSourceWrapper(TagSource tagSource) {
- this.tagSource = tagSource;
- branches.addAll(Arrays.asList(tagSource.getTags(CVSTag.BRANCH)));
- versions.addAll(Arrays.asList(tagSource.getTags(CVSTag.VERSION)));
- dates.addAll(Arrays.asList(tagSource.getTags(CVSTag.DATE)));
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.merge.TagSource#getTags(int)
- */
- public CVSTag[] getTags(int type) {
- if (type == CVSTag.HEAD || type == BASE) {
- return super.getTags(type);
- }
- List list = getTagList(type);
- if (list != null)
- return (CVSTag[]) list.toArray(new CVSTag[list.size()]);
- return tagSource.getTags(type);
- }
-
- private List getTagList(int type) {
- switch (type) {
- case CVSTag.VERSION:
- return versions;
- case CVSTag.BRANCH:
- return branches;
- case CVSTag.DATE:
- return dates;
- }
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.merge.TagSource#refresh(org.eclipse.core.runtime.IProgressMonitor)
- */
- public CVSTag[] refresh(boolean bestEffort, IProgressMonitor monitor) throws TeamException {
- // The wrapper is never refreshed
- return new CVSTag[0];
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.merge.TagSource#getLocation()
- */
- public ICVSRepositoryLocation getLocation() {
- return tagSource.getLocation();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.merge.TagSource#getShortDescription()
- */
- public String getShortDescription() {
- return tagSource.getShortDescription();
- }
-
- public void remove(CVSTag[] tags) {
- for (int i = 0; i < tags.length; i++) {
- CVSTag tag = tags[i];
- List list = getTagList(tag.getType());
- if (list != null)
- list.remove(tag);
- }
- }
-
- public void add(CVSTag[] tags) {
- for (int i = 0; i < tags.length; i++) {
- CVSTag tag = tags[i];
- List list = getTagList(tag.getType());
- if (list != null)
- list.add(tag);
- }
- }
-
- public void removeAll() {
- versions.clear();
- branches.clear();
- dates.clear();
- }
-
- /**
- * Remember the state that has been accumulated
- * @param monitor
- * @throws CVSException
- */
- public void commit(IProgressMonitor monitor) throws CVSException {
- tagSource.commit(getTags(new int[] { CVSTag.VERSION, CVSTag.BRANCH, CVSTag.DATE }), true /* replace */, monitor);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.merge.TagSource#commit(org.eclipse.team.internal.ccvs.core.CVSTag[], boolean, org.eclipse.core.runtime.IProgressMonitor)
- */
- public void commit(CVSTag[] tags, boolean replace, IProgressMonitor monitor) throws CVSException {
- // Not invoked
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.tags.TagSource#getCVSResources()
- */
- public ICVSResource[] getCVSResources() {
- return tagSource.getCVSResources();
- }
- }
-
- public TagConfigurationDialog(Shell shell, TagSource tagSource) {
- super(shell);
- this.tagSource = tagSource;
- wrappedTagSource = new TagSourceWrapper(tagSource);
- setShellStyle(SWT.CLOSE|SWT.RESIZE|SWT.APPLICATION_MODAL);
- allowSettingAutoRefreshFiles = getSingleFolder(tagSource, false) != null;
- IDialogSettings workbenchSettings = CVSUIPlugin.getPlugin().getDialogSettings();
- this.settings = workbenchSettings.getSection("TagConfigurationDialog");//$NON-NLS-1$
- if (settings == null) {
- this.settings = workbenchSettings.addNewSection("TagConfigurationDialog");//$NON-NLS-1$
- }
- }
-
- /**
- * @see Window#configureShell(Shell)
- */
- protected void configureShell(Shell newShell) {
- super.configureShell(newShell);
- newShell.setText(Policy.bind("TagConfigurationDialog.1", tagSource.getShortDescription())); //$NON-NLS-1$
- }
-
- /**
- * @see Dialog#createDialogArea(Composite)
- */
- protected Control createDialogArea(Composite parent) {
- Composite shell = new Composite(parent, SWT.NONE);
- GridData data = new GridData (GridData.FILL_BOTH);
- shell.setLayoutData(data);
- GridLayout gridLayout = new GridLayout();
- gridLayout.numColumns = 2;
- gridLayout.makeColumnsEqualWidth = true;
- gridLayout.marginHeight = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);
- gridLayout.marginWidth = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
- shell.setLayout (gridLayout);
-
- Composite comp = new Composite(shell, SWT.NULL);
- gridLayout = new GridLayout();
- gridLayout.numColumns = 1;
- gridLayout.marginWidth = 0;
- gridLayout.marginHeight = 0;
- comp.setLayout(gridLayout);
- comp.setLayoutData(new GridData(GridData.FILL_BOTH));
-
- Label cvsResourceTreeLabel = new Label(comp, SWT.NONE);
- cvsResourceTreeLabel.setText(Policy.bind("TagConfigurationDialog.5")); //$NON-NLS-1$
- data = new GridData();
- data.horizontalSpan = 1;
- cvsResourceTreeLabel.setLayoutData(data);
-
- Tree tree = new Tree(comp, SWT.BORDER | SWT.MULTI);
- cvsResourceTree = new TreeViewer (tree);
- cvsResourceTree.setContentProvider(new RemoteContentProvider());
- cvsResourceTree.setLabelProvider(new WorkbenchLabelProvider());
- data = new GridData (GridData.FILL_BOTH);
- data.heightHint = 150;
- data.horizontalSpan = 1;
- cvsResourceTree.getTree().setLayoutData(data);
- cvsResourceTree.setInput(TagSourceResourceAdapter.getViewerInput(tagSource));
- cvsResourceTree.setSorter(new FileSorter());
- cvsResourceTree.addSelectionChangedListener(new ISelectionChangedListener() {
- public void selectionChanged(SelectionChangedEvent event) {
- updateShownTags();
- updateEnablements();
- }
- });
-
- comp = new Composite(shell, SWT.NULL);
- gridLayout = new GridLayout();
- gridLayout.numColumns = 1;
- gridLayout.marginWidth = 0;
- gridLayout.marginHeight = 0;
- comp.setLayout(gridLayout);
- comp.setLayoutData(new GridData(GridData.FILL_BOTH));
-
- Label cvsTagTreeLabel = new Label(comp, SWT.NONE);
- cvsTagTreeLabel.setText(Policy.bind("TagConfigurationDialog.6")); //$NON-NLS-1$
- data = new GridData();
- data.horizontalSpan = 1;
- cvsTagTreeLabel.setLayoutData(data);
-
- final Table table = new Table(comp, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION | SWT.CHECK);
- data = new GridData(GridData.FILL_BOTH);
- data.heightHint = 150;
- data.horizontalSpan = 1;
- table.setLayoutData(data);
- cvsTagTree = new CheckboxTableViewer(table);
- cvsTagTree.setContentProvider(new WorkbenchContentProvider());
- cvsTagTree.setLabelProvider(new WorkbenchLabelProvider());
- cvsTagTree.addSelectionChangedListener(new ISelectionChangedListener() {
- public void selectionChanged(SelectionChangedEvent event) {
- updateEnablements();
- }
- });
-
- Composite selectComp = new Composite(comp, SWT.NONE);
- GridLayout selectLayout = new GridLayout(2, true);
- selectLayout.marginHeight = selectLayout.marginWidth = 0;
- selectComp.setLayout(selectLayout);
- selectComp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- Button selectAllButton = new Button(selectComp, SWT.PUSH);
- selectAllButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- selectAllButton.setText(Policy.bind("ReleaseCommentDialog.selectAll")); //$NON-NLS-1$
- selectAllButton.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- int nItems = table.getItemCount();
- for (int j=0; jsetFilter
.
- * @param include whether filter text input should be included
- */
- public void setIncludeFilterInputArea(boolean include) {
- includeFilterInputArea = include;
- }
-
- /**
- * Return whether the input filter text is to be included in the tag selection area.
- * If excluded, clientscan still set the filter text directly using
- * setFilter
.
- * @return whether filter text input should be included
- */
- public boolean isIncludeFilterInputArea() {
- return includeFilterInputArea;
- }
-
- /**
- * Set the text used to filter the tag list.
- * @param filter the filter pattern
- */
- public void setFilter(String filter) {
- this.filterPattern = filter;
- updateTagDisplay(false);
- }
-
- public void setRunnableContext(IRunnableContext context) {
- this.context = context;
- if (tagRefreshArea != null)
- tagRefreshArea.setRunnableContext(context);
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagSelectionDialog.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagSelectionDialog.java
deleted file mode 100644
index 30050625d..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagSelectionDialog.java
+++ /dev/null
@@ -1,247 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.tags;
-
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.team.internal.ccvs.core.CVSTag;
-import org.eclipse.team.internal.ccvs.ui.IHelpContextIds;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-
-/**
- * Dialog to prompt the user to choose a tag for a selected resource
- */
-public class TagSelectionDialog extends Dialog implements IPropertyChangeListener {
-
- private TagSelectionArea tagSelectionArea;
-
- public static final int INCLUDE_HEAD_TAG = TagSourceWorkbenchAdapter.INCLUDE_HEAD_TAG;
- public static final int INCLUDE_BASE_TAG = TagSourceWorkbenchAdapter.INCLUDE_BASE_TAG;
- public static final int INCLUDE_BRANCHES = TagSourceWorkbenchAdapter.INCLUDE_BRANCHES;
- public static final int INCLUDE_VERSIONS = TagSourceWorkbenchAdapter.INCLUDE_VERSIONS;
- public static final int INCLUDE_DATES = TagSourceWorkbenchAdapter.INCLUDE_DATES;
- public static final int INCLUDE_ALL_TAGS = TagSourceWorkbenchAdapter.INCLUDE_ALL_TAGS;
-
- private Button okButton;
-
- // dialog title, should indicate the action in which the tag selection
- // dialog is being shown
- private String title;
-
- private boolean recurse = true;
-
- // constants
- private static final int SIZING_DIALOG_WIDTH = 400;
- private static final int SIZING_DIALOG_HEIGHT = 400;
-
- private CVSTag selection;
-
- private TagSource tagSource;
-
- private String message;
-
- private int includeFlags;
-
- private String helpContext;
-
- private boolean showRecurse;
-
- public static CVSTag getTagToCompareWith(Shell shell, TagSource tagSource, int includeFlags) {
- TagSelectionDialog dialog = new TagSelectionDialog(shell, tagSource,
- Policy.bind("CompareWithTagAction.message"), //$NON-NLS-1$
- Policy.bind("TagSelectionDialog.Select_a_Tag_1"), //$NON-NLS-1$
- includeFlags,
- false, /* show recurse*/
- IHelpContextIds.COMPARE_TAG_SELECTION_DIALOG);
- dialog.setBlockOnOpen(true);
- int result = dialog.open();
- if (result == Dialog.CANCEL) {
- return null;
- }
- return dialog.getResult();
- }
-
- /**
- * Creates a new TagSelectionDialog.
- * @param resource The resource to select a version for.
- */
- public TagSelectionDialog(Shell parentShell, TagSource tagSource, String title, String message, int includeFlags, final boolean showRecurse, String helpContext) {
- super(parentShell);
-
- // Create a tag selection area with a custom recurse option
- this.tagSource = tagSource;
- this.message = message;
- this.includeFlags = includeFlags;
- this.helpContext = helpContext;
- this.showRecurse = showRecurse;
- this.title = title;
- setShellStyle(getShellStyle() | SWT.RESIZE);
- }
-
- /* (non-Javadoc)
- * Method declared on Window.
- */
- protected void configureShell(Shell newShell) {
- super.configureShell(newShell);
- newShell.setText(title);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.window.Window#getInitialSize()
- */
- protected Point getInitialSize() {
- return new Point(SIZING_DIALOG_WIDTH, SIZING_DIALOG_HEIGHT);
- }
-
- /**
- * Creates this window's widgetry.
- *
- * The default implementation of this framework method
- * creates this window's shell (by calling createShell
),
- * its control (by calling createContents
),
- * and initializes this window's shell bounds
- * (by calling initializeBounds
).
- * This framework method may be overridden; however,
- * super.create
must be called.
- *
- * The default implementation of this framework method
- * creates and returns a new Composite
with
- * standard margins and spacing.
- * Subclasses should override.
- *
createControl
- * @param helpContextId the help context id
- */
- public void setHelpContxtId(String helpContextId) {
- this.helpContextId = helpContextId;
- }
-
- /**
- * Set the label to appear over the tag list/tree.
- * If not set, a default will be used.
- * * This method must be invoked before createControl
- * @param tagLabel the label to appear over the tag list/tree
- */
- public void setTagLabel(String tagLabel) {
- this.tagLabel = tagLabel;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
- */
- public void createControl(Composite parent) {
- composite = createComposite(parent, 1, false);
- setControl(composite);
-
- // set F1 help
- if (helpContextId != null)
- WorkbenchHelp.setHelp(composite, helpContextId);
-
- if (allowNoTag) {
- SelectionListener listener = new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- useResourceTag = useResourceTagButton.getSelection();
- updateEnablement();
- }
- };
- useResourceTag = true;
- useResourceTagButton = createRadioButton(composite, Policy.bind("TagSelectionWizardPage.0"), 1); //$NON-NLS-1$
- selectTagButton = createRadioButton(composite, Policy.bind("TagSelectionWizardPage.1"), 1); //$NON-NLS-1$
- useResourceTagButton.setSelection(useResourceTag);
- selectTagButton.setSelection(!useResourceTag);
- useResourceTagButton.addSelectionListener(listener);
- selectTagButton.addSelectionListener(listener);
- }
-
- createTagArea();
- updateEnablement();
- Dialog.applyDialogFont(parent);
- }
-
- private void createTagArea() {
- tagArea = new TagSelectionArea(getShell(), tagSource, includeFlags, null);
- if (tagLabel != null)
- tagArea.setTagAreaLabel(tagLabel);
- tagArea.setRunnableContext(getContainer());
- tagArea.createArea(composite);
- tagArea.addPropertyChangeListener(new IPropertyChangeListener() {
- public void propertyChange(PropertyChangeEvent event) {
- if (event.getProperty().equals(TagSelectionArea.SELECTED_TAG)) {
- selectedTag = tagArea.getSelection();
- updateEnablement();
- } else if (event.getProperty().equals(TagSelectionArea.OPEN_SELECTED_TAG)) {
- if (selectedTag != null)
- gotoNextPage();
- }
-
- }
- });
- refreshTagArea();
- }
-
- private void refreshTagArea() {
- if (tagArea != null) {
- tagArea.refresh();
- tagArea.setSelection(selectedTag);
- }
- }
-
- protected void updateEnablement() {
- tagArea.setEnabled(!useResourceTag);
- setPageComplete(useResourceTag || selectedTag != null);
- }
-
- public CVSTag getSelectedTag() {
- if (useResourceTag)
- return null;
- return selectedTag;
- }
-
- protected void gotoNextPage() {
- TagSelectionWizardPage.this.getContainer().showPage(getNextPage());
- }
-
- public void setAllowNoTag(boolean b) {
- allowNoTag = b;
- }
-
- public void setVisible(boolean visible) {
- super.setVisible(visible);
- if (visible && tagArea != null) {
- tagArea.setFocus();
- }
- }
-
- /**
- * Set the tag source used by this wizard page
- * @param source the tag source
- */
- public void setTagSource(TagSource source) {
- this.tagSource = source;
- tagArea.setTagSource(tagSource);
- setSelection(null);
- refreshTagArea();
- }
-
- /**
- * Set the selection of the page to the given tag
- * @param selectedTag
- */
- public void setSelection(CVSTag selectedTag) {
- if (selectedTag == null && (includeFlags & TagSelectionArea.INCLUDE_HEAD_TAG) > 0) {
- this.selectedTag = CVSTag.DEFAULT;
- } else {
- this.selectedTag = selectedTag;
- }
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagSource.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagSource.java
deleted file mode 100644
index 0e9540bfb..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagSource.java
+++ /dev/null
@@ -1,234 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.tags;
-
-import java.util.*;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.*;
-import org.eclipse.jface.util.ListenerList;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot;
-
-/**
- * A tag source provides access to a set of tags.
- */
-public abstract class TagSource {
-
- /*
- * Special constant representing the BASE tag
- */
- public static final int BASE = -1;
-
- public static final TagSource EMPTY = new TagSource() {
- public void commit(CVSTag[] tags, boolean replace, IProgressMonitor monitor) throws CVSException {
- // No-op
- }
- public ICVSRepositoryLocation getLocation() {
- // TODO Auto-generated method stub
- return null;
- }
- public String getShortDescription() {
- return "Empty"; //$NON-NLS-1$
- }
- public CVSTag[] getTags(int type) {
- return new CVSTag[0];
- }
- public CVSTag[] refresh(boolean bestEffort, IProgressMonitor monitor) throws TeamException {
- return new CVSTag[0];
- }
- public ICVSResource[] getCVSResources() {
- return new ICVSResource[0];
- }
- };
-
- private ListenerList listeners = new ListenerList();
-
- /**
- * Simple interface for providing notification when the tags
- * for this source have changed.
- */
- public interface ITagSourceChangeListener {
- void tagsChanged(TagSource source);
- }
-
- public static int[] convertIncludeFlaqsToTagTypes(int includeFlags) {
- List types = new ArrayList();
- if ((includeFlags & TagSelectionArea.INCLUDE_BRANCHES) > 0)
- types.add(new Integer(CVSTag.BRANCH));
- if ((includeFlags & TagSelectionArea.INCLUDE_VERSIONS) > 0)
- types.add(new Integer(CVSTag.VERSION));
- if ((includeFlags & (TagSelectionArea.INCLUDE_HEAD_TAG)) > 0)
- types.add(new Integer(CVSTag.HEAD));
- if ((includeFlags & (TagSelectionArea.INCLUDE_DATES)) > 0)
- types.add(new Integer(CVSTag.DATE));
- if ((includeFlags & (TagSelectionArea.INCLUDE_BASE_TAG)) > 0)
- types.add(new Integer(BASE));
- int[] result = new int[types.size()];
- for (int i = 0; i < result.length; i++) {
- result[i] = ((Integer)types.get(i)).intValue();
-
- }
- return result;
- }
-
- /**
- * Create a tag source for the given folders
- * @param folders one or more folders
- * @return a tag source for the supplied folders
- */
- public static TagSource create(ICVSFolder[] folders) {
- if (folders.length == 1) {
- return new SingleFolderTagSource(folders[0]);
- } else {
- return new MultiFolderTagSource(folders);
- }
- }
-
- /**
- * Create a tag source for a list of resources
- * @param resources one or more resources
- * @return a tag source
- */
- public static TagSource create(ICVSResource[] resources) {
- if (resources.length == 1 && !resources[0].isFolder())
- return new SingleFileTagSource((ICVSFile)resources[0]);
- return create(getFolders(resources));
- }
-
- private static ICVSFolder[] getFolders(ICVSResource[] resources) {
- return new ICVSFolder[] { getFirstFolder(resources) } ;
- }
-
- /**
- * Create a tag source for a list of resources
- * @param resources one or more resources
- * @return a tag source
- */
- public static TagSource create(IResource[] resources) {
- return create(getCVSResources(getProjects(resources)));
- }
-
- private static IResource[] getProjects(IResource[] resources) {
- Set result = new HashSet();
- for (int i = 0; i < resources.length; i++) {
- IResource resource = resources[i];
- result.add(resource.getProject());
- }
- return (IResource[]) result.toArray(new IResource[result.size()]);
- }
-
- /**
- * Return a tag source for a single remote folder
- * @param remote the remote folder
- * @return a tag source for that folder
- */
- public static TagSource create(ICVSRemoteFolder remote) {
- return new SingleFolderTagSource(remote);
- }
-
- private static ICVSResource[] getCVSResources(IResource[] resources) {
- List cvsResources = new ArrayList();
- for (int i = 0; i < resources.length; i++) {
- IResource resource = resources[i];
- cvsResources.add(CVSWorkspaceRoot.getCVSResourceFor(resource));
- }
- return (ICVSResource[]) cvsResources.toArray(new ICVSResource[cvsResources.size()]);
- }
-
- private static ICVSFolder getFirstFolder(ICVSResource[] resources) {
- if (resources[0].isFolder()) {
- return (ICVSFolder)resources[0];
- } else {
- return resources[0].getParent();
- }
- }
-
- public CVSTag[] getTags(int type) {
- switch (type) {
- case BASE:
- return new CVSTag[] { CVSTag.BASE };
- case CVSTag.HEAD:
- return new CVSTag[] { CVSTag.DEFAULT };
- }
- return new CVSTag[0];
- }
-
- public CVSTag[] getTags(int[] types) {
- if (types.length == 0) {
- return new CVSTag[0];
- }
- if (types.length == 1) {
- return getTags(types[0]);
- }
- List result = new ArrayList();
- for (int i = 0; i < types.length; i++) {
- int type = types[i];
- CVSTag[] tags = getTags(type);
- result.addAll(Arrays.asList(tags));
- }
- return (CVSTag[]) result.toArray(new CVSTag[result.size()]);
- }
-
- /**
- * Refresh the tags by contacting the server if appropriate
- * @param monitor a progress monitor
- * @param bestEffort if best effort is true, then the whole folder contents may be searched
- * @return any discovered tags
- */
- public abstract CVSTag[] refresh(boolean bestEffort, IProgressMonitor monitor) throws TeamException;
-
- public abstract ICVSRepositoryLocation getLocation();
-
- /**
- * Return a short description of the tag source for displaying in UI.
- * @return a short description of the tag source for displaying in UI.
- */
- public abstract String getShortDescription();
-
- /**
- * Commit a set of tag changes to the tag cache
- * @param tags the tags that should be cached
- * @param replace whether existing tags not in the list should be removed
- * @param monitor a progress monitor
- * @throws CVSException
- */
- public abstract void commit(CVSTag[] tags, boolean replace, IProgressMonitor monitor) throws CVSException;
-
- public void addListener(ITagSourceChangeListener listener) {
- listeners.add(listener);
- }
-
- public void removeListener(ITagSourceChangeListener listener) {
- listeners.remove(listener);
- }
-
- /**
- * Notify all listeners that the tags from this source may have changed
- */
- public void fireChange() {
- Object[] list = listeners.getListeners();
- for (int i = 0; i < list.length; i++) {
- final ITagSourceChangeListener listener = (ITagSourceChangeListener)list[i];
- Platform.run(new ISafeRunnable() {
- public void handleException(Throwable exception) {
- // logged by run
- }
- public void run() throws Exception {
- listener.tagsChanged(TagSource.this);
- }
- });
- }
- }
-
- public abstract ICVSResource[] getCVSResources();
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagSourceResourceAdapter.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagSourceResourceAdapter.java
deleted file mode 100644
index d3902327f..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagSourceResourceAdapter.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.tags;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-
-/**
- * A workbench adapter that can be used to view the resources that make up
- * a tag source. It is used by the TagConfigurationDialog.
- */
-public class TagSourceResourceAdapter implements IAdaptable, IWorkbenchAdapter {
-
- public static Object getViewerInput(TagSource tagSource) {
- return new TagSourceResourceAdapter(tagSource);
- }
-
- TagSource tagSource;
-
- private TagSourceResourceAdapter(TagSource tagSource) {
- this.tagSource = tagSource;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.model.IWorkbenchAdapter#getChildren(java.lang.Object)
- */
- public Object[] getChildren(Object o) {
- ICVSResource[] children = tagSource.getCVSResources();
- if (children.length == 0) return new Object[0];
- List result = new ArrayList();
- for (int i = 0; i < children.length; i++) {
- ICVSResource resource = children[i];
- if (resource.isFolder()) {
- result.add(new CVSFolderElement((ICVSFolder)resource, false));
- } else {
- result.add(new CVSFileElement((ICVSFile)resource));
- }
- }
- return result.toArray(new Object[result.size()]);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.model.IWorkbenchAdapter#getImageDescriptor(java.lang.Object)
- */
- public ImageDescriptor getImageDescriptor(Object object) {
- // No imgae descriptor
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.model.IWorkbenchAdapter#getLabel(java.lang.Object)
- */
- public String getLabel(Object o) {
- return tagSource.getShortDescription();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.model.IWorkbenchAdapter#getParent(java.lang.Object)
- */
- public Object getParent(Object o) {
- // No parent
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
- */
- public Object getAdapter(Class adapter) {
- if (adapter == IWorkbenchAdapter.class) {
- return this;
- }
- return null;
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagSourceWorkbenchAdapter.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagSourceWorkbenchAdapter.java
deleted file mode 100644
index 24de6170e..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagSourceWorkbenchAdapter.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.tags;
-
-import java.util.ArrayList;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerSorter;
-import org.eclipse.team.internal.ccvs.core.CVSTag;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-
-/**
- * A workbench adapter for a tag source that creates a model
- * for displaying the tags from a tag source in a tree or table
- * viewer. The workbench adapter is not a singleton since it needs
- * to be configured to display certain types of tags.
- */
-public class TagSourceWorkbenchAdapter implements IAdaptable, IWorkbenchAdapter {
-
- /**
- * Constants for configuring which types of tags should be displayed.
- */
- public static final int INCLUDE_HEAD_TAG = 1;
- public static final int INCLUDE_BASE_TAG = 2;
- public static final int INCLUDE_BRANCHES = 4;
- public static final int INCLUDE_VERSIONS = 8;
- public static final int INCLUDE_DATES = 16;
- public static final int INCLUDE_ALL_TAGS = INCLUDE_HEAD_TAG | INCLUDE_BASE_TAG | INCLUDE_BRANCHES | INCLUDE_VERSIONS | INCLUDE_DATES;
-
- TagRootElement branches;
- TagRootElement versions;
- TagRootElement dates;
- int includeFlags;
-
- public static class ProjectElementSorter extends ViewerSorter {
-
- /*
- * The order in the diaog should be HEAD, Branches, Versions, Dates, BASE
- */
- public int category(Object element) {
- if (element instanceof TagElement) {
- CVSTag tag = ((TagElement)element).getTag();
- if (tag == CVSTag.DEFAULT) return 1;
- if (tag == CVSTag.BASE) return 5;
- if (tag.getType() == CVSTag.BRANCH) return 2;
- if (tag.getType() == CVSTag.VERSION) return 3;
- if (tag.getType() == CVSTag.DATE) return 4;
- } else if (element instanceof TagRootElement) {
- if(((TagRootElement)element).getTypeOfTagRoot() == CVSTag.BRANCH) return 2;
- if(((TagRootElement)element).getTypeOfTagRoot() == CVSTag.VERSION) return 3;
- if(((TagRootElement)element).getTypeOfTagRoot() == CVSTag.DATE) return 4;
- }
- return 0;
- }
- public int compare(Viewer viewer, Object e1, Object e2) {
- int cat1 = category(e1);
- int cat2 = category(e2);
- if (cat1 != cat2) return cat1 - cat2;
- // Sort version tags in reverse order
- if (e1 instanceof TagElement){
- CVSTag tag1 = ((TagElement)e1).getTag();
- int type = tag1.getType();
- if(type == CVSTag.VERSION) {
- return -1 * super.compare(viewer, e1, e2);
- }else if(type == CVSTag.DATE){
- return -1*tag1.compareTo(((TagElement)e2).getTag());
- }
- }
- return super.compare(viewer, e1, e2);
- }
- }
-
-
- /**
- * Create a viewer input for the tag source
- * @param tagSource the tag source
- * @param includeFlags the types of tags to include
- * @return a tree viewer input
- */
- public static Object createInput(TagSource tagSource, int includeFlags) {
- if (includeFlags == INCLUDE_VERSIONS) {
- // Versions only is requested by the merge start page.
- // Only need to show version tags
- return new TagRootElement(null, tagSource, CVSTag.VERSION);
- }
- return new TagSourceWorkbenchAdapter(tagSource, includeFlags);
- }
-
- public TagSourceWorkbenchAdapter(TagSource tagSource, int includeFlags) {
- this.includeFlags = includeFlags;
- if (this.includeFlags == 0) this.includeFlags = INCLUDE_ALL_TAGS;
- if ((includeFlags & INCLUDE_BRANCHES) > 0) {
- branches = new TagRootElement(this, tagSource, CVSTag.BRANCH);
- }
- if ((includeFlags & INCLUDE_VERSIONS) > 0) {
- versions = new TagRootElement(this, tagSource, CVSTag.VERSION);
- }
- if ((includeFlags & INCLUDE_DATES) > 0) {
- dates = new TagRootElement(this, tagSource, CVSTag.DATE);
- }
- }
-
- public Object[] getChildren(Object o) {
- ArrayList children = new ArrayList(4);
- if ((includeFlags & INCLUDE_HEAD_TAG) > 0) {
- children.add(new TagElement(this, CVSTag.DEFAULT));
- }
- if ((includeFlags & INCLUDE_BASE_TAG) > 0) {
- children.add(new TagElement(this, CVSTag.BASE));
- }
- if ((includeFlags & INCLUDE_BRANCHES) > 0) {
- children.add(branches);
- }
- if ((includeFlags & INCLUDE_VERSIONS) > 0) {
- children.add(versions);
- }
- if ((includeFlags & INCLUDE_DATES) > 0) {
- children.add(dates);
- }
- return children.toArray(new Object[children.size()]);
- }
- public int getIncludeFlags() {
- return includeFlags;
- }
- public TagRootElement getBranches() {
- return branches;
- }
- public TagRootElement getVersions() {
- return versions;
- }
- public TagRootElement getDates(){
- return dates;
- }
- public Object getAdapter(Class adapter) {
- if (adapter == IWorkbenchAdapter.class) return this;
- return null;
- }
- public ImageDescriptor getImageDescriptor(Object object) {
- return null;
- }
- public String getLabel(Object o) {
- return null;
- }
- public Object getParent(Object o) {
- return null;
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CVSWizardPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CVSWizardPage.java
deleted file mode 100644
index 3adf28015..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CVSWizardPage.java
+++ /dev/null
@@ -1,382 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.wizards;
-
-
-import java.util.ArrayList;
-
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.DecoratingLabelProvider;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.ListViewer;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.wizard.IWizard;
-import org.eclipse.jface.wizard.IWizardPage;
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.repo.RepositoryManager;
-import org.eclipse.ui.model.WorkbenchContentProvider;
-import org.eclipse.ui.model.WorkbenchLabelProvider;
-import org.eclipse.ui.model.WorkbenchViewerSorter;
-import org.eclipse.ui.views.navigator.ResourceSorter;
-
-/**
- * Common superclass for CVS wizard pages. Provides convenience methods
- * for widget creation.
- */
-public abstract class CVSWizardPage extends WizardPage {
-
- protected static final int LABEL_WIDTH_HINT = 400;
- protected static final int LABEL_INDENT_WIDTH = 32;
- protected static final int LIST_HEIGHT_HINT = 100;
- protected static final int SPACER_HEIGHT = 8;
-
- private ICVSWizard wizard;
-
- /**
- * CVSWizardPage constructor comment.
- * @param pageName the name of the page
- */
- public CVSWizardPage(String pageName) {
- super(pageName);
- }
-
- /**
- * CVSWizardPage constructor comment.
- * @param pageName the name of the page
- * @param title the title of the page
- * @param titleImage the image for the page
- */
- public CVSWizardPage(String pageName, String title, ImageDescriptor titleImage) {
- super(pageName, title, titleImage);
- }
- /**
- * CVSWizardPage constructor comment.
- * @param pageName the name of the page
- * @param title the title of the page
- * @param titleImage the image for the page
- * @param description the description of the page
- */
- public CVSWizardPage(String pageName, String title, ImageDescriptor titleImage, String description) {
- super(pageName, title, titleImage);
- setDescription(description);
- }
- /**
- * Creates a new checkbox instance and sets the default layout data.
- *
- * @param group the composite in which to create the checkbox
- * @param label the string to set into the checkbox
- * @return the new checkbox
- */
- protected Button createCheckBox(Composite group, String label) {
- Button button = new Button(group, SWT.CHECK | SWT.LEFT);
- button.setText(label);
- GridData data = new GridData();
- data.horizontalSpan = 2;
- button.setLayoutData(data);
- return button;
- }
- /**
- * Utility method that creates a combo box
- *
- * @param parent the parent for the new label
- * @return the new widget
- */
- protected Combo createCombo(Composite parent) {
- Combo combo = new Combo(parent, SWT.READ_ONLY);
- GridData data = new GridData(GridData.FILL_HORIZONTAL);
- data.widthHint = IDialogConstants.ENTRY_FIELD_WIDTH;
- combo.setLayoutData(data);
- return combo;
- }
- /**
- * Creates composite control and sets the default layout data.
- * @param parent the parent of the new composite
- * @param numColumns the number of columns for the new composite
- * @param grabExcess TODO
- *
- * @return the newly-created coposite
- */
- protected Composite createComposite(Composite parent, int numColumns, boolean grabExcess) {
- final Composite composite = new Composite(parent, SWT.NULL);
- composite.setLayout(new GridLayout(numColumns, false));
- composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));
- return composite;
- }
-
- /**
- * Utility method that creates a label instance
- * and sets the default layout data.
- *
- * @param parent the parent for the new label
- * @param text the text for the new label
- * @return the new label
- */
- public static Label createLabel(Composite parent, String text) {
- return createIndentedLabel(parent, text, 0);
- }
- /**
- * Utility method that creates a label instance indented by the specified
- * number of pixels and sets the default layout data.
- *
- * @param parent the parent for the new label
- * @param text the text for the new label
- * @param indent the indent in pixels, or 0 for none
- * @return the new label
- */
- public static Label createIndentedLabel(Composite parent, String text, int indent) {
- Label label = new Label(parent, SWT.LEFT);
- label.setText(text);
- GridData data = new GridData();
- data.horizontalSpan = 1;
- data.horizontalAlignment = GridData.FILL;
- data.horizontalIndent = indent;
- label.setLayoutData(data);
- return label;
- }
- /**
- * Utility method that creates a label instance with word wrap and sets
- * the default layout data.
- *
- * @param parent the parent for the new label
- * @param text the text for the new label
- * @param indent the indent in pixels, or 0 for none
- * @param widthHint the nominal width of the label
- * @return the new label
- */
- protected Label createWrappingLabel(Composite parent, String text, int indent) {
- return createWrappingLabel(parent, text, indent, 1);
- }
-
- protected Label createWrappingLabel(Composite parent, String text, int indent, int horizontalSpan) {
- Label label = new Label(parent, SWT.LEFT | SWT.WRAP);
- label.setText(text);
- GridData data = new GridData(SWT.FILL, SWT.BEGINNING, true, false);
- data.horizontalIndent = indent;
- data.horizontalSpan = horizontalSpan;
- data.widthHint = LABEL_WIDTH_HINT;
- label.setLayoutData(data);
- return label;
- }
-
- /**
- * Create a text field specific for this application
- *
- * @param parent the parent of the new text field
- * @return the new text field
- */
- static public Text createTextField(Composite parent) {
- Text text = new Text(parent, SWT.SINGLE | SWT.BORDER);
- return layoutTextField(text);
- }
- /**
- * Create a password field specific for this application
- *
- * @param parent the parent of the new text field
- * @return the new text field
- */
- static public Text createPasswordField(Composite parent) {
- Text text = new Text(parent, SWT.SINGLE | SWT.BORDER | SWT.PASSWORD);
- return layoutTextField(text);
- }
- /**
- * Layout a text or password field specific for this application
- *
- * @param parent the parent of the new text field
- * @return the new text field
- */
- static public Text layoutTextField(Text text) {
- GridData data = new GridData(GridData.FILL_HORIZONTAL);
- data.verticalAlignment = GridData.CENTER;
- data.grabExcessVerticalSpace = false;
- data.widthHint = IDialogConstants.ENTRY_FIELD_WIDTH;
- text.setLayoutData(data);
- return text;
- }
-
- /**
- * Utility method to create a radio button
- *
- * @param parent the parent of the radio button
- * @param label the label of the radio button
- * @param span the number of columns to span
- * @return the created radio button
- */
- protected Button createRadioButton(Composite parent, String label, int span) {
- Button button = new Button(parent, SWT.RADIO);
- button.setText(label);
- GridData data = new GridData();
- data.horizontalSpan = span;
- button.setLayoutData(data);
- return button;
- }
- /**
- * Utility method to create a full width separator preceeded by a blank space
- *
- * @param parent the parent of the separator
- * @param verticalSpace the vertical whitespace to insert before the label
- */
- protected void createSeparator(Composite parent, int verticalSpace) {
- // space
- Label label = new Label(parent, SWT.NONE);
- GridData data = new GridData();
- data.heightHint = verticalSpace;
- label.setLayoutData(data);
- // separator
- label = new Label(parent, SWT.SEPARATOR | SWT.HORIZONTAL);
- data = new GridData(GridData.FILL_HORIZONTAL);
- label.setLayoutData(data);
- }
-
- /**
- * Creates a ListViewer whose input is an array of IFiles.
- *
- * @param parent the parent of the viewer
- * @param title the text for the title label
- * @param heightHint the nominal height of the list
- * @return the created list viewer
- */
- public ListViewer createFileListViewer(Composite parent, String title, int heightHint) {
- createLabel(parent, title);
- ListViewer listViewer = new ListViewer(parent, SWT.READ_ONLY | SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER);
- listViewer.setContentProvider(new IStructuredContentProvider() {
- public Object[] getElements(Object inputElement) {
- return (Object[]) inputElement;
- }
- public void dispose() {
- }
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
- }
- });
- listViewer.setLabelProvider(new LabelProvider() {
- public String getText(Object element) {
- return ((IFile) element).getFullPath().toString();
- }
- });
- listViewer.setSorter(new WorkbenchViewerSorter());
-
- GridData data = new GridData(GridData.FILL_BOTH);
- data.heightHint = heightHint;
- listViewer.getList().setLayoutData(data);
- return listViewer;
- }
-
- protected TreeViewer createResourceSelectionTree(Composite composite, int types, int span) {
- TreeViewer tree = new TreeViewer(composite, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
- tree.setUseHashlookup(true);
- tree.setContentProvider(getResourceProvider(types));
- tree.setLabelProvider(
- new DecoratingLabelProvider(
- new WorkbenchLabelProvider(),
- CVSUIPlugin.getPlugin().getWorkbench().getDecoratorManager().getLabelDecorator()));
- tree.setSorter(new ResourceSorter(ResourceSorter.NAME));
-
- GridData data = new GridData(GridData.FILL_BOTH | GridData.GRAB_VERTICAL);
- data.heightHint = LIST_HEIGHT_HINT;
- data.horizontalSpan = span;
- tree.getControl().setLayoutData(data);
- return tree;
- }
-
- /**
- * Returns a content provider for IResource
s that returns
- * only children of the given resource type.
- */
- protected ITreeContentProvider getResourceProvider(final int resourceType) {
- return new WorkbenchContentProvider() {
- public Object[] getChildren(Object o) {
- if (o instanceof IContainer) {
- IResource[] members = null;
- try {
- members = ((IContainer)o).members();
- } catch (CoreException e) {
- //just return an empty set of children
- return new Object[0];
- }
-
- //filter out the desired resource types
- ArrayList results = new ArrayList();
- for (int i = 0; i < members.length; i++) {
- //And the test bits with the resource types to see if they are what we want
- if ((members[i].getType() & resourceType) > 0) {
- results.add(members[i]);
- }
- }
- return results.toArray();
- } else {
- return super.getChildren(o);
- }
- }
- };
- }
-
- protected RepositoryManager getRepositoryManager() {
- return CVSUIPlugin.getPlugin().getRepositoryManager();
- }
-
- protected ICVSWizard getCVSWizard() {
- if (wizard != null) {
- return wizard;
- }
- IWizard wizard = getWizard();
- if (wizard instanceof ICVSWizard) {
- // This is the method that is invoked when the next button is pressed
- // Hence, assume that the page s about to be shown
- return ((ICVSWizard)wizard);
- }
- return null;
- }
-
- public void setCVSWizard(ICVSWizard wizard) {
- this.wizard = wizard;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.wizard.WizardPage#getNextPage()
- */
- public IWizardPage getNextPage() {
- ICVSWizard w = getCVSWizard();
- if (w != null) {
- // This is the method that is invoked when the next button is pressed
- // Hence, assume that the page s about to be shown
- return w.getNextPage(this, true /* about to show */);
- }
- return super.getNextPage();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.wizard.WizardPage#canFlipToNextPage()
- */
- public boolean canFlipToNextPage() {
- ICVSWizard w = getCVSWizard();
- if (w != null) {
- return isPageComplete() &&
- w.getNextPage(this, false /* about to show */) != null;
- }
- return super.canFlipToNextPage();
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CheckoutAsLocationSelectionPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CheckoutAsLocationSelectionPage.java
deleted file mode 100644
index 4cfe29bf4..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CheckoutAsLocationSelectionPage.java
+++ /dev/null
@@ -1,316 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.wizards;
-
-import java.io.File;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.*;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.*;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.team.internal.ccvs.core.ICVSRemoteFolder;
-import org.eclipse.team.internal.ccvs.ui.IHelpContextIds;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.ui.help.WorkbenchHelp;
-
-/**
- * @author Administrator
- *
- * To change the template for this generated type comment go to
- * Window>Preferences>Java>Code Generation>Code and Comments
- */
-public class CheckoutAsLocationSelectionPage extends CVSWizardPage {
-
- public static final String NAME = "CheckoutAsLocationSelectionPage"; //$NON-NLS-1$
-
- private Button browseButton;
- private Text locationPathField;
- private Label locationLabel;
- private boolean useDefaults = true;
- private ICVSRemoteFolder[] remoteFolders;
- private String targetLocation;
- private IProject singleProject;
-
- // constants
- private static final int SIZING_TEXT_FIELD_WIDTH = 250;
-
- /**
- * @param pageName
- * @param title
- * @param titleImage
- * @param description
- */
- public CheckoutAsLocationSelectionPage(ImageDescriptor titleImage, ICVSRemoteFolder[] remoteFolders) {
- super(NAME, Policy.bind("CheckoutAsLocationSelectionPage.title"), titleImage, Policy.bind("CheckoutAsLocationSelectionPage.description")); //$NON-NLS-1$ //$NON-NLS-2$
- this.remoteFolders = remoteFolders;
- }
-
- /**
- * @return
- */
- private boolean isSingleFolder() {
- return remoteFolders.length == 1;
- }
-
- /**
- * @param string
- */
- public void setProject(IProject project) {
- singleProject = project;
- }
-
- /**
- * @param string
- */
- public void setProjectName(String string) {
- if (string == null || string.equals(".")) return; //$NON-NLS-1$
- if (singleProject != null && singleProject.getName().equals(string)) return;
- setProject(ResourcesPlugin.getWorkspace().getRoot().getProject(string));
- }
-
- private IProject getSingleProject() {
- if (singleProject == null) {
- setProjectName(remoteFolders[0].getName());
- }
- return singleProject;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
- */
- public void createControl(Composite parent) {
- Composite composite= createComposite(parent, 1, false);
- setControl(composite);
- // required in order to use setButtonLayoutData
- initializeDialogUnits(composite);
-
- WorkbenchHelp.setHelp(composite, IHelpContextIds.CHECKOUT_LOCATION_SELECTION_PAGE);
-
- final Button useDefaultsButton =
- new Button(composite, SWT.CHECK | SWT.RIGHT);
- useDefaultsButton.setText(Policy.bind("CheckoutAsLocationSelectionPage.useDefaultLabel")); //$NON-NLS-1$
- useDefaultsButton.setSelection(this.useDefaults);
-
- createUserSpecifiedProjectLocationGroup(composite, !this.useDefaults);
-
- SelectionListener listener = new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- useDefaults = useDefaultsButton.getSelection();
- browseButton.setEnabled(!useDefaults);
- locationPathField.setEnabled(!useDefaults);
- locationLabel.setEnabled(!useDefaults);
- setLocationForSelection(true);
- setErrorMessage(useDefaults ? null : checkValidLocation());
- }
- };
- useDefaultsButton.addSelectionListener(listener);
- Dialog.applyDialogFont(parent);
- }
-
- /**
- * Creates the project location specification controls.
- *
- * @return the parent of the widgets created
- * @param projectGroup the parent composite
- * @param enabled - sets the initial enabled state of the widgets
- */
- private Composite createUserSpecifiedProjectLocationGroup(Composite parent, boolean enabled) {
-
- // This group needs 3 columns
- Composite projectGroup = createComposite(parent, 3, false);
-
- // location label
- locationLabel = new Label(projectGroup, SWT.NONE);
- if (isSingleFolder()) {
- locationLabel.setText(Policy.bind("CheckoutAsLocationSelectionPage.locationLabel")); //$NON-NLS-1$
- } else {
- locationLabel.setText(Policy.bind("CheckoutAsLocationSelectionPage.parentDirectoryLabel")); //$NON-NLS-1$
- }
- locationLabel.setEnabled(enabled);
-
- // project location entry field
- locationPathField = new Text(projectGroup, SWT.BORDER);
- GridData data = new GridData(GridData.FILL_HORIZONTAL);
- data.widthHint = SIZING_TEXT_FIELD_WIDTH;
- locationPathField.setLayoutData(data);
- locationPathField.setEnabled(enabled);
-
- // browse button
- this.browseButton = new Button(projectGroup, SWT.PUSH);
- this.browseButton.setText(Policy.bind("CheckoutAsLocationSelectionPage.browseLabel")); //$NON-NLS-1$
- this.browseButton.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent event) {
- handleLocationBrowseButtonPressed();
- }
- });
- this.browseButton.setEnabled(enabled);
- setButtonLayoutData(this.browseButton);
-
- // Set the initial value first before listener
- // to avoid handling an event during the creation.
- setLocationForSelection(true);
- locationPathField.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- setErrorMessage(checkValidLocation());
- }
- });
- return projectGroup;
- }
-
- /**
- * Check if the entry in the widget location is valid. If it is valid return null. Otherwise
- * return a string that indicates the problem.
- */
- private String checkValidLocation() {
-
- if (useDefaults) {
- targetLocation = null;
- return null;
- } else {
- targetLocation = locationPathField.getText();
- if (targetLocation.equals("")) {//$NON-NLS-1$
- return(Policy.bind("CheckoutAsLocationSelectionPage.locationEmpty")); //$NON-NLS-1$
- }
- else{
- IPath path = new Path("");//$NON-NLS-1$
- if (!path.isValidPath(targetLocation)) {
- return Policy.bind("CheckoutAsLocationSelectionPage.invalidLocation"); //$NON-NLS-1$
- }
- }
-
- if (isSingleFolder()) {
- IStatus locationStatus =
- ResourcesPlugin.getWorkspace().validateProjectLocation(
- getSingleProject(),
- new Path(targetLocation));
-
- if (!locationStatus.isOK())
- return locationStatus.getMessage();
- } else {
- for (int i = 0; i < remoteFolders.length; i++) {
- String projectName = remoteFolders[i].getName();
- IStatus locationStatus = ResourcesPlugin.getWorkspace().validateProjectLocation(
- ResourcesPlugin.getWorkspace().getRoot().getProject(projectName),
- new Path(targetLocation).append(projectName));
- if (!locationStatus.isOK())
- return locationStatus.getMessage();
- }
- }
-
- return null;
- }
- }
-
- /**
- * Set the location to the default location if we are set to useDefaults.
- */
- private void setLocationForSelection(boolean changed) {
- if (useDefaults) {
- IPath defaultPath = null;
- if (isSingleFolder()) {
- IProject singleProject = getSingleProject();
- if (singleProject != null) {
- try {
- defaultPath = singleProject.getDescription().getLocation();
- } catch (CoreException e) {
- // ignore
- }
- if (defaultPath == null) {
- defaultPath = Platform.getLocation().append(singleProject.getName());
- }
- }
- } else {
- defaultPath = Platform.getLocation();
- }
- if (defaultPath != null) {
- locationPathField.setText(defaultPath.toOSString());
- }
- targetLocation = null;
- } else if (changed) {
- IPath location = null;
- IProject project = getSingleProject();
- if (project != null) {
- try {
- location = project.getDescription().getLocation();
- } catch (CoreException e) {
- // ignore the exception
- }
- }
- if (location == null) {
- targetLocation = null;
- locationPathField.setText(""); //$NON-NLS-1$
- } else {
- if (isSingleFolder()) {
- targetLocation = location.toOSString();
- } else {
- targetLocation = location.removeLastSegments(1).toOSString();
- }
- locationPathField.setText(targetLocation);
- }
- }
- }
-
- /**
- * Open an appropriate directory browser
- */
- private void handleLocationBrowseButtonPressed() {
- DirectoryDialog dialog = new DirectoryDialog(locationPathField.getShell());
- if (isSingleFolder()) {
- dialog.setMessage(Policy.bind("CheckoutAsLocationSelectionPage.messageForSingle", getSingleProject().getName())); //$NON-NLS-1$
- } else {
- dialog.setMessage(Policy.bind("CheckoutAsLocationSelectionPage.messageForMulti", new Integer(remoteFolders.length).toString())); //$NON-NLS-1$
- }
-
- String dirName = locationPathField.getText();
- if (!dirName.equals("")) {//$NON-NLS-1$
- File path = new File(dirName);
- if (path.exists())
- dialog.setFilterPath(dirName);
- }
-
- String selectedDirectory = dialog.open();
- if (selectedDirectory != null) {
- if (isSingleFolder()) {
- locationPathField.setText(new Path(selectedDirectory).append(getSingleProject().getName()).toOSString());
- } else {
- locationPathField.setText(new Path(selectedDirectory).toOSString());
- }
- }
- targetLocation = locationPathField.getText();
- }
-
- /**
- * Return the custom location for a single project. In this case, the specified
- * location is used as the location of the project.
- *
- * @param project
- * @return
- */
- public String getTargetLocation() {
- if (isCustomLocationSpecified())
- return targetLocation;
- else
- return null;
- }
-
- /**
- * @return
- */
- private boolean isCustomLocationSpecified() {
- return !useDefaults;
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CheckoutAsMainPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CheckoutAsMainPage.java
deleted file mode 100644
index 2bf436d1d..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CheckoutAsMainPage.java
+++ /dev/null
@@ -1,233 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.wizards;
-
-import org.eclipse.core.resources.*;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.*;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.team.internal.ccvs.core.ICVSRemoteFolder;
-import org.eclipse.team.internal.ccvs.ui.IHelpContextIds;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.ui.help.WorkbenchHelp;
-
-/**
- * This is the main page of the Check Out As wizard. It allows the user to specify
- * whether they want to check out the remote folder(s) as project(s) or into an
- * existing project. For single project checkout, the page will also allow the user to
- * choose whether to configure the new project (if it is missing a .project file).
- */
-public class CheckoutAsMainPage extends CVSWizardPage {
-
- private String newProjectName;
- private boolean allowProjectConfiguration;
- private Button intoProjectButton;
- private Button simpleProjectButton;
- private Button configuredProjectButton;
- private Text projectNameField;
- private ICVSRemoteFolder[] folders;
-
- public static final String NAME = "CheckoutAsMainPage"; //$NON-NLS-1$
-
- /**
- * @param pageName
- * @param title
- * @param titleImage
- * @param description
- */
- public CheckoutAsMainPage(ImageDescriptor titleImage, ICVSRemoteFolder[] folders, boolean allowProjectConfiguration) {
- super(NAME, Policy.bind("CheckoutAsMainPage.title"), titleImage, Policy.bind("CheckoutAsMainPage.description")); //$NON-NLS-1$ //$NON-NLS-2$
- this.folders = folders;
- this.allowProjectConfiguration = allowProjectConfiguration;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
- */
- public void createControl(Composite parent) {
-
- Composite composite = createComposite(parent, 1, false);
- setControl(composite);
-
- WorkbenchHelp.setHelp(composite, IHelpContextIds.CHECKOUT_CONFIGURATION_PAGE);
-
- if (isSingleFolder()) {
- createSingleFolderArea(composite);
- } else {
- createMultipleFoldersArea(composite);
- }
-
- updateEnablements();
- Dialog.applyDialogFont(parent);
- }
-
- /*
- * Is the input to the wizard a single folder or multiple folders
- */
- private boolean isSingleFolder() {
- return folders.length == 1;
- }
-
- /*
- * For the single folder case, return the name of the folder
- */
- private String getFolderName() {
- String name = folders[0].getName();
- if (name .equals(".")) { //$NON-NLS-1$
- name = new Path(null, folders[0].getRepository().getRootDirectory()).lastSegment();
- }
- return name;
- }
-
- /*
- * Create the page contents for a single folder checkout
- */
- private void createSingleFolderArea(Composite composite) {
- createLabel(composite, Policy.bind("CheckoutAsMainPage.singleFolder", getFolderName())); //$NON-NLS-1$
- configuredProjectButton = createRadioButton(composite, Policy.bind("CheckoutAsMainPage.asConfiguredProject"), 1); //$NON-NLS-1$
- if (!allowProjectConfiguration) {
- configuredProjectButton.setEnabled(false);
- Label configuredLabel = createWrappingLabel(composite, Policy.bind("CheckoutAsMainPage.10"), 5); //$NON-NLS-1$
- configuredLabel.setEnabled(false);
- }
- createCheckoutAsProjectRadioArea(composite);
- createCheckoutIntoRadioArea(composite);
- if (allowProjectConfiguration) {
- configuredProjectButton.setSelection(true);
- } else {
- simpleProjectButton.setSelection(true);
- }
- }
-
- /*
- * Create the page contents for a multiple folder checkout
- */
- private void createMultipleFoldersArea(Composite composite) {
- createLabel(composite, Policy.bind("CheckoutAsMainPage.multipleFolders", new Integer(folders.length).toString())); //$NON-NLS-1$
- createCheckoutAsProjectRadioArea(composite);
- createCheckoutIntoRadioArea(composite);
- simpleProjectButton.setSelection(true);
- }
-
- /**
- * @param composite
- */
- private void createCheckoutAsProjectRadioArea(Composite composite) {
- if (isSingleFolder()) {
- simpleProjectButton = createRadioButton(composite, Policy.bind("CheckoutAsMainPage.asSimpleProject"), 1); //$NON-NLS-1$
- createProjectNameGroup(composite);
- } else {
- simpleProjectButton = createRadioButton(composite, Policy.bind("CheckoutAsMainPage.asProjects"), 1); //$NON-NLS-1$
- }
- }
-
- /**
- * @param composite
- */
- private void createCheckoutIntoRadioArea(Composite composite) {
- intoProjectButton = createRadioButton(composite, Policy.bind("CheckoutAsMainPage.intoProject"), 1); //$NON-NLS-1$
- }
-
- /**
- * Creates the project name specification controls.
- *
- * @param parent the parent composite
- */
- private void createProjectNameGroup(Composite parent) {
- // project specification group
- Composite projectGroup = new Composite(parent,SWT.NONE);
- GridLayout layout = new GridLayout();
- layout.numColumns = 2;
- projectGroup.setLayout(layout);
- projectGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
- // new project label
- Label projectLabel = new Label(projectGroup,SWT.NONE);
- projectLabel.setText(Policy.bind("CheckoutAsMainPage.projectNameLabel")); //$NON-NLS-1$
-
- // new project name entry field
- projectNameField = new Text(projectGroup, SWT.BORDER);
- GridData data = new GridData(GridData.FILL_HORIZONTAL);
- projectNameField.setLayoutData(data);
-
- // Set the initial value first before listener
- // to avoid handling an event during the creation.
- newProjectName = getFolderName();
- projectNameField.setText(newProjectName);
- projectNameField.selectAll();
-
- // Set the listener to capture modify events
- projectNameField.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- updateEnablements();
- }
- });
- }
-
- /**
- * Check if the entries in the widget are valid. If they are return null otherwise
- * return a string that indicates the problem.
- */
- private void updateEnablements() {
-
- if (projectNameField != null) {
- projectNameField.setEnabled(simpleProjectButton.getSelection());
- if (projectNameField.isEnabled()) {
- newProjectName = this.projectNameField.getText();
- IWorkspace workspace = ResourcesPlugin.getWorkspace();
- IStatus nameStatus = workspace.validateName(newProjectName, IResource.PROJECT);
- if (!nameStatus.isOK()) {
- setErrorMessage(nameStatus.getMessage());
- setPageComplete(false);
- }
- }
- }
- setErrorMessage(null);
- setPageComplete(true);
- }
-
- public String getProjectName() {
- if (isSingleFolder() && simpleProjectButton.getSelection()) return newProjectName;
- return null;
- }
-
- public boolean isPerformConfigure() {
- if (configuredProjectButton == null) return false;
- return configuredProjectButton.getSelection();
- }
-
- public boolean isPerformCheckoutInto() {
- return intoProjectButton.getSelection();
- }
-
- public boolean isPerformCheckoutAs() {
- return simpleProjectButton.getSelection();
- }
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.wizards.CVSWizardPage#createRadioButton(org.eclipse.swt.widgets.Composite, java.lang.String, int)
- */
- protected Button createRadioButton(Composite parent, String label, int span) {
- Button radio = super.createRadioButton(parent, label, span);
- radio.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- updateEnablements();
- }
- });
- return radio;
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CheckoutAsProjectSelectionPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CheckoutAsProjectSelectionPage.java
deleted file mode 100644
index 2b58b1c97..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CheckoutAsProjectSelectionPage.java
+++ /dev/null
@@ -1,272 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.wizards;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.resources.*;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.*;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.team.core.RepositoryProvider;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot;
-import org.eclipse.team.internal.ccvs.core.syncinfo.FolderSyncInfo;
-import org.eclipse.team.internal.ccvs.ui.*;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.ui.help.WorkbenchHelp;
-
-/**
- * This page allows the user to select the target parent container for
- * the folders being checked out.
- */
-public class CheckoutAsProjectSelectionPage extends CVSWizardPage {
-
- public static final String NAME = "CheckoutAsProjectSelectionPage"; //$NON-NLS-1$
-
- private TreeViewer tree;
- private Text nameField;
- private Combo filterList;
- private Button recurseCheck;
-
- private IResource selection;
- private ICVSRemoteFolder[] remoteFolders;
- private String folderName;
- private boolean recurse;
- private int filter;
-
- /**
- * Constructor for CheckoutIntoProjectSelectionPage.
- * @param pageName
- * @param title
- * @param titleImage
- */
- public CheckoutAsProjectSelectionPage(ImageDescriptor titleImage, ICVSRemoteFolder[] remoteFolders) {
- super(NAME, Policy.bind("CheckoutAsProjectSelectionPage.title"), titleImage, Policy.bind("CheckoutAsProjectSelectionPage.description")); //$NON-NLS-1$ //$NON-NLS-2$
- this.remoteFolders = remoteFolders;
- }
-
- /**
- * @return
- */
- private boolean isSingleFolder() {
- return remoteFolders.length == 1;
- }
-
- /*
- * For the single folder case, return the name of the folder
- */
- private String getInputFolderName() {
- return remoteFolders[0].getName();
- }
-
- private String getRepository() throws CVSException {
- return remoteFolders[0].getFolderSyncInfo().getRoot();
- }
-
- /**
- * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
- */
- public void createControl(Composite parent) {
- Composite composite= createComposite(parent, 2, false);
- setControl(composite);
-
- WorkbenchHelp.setHelp(composite, IHelpContextIds.CHECKOUT_PROJECT_SELECTION_PAGE);
-
- if (isSingleFolder()) {
- createLabel(composite, Policy.bind("CheckoutAsProjectSelectionPage.name")); //$NON-NLS-1$
- nameField = createTextField(composite);
- nameField.addListener(SWT.Modify, new Listener() {
- public void handleEvent(Event event) {
- folderName = nameField.getText();
- updateWidgetEnablements();
- }
- });
- }
-
- createWrappingLabel(composite, Policy.bind("CheckoutAsProjectSelectionPage.treeLabel"), 0, 2); //$NON-NLS-1$
-
- tree = createResourceSelectionTree(composite, IResource.PROJECT | IResource.FOLDER, 2 /* horizontal span */);
- tree.addSelectionChangedListener(new ISelectionChangedListener() {
- public void selectionChanged(SelectionChangedEvent event) {
- handleResourceSelection(event);
- }
- });
-
- Composite filterComposite = createComposite(composite, 2, false);
- GridData data = new GridData();
- data.verticalAlignment = GridData.FILL;
- data.horizontalAlignment = GridData.FILL;
- data.horizontalSpan = 2;
- filterComposite.setLayoutData(data);
- createLabel(filterComposite, Policy.bind("CheckoutAsProjectSelectionPage.showLabel")); //$NON-NLS-1$
- filterList = createCombo(filterComposite);
- filterList.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- handleFilterSelection();
- }
- });
-
- createWrappingLabel(composite, "", 0, 2); //$NON-NLS-1$
-
- // Should subfolders of the folder be checked out?
- recurseCheck = createCheckBox(composite, Policy.bind("CheckoutAsProjectSelectionPage.recurse")); //$NON-NLS-1$
- recurseCheck.addListener(SWT.Selection, new Listener() {
- public void handleEvent(Event event) {
- recurse = recurseCheck.getSelection();
- updateWidgetEnablements();
- }
- });
-
- initializeValues();
- updateWidgetEnablements();
- tree.getControl().setFocus();
- Dialog.applyDialogFont(parent);
- }
-
- /**
- * Method initializeValues.
- */
- private void initializeValues() {
- if (isSingleFolder()) {
- nameField.setText(getInputFolderName());
- }
- tree.setInput(ResourcesPlugin.getWorkspace().getRoot());
- recurse = true;
- recurseCheck.setSelection(recurse);
- filter = 0;
- updateTreeContents(filter);
- filterList.add(Policy.bind("CheckoutAsProjectSelectionPage.showAll")); //$NON-NLS-1$
- filterList.add(Policy.bind("CheckoutAsProjectSelectionPage.showUnshared")); //$NON-NLS-1$
- filterList.add(Policy.bind("CheckoutAsProjectSelectionPage.showSameRepo")); //$NON-NLS-1$
- filterList.select(filter);
- }
-
- private void handleResourceSelection(SelectionChangedEvent event) {
- ISelection sel = event.getSelection();
- if (sel.isEmpty()) {
- this.selection = null;
- } else if (sel instanceof IStructuredSelection) {
- this.selection = (IResource)((IStructuredSelection)sel).getFirstElement();
- }
- updateWidgetEnablements();
- }
-
- /**
- * Method updateWidgetEnablement.
- */
- private void updateWidgetEnablements() {
- if (isSingleFolder() && !Path.EMPTY.isValidSegment(folderName)) {
- setPageComplete(false);
- setErrorMessage(Policy.bind("CheckoutAsProjectSelectionPage.invalidFolderName", folderName)); //$NON-NLS-1$
- return;
- }
- boolean complete = selection != null && selection.getType() != IResource.FILE;
- setErrorMessage(null);
- setPageComplete(complete);
- }
-
- /**
- * Returns the selection.
- * @return IResource
- */
- public IResource getSelection() {
- return selection;
- }
-
- /**
- * Returns the folderName.
- * @return String
- */
- public String getFolderName() {
- return folderName;
- }
-
- private void updateTreeContents(int selected) {
- try {
- if (selected == 0) {
- tree.setInput(new AdaptableResourceList(getProjects(getRepository(), true)));
- } else if (selected == 1) {
- tree.setInput(new AdaptableResourceList(getProjects(null, true)));
- } else if (selected == 2) {
- tree.setInput(new AdaptableResourceList(getProjects(getRepository(), false)));
- }
- } catch (CVSException e) {
- CVSUIPlugin.log(e);
- }
- }
-
- /**
- * Method getValidTargetProjects returns the set of projects that match the provided criteria.
- * @return IResource
- */
- private IProject[] getProjects(String root, boolean unshared) throws CVSException {
- List validTargets = new ArrayList();
- try {
- IResource[] projects = ResourcesPlugin.getWorkspace().getRoot().members();
- for (int i = 0; i < projects.length; i++) {
- IResource resource = projects[i];
- if (resource instanceof IProject) {
- IProject project = (IProject) resource;
- if (project.isAccessible()) {
- RepositoryProvider provider = RepositoryProvider.getProvider(project);
- if (provider == null && unshared) {
- validTargets.add(project);
- } else if (provider != null && provider.getID().equals(CVSProviderPlugin.getTypeId())) {
- ICVSFolder cvsFolder = CVSWorkspaceRoot.getCVSFolderFor(project);
- FolderSyncInfo info = cvsFolder.getFolderSyncInfo();
- if (root != null && info != null && root.equals(info.getRoot())) {
- validTargets.add(project);
- }
- }
- }
- }
- }
- } catch (CoreException e) {
- throw CVSException.wrapException(e);
- }
- return (IProject[]) validTargets.toArray(new IProject[validTargets.size()]);
- }
-
- public IContainer getLocalFolder() {
- if (Path.EMPTY.isValidSegment(folderName)) {
- return ((IContainer)getSelection()).getFolder(new Path(null, folderName));
- } else {
- return null;
- }
- }
-
- public IContainer getParentFolder() {
- return ((IContainer)getSelection());
- }
-
- /**
- * Returns the recurse.
- * @return boolean
- */
- public boolean isRecurse() {
- return recurse;
- }
-
- private void handleFilterSelection() {
- filter = filterList.getSelectionIndex();
- updateTreeContents(filter);
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CheckoutAsWizard.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CheckoutAsWizard.java
deleted file mode 100644
index 0dfe5a4db..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CheckoutAsWizard.java
+++ /dev/null
@@ -1,265 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.wizards;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.core.resources.*;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.wizard.IWizardPage;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.ui.*;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.operations.*;
-import org.eclipse.team.internal.ccvs.ui.tags.*;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.actions.NewProjectAction;
-
-/**
- * @author Administrator
- *
- * To change the template for this generated type comment go to
- * Window>Preferences>Java>Code Generation>Code and Comments
- */
-public class CheckoutAsWizard extends Wizard {
-
- private ICVSRemoteFolder[] remoteFolders;
- private boolean allowProjectConfiguration;
-
- private CheckoutAsMainPage mainPage;
- private CheckoutAsProjectSelectionPage projectSelectionPage;
- private CheckoutAsLocationSelectionPage locationSelectionPage;
- private TagSelectionWizardPage tagSelectionPage;
- private IWorkbenchPart part;
-
- class NewProjectListener implements IResourceChangeListener {
- private IProject newProject = null;
- /**
- * @see IResourceChangeListener#resourceChanged(IResourceChangeEvent)
- */
- public void resourceChanged(IResourceChangeEvent event) {
- IResourceDelta root = event.getDelta();
- IResourceDelta[] projectDeltas = root.getAffectedChildren();
- for (int i = 0; i < projectDeltas.length; i++) {
- IResourceDelta delta = projectDeltas[i];
- IResource resource = delta.getResource();
- if (delta.getKind() == IResourceDelta.ADDED) {
- newProject = (IProject)resource;
- }
- }
- }
- /**
- * Gets the newProject.
- * @return Returns a IProject
- */
- public IProject getNewProject() {
- return newProject;
- }
- }
-
- public CheckoutAsWizard(IWorkbenchPart part, ICVSRemoteFolder[] remoteFolders, boolean allowProjectConfiguration) {
- this.part = part;
- this.remoteFolders = remoteFolders;
- setWindowTitle(Policy.bind("CheckoutAsWizard.title")); //$NON-NLS-1$
- this.allowProjectConfiguration = allowProjectConfiguration;
- }
-
- /**
- * @see org.eclipse.jface.wizard.IWizard#addPages()
- */
- public void addPages() {
- setNeedsProgressMonitor(true);
- ImageDescriptor substImage = CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_WIZBAN_CHECKOUT);
-
- mainPage = new CheckoutAsMainPage(substImage, remoteFolders, allowProjectConfiguration);
- addPage(mainPage);
-
- projectSelectionPage = new CheckoutAsProjectSelectionPage(substImage, remoteFolders);
- addPage(projectSelectionPage);
-
- locationSelectionPage = new CheckoutAsLocationSelectionPage(substImage, remoteFolders);
- addPage(locationSelectionPage);
-
- tagSelectionPage = new TagSelectionWizardPage("tagPage", Policy.bind("CheckoutAsWizard.3"), substImage, Policy.bind("CheckoutAsWizard.4"), TagSource.create(remoteFolders), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- TagSelectionArea.INCLUDE_HEAD_TAG |
- TagSelectionArea.INCLUDE_BRANCHES |
- TagSelectionArea.INCLUDE_VERSIONS |
- TagSelectionArea.INCLUDE_DATES
- );
- if (remoteFolders.length > 0) {
- try {
- CVSTag selectedTag = remoteFolders[0].getFolderSyncInfo().getTag();
- tagSelectionPage.setSelection(selectedTag);
- } catch (CVSException e) {
- CVSUIPlugin.log(e);
- }
- }
- tagSelectionPage.setHelpContxtId(IHelpContextIds.CHECKOUT_TAG_SELETION_PAGE);
- addPage(tagSelectionPage);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.wizard.IWizard#performFinish()
- */
- public boolean performFinish() {
- try {
- if (mainPage.isPerformConfigure()) {
- return performConfigureAndCheckout();
- } else if (mainPage.isPerformCheckoutAs()) {
- if (isSingleFolder()) {
- return performSingleCheckoutAs();
- } else {
- return performMultipleCheckoutAs();
- }
- } else if (mainPage.isPerformCheckoutInto()) {
- return performCheckoutInto();
- }
- } catch (InvocationTargetException e) {
- handle(e);
- // drop through
- } catch (InterruptedException e) {
- // drop through
- }
- return false;
- }
-
- /**
- * @return
- */
- private boolean isSingleFolder() {
- return remoteFolders.length == 1;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.wizard.IWizard#canFinish()
- */
- public boolean canFinish() {
- return (mainPage.isPageComplete()
- && (mainPage.isPerformConfigure()
- || (mainPage.isPerformCheckoutInto() && projectSelectionPage.isPageComplete())
- || (mainPage.isPerformCheckoutAs() && locationSelectionPage.isPageComplete())));
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.wizard.IWizard#getNextPage(org.eclipse.jface.wizard.IWizardPage)
- */
- public IWizardPage getNextPage(IWizardPage page) {
- if (page == mainPage) {
- if (mainPage.isPerformConfigure()) return tagSelectionPage;
- if (mainPage.isPerformCheckoutInto()) return projectSelectionPage;
- if (mainPage.isPerformCheckoutAs()) {
- if (isSingleFolder()) {
- locationSelectionPage.setProjectName(mainPage.getProjectName());
- } else {
- locationSelectionPage.setProject(null);
- }
- return locationSelectionPage;
- }
- }
- // The tag selection page is always shown as the last page
- if (page != tagSelectionPage) {
- return tagSelectionPage;
- }
- return null;
- }
-
- private void handle(Throwable e) {
- CVSUIPlugin.openError(getShell(), Policy.bind("CheckoutAsWizard.error"), null, e); //$NON-NLS-1$
- }
-
- /*
- * Configure a local project and checkout the selected remote folder into the project.
- * This only occurs for single folders.
- */
- private boolean performConfigureAndCheckout() throws InvocationTargetException, InterruptedException {
- IProject newProject = getNewProject();
- if (newProject == null) return false;
- // Run the checkout in the background
- ICVSRemoteFolder folder = getRemoteFolder();
- new CheckoutSingleProjectOperation(part, folder, newProject, null, true).run();
- return true;
- }
-
- /*
- * Return the single remote folder to be checked out
- */
- private ICVSRemoteFolder getRemoteFolder() {
- ICVSRemoteFolder folder = remoteFolders[0];
- folder = (ICVSRemoteFolder)folder.forTag(getSelectedTag());
- return folder;
- }
-
- /*
- * Return the remote folders to be checked out
- */
- private ICVSRemoteFolder[] getRemoteFolders() {
- ICVSRemoteFolder[] folders = new ICVSRemoteFolder[remoteFolders.length];
- for (int i = 0; i < remoteFolders.length; i++) {
- ICVSRemoteFolder remote = remoteFolders[i];
- folders[i] = (ICVSRemoteFolder)remote.forTag(getSelectedTag());
- }
- return folders;
- }
-
- private CVSTag getSelectedTag() {
- return tagSelectionPage.getSelectedTag();
- }
-
- private boolean performSingleCheckoutAs() throws InvocationTargetException, InterruptedException {
- IProject newProject = ResourcesPlugin.getWorkspace().getRoot().getProject(mainPage.getProjectName());
- String targetLocation = locationSelectionPage.getTargetLocation();
- // Run the checkout in the background
- ICVSRemoteFolder folder = getRemoteFolder();
- new CheckoutSingleProjectOperation(part, folder, newProject, targetLocation, false).run();
- return true;
- }
-
- /**
- * Check out multiple folders to the workspace using a custom location if one is
- * specified.
- */
- private boolean performMultipleCheckoutAs() throws InvocationTargetException, InterruptedException {
- String targetLocation = locationSelectionPage.getTargetLocation();
- // Run the checkout in the background
- new CheckoutMultipleProjectsOperation(part, getRemoteFolders(), targetLocation).run();
- return true;
- }
-
- private boolean performCheckoutInto() throws InvocationTargetException, InterruptedException {
- CheckoutIntoOperation operation;
- boolean recursive = projectSelectionPage.isRecurse();
- if (isSingleFolder()) {
- ICVSRemoteFolder folder = getRemoteFolder();
- operation = new CheckoutIntoOperation(part, folder, projectSelectionPage.getLocalFolder(), recursive);
- } else {
- operation = new CheckoutIntoOperation(part, getRemoteFolders(), projectSelectionPage.getParentFolder(), recursive);
- }
- // Run the checkout in the background
- operation.run();
- return true;
- }
-
- /**
- * Get a new project that is configured by the new project wizard.
- * This is currently the only way to do this.
- */
- private IProject getNewProject() {
- NewProjectListener listener = new NewProjectListener();
- ResourcesPlugin.getWorkspace().addResourceChangeListener(listener, IResourceChangeEvent.POST_CHANGE);
- (new NewProjectAction(PlatformUI.getWorkbench().getActiveWorkbenchWindow())).run();
- ResourcesPlugin.getWorkspace().removeResourceChangeListener(listener);
- IProject project = listener.getNewProject();
- return project;
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CheckoutWizard.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CheckoutWizard.java
deleted file mode 100644
index 04bfdefe3..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CheckoutWizard.java
+++ /dev/null
@@ -1,287 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.wizards;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.wizard.IWizardPage;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.core.util.KnownRepositories;
-import org.eclipse.team.internal.ccvs.ui.*;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.operations.CheckoutMultipleProjectsOperation;
-import org.eclipse.team.internal.ccvs.ui.operations.HasProjectMetaFileOperation;
-import org.eclipse.ui.*;
-
-/**
- * Gathers all information necesary for a checkout from a repository.
- */
-public class CheckoutWizard extends Wizard implements ICVSWizard, INewWizard {
-
- private RepositorySelectionPage locationPage;
- private ConfigurationWizardMainPage createLocationPage;
- private ModuleSelectionPage modulePage;
- private CheckoutAsWizard wizard;
- private ICVSRepositoryLocation location;
- private boolean isNewLocation;
- private CVSWizardPage dummyPage;
-
- public CheckoutWizard() {
- setWindowTitle(Policy.bind("CheckoutWizard.0")); //$NON-NLS-1$
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.wizard.Wizard#addPages()
- */
- public void addPages() {
- setNeedsProgressMonitor(true);
-
- ImageDescriptor substImage = CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_WIZBAN_CHECKOUT);
-
- ICVSRepositoryLocation[] locations = CVSUIPlugin.getPlugin().getRepositoryManager().getKnownRepositoryLocations();
- if (locations.length > 0) {
- locationPage = new RepositorySelectionPage("locationSelection", Policy.bind("CheckoutWizard.7"), substImage); //$NON-NLS-1$ //$NON-NLS-2$
- locationPage.setDescription(Policy.bind("SharingWizard.importTitleDescription")); //$NON-NLS-1$
- locationPage.setExtendedDescription(Policy.bind("CheckoutWizard.8")); //$NON-NLS-1$
- addPage(locationPage);
- }
-
- createLocationPage = new ConfigurationWizardMainPage("createLocationPage", Policy.bind("SharingWizard.enterInformation"), substImage); //$NON-NLS-1$ //$NON-NLS-2$
- createLocationPage.setDescription(Policy.bind("SharingWizard.enterInformationDescription")); //$NON-NLS-1$
- addPage(createLocationPage);
- createLocationPage.setDialogSettings(NewLocationWizard.getLocationDialogSettings());
-
- modulePage = new ModuleSelectionPage("moduleSelection", Policy.bind("CheckoutWizard.10"), substImage); //$NON-NLS-1$ //$NON-NLS-2$
- modulePage.setDescription(Policy.bind("CheckoutWizard.11")); //$NON-NLS-1$
- modulePage.setHelpContxtId(IHelpContextIds.CHECKOUT_MODULE_SELECTION_PAGE);
- modulePage.setSupportsMultiSelection(true);
- addPage(modulePage);
-
- // Dummy page to allow lazy creation of CheckoutAsWizard
- dummyPage = new CVSWizardPage("dummyPage") { //$NON-NLS-1$
- public void createControl(Composite parent) {
- Composite composite = createComposite(parent, 1, false);
- setControl(composite);
- }
- };
- addPage(dummyPage);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.wizard.Wizard#canFinish()
- */
- public boolean canFinish() {
- return (wizard == null && getSelectedModules().length > 0) ||
- (wizard != null && wizard.canFinish());
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.wizard.IWizard#performFinish()
- */
- public boolean performFinish() {
- if (wizard != null) {
- // The finish of the child wizard will get called directly.
- // We only get here if it completed successfully
- if (isNewLocation) {
- KnownRepositories.getInstance().addRepository(location, true /* broadcast */);
- }
- return true;
- } else {
- try {
- new CheckoutMultipleProjectsOperation(getPart(), getSelectedModules(), null)
- .run();
- if (isNewLocation) {
- KnownRepositories.getInstance().addRepository(location, true /* broadcast */);
- }
- return true;
- } catch (InvocationTargetException e) {
- CVSUIPlugin.openError(getShell(), null, null, e);
- } catch (InterruptedException e) {
- // Cancelled. fall through.
- }
- return false;
- }
- }
-
- private IWorkbenchPart getPart() {
- // This wizard doesn't have a part
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.wizard.Wizard#performCancel()
- */
- public boolean performCancel() {
- if (location != null && isNewLocation) {
- KnownRepositories.getInstance().disposeRepository(location);
- location = null;
- }
- return wizard == null || wizard.performCancel();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.wizard.IWizard#getNextPage(org.eclipse.jface.wizard.IWizardPage)
- */
- public IWizardPage getNextPage(IWizardPage page) {
- // Assume the page is about to be shown when this method is
- // invoked
- return getNextPage(page, true /* about to show*/);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.internal.ccvs.ui.wizards.ICVSWizard#getNextPage(org.eclipse.jface.wizard.IWizardPage, boolean)
- */
- public IWizardPage getNextPage(IWizardPage page, boolean aboutToShow) {
- if (page == locationPage) {
- if (locationPage.getLocation() == null) {
- return createLocationPage;
- } else {
- if (aboutToShow) {
- try {
- modulePage.setLocation(getLocation());
- } catch (TeamException e1) {
- CVSUIPlugin.log(e1);
- }
- }
- return modulePage;
- }
- }
- if (page == createLocationPage) {
- if (aboutToShow) {
- try {
- ICVSRepositoryLocation l = getLocation();
- if (l != null) {
- modulePage.setLocation(l);
- }
- } catch (TeamException e1) {
- CVSUIPlugin.log(e1);
- }
- }
- return modulePage;
- }
- if (page == modulePage) {
- ICVSRemoteFolder[] selectedModules = getSelectedModules();
- if (selectedModules.length == 0) return null;
- for (int i = 0; i < selectedModules.length; i++) {
- ICVSRemoteFolder folder = selectedModules[i];
- if (folder.isDefinedModule()) {
- // No further configuration is possible for defined modules
- return null;
- }
- }
- if (aboutToShow) {
- try {
- boolean hasMetafile = true;
- if (selectedModules.length == 1) {
- // Only allow configuration if one module is selected
- hasMetafile = hasProjectMetafile(selectedModules[0]);
- }
- wizard = new CheckoutAsWizard(getPart(), selectedModules, ! hasMetafile /* allow configuration */);
- wizard.addPages();
- return wizard.getStartingPage();
- } catch (InvocationTargetException e) {
- // Show the error and fall through to return null as the next page
- CVSUIPlugin.openError(getShell(), null, null, e);
- } catch (InterruptedException e) {
- // Cancelled by user. Fall through and return null
- }
- return null;
- } else {
- if (wizard == null) {
- return dummyPage;
- } else {
- return wizard.getStartingPage();
- }
- }
- }
- if (wizard != null) {
- return wizard.getNextPage(page);
- }
- return null;
- }
-
- private boolean hasProjectMetafile(final ICVSRemoteFolder selectedModule) throws InvocationTargetException, InterruptedException {
- final boolean[] result = new boolean[] { true };
- getContainer().run(true, true, new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- HasProjectMetaFileOperation op = new HasProjectMetaFileOperation(getPart(), selectedModule);
- op.run(monitor);
- result[0] = op.metaFileExists();
- }
- });
- return result[0];
- }
-
- private ICVSRemoteFolder[] getSelectedModules() {
- if (modulePage == null) return null;
- return modulePage.getSelectedModules();
- }
-
- /**
- * Return an ICVSRepositoryLocation
- */
- private ICVSRepositoryLocation getLocation() throws TeamException {
- // If the location page has a location, use it.
- if (locationPage != null) {
- ICVSRepositoryLocation newLocation = locationPage.getLocation();
- if (newLocation != null) {
- return recordLocation(newLocation);
- }
- }
-
- // Otherwise, get the location from the create location page
- final ICVSRepositoryLocation[] locations = new ICVSRepositoryLocation[] { null };
- final CVSException[] exception = new CVSException[] { null };
- getShell().getDisplay().syncExec(new Runnable() {
- public void run() {
- try {
- locations[0] = createLocationPage.getLocation();
- } catch (CVSException e) {
- exception[0] = e;
- }
- }
- });
- if (exception[0] != null) {
- throw exception[0];
- }
- return recordLocation(locations[0]);
- }
-
- private ICVSRepositoryLocation recordLocation(ICVSRepositoryLocation newLocation) {
- if (newLocation == null) return location;
- if (location == null || !newLocation.equals(location)) {
- if (location != null && isNewLocation) {
- // Dispose of the previous location
- KnownRepositories.getInstance().disposeRepository(location);
- }
- location = newLocation;
- isNewLocation = !KnownRepositories.getInstance().isKnownRepository(newLocation.getLocation());
- if (isNewLocation) {
- // Add the location silently so we can work with it
- location = KnownRepositories.getInstance().addRepository(location, false /* silently */);
- }
- }
- return location;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.IWorkbenchWizard#init(org.eclipse.ui.IWorkbench, org.eclipse.jface.viewers.IStructuredSelection)
- */
- public void init(IWorkbench workbench, IStructuredSelection selection) {
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/ConfigurationWizardAutoconnectPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/ConfigurationWizardAutoconnectPage.java
deleted file mode 100644
index 072d36252..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/ConfigurationWizardAutoconnectPage.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.wizards;
-
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.ICVSFolder;
-import org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.internal.ccvs.core.connection.CVSRepositoryLocation;
-import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot;
-import org.eclipse.team.internal.ccvs.core.syncinfo.FolderSyncInfo;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.IHelpContextIds;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.ui.help.WorkbenchHelp;
-
-/**
- * This configuration page explains to the user that CVS/ directories already exists and
- * it will attach the selected project to the repository that is specified in the CVS/ files.
- *
- * This is useful for people who have checked out a project using command-line tools.
- */
-public class ConfigurationWizardAutoconnectPage extends CVSWizardPage {
- private boolean validate = true;
- private FolderSyncInfo info;
- ICVSRepositoryLocation location;
-
- public ConfigurationWizardAutoconnectPage(String pageName, String title, ImageDescriptor titleImage) {
- super(pageName, title, titleImage);
- }
-
- /*
- * @see IDialogPage#createControl(Composite)
- */
- public void createControl(Composite parent) {
- Composite composite = createComposite(parent, 2, false);
- setControl(composite);
-
- // set F1 help
- WorkbenchHelp.setHelp(composite, IHelpContextIds.SHARING_AUTOCONNECT_PAGE);
-
- Label description = new Label(composite, SWT.WRAP);
- GridData data = new GridData();
- data.horizontalSpan = 2;
- data.widthHint = 350;
- description.setLayoutData(data);
- description.setText(Policy.bind("ConfigurationWizardAutoconnectPage.description")); //$NON-NLS-1$
-
- if (location == null) return;
-
- // Spacer
- createLabel(composite, ""); //$NON-NLS-1$
- createLabel(composite, ""); //$NON-NLS-1$
-
- createLabel(composite, Policy.bind("ConfigurationWizardAutoconnectPage.user")); //$NON-NLS-1$
- createLabel(composite, location.getUsername());
- createLabel(composite, Policy.bind("ConfigurationWizardAutoconnectPage.host")); //$NON-NLS-1$
- createLabel(composite, location.getHost());
- createLabel(composite, Policy.bind("ConfigurationWizardAutoconnectPage.port")); //$NON-NLS-1$
- int port = location.getPort();
- if (port == ICVSRepositoryLocation.USE_DEFAULT_PORT) {
- createLabel(composite, Policy.bind("ConfigurationWizardAutoconnectPage.default")); //$NON-NLS-1$
- } else {
- createLabel(composite, "" + port); //$NON-NLS-1$
- }
- createLabel(composite, Policy.bind("ConfigurationWizardAutoconnectPage.connectionType")); //$NON-NLS-1$
- createLabel(composite, location.getMethod().getName());
- createLabel(composite, Policy.bind("ConfigurationWizardAutoconnectPage.repositoryPath")); //$NON-NLS-1$
- createLabel(composite, location.getRootDirectory());
- createLabel(composite, Policy.bind("ConfigurationWizardAutoconnectPage.module")); //$NON-NLS-1$
- createLabel(composite, info.getRepository());
-
- // Spacer
- createLabel(composite, ""); //$NON-NLS-1$
- createLabel(composite, ""); //$NON-NLS-1$
-
- final Button check = new Button(composite, SWT.CHECK);
- data = new GridData();
- data.horizontalSpan = 2;
- check.setText(Policy.bind("ConfigurationWizardAutoconnectPage.validate")); //$NON-NLS-1$
- check.addListener(SWT.Selection, new Listener() {
- public void handleEvent(Event event) {
- validate = check.getSelection();
- }
- });
- check.setSelection(true);
- Dialog.applyDialogFont(parent);
- }
-
- public FolderSyncInfo getFolderSyncInfo() {
- return info;
- }
- public boolean getValidate() {
- return validate;
- }
- public void setProject(IProject project) {
- try {
- ICVSFolder folder = (ICVSFolder)CVSWorkspaceRoot.getCVSResourceFor(project);
- info = folder.getFolderSyncInfo();
- if (info == null) {
- // This should never happen
- CVSUIPlugin.openError(null, Policy.bind("ConfigurationWizardAutoconnectPage.noSyncInfo"), Policy.bind("ConfigurationWizardAutoconnectPage.noCVSDirectory"), null); //$NON-NLS-1$ //$NON-NLS-2$
- return;
- }
- location = CVSRepositoryLocation.fromString(info.getRoot());
- } catch (TeamException e) {
- CVSUIPlugin.openError(null, null, null, e);
- }
- }
-
- public FolderSyncInfo getSharing() {
- return info;
- }
-
- /**
- * Gets the location.
- * @return Returns a ICVSRepositoryLocation
- */
- public ICVSRepositoryLocation getLocation() {
- return location;
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/ConfigurationWizardMainPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/ConfigurationWizardMainPage.java
deleted file mode 100644
index 24aa65f36..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/ConfigurationWizardMainPage.java
+++ /dev/null
@@ -1,616 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.wizards;
-
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Properties;
-
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.FontMetrics;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.layout.FillLayout;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Group;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-import org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.internal.ccvs.core.IConnectionMethod;
-import org.eclipse.team.internal.ccvs.core.connection.CVSRepositoryLocation;
-import org.eclipse.team.internal.ccvs.core.util.KnownRepositories;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.IHelpContextIds;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.ui.help.WorkbenchHelp;
-
-/**
- * Wizard page for entering information about a CVS repository location.
- */
-public class ConfigurationWizardMainPage extends CVSWizardPage {
- private boolean showValidate;
- private boolean validate;
-
- // Widgets
-
- // Connection Method
- private Combo connectionMethodCombo;
- // User
- private Combo userCombo;
- // Password
- private Text passwordText;
- // Port
- private Text portText;
- private Button useDefaultPort;
- private Button useCustomPort;
- // Host
- private Combo hostCombo;
- // Repository Path
- private Combo repositoryPathCombo;
- // Validation
- private Button validateButton;
- // Caching password
- private Button allowCachingButton;
- private boolean allowCaching = false;
-
- private static final int COMBO_HISTORY_LENGTH = 5;
-
- private Properties properties = null;
-
- // The previously created repository.
- // It is recorded when asked for and
- // nulled when the page is changed.
- private ICVSRepositoryLocation location;
-
- // The previously created repository.
- // It is recorded when fields are changed
- private ICVSRepositoryLocation oldLocation;
-
- // Dialog store id constants
- private static final String STORE_USERNAME_ID =
- "ConfigurationWizardMainPage.STORE_USERNAME_ID";//$NON-NLS-1$
- private static final String STORE_HOSTNAME_ID =
- "ConfigurationWizardMainPage.STORE_HOSTNAME_ID";//$NON-NLS-1$
- private static final String STORE_PATH_ID =
- "ConfigurationWizardMainPage.STORE_PATH_ID";//$NON-NLS-1$
- private static final String STORE_DONT_VALIDATE_ID =
- "ConfigurationWizardMainPage.STORE_DONT_VALIDATE_ID";//$NON-NLS-1$
-
- // In case the page was launched from a different wizard
- private IDialogSettings settings;
-
- /**
- * ConfigurationWizardMainPage constructor.
- *
- * @param pageName the name of the page
- * @param title the title of the page
- * @param titleImage the image for the page
- */
- public ConfigurationWizardMainPage(String pageName, String title, ImageDescriptor titleImage) {
- super(pageName, title, titleImage);
- }
- /**
- * Adds an entry to a history, while taking care of duplicate history items
- * and excessively long histories. The assumption is made that all histories
- * should be of length ConfigurationWizardMainPage.COMBO_HISTORY_LENGTH
.
- *
- * @param history the current history
- * @param newEntry the entry to add to the history
- * @return the history with the new entry appended
- */
- private String[] addToHistory(String[] history, String newEntry) {
- ArrayList l = new ArrayList(Arrays.asList(history));
- addToHistory(l, newEntry);
- String[] r = new String[l.size()];
- l.toArray(r);
- return r;
- }
- protected IDialogSettings getDialogSettings() {
- return settings;
- }
- protected void setDialogSettings(IDialogSettings settings) {
- this.settings = settings;
- }
- /**
- * Adds an entry to a history, while taking care of duplicate history items
- * and excessively long histories. The assumption is made that all histories
- * should be of length ConfigurationWizardMainPage.COMBO_HISTORY_LENGTH
.
- *
- * @param history the current history
- * @param newEntry the entry to add to the history
- */
- private void addToHistory(List history, String newEntry) {
- history.remove(newEntry);
- history.add(0,newEntry);
-
- // since only one new item was added, we can be over the limit
- // by at most one item
- if (history.size() > COMBO_HISTORY_LENGTH)
- history.remove(COMBO_HISTORY_LENGTH);
- }
- /**
- * Creates the UI part of the page.
- *
- * @param parent the parent of the created widgets
- */
- public void createControl(Composite parent) {
- Composite composite = createComposite(parent, 2, false);
- // set F1 help
- WorkbenchHelp.setHelp(composite, IHelpContextIds.SHARING_NEW_REPOSITORY_PAGE);
-
- Listener listener = new Listener() {
- public void handleEvent(Event event) {
- if (location != null) {
- oldLocation = location;
- location = null;
- }
- updateWidgetEnablements();
- }
- };
-
- Group g = createGroup(composite, Policy.bind("ConfigurationWizardMainPage.Location_1")); //$NON-NLS-1$
-
- // Host name
- createLabel(g, Policy.bind("ConfigurationWizardMainPage.host")); //$NON-NLS-1$
- hostCombo = createEditableCombo(g);
- hostCombo.addListener(SWT.Selection, listener);
- hostCombo.addListener(SWT.Modify, listener);
-
- // Repository Path
- createLabel(g, Policy.bind("ConfigurationWizardMainPage.repositoryPath")); //$NON-NLS-1$
- repositoryPathCombo = createEditableCombo(g);
- repositoryPathCombo.addListener(SWT.Selection, listener);
- repositoryPathCombo.addListener(SWT.Modify, listener);
-
- g = createGroup(composite, Policy.bind("ConfigurationWizardMainPage.Authentication_2")); //$NON-NLS-1$
-
- // User name
- createLabel(g, Policy.bind("ConfigurationWizardMainPage.userName")); //$NON-NLS-1$
- userCombo = createEditableCombo(g);
- userCombo.addListener(SWT.Selection, listener);
- userCombo.addListener(SWT.Modify, listener);
-
- // Password
- createLabel(g, Policy.bind("ConfigurationWizardMainPage.password")); //$NON-NLS-1$
- passwordText = createPasswordField(g);
- passwordText.addListener(SWT.Modify, listener);
-
- g = createGroup(composite, Policy.bind("ConfigurationWizardMainPage.Connection_3")); //$NON-NLS-1$
-
- // Connection type
- createLabel(g, Policy.bind("ConfigurationWizardMainPage.connection")); //$NON-NLS-1$
- connectionMethodCombo = createCombo(g);
- connectionMethodCombo.addListener(SWT.Selection, listener);
-
- // Port number
- // create a composite to ensure the radio buttons come in the correct order
- Composite portGroup = new Composite(g, SWT.NONE);
- GridData data = new GridData();
- data.horizontalSpan = 2;
- portGroup.setLayoutData(data);
- GridLayout layout = new GridLayout();
- layout.numColumns = 2;
- layout.marginHeight = 0;
- layout.marginWidth = 0;
- portGroup.setLayout(layout);
- useDefaultPort = createRadioButton(portGroup, Policy.bind("ConfigurationWizardMainPage.useDefaultPort"), 2); //$NON-NLS-1$
- useCustomPort = createRadioButton(portGroup, Policy.bind("ConfigurationWizardMainPage.usePort"), 1); //$NON-NLS-1$
- useCustomPort.addListener(SWT.Selection, listener);
- portText = createTextField(portGroup);
- portText.addListener(SWT.Modify, listener);
-
- // create a composite to ensure the validate button is in its own tab group
- if (showValidate) {
- Composite validateButtonTabGroup = new Composite(composite, SWT.NONE);
- data = new GridData();
- data.horizontalSpan = 2;
- validateButtonTabGroup.setLayoutData(data);
- validateButtonTabGroup.setLayout(new FillLayout());
-
- validateButton = new Button(validateButtonTabGroup, SWT.CHECK);
- validateButton.setText(Policy.bind("ConfigurationWizardAutoconnectPage.validate")); //$NON-NLS-1$
- validateButton.addListener(SWT.Selection, new Listener() {
- public void handleEvent(Event e) {
- validate = validateButton.getSelection();
- }
- });
- }
-
- allowCachingButton = new Button(composite, SWT.CHECK);
- allowCachingButton.setText(Policy.bind("UserValidationDialog.6")); //$NON-NLS-1$
- data = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
- data.horizontalSpan = 3;
- allowCachingButton.setLayoutData(data);
- allowCachingButton.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- allowCaching = allowCachingButton.getSelection();
- }
- });
-
- Composite warningComposite = new Composite(composite, SWT.NONE);
- layout = new GridLayout();
- layout.numColumns = 2;
- layout.marginHeight = 0;
- layout.marginHeight = 0;
- warningComposite.setLayout(layout);
- data = new GridData(GridData.FILL_HORIZONTAL);
- data.horizontalSpan = 3;
- warningComposite.setLayoutData(data);
- Label warningLabel = new Label(warningComposite, SWT.NONE);
- warningLabel.setImage(Dialog.getImage(Dialog.DLG_IMG_MESSAGE_WARNING));
- warningLabel.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING | GridData.HORIZONTAL_ALIGN_BEGINNING));
- Label warningText = new Label(warningComposite, SWT.WRAP);
- warningText.setText(Policy.bind("UserValidationDialog.7")); //$NON-NLS-1$
- data = new GridData(GridData.FILL_HORIZONTAL);
- data.widthHint = 300;
- GC gc= new GC(composite);
- gc.setFont(parent.getFont());
- FontMetrics fontMetrics= gc.getFontMetrics();
- gc.dispose();
- data.heightHint= Dialog.convertHeightInCharsToPixels(fontMetrics, 3);
- warningText.setLayoutData(data);
-
- initializeValues();
- updateWidgetEnablements();
- hostCombo.setFocus();
-
- setControl(composite);
- Dialog.applyDialogFont(parent);
- }
- /**
- * Utility method to create an editable combo box
- *
- * @param parent the parent of the combo box
- * @return the created combo
- */
- protected Combo createEditableCombo(Composite parent) {
- Combo combo = new Combo(parent, SWT.NULL);
- GridData data = new GridData(GridData.FILL_HORIZONTAL);
- data.widthHint = IDialogConstants.ENTRY_FIELD_WIDTH;
- combo.setLayoutData(data);
- return combo;
- }
-
- protected Group createGroup(Composite parent, String text) {
- Group group = new Group(parent, SWT.NULL);
- group.setText(text);
- GridData data = new GridData(GridData.FILL_HORIZONTAL);
- data.horizontalSpan = 2;
- //data.widthHint = GROUP_WIDTH;
-
- group.setLayoutData(data);
- GridLayout layout = new GridLayout();
- layout.numColumns = 2;
- group.setLayout(layout);
- return group;
- }
-
- /*
- * Create a Proeprties node that contains everything needed to create a repository location
- */
- private Properties createProperties() {
- Properties result = new Properties();
- result.setProperty("connection", connectionMethodCombo.getText()); //$NON-NLS-1$
- result.setProperty("user", userCombo.getText()); //$NON-NLS-1$
- result.setProperty("password", passwordText.getText()); //$NON-NLS-1$
- result.setProperty("host", hostCombo.getText()); //$NON-NLS-1$
- if (useCustomPort.getSelection()) {
- result.setProperty("port", portText.getText()); //$NON-NLS-1$
- }
- result.setProperty("root", repositoryPathCombo.getText()); //$NON-NLS-1$
- return result;
- }
-
- /**
- * Crate a new location with the information entered on the page.
- * The location will exists and can be sed for connecting but is not
- * registered for persistance. This method must be called from the UI
- * thread.
- * @return a location or null
- * @throws CVSException
- */
- public ICVSRepositoryLocation getLocation() throws CVSException {
- if (location == null) {
- if (!isPageComplete()) return null;
- location = CVSRepositoryLocation.fromProperties(createProperties());
- if (location.equals(oldLocation)) {
- location = oldLocation;
- }
- location.setAllowCaching(allowCaching);
- oldLocation = null;
- saveWidgetValues();
- }
- return location;
- }
-
- /**
- * Initializes states of the controls.
- */
- private void initializeValues() {
- // Set remembered values
- IDialogSettings settings = getDialogSettings();
- if (settings != null) {
- String[] hostNames = settings.getArray(STORE_HOSTNAME_ID);
- if (hostNames != null) {
- for (int i = 0; i < hostNames.length; i++) {
- hostCombo.add(hostNames[i]);
- }
- }
- String[] paths = settings.getArray(STORE_PATH_ID);
- if (paths != null) {
- for (int i = 0; i < paths.length; i++) {
- repositoryPathCombo.add(paths[i]);
- }
- }
- String[] userNames = settings.getArray(STORE_USERNAME_ID);
- if (userNames != null) {
- for (int i = 0; i < userNames.length; i++) {
- userCombo.add(userNames[i]);
- }
- }
- if (showValidate) {
- validate = !settings.getBoolean(STORE_DONT_VALIDATE_ID);
- validateButton.setSelection(validate);
- }
- }
-
- // Initialize other values and widget states
- IConnectionMethod[] methods = CVSRepositoryLocation.getPluggedInConnectionMethods();
- for (int i = 0; i < methods.length; i++) {
- connectionMethodCombo.add(methods[i].getName());
- }
-
- connectionMethodCombo.select(0);
- useDefaultPort.setSelection(true);
-
- if(properties != null) {
- String method = properties.getProperty("connection"); //$NON-NLS-1$
- if (method == null) {
- connectionMethodCombo.select(0);
- } else {
- connectionMethodCombo.select(connectionMethodCombo.indexOf(method));
- }
-
- String user = properties.getProperty("user"); //$NON-NLS-1$
- if (user != null) {
- userCombo.setText(user);
- }
-
- String password = properties.getProperty("password"); //$NON-NLS-1$
- if (password != null) {
- passwordText.setText(password);
- }
-
- String host = properties.getProperty("host"); //$NON-NLS-1$
- if (host != null) {
- hostCombo.setText(host);
- }
-
- String port = properties.getProperty("port"); //$NON-NLS-1$
- if (port != null) {
- useCustomPort.setSelection(true);
- portText.setText(port);
- }
-
- String repositoryPath = properties.getProperty("root"); //$NON-NLS-1$
- if (repositoryPath != null) {
- repositoryPathCombo.setText(repositoryPath);
- }
- }
- }
- /**
- * Saves the widget values
- */
- private void saveWidgetValues() {
- // Update history
- IDialogSettings settings = getDialogSettings();
- if (settings != null) {
- String[] userNames = settings.getArray(STORE_USERNAME_ID);
- if (userNames == null) userNames = new String[0];
- userNames = addToHistory(userNames, userCombo.getText());
- settings.put(STORE_USERNAME_ID, userNames);
-
- String[] hostNames = settings.getArray(STORE_HOSTNAME_ID);
- if (hostNames == null) hostNames = new String[0];
- hostNames = addToHistory(hostNames, hostCombo.getText());
- settings.put(STORE_HOSTNAME_ID, hostNames);
-
- String[] paths = settings.getArray(STORE_PATH_ID);
- if (paths == null) paths = new String[0];
- paths = addToHistory(paths, repositoryPathCombo.getText());
- settings.put(STORE_PATH_ID, paths);
-
- if (showValidate) {
- settings.put(STORE_DONT_VALIDATE_ID, !validate);
- }
- }
- }
-
- public void setShowValidate(boolean showValidate) {
- this.showValidate = showValidate;
- }
-
- /**
- * Sets the properties for the repository connection
- *
- * @param properties the properties or null
- */
- public void setProperties(Properties properties) {
- this.properties = properties;
- }
-
- /**
- * Updates widget enablements and sets error message if appropriate.
- */
- protected void updateWidgetEnablements() {
- if (useDefaultPort.getSelection()) {
- portText.setEnabled(false);
- } else {
- portText.setEnabled(true);
- }
-
- validateFields();
- }
- /**
- * Validates the contents of the editable fields and set page completion
- * and error messages appropriately.
- */
- private void validateFields() {
- String user = userCombo.getText();
- IStatus status = validateUserName(user);
- if (!isStatusOK(status)) {
- return;
- }
-
- String host = hostCombo.getText();
- status = validateHost(host);
- if (!isStatusOK(status)) {
- return;
- }
-
- if (portText.isEnabled()) {
- String port = portText.getText();
- status = validatePort(port);
- if (!isStatusOK(status)) {
- return;
- }
- }
-
- String pathString = repositoryPathCombo.getText();
- status = validatePath(pathString);
- if (!isStatusOK(status)) {
- return;
- }
-
- try {
- CVSRepositoryLocation l = CVSRepositoryLocation.fromProperties(createProperties());
- if (!l.equals(oldLocation) && KnownRepositories.getInstance().isKnownRepository(l.getLocation())) {
- setErrorMessage(Policy.bind("ConfigurationWizardMainPage.0")); //$NON-NLS-1$
- setPageComplete(false);
- return;
- }
- } catch (CVSException e) {
- CVSUIPlugin.log(e);
- // Let it pass. Creation should fail
- }
-
- // Everything passed so we're good to go
- setErrorMessage(null);
- setPageComplete(true);
- }
-
- private boolean isStatusOK(IStatus status) {
- if (!status.isOK()) {
- if (status.getCode() == REQUIRED_FIELD) {
- // Don't set the message for an empty field
- setErrorMessage(null);
- } else {
- setErrorMessage(status.getMessage());
- }
- setPageComplete(false);
- return false;
- }
- return true;
- }
-
- public boolean getValidate() {
- return validate;
- }
- public void setVisible(boolean visible) {
- super.setVisible(visible);
- if (visible) {
- hostCombo.setFocus();
- }
- }
-
- public static final int REQUIRED_FIELD = 1;
- public static final int INVALID_FIELD_CONTENTS = 2;
- public static final IStatus validateUserName(String user) {
- if (user.length() == 0) {
- return new Status(IStatus.ERROR, CVSUIPlugin.ID, REQUIRED_FIELD, Policy.bind("ConfigurationWizardMainPage.1"), null); //$NON-NLS-1$
- }
- if ((user.indexOf('@') != -1) || (user.indexOf(':') != -1)) {
- return new Status(IStatus.ERROR, CVSUIPlugin.ID, INVALID_FIELD_CONTENTS,
- Policy.bind("ConfigurationWizardMainPage.invalidUserName"), null); //$NON-NLS-1$
- }
- return Status.OK_STATUS;
- }
- public static final IStatus validateHost(String host) {
- if (host.length() == 0) {
- return new Status(IStatus.ERROR, CVSUIPlugin.ID, REQUIRED_FIELD, Policy.bind("ConfigurationWizardMainPage.2"), null); //$NON-NLS-1$
- }
- if (host.indexOf(':') != -1) {
- return new Status(IStatus.ERROR, CVSUIPlugin.ID, INVALID_FIELD_CONTENTS,
- Policy.bind("ConfigurationWizardMainPage.invalidHostName"), null); //$NON-NLS-1$
- }
- if (host.startsWith(" ") || host.endsWith(" ")) { //$NON-NLS-1$ //$NON-NLS-2$
- return new Status(IStatus.ERROR, CVSUIPlugin.ID, INVALID_FIELD_CONTENTS,
- Policy.bind("ConfigurationWizardMainPage.5"), null); //$NON-NLS-1$
- }
- return Status.OK_STATUS;
- }
- public static final IStatus validatePort(String port) {
- if (port.length() == 0) {
- return new Status(IStatus.ERROR, CVSUIPlugin.ID, REQUIRED_FIELD, Policy.bind("ConfigurationWizardMainPage.3"), null); //$NON-NLS-1$
- }
- try {
- Integer.parseInt(port);
- } catch (NumberFormatException e) {
- return new Status(IStatus.ERROR, CVSUIPlugin.ID, INVALID_FIELD_CONTENTS,
- Policy.bind("ConfigurationWizardMainPage.invalidPort"), null); //$NON-NLS-1$
- }
- return Status.OK_STATUS;
- }
- public static final IStatus validatePath(String pathString) {
- if (pathString.length() == 0) {
- return new Status(IStatus.ERROR, CVSUIPlugin.ID, REQUIRED_FIELD, Policy.bind("ConfigurationWizardMainPage.4"), null); //$NON-NLS-1$
- }
- IPath path = new Path(null, pathString);
- String[] segments = path.segments();
- for (int i = 0; i < segments.length; i++) {
- String string = segments[i];
- if (string.charAt(0) == ' ' || string.charAt(string.length() -1) == ' ') {
- return new Status(IStatus.ERROR, CVSUIPlugin.ID, INVALID_FIELD_CONTENTS,
- Policy.bind("ConfigurationWizardMainPage.invalidPathWithSpaces"), null); //$NON-NLS-1$
- }
- }
- // look for // and inform the user that we support use of C:\cvs\root instead of /c//cvs/root
- if (pathString.indexOf("//") != -1) { //$NON-NLS-1$
- if (pathString.indexOf("//") == 2) { //$NON-NLS-1$
- // The user is probably trying to specify a CVSNT path
- return new Status(IStatus.ERROR, CVSUIPlugin.ID, INVALID_FIELD_CONTENTS,
- Policy.bind("ConfigurationWizardMainPage.useNTFormat"), null); //$NON-NLS-1$
- } else {
- return new Status(IStatus.ERROR, CVSUIPlugin.ID, INVALID_FIELD_CONTENTS,
- Policy.bind("ConfigurationWizardMainPage.invalidPathWithSlashes"), null); //$NON-NLS-1$
- }
- }
- return Status.OK_STATUS;
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/GenerateDiffFileOperation.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/GenerateDiffFileOperation.java
deleted file mode 100644
index ba77d16d7..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/GenerateDiffFileOperation.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.wizards;
-
-
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.PrintStream;
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.SubProgressMonitor;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.swt.dnd.Clipboard;
-import org.eclipse.swt.dnd.TextTransfer;
-import org.eclipse.swt.dnd.Transfer;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.core.RepositoryProvider;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.CVSProviderPlugin;
-import org.eclipse.team.internal.ccvs.core.CVSTeamProvider;
-import org.eclipse.team.internal.ccvs.core.client.Command.LocalOption;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-
-/**
- * An operation to run the CVS diff operation on a set of resources. The result
- * of the diff is written to a file. If there are no differences found, the
- * user is notified and the output file is not created.
- */
-public class GenerateDiffFileOperation implements IRunnableWithProgress {
-
- private File outputFile;
- private IResource resource;
- private Shell shell;
- private LocalOption[] options;
-
- GenerateDiffFileOperation(IResource resource, File file, LocalOption[] options, Shell shell) {
- this.resource = resource;
- this.outputFile = file;
- this.shell = shell;
- this.options = options;
- }
-
- /**
- * @see IRunnableWithProgress#run(IProgressMonitor)
- */
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
-
- final CVSTeamProvider provider = (CVSTeamProvider)RepositoryProvider.getProvider(resource.getProject(), CVSProviderPlugin.getTypeId());
- monitor.beginTask("", 500); //$NON-NLS-1$
- monitor.setTaskName(Policy.bind("GenerateCVSDiff.working")); //$NON-NLS-1$
- try {
- if (outputFile != null) {
- generateDiffToFile(monitor, provider, outputFile);
- } else {
- generateDiffToClipboard(monitor, provider);
- }
- } catch (TeamException e) {
- throw new InvocationTargetException(e);
- } finally {
- monitor.done();
- }
- }
-
- private void generateDiffToFile(IProgressMonitor monitor, CVSTeamProvider provider, File file) throws TeamException {
-
- final FileOutputStream os;
- try {
- os= new FileOutputStream(file);
- try {
- provider.diff(resource, options, new PrintStream(os), new SubProgressMonitor(monitor, 500));
- } finally {
- os.close();
- }
- } catch (FileNotFoundException e) {
- throw new TeamException(Policy.bind("GenerateDiffFileOperation.0"), e); //$NON-NLS-1$
- } catch (IOException e) {
- throw new TeamException(Policy.bind("GenerateDiffFileOperation.1"), e); //$NON-NLS-1$
- }
-
- if (file.length() == 0) {
- outputFile.delete();
- reportEmptyDiff();
- }
- }
-
- private void generateDiffToClipboard(IProgressMonitor monitor, CVSTeamProvider provider) throws TeamException {
- final ByteArrayOutputStream os = new ByteArrayOutputStream();
- try {
- try {
- provider.diff(resource, options, new PrintStream(os), new SubProgressMonitor(monitor, 500));
- } finally {
- os.close();
- }
- } catch (IOException e) {
- throw new TeamException(Policy.bind("GenerateDiffFileOperation.2"), e); //$NON-NLS-1$
- }
- if (os.size() == 0) {
- reportEmptyDiff();
- } else {
- copyToClipboard(os);
- }
- }
-
- private void copyToClipboard(final ByteArrayOutputStream baos) {
- shell.getDisplay().syncExec(new Runnable() {
- public void run() {
- TextTransfer plainTextTransfer = TextTransfer.getInstance();
- Clipboard clipboard = new Clipboard(shell.getDisplay());
- clipboard.setContents(
- new String[]{baos.toString()},
- new Transfer[]{plainTextTransfer});
- clipboard.dispose();
- }
- });
- }
-
- private void reportEmptyDiff() {
- CVSUIPlugin.openDialog(shell, new CVSUIPlugin.IOpenableInShell() {
- public void open(Shell shell) {
- MessageDialog.openInformation(
- shell,
- Policy.bind("GenerateCVSDiff.noDiffsFoundTitle"), //$NON-NLS-1$
- Policy.bind("GenerateCVSDiff.noDiffsFoundMsg")); //$NON-NLS-1$
- }
- }, CVSUIPlugin.PERFORM_SYNC_EXEC);
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/GenerateDiffFileWizard.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/GenerateDiffFileWizard.java
deleted file mode 100644
index b537c83d0..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/GenerateDiffFileWizard.java
+++ /dev/null
@@ -1,775 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.wizards;
-
-
-import java.io.File;
-import java.lang.reflect.InvocationTargetException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.FileDialog;
-import org.eclipse.swt.widgets.Group;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.team.internal.ccvs.core.client.Command;
-import org.eclipse.team.internal.ccvs.core.client.Diff;
-import org.eclipse.team.internal.ccvs.core.client.Command.LocalOption;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.ICVSUIConstants;
-import org.eclipse.team.internal.ccvs.ui.IHelpContextIds;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.ui.help.WorkbenchHelp;
-import org.eclipse.ui.internal.ide.misc.ContainerContentProvider;
-import org.eclipse.ui.model.WorkbenchLabelProvider;
-
-/**
- * A wizard for creating a patch file by running the CVS diff command.
- */
-public class GenerateDiffFileWizard extends Wizard {
-
- /**
- * Page to select a patch file. Overriding validatePage was necessary to allow
- * entering a file name that already exists.
- */
- private class LocationPage extends WizardPage {
-
- /**
- * The possible locations to save a patch.
- */
- public final static int CLIPBOARD = 1;
- public final static int FILESYSTEM = 2;
- public final static int WORKSPACE = 3;
-
- /**
- * GUI controls for clipboard (cp), filesystem (fs) and workspace (ws).
- */
- private Button cpRadio;
-
- private Button fsRadio;
- protected Text fsPathText;
- private Button fsBrowseButton;
-
- private Button wsRadio;
- protected TreeViewer wsTreeViewer;
- private Text wsFilenameText;
-
-
- /**
- * State information of this page, updated by the listeners.
- */
- protected boolean pageValid;
- protected IContainer wsSelectedContainer;
- protected int selectedLocation;
-
- /**
- * The default values store used to initialize the selections.
- */
- private final DefaultValuesStore store;
-
- LocationPage(String pageName, String title, ImageDescriptor image, DefaultValuesStore store) {
- super(pageName, title, image);
- setPageComplete(false);
- this.store= store;
- }
-
- /**
- * Allow the user to finish if a valid file has been entered.
- */
- protected boolean validatePage() {
-
- switch (selectedLocation) {
- case WORKSPACE:
- pageValid= validateWorkspaceLocation();
- break;
- case FILESYSTEM:
- pageValid= validateFilesystemLocation();
- break;
- case CLIPBOARD:
- pageValid= true;
- break;
- }
-
- /**
- * Avoid draw flicker by clearing error message
- * if all is valid.
- */
- if (pageValid) {
- setMessage(null);
- setErrorMessage(null);
- }
- setPageComplete(pageValid);
- return pageValid;
- }
-
- /**
- * The following conditions must hold for the file system location
- * to be valid:
- * - the path must be valid and non-empty
- * - the path must be absolute
- * - the specified file must be of type file
- * - the parent must exist (new folders can be created via the browse button)
- */
- private boolean validateFilesystemLocation() {
- final String pathString= fsPathText.getText().trim();
- if (pathString.length() == 0 || !new Path("").isValidPath(pathString)) { //$NON-NLS-1$
- setErrorMessage(Policy.bind("GenerateDiffFileWizard.0")); //$NON-NLS-1$
- return false;
- }
-
- final File file= new File(pathString);
- if (!file.isAbsolute()) {
- setErrorMessage(Policy.bind("GenerateDiffFileWizard.0")); //$NON-NLS-1$
- return false;
- }
-
- if (file.isDirectory()) {
- setErrorMessage(Policy.bind("GenerateDiffFileWizard.2")); //$NON-NLS-1$
- return false;
- }
-
- if (pathString.endsWith("/") || pathString.endsWith("\\")) { //$NON-NLS-1$//$NON-NLS-2$
- setErrorMessage(Policy.bind("GenerateDiffFileWizard.3")); //$NON-NLS-1$
- return false;
- }
-
- final File parent= file.getParentFile();
- if (!(parent.exists() && parent.isDirectory())) {
- setErrorMessage(Policy.bind("GenerateDiffFileWizard.3")); //$NON-NLS-1$
- return false;
- }
- return true;
- }
-
- /**
- * The following conditions must hold for the file system location to be valid:
- * - a parent must be selected in the workspace tree view
- * - the resource name must be valid
- */
- private boolean validateWorkspaceLocation() {
- if (wsSelectedContainer == null) {
- setErrorMessage(Policy.bind("GenerateDiffFileWizard.4")); //$NON-NLS-1$
- return false;
- }
- final String filename= wsFilenameText.getText().trim();
- if (!new Path("").isValidSegment(filename)) { //$NON-NLS-1$
- setErrorMessage(Policy.bind("GenerateDiffFileWizard.5")); //$NON-NLS-1$
- return false;
- }
- return true;
- }
-
- /**
- * Answers a full path to a file system file or null
if the user
- * selected to save the patch in the clipboard.
- */
- public File getFile() {
- if (pageValid && selectedLocation == FILESYSTEM) {
- return new File(fsPathText.getText().trim());
- }
- if (pageValid && selectedLocation == WORKSPACE) {
- final String filename= wsFilenameText.getText().trim();
- final IFile file= wsSelectedContainer.getFile(new Path(filename));
- return file.getLocation().toFile();
- }
- return null;
- }
-
- /**
- * Get the selected workspace resource if the patch is to be saved in the
- * workspace, or null otherwise.
- */
- public IResource getResource() {
- if (pageValid && selectedLocation == WORKSPACE) {
- final String filename= wsFilenameText.getText().trim();
- return wsSelectedContainer.getFile(new Path(null, filename));
- }
- return null;
- }
-
- /**
- * Allow the user to chose to save the patch to the workspace or outside
- * of the workspace.
- */
- public void createControl(Composite parent) {
-
- final Composite composite= new Composite(parent, SWT.NULL);
- composite.setLayout(new GridLayout());
- setControl(composite);
- initializeDialogUnits(composite);
-
- // set F1 help
- WorkbenchHelp.setHelp(composite, IHelpContextIds.PATCH_SELECTION_PAGE);
-
- setupClipboardControls(composite);
- setupFilesystemControls(composite);
- setupWorkspaceControls(composite);
-
- Dialog.applyDialogFont(parent);
-
- initializeDefaultValues();
-
- /**
- * Ensure the page is in a valid state.
- */
- if (!validatePage()) {
- store.storeRadioSelection(CLIPBOARD);
- initializeDefaultValues();
- validatePage();
- }
- pageValid= true;
-
- updateEnablements();
- setupListeners();
- }
-
-
- /**
- * Setup the controls for the workspace option.
- */
- private void setupWorkspaceControls(Composite composite) {
- wsRadio= new Button(composite, SWT.RADIO);
- wsRadio.setText(Policy.bind("Save_In_Workspace_7")); //$NON-NLS-1$
-
- new Label(composite, SWT.LEFT).setText(Policy.bind("Select_a_folder_then_type_in_the_file_name__8")); //$NON-NLS-1$
-
- wsTreeViewer = new TreeViewer(composite, SWT.BORDER);
- final GridData gd= new GridData(SWT.FILL, SWT.FILL, true, true);
- gd.widthHint= 0;
- gd.heightHint= 0;
- wsTreeViewer.getTree().setLayoutData(gd);
-
- final ContainerContentProvider cp = new ContainerContentProvider();
- cp.showClosedProjects(false);
- wsTreeViewer.setContentProvider(cp);
- wsTreeViewer.setLabelProvider(new WorkbenchLabelProvider());
- wsTreeViewer.setInput(ResourcesPlugin.getWorkspace());
-
- final Composite group = new Composite(composite, SWT.NONE);
- final GridLayout layout = new GridLayout(2, false);
- layout.marginWidth = 0;
- group.setLayout(layout);
- group.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
-
- final Label label = new Label(group, SWT.NONE);
- label.setLayoutData(new GridData());
- label.setText(Policy.bind("Fi&le_name__9")); //$NON-NLS-1$
-
- wsFilenameText = new Text(group,SWT.BORDER);
- wsFilenameText.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
- }
-
- /**
- * Setup the controls for the file system option.
- */
- private void setupFilesystemControls(final Composite composite) {
- GridLayout layout;
- fsRadio= new Button(composite, SWT.RADIO);
-
- fsRadio.setText(Policy.bind("Save_In_File_System_3")); //$NON-NLS-1$
-
- final Composite nameGroup = new Composite(composite,SWT.NONE);
- layout = new GridLayout();
- layout.numColumns = 2;
- layout.marginWidth = 0;
- nameGroup.setLayout(layout);
- final GridData data = new GridData(SWT.FILL, SWT.FILL, false, false);
- nameGroup.setLayoutData(data);
-
- fsPathText= new Text(nameGroup, SWT.BORDER);
- GridData gd= new GridData(GridData.FILL_HORIZONTAL);
- fsPathText.setLayoutData(gd);
-
- fsBrowseButton = new Button(nameGroup, SWT.NULL);
- fsBrowseButton.setText(Policy.bind("Browse..._4")); //$NON-NLS-1$
- }
-
- /**
- * Setup the controls for the clipboard option.
- */
- private void setupClipboardControls(final Composite composite) {
- cpRadio= new Button(composite, SWT.RADIO);
- cpRadio.setText(Policy.bind("Save_To_Clipboard_2")); //$NON-NLS-1$
- }
-
-
- /**
- * Initialize the controls with the saved default values which are
- * obtained from the DefaultValuesStore.
- */
- private void initializeDefaultValues() {
-
- selectedLocation= store.getRadioSelection();
- wsSelectedContainer= store.getWorkspaceSelection();
-
- /**
- * Radio buttons
- */
- cpRadio.setSelection(selectedLocation == CLIPBOARD);
- fsRadio.setSelection(selectedLocation == FILESYSTEM);
- wsRadio.setSelection(selectedLocation == WORKSPACE);
-
- /**
- * Text fields.
- */
- fsPathText.setText(store.getFilesystemPath());
- wsFilenameText.setText(store.getWorkspaceFilename());
-
- /**
- * Tree viewer.
- */
- if (wsSelectedContainer != null) {
- final ISelection selection= new StructuredSelection(wsSelectedContainer);
- wsTreeViewer.setSelection(selection, true);
- }
- }
-
- /**
- * Setup all the listeners for the controls.
- */
- private void setupListeners() {
-
- cpRadio.addListener(SWT.Selection, new Listener() {
- public void handleEvent(Event event) {
- selectedLocation= CLIPBOARD;
- validatePage();
- updateEnablements();
- }
- });
- fsRadio.addListener(SWT.Selection, new Listener() {
- public void handleEvent(Event event) {
- selectedLocation= FILESYSTEM;
- validatePage();
- updateEnablements();
- }
- });
-
- wsRadio.addListener(SWT.Selection, new Listener() {
- public void handleEvent(Event event) {
- selectedLocation= WORKSPACE;
- validatePage();
- updateEnablements();
- }
- });
-
- fsPathText.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- validatePage();
- }
- });
-
- fsBrowseButton.addListener(SWT.Selection, new Listener() {
- public void handleEvent(Event event) {
- final FileDialog dialog = new FileDialog(getShell(), SWT.PRIMARY_MODAL | SWT.SAVE);
- if (pageValid) {
- final File file= new File(fsPathText.getText());
- dialog.setFilterPath(file.getParent());
- }
- dialog.setText(Policy.bind("Save_Patch_As_5")); //$NON-NLS-1$
- dialog.setFileName(Policy.bind("patch.txt_6")); //$NON-NLS-1$
- final String path = dialog.open();
- if (path != null) {
- fsPathText.setText(new Path(path).toOSString());
- }
- }
- });
-
- wsTreeViewer.addSelectionChangedListener(
- new ISelectionChangedListener() {
- public void selectionChanged(SelectionChangedEvent event) {
- IStructuredSelection s = (IStructuredSelection)event.getSelection();
- wsSelectedContainer = ((IContainer) s.getFirstElement());
- validatePage();
- }
- });
-
- wsTreeViewer.addDoubleClickListener(
- new IDoubleClickListener() {
- public void doubleClick(DoubleClickEvent event) {
- ISelection s= event.getSelection();
- if (s instanceof IStructuredSelection) {
- Object item = ((IStructuredSelection)s).getFirstElement();
- if (wsTreeViewer.getExpandedState(item))
- wsTreeViewer.collapseToLevel(item, 1);
- else
- wsTreeViewer.expandToLevel(item, 1);
- }
- }
- });
-
- wsFilenameText.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- validatePage();
- }
- });
- }
-
- /**
- * Enable and disable controls based on the selected radio button.
- */
- protected void updateEnablements() {
- fsBrowseButton.setEnabled(selectedLocation == FILESYSTEM);
- fsPathText.setEnabled(selectedLocation == FILESYSTEM);
- wsTreeViewer.getTree().setEnabled(selectedLocation == WORKSPACE);
- wsFilenameText.setEnabled(selectedLocation == WORKSPACE);
- }
-
- public int getSelectedLocation() {
- return selectedLocation;
- }
- }
-
- /**
- * Page to select the options for creating the patch.
- */
- private class OptionsPage extends WizardPage {
-
- private Button recurseOption;
- private Button contextDiffOption;
- private Button unifiedDiffOption;
- private Button regularDiffOption;
- private Button includeNewFilesOptions;
-
- /**
- * Constructor for PatchFileCreationOptionsPage.
- */
- protected OptionsPage(String pageName) {
- super(pageName);
- }
-
- /**
- * Constructor for PatchFileCreationOptionsPage.
- */
- protected OptionsPage(String pageName, String title, ImageDescriptor titleImage) {
- super(pageName, title, titleImage);
- }
-
- /*
- * @see IDialogPage#createControl(Composite)
- */
- public void createControl(Composite parent) {
- Composite composite= new Composite(parent, SWT.NULL);
- GridLayout layout= new GridLayout();
- composite.setLayout(layout);
- composite.setLayoutData(new GridData());
- setControl(composite);
-
- // set F1 help
- WorkbenchHelp.setHelp(composite, IHelpContextIds.PATCH_OPTIONS_PAGE);
-
- recurseOption = new Button(composite, SWT.CHECK);
- recurseOption.setText(Policy.bind("Do_not_recurse_into_sub-folders_10")); //$NON-NLS-1$
- recurseOption.setSelection(true);
-
- includeNewFilesOptions = new Button(composite, SWT.CHECK);
- includeNewFilesOptions.setText(Policy.bind("Do_not_include_new_files_in_patch_11")); //$NON-NLS-1$
- includeNewFilesOptions.setSelection(true);
-
- Group diffTypeGroup = new Group(composite, SWT.NONE);
- layout = new GridLayout();
- layout.marginHeight = 0;
- diffTypeGroup.setLayout(layout);
- GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL);
- diffTypeGroup.setLayoutData(data);
- diffTypeGroup.setText(Policy.bind("Diff_output_format_12")); //$NON-NLS-1$
-
- unifiedDiffOption = new Button(diffTypeGroup, SWT.RADIO);
- unifiedDiffOption.setText(Policy.bind("Unified_(format_required_by_Compare_With_Patch_feature)_13")); //$NON-NLS-1$
- unifiedDiffOption.setSelection(true);
- contextDiffOption = new Button(diffTypeGroup, SWT.RADIO);
- contextDiffOption.setText(Policy.bind("Context_14")); //$NON-NLS-1$
- regularDiffOption = new Button(diffTypeGroup, SWT.RADIO);
- regularDiffOption.setText(Policy.bind("Standard_15")); //$NON-NLS-1$
-
- Dialog.applyDialogFont(parent);
- }
-
- /**
- * Answers if the difference operation should be run recursively.
- */
- public boolean isRecursive() {
- return !recurseOption.getSelection();
- }
-
- /**
- * Return the list of Diff command options configured on this page.
- */
- public LocalOption[] getOptions() {
- List options = new ArrayList(5);
- if(includeNewFilesOptions.getSelection()) {
- options.add(Diff.INCLUDE_NEWFILES);
- }
- if(!recurseOption.getSelection()) {
- options.add(Command.DO_NOT_RECURSE);
- }
- if(unifiedDiffOption.getSelection()) {
- options.add(Diff.UNIFIED_FORMAT);
- } else if(contextDiffOption.getSelection()) {
- options.add(Diff.CONTEXT_FORMAT);
- }
- return (LocalOption[]) options.toArray(new LocalOption[options.size()]);
- }
- public void setVisible(boolean visible) {
- super.setVisible(visible);
- if (visible) {
- recurseOption.setFocus();
- }
- }
- }
-
- /**
- * Class to retrieve and store the default selected values.
- */
- private final class DefaultValuesStore {
-
- private static final String PREF_LAST_SELECTION= "org.eclipse.team.internal.ccvs.ui.wizards.GenerateDiffFileWizard.PatchFileSelectionPage.selection"; //$NON-NLS-1$
- private static final String PREF_LAST_FS_PATH= "org.eclipse.team.internal.ccvs.ui.wizards.GenerateDiffFileWizard.PatchFileSelectionPage.fs.path"; //$NON-NLS-1$
- private static final String PREF_LAST_WS_FILENAME= "org.eclipse.team.internal.ccvs.ui.wizards.GenerateDiffFileWizard.PatchFileSelectionPage.ws.filename"; //$NON-NLS-1$
- private static final String PREF_LAST_WS_PATH= "org.eclipse.team.internal.ccvs.ui.wizards.GenerateDiffFileWizard.PatchFileSelectionPage.ws.path"; //$NON-NLS-1$
-
- private final IDialogSettings dialogSettings;
-
- public DefaultValuesStore() {
- dialogSettings= CVSUIPlugin.getPlugin().getDialogSettings();
- }
-
- public int getRadioSelection() {
- int value= LocationPage.CLIPBOARD;
- try {
- value= dialogSettings.getInt(PREF_LAST_SELECTION);
- } catch (NumberFormatException e) {
- }
-
- switch (value) {
- case LocationPage.FILESYSTEM:
- case LocationPage.WORKSPACE:
- case LocationPage.CLIPBOARD:
- return value;
- default:
- return LocationPage.CLIPBOARD;
- }
- }
-
- public String getFilesystemPath() {
- final String path= dialogSettings.get(PREF_LAST_FS_PATH);
- return path != null ? path : ""; //$NON-NLS-1$
- }
-
- public String getWorkspaceFilename() {
- final String filename= dialogSettings.get(PREF_LAST_WS_FILENAME);
- return filename != null ? filename : ""; //$NON-NLS-1$
- }
-
- public IContainer getWorkspaceSelection() {
- final String value= dialogSettings.get(PREF_LAST_WS_PATH);
- if ( value != null ) {
- final IPath path= new Path(value);
- final IResource container= ResourcesPlugin.getWorkspace().getRoot().findMember(path);
- if (container instanceof IContainer) {
- return (IContainer)container;
- }
- }
- return null;
- }
-
- public void storeRadioSelection(int defaultSelection) {
- dialogSettings.put(PREF_LAST_SELECTION, defaultSelection);
- }
-
- public void storeFilesystemPath(String path) {
- dialogSettings.put(PREF_LAST_FS_PATH, path);
- }
-
- public void storeWorkspacePath(String path) {
- dialogSettings.put(PREF_LAST_WS_PATH, path);
- }
-
- public void storeWorkspaceFilename(String filename) {
- dialogSettings.put(PREF_LAST_WS_FILENAME, filename);
- }
- }
-
-
- private LocationPage locationPage;
- private OptionsPage optionsPage;
-
- private final IResource resource;
- private final DefaultValuesStore defaultValuesStore;
-
-
- public GenerateDiffFileWizard(IResource resource) {
- super();
- this.resource = resource;
- setWindowTitle(Policy.bind("GenerateCVSDiff.title")); //$NON-NLS-1$
- initializeDefaultPageImageDescriptor();
- defaultValuesStore= new DefaultValuesStore();
- }
-
- public void addPages() {
- String pageTitle = Policy.bind("GenerateCVSDiff.pageTitle"); //$NON-NLS-1$
- String pageDescription = Policy.bind("GenerateCVSDiff.pageDescription"); //$NON-NLS-1$
- locationPage = new LocationPage(pageTitle, pageTitle, CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_WIZBAN_DIFF), defaultValuesStore);
- locationPage.setDescription(pageDescription);
- addPage(locationPage);
-
- pageTitle = Policy.bind("Advanced_options_19"); //$NON-NLS-1$
- pageDescription = Policy.bind("Configure_the_options_used_for_the_CVS_diff_command_20"); //$NON-NLS-1$
- optionsPage = new OptionsPage(pageTitle, pageTitle, CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_WIZBAN_DIFF));
- optionsPage.setDescription(pageDescription);
- addPage(optionsPage);
- }
-
- /**
- * Declares the wizard banner iamge descriptor
- */
- protected void initializeDefaultPageImageDescriptor() {
- final String iconPath= "icons/full/"; //$NON-NLS-1$
- try {
- final URL installURL = CVSUIPlugin.getPlugin().getBundle().getEntry("/"); //$NON-NLS-1$
- final URL url = new URL(installURL, iconPath + "wizards/newconnect_wiz.gif"); //$NON-NLS-1$
- ImageDescriptor desc = ImageDescriptor.createFromURL(url);
- setDefaultPageImageDescriptor(desc);
- } catch (MalformedURLException e) {
- // Should not happen. Ignore.
- }
- }
-
- /* (Non-javadoc)
- * Method declared on IWizard.
- */
- public boolean needsProgressMonitor() {
- return true;
- }
-
- /**
- * Completes processing of the wizard. If this method returns
- * true
, the wizard will close; otherwise, it will stay active.
- */
- public boolean performFinish() {
-
- final int location= locationPage.getSelectedLocation();
-
- final File file= location != LocationPage.CLIPBOARD? locationPage.getFile() : null;
-
- if (!(file == null || validateFile(file))) {
- return false;
- }
-
- /**
- * Perform diff operation.
- */
- try {
- getContainer().run(true, true, new GenerateDiffFileOperation(resource, file, optionsPage.getOptions(), getShell()));
- } catch (InterruptedException e1) {
- return true;
- } catch (InvocationTargetException e2) {
- CVSUIPlugin.openError(getShell(), null, null, e2);
- return false;
- }
-
- /**
- * Refresh workspace if necessary and save default selection.
- */
- switch (location) {
-
- case LocationPage.WORKSPACE:
- defaultValuesStore.storeRadioSelection(LocationPage.WORKSPACE);
- final IResource workspaceResource= locationPage.getResource();
- defaultValuesStore.storeWorkspacePath(workspaceResource.getParent().getFullPath().toString());
- defaultValuesStore.storeWorkspaceFilename(workspaceResource.getName());
- try {
- workspaceResource.getParent().refreshLocal(IResource.DEPTH_ONE, null);
- } catch(CoreException e) {
- CVSUIPlugin.openError(getShell(), Policy.bind("GenerateCVSDiff.error"), null, e); //$NON-NLS-1$
- return false;
- }
- break;
-
- case LocationPage.FILESYSTEM:
- defaultValuesStore.storeFilesystemPath(file.getPath());
- defaultValuesStore.storeRadioSelection(LocationPage.FILESYSTEM);
- break;
-
- case LocationPage.CLIPBOARD:
- defaultValuesStore.storeRadioSelection(LocationPage.CLIPBOARD);
- break;
-
- default:
- return false;
- }
- return true;
- }
-
- public boolean validateFile(File file) {
-
- if (file == null)
- return false;
-
- /**
- * Consider file valid if it doesn't exist for now.
- */
- if (!file.exists())
- return true;
-
- /**
- * The file exists.
- */
- if (!file.canWrite()) {
- final String title= Policy.bind("GenerateCVSDiff.1"); //$NON-NLS-1$
- final String msg= Policy.bind("GenerateCVSDiff.2"); //$NON-NLS-1$
- final MessageDialog dialog= new MessageDialog(getShell(), title, null, msg, MessageDialog.ERROR, new String[] { IDialogConstants.OK_LABEL }, 0);
- dialog.open();
- return false;
- }
-
- final String title = Policy.bind("GenerateCVSDiff.overwriteTitle"); //$NON-NLS-1$
- final String msg = Policy.bind("GenerateCVSDiff.overwriteMsg"); //$NON-NLS-1$
- final MessageDialog dialog = new MessageDialog(getShell(), title, null, msg, MessageDialog.QUESTION, new String[] { IDialogConstants.YES_LABEL, IDialogConstants.CANCEL_LABEL }, 0);
- dialog.open();
- if (dialog.getReturnCode() != 0)
- return false;
-
- return true;
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/ICVSWizard.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/ICVSWizard.java
deleted file mode 100644
index 77195124f..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/ICVSWizard.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-/*
- * Created on 16-Mar-2004
- *
- * To change the template for this generated file go to
- * Window - Preferences - Java - Code Generation - Code and Comments
- */
-package org.eclipse.team.internal.ccvs.ui.wizards;
-
-import org.eclipse.jface.wizard.IWizard;
-import org.eclipse.jface.wizard.IWizardPage;
-
-/**
- * Extended wizard interface that differentiates retrieving
- * the next page for display vs. for determining it's state
- */
-public interface ICVSWizard extends IWizard {
-
- /**
- * Get the wizard page that follows the given page. If
- * aboutToShow is true then the page will be shown.
- * Otherwise, only its state will be queried.
- * @param page a wizard page
- * @param aboutToShow true iof the page returned will be shown
- * @return the next wizard page
- */
- public IWizardPage getNextPage(IWizardPage page, boolean aboutToShow);
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/KSubstWizard.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/KSubstWizard.java
deleted file mode 100644
index 6d455b898..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/KSubstWizard.java
+++ /dev/null
@@ -1,428 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.wizards;
-
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IResourceVisitor;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.jface.wizard.IWizardPage;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.team.core.RepositoryProvider;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-import org.eclipse.team.internal.ccvs.core.CVSProviderPlugin;
-import org.eclipse.team.internal.ccvs.core.CVSStatus;
-import org.eclipse.team.internal.ccvs.core.CVSTeamProvider;
-import org.eclipse.team.internal.ccvs.core.ICVSFile;
-import org.eclipse.team.internal.ccvs.core.client.Command.KSubstOption;
-import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot;
-import org.eclipse.team.internal.ccvs.core.syncinfo.ResourceSyncInfo;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.ICVSUIConstants;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-
-/**
- * A wizard for changing the keyword substitution mode of files.
- *
- * 1. Ask the user select to select the desired keyword substitution mode.
- * 2. Compute the set of possibly affected resources
- * 3. If the affected resources include existing committed files, warn the user
- * and provide an option to include them in the operation anyways.
- * 4. If the affected resources include dirty files, warn the user and provide
- * an option to include them in the operation anyways.
- * 5. Perform the operation on Finish.
- */
-public class KSubstWizard extends Wizard {
- private KSubstOption defaultKSubst;
-
- private final IResource[] resources;
- private final int depth;
- private List changeList = null;
- private KSubstOption changeOption = null;
-
- private KSubstWizardSelectionPage mainPage;
- private KSubstWizardSummaryPage summaryPage;
- private KSubstWizardSharedFilesPage sharedFilesPage;
- private KSubstWizardDirtyFilesPage dirtyFilesPage;
-
- private Dialog parentDialog;
-
- private KSubstWizardCommitCommentPage commitCommentPage;
-
- public class KSubstChangeElement {
- public static final int ADDED_FILE = 1;
- public static final int CHANGED_FILE = 2;
- public static final int UNCHANGED_FILE = 4;
-
- private IFile file;
- private int classification;
- private boolean excluded;
- private KSubstOption fromKSubst;
- private KSubstOption toKSubst;
-
- private KSubstChangeElement(IFile file, int classification, boolean excluded, KSubstOption fromKSubst, KSubstOption toKSubst) {
- this.file = file;
- this.classification = classification;
- this.excluded = excluded;
- this.fromKSubst = fromKSubst;
- this.toKSubst = toKSubst;
- }
- public boolean matchesFilter(int filter) {
- return (classification & filter) != 0;
- }
- public boolean isExcluded() {
- return excluded;
- }
- public void setExcluded(boolean excluded) {
- this.excluded = excluded;
- }
- public boolean isNewKSubstMode() {
- return ! fromKSubst.equals(toKSubst);
- }
- public void setKSubst(KSubstOption toKSubst) {
- this.toKSubst = toKSubst;
- }
- public KSubstOption getKSubst() {
- return toKSubst;
- }
- public IFile getFile() {
- return file;
- }
- }
-
- /**
- * Creates a wizard to set the keyword substitution mode for the specified resources.
- *
- * @param resources the resources to alter
- * @param depth the recursion depth
- * @param defaultOption the keyword substitution option to select by default
- */
- public KSubstWizard(IResource[] resources, int depth, KSubstOption defaultOption) {
- super();
- this.defaultKSubst = defaultOption;
- this.resources = resources;
- this.depth = depth;
- setWindowTitle(Policy.bind("KSubstWizard.title")); //$NON-NLS-1$
- }
-
- /**
- * Returns the keyword substitution option that was selected at the time
- * the Finish button was pressed.
- */
- public KSubstOption getKSubstOption() {
- return defaultKSubst;
- }
-
- public void addPages() {
- ImageDescriptor substImage = CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_WIZBAN_KEYWORD);
-
- // add main page
- String pageTitle = Policy.bind("KSubstWizardSelectionPage.pageTitle"); //$NON-NLS-1$
- String pageDescription = Policy.bind("KSubstWizardSelectionPage.pageDescription"); //$NON-NLS-1$
- mainPage = new KSubstWizardSelectionPage(pageTitle, pageTitle, substImage, defaultKSubst);
- mainPage.setDescription(pageDescription);
- mainPage.setTitle(pageTitle);
- addPage(mainPage);
-
- // add summary page
- pageTitle = Policy.bind("KSubstWizardSummaryPage.pageTitle"); //$NON-NLS-1$
- pageDescription = Policy.bind("KSubstWizardSummaryPage.pageDescription"); //$NON-NLS-1$
- summaryPage = new KSubstWizardSummaryPage(pageTitle, pageTitle, substImage, false);
- summaryPage.setDescription(pageDescription);
- addPage(summaryPage);
-
- // add shared files warning page
- pageTitle = Policy.bind("KSubstWizardSharedFilesPage.pageTitle"); //$NON-NLS-1$
- pageDescription = Policy.bind("KSubstWizardSharedFilesPage.pageDescription"); //$NON-NLS-1$
- sharedFilesPage = new KSubstWizardSharedFilesPage(pageTitle, pageTitle, substImage, false);
- sharedFilesPage.setDescription(pageDescription);
- addPage(sharedFilesPage);
-
- // add changed files warning page
- pageTitle = Policy.bind("KSubstWizardDirtyFilesPage.pageTitle"); //$NON-NLS-1$
- pageDescription = Policy.bind("KSubstWizardDirtyFilesPage.pageDescription"); //$NON-NLS-1$
- dirtyFilesPage = new KSubstWizardDirtyFilesPage(pageTitle, pageTitle, substImage, false);
- dirtyFilesPage.setDescription(pageDescription);
- addPage(dirtyFilesPage);
-
- // add commit comment page
- pageTitle = Policy.bind("KSubstWizardCommitCommentPage.pageTitle"); //$NON-NLS-1$
- pageDescription = Policy.bind("KSubstWizardCommitCommentPage.pageDescription"); //$NON-NLS-1$
- commitCommentPage = new KSubstWizardCommitCommentPage(parentDialog, pageTitle, pageTitle, substImage, pageDescription);
- addPage(commitCommentPage);
- }
-
- public IWizardPage getNextPage(IWizardPage page) {
- if (page == mainPage) {
- if (prepareSharedFilesPage()) return sharedFilesPage;
- } else if (page == sharedFilesPage) {
- if (sharedFilesPage.includeSharedFiles() && prepareDirtyFilesPage()) return dirtyFilesPage;
- } else if (page == summaryPage) {
- return null;
- }
- prepareSummaryPage();
- if (page != commitCommentPage) return commitCommentPage;
- return summaryPage;
- }
-
- public IWizardPage getPreviousPage(IWizardPage page) {
- if (page == summaryPage) {
- return commitCommentPage;
- } else if (page == commitCommentPage) {
- if (sharedFilesPage.includeSharedFiles() && prepareDirtyFilesPage()) return dirtyFilesPage;
- if (prepareSharedFilesPage()) return sharedFilesPage;
- return mainPage;
- } else if (page == dirtyFilesPage) {
- if (prepareSharedFilesPage()) return sharedFilesPage;
- return mainPage;
- } else if (page == sharedFilesPage) {
- return mainPage;
- }
- return null;
- }
-
- /* (Non-javadoc)
- * Method declared on IWizard.
- */
- public boolean needsProgressMonitor() {
- return true;
- }
-
- /* (Non-javadoc)
- * Method declared on IWizard.
- */
- public boolean needsPreviousAndNextButtons() {
- return true;
- }
-
- /* (Non-javadoc)
- * Method declared on IWizard.
- */
- public boolean performFinish() {
- try {
- if (sharedFilesPage.includeSharedFiles()
- && !MessageDialog.openConfirm(getShell(), null, Policy.bind("KSubstWizardSharedFilesPage.contents"))) { //$NON-NLS-1$
- return false;
- }
- defaultKSubst = mainPage.getKSubstOption();
- final List messages = new ArrayList();
- getContainer().run(false /*fork*/, true /*cancelable*/, new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- try {
- monitor.beginTask("", 10000); //$NON-NLS-1$
- monitor.setTaskName(Policy.bind("KSubstWizard.working")); //$NON-NLS-1$
- computeChangeList(mainPage.getKSubstOption());
- Map table = getProviderMapping();
-
- int workPerProvider = 10000 / (table.size() + 1);
- monitor.worked(workPerProvider);
- for (Iterator it = table.entrySet().iterator(); it.hasNext();) {
- Map.Entry entry = (Map.Entry) it.next();
- CVSTeamProvider provider = (CVSTeamProvider) entry.getKey();
- Map providerFiles = (Map) entry.getValue();
-
- String comment = commitCommentPage.getComment();
- IStatus status = provider.setKeywordSubstitution(providerFiles, comment,
- Policy.subMonitorFor(monitor, workPerProvider));
- if (status.getCode() != CVSStatus.OK) {
- messages.add(status);
- }
- }
- // Broadcast a decorator change so all interested parties will update their labels.
- // This is done in particular because the syncview will not see this change
- // as a change in state for the resources involved
- CVSUIPlugin.broadcastPropertyChange(new PropertyChangeEvent(this, CVSUIPlugin.P_DECORATORS_CHANGED, null, null));
- } catch (TeamException e) {
- throw new InvocationTargetException(e);
- } finally {
- monitor.done();
- }
- }
- });
- // Check for any status messages and display them
- if ( ! messages.isEmpty()) {
- boolean error = false;
- MultiStatus combinedStatus = new MultiStatus(CVSUIPlugin.ID, 0,
- Policy.bind("KSubstWizard.problemsMessage"), null); //$NON-NLS-1$
- for (int i = 0; i < messages.size(); i++) {
- IStatus status = (IStatus)messages.get(i);
- if (status.getSeverity() == IStatus.ERROR || status.getCode() == CVSStatus.SERVER_ERROR) {
- error = true;
- }
- combinedStatus.merge(status);
- }
- String message = null;
- IStatus statusToDisplay;
- if (combinedStatus.getChildren().length == 1) {
- message = combinedStatus.getMessage();
- statusToDisplay = combinedStatus.getChildren()[0];
- } else {
- statusToDisplay = combinedStatus;
- }
- String title;
- if (error) {
- title = Policy.bind("KSubstWizard.errorTitle"); //$NON-NLS-1$
- } else {
- title = Policy.bind("KSubstWizard.warningTitle"); //$NON-NLS-1$
- }
- CVSUIPlugin.openError(getShell(), title, message, new CVSException(statusToDisplay));
- }
- return true;
- } catch (InterruptedException e1) {
- return true;
- } catch (InvocationTargetException e2) {
- CVSUIPlugin.openError(getShell(), Policy.bind("KSubstWizard.problemsMessage"), null, e2); //$NON-NLS-1$
- return false;
- }
- }
-
- private boolean prepareDirtyFilesPage() {
- BusyIndicator.showWhile(getContainer().getShell().getDisplay(), new Runnable() {
- public void run() {
- computeChangeList(mainPage.getKSubstOption());
- dirtyFilesPage.setChangeList(changeList);
- }
- });
- return ! dirtyFilesPage.isListEmpty();
- }
-
- private boolean prepareSharedFilesPage() {
- BusyIndicator.showWhile(getContainer().getShell().getDisplay(), new Runnable() {
- public void run() {
- computeChangeList(mainPage.getKSubstOption());
- sharedFilesPage.setChangeList(changeList);
- }
- });
- return ! sharedFilesPage.isListEmpty();
- }
-
- private void prepareSummaryPage() {
- BusyIndicator.showWhile(getContainer().getShell().getDisplay(), new Runnable() {
- public void run() {
- computeChangeList(mainPage.getKSubstOption());
- summaryPage.setChangeList(changeList, getFilters());
- }
- });
- }
-
- /**
- * @param ksubst the desired keyword substitution mode, if null chooses for each file:
- * KSubstOption.fromPattern(fileName).isBinary() ? KSUBST_BINARY : KSUBST_TEXT
- */
- private void computeChangeList(final KSubstOption ksubst) {
- if (changeList != null) {
- if (changeOption == ksubst) return;
- changeList.clear();
- } else {
- changeList = new ArrayList();
- }
- changeOption = ksubst;
- // recurse over all specified resources, considering each exactly once
- final Set seen = new HashSet();
- for (int i = 0; i < resources.length; i++) {
- final IResource currentResource = resources[i];
- try {
- currentResource.accept(new IResourceVisitor() {
- public boolean visit(IResource resource) throws CoreException {
- try {
- if (resource.getType() == IResource.FILE && resource.exists() && ! seen.contains(resource)) {
- seen.add(resource);
- IFile file = (IFile) resource;
- ICVSFile cvsFile = CVSWorkspaceRoot.getCVSFileFor(file);
- if (cvsFile.isManaged()) {
- ResourceSyncInfo info = cvsFile.getSyncInfo();
- // classify the change
- final int classification;
- if (info.isAdded()) {
- classification = KSubstChangeElement.ADDED_FILE;
- } else if (info.isDeleted()) {
- return true;
- } else if (cvsFile.isModified(null)) {
- classification = KSubstChangeElement.CHANGED_FILE;
- } else {
- classification = KSubstChangeElement.UNCHANGED_FILE;
- }
- // determine the to/from substitution modes
- KSubstOption fromKSubst = info.getKeywordMode();
- KSubstOption toKSubst = ksubst;
- if (ksubst == null) {
- toKSubst = KSubstOption.fromFile(file);
- }
- changeList.add(new KSubstChangeElement(file, classification, false, fromKSubst, toKSubst));
- }
- }
- } catch (TeamException e) {
- throw new CoreException(e.getStatus());
- }
- // always return true and let the depth determine if children are visited
- return true;
- }
- }, depth, false);
- } catch (CoreException e) {
- CVSUIPlugin.openError(getShell(), Policy.bind("KSubstWizard.problemsMessage"), null, e); //$NON-NLS-1$
- }
- }
- }
-
- private int getFilters() {
- return KSubstChangeElement.ADDED_FILE |
- (sharedFilesPage.includeSharedFiles() ? KSubstChangeElement.UNCHANGED_FILE |
- (dirtyFilesPage.includeDirtyFiles() ? KSubstChangeElement.CHANGED_FILE : 0) : 0);
- }
-
- private Map getProviderMapping() {
- Map table = new HashMap();
- int filter = getFilters();
- for (Iterator it = changeList.iterator(); it.hasNext();) {
- KSubstChangeElement change = (KSubstChangeElement) it.next();
- if (! change.isExcluded() && change.isNewKSubstMode() && change.matchesFilter(filter)) {
- // classify file according to its provider
- IFile file = change.getFile();
- RepositoryProvider provider = RepositoryProvider.getProvider(file.getProject(), CVSProviderPlugin.getTypeId());
- Map providerMap = (Map) table.get(provider);
- if (providerMap == null) {
- providerMap = new HashMap();
- table.put(provider, providerMap);
- }
- providerMap.put(file, change.toKSubst);
- }
- }
- return table;
- }
-
- /**
- * Method setParentDialog.
- * @param dialog
- */
- public void setParentDialog(Dialog dialog) {
- this.parentDialog = dialog;
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/KSubstWizardCommitCommentPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/KSubstWizardCommitCommentPage.java
deleted file mode 100644
index d9bbe10e8..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/KSubstWizardCommitCommentPage.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.wizards;
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.team.internal.ccvs.ui.CommitCommentArea;
-import org.eclipse.team.internal.ccvs.ui.IHelpContextIds;
-import org.eclipse.ui.help.WorkbenchHelp;
-
-public class KSubstWizardCommitCommentPage extends CVSWizardPage {
-
- private CommitCommentArea commitCommentArea;
-
- /**
- * Constructor for KSubstWizardCommitCommentPage.
- * @param pageName
- * @param title
- * @param titleImage
- * @param description
- */
- public KSubstWizardCommitCommentPage(
- Dialog parentDialog,
- String pageName,
- String title,
- ImageDescriptor titleImage,
- String description) {
-
- super(pageName, title, titleImage, description);
- commitCommentArea = new CommitCommentArea();
- }
-
- /**
- * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
- */
- public void createControl(Composite parent) {
- Composite top = new Composite(parent, SWT.NONE);
- top.setLayout(new GridLayout());
- setControl(top);
- // set F1 help
- WorkbenchHelp.setHelp(top, IHelpContextIds.KEYWORD_SUBSTITUTION_COMMIT_COMMENT_PAGE);
- commitCommentArea.createArea(top);
- Dialog.applyDialogFont(parent);
- }
-
- /**
- * Method getComment.
- * @return String
- */
- public String getComment() {
- return commitCommentArea.getComment();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.dialogs.IDialogPage#setVisible(boolean)
- */
- public void setVisible(boolean visible) {
- super.setVisible(visible);
- if (visible) {
- commitCommentArea.setFocus();
- }
- }
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/KSubstWizardDirtyFilesPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/KSubstWizardDirtyFilesPage.java
deleted file mode 100644
index 7df0ba1e6..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/KSubstWizardDirtyFilesPage.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.wizards;
-
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.ListViewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.team.internal.ccvs.ui.IHelpContextIds;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.wizards.KSubstWizard.KSubstChangeElement;
-import org.eclipse.ui.help.WorkbenchHelp;
-
-/**
- * Page to warn user about uncommitted outgoing changes.
- */
-public class KSubstWizardDirtyFilesPage extends CVSWizardPage {
- private boolean includeDirtyFiles;
- private Button includeDirtyFilesButton;
- private ListViewer listViewer;
-
- public KSubstWizardDirtyFilesPage(String pageName, String title, ImageDescriptor image, boolean includeDirtyFiles) {
- super(pageName, title, image);
- this.includeDirtyFiles = includeDirtyFiles;
- }
-
- public void createControl(Composite parent) {
- Composite top = new Composite(parent, SWT.NONE);
- top.setLayout(new GridLayout());
- setControl(top);
-
- // set F1 help
- WorkbenchHelp.setHelp(top, IHelpContextIds.KEYWORD_SUBSTITUTION_CHANGED_PAGE);
-
- createWrappingLabel(top, Policy.bind("KSubstWizardDirtyFilesPage.contents"), 0); //$NON-NLS-1$
-
- includeDirtyFilesButton = new Button(top, SWT.CHECK);
- includeDirtyFilesButton.setText(Policy.bind("KSubstWizardDirtyFilesPage.includeDirtyFiles")); //$NON-NLS-1$
- includeDirtyFilesButton.setSelection(includeDirtyFiles);
- includeDirtyFilesButton.addListener(SWT.Selection, new Listener() {
- public void handleEvent(Event e) {
- includeDirtyFiles = includeDirtyFilesButton.getSelection();
- }
- });
-
- createSeparator(top, SPACER_HEIGHT);
- listViewer = createFileListViewer(top,
- Policy.bind("KSubstWizardDirtyFilesPage.dirtyFilesViewer.title"), LIST_HEIGHT_HINT); //$NON-NLS-1$
- Dialog.applyDialogFont(parent);
- }
-
- public boolean includeDirtyFiles() {
- return includeDirtyFiles;
- }
-
- public void setChangeList(List changes) {
- List filteredFiles = new ArrayList();
- for (Iterator it = changes.iterator(); it.hasNext();) {
- KSubstChangeElement change = (KSubstChangeElement) it.next();
- if (change.matchesFilter(KSubstChangeElement.CHANGED_FILE)) {
- filteredFiles.add(change.getFile());
- }
- }
- listViewer.setInput(filteredFiles.toArray());
- }
-
- public boolean isListEmpty() {
- // returns true iff the list is empty after filtering
- return listViewer.getList().getItemCount() == 0;
- }
- public void setVisible(boolean visible) {
- super.setVisible(visible);
- if (visible) {
- includeDirtyFilesButton.setFocus();
- }
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/KSubstWizardSelectionPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/KSubstWizardSelectionPage.java
deleted file mode 100644
index 4fec08d51..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/KSubstWizardSelectionPage.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.wizards;
-
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.team.internal.ccvs.core.CVSProviderPlugin;
-import org.eclipse.team.internal.ccvs.core.client.Command;
-import org.eclipse.team.internal.ccvs.core.client.Command.KSubstOption;
-import org.eclipse.team.internal.ccvs.ui.IHelpContextIds;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.ui.help.WorkbenchHelp;
-
-/**
- * Page to select keyword substitution mode.
- */
-public class KSubstWizardSelectionPage extends CVSWizardPage {
- private KSubstOption ksubst;
- private List ksubstOptions;
- private Button automaticRadioButton;
- private Button binaryRadioButton;
- private Button textRadioButton;
- private Button ksubstRadioButton;
- private Combo ksubstOptionCombo;
-
- public KSubstWizardSelectionPage(String pageName, String title, ImageDescriptor image, KSubstOption defaultKSubst) {
- super(pageName, title, image);
- this.ksubst = defaultKSubst;
-
- // sort the options by display text
- KSubstOption[] options = KSubstOption.getAllKSubstOptions();
- this.ksubstOptions = new ArrayList();
- for (int i = 0; i < options.length; i++) {
- KSubstOption option = options[i];
- if (! (Command.KSUBST_BINARY.equals(option) ||
- Command.KSUBST_TEXT.equals(option))) {
- ksubstOptions.add(option);
- }
- }
- Collections.sort(ksubstOptions, new Comparator() {
- public int compare(Object a, Object b) {
- String aKey = ((KSubstOption) a).getLongDisplayText();
- String bKey = ((KSubstOption) b).getLongDisplayText();
- return aKey.compareTo(bKey);
- }
- });
- }
-
- public void createControl(Composite parent) {
- Composite top = new Composite(parent, SWT.NONE);
- top.setLayout(new GridLayout());
- setControl(top);
-
- // set F1 help
- WorkbenchHelp.setHelp(top, IHelpContextIds.KEYWORD_SUBSTITUTION_SELECTION_PAGE);
-
- Listener selectionListener = new Listener() {
- public void handleEvent(Event event) {
- updateEnablements();
- }
- };
-
- // Automatic
- automaticRadioButton = createRadioButton(top, Policy.bind("KSubstWizardSelectionPage.automaticButton"), 1); //$NON-NLS-1$
- automaticRadioButton.addListener(SWT.Selection, selectionListener);
- automaticRadioButton.setSelection(ksubst == null);
- createWrappingLabel(top, Policy.bind("KSubstWizardSelectionPage.automaticLabel", //$NON-NLS-1$
- Command.KSUBST_BINARY.getLongDisplayText(),
- CVSProviderPlugin.getPlugin().getDefaultTextKSubstOption().getLongDisplayText()),
- LABEL_INDENT_WIDTH);
-
- // Binary
- binaryRadioButton = createRadioButton(top, Policy.bind("KSubstWizardSelectionPage.binaryButton"), 1); //$NON-NLS-1$
- binaryRadioButton.addListener(SWT.Selection, selectionListener);
- binaryRadioButton.setSelection(Command.KSUBST_BINARY.equals(ksubst));
- createIndentedLabel(top, Policy.bind("KSubstWizardSelectionPage.binaryLabel"), LABEL_INDENT_WIDTH); //$NON-NLS-1$
-
- // Text without keyword substitution
- textRadioButton = createRadioButton(top, Policy.bind("KSubstWizardSelectionPage.textButton"), 1); //$NON-NLS-1$
- textRadioButton.addListener(SWT.Selection, selectionListener);
- textRadioButton.setSelection(Command.KSUBST_TEXT.equals(ksubst));
- createIndentedLabel(top, Policy.bind("KSubstWizardSelectionPage.textLabel"), LABEL_INDENT_WIDTH); //$NON-NLS-1$
-
- // Text with keyword substitution
- ksubstRadioButton = createRadioButton(top, Policy.bind("KSubstWizardSelectionPage.textWithSubstitutionsButton"), 1); //$NON-NLS-1$
- ksubstRadioButton.addListener(SWT.Selection, selectionListener);
- ksubstRadioButton.setSelection(false);
- createIndentedLabel(top, Policy.bind("KSubstWizardSelectionPage.textWithSubstitutionsLabel"), LABEL_INDENT_WIDTH); //$NON-NLS-1$
-
- ksubstOptionCombo = new Combo(top, SWT.READ_ONLY);
- ksubstOptionCombo.addListener(SWT.Selection, selectionListener);
- GridData data = new GridData(GridData.VERTICAL_ALIGN_FILL | GridData.HORIZONTAL_ALIGN_BEGINNING);
- data.horizontalIndent = LABEL_INDENT_WIDTH;
- ksubstOptionCombo.setLayoutData(data);
-
- // populate the combo box and select the default option
- for (int i = 0; i < ksubstOptions.size(); ++i) {
- KSubstOption option = (KSubstOption) ksubstOptions.get(i);
- ksubstOptionCombo.add(option.getLongDisplayText());
- if (option.equals(ksubst)) {
- ksubstOptionCombo.select(i);
- ksubstRadioButton.setSelection(true);
- } else if (option.equals(Command.KSUBST_TEXT_EXPAND)) {
- // if no expansion mode selected, show KSUBST_TEXT_EXPAND
- // since it is the server default
- if (! ksubstRadioButton.getSelection()) ksubstOptionCombo.select(i);
- }
- }
- updateEnablements();
- Dialog.applyDialogFont(parent);
- }
-
- /**
- * Enable and disable controls based on the selected radio button.
- */
- protected void updateEnablements() {
- if (ksubstRadioButton.getSelection()) {
- ksubstOptionCombo.setEnabled(true);
- ksubst = (KSubstOption) ksubstOptions.get(ksubstOptionCombo.getSelectionIndex());
- } else {
- ksubstOptionCombo.setEnabled(false);
- if (automaticRadioButton.getSelection()) {
- ksubst = null;
- } else if (binaryRadioButton.getSelection()) {
- ksubst = Command.KSUBST_BINARY;
- } else if (textRadioButton.getSelection()) {
- ksubst = Command.KSUBST_TEXT;
- }
- }
- }
-
- public KSubstOption getKSubstOption() {
- return ksubst;
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/KSubstWizardSharedFilesPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/KSubstWizardSharedFilesPage.java
deleted file mode 100644
index de8f0e67a..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/KSubstWizardSharedFilesPage.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.wizards;
-
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.ListViewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.team.internal.ccvs.ui.IHelpContextIds;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.wizards.KSubstWizard.KSubstChangeElement;
-import org.eclipse.ui.help.WorkbenchHelp;
-
-/**
- * Page to warn user about the side-effects of changing keyword
- * substitution on already committed files.
- */
-public class KSubstWizardSharedFilesPage extends CVSWizardPage {
- private boolean includeSharedFiles;
- private Button includeSharedFilesButton;
- private ListViewer listViewer;
-
- public KSubstWizardSharedFilesPage(String pageName, String title, ImageDescriptor image, boolean includeSharedFiles) {
- super(pageName, title, image);
- this.includeSharedFiles = includeSharedFiles;
- }
-
- public void createControl(Composite parent) {
- Composite top = new Composite(parent, SWT.NONE);
- top.setLayout(new GridLayout());
- setControl(top);
- createWrappingLabel(top, Policy.bind("KSubstWizardSharedFilesPage.contents"), 0); //$NON-NLS-1$
-
- // set F1 help
- WorkbenchHelp.setHelp(top, IHelpContextIds.KEYWORD_SUBSTITUTION_SHARED_PAGE);
-
- includeSharedFilesButton = new Button(top, SWT.CHECK);
- includeSharedFilesButton.setText(Policy.bind("KSubstWizardSharedFilesPage.includeSharedFiles")); //$NON-NLS-1$
- includeSharedFilesButton.setSelection(includeSharedFiles);
- includeSharedFilesButton.addListener(SWT.Selection, new Listener() {
- public void handleEvent(Event e) {
- includeSharedFiles = includeSharedFilesButton.getSelection();
- }
- });
-
- createSeparator(top, SPACER_HEIGHT);
- listViewer = createFileListViewer(top,
- Policy.bind("KSubstWizardSharedFilesPage.sharedFilesViewer.title"), LIST_HEIGHT_HINT); //$NON-NLS-1$
- Dialog.applyDialogFont(parent);
- }
-
- public boolean includeSharedFiles() {
- return includeSharedFiles;
- }
-
- public void setChangeList(List changes) {
- List filteredFiles = new ArrayList();
- for (Iterator it = changes.iterator(); it.hasNext();) {
- KSubstChangeElement change = (KSubstChangeElement) it.next();
- if (change.matchesFilter(KSubstChangeElement.CHANGED_FILE | KSubstChangeElement.UNCHANGED_FILE)) {
- filteredFiles.add(change.getFile());
- }
- }
- listViewer.setInput(filteredFiles.toArray());
- }
-
- public boolean isListEmpty() {
- // returns true iff the list is empty after filtering
- return listViewer.getList().getItemCount() == 0;
- }
- public void setVisible(boolean visible) {
- super.setVisible(visible);
- if (visible) {
- includeSharedFilesButton.setFocus();
- }
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/KSubstWizardSummaryPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/KSubstWizardSummaryPage.java
deleted file mode 100644
index 7322eaaf1..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/KSubstWizardSummaryPage.java
+++ /dev/null
@@ -1,291 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.wizards;
-
-
-import java.util.Arrays;
-import java.util.Comparator;
-import java.util.List;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.CheckStateChangedEvent;
-import org.eclipse.jface.viewers.CheckboxTableViewer;
-import org.eclipse.jface.viewers.ColumnWeightData;
-import org.eclipse.jface.viewers.ComboBoxCellEditor;
-import org.eclipse.jface.viewers.ICellModifier;
-import org.eclipse.jface.viewers.ICheckStateListener;
-import org.eclipse.jface.viewers.ILabelProviderListener;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.TableLayout;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerFilter;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.swt.custom.TableEditor;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.team.internal.ccvs.core.client.Command.KSubstOption;
-import org.eclipse.team.internal.ccvs.ui.IHelpContextIds;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.wizards.KSubstWizard.KSubstChangeElement;
-import org.eclipse.ui.help.WorkbenchHelp;
-import org.eclipse.ui.model.WorkbenchViewerSorter;
-
-public class KSubstWizardSummaryPage extends CVSWizardPage {
- private CheckboxTableViewer tableViewer = null;
- private KSubstOption[] ksubstOptions;
- private String[] ksubstOptionsDisplayText;
- private int filterType;
-
- private Button showUnaffectedFilesButton;
- private boolean showUnaffectedFiles;
-
- public KSubstWizardSummaryPage(String pageName, String title, ImageDescriptor image, boolean showUnaffectedFiles) {
- super(pageName, title, image);
- this.showUnaffectedFiles = showUnaffectedFiles;
-
- // sort the options by display text
- ksubstOptions = KSubstOption.getAllKSubstOptions();
- ksubstOptionsDisplayText = new String[ksubstOptions.length];
- Arrays.sort(ksubstOptions, new Comparator() {
- public int compare(Object a, Object b) {
- String aKey = getModeDisplayText((KSubstOption) a);
- String bKey = getModeDisplayText((KSubstOption) b);
- return aKey.compareTo(bKey);
- }
- });
- for (int i = 0; i < ksubstOptions.length; i++) {
- ksubstOptionsDisplayText[i] = getModeDisplayText(ksubstOptions[i]);
- }
- }
-
- public void createControl(Composite parent) {
- Composite top = new Composite(parent, SWT.NONE);
- top.setLayout(new GridLayout());
- setControl(top);
- createWrappingLabel(top, Policy.bind("KSubstWizardSummaryPage.contents"), 0); //$NON-NLS-1$
-
- // set F1 help
- WorkbenchHelp.setHelp(top, IHelpContextIds.KEYWORD_SUBSTITUTION_SUMMARY_PAGE);
-
- createSeparator(top, 0);
-
- showUnaffectedFilesButton = new Button(top, SWT.CHECK);
- showUnaffectedFilesButton.setText(Policy.bind("KSubstWizardSummaryPage.showUnaffectedFiles")); //$NON-NLS-1$
- showUnaffectedFilesButton.setSelection(showUnaffectedFiles);
- showUnaffectedFilesButton.addListener(SWT.Selection, new Listener() {
- public void handleEvent(Event e) {
- BusyIndicator.showWhile(getContainer().getShell().getDisplay(), new Runnable() {
- public void run() {
- showUnaffectedFiles = showUnaffectedFilesButton.getSelection();
- refresh(false);
- }
- });
- }
- });
-
- tableViewer = createFileTableViewer(top,
- Policy.bind("KSubstWizardSummaryPage.summaryViewer.title"), //$NON-NLS-1$
- Policy.bind("KSubstWizardSummaryPage.summaryViewer.fileHeader"), //$NON-NLS-1$
- Policy.bind("KSubstWizardSummaryPage.summaryViewer.ksubstHeader"), //$NON-NLS-1$
- LIST_HEIGHT_HINT);
- Dialog.applyDialogFont(parent);
- }
-
- /**
- * Creates a TableViewer whose input is a Map from IFile to KSubstOption.
- *
- * @param parent the parent of the viewer
- * @param title the text for the title label
- * @param heightHint the nominal height of the list
- * @return the created list viewer
- */
- public CheckboxTableViewer createFileTableViewer(Composite parent, String title,
- String fileHeader, String ksubstHeader, int heightHint) {
- createLabel(parent, title);
- // create a table
- Table table = new Table(parent, SWT.CHECK | SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER | SWT.FULL_SELECTION);
- GridData data = new GridData(GridData.FILL_BOTH);
- data.heightHint = heightHint;
- table.setLayoutData(data);
- table.setLinesVisible(true);
- table.setHeaderVisible(true);
-
- // add the columns
- TableColumn column = new TableColumn(table, SWT.LEFT);
- column.setText(fileHeader);
- column = new TableColumn(table, SWT.LEFT);
- column.setText(ksubstHeader);
- TableLayout tableLayout = new TableLayout();
- table.setLayout(tableLayout);
- tableLayout.addColumnData(new ColumnWeightData(1, true));
- tableLayout.addColumnData(new ColumnWeightData(1, true));
-
- // create a viewer for the table
- final CheckboxTableViewer tableViewer = new CheckboxTableViewer(table);
- tableViewer.setContentProvider(new IStructuredContentProvider() {
- public Object[] getElements(Object inputElement) {
- return (Object[]) inputElement;
- }
- public void dispose() {
- }
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
- }
- });
-
- // show file name and keyword substitution mode
- tableViewer.setLabelProvider(new ITableLabelProvider() {
- public Image getColumnImage(Object element, int columnIndex) {
- return null;
- }
- public String getColumnText(Object element, int columnIndex) {
- KSubstChangeElement change = (KSubstChangeElement) element;
- if (columnIndex == 0) {
- return change.getFile().getFullPath().toString();
- } else if (columnIndex == 1) {
- return getModeDisplayText(change.getKSubst());
- }
- return null;
- }
- public void addListener(ILabelProviderListener listener) {
- }
- public void dispose() {
- }
- public boolean isLabelProperty(Object element, String property) {
- return false;
- }
- public void removeListener(ILabelProviderListener listener) {
- }
- });
-
- // sort by file name
- tableViewer.setSorter(new WorkbenchViewerSorter() {
- public int compare(Viewer viewer, Object e1, Object e2) {
- IFile file1 = ((KSubstChangeElement) e1).getFile();
- IFile file2 = ((KSubstChangeElement) e2).getFile();
- return super.compare(viewer, file1, file2);
- }
- });
-
- // filter
- tableViewer.addFilter(new ViewerFilter() {
- public boolean select(Viewer viewer, Object parentElement, Object element) {
- KSubstChangeElement change = (KSubstChangeElement) element;
- return ( showUnaffectedFiles || change.isNewKSubstMode()) && change.matchesFilter(filterType);
- }
- });
-
- // add a check state listener
- tableViewer.addCheckStateListener(new ICheckStateListener() {
- public void checkStateChanged(CheckStateChangedEvent event) {
- KSubstChangeElement change = (KSubstChangeElement) event.getElement();
- if (tableViewer.getGrayed(change)) {
- // if it's grayed then give it the appearance of being disabled
- updateCheckStatus(change);
- } else {
- // otherwise record the change
- change.setExcluded(! event.getChecked());
- }
- }
- });
-
- // add a cell editor in the Keyword Substitution Mode column
- new TableEditor(table);
- CellEditor cellEditor = new ComboBoxCellEditor(table, ksubstOptionsDisplayText);
- tableViewer.setCellEditors(new CellEditor[] { null, cellEditor });
- tableViewer.setColumnProperties(new String[] { "file", "mode" }); //$NON-NLS-1$ //$NON-NLS-2$
- tableViewer.setCellModifier(new ICellModifier() {
- public Object getValue(Object element, String property) {
- KSubstChangeElement change = (KSubstChangeElement) element;
- KSubstOption option = change.getKSubst();
- for (int i = 0; i < ksubstOptions.length; ++i) {
- if (ksubstOptions[i].equals(option)) return new Integer(i);
- }
- // XXX need to handle this better
- return null;
- }
- public boolean canModify(Object element, String property) {
- return true;
- }
- public void modify(Object element, String property, Object value) {
- // XXX The runtime type of 'element' seems to be a TableItem instead of the
- // actual element data as with the other methods. As a workaround, use
- // the table's selection mechanism instead.
- IStructuredSelection selection = (IStructuredSelection) tableViewer.getSelection();
- element = selection.getFirstElement();
- int index = ((Integer) value).intValue();
- // selection will be -1 if some arbitrary text was entered since the combo box is not read only
- if (index != -1) {
- KSubstChangeElement change = (KSubstChangeElement) element;
- KSubstOption newOption = ksubstOptions[index];
- if (! newOption.equals(change.getKSubst())) {
- // the option has been changed, include it by default now if it wasn't before
- // since the user has shown interest in it
- change.setKSubst(newOption);
- change.setExcluded(false);
- tableViewer.refresh(change, true /*updateLabels*/);
- updateCheckStatus(change);
- }
- }
- }
- });
- return tableViewer;
- }
-
- public void setChangeList(List changes, int filterType) {
- this.filterType = filterType;
- tableViewer.setInput(changes.toArray());
- refresh(true);
- }
-
- private void refresh(boolean updateLabels) {
- tableViewer.refresh(updateLabels);
- Object[] elements = (Object[]) tableViewer.getInput();
- for (int i = 0; i < elements.length; i++) {
- KSubstChangeElement change = (KSubstChangeElement) elements[i];
- updateCheckStatus(change);
- }
- }
-
- private void updateCheckStatus(KSubstChangeElement change) {
- if (change.isNewKSubstMode()) {
- // if the mode differs, the checkbox indicates the inclusion/exclusion status
- tableViewer.setGrayed(change, false);
- tableViewer.setChecked(change, ! change.isExcluded());
- } else {
- // otherwise, the checkbox is meaningless except to indicate that the file will not be changed
- tableViewer.setGrayed(change, true);
- tableViewer.setChecked(change, false);
- }
- }
-
- private String getModeDisplayText(KSubstOption option) {
- return option.getLongDisplayText();
- }
- public void setVisible(boolean visible) {
- super.setVisible(visible);
- if (visible) {
- showUnaffectedFilesButton.setFocus();
- }
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/MergeWizard.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/MergeWizard.java
deleted file mode 100644
index e7e527a57..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/MergeWizard.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.wizards;
-
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.team.internal.ccvs.core.CVSMergeSubscriber;
-import org.eclipse.team.internal.ccvs.core.CVSTag;
-import org.eclipse.team.internal.ccvs.core.client.Command;
-import org.eclipse.team.internal.ccvs.core.client.Update;
-import org.eclipse.team.internal.ccvs.ui.*;
-import org.eclipse.team.internal.ccvs.ui.operations.UpdateOperation;
-import org.eclipse.team.internal.ccvs.ui.subscriber.MergeSynchronizeParticipant;
-import org.eclipse.team.internal.ccvs.ui.tags.TagSource;
-import org.eclipse.team.ui.TeamUI;
-import org.eclipse.team.ui.synchronize.ISynchronizeParticipant;
-import org.eclipse.ui.IWorkbenchPart;
-
-public class MergeWizard extends Wizard {
- MergeWizardPage page;
- IResource[] resources;
- private final IWorkbenchPart part;
-
- public MergeWizard(IWorkbenchPart part, IResource[] resources) {
- this.part = part;
- this.resources = resources;
- }
-
- public void addPages() {
- setNeedsProgressMonitor(true);
- TagSource tagSource = TagSource.create(resources);
- setWindowTitle(Policy.bind("MergeWizard.title")); //$NON-NLS-1$
- ImageDescriptor mergeImage = CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_WIZBAN_MERGE);
- page = new MergeWizardPage("mergePage", Policy.bind("MergeWizard.0"), mergeImage, Policy.bind("MergeWizard.1"), tagSource); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- addPage(page);
- }
-
- /*
- * @see IWizard#performFinish()
- */
- public boolean performFinish() {
-
- CVSTag startTag = page.getStartTag();
- CVSTag endTag = page.getEndTag();
-
- if (startTag == null || !page.isPreview()) {
- // Perform the update (merge) in the background
- UpdateOperation op = new UpdateOperation(getPart(), resources, getLocalOptions(startTag, endTag), null);
- try {
- op.run();
- } catch (InvocationTargetException e) {
- CVSUIPlugin.openError(getShell(), null, null, e);
- } catch (InterruptedException e) {
- // Ignore
- }
- } else {
- // First check if there is an existing matching participant, if so then re-use it
- MergeSynchronizeParticipant participant = MergeSynchronizeParticipant.getMatchingParticipant(resources, startTag, endTag);
- if(participant == null) {
- CVSMergeSubscriber s = new CVSMergeSubscriber(resources, startTag, endTag);
- participant = new MergeSynchronizeParticipant(s);
- TeamUI.getSynchronizeManager().addSynchronizeParticipants(new ISynchronizeParticipant[] {participant});
- }
- participant.refresh(resources, null, null, null);
- }
- return true;
- }
-
- private Command.LocalOption[] getLocalOptions(CVSTag startTag, CVSTag endTag) {
- List options = new ArrayList();
- if (startTag != null) {
- options.add(Command.makeArgumentOption(Update.JOIN, startTag.getName()));
- }
- options.add(Command.makeArgumentOption(Update.JOIN, endTag.getName()));
- return (Command.LocalOption[]) options.toArray(new Command.LocalOption[options.size()]);
- }
-
- private IWorkbenchPart getPart() {
- return part;
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/MergeWizardPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/MergeWizardPage.java
deleted file mode 100644
index c10125b69..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/MergeWizardPage.java
+++ /dev/null
@@ -1,254 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.wizards;
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.*;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.team.internal.ccvs.core.CVSTag;
-import org.eclipse.team.internal.ccvs.ui.IHelpContextIds;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.tags.*;
-
-public class MergeWizardPage extends CVSWizardPage {
-
- private Text endTagField;
- private Button endTagBrowseButton;
- private TagSource tagSource;
- private Text startTagField;
- private Button startTagBrowseButton;
- private TagRefreshButtonArea tagRefreshArea;
- private CVSTag startTag;
- private CVSTag endTag;
- private Button previewButton;
- private Button noPreviewButton;
- protected boolean preview = true;
-
- public MergeWizardPage(String pageName, String title, ImageDescriptor titleImage, String description, TagSource tagSource) {
- super(pageName, title, titleImage, description);
- this.tagSource = tagSource;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
- */
- public void createControl(Composite parent) {
- Composite composite = createComposite(parent, 1, true);
-
- Composite mainArea = createComposite(composite, 2, true);
- createEndTagArea(mainArea);
- createStartTagArea(mainArea);
- createPreviewOptionArea(mainArea);
-
- createTagRefreshArea(composite);
-
- Dialog.applyDialogFont(composite);
- setControl(composite);
- }
-
- private void createPreviewOptionArea(Composite mainArea) {
- previewButton = createRadioButton(mainArea, Policy.bind("MergeWizardPage.0"), 2); //$NON-NLS-1$
- noPreviewButton = createRadioButton(mainArea, Policy.bind("MergeWizardPage.1"), 2); //$NON-NLS-1$
- SelectionAdapter selectionAdapter = new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- preview = previewButton.getSelection();
- updateEnablements();
- }
- };
- previewButton.setSelection(preview);
- noPreviewButton.setSelection(!preview);
- previewButton.addSelectionListener(selectionAdapter);
- noPreviewButton.addSelectionListener(selectionAdapter);
- }
-
- private void createTagRefreshArea(Composite parent) {
- tagRefreshArea = new TagRefreshButtonArea(getShell(), getTagSource());
- tagRefreshArea.setRunnableContext(getContainer());
- tagRefreshArea.createArea(parent);
- }
-
- private void createEndTagArea(Composite parent) {
- createWrappingLabel(parent, Policy.bind("MergeWizardPage.2"), 0, 2); //$NON-NLS-1$
- endTagField = createTextField(parent);
- endTagField.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- updateEndTag(endTagField.getText());
- }
- });
- final int endTagIncludeFlags = TagSelectionArea.INCLUDE_VERSIONS | TagSelectionArea.INCLUDE_BRANCHES | TagSelectionArea.INCLUDE_HEAD_TAG;
- TagContentAssistProcessor.createContentAssistant(endTagField, tagSource, endTagIncludeFlags);
- endTagBrowseButton = createPushButton(parent, Policy.bind("MergeWizardPage.3")); //$NON-NLS-1$
- endTagBrowseButton.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- TagSelectionDialog dialog = new TagSelectionDialog(getShell(), getTagSource(),
- Policy.bind("MergeWizardPage.4"), //$NON-NLS-1$
- Policy.bind("MergeWizardPage.5"), //$NON-NLS-1$
- endTagIncludeFlags,
- false, IHelpContextIds.MERGE_END_PAGE);
- if (dialog.open() == Dialog.OK) {
- CVSTag selectedTag = dialog.getResult();
- setEndTag(selectedTag);
- }
- }
- });
- }
-
- private void createStartTagArea(Composite parent) {
- createWrappingLabel(parent, Policy.bind("MergeWizardPage.6"), 0, 2); //$NON-NLS-1$
- startTagField = createTextField(parent);
- startTagField.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- updateStartTag(startTagField.getText());
- }
- });
- TagContentAssistProcessor.createContentAssistant(startTagField, tagSource, TagSelectionArea.INCLUDE_VERSIONS);
- startTagBrowseButton = createPushButton(parent, Policy.bind("MergeWizardPage.7")); //$NON-NLS-1$
- startTagBrowseButton.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- TagSelectionDialog dialog = new TagSelectionDialog(getShell(), getTagSource(),
- Policy.bind("MergeWizardPage.8"), //$NON-NLS-1$
- Policy.bind("MergeWizardPage.9"), //$NON-NLS-1$
- TagSelectionDialog.INCLUDE_VERSIONS,
- false, IHelpContextIds.MERGE_START_PAGE);
- if (dialog.open() == Dialog.OK) {
- CVSTag selectedTag = dialog.getResult();
- setStartTag(selectedTag);
- }
- }
- });
- }
-
- protected void updateEndTag(String text) {
- if (endTag == null || !endTag.getName().equals(text)) {
- CVSTag tag = getTagFor(text, false);
- setEndTag(tag);
- }
- updateEnablements();
- }
-
- protected void updateStartTag(String text) {
- if (startTag == null || !startTag.getName().equals(text)) {
- CVSTag tag = getTagFor(text, true);
- setStartTag(tag);
- }
- updateEnablements();
- }
-
- private CVSTag getTagFor(String text, boolean versionsOnly) {
- if (text.equals(CVSTag.DEFAULT.getName())) {
- if (versionsOnly) return null;
- return CVSTag.DEFAULT;
- }
- if (text.equals(CVSTag.BASE.getName())) {
- if (versionsOnly) return null;
- return CVSTag.BASE;
- }
- CVSTag[] tags;
- if (versionsOnly) {
- tags = tagSource.getTags(new int[] { CVSTag.VERSION, CVSTag.DATE });
- } else {
- tags = tagSource.getTags(new int[] { CVSTag.VERSION, CVSTag.BRANCH, CVSTag.DATE });
- }
- for (int i = 0; i < tags.length; i++) {
- CVSTag tag = tags[i];
- if (tag.getName().equals(text)) {
- return tag;
- }
- }
- return null;
- }
-
- protected void setEndTag(CVSTag selectedTag) {
- if (selectedTag == null || endTag == null || !endTag.equals(selectedTag)) {
- endTag = selectedTag;
- if (endTagField != null) {
- String name = endTagField.getText();
- if (endTag != null)
- name = endTag.getName();
- if (!endTagField.getText().equals(name))
- endTagField.setText(name);
- if (startTag == null && endTag != null && endTag.getType() == CVSTag.BRANCH) {
- CVSTag tag = findCommonBaseTag(endTag);
- if (tag != null) {
- setStartTag(tag);
- }
- }
- }
- updateEnablements();
- }
- }
-
- protected void setStartTag(CVSTag selectedTag) {
- if (selectedTag == null || startTag != null || !endTag.equals(selectedTag)) {
- startTag = selectedTag;
- if (startTagField != null) {
- String name = startTagField.getText();
- if (startTag != null)
- name = startTag.getName();
- if (!startTagField.getText().equals(name))
- startTagField.setText(name);
- }
- updateEnablements();
- }
- }
-
- private CVSTag findCommonBaseTag(CVSTag tag) {
- CVSTag[] tags = tagSource.getTags(CVSTag.VERSION);
- for (int i = 0; i < tags.length; i++) {
- CVSTag potentialMatch = tags[i];
- if (potentialMatch.getName().indexOf(tag.getName()) != -1) {
- return potentialMatch;
- }
- }
- return null;
- }
-
- private void updateEnablements() {
- if (endTag == null && endTagField.getText().length() > 0) {
- setErrorMessage(Policy.bind("MergeWizardPage.10")); //$NON-NLS-1$
- } else if (startTag == null && startTagField.getText().length() > 0) {
- setErrorMessage(Policy.bind("MergeWizardPage.11")); //$NON-NLS-1$
- } else if (endTag != null && startTag != null && startTag.equals(endTag)) {
- setErrorMessage(Policy.bind("MergeWizardPage.12")); //$NON-NLS-1$
- } else if (startTag == null && endTag != null && preview) {
- setErrorMessage(Policy.bind("MergeWizardPage.13")); //$NON-NLS-1$
- } else {
- setErrorMessage(null);
- }
- setPageComplete((startTag != null || !preview) && endTag != null && (startTag == null || !startTag.equals(endTag)));
- }
-
- protected TagSource getTagSource() {
- return tagSource;
- }
-
- private Button createPushButton(Composite parent, String label) {
- Button b = new Button(parent, SWT.PUSH);
- b.setText(label);
- b.setLayoutData(new GridData(GridData.END | GridData.HORIZONTAL_ALIGN_FILL));
- return b;
- }
-
- public CVSTag getStartTag() {
- return startTag;
- }
-
- public CVSTag getEndTag() {
- return endTag;
- }
-
- public boolean isPreview() {
- return preview;
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/ModuleSelectionPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/ModuleSelectionPage.java
deleted file mode 100644
index 7df778ff7..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/ModuleSelectionPage.java
+++ /dev/null
@@ -1,325 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.wizards;
-
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.*;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.MouseAdapter;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.core.syncinfo.FolderSyncInfo;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.model.RemoteContentProvider;
-import org.eclipse.team.internal.ccvs.ui.repo.RepositorySorter;
-import org.eclipse.ui.help.WorkbenchHelp;
-import org.eclipse.ui.model.WorkbenchLabelProvider;
-
-public class ModuleSelectionPage extends CVSWizardPage {
- Button useProjectNameButton;
- Button useSpecifiedNameButton;
- private Button selectModuleButton;
- Text text;
- TreeViewer moduleList;
-
- String moduleName;
-
- // The project being associated with the remote module (or null)
- private IProject project;
- private ICVSRepositoryLocation location;
- private boolean badLocation = false;
- private String helpContextId;
- private boolean supportsMultiSelection;
-
- private boolean isFetchingModules = false;
- private Object fetchingModulesLock = new Object();
-
- public ModuleSelectionPage(String pageName, String title, ImageDescriptor titleImage) {
- super(pageName, title, titleImage);
- }
-
- public void setHelpContxtId(String helpContextId) {
- this.helpContextId = helpContextId;
- }
-
- public void createControl(Composite parent) {
- Composite composite = createComposite(parent, 2, false);
-
- if (helpContextId != null)
- WorkbenchHelp.setHelp(composite, helpContextId);
-
- Listener listener = new Listener() {
- public void handleEvent(Event event) {
- updateEnablements(false);
- }
- };
-
- if (project != null) {
- useProjectNameButton = createRadioButton(composite, Policy.bind("ModuleSelectionPage.moduleIsProject"), 2); //$NON-NLS-1$
- useProjectNameButton.addListener(SWT.Selection, listener);
- }
- useSpecifiedNameButton = createRadioButton(composite, Policy.bind("ModuleSelectionPage.specifyModule"), 1); //$NON-NLS-1$
- useSpecifiedNameButton.addListener(SWT.Selection, listener);
-
- text = createTextField(composite);
- text.addListener(SWT.Modify, listener);
-
- selectModuleButton = createRadioButton(composite, Policy.bind("ModuleSelectionPage.2"), 2); //$NON-NLS-1$
- selectModuleButton.addListener(SWT.Selection, listener);
- moduleList = createModuleTree(composite, 2);
-
- // Set the initial enablement
- if (useProjectNameButton != null) {
- useProjectNameButton.setSelection(true);
- useSpecifiedNameButton.setSelection(false);
- } else {
- useSpecifiedNameButton.setSelection(true);
- }
- selectModuleButton.setSelection(false);
- updateEnablements(false);
- setControl(composite);
- Dialog.applyDialogFont(parent);
- }
-
- public void setVisible(boolean visible) {
- super.setVisible(visible);
- if (visible) {
- if (useProjectNameButton != null && useProjectNameButton.getSelection()) {
- useProjectNameButton.setFocus();
- } else if (useSpecifiedNameButton.getSelection()) {
- text.setFocus();
- } else {
- moduleList.getControl().setFocus();
- }
- }
- }
-
- protected void updateEnablements(boolean updateModulesList) {
- if (useProjectNameButton != null && useProjectNameButton.getSelection()) {
- text.setEnabled(false);
- moduleList.getControl().setEnabled(false);
- moduleName = null;
- setPageComplete(true);
- } else if (useSpecifiedNameButton.getSelection()) {
- text.setEnabled(true);
- moduleList.getControl().setEnabled(false);
- moduleName = text.getText();
- if (moduleName.length() == 0) {
- moduleName = null;
- setPageComplete(false);
- } else {
- setPageComplete(true);
- }
- } else if (!badLocation){
- text.setEnabled(false);
- moduleList.getControl().setEnabled(true);
- moduleName = null;
- if (moduleList.getInput() == null || updateModulesList) {
- boolean fetchModules = false;
- // The input is set after the page is shown to avoid
- // fetching if the user wants to specify the name manually
- try {
- // This can be called from different events in the event loop.
- // Ensure that we only fetch the input once
- synchronized (fetchingModulesLock) {
- if (!isFetchingModules) {
- // This the first thread in so fetch the modules
- fetchModules = true;
- isFetchingModules = true;
- }
- }
- if (fetchModules) {
- // Validate the location first since the module fecthing is
- // done in a deferred fashion
- getContainer().run(true, true, new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- try {
- location.validateConnection(monitor);
- } catch (CVSException e) {
- throw new InvocationTargetException(e);
- }
- }
- });
- setModuleListInput();
- }
- } catch (InvocationTargetException e) {
- if (!badLocation) {
- badLocation = true;
- CVSUIPlugin.openError(getShell(), null, null, e);
- // This will null the module list input
- setModuleListInput();
- }
- } catch (InterruptedException e) {
- // Canceled by the user
- } finally {
- synchronized (fetchingModulesLock) {
- if (fetchModules) {
- isFetchingModules = false;
- }
- }
- }
- }
- setPageComplete(internalGetSelectedModules().length > 0);
- }
- }
-
- private ICVSRemoteFolder[] internalGetSelectedModules() {
- if (moduleList != null && moduleList.getControl().isEnabled()) {
- ISelection selection = moduleList.getSelection();
- if (!selection.isEmpty() && selection instanceof IStructuredSelection) {
- IStructuredSelection ss = (IStructuredSelection)selection;
- ArrayList result = new ArrayList();
- for (Iterator iter = ss.iterator(); iter.hasNext();) {
- Object element = iter.next();
- if (element instanceof ICVSRemoteFolder) {
- result.add(element);
- }
-
- }
- return (ICVSRemoteFolder[]) result.toArray(new ICVSRemoteFolder[result.size()]);
- }
- } else {
- ICVSRemoteFolder folder = null;
- if (moduleName != null) {
- folder = internalCreateModuleHandle(moduleName);
- } else {
- if (project != null) {
- folder = internalCreateModuleHandle(project.getName());
- }
- }
- if (folder != null) {
- return new ICVSRemoteFolder[] { folder };
- }
- }
- return new ICVSRemoteFolder[0];
- }
-
- private ICVSRemoteFolder internalCreateModuleHandle(String name) {
- ICVSRepositoryLocation location = getLocation();
- if (location == null) return null;
- return location.getRemoteFolder(name, CVSTag.DEFAULT);
- }
-
- /**
- * Return the selected existing remote folder. If this
- * method returns null
, then getModuleName()
- * can be used to get the name entered manually by the use.
- * @return the selected exisiting remote module
- */
- public ICVSRemoteFolder getSelectedModule() {
- ICVSRemoteFolder[] selectedModules = getSelectedModules();
- if (selectedModules.length > 0) {
- return selectedModules[0];
- } else {
- return null;
- }
- }
-
- public ICVSRemoteFolder[] getSelectedModules() {
- final ICVSRemoteFolder[][] folder = new ICVSRemoteFolder[][] { null };
- Display.getDefault().syncExec(new Runnable() {
- public void run() {
- folder[0] = internalGetSelectedModules();
- }
- });
- return folder[0];
- }
-
- private TreeViewer createModuleTree(Composite composite, int horizontalSpan) {
- Tree tree = new Tree(composite, (supportsMultiSelection ? SWT.MULTI : SWT.SINGLE) | SWT.BORDER);
- GridData data = new GridData(GridData.FILL_BOTH);
- data.horizontalSpan = horizontalSpan;
- tree.setLayoutData(data);
- TreeViewer result = new TreeViewer(tree) {
- /*
- * Fix to allow filtering to be used without triggering fetching
- * of the contents of all children (see bug 62268)
- */
- public boolean isExpandable(Object element) {
- ITreeContentProvider cp = (ITreeContentProvider) getContentProvider();
- if(cp == null)
- return false;
-
- return cp.hasChildren(element);
- }
- };
- result.setContentProvider(new RemoteContentProvider());
- result.setLabelProvider(new WorkbenchLabelProvider());
- result.addFilter(new ViewerFilter() {
- public boolean select(Viewer viewer, Object parentElement, Object element) {
- return !(element instanceof ICVSRemoteFile);
- }
- });
- result.addSelectionChangedListener(new ISelectionChangedListener() {
- public void selectionChanged(SelectionChangedEvent event) {
- updateEnablements(false);
- ICVSRemoteFolder[] modules = internalGetSelectedModules();
- if (modules.length == 1) {
- // There is at 1 module selected
- ICVSRemoteFolder selectedModule = modules[0];
- String repositoryRelativePath = selectedModule.getRepositoryRelativePath();
- if (!repositoryRelativePath.equals(FolderSyncInfo.VIRTUAL_DIRECTORY)) {
- text.setText(repositoryRelativePath);
- }
- } else {
- text.setText(""); //$NON-NLS-1$
- }
- }
- });
- result.getTree().addMouseListener(new MouseAdapter() {
- public void mouseDoubleClick(MouseEvent e) {
- if (getSelectedModule() != null) {
- ModuleSelectionPage.this.getContainer().showPage(getNextPage());
- }
- }
- });
- result.setSorter(new RepositorySorter());
- return result;
- }
-
- private void setModuleListInput() {
- ICVSRepositoryLocation location = getLocation();
- if (location == null || badLocation) return;
- moduleList.setInput(location.getRemoteFolder(ICVSRemoteFolder.REPOSITORY_ROOT_FOLDER_NAME, CVSTag.DEFAULT));
- }
-
- private ICVSRepositoryLocation getLocation() {
- return location;
- }
-
- public void setLocation(ICVSRepositoryLocation location) {
- boolean refresh = location != null && !location.equals(this.location);
- this.location = location;
- badLocation = false;
- if (moduleList != null) {
- updateEnablements(refresh);
- }
- }
-
- public void setProject(IProject project) {
- this.project = project;
- }
- public void setSupportsMultiSelection(boolean supportsMultiSelection) {
- this.supportsMultiSelection = supportsMultiSelection;
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/NewLocationWizard.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/NewLocationWizard.java
deleted file mode 100644
index b45b81f40..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/NewLocationWizard.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.wizards;
-
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.Properties;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.dialogs.*;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-import org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.internal.ccvs.core.util.KnownRepositories;
-import org.eclipse.team.internal.ccvs.ui.*;
-
-public class NewLocationWizard extends Wizard {
- private ConfigurationWizardMainPage mainPage;
-
- private Properties properties = null;
-
- /**
- * Return the settings used for all location pages
- */
- public static IDialogSettings getLocationDialogSettings() {
- IDialogSettings workbenchSettings = CVSUIPlugin.getPlugin().getDialogSettings();
- IDialogSettings section = workbenchSettings.getSection("NewLocationWizard");//$NON-NLS-1$
- if (section == null) {
- section = workbenchSettings.addNewSection("NewLocationWizard");//$NON-NLS-1$
- }
- return section;
- }
-
- public NewLocationWizard() {
- IDialogSettings section = getLocationDialogSettings();
- setDialogSettings(section);
- setWindowTitle(Policy.bind("NewLocationWizard.title")); //$NON-NLS-1$
- }
-
-
- public NewLocationWizard(Properties initialProperties) {
- this();
- this.properties = initialProperties;
- }
-
- /**
- * Creates the wizard pages
- */
- public void addPages() {
- mainPage = new ConfigurationWizardMainPage("repositoryPage1", Policy.bind("NewLocationWizard.heading"), CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_WIZBAN_NEW_LOCATION)); //$NON-NLS-1$ //$NON-NLS-2$
- if (properties != null) {
- mainPage.setProperties(properties);
- }
- mainPage.setShowValidate(true);
- mainPage.setDescription(Policy.bind("NewLocationWizard.description")); //$NON-NLS-1$
- mainPage.setDialogSettings(getDialogSettings());
- addPage(mainPage);
- }
- /*
- * @see IWizard#performFinish
- */
- public boolean performFinish() {
- final ICVSRepositoryLocation[] location = new ICVSRepositoryLocation[] { null };
- boolean keepLocation = false;
- try {
- // Create a handle to a repository location
- location[0] = mainPage.getLocation();
- // Add the location quitely so we can validate
- location[0] = KnownRepositories.getInstance().addRepository(location[0], false /* don't tell anybody */);
-
- if (mainPage.getValidate()) {
- try {
- new ProgressMonitorDialog(getShell()).run(true, true, new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- try {
- location[0].validateConnection(monitor);
- } catch (TeamException e) {
- throw new InvocationTargetException(e);
- }
- }
- });
- keepLocation = true;
- } catch (InterruptedException e) {
- // Cancelled by user. Fall through to dispose of location
- } catch (InvocationTargetException e) {
- Throwable t = e.getTargetException();
- if (t instanceof TeamException) {
- throw (TeamException)t;
- } else if (t instanceof Exception) {
- throw CVSException.wrapException((Exception)t);
- } else {
- throw CVSException.wrapException(e);
- }
- }
- } else {
- keepLocation = true;
- }
- } catch (TeamException e) {
- if (location[0] == null) {
- // Exception creating the root, we cannot continue
- CVSUIPlugin.openError(getContainer().getShell(), Policy.bind("NewLocationWizard.exception"), null, e); //$NON-NLS-1$
- return false;
- } else {
- // Exception validating. We can continue if the user wishes.
- IStatus error = e.getStatus();
- if (error.isMultiStatus() && error.getChildren().length == 1) {
- error = error.getChildren()[0];
- }
-
- if (error.isMultiStatus()) {
- CVSUIPlugin.openError(getContainer().getShell(), Policy.bind("NewLocationWizard.validationFailedTitle"), null, e); //$NON-NLS-1$
- } else {
- keepLocation = MessageDialog.openQuestion(getContainer().getShell(),
- Policy.bind("NewLocationWizard.validationFailedTitle"), //$NON-NLS-1$
- Policy.bind("NewLocationWizard.validationFailedText", new Object[] {error.getMessage()})); //$NON-NLS-1$
- }
- }
- }
- if (keepLocation) {
- KnownRepositories.getInstance().addRepository(location[0], true /* let the world know */);
- } else {
- KnownRepositories.getInstance().disposeRepository(location[0]);
- }
- return keepLocation;
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/RepositorySelectionPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/RepositorySelectionPage.java
deleted file mode 100644
index 4d02c7d57..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/RepositorySelectionPage.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.wizards;
-
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.*;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.internal.ccvs.ui.*;
-import org.eclipse.ui.help.WorkbenchHelp;
-import org.eclipse.ui.model.*;
-
-/**
- * First wizard page for importing a project into a CVS repository.
- * This page prompts the user to select an existing repo or create a new one.
- * If the user selected an existing repo, then getLocation() will return it.
- */
-public class RepositorySelectionPage extends CVSWizardPage {
- private TableViewer table;
- private Button useExistingRepo;
- private Button useNewRepo;
-
- private ICVSRepositoryLocation result;
-
- String extendedDescription;
-
- /**
- * RepositorySelectionPage constructor.
- *
- * @param pageName the name of the page
- * @param title the title of the page
- * @param titleImage the image for the page
- */
- public RepositorySelectionPage(String pageName, String title, ImageDescriptor titleImage) {
- super(pageName, title, titleImage);
- }
- protected TableViewer createTable(Composite parent, int span) {
- Table table = new Table(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER | SWT.SINGLE | SWT.FULL_SELECTION);
- GridData data = new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL);
- data.horizontalSpan = span;
- data.widthHint = 200;
- table.setLayoutData(data);
- TableLayout layout = new TableLayout();
- layout.addColumnData(new ColumnWeightData(100, true));
- table.setLayout(layout);
- TableColumn col = new TableColumn(table, SWT.NONE);
- col.setResizable(true);
-
- return new TableViewer(table);
- }
- /**
- * Creates the UI part of the page.
- *
- * @param parent the parent of the created widgets
- */
- public void createControl(Composite parent) {
- Composite composite = createComposite(parent, 1, false);
- // set F1 help
- WorkbenchHelp.setHelp(composite, IHelpContextIds.SHARING_SELECT_REPOSITORY_PAGE);
- if (extendedDescription == null) {
- extendedDescription = Policy.bind("RepositorySelectionPage.description"); //$NON-NLS-1$
- }
- createWrappingLabel(composite, extendedDescription, 0 /* indent */, 1 /* columns */);
-
- useNewRepo = createRadioButton(composite, Policy.bind("RepositorySelectionPage.useNew"), 1); //$NON-NLS-1$
-
- useExistingRepo = createRadioButton(composite, Policy.bind("RepositorySelectionPage.useExisting"), 1); //$NON-NLS-1$
- table = createTable(composite, 1);
- table.setContentProvider(new WorkbenchContentProvider());
- table.setLabelProvider(new WorkbenchLabelProvider());
- table.addSelectionChangedListener(new ISelectionChangedListener() {
- public void selectionChanged(SelectionChangedEvent event) {
- result = (ICVSRepositoryLocation)((IStructuredSelection)table.getSelection()).getFirstElement();
- setPageComplete(true);
- }
- });
- table.addDoubleClickListener(new IDoubleClickListener() {
- public void doubleClick(DoubleClickEvent event) {
- getContainer().showPage(getNextPage());
- }
- });
-
- useExistingRepo.addListener(SWT.Selection, new Listener() {
- public void handleEvent(Event event) {
- if (useNewRepo.getSelection()) {
- table.getTable().setEnabled(false);
- result = null;
- } else {
- table.getTable().setEnabled(true);
- result = (ICVSRepositoryLocation)((IStructuredSelection)table.getSelection()).getFirstElement();
- }
- setPageComplete(true);
- }
- });
-
- setControl(composite);
-
- initializeValues();
- Dialog.applyDialogFont(parent);
- }
- /**
- * Initializes states of the controls.
- */
- private void initializeValues() {
- ICVSRepositoryLocation[] locations = CVSUIPlugin.getPlugin().getRepositoryManager().getKnownRepositoryLocations();
- AdaptableList input = new AdaptableList(locations);
- table.setInput(input);
- if (locations.length == 0) {
- useNewRepo.setSelection(true);
- } else {
- useExistingRepo.setSelection(true);
- table.setSelection(new StructuredSelection(locations[0]));
- }
- }
-
- public ICVSRepositoryLocation getLocation() {
- return result;
- }
- public void setVisible(boolean visible) {
- super.setVisible(visible);
- if (visible) {
- useExistingRepo.setFocus();
- }
- }
-
- public void setExtendedDescription(String extendedDescription) {
- this.extendedDescription = extendedDescription;
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/RestoreFromRepositoryFileSelectionPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/RestoreFromRepositoryFileSelectionPage.java
deleted file mode 100644
index 1133bf716..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/RestoreFromRepositoryFileSelectionPage.java
+++ /dev/null
@@ -1,558 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.wizards;
-
-import java.io.BufferedInputStream;
-import java.io.InputStream;
-import java.lang.reflect.InvocationTargetException;
-import java.util.*;
-
-import org.eclipse.compare.*;
-import org.eclipse.core.resources.*;
-import org.eclipse.core.runtime.*;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.*;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Widget;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.variants.IResourceVariant;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot;
-import org.eclipse.team.internal.ccvs.core.syncinfo.FolderSyncInfo;
-import org.eclipse.team.internal.ccvs.core.util.KnownRepositories;
-import org.eclipse.team.internal.ccvs.ui.*;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.ui.help.WorkbenchHelp;
-import org.eclipse.ui.model.WorkbenchLabelProvider;
-import org.eclipse.ui.views.navigator.ResourceSorter;
-
-/**
- * Select the files to restore
- */
-public class RestoreFromRepositoryFileSelectionPage extends CVSWizardPage {
- private TreeViewer fileTree;
- private CompareViewerPane fileSelectionPane;
- private CompareViewerPane revisionSelectionPane;
- private CheckboxTableViewer revisionsTable;
- private CompareViewerSwitchingPane fileContentPane;
-
- private HistoryTableProvider historyTableProvider;
- private AdaptableHierarchicalResourceList treeInput = new AdaptableHierarchicalResourceList(ResourcesPlugin.getWorkspace().getRoot(), new IResource[0]);
-
- private IContainer folder;
- private IFile selectedFile;
- private ILogEntry selectedRevision;
- private Map entriesCache = new HashMap();
- private Map filesToRestore = new HashMap();
-
- private static final int WIZARD_WIDTH = 550;
-
- class HistoryInput implements ITypedElement, IEncodedStreamContentAccessor, IModificationDate {
- IFile file;
- ILogEntry logEntry;
-
- HistoryInput(IFile file, ILogEntry logEntry) {
- this.file= file;
- this.logEntry = logEntry;
- }
- public InputStream getContents() throws CoreException {
- IStorage s = getStorageFromLogEntry(logEntry);
- if (s == null) return null;
- return new BufferedInputStream(s.getContents());
- }
- public String getName() {
- return file.getName();
- }
- public String getType() {
- return file.getFileExtension();
- }
- public Image getImage() {
- return CompareUI.getImage(file);
- }
- public long getModificationDate() {
- return logEntry.getDate().getTime();
- }
- public String getCharset() throws CoreException {
- IStorage s = getStorageFromLogEntry(logEntry);
- if (s instanceof IEncodedStorage) {
- return ((IEncodedStorage)s).getCharset();
- }
- return null;
- }
- }
-
- /**
- * Constructor for RestoreFromRepositoryFileSelectionPage.
- * @param pageName
- * @param title
- * @param titleImage
- * @param description
- */
- public RestoreFromRepositoryFileSelectionPage(
- String pageName,
- String title,
- ImageDescriptor titleImage,
- String description) {
- super(pageName, title, titleImage, description);
- }
-
- /**
- * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
- */
- public void createControl(Composite parent) {
- Composite composite= createComposite(parent, 1, false);
- setControl(composite);
-
- WorkbenchHelp.setHelp(composite, IHelpContextIds.RESTORE_FROM_REPOSITORY_FILE_SELECTION_PAGE);
-
- // Top and bottom panes: top is the two selection panes, bottom is the file content viewer
- Splitter vsplitter= new Splitter(composite, SWT.VERTICAL);
- GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL
- | GridData.VERTICAL_ALIGN_FILL | GridData.GRAB_VERTICAL);
- // Set the width to be extra wide to accomodate the two selection lists
- data.widthHint = WIZARD_WIDTH;
- vsplitter.setLayoutData(data);
-
- // Top left and top right panes: the left for the files, the right for the log entries
- Splitter hsplitter= new Splitter(vsplitter, SWT.HORIZONTAL);
-
- // Top left: file selection pane
- fileSelectionPane = new CompareViewerPane(hsplitter, SWT.BORDER | SWT.FLAT);
- data = new GridData(GridData.FILL_HORIZONTAL | GridData.FILL_VERTICAL);
- fileSelectionPane.setLayoutData(data);
- fileTree = createFileSelectionTree(fileSelectionPane);
-
- // Top right: Revision selection pane
- revisionSelectionPane = new CompareViewerPane(hsplitter, SWT.BORDER | SWT.FLAT);
- data = new GridData(GridData.FILL_HORIZONTAL | GridData.FILL_VERTICAL);
- revisionSelectionPane.setLayoutData(data);
- historyTableProvider = new HistoryTableProvider();
- revisionsTable = createRevisionSelectionTable(revisionSelectionPane, historyTableProvider);
- revisionSelectionPane.setText(Policy.bind("RestoreFromRepositoryFileSelectionPage.emptyRevisionPane")); //$NON-NLS-1$
-
- // Bottom: File content viewer
- fileContentPane = new CompareViewerSwitchingPane(vsplitter, SWT.BORDER | SWT.FLAT) {
- protected Viewer getViewer(Viewer oldViewer, Object input) {
- return CompareUI.findContentViewer(oldViewer, input, this, null);
- }
- };
-
- initializeValues();
- updateWidgetEnablements();
- Dialog.applyDialogFont(parent);
- }
-
- protected CheckboxTableViewer createRevisionSelectionTable(CompareViewerPane composite, HistoryTableProvider tableProvider) {
- CheckboxTableViewer table = tableProvider.createCheckBoxTable(composite);
- table.setContentProvider(new IStructuredContentProvider() {
- public Object[] getElements(Object inputElement) {
- ILogEntry[] entries = getSelectedEntries();
- if (entries != null) return entries;
- return new Object[0];
- }
- public void dispose() {
- }
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
- }
- });
- table.setInput(this);
- table.getTable().addSelectionListener(
- new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- // Handle check selection in the check state listener
- if (e.detail == SWT.CHECK) return;
- handleRevisionSelection(e.item);
- }
- }
- );
- table.addCheckStateListener(new ICheckStateListener() {
- public void checkStateChanged(CheckStateChangedEvent event) {
- handleRevisionChecked(event);
- }
- });
- composite.setContent(table.getControl());
- return table;
- }
-
- protected TreeViewer createFileSelectionTree(CompareViewerPane composite) {
- TreeViewer tree = new TreeViewer(composite, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
- tree.setUseHashlookup(true);
- tree.setContentProvider(treeInput.getTreeContentProvider());
- tree.setLabelProvider(
- new DecoratingLabelProvider(
- new WorkbenchLabelProvider() {
- protected String decorateText(String input, Object element) {
- String text;
- if (element instanceof IFolder && element.equals(folder)) {
- text = super.decorateText(folder.getProjectRelativePath().toString(), element);
- } else {
- ILogEntry entry = (ILogEntry)filesToRestore.get(element);
- text = super.decorateText(input, element);
- if (entry != null) {
- text = Policy.bind("RestoreFromRepositoryFileSelectionPage.fileToRestore", text, entry.getRevision()); //$NON-NLS-1$
- }
- }
- return text;
- }
- },
- CVSUIPlugin.getPlugin().getWorkbench().getDecoratorManager().getLabelDecorator()));
- tree.setSorter(new ResourceSorter(ResourceSorter.NAME));
- tree.setInput(treeInput);
-
- GridData data = new GridData(GridData.FILL_BOTH | GridData.GRAB_VERTICAL);
- tree.getTree().setLayoutData(data);
- tree.addSelectionChangedListener(new ISelectionChangedListener() {
- public void selectionChanged(SelectionChangedEvent event) {
- handleFileSelection(event);
- }
- });
- composite.setContent(tree.getControl());
- return tree;
- }
-
- /**
- * Method updateWidgetEnablements.
- */
- private void updateWidgetEnablements() {
-
- if (filesToRestore.isEmpty()) {
- setPageComplete(false);
- setErrorMessage(null);
- return;
- }
-
- for (Iterator iter = filesToRestore.keySet().iterator(); iter.hasNext();) {
- IFile file = (IFile) iter.next();
- if (file.exists()) {
- setPageComplete(false);
- setErrorMessage(Policy.bind("RestoreFromRepositoryFileSelectionPage.fileExists", file.getName())); //$NON-NLS-1$
- return;
- }
-
- ILogEntry entry = (ILogEntry) filesToRestore.get(file);
- if (entry.isDeletion()) {
- setPageComplete(false);
- setErrorMessage(Policy.bind("RestoreFromRepositoryFileSelectionPage.revisionIsDeletion", entry.getRevision(), file.getName())); //$NON-NLS-1$
- return;
- }
- }
- setPageComplete(true);
- setErrorMessage(null);
- }
-
- /**
- * Method initializeValues.
- */
- private void initializeValues() {
- refresh();
- }
-
- /**
- * Sets the folder.
- * @param folder The folder to set
- */
- public void setInput(IContainer folder, ICVSFile[] files) {
- if (folder.equals(this.folder)) return;
- this.folder = folder;
- setTreeInput(folder, files);
- initializeValues();
- updateWidgetEnablements();
- }
-
- /*
- * Set the resource tree input to the files that were deleted
- */
- private void setTreeInput(IContainer folder, ICVSFile[] cvsFiles) {
- reset();
- IResource[] files = new IResource[cvsFiles.length];
- for (int i = 0; i < cvsFiles.length; i++) {
- try {
- files[i] = cvsFiles[i].getIResource();
- } catch (CVSException e) {
- // In practive, this error shold not occur.
- // It may if there is an existing folder with a name that matches the file
- // but this is bad in general when using CVS
- CVSUIPlugin.log(e);
- }
- }
- treeInput.setResources(files);
- // kludge to avoid auto-selection of first element
- // set the root to the folder's parent so the folder appears in the tree
- treeInput.setRoot(folder.getParent());
- refresh();
- }
-
- private void reset() {
- this.selectedFile = null;
- this.selectedRevision = null;
- treeInput.setResources(null);
- filesToRestore = new HashMap();
- if (fileContentPane != null && !fileContentPane.isDisposed()) {
- fileContentPane.setInput(null);
- }
- updateWidgetEnablements();
- }
-
- /**
- * Method refresh.
- */
- private void refresh() {
- if (folder == null) return;
-
- if (fileSelectionPane != null && !fileSelectionPane.isDisposed()) {
- fileSelectionPane.setText(Policy.bind("RestoreFromRepositoryFileSelectionPage.fileSelectionPaneTitle", folder.getProject().getName())); //$NON-NLS-1$
- fileSelectionPane.setImage(CompareUI.getImage(folder.getProject()));
- }
-
- if (revisionSelectionPane != null && !revisionSelectionPane.isDisposed()) {
- if (selectedFile == null) {
- revisionSelectionPane.setText(Policy.bind("RestoreFromRepositoryFileSelectionPage.emptyRevisionPane")); //$NON-NLS-1$
- revisionSelectionPane.setImage(null);
- }
- }
-
- // Empty the file content viewer
- if (fileContentPane != null && !fileContentPane.isDisposed()) {
- fileContentPane.setInput(null);
- }
-
- // refresh the tree
- if (fileTree != null) {
- // If the parent folder is in the tree, make sure it is expanded
- fileTree.setExpandedState(folder, true);
- fileTree.refresh();
- }
- if (revisionsTable != null)
- revisionsTable.refresh();
- }
-
- /*
- * Set the log entry table input to the fetched entries in response to a file selection
- */
- private void setLogEntryTableInput(ILogEntry[] entries) {
- this.selectedRevision = null;
- // Refresh the table so it picks up the selected entries through its content provider
- revisionsTable.refresh();
- // Check the previously checked entry if one exists
- ILogEntry selectedEntry = (ILogEntry)filesToRestore.get(selectedFile);
- if (selectedEntry != null) {
- revisionsTable.setChecked(selectedEntry, true);
- }
- // Disable entries that represent deletions since they can't be loaded
- for (int i = 0; i < entries.length; i++) {
- ILogEntry entry = entries[i];
- if (entry.isDeletion()) {
- revisionsTable.setGrayed(entry, true);
- }
- }
- // Set the titlebar text for the revisions table
- revisionSelectionPane.setText(Policy.bind("RestoreFromRepositoryFileSelectionPage.revisionSelectionPaneTitle", selectedFile.getName())); //$NON-NLS-1$
- revisionSelectionPane.setImage(CompareUI.getImage(selectedFile));
- // Clear the file content pane
- fileContentPane.setInput(null);
- }
-
- private void handleFileSelection(SelectionChangedEvent event) {
- ISelection selection = event.getSelection();
- if (selection == null || selection.isEmpty()) {
- clearSelection();
- } else {
- if (selection instanceof StructuredSelection) {
- StructuredSelection structuredSelection = (StructuredSelection) selection;
- IResource resource = (IResource)structuredSelection.getFirstElement();
- if (resource instanceof IFile) {
- handleFileSelection((IFile) resource);
- } else {
- clearSelection();
- }
- }
- }
- }
-
- /**
- * Method handleFileSelection.
- * @param file
- */
- private void handleFileSelection(IFile file) {
- if (this.selectedFile == file) return;
- this.selectedFile = file;
- if (entriesCache.get(file) == null) {
- try {
-
- // First, we need to create a remote file handle so we can get the log entries
- ICVSFolder parent = CVSWorkspaceRoot.getCVSFolderFor(file.getParent());
- FolderSyncInfo info = parent.getFolderSyncInfo();
- ICVSRepositoryLocation location = KnownRepositories.getInstance().getRepository(info.getRoot());
- final ICVSRemoteFile remoteFile = location.getRemoteFile(new Path(null, info.getRepository()).append(file.getName()).toString(), CVSTag.DEFAULT);
-
- // Then we need to fetch the log entries
- getContainer().run(true, true, new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- try {
- // fetch the entries
- ILogEntry[] entries = remoteFile.getLogEntries(monitor);
- // cache the entries with the selected file
- entriesCache.put(selectedFile, entries);
- } catch (TeamException e) {
- throw new InvocationTargetException(e);
- }
- }
- });
- } catch (CVSException e) {
- setErrorMessage(
- CVSUIPlugin.openError(getShell(), null, null, e, CVSUIPlugin.PERFORM_SYNC_EXEC)
- .getMessage());
- return;
- } catch (InvocationTargetException e) {
- setErrorMessage(
- CVSUIPlugin.openError(getShell(), null, null, e, CVSUIPlugin.PERFORM_SYNC_EXEC)
- .getMessage());
- return;
- } catch (InterruptedException e) {
- return;
- }
- }
-
- // Set the log table to display the entries for the selected file
- setLogEntryTableInput(getSelectedEntries());
- }
-
- private ILogEntry[] getSelectedEntries() {
- return (ILogEntry[])entriesCache.get(selectedFile);
- }
-
- private IStorage getStorageFromLogEntry(final ILogEntry logEntry) {
- final IStorage[] s = new IStorage[] { null };
- try {
- getContainer().run(true, true, new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- try {
- ICVSRemoteFile remoteFile = logEntry.getRemoteFile();
- s[0] = ((IResourceVariant)remoteFile).getStorage(monitor);
- } catch (TeamException e) {
- throw new InvocationTargetException(e);
- }
- }
- });
- } catch (InvocationTargetException e) {
- setErrorMessage(
- CVSUIPlugin.openError(getShell(), null, null, e, CVSUIPlugin.PERFORM_SYNC_EXEC)
- .getMessage());
- return null;
- } catch (InterruptedException e) {
- return null;
- }
- return s[0];
- }
-
- private void handleRevisionChecked(CheckStateChangedEvent event) {
- if (event.getChecked()) {
- revisionsTable.setCheckedElements(new Object[] {event.getElement()});
- filesToRestore.put(selectedFile, event.getElement());
- }
- if (revisionsTable.getCheckedElements().length == 0) {
- filesToRestore.remove(selectedFile);
- }
- fileTree.refresh();
- updateWidgetEnablements();
- }
-
- /*
- * A revision in the revision table has been selected.
- * Populate the file contents pane with the selected log entry.
- */
- private void handleRevisionSelection(Widget w) {
- if (fileContentPane != null && !fileContentPane.isDisposed()) {
- Object o= w.getData();
- if (o instanceof ILogEntry) {
- ILogEntry selected = (ILogEntry) o;
- if (this.selectedRevision == selected) return;
- this.selectedRevision = selected;
- if (selected.isDeletion()) {
- fileContentPane.setInput(null);
- } else {
- fileContentPane.setInput(new HistoryInput(selectedFile, selected));
- fileContentPane.setText(getEditionLabel(selectedFile, selected));
- fileContentPane.setImage(CompareUI.getImage(selectedFile));
- }
- } else {
- fileContentPane.setInput(null);
- }
- }
- }
- /**
- * Method getEditionLabel.
- * @param selectedFile
- * @param selected
- * @return String
- */
- private String getEditionLabel(IFile selectedFile, ILogEntry selected) {
- return Policy.bind("RestoreFromRepositoryFileSelectionPage.fileContentPaneTitle", //$NON-NLS-1$
- new Object[] { selectedFile.getName(), selected.getRevision(), selectedFile.getFullPath().makeRelative().removeLastSegments(1).toString() });
- }
-
- public boolean restoreSelectedFiles() {
- try {
- getContainer().run(true, true, new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- try {
- monitor.beginTask(null, 100 * filesToRestore.size());
- for (Iterator iter = filesToRestore.keySet().iterator();iter.hasNext();) {
- IFile file = (IFile) iter.next();
- ILogEntry entry = (ILogEntry)filesToRestore.get(file);
- ensureParentExists(file);
- file.create(entry.getRemoteFile().getContents(Policy.subMonitorFor(monitor, 50)), false, Policy.subMonitorFor(monitor, 50));
- }
- } catch (TeamException e) {
- throw new InvocationTargetException(e);
- } catch (CoreException e) {
- throw new InvocationTargetException(e);
- } finally {
- monitor.done();
- }
- }
- });
- } catch (InvocationTargetException e) {
- setErrorMessage(
- CVSUIPlugin.openError(getShell(), null, null, e, CVSUIPlugin.PERFORM_SYNC_EXEC)
- .getMessage());
- return false;
- } catch (InterruptedException e) {
- return false;
- }
- return true;
- }
-
- /**
- * Method ensureParentExists.
- * @param file
- */
- private void ensureParentExists(IResource resource) throws CoreException {
- IContainer parent = resource.getParent();
- if (!parent.exists() && parent.getType() == IResource.FOLDER) {
- ensureParentExists(parent);
- ((IFolder)parent).create(false, true, null);
- }
- }
-
- private void clearSelection() {
- this.selectedFile = null;
- this.selectedRevision = null;
- refresh();
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/RestoreFromRepositoryWizard.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/RestoreFromRepositoryWizard.java
deleted file mode 100644
index 960671851..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/RestoreFromRepositoryWizard.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.wizards;
-
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.team.internal.ccvs.core.ICVSFile;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.ICVSUIConstants;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-
-/**
- * This wizard allows the user to show deleted resources in the history view
- */
-public class RestoreFromRepositoryWizard extends Wizard {
-
- private RestoreFromRepositoryFileSelectionPage fileSelectionPage;
- private IContainer parent;
- private ICVSFile[] files;
-
- /**
- * Constructor for RestoreFromRepositoryWizard.
- */
- public RestoreFromRepositoryWizard(IContainer parent, ICVSFile[] files) {
- this.parent = parent;
- this.files = files;
- setWindowTitle(Policy.bind("RestoreFromRepositoryWizard.fileSelectionPageTitle")); //$NON-NLS-1$
- }
-
- /**
- * @see org.eclipse.jface.wizard.IWizard#performFinish()
- */
- public boolean performFinish() {
- return fileSelectionPage.restoreSelectedFiles();
- }
-
- /**
- * @see org.eclipse.jface.wizard.IWizard#addPages()
- */
- public void addPages() {
- setNeedsProgressMonitor(true);
- ImageDescriptor substImage = CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_WIZBAN_CHECKOUT);
-
- fileSelectionPage = new RestoreFromRepositoryFileSelectionPage("FileSelectionPage", Policy.bind("RestoreFromRepositoryWizard.fileSelectionPageTitle"), substImage, Policy.bind("RestoreFromRepositoryWizard.fileSelectionPageDescription")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- fileSelectionPage.setInput(parent, files);
- addPage(fileSelectionPage);
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/SharingWizard.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/SharingWizard.java
deleted file mode 100644
index 9b3651bcc..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/SharingWizard.java
+++ /dev/null
@@ -1,548 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.wizards;
-
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.wizard.IWizardPage;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.core.RepositoryProvider;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot;
-import org.eclipse.team.internal.ccvs.core.syncinfo.FolderSyncInfo;
-import org.eclipse.team.internal.ccvs.core.util.KnownRepositories;
-import org.eclipse.team.internal.ccvs.ui.*;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.operations.*;
-import org.eclipse.team.internal.ccvs.ui.subscriber.WorkspaceSynchronizeParticipant;
-import org.eclipse.team.internal.ccvs.ui.tags.*;
-import org.eclipse.team.internal.ccvs.ui.tags.TagSourceWorkbenchAdapter;
-import org.eclipse.team.internal.ccvs.ui.tags.TagSource;
-import org.eclipse.team.ui.IConfigurationWizard;
-import org.eclipse.ui.IWorkbench;
-
-/**
- * This wizard helps the user to import a new project in their workspace
- * into a CVS repository for the first time.
- */
-public class SharingWizard extends Wizard implements IConfigurationWizard, ICVSWizard {
- // The project to configure
- private IProject project;
-
- // The autoconnect page is used if CVS/ directories already exist.
- private ConfigurationWizardAutoconnectPage autoconnectPage;
-
- // The import page is used if CVS/ directories do not exist.
- private RepositorySelectionPage locationPage;
-
- // The page that prompts the user for connection information.
- private ConfigurationWizardMainPage createLocationPage;
-
- // The page that prompts the user for module name.
- private ModuleSelectionPage modulePage;
-
- // The page that lets the user pick a branch to share against
- private TagSelectionWizardPage tagPage;
-
- // The page that allows the user to commit or update resources
- private SharingWizardSyncPage syncPage;
-
- // Keep track of location state so we know what to do at the end
- private ICVSRepositoryLocation location;
- private boolean isNewLocation;
-
- // Keep track of the folder that existed the last time we checked
- private ICVSRemoteFolder existingRemote;
-
- public SharingWizard() {
- IDialogSettings cvsSettings = CVSUIPlugin.getPlugin().getDialogSettings();
- IDialogSettings section = cvsSettings.getSection("SharingWizard");//$NON-NLS-1$
- if (section == null) {
- section = cvsSettings.addNewSection("SharingWizard");//$NON-NLS-1$
- }
- setDialogSettings(section);
- setNeedsProgressMonitor(true);
- setWindowTitle(Policy.bind("SharingWizard.title")); //$NON-NLS-1$
- }
-
- public void addPages() {
- ImageDescriptor sharingImage = CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_WIZBAN_SHARE);
- if (doesCVSDirectoryExist()) {
- autoconnectPage = new ConfigurationWizardAutoconnectPage("autoconnectPage", Policy.bind("SharingWizard.autoConnectTitle"), sharingImage); //$NON-NLS-1$ //$NON-NLS-2$
- autoconnectPage.setProject(project);
- autoconnectPage.setDescription(Policy.bind("SharingWizard.autoConnectTitleDescription")); //$NON-NLS-1$
- addPage(autoconnectPage);
- } else {
- ICVSRepositoryLocation[] locations = CVSUIPlugin.getPlugin().getRepositoryManager().getKnownRepositoryLocations();
- if (locations.length > 0) {
- locationPage = new RepositorySelectionPage("importPage", Policy.bind("SharingWizard.importTitle"), sharingImage); //$NON-NLS-1$ //$NON-NLS-2$
- locationPage.setDescription(Policy.bind("SharingWizard.importTitleDescription")); //$NON-NLS-1$
- addPage(locationPage);
- }
- createLocationPage = new ConfigurationWizardMainPage("createLocationPage", Policy.bind("SharingWizard.enterInformation"), sharingImage); //$NON-NLS-1$ //$NON-NLS-2$
- createLocationPage.setDescription(Policy.bind("SharingWizard.enterInformationDescription")); //$NON-NLS-1$
- createLocationPage.setCVSWizard(this);
- createLocationPage.setDialogSettings(NewLocationWizard.getLocationDialogSettings());
- addPage(createLocationPage);
- modulePage = new ModuleSelectionPage("modulePage", Policy.bind("SharingWizard.enterModuleName"), sharingImage); //$NON-NLS-1$ //$NON-NLS-2$
- modulePage.setDescription(Policy.bind("SharingWizard.enterModuleNameDescription")); //$NON-NLS-1$
- modulePage.setCVSWizard(this);
- modulePage.setProject(project);
- modulePage.setHelpContxtId(IHelpContextIds.SHARING_MODULE_PAGE);
- addPage(modulePage);
-
- addTagPage(sharingImage);
- addSyncPage(sharingImage);
- }
- }
-
- private void addTagPage(ImageDescriptor sharingImage) {
- tagPage = new TagSelectionWizardPage("tagPage", //$NON-NLS-1$
- Policy.bind("SharingWizard.selectTagTitle"), //$NON-NLS-1$
- sharingImage,
- Policy.bind("SharingWizard.selectTag"), //$NON-NLS-1$
- TagSource.EMPTY, // start with an empty tag source
- TagSourceWorkbenchAdapter.INCLUDE_HEAD_TAG | TagSourceWorkbenchAdapter.INCLUDE_BRANCHES); //$NON-NLS-1$
- tagPage.setCVSWizard(this);
- tagPage.setHelpContxtId(IHelpContextIds.SHARING_TAG_SELETION_PAGE);
- addPage(tagPage);
- }
-
- private void addSyncPage(ImageDescriptor sharingImage) {
- syncPage = new SharingWizardSyncPage("syncPagePage", //$NON-NLS-1$
- Policy.bind("SharingWizard.23"), //$NON-NLS-1$
- sharingImage,
- Policy.bind("SharingWizard.24")); //$NON-NLS-1$
- syncPage.setProject(project);
- syncPage.setCVSWizard(this);
- addPage(syncPage);
- }
-
- public boolean canFinish() {
- IWizardPage page = getContainer().getCurrentPage();
- return (page == autoconnectPage || page == syncPage);
- }
-
- protected String getMainPageDescription() {
- return Policy.bind("SharingWizard.description"); //$NON-NLS-1$
- }
-
- protected String getMainPageTitle() {
- return Policy.bind("SharingWizard.heading"); //$NON-NLS-1$
- }
-
- public IWizardPage getNextPage(IWizardPage page) {
- // Assume the page is about to be shown when this method is
- // invoked
- return getNextPage(page, true /* about to show*/);
- }
-
- public IWizardPage getNextPage(IWizardPage page, boolean aboutToShow) {
- if (page == autoconnectPage) return null;
- if (page == locationPage) {
- if (locationPage.getLocation() == null) {
- return createLocationPage;
- } else {
- if (aboutToShow) {
- try {
- modulePage.setLocation(getLocation());
- } catch (TeamException e1) {
- CVSUIPlugin.log(e1);
- }
- }
- return modulePage;
- }
- }
- if (page == createLocationPage) {
- if (aboutToShow) {
- try {
- modulePage.setLocation(getLocation());
- } catch (TeamException e1) {
- CVSUIPlugin.log(e1);
- }
- }
- return modulePage;
- }
- try {
- if (page == modulePage) {
- if (aboutToShow) {
- ICVSRemoteFolder remoteFolder = getRemoteFolder();
- if (exists(remoteFolder)) {
- prepareTagPage(remoteFolder);
- return tagPage;
- } else {
- try {
- populateSyncPage(false /* remote exists */);
- } catch (InvocationTargetException e) {
- CVSUIPlugin.openError(getShell(), null, null, e);
- if (!RepositoryProvider.isShared(project)) {
- // Only stay on the current page if the sharing was a total failure
- return null;
- }
- }
- return syncPage;
- }
- } else {
- return syncPage;
- }
- }
- if (page == tagPage) {
- if (aboutToShow) {
- populateSyncPage(true /* remote exists */);
- }
- return syncPage;
- }
- } catch (InvocationTargetException e) {
- // Show the error and fall through to return null as the next page
- CVSUIPlugin.openError(getShell(), null, null, e);
- } catch (InterruptedException e) {
- // The user cancelled. Falll through and return null as the next page.
- }
- return null;
- }
-
- /*
- * @see IWizard#performFinish
- */
- public boolean performFinish() {
- final boolean[] result = new boolean[] { true };
- if (isAutoconnect()) {
- try {
- getContainer().run(true /* fork */, true /* cancel */, new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException {
- try {
- result[0] = autoconnectCVSProject(monitor);
- } catch (TeamException e) {
- throw new InvocationTargetException(e);
- } finally {
- monitor.done();
- }
- }
- });
- } catch (InterruptedException e) {
- return true;
- } catch (InvocationTargetException e) {
- CVSUIPlugin.openError(getContainer().getShell(), null, null, e);
- result[0] = false;
- }
- }
- // Add the location to the provider if it is new
- if (result[0] && isNewLocation) {
- KnownRepositories.getInstance().addRepository(location, true /* broadcast */);
- }
- if (getContainer().getCurrentPage() == syncPage) {
- syncPage.saveSettings();
- syncPage.promptToCommit();
- }
- return result[0];
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.wizard.IWizard#performCancel()
- */
- public boolean performCancel() {
- boolean disposeLocation = isNewLocation;
- ICVSRepositoryLocation location;
- try {
- location = getLocation();
- } catch (TeamException e) {
- CVSUIPlugin.log(e);
- return true;
- }
- if (location == null) return true;
- // If on the last page, offer to disconnect
- if (getContainer().getCurrentPage() == syncPage
- && RepositoryProvider.getProvider(project) != null) {
- // Prompt to see if we should undo out work
- if (promptToKeepMapping()) {
- // If we didn't disconnect, don't dispose the repo
- disposeLocation = false;
- // Add the location to the provider if it is new
- if (isNewLocation) {
- KnownRepositories.getInstance().addRepository(location, true /* broadcast */);
- }
- } else {
- try {
- getContainer().run(true, true, new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- new DisconnectOperation(null, new IProject[] { project }, true)
- .run(monitor);
- }
- });
- } catch (InvocationTargetException e) {
- CVSUIPlugin.log(IStatus.ERROR, e.getMessage(), e.getTargetException());
- } catch (InterruptedException e) {
- // Ignore
- }
- }
- }
- // Dispose of the location if appropriate
- if (disposeLocation) {
- KnownRepositories.getInstance().disposeRepository(location);
- }
- return super.performCancel();
- }
-
- private boolean promptToKeepMapping() {
- return (MessageDialog.openQuestion(getShell(), Policy.bind("SharingWizard.26"), Policy.bind("SharingWizard.27", project.getName()))); //$NON-NLS-1$ //$NON-NLS-2$
- }
-
- private void reconcileProject(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- new ReconcileProjectOperation(getShell(), project, getRemoteFolder()).run(monitor);
- }
-
- /**
- * Return an ICVSRepositoryLocation
- */
- private ICVSRepositoryLocation getLocation() throws TeamException {
- // If there is an autoconnect page then it has the location
- if (autoconnectPage != null) {
- return recordLocation(autoconnectPage.getLocation());
- }
-
- // If the location page has a location, use it.
- if (locationPage != null) {
- ICVSRepositoryLocation newLocation = locationPage.getLocation();
- if (newLocation != null) {
- return recordLocation(newLocation);
- }
- }
-
- // Otherwise, get the location from the create location page
- final ICVSRepositoryLocation[] locations = new ICVSRepositoryLocation[] { null };
- final CVSException[] exception = new CVSException[] { null };
- getShell().getDisplay().syncExec(new Runnable() {
- public void run() {
- try {
- locations[0] = createLocationPage.getLocation();
- } catch (CVSException e) {
- exception[0] = e;
- }
- }
- });
- if (exception[0] != null) {
- throw exception[0];
- }
- return recordLocation(locations[0]);
- }
-
- private ICVSRepositoryLocation recordLocation(ICVSRepositoryLocation newLocation) {
- if (newLocation == null) return location;
- if (location == null || !newLocation.equals(location)) {
- if (location != null && isNewLocation) {
- // Dispose of the previous location
- KnownRepositories.getInstance().disposeRepository(location);
- }
- location = newLocation;
- isNewLocation = !KnownRepositories.getInstance().isKnownRepository(newLocation.getLocation());
- if (isNewLocation) {
- // Add the location silently so we can work with it
- location = KnownRepositories.getInstance().addRepository(location, false /* silently */);
- }
- }
- return location;
- }
-
- /*
- * @see IConfigurationWizard#init(IWorkbench, IProject)
- */
- public void init(IWorkbench workbench, IProject project) {
- this.project = project;
- }
-
- private boolean doesCVSDirectoryExist() {
- // Determine if there is an existing CVS/ directory from which configuration
- // information can be retrieved.
- Shell shell = null;
- if (getContainer() != null) {
- shell = getContainer().getShell();
- }
- final boolean[] isCVSFolder = new boolean[] { false };
- try {
- CVSUIPlugin.runWithRefresh(shell, new IResource[] { project }, new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- try {
- ICVSFolder folder = (ICVSFolder)CVSWorkspaceRoot.getCVSResourceFor(project);
- FolderSyncInfo info = folder.getFolderSyncInfo();
- isCVSFolder[0] = info != null;
- } catch (final TeamException e) {
- throw new InvocationTargetException(e);
- }
- }
- }, null);
- } catch (InvocationTargetException e) {
- CVSUIPlugin.openError(shell, null, null, e);
- } catch (InterruptedException e) {
- // Cancelled. Just fall through
- }
- return isCVSFolder[0];
- }
-
- /*
- * Shoudl the project be auto-connected
- */
- /* private*/ boolean isAutoconnect() {
- return autoconnectPage != null && doesCVSDirectoryExist();
- }
-
- /*
- * Auto-connect to the repository using CVS/ directories
- */
- /*private */ boolean autoconnectCVSProject(IProgressMonitor monitor) throws TeamException {
- try {
- monitor.beginTask(null, 100);
-
- FolderSyncInfo info = autoconnectPage.getFolderSyncInfo();
- if (info == null) {
- // Error!
- return false;
- }
-
- // Get the repository location (the get will add the locatin to the provider)
- ICVSRepositoryLocation location = getLocation();
-
- // Validate the connection if the user wants to
- boolean validate = autoconnectPage.getValidate();
- if (validate) {
- // Do the validation
- try {
- location.validateConnection(Policy.subMonitorFor(monitor, 50));
- } catch (final TeamException e) {
- // Exception validating. We can continue if the user wishes.
- final boolean[] keep = new boolean[] { false };
- getShell().getDisplay().syncExec(new Runnable() {
- public void run() {
- keep[0] = MessageDialog.openQuestion(getContainer().getShell(),
- Policy.bind("SharingWizard.validationFailedTitle"), //$NON-NLS-1$
- Policy.bind("SharingWizard.validationFailedText", new Object[] {e.getStatus().getMessage()})); //$NON-NLS-1$
- }
- });
- if (!keep[0]) {
- return false;
- }
- // They want to keep the connection anyway. Fall through.
- }
- }
-
- // Set the sharing
- CVSWorkspaceRoot.setSharing(project, info, Policy.subMonitorFor(monitor, 50));
- return true;
- } finally {
- monitor.done();
- }
- }
-
- private boolean shareProject(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- monitor.beginTask(null, 100);
- ICVSRepositoryLocation location = null;
- try {
- location = getLocation();
- location.validateConnection(Policy.subMonitorFor(monitor, 50));
- } catch (TeamException e) {
- CVSUIPlugin.openError(getShell(), null, null, e, CVSUIPlugin.PERFORM_SYNC_EXEC);
- if (isNewLocation && location != null) location.flushUserInfo();
- return false;
- }
-
- // Create the remote module for the project
- ShareProjectOperation op = new ShareProjectOperation(null, location, project, getRemoteFolder().getRepositoryRelativePath());
- op.setShell(getShell());
- op.run(Policy.subMonitorFor(monitor, 50));
- return true;
- }
-
- private CVSTag getTag() {
- if (tagPage == null || tagPage.getSelectedTag() == null) {
- return CVSTag.DEFAULT;
- }
- return tagPage.getSelectedTag();
- }
-
- private ICVSRemoteFolder getRemoteFolder() {
- ICVSRemoteFolder folder = modulePage.getSelectedModule();
- return (ICVSRemoteFolder)folder.forTag(getTag());
- }
-
- private boolean exists(ICVSRemoteFolder folder, IProgressMonitor monitor) throws TeamException {
- if (existingRemote != null && existingRemote.equals(folder)) return true;
- if (folder.exists(monitor)) {
- existingRemote = folder;
- return true;
- } else {
- existingRemote = null;
- return false;
- }
- }
-
- private boolean exists(final ICVSRemoteFolder folder) throws InvocationTargetException, InterruptedException {
- final boolean[] result = new boolean[] { false };
- getContainer().run(true, true, new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor)
- throws InvocationTargetException, InterruptedException {
- try {
- result[0] = exists(folder, monitor);
- } catch (TeamException e) {
- throw new InvocationTargetException(e);
- }
- }
- });
- return result[0];
- }
-
- private void populateSyncPage(final boolean exists) throws InvocationTargetException, InterruptedException {
- getContainer().run(true, true, new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- monitor.beginTask(null, 100);
- if (exists) {
- reconcileProject(Policy.subMonitorFor(monitor, 50));
- } else {
- shareProject(Policy.subMonitorFor(monitor, 50));
- }
- getParticipant().refreshNow(new IResource[] {project}, Policy.bind("ShareProjectOperation.1"), Policy.subMonitorFor(monitor, 50)); //$NON-NLS-1$
- if (monitor.isCanceled()) {
- throw new InterruptedException();
- }
- monitor.done();
- }
- });
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.wizard.IWizard#getPreviousPage(org.eclipse.jface.wizard.IWizardPage)
- */
- public IWizardPage getPreviousPage(IWizardPage page) {
- if (page == syncPage) {
- // There's no going back from the sync page
- return null;
- }
- return super.getPreviousPage(page);
- }
-
- private void prepareTagPage(ICVSRemoteFolder remote) {
- tagPage.setTagSource(TagSource.create(remote));
- tagPage.setDescription(Policy.bind("SharingWizard.25", remote.getRepositoryRelativePath())); //$NON-NLS-1$
- }
-
- private WorkspaceSynchronizeParticipant getParticipant() {
- return syncPage.getParticipant();
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/SharingWizardPageActionGroup.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/SharingWizardPageActionGroup.java
deleted file mode 100644
index 8cf1f8848..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/SharingWizardPageActionGroup.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.wizards;
-
-import org.eclipse.compare.structuremergeviewer.IDiffElement;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.team.core.synchronize.FastSyncInfoFilter;
-import org.eclipse.team.core.synchronize.SyncInfo;
-import org.eclipse.team.core.synchronize.FastSyncInfoFilter.SyncInfoDirectionFilter;
-import org.eclipse.team.internal.ccvs.ui.actions.IgnoreAction;
-import org.eclipse.team.internal.ccvs.ui.subscriber.CVSActionDelegateWrapper;
-import org.eclipse.team.internal.ccvs.ui.subscriber.CVSParticipantAction;
-import org.eclipse.team.internal.ccvs.ui.subscriber.WorkspaceCommitOperation;
-import org.eclipse.team.ui.synchronize.ISynchronizePageConfiguration;
-import org.eclipse.team.ui.synchronize.SynchronizeModelAction;
-import org.eclipse.team.ui.synchronize.SynchronizeModelOperation;
-import org.eclipse.team.ui.synchronize.SynchronizePageActionGroup;
-
-/**
- * Adviser used to add toolbar buttons to the last page of the sharing wizard.
- */
-public class SharingWizardPageActionGroup extends SynchronizePageActionGroup {
-
- public static final String ACTION_GROUP = "cvs_sharing_page_actions"; //$NON-NLS-1$
-
- private SharingCommitAction commitAction;
-
- /**
- * Custom commit that includes outgoing and conflicting.
- */
- class SharingCommitAction extends CVSParticipantAction {
- public SharingCommitAction(ISynchronizePageConfiguration configuration, ISelectionProvider provider) {
- super(configuration, provider, "SharingCommitAction."); //$NON-NLS-1$
- }
- protected FastSyncInfoFilter getSyncInfoFilter() {
- return new SyncInfoDirectionFilter(new int[] {SyncInfo.CONFLICTING, SyncInfo.OUTGOING});
- }
- protected SynchronizeModelOperation getSubscriberOperation(ISynchronizePageConfiguration configuration, IDiffElement[] elements) {
- return new WorkspaceCommitOperation(configuration, elements, true /* override */);
- }
-
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.ui.synchronize.subscriber.SynchronizeViewerAdvisor#initializeActions(org.eclipse.jface.viewers.StructuredViewer)
- */
- public void initialize(ISynchronizePageConfiguration configuration) {
- super.initialize(configuration);
- configuration.addMenuGroup(ISynchronizePageConfiguration.P_TOOLBAR_MENU, ACTION_GROUP);
-
- commitAction = new SharingCommitAction(
- configuration,
- getVisibleRootsSelectionProvider());
- appendToGroup(
- ISynchronizePageConfiguration.P_TOOLBAR_MENU,
- ACTION_GROUP,
- commitAction);
-
- appendToGroup(
- ISynchronizePageConfiguration.P_TOOLBAR_MENU,
- ACTION_GROUP,
- new CVSActionDelegateWrapper(new IgnoreAction(), configuration){
- protected String getBundleKeyPrefix() {
- return "SharingWizardIgnore."; //$NON-NLS-1$
- }
- });
- }
- /**
- * @return Returns the commitAction.
- */
- public SynchronizeModelAction getCommitAction() {
- return commitAction;
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/SharingWizardSyncPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/SharingWizardSyncPage.java
deleted file mode 100644
index eb2339d0f..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/SharingWizardSyncPage.java
+++ /dev/null
@@ -1,279 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.wizards;
-
-import org.eclipse.compare.CompareConfiguration;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.*;
-import org.eclipse.jface.dialogs.*;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.AbstractTreeViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.wizard.IWizardPage;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.team.core.ITeamStatus;
-import org.eclipse.team.core.TeamStatus;
-import org.eclipse.team.core.synchronize.*;
-import org.eclipse.team.internal.ccvs.ui.*;
-import org.eclipse.team.internal.ccvs.ui.subscriber.WorkspaceSynchronizeParticipant;
-import org.eclipse.team.ui.synchronize.*;
-import org.eclipse.ui.help.WorkbenchHelp;
-import org.eclipse.ui.part.PageBook;
-
-/**
- * Page that displays the compare input for sharing
- */
-public class SharingWizardSyncPage extends CVSWizardPage implements ISyncInfoSetChangeListener {
-
- // Constant keys used to store last size for this page
- private static final String PAGE_HEIGHT = "SyncPageHeight"; //$NON-NLS-1$
- private static final String PAGE_WIDTH = "SyncPageWidth"; //$NON-NLS-1$
-
- private ParticipantPageSaveablePart input;
- private ISynchronizePageConfiguration configuration;
- private SyncInfoSet infos;
- private IProject project;
-
- PageBook pageBook;
- private Control syncPage;
- private Control noChangesPage;
- private Control errorPage;
-
- private int width;
- private int height;
- private SharingWizardPageActionGroup sharingWizardPageActionGroup;
-
- public SharingWizardSyncPage(String pageName, String title, ImageDescriptor titleImage, String description) {
- super(pageName, title, titleImage, description);
- }
-
- public void setProject(IProject project) {
- this.project = project;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
- */
- public void createControl(Composite parent) {
- Composite composite = createComposite(parent, 1, false);
- setControl(composite);
-
- // set F1 help
- WorkbenchHelp.setHelp(composite, IHelpContextIds.SHARING_SYNC_PAGE);
-
- pageBook = new PageBook(composite, SWT.NONE);
- GridData data = new GridData(GridData.FILL_BOTH);
- data.grabExcessHorizontalSpace = true;
- data.grabExcessVerticalSpace = true;
- pageBook.setLayoutData(data);
-
- input = createCompareInput();
- input.createPartControl(pageBook);
- syncPage = input.getControl();
- infos = configuration.getSyncInfoSet();
- infos.addSyncSetChangedListener(this);
-
- noChangesPage = createNoChangesPage(pageBook);
- noChangesPage.setLayoutData(new GridData(GridData.FILL_BOTH));
-
- errorPage = createErrorPage(pageBook);
- errorPage.setLayoutData(new GridData(GridData.FILL_BOTH));
-
- updatePage();
-
- Dialog.applyDialogFont(parent);
- }
-
- private Control createNoChangesPage(PageBook pageBook) {
- Composite composite = createComposite(pageBook, 1, false);
- createWrappingLabel(composite, Policy.bind("SharingWizardSyncPage.3", project.getName()), 0); //$NON-NLS-1$
- return composite;
- }
-
- private Control createErrorPage(PageBook pageBook) {
- Composite composite = new Composite(pageBook, SWT.NONE);
- GridLayout layout = new GridLayout();
- composite.setLayout(layout);
-
- createWrappingLabel(composite, Policy.bind("SharingWizardSyncPage.4"), 0); //$NON-NLS-1$
-
- Button showErrors = new Button(composite, SWT.PUSH);
- showErrors.setText(Policy.bind("SharingWizardSyncPage.5")); //$NON-NLS-1$
- GridData data = new GridData(GridData.HORIZONTAL_ALIGN_END);
- showErrors.setLayoutData(data);
- showErrors.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- showErrors();
- }
- });
-
- return composite;
- }
-
- /* private */ void showErrors() {
- ITeamStatus[] status = infos.getErrors();
- String title = Policy.bind("SharingWizardSyncPage.8"); //$NON-NLS-1$
- if (status.length == 1) {
- IStatus s = status[0];
- if (s.getException() instanceof CoreException) {
- s = ((CoreException)s.getException()).getStatus();
- }
- ErrorDialog.openError(getShell(), title, null, s);
- } else {
- MultiStatus multi = new MultiStatus(CVSUIPlugin.ID, 0, status, Policy.bind("SharingWizardSyncPage.9"), null); //$NON-NLS-1$
- ErrorDialog.openError(getShell(), title, null, multi);
- }
- }
-
- private ParticipantPageSaveablePart createCompareInput() {
- WorkspaceSynchronizeParticipant participant = new WorkspaceSynchronizeParticipant(new ResourceScope(new IResource[] { project }));
- configuration = participant.createPageConfiguration();
- configuration.setProperty(ISynchronizePageConfiguration.P_TOOLBAR_MENU, new String[] {ISynchronizePageConfiguration.LAYOUT_GROUP, SharingWizardPageActionGroup.ACTION_GROUP});
- sharingWizardPageActionGroup = new SharingWizardPageActionGroup();
- configuration.addActionContribution(sharingWizardPageActionGroup);
- configuration.setRunnableContext(getContainer());
-
- CompareConfiguration cc = new CompareConfiguration();
- cc.setLeftEditable(false);
- cc.setRightEditable(false);
- ParticipantPageSaveablePart part = new ParticipantPageSaveablePart(getShell(), cc, configuration, participant);
- part.setShowContentPanes(false);
- return part;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.dialogs.IDialogPage#dispose()
- */
- public void dispose() {
- if (input != null) {
- input.getParticipant().dispose();
- input.dispose();
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.wizard.WizardPage#setPreviousPage(org.eclipse.jface.wizard.IWizardPage)
- */
- public void setPreviousPage(IWizardPage page) {
- // There's no going back from this page
- super.setPreviousPage(null);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.core.synchronize.ISyncInfoSetChangeListener#syncInfoSetReset(org.eclipse.team.core.synchronize.SyncInfoSet, org.eclipse.core.runtime.IProgressMonitor)
- */
- public void syncInfoSetReset(SyncInfoSet set, IProgressMonitor monitor) {
- updatePage();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.core.synchronize.ISyncInfoSetChangeListener#syncInfoChanged(org.eclipse.team.core.synchronize.ISyncInfoSetChangeEvent, org.eclipse.core.runtime.IProgressMonitor)
- */
- public void syncInfoChanged(ISyncInfoSetChangeEvent event, IProgressMonitor monitor) {
- updatePage();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.team.core.synchronize.ISyncInfoSetChangeListener#syncInfoSetErrors(org.eclipse.team.core.synchronize.SyncInfoSet, org.eclipse.team.core.ITeamStatus[], org.eclipse.core.runtime.IProgressMonitor)
- */
- public void syncInfoSetErrors(SyncInfoSet set, ITeamStatus[] errors, IProgressMonitor monitor) {
- updatePage();
- }
-
- private void updatePage() {
- Display.getDefault().syncExec(new Runnable() {
- public void run() {
- if (pageBook.isDisposed()) return;
- if (infos.getErrors().length > 0) {
- pageBook.showPage(errorPage);
- } else if (infos.isEmpty()) {
- pageBook.showPage(noChangesPage);
- } else {
- pageBook.showPage(syncPage);
- }
- }
- });
- }
-
- public void showError(TeamStatus status) {
- infos.addError(status);
- }
-
- public WorkspaceSynchronizeParticipant getParticipant() {
- return (WorkspaceSynchronizeParticipant)configuration.getParticipant();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.dialogs.IDialogPage#setVisible(boolean)
- */
- public void setVisible(boolean visible) {
- super.setVisible(visible);
- if (syncPage.isVisible()) {
- initializeSize();
- getShell().setSize(Math.max(width, 300), Math.max(height, 300));
- if(input != null) {
- Viewer viewer = input.getPageConfiguration().getPage().getViewer();
- if(viewer instanceof AbstractTreeViewer) {
- ((AbstractTreeViewer)viewer).expandToLevel(2);
- }
- }
- }
- }
-
- private void initializeSize() {
- IDialogSettings settings = getDialogSettings();
- if (settings != null) {
- try {
- width = settings.getInt(PAGE_WIDTH);
- height = settings.getInt(PAGE_HEIGHT);
- } catch (NumberFormatException e) {
- // Ignore and go on;
- }
- }
- if (width == 0) width = 640;
- if (height == 0) height = 480;
- }
-
- /**
- * Save the size of the page so it can be opened with the same size next time
- */
- public void saveSettings() {
- IDialogSettings settings = getDialogSettings();
- if (settings != null) {
- Point size = getShell().getSize();
- settings.put(PAGE_WIDTH, size.x);
- settings.put(PAGE_HEIGHT, size.y);
- }
- }
-
- /**
- * Prompt to commit any leftovers
- */
- public void promptToCommit() {
- if (sharingWizardPageActionGroup != null) {
- if (sharingWizardPageActionGroup.getCommitAction().isEnabled()) {
- if (MessageDialog.openQuestion(getShell(), Policy.bind("SharingWizardSyncPage.10"), Policy.bind("SharingWizardSyncPage.11"))) { //$NON-NLS-1$ //$NON-NLS-2$
- // Null the context so the commit will run in the background
- configuration.setRunnableContext(null);
- sharingWizardPageActionGroup.getCommitAction().run();
- }
- }
- }
- }
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/UpdateWizard.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/UpdateWizard.java
deleted file mode 100644
index 8a09ef5c0..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/UpdateWizard.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.wizards;
-
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.*;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.team.internal.ccvs.core.*;
-import org.eclipse.team.internal.ccvs.core.client.Command;
-import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot;
-import org.eclipse.team.internal.ccvs.ui.*;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.operations.UpdateOperation;
-import org.eclipse.team.internal.ccvs.ui.tags.*;
-import org.eclipse.team.internal.ccvs.ui.tags.TagSourceWorkbenchAdapter;
-import org.eclipse.team.internal.ccvs.ui.tags.TagSource;
-import org.eclipse.ui.IWorkbenchPart;
-
-public class UpdateWizard extends Wizard {
-
- private IResource[] resources;
- private final IWorkbenchPart part;
- private TagSelectionWizardPage tagSelectionPage;
-
- public UpdateWizard(IWorkbenchPart part, IResource[] resources) {
- this.part = part;
- this.resources = resources;
- setWindowTitle(Policy.bind("UpdateWizard.title")); //$NON-NLS-1$
- }
-
- public void addPages() {
- ImageDescriptor substImage = CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_WIZBAN_CHECKOUT);
- tagSelectionPage = new TagSelectionWizardPage("tagPage", Policy.bind("UpdateWizard.0"), substImage, Policy.bind("UpdateWizard.1"), TagSource.create(resources), TagSourceWorkbenchAdapter.INCLUDE_ALL_TAGS); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- tagSelectionPage.setAllowNoTag(true);
- tagSelectionPage.setHelpContxtId(IHelpContextIds.UPDATE_TAG_SELETION_PAGE);
- ICVSFolder[] folders = getCVSFolders();
- if (folders.length > 0) {
- try {
- CVSTag selectedTag = folders[0].getFolderSyncInfo().getTag();
- tagSelectionPage.setSelection(selectedTag);
- } catch (CVSException e) {
- CVSUIPlugin.log(e);
- }
- }
- addPage(tagSelectionPage);
- }
-
- private ICVSFolder[] getCVSFolders() {
- Set projects = new HashSet();
- for (int i = 0; i < resources.length; i++) {
- IResource resource = resources[i];
- projects.add(resource.getProject());
- }
- ICVSFolder[] folders = new ICVSFolder[projects.size()];
- int i = 0;
- for (Iterator iter = projects.iterator(); iter.hasNext();) {
- IProject project = (IProject) iter.next();
- folders[i++] = CVSWorkspaceRoot.getCVSFolderFor(project);
- }
- return folders;
- }
-
- /*
- * @see IWizard#performFinish()
- */
- public boolean performFinish() {
- try {
- new UpdateOperation(part, resources, Command.NO_LOCAL_OPTIONS, tagSelectionPage.getSelectedTag()).run();
- } catch (InvocationTargetException e) {
- CVSUIPlugin.openError(getShell(), null, null, e);
- return false;
- } catch (InterruptedException e) {
- return false;
- }
- return true;
- }
-}
--
cgit v1.2.3