Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Valenta2006-01-09 22:19:47 +0000
committerMichael Valenta2006-01-09 22:19:47 +0000
commit5511570cc419e795f4be8bb22df33ef9536098b5 (patch)
treebc7994c0e5c2f1079cb7b379645e954d8068ba71 /bundles/org.eclipse.team.ui
parentdadf9bc2204d67fe0e35bfe2aa5e93f480aa7283 (diff)
downloadeclipse.platform.team-5511570cc419e795f4be8bb22df33ef9536098b5.tar.gz
eclipse.platform.team-5511570cc419e795f4be8bb22df33ef9536098b5.tar.xz
eclipse.platform.team-5511570cc419e795f4be8bb22df33ef9536098b5.zip
Bug 120151 [History View] Generic History View needs to allow page contributions
Diffstat (limited to 'bundles/org.eclipse.team.ui')
-rw-r--r--bundles/org.eclipse.team.ui/META-INF/MANIFEST.MF2
-rw-r--r--bundles/org.eclipse.team.ui/plugin.xml15
-rw-r--r--bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ITeamUIImages.java9
-rw-r--r--bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/TeamUIMessages.java3
-rw-r--r--bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/history/GenericHistoryDropAdapter.java47
-rw-r--r--bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/history/GenericHistoryView.java841
-rw-r--r--bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/history/GenericHistoryViewDefaultPage.java62
-rw-r--r--bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/history/actions/CompareRevisionAction.java54
-rw-r--r--bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/history/actions/OpenRevisionAction.java88
-rw-r--r--bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/messages.properties1
-rw-r--r--bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/history/IFileHistoryProviderParticipant.java40
-rw-r--r--bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/history/IHistoryPage.java54
12 files changed, 549 insertions, 667 deletions
diff --git a/bundles/org.eclipse.team.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.team.ui/META-INF/MANIFEST.MF
index 4b9f9d9c1..509b143d0 100644
--- a/bundles/org.eclipse.team.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.team.ui/META-INF/MANIFEST.MF
@@ -9,6 +9,7 @@ Bundle-Localization: plugin
Export-Package: org.eclipse.team.internal.ui;x-friends:="org.eclipse.team.cvs.ssh,org.eclipse.team.cvs.ssh2,org.eclipse.team.cvs.ui",
org.eclipse.team.internal.ui.actions;x-friends:="org.eclipse.team.cvs.ssh,org.eclipse.team.cvs.ssh2,org.eclipse.team.cvs.ui",
org.eclipse.team.internal.ui.dialogs;x-friends:="org.eclipse.team.cvs.ssh,org.eclipse.team.cvs.ssh2,org.eclipse.team.cvs.ui",
+ org.eclipse.team.internal.ui.history,
org.eclipse.team.internal.ui.mapping,
org.eclipse.team.internal.ui.preferences;x-friends:="org.eclipse.team.cvs.ssh,org.eclipse.team.cvs.ssh2,org.eclipse.team.cvs.ui",
org.eclipse.team.internal.ui.registry;x-friends:="org.eclipse.team.cvs.ssh,org.eclipse.team.cvs.ssh2,org.eclipse.team.cvs.ui",
@@ -16,6 +17,7 @@ Export-Package: org.eclipse.team.internal.ui;x-friends:="org.eclipse.team.cvs.ss
org.eclipse.team.internal.ui.synchronize.actions;x-friends:="org.eclipse.team.cvs.ssh,org.eclipse.team.cvs.ssh2,org.eclipse.team.cvs.ui",
org.eclipse.team.internal.ui.wizards;x-friends:="org.eclipse.team.cvs.ssh,org.eclipse.team.cvs.ssh2,org.eclipse.team.cvs.ui",
org.eclipse.team.ui,
+ org.eclipse.team.ui.history,
org.eclipse.team.ui.mapping,
org.eclipse.team.ui.operations,
org.eclipse.team.ui.synchronize
diff --git a/bundles/org.eclipse.team.ui/plugin.xml b/bundles/org.eclipse.team.ui/plugin.xml
index 024ed8201..3d6991968 100644
--- a/bundles/org.eclipse.team.ui/plugin.xml
+++ b/bundles/org.eclipse.team.ui/plugin.xml
@@ -114,20 +114,6 @@
id="nonbound.org.eclipse.team.ui.ImportProjectSetAction">
</action>
</objectContribution>
- <objectContribution
- adaptable="false"
- id="org.eclipse.team.ui.FileRevisionsContribution"
- objectClass="org.eclipse.team.core.history.IFileRevision">
- <action
- class="org.eclipse.team.internal.ui.history.actions.OpenRevisionAction"
- id="org.eclipse.team.ui.OpenRevisionAction"
- label="%FileRevision.OpenAction.name"/>
- <action
- class="org.eclipse.team.internal.ui.history.actions.CompareRevisionAction"
- enablesFor="2"
- id="org.eclipse.team.ui.CompareRevisionAction"
- label="%FileRevision.Compare.name"/>
- </objectContribution>
</extension>
<!-- ************** Views ********************** -->
<extension
@@ -146,6 +132,7 @@
id="org.eclipse.team.sync.views.SynchronizeView">
</view>
<view
+ allowMultiple="true"
category="org.eclipse.team.ui"
class="org.eclipse.team.internal.ui.history.GenericHistoryView"
icon="icons/full/obj/changeset_obj.gif"
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ITeamUIImages.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ITeamUIImages.java
index cfb82190a..cb916c555 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ITeamUIImages.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ITeamUIImages.java
@@ -166,6 +166,15 @@ public interface ITeamUIImages {
* Icon for authentication dialogs.
*/
public final String IMG_KEY_LOCK = "wizban/keylock.gif"; //$NON-NLS-1$
+ /**
+ * Pinned icon
+ */
+ public final String IMG_PINNED = "elcl16/pin.gif"; //$NON-NLS-1$
+ /**
+ * Previous history
+ */
+ public final String IMG_PREVIOUS = "elcl16/prev_nav.gif"; //$NON-NLS-1$
+
//objects
public final String IMG_SITE_ELEMENT = "elcl16/site_element.gif"; //$NON-NLS-1$
public final String IMG_CHANGE_FILTER = "elcl16/change_filter.gif"; //$NON-NLS-1$
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/TeamUIMessages.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/TeamUIMessages.java
index a4bf95e24..b3b6d7b77 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/TeamUIMessages.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/TeamUIMessages.java
@@ -362,5 +362,8 @@ public class TeamUIMessages extends NLS {
public static String ResourceMappingMergeOperation_3;
public static String ResourceMappingMergeOperation_4;
+
+
+ public static String GenericHistoryView_PinCurrentHistory;
} \ No newline at end of file
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/history/GenericHistoryDropAdapter.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/history/GenericHistoryDropAdapter.java
index 0b9584a88..5c87fc533 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/history/GenericHistoryDropAdapter.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/history/GenericHistoryDropAdapter.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * Copyright (c) 2006 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -13,7 +13,6 @@ package org.eclipse.team.internal.ui.history;
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;
@@ -22,12 +21,13 @@ import org.eclipse.ui.part.ResourceTransfer;
public class GenericHistoryDropAdapter extends ViewerDropAdapter {
- GenericHistoryView view;
-
- public GenericHistoryDropAdapter(StructuredViewer viewer, GenericHistoryView view) {
- super(viewer);
+ private GenericHistoryView view;
+
+ public GenericHistoryDropAdapter(GenericHistoryView view) {
+ super(null);
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
@@ -39,6 +39,7 @@ public class GenericHistoryDropAdapter extends ViewerDropAdapter {
}
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
@@ -48,28 +49,30 @@ public class GenericHistoryDropAdapter extends ViewerDropAdapter {
super.drop(event);
event.detail = DND.DROP_LINK;
}
+
public boolean performDrop(Object data) {
- if (data == null) return false;
- if(data instanceof IResource[]) {
- 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;
- }
- return false;
+ if (data == null)
+ return false;
+ if (data instanceof IResource[]) {
+ IResource[] sources = (IResource[]) data;
+ if (sources.length == 0)
+ return false;
+ IResource resource = sources[0];
+ if (!(resource instanceof IFile))
+ return false;
+
+ view.itemDropped(resource);
+
+ return true;
+ }
+ return false;
}
-
+
public boolean validateDrop(Object target, int operation, TransferData transferType) {
- if (transferType != null &&
- ResourceTransfer.getInstance().isSupportedType(transferType)) {
+ if (transferType != null && ResourceTransfer.getInstance().isSupportedType(transferType)) {
return true;
}
return false;
}
}
-
-
-
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/history/GenericHistoryView.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/history/GenericHistoryView.java
index 967cb9abe..e3267f9d6 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/history/GenericHistoryView.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/history/GenericHistoryView.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * Copyright (c) 2006 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -11,503 +11,448 @@
package org.eclipse.team.internal.ui.history;
+import java.util.*;
+
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.core.runtime.IStatus;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IAction;
-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.preference.IPreferenceStore;
-import org.eclipse.jface.text.Document;
-import org.eclipse.jface.text.TextViewer;
-import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jface.action.*;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.jface.util.PropertyChangeEvent;
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.LabelProvider;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.TableLayout;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerSorter;
-import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.swt.custom.SashForm;
-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.dnd.*;
import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.Control;
import org.eclipse.team.core.RepositoryProvider;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.history.*;
-import org.eclipse.team.internal.ui.ITeamUIImages;
-import org.eclipse.team.internal.ui.TeamUIMessages;
-import org.eclipse.team.internal.ui.TeamUIPlugin;
-import org.eclipse.team.internal.ui.Utils;
-import org.eclipse.team.internal.ui.history.actions.OpenRevisionAction;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IPartListener;
-import org.eclipse.ui.IPartListener2;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPartReference;
+import org.eclipse.team.core.history.IFileHistoryProvider;
+import org.eclipse.team.internal.ui.*;
+import org.eclipse.team.ui.history.IFileHistoryProviderParticipant;
+import org.eclipse.team.ui.history.IHistoryPage;
+import org.eclipse.ui.*;
import org.eclipse.ui.ide.ResourceUtil;
-import org.eclipse.ui.part.ResourceTransfer;
-import org.eclipse.ui.part.ViewPart;
+import org.eclipse.ui.part.*;
public class GenericHistoryView extends ViewPart {
- private IFile file;
+ class PageContainer {
+ private Page page;
+ private SubActionBars subBars;
- // cached for efficiency
- private IFileRevision[] entries;
+ public PageContainer(Page page) {
+ this.page = page;
+ }
- protected GenericHistoryTableProvider historyTableProvider;
+ public Page getPage() {
+ return page;
+ }
- private TableViewer tableViewer;
- protected TextViewer textViewer;
- protected TableViewer tagViewer;
+ public void setPage(Page page) {
+ this.page = page;
+ }
-
- protected OpenRevisionAction openAction;
- private IAction toggleTextAction;
- private IAction toggleTextWrapAction;
- private IAction toggleListAction;
- private Action refreshAction;
- private Action linkWithEditorAction;
-
- private SashForm sashForm;
- private SashForm innerSashForm;
+ public SubActionBars getSubBars() {
+ return subBars;
+ }
- protected IFileRevision currentSelection;
+ public void setSubBars(SubActionBars subBars) {
+ this.subBars = subBars;
+ }
+ }
+
+ /**
+ * The pagebook control, or <code>null</code> if not initialized.
+ */
+ private PageBook book;
- protected FetchLogEntriesJob fetchLogEntriesJob;
+ /**
+ * View actions
+ */
+ private Action refreshAction;
+ private Action linkWithEditorAction;
+ private Action pinAction;
- private boolean shutdown = false;
+ /**
+ * The page container for the default page.
+ */
+ private PageContainer defaultPageContainer;
- private boolean linkingEnabled;
-
- public static final String VIEW_ID = "org.eclipse.team.ui.GenericHistoryView"; //$NON-NLS-1$
+ /**
+ * The current page container
+ */
+ PageContainer currentPageContainer;
private IPartListener partListener = new IPartListener() {
public void partActivated(IWorkbenchPart part) {
if (part instanceof IEditorPart)
editorActivated((IEditorPart) part);
}
+
public void partBroughtToTop(IWorkbenchPart part) {
- if(part == GenericHistoryView.this)
+ if (part == GenericHistoryView.this)
editorActivated(getViewSite().getPage().getActiveEditor());
}
+
public void partOpened(IWorkbenchPart part) {
- if(part == GenericHistoryView.this)
+ if (part == GenericHistoryView.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) == GenericHistoryView.this)
+ if (ref.getPart(true) == GenericHistoryView.this)
editorActivated(getViewSite().getPage().getActiveEditor());
}
+
public void partInputChanged(IWorkbenchPartReference ref) {
}
};
- public void createPartControl(Composite parent) {
- sashForm = new SashForm(parent, SWT.VERTICAL);
- sashForm.setLayoutData(new GridData(GridData.FILL_BOTH));
+ private ISelectionListener selectionListener = new ISelectionListener() {
+
+ public void selectionChanged(IWorkbenchPart part, ISelection selection) {
+ if (!isLinkingEnabled()) {
+ return;
+ }
+
+ if (selection instanceof IStructuredSelection) {
+ IStructuredSelection structSelection = (IStructuredSelection) selection;
+ //Always take the first element - this is not intended to work with multiple selection
+ Object firstElement = structSelection.getFirstElement();
+ itemDropped(firstElement);
+ }
+ }
- 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 });
+ };
+
+ /**
+ * The action bar property listener.
+ */
+ private IPropertyChangeListener actionBarPropListener = new IPropertyChangeListener() {
+ public void propertyChange(PropertyChangeEvent event) {
+ if (event.getProperty().equals(SubActionBars.P_ACTION_HANDLERS) && currentPageContainer.getPage() != null && event.getSource() == currentPageContainer.getSubBars()) {
+ refreshGlobalActionHandlers();
+ }
+ }
+ };
+
+ private boolean linkingEnabled;
+
+ private boolean viewPinned;
+
+ private static String viewId = "org.eclipse.team.ui.GenericHistoryView"; //$NON-NLS-1$
+
+ /**
+ * Refreshes the global actions for the active page.
+ */
+ void refreshGlobalActionHandlers() {
+ // Clear old actions.
+ IActionBars bars = getViewSite().getActionBars();
+ bars.clearGlobalActionHandlers();
+
+ // Set new actions.
+ Map newActionHandlers = currentPageContainer.getSubBars().getGlobalActionHandlers();
+ if (newActionHandlers != null) {
+ Set keys = newActionHandlers.entrySet();
+ Iterator iter = keys.iterator();
+ while (iter.hasNext()) {
+ Map.Entry entry = (Map.Entry) iter.next();
+ bars.setGlobalActionHandler((String) entry.getKey(), (IAction) entry.getValue());
+ }
+ }
+ }
+
+ public void createPartControl(Composite parent) {
+ // Create the page book.
+ book = new PageBook(parent, SWT.NONE);
this.linkingEnabled = TeamUIPlugin.getPlugin().getPreferenceStore().getBoolean(IFileHistoryConstants.PREF_GENERIC_HISTORYVIEW_EDITOR_LINKING);
-
- contributeActions();
- setViewerVisibility();
+ // Create the default page rec.
+ defaultPageContainer = createDefaultPage(book);
+
+ //Contribute toolbars
+ configureToolbars(getViewSite().getActionBars());
- // set F1 help
- // PlatformUI.getWorkbench().getHelpSystem().setHelp(sashForm,
- // IHelpContextIds.RESOURCE_HISTORY_VIEW);
+ //initialize the drag and drop
initDragAndDrop();
+ // Show the default page
+ showPageRec(defaultPageContainer);
+
// add listener for editor page activation - this is to support editor
// linking
getSite().getPage().addPartListener(partListener);
getSite().getPage().addPartListener(partListener2);
- }
-
- private TextViewer createText(SashForm 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;
- }
- private TableViewer createTagTable(SashForm 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];
- ITag[] tags = (ITag[])inputElement;
- return tags;
- }
- });
- result.setLabelProvider(new LabelProvider() {
- public Image getImage(Object element) {
- if (element == null) return null;
- ITag tag = (ITag)element;
- //Need an image
- return null;
- }
- public String getText(Object element) {
- return ((ITag)element).getName();
- }
- });
- result.setSorter(new ViewerSorter() {
- public int compare(Viewer viewer, Object e1, Object e2) {
- if (!(e1 instanceof ITag) || !(e2 instanceof ITag)) return super.compare(viewer, e1, e2);
- ITag tag1 = (ITag)e1;
- ITag tag2 = (ITag)e2;
- /*int type1 = tag1.getType();
- int type2 = tag2.getType();
- if (type1 != type2) {
- return type2 - type1;
- }*/
- return super.compare(viewer, tag1, tag2);
- }
- });
- return result;
+ // add listener for selections
+ getSite().getPage().addSelectionListener(selectionListener);
}
- public void setFocus() {
- }
+ private void configureToolbars(IActionBars actionBars) {
- /**
- * 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(),
- ResourceTransfer.getInstance() };
- tableViewer.addDropSupport(ops, transfers,
- new GenericHistoryDropAdapter(tableViewer, this));
- }
-
- protected void contributeActions() {
- TeamUIPlugin plugin = TeamUIPlugin.getPlugin();
-
- // Double click open action
- openAction = new OpenRevisionAction();
- tableViewer.getTable().addListener(SWT.DefaultSelection, new Listener() {
- public void handleEvent(Event e) {
- openAction.selectionChanged(null, tableViewer.getSelection());
- openAction.run(null);
- }
- });
-
- refreshAction = new Action(TeamUIMessages.GenericHistoryView_Refresh, plugin.getImageDescriptor(ITeamUIImages.IMG_REFRESH)) {
+ pinAction = new Action(TeamUIMessages.GenericHistoryView_PinCurrentHistory, TeamUIPlugin.getImageDescriptor(ITeamUIImages.IMG_PINNED)) {
public void run() {
- refresh();
+ if (isChecked()) {
+ //uncheck editor linking and disable
+ linkWithEditorAction.setChecked(false);
+ linkWithEditorAction.setEnabled(false);
+ setLinkingEnabled(false);
+ } else {
+ //renable the linking button
+ linkWithEditorAction.setEnabled(true);
+ }
+ setViewPinned(isChecked());
}
};
-
- linkWithEditorAction = new Action(TeamUIMessages.GenericHistoryView_LinkWithEditor, plugin.getImageDescriptor(ITeamUIImages.IMG_LINK_WITH)) {
- public void run() {
- setLinkingEnabled(isChecked());
- }
- };
- linkWithEditorAction.setChecked(isLinkingEnabled());
-
- // Toggle text visible action
- final IPreferenceStore store = TeamUIPlugin.getPlugin().getPreferenceStore();
- toggleTextAction = new Action(TeamUIMessages.GenericHistoryView_ShowCommentViewer) {
+ pinAction.setChecked(isViewPinned());
+ pinAction.setToolTipText("Pins this history view");
+
+ refreshAction = new Action(TeamUIMessages.GenericHistoryView_Refresh, TeamUIPlugin.getImageDescriptor(ITeamUIImages.IMG_REFRESH)) {
public void run() {
- setViewerVisibility();
- store.setValue(IFileHistoryConstants.PREF_GENERIC_HISTORYVIEW_SHOW_COMMENTS, toggleTextAction.isChecked());
+ ((IHistoryPage) currentPageContainer.getPage()).refresh();
}
};
- toggleTextAction.setChecked(store.getBoolean(IFileHistoryConstants.PREF_GENERIC_HISTORYVIEW_SHOW_COMMENTS));
- //PlatformUI.getWorkbench().getHelpSystem().setHelp(toggleTextAction, IHelpContextIds.SHOW_COMMENT_IN_HISTORY_ACTION);
-
- // Toggle wrap comments action
- toggleTextWrapAction = new Action(TeamUIMessages.GenericHistoryView_WrapComments) {
- public void run() {
- setViewerVisibility();
- store.setValue(IFileHistoryConstants.PREF_GENERIC_HISTORYVIEW_WRAP_COMMENTS, toggleTextWrapAction.isChecked());
- }
- };
- toggleTextWrapAction.setChecked(store.getBoolean(IFileHistoryConstants.PREF_GENERIC_HISTORYVIEW_WRAP_COMMENTS));
- //PlatformUI.getWorkbench().getHelpSystem().setHelp(toggleTextWrapAction, IHelpContextIds.SHOW_TAGS_IN_HISTORY_ACTION);
-
- // Toggle list visible action
- toggleListAction = new Action(TeamUIMessages.GenericHistoryView_ShowTagViewer) {
+
+ linkWithEditorAction = new Action(TeamUIMessages.GenericHistoryView_LinkWithEditor, TeamUIPlugin.getImageDescriptor(ITeamUIImages.IMG_LINK_WITH)) {
public void run() {
- setViewerVisibility();
- store.setValue(IFileHistoryConstants.PREF_GENERIC_HISTORYVIEW_SHOW_TAGS, toggleListAction.isChecked());
+ setLinkingEnabled(isViewPinned() ? false : isChecked());
}
};
- toggleListAction.setChecked(store.getBoolean(IFileHistoryConstants.PREF_GENERIC_HISTORYVIEW_SHOW_TAGS));
- //PlatformUI.getWorkbench().getHelpSystem().setHelp(toggleListAction, IHelpContextIds.SHOW_TAGS_IN_HISTORY_ACTION);
-
-
+ linkWithEditorAction.setChecked(isLinkingEnabled());
+
+ //previousHistory = new GenericHistoryDropDownAction();
+
//Create the local tool bar
- IToolBarManager tbm = getViewSite().getActionBars().getToolBarManager();
+ IToolBarManager tbm = actionBars.getToolBarManager();
+ //Take out history support for now
+ //tbm.add(previousHistory);
tbm.add(refreshAction);
tbm.add(linkWithEditorAction);
+ tbm.add(pinAction);
tbm.update(false);
-
- //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(toggleTextWrapAction);
- actionBarsMenu.add(new Separator());
- actionBarsMenu.add(toggleTextAction);
- actionBarsMenu.add(toggleListAction);
-
}
- private void fillTableMenu(IMenuManager manager) {
- // file actions go first (view file)
- manager.add(new Separator("additions")); //$NON-NLS-1$
- manager.add(refreshAction);
- manager.add(new Separator("additions-end")); //$NON-NLS-1$
+ boolean isLinkingEnabled() {
+ return linkingEnabled;
}
-
+
/**
- * 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
+ * Enabled linking to the active editor
*/
- protected TableViewer createTable(Composite parent) {
-
- historyTableProvider = new GenericHistoryTableProvider();
- TableViewer viewer = historyTableProvider.createTable(parent);
-
- viewer.setContentProvider(new IStructuredContentProvider() {
- public Object[] getElements(Object inputElement) {
+ public void setLinkingEnabled(boolean enabled) {
+ this.linkingEnabled = enabled;
- // The entries of already been fetch so return them
- if (entries != null)
- return entries;
+ // remember the last setting in the dialog settings
+ TeamUIPlugin.getPlugin().getPreferenceStore().setValue(IFileHistoryConstants.PREF_GENERIC_HISTORYVIEW_EDITOR_LINKING, enabled);
- // The entries need to be fetch (or are being fetched)
- if (!(inputElement instanceof IFileHistory))
- return null;
+ // if turning linking on, update the selection to correspond to the active editor
+ if (enabled) {
+ editorActivated(getSite().getPage().getActiveEditor());
+ }
+ }
- final IFileHistory remoteFile = (IFileHistory) inputElement;
- if (fetchLogEntriesJob == null) {
- fetchLogEntriesJob = new FetchLogEntriesJob();
- }
+ /**
+ * Sets the current view pinned
+ * @param b
+ */
+ void setViewPinned(boolean pinned) {
+ this.viewPinned = pinned;
+ }
- IFileHistory file = fetchLogEntriesJob.getRemoteFile();
-
- if (file == null || !file.equals(remoteFile)) { // The resource
- // has changed
- // so stop the
- // currently
- // running job
- if (fetchLogEntriesJob.getState() != Job.NONE) {
- fetchLogEntriesJob.cancel();
- try {
- fetchLogEntriesJob.join();
- } catch (InterruptedException e) {
- TeamUIPlugin.log(new TeamException(NLS.bind(TeamUIMessages.GenericHistoryView_ErrorFetchingEntries, new String[] { "" }), e)); //$NON-NLS-1$
- }
- }
- fetchLogEntriesJob.setRemoteFile(remoteFile);
- } // Schedule the job even if it is already running
- Utils.schedule(fetchLogEntriesJob, getViewSite());
+ /**
+ * 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(), ResourceTransfer.getInstance()};
- return new Object[0];
- }
+ DropTarget dropTarget = new DropTarget(book, ops);
+ dropTarget.setTransfer(transfers);
+ dropTarget.addDropListener(new GenericHistoryDropAdapter(this));
+ }
- public void dispose() {
- }
+ public void setFocus() {
+ // TODO Auto-generated method stub
- 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){
- IStructuredSelection ss = (IStructuredSelection) selection;
- currentSelection = (IFileRevision) ss.getFirstElement();
- }
-
- 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;
- }
-
- IFileRevision entry =(IFileRevision)ss.getFirstElement();
- textViewer.setDocument(new Document(entry.getComment()));
- tagViewer.setInput(entry.getTags());
-
- }
- });
+ }
- return viewer;
+ /**
+ * Prepares the page in the given page rec for use
+ * in this view.
+ * @param rec
+ */
+ private void preparePage(PageContainer pageContainer) {
+ pageContainer.getSubBars().addPropertyChangeListener(actionBarPropListener);
+ //for backward compability with IPage
+ pageContainer.getPage().setActionBars(pageContainer.getSubBars());
}
-
- /*
- * Refresh the view by refetching the log entries for the remote file
+
+ /**
+ * Shows page contained in the given page record in this view. The page record must
+ * be one from this pagebook view.
+ * <p>
+ * The <code>PageBookView</code> implementation of this method asks the
+ * pagebook control to show the given page's control, and records that the
+ * given page is now current. Subclasses may extend.
+ * </p>
+ *
+ * @param pageRec the page record containing the page to show
*/
- 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.
- tableViewer.refresh();
- }
- });
+ protected void showPageRec(PageContainer pageContainer) {
+ // If already showing do nothing
+ if (currentPageContainer == pageContainer)
+ return;
+ // If the page is the same, just set activeRec to pageRec
+ if (currentPageContainer != null && pageContainer != null && currentPageContainer == pageContainer) {
+ currentPageContainer = pageContainer;
+ return;
+ }
+
+ // Hide old page.
+ if (currentPageContainer != null) {
+ currentPageContainer.getSubBars().deactivate();
+ // remove our selection listener
+ /* ISelectionProvider provider = ((PageSite) mapPageToSite.get(activeRec.page)).getSelectionProvider();
+ if (provider != null)
+ provider
+ .removeSelectionChangedListener(selectionChangedListener);*/
+ }
+ // Show new page.
+ currentPageContainer = pageContainer;
+ //setContentDescription(((IHistoryPage)currentPageContainer.getPage()).getName());
+ Control pageControl = currentPageContainer.getPage().getControl();
+ if (pageControl != null && !pageControl.isDisposed()) {
+ // Verify that the page control is not disposed
+ // If we are closing, it may have already been disposed
+ book.showPage(pageControl);
+ currentPageContainer.getSubBars().activate();
+ //refreshGlobalActionHandlers();
+ // add our selection listener
+ /*ISelectionProvider provider = ((PageSite) mapPageToSite
+ .get(activeRec.page)).getSelectionProvider();
+ if (provider != null)
+ provider.addSelectionChangedListener(selectionChangedListener);*/
+ // Update action bars.
+ getViewSite().getActionBars().updateActionBars();
+ }
}
/**
- * Shows the history for the given IResource in the view.
- *
- * Only files are supported for now.
+ * Initializes the given page with a page site.
+ * <p>
+ * Subclasses should call this method after
+ * the page is created but before creating its
+ * controls.
+ * </p>
+ * <p>
+ * Subclasses may override
+ * </p>
+ * @param page The page to initialize
*/
- 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());
- IFileHistory fileHistory = teamProvider.getFileHistoryProvider()
- .getFileHistoryFor(resource, new NullProgressMonitor());
+ protected PageSite initPage(IPageBookViewPage page) {
+ try {
+ PageSite site = new PageSite(getViewSite());
+ page.init(site);
+ return site;
+ } catch (PartInitException e) {
+ TeamUIPlugin.log(e);
+ }
+ return null;
+ }
- try {
- IFileRevision[] revisions = fileHistory
- .getFileRevisions();
+ public void itemDropped(Object object) {
- } catch (TeamException e) {
+ if (object instanceof IFile) {
+ IFile newFile = (IFile) object;
+ //check first to see if this view is pinned
+ if (isViewPinned()) {
+ try {
+ //get the file name
+ IViewPart view = getSite().getPage().showView(viewId, viewId + newFile.getName() + System.currentTimeMillis(), IWorkbenchPage.VIEW_CREATE);
+ if (view instanceof GenericHistoryView) {
+ GenericHistoryView view2 = (GenericHistoryView) view;
+ view2.itemDropped(object);
+ }
+ return;
+ } catch (PartInitException e) {
+ }
+ }
+ RepositoryProvider teamProvider = RepositoryProvider.getProvider(newFile.getProject());
+ IFileHistoryProvider fileHistory = teamProvider.getFileHistoryProvider();
+ Object tempParticipant = Platform.getAdapterManager().getAdapter(fileHistory, IFileHistoryProviderParticipant.class);
+ if (tempParticipant instanceof IFileHistoryProviderParticipant) {
+ IFileHistoryProviderParticipant participant = (IFileHistoryProviderParticipant) tempParticipant;
+
+ //If a current page exists, see if it can handle the dropped item
+ if (currentPageContainer.getPage() instanceof IHistoryPage) {
+ PageContainer tempPageContainer = currentPageContainer;
+ if (!((IHistoryPage) tempPageContainer.getPage()).canShowHistoryFor(newFile)) {
+ tempPageContainer = createPage(participant);
+ }
+ if (tempPageContainer != null) {
+ ((IHistoryPage) tempPageContainer.getPage()).showHistory(newFile, true);
+ setContentDescription(newFile.getName());
+ showPageRec(tempPageContainer);
+ } else {
+ showPageRec(defaultPageContainer);
+ }
+ }
}
- historyTableProvider.setFile(fileHistory, file);
- tableViewer.setInput(fileHistory);
- setContentDescription(newfile.getName());
- } else {
- this.file = null;
- tableViewer.setInput(null);
- setContentDescription(""); //$NON-NLS-1$
- setTitleToolTip(""); //$NON-NLS-1$
}
+
}
-
- 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());
- }
-
- boolean wrapText = toggleTextWrapAction.isChecked();
- textViewer.getTextWidget().setWordWrap(wrapText);
+
+ boolean isViewPinned() {
+ return viewPinned;
}
-
- /**
- * Enabled linking to the active editor
- */
- public void setLinkingEnabled(boolean enabled) {
- this.linkingEnabled = enabled;
- // remember the last setting in the dialog settings
- TeamUIPlugin.getPlugin().getPreferenceStore().setValue(IFileHistoryConstants.PREF_GENERIC_HISTORYVIEW_EDITOR_LINKING, enabled);
-
- // if turning linking on, update the selection to correspond to the active editor
- if (enabled) {
- editorActivated(getSite().getPage().getActiveEditor());
- }
+ private PageContainer createPage(IFileHistoryProviderParticipant participant) {
+ Page page = participant.createPage();
+ PageSite site = initPage(page);
+ ((IHistoryPage) page).setSite(getViewSite());
+ page.createControl(book);
+ PageContainer container = new PageContainer(page);
+ container.setSubBars((SubActionBars) site.getActionBars());
+ return container;
}
-
+
+ protected PageContainer createDefaultPage(PageBook book) {
+ GenericHistoryViewDefaultPage page = new GenericHistoryViewDefaultPage();
+ PageSite site = initPage(page);
+ page.createControl(book);
+ PageContainer container = new PageContainer(page);
+ container.setSubBars((SubActionBars) site.getActionBars());
+ return container;
+ }
+
/**
* An editor has been activated. Fetch the history if the file is shared and the history view
* is visible in the current page.
@@ -516,124 +461,42 @@ public class GenericHistoryView extends ViewPart {
*/
protected void editorActivated(IEditorPart editor) {
// Only fetch contents if the view is shown in the current page.
- if (editor == null || !isLinkingEnabled() || !checkIfPageIsVisible()) {
+ if (editor == null || !isLinkingEnabled() || !checkIfPageIsVisible() || isViewPinned()) {
return;
- }
+ }
IEditorInput input = editor.getEditorInput();
-
- if (input instanceof FileRevisionEditorInput){
+
+ if (input instanceof FileRevisionEditorInput) {
IFile file;
try {
file = ResourceUtil.getFile(((FileRevisionEditorInput) input).getStorage().getFullPath());
- if(file != null) {
- showHistory(file, false);
- }
- } catch (CoreException e) {}
+ if (file != null) {
+ itemDropped(file);
+ }
+ } catch (CoreException e) {
+ }
} // Handle regular file editors
else {
- IFile file = ResourceUtil.getFile(input);
- if(file != null) {
- showHistory(file, false /* don't fetch if already cached */);
- }
+ IFile file = ResourceUtil.getFile(input);
+ if (file != null) {
+ itemDropped(file);//, false /* don't fetch if already cached */);
+ }
}
}
-
+
private boolean checkIfPageIsVisible() {
return getViewSite().getPage().isPartVisible(this);
}
-
- /**
- * Returns if linking to the ative editor is enabled or disabled.
- * @return boolean indicating state of editor linking.
- */
- private boolean isLinkingEnabled() {
- return linkingEnabled;
- }
public void dispose() {
- shutdown = true;
-
- if(fetchLogEntriesJob != null) {
- if(fetchLogEntriesJob.getState() != Job.NONE) {
- fetchLogEntriesJob.cancel();
- try {
- fetchLogEntriesJob.join();
- } catch (InterruptedException e) {
- TeamUIPlugin.log(new TeamException(NLS.bind(TeamUIMessages.GenericHistoryView_ErrorFetchingEntries, new String[] { "" }), e)); //$NON-NLS-1$
- }
- }
- }
+ super.dispose();
+ //Call dispose on current and default pages
+ currentPageContainer.getPage().dispose();
+ defaultPageContainer.getPage().dispose();
+ //Remove the part listeners
getSite().getPage().removePartListener(partListener);
getSite().getPage().removePartListener(partListener2);
- }
-
- private class FetchLogEntriesJob extends Job {
- public IFileHistory fileHistory;
-
- public FetchLogEntriesJob() {
- super(TeamUIMessages.GenericHistoryView_GenericFileHistoryFetcher);
- }
-
- public void setRemoteFile(IFileHistory file) {
- this.fileHistory = file;
- }
-
- public IStatus run(IProgressMonitor monitor) {
- try {
- if (fileHistory != null && !shutdown) {
- entries = fileHistory.getFileRevisions();
- // final String revisionId = fileHistory.;
- getSite().getShell().getDisplay().asyncExec(new Runnable() {
- public void run() {
- if (entries != null && tableViewer != null
- && !tableViewer.getTable().isDisposed()) {
- tableViewer.refresh();
- // selectRevision(revisionId);
- }
- }
- });
- }
- return Status.OK_STATUS;
- } catch (TeamException e) {
- return e.getStatus();
- }
- }
-
- public IFileHistory getRemoteFile() {
- return this.fileHistory;
- }
- }
-
- /**
- * A default content provider to prevent subclasses from
- * having to implement methods they don't need.
- */
- private 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) {
- }
+ //Remove the selection listener
+ getSite().getPage().addSelectionListener(selectionListener);
}
}
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/history/GenericHistoryViewDefaultPage.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/history/GenericHistoryViewDefaultPage.java
new file mode 100644
index 000000000..97ebda44e
--- /dev/null
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/history/GenericHistoryViewDefaultPage.java
@@ -0,0 +1,62 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.team.internal.ui.history;
+
+import org.eclipse.core.resources.IResource;
+import org.eclipse.jface.resource.JFaceColors;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.team.ui.history.IHistoryPage;
+import org.eclipse.ui.IViewSite;
+import org.eclipse.ui.part.Page;
+
+public class GenericHistoryViewDefaultPage extends Page implements IHistoryPage {
+
+ private Composite pgComp;
+
+ public void createControl(Composite parent) {
+ pgComp = new Composite(parent, SWT.NULL);
+ pgComp.setLayout(new FillLayout());
+ pgComp.setBackground(JFaceColors.getBannerBackground(pgComp.getDisplay()));
+ }
+
+ public Control getControl() {
+ return pgComp;
+ }
+
+ public void setFocus() {
+ pgComp.setFocus();
+ }
+
+ public void showHistory(IResource resource, boolean refetch) {
+ //no history to show
+ }
+
+ public boolean canShowHistoryFor(IResource resource) {
+ return false;
+ }
+
+ public void refresh() {
+ //nothing to refresh
+ }
+
+ public String getName() {
+ return ""; //$NON-NLS-1$
+ }
+
+ public void setSite(IViewSite viewSite) {
+ //nothing to set
+ }
+
+}
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/history/actions/CompareRevisionAction.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/history/actions/CompareRevisionAction.java
deleted file mode 100644
index 8e27059c5..000000000
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/history/actions/CompareRevisionAction.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package org.eclipse.team.internal.ui.history.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.operation.IRunnableWithProgress;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.history.IFileRevision;
-import org.eclipse.team.internal.ui.TeamUIMessages;
-import org.eclipse.team.internal.ui.actions.TeamAction;
-import org.eclipse.team.internal.ui.history.CompareFileRevisionEditorInput;
-import org.eclipse.team.internal.ui.history.RevisionEditionNode;
-
-public class CompareRevisionAction extends TeamAction {
-
- public void run(IAction action) {
- run(new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- try {
- IStructuredSelection structSel = getSelection();
- if (structSel.size() != 2)
- return;
-
- Object[] objArray = structSel.toArray();
-
- IFileRevision file1 = (IFileRevision) objArray[0];
- IFileRevision file2 = (IFileRevision) objArray[1];
-
- RevisionEditionNode left = new RevisionEditionNode(file1);
- RevisionEditionNode right = new RevisionEditionNode(file2);
- CompareUI.openCompareEditorOnPage(new CompareFileRevisionEditorInput(left, right), getTargetPage());
-
- } catch (Exception e) {
- throw new InvocationTargetException(e);
- }
- }
- }, TeamUIMessages.ConfigureProjectAction_configureProject, PROGRESS_BUSYCURSOR);
- }
-
- protected boolean isEnabled() throws TeamException {
- IResource[] res = getSelectedResources();
- int sizeofSelection = getSelection().size();
-
- if (sizeofSelection == 2)
- return true;
-
- return false;
- }
-
-}
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/history/actions/OpenRevisionAction.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/history/actions/OpenRevisionAction.java
deleted file mode 100644
index 9273a2cbf..000000000
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/history/actions/OpenRevisionAction.java
+++ /dev/null
@@ -1,88 +0,0 @@
-package org.eclipse.team.internal.ui.history.actions;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.core.resources.IStorage;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.content.IContentType;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.history.IFileRevision;
-import org.eclipse.team.internal.ui.TeamUIMessages;
-import org.eclipse.team.internal.ui.TeamUIPlugin;
-import org.eclipse.team.internal.ui.actions.TeamAction;
-import org.eclipse.team.internal.ui.history.FileRevisionEditorInput;
-import org.eclipse.ui.IEditorDescriptor;
-import org.eclipse.ui.IEditorRegistry;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPage;
-
-public class OpenRevisionAction extends TeamAction {
-
- public void run(IAction action) {
- run(new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- try {
- IStructuredSelection structSel = getSelection();
-
- Object[] objArray = structSel.toArray();
-
- for (int i = 0; i < objArray.length; i++) {
- IFileRevision revision = (IFileRevision) objArray[i];
- if (!revision.exists()) {
- MessageDialog.openError(getShell(), TeamUIMessages.OpenRevisionAction_DeletedRevisionTitle, TeamUIMessages.OpenRevisionAction_DeletedRevisionMessage);
- } else {
- IStorage file =revision.getStorage(monitor);
-
- String id = getEditorID(file.getName(), file.getContents());
- getTargetPage().openEditor(new FileRevisionEditorInput(revision), id);
- }
-
- }
-
- } catch (Exception e) {
- throw new InvocationTargetException(e);
- }
- }
- }, TeamUIMessages.ConfigureProjectAction_configureProject, PROGRESS_BUSYCURSOR);
- }
-
- protected boolean isEnabled() throws TeamException {
- return true;
- }
-
- private String getEditorID(String fileName, InputStream contents){
- IWorkbench workbench = TeamUIPlugin.getPlugin().getWorkbench();
- IEditorRegistry registry = workbench.getEditorRegistry();
- IWorkbenchPage page = workbench.getActiveWorkbenchWindow().getActivePage();
-
-
- IContentType type = null;
- if (contents != null) {
- try {
- type = Platform.getContentTypeManager().findContentTypeFor(contents, fileName);
- } catch (IOException e) {
-
- }
- }
- if (type == null) {
- type = Platform.getContentTypeManager().findContentTypeFor(fileName);
- }
- IEditorDescriptor descriptor = registry.getDefaultEditor(fileName, type);
- String id;
- if (descriptor == null) {
- id = "org.eclipse.ui.DefaultTextEditor"; //$NON-NLS-1$
- } else {
- id = descriptor.getId();
- }
-
- return id;
- }
-
-}
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/messages.properties b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/messages.properties
index c08b785b0..e96725ef4 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/messages.properties
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/messages.properties
@@ -339,6 +339,7 @@ TeamContentProviderDescriptor_2=Attribute {0} of extension point {1} missing for
TeamCompareEditorInput_fileProgress=Comparing file: {0}
GenericHistoryView_ShowCommentViewer=Show Comment Viewer
+GenericHistoryView_PinCurrentHistory=Pin current history view
GenericHistoryTableProvider_Revision=Revision
GenericHistoryTableProvider_Comment=Comment
GenericHistoryView_GenericFileHistoryFetcher=Fetching File History
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/history/IFileHistoryProviderParticipant.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/history/IFileHistoryProviderParticipant.java
new file mode 100644
index 000000000..7bb438808
--- /dev/null
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/history/IFileHistoryProviderParticipant.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.team.ui.history;
+
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.team.core.history.IFileHistoryProvider;
+import org.eclipse.ui.part.Page;
+
+/**
+ * IFileHistoryProviderParticipant is the visual component of an
+ * {@link IFileHistoryProvider}. It is used by the HistoryView to associate
+ * an IFileHistoryProvider with its corresponding Page. Clients should provide an
+ * implementation for all IFileHistory types they wish to display in the history
+ * view.
+ *
+ * An IFileHistoryProviderParticipant is associated with its IFileHistoryProvider through
+ * the {@link IAdaptable} mechanism.
+ *
+ * @see IFileHistoryProvider
+ * @since 3.2
+ */
+public interface IFileHistoryProviderParticipant {
+ /**
+ * Called by the HistoryView to create the page for this IFileHistoryProvider. The
+ * page must implement {@link IHistoryPage}.
+ *
+ * @see IHistoryPage
+ * @return a Page that implements IHistoryPage
+ */
+ public Page createPage();
+}
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/history/IHistoryPage.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/history/IHistoryPage.java
new file mode 100644
index 000000000..766840322
--- /dev/null
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/history/IHistoryPage.java
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.team.ui.history;
+
+import org.eclipse.core.resources.IResource;
+import org.eclipse.ui.IViewSite;
+
+public interface IHistoryPage {
+ /**
+ * Fetches and populates the history page for the given IResource. Clients
+ * should provide an implementation for their individual pages.
+ *
+ * @param resource the resource for which history is being requested for
+ * @return true if the page can show the history for the given resource, false if
+ * it can't
+ */
+ public void showHistory(IResource resource, boolean refetch);
+
+ /**
+ * Returns true if this history page can show a history for the given resource, false if it cannot
+ * @param resource the resource that is to have history shown
+ * @return boolean
+ */
+ public boolean canShowHistoryFor(IResource resource);
+
+ /**
+ * Requests a refresh of the information presented by the history page.
+ *
+ */
+ public void refresh();
+
+ /**
+ * Returns the name of the object whose history the page is showing
+ * @return String containing the name of the object
+ */
+ public String getName();
+
+ /**
+ * Set the site for the page - this needs to be replaced with a proper
+ * IHistoryPageSite in order to allow history pages to be displayed in
+ * both views and dialogs
+ * @param viewSite
+ */
+ public void setSite(IViewSite viewSite);
+}

Back to the top