Bug 517209 - Only show infos with specific tag in HistoryView
* add filter action to view
* show indication in top of view when the filter is active
Change-Id: Iccbbb78370df3ef14d87f8cab2726a30460e8786
Signed-off-by: Johannes Faltermeier <jfaltermeier@eclipsesource.com>
diff --git a/bundles/org.eclipse.emf.emfstore.client.ui/icons/find.png b/bundles/org.eclipse.emf.emfstore.client.ui/icons/find.png
new file mode 100644
index 0000000..1cd7d7e
--- /dev/null
+++ b/bundles/org.eclipse.emf.emfstore.client.ui/icons/find.png
Binary files differ
diff --git a/bundles/org.eclipse.emf.emfstore.client.ui/src/org/eclipse/emf/emfstore/internal/client/ui/views/historybrowserview/HistoryBrowserView.java b/bundles/org.eclipse.emf.emfstore.client.ui/src/org/eclipse/emf/emfstore/internal/client/ui/views/historybrowserview/HistoryBrowserView.java
index 8f65050..2a94f30 100644
--- a/bundles/org.eclipse.emf.emfstore.client.ui/src/org/eclipse/emf/emfstore/internal/client/ui/views/historybrowserview/HistoryBrowserView.java
+++ b/bundles/org.eclipse.emf.emfstore.client.ui/src/org/eclipse/emf/emfstore/internal/client/ui/views/historybrowserview/HistoryBrowserView.java
@@ -10,6 +10,7 @@
******************************************************************************/
package org.eclipse.emf.emfstore.internal.client.ui.views.historybrowserview;
+import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -54,6 +55,7 @@
import org.eclipse.emf.emfstore.internal.server.model.versioning.ModelElementQuery;
import org.eclipse.emf.emfstore.internal.server.model.versioning.PrimaryVersionSpec;
import org.eclipse.emf.emfstore.internal.server.model.versioning.RangeQuery;
+import org.eclipse.emf.emfstore.internal.server.model.versioning.TagVersionSpec;
import org.eclipse.emf.emfstore.internal.server.model.versioning.VersionSpec;
import org.eclipse.emf.emfstore.internal.server.model.versioning.VersioningFactory;
import org.eclipse.emf.emfstore.internal.server.model.versioning.Versions;
@@ -80,6 +82,8 @@
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.TreeViewerColumn;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerFilter;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
@@ -150,6 +154,9 @@
private ExpandCollapseAction expandAndCollapse;
private boolean isUnlinkedFromNavigator;
private Action showAllBranches;
+ private Action filterTagAction;
+
+ private String filteredTag;
// changes can be transferred with historyInfos. However, this must be avoided if the server sends
// FileBasedChangePackages which the client can not open
@@ -186,6 +193,24 @@
// init viewer
viewer = new TreeViewerWithModelElementSelectionProvider(parent);
+ viewer.setFilters(new ViewerFilter[] { new ViewerFilter() {
+
+ @Override
+ public boolean select(Viewer viewer, Object parentElement, Object element) {
+ if (filteredTag == null || filteredTag.length() == 0) {
+ return true;
+ }
+ if (!HistoryInfo.class.isInstance(element)) {
+ return true;
+ }
+ for (final TagVersionSpec tagVersionSpec : HistoryInfo.class.cast(element).getTagSpecs()) {
+ if (filteredTag.equalsIgnoreCase(tagVersionSpec.getName())) {
+ return true;
+ }
+ }
+ return false;
+ }
+ } });
GridDataFactory.fillDefaults().grab(true, true).applyTo(viewer.getControl());
final Tree tree = viewer.getTree();
tree.setHeaderVisible(true);
@@ -344,6 +369,10 @@
} else {
label += adapterFactoryLabelProvider.getText(modelElement);
}
+ if (filteredTag != null && filteredTag.length() > 0) {
+ label += MessageFormat.format(" [{0}]", //$NON-NLS-1$
+ MessageFormat.format(Messages.HistoryBrowserView_TaggedWithOnly, filteredTag));
+ }
showNoProjectHint(false);
setContentDescription(label);
}
@@ -608,6 +637,7 @@
addExpandAllAndCollapseAllAction(menuManager);
addNextAndPreviousAction(menuManager);
addJumpToRevisionAction(menuManager);
+ addFilterTagAction(menuManager);
addLinkWithNavigatorAction(menuManager);
}
@@ -758,6 +788,35 @@
menuManager.add(showAllBranches);
}
+ private void addFilterTagAction(IToolBarManager menuManager) {
+ filterTagAction = new Action("", SWT.TOGGLE) { //$NON-NLS-1$
+
+ @Override
+ public void run() {
+ if (filterTagAction.isChecked()) {
+ final InputDialog inputDialog = new InputDialog(getSite().getShell(),
+ Messages.HistoryBrowserView_FilterByTagDialog,
+ Messages.HistoryBrowserView_TagDialog,
+ StringUtils.EMPTY,
+ null);
+ if (inputDialog.open() == Window.OK) {
+ filteredTag = inputDialog.getValue();
+ } else {
+ filterTagAction.setChecked(false);
+ }
+ } else {
+ filteredTag = null;
+ }
+ refresh();
+ }
+
+ };
+ filterTagAction.setImageDescriptor(Activator.getImageDescriptor("icons/find.png")); //$NON-NLS-1$
+ filterTagAction.setToolTipText(Messages.HistoryBrowserView_FilterByTagAction);
+ filterTagAction.setChecked(false);
+ menuManager.add(filterTagAction);
+ }
+
private void addJumpToRevisionAction(IToolBarManager menuManager) {
final Action jumpTo = new Action() {
@Override
diff --git a/bundles/org.eclipse.emf.emfstore.client.ui/src/org/eclipse/emf/emfstore/internal/client/ui/views/historybrowserview/Messages.java b/bundles/org.eclipse.emf.emfstore.client.ui/src/org/eclipse/emf/emfstore/internal/client/ui/views/historybrowserview/Messages.java
index a53739b..14eebca 100644
--- a/bundles/org.eclipse.emf.emfstore.client.ui/src/org/eclipse/emf/emfstore/internal/client/ui/views/historybrowserview/Messages.java
+++ b/bundles/org.eclipse.emf.emfstore.client.ui/src/org/eclipse/emf/emfstore/internal/client/ui/views/historybrowserview/Messages.java
@@ -27,6 +27,8 @@
public static String HistoryBrowserView_ExpandCollapseToggle;
public static String HistoryBrowserView_ExpandToggle;
public static String HistoryBrowserView_FetchingHistory;
+ public static String HistoryBrowserView_FilterByTagAction;
+ public static String HistoryBrowserView_FilterByTagDialog;
public static String HistoryBrowserView_GoToRevision;
public static String HistoryBrowserView_GoToRevisionToolTip;
public static String HistoryBrowserView_HistoryFor;
@@ -41,6 +43,8 @@
public static String HistoryBrowserView_SelectProjectOrCallHistory;
public static String HistoryBrowserView_SelectProjectTitle;
public static String HistoryBrowserView_ShowAllBranches;
+ public static String HistoryBrowserView_TagDialog;
+ public static String HistoryBrowserView_TaggedWithOnly;
public static String HistoryBrowserView_VersionDoesNotExist;
static {
// initialize resource bundle
diff --git a/bundles/org.eclipse.emf.emfstore.client.ui/src/org/eclipse/emf/emfstore/internal/client/ui/views/historybrowserview/messages.properties b/bundles/org.eclipse.emf.emfstore.client.ui/src/org/eclipse/emf/emfstore/internal/client/ui/views/historybrowserview/messages.properties
index 01eff3e..07547d8 100644
--- a/bundles/org.eclipse.emf.emfstore.client.ui/src/org/eclipse/emf/emfstore/internal/client/ui/views/historybrowserview/messages.properties
+++ b/bundles/org.eclipse.emf.emfstore.client.ui/src/org/eclipse/emf/emfstore/internal/client/ui/views/historybrowserview/messages.properties
@@ -6,6 +6,8 @@
HistoryBrowserView_ExpandCollapseToggle=Use this toggle to expand or collapse all elements
HistoryBrowserView_ExpandToggle=Use this toggle to expand or collapse all elements
HistoryBrowserView_FetchingHistory=Fetching history form server
+HistoryBrowserView_FilterByTagAction=Filter by Tag
+HistoryBrowserView_FilterByTagDialog=Filter by Tag
HistoryBrowserView_GoToRevision=Go to revision
HistoryBrowserView_GoToRevisionToolTip=Go to revision...
HistoryBrowserView_HistoryFor=History for
@@ -20,4 +22,6 @@
HistoryBrowserView_SelectProjectOrCallHistory=Select a <a>project</a> or call 'Show history' from the context menu of an element in the navigator.
HistoryBrowserView_SelectProjectTitle=Select a project from the workspace
HistoryBrowserView_ShowAllBranches=Show All Branches
+HistoryBrowserView_TagDialog=Tag
+HistoryBrowserView_TaggedWithOnly=tagged with \"{0}\" only
HistoryBrowserView_VersionDoesNotExist=Error: The version you requested does not exist.