Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJacques Bouthillier2016-09-26 11:42:05 +0000
committerPascal Rapicault2016-09-27 15:46:19 +0000
commitfbd67dc4bc1680af0e4380370028e0da053aa288 (patch)
treef65f6bc2de2bd49ce7b49b19bf91182ce808f680
parent6a7484cce81ad94dc30ef2c9b44b5ae455018de2 (diff)
downloadorg.eclipse.egerrit-fbd67dc4bc1680af0e4380370028e0da053aa288.tar.gz
org.eclipse.egerrit-fbd67dc4bc1680af0e4380370028e0da053aa288.tar.xz
org.eclipse.egerrit-fbd67dc4bc1680af0e4380370028e0da053aa288.zip
bug #300 Filter review comments in history
Change-Id: I9a01b90f05f0ad182c3dab90dd97cd3daa4c0a8d Signed-off-by: gperron <guy.perron@ericsson.com>
-rw-r--r--org.eclipse.egerrit.ui.rcptt.tests/HelperScripts.ctx4
-rw-r--r--org.eclipse.egerrit.ui.rcptt.tests/reviewEditor/FilterHistory.test33
-rw-r--r--org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/HistoryFileFilter.java78
-rw-r--r--org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/HistoryResetFilter.java30
-rw-r--r--org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/UIHistoryTable.java11
-rw-r--r--org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/DynamicHistoryMenuBuilder.java102
-rw-r--r--org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/tabs/HistoryTabView.java2
-rw-r--r--org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/utils/DataConverter.java28
-rw-r--r--org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/utils/Messages.java6
-rw-r--r--org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/utils/messages.properties3
10 files changed, 282 insertions, 15 deletions
diff --git a/org.eclipse.egerrit.ui.rcptt.tests/HelperScripts.ctx b/org.eclipse.egerrit.ui.rcptt.tests/HelperScripts.ctx
index 64f9aff1..48271f32 100644
--- a/org.eclipse.egerrit.ui.rcptt.tests/HelperScripts.ctx
+++ b/org.eclipse.egerrit.ui.rcptt.tests/HelperScripts.ctx
@@ -313,4 +313,8 @@ proc "switch-user" [val to] {
add-gerrit-server -serverURL $serverURL -serverName $to -userName $to
selectActiveServer -serverName $to
}
+proc "assert-that-itemCount-in-history-is" [val is]{
+ get-property itemCount | equals $is | verify-true
+}
+
------=_.ecl.context-718f04b4-ed39-33e3-af62-0995e4561998--
diff --git a/org.eclipse.egerrit.ui.rcptt.tests/reviewEditor/FilterHistory.test b/org.eclipse.egerrit.ui.rcptt.tests/reviewEditor/FilterHistory.test
new file mode 100644
index 00000000..c53911e0
--- /dev/null
+++ b/org.eclipse.egerrit.ui.rcptt.tests/reviewEditor/FilterHistory.test
@@ -0,0 +1,33 @@
+--- RCPTT testcase ---
+Format-Version: 1.0
+Element-Name: FilterHistory
+Element-Type: testcase
+Element-Version: 3.0
+External-Reference:
+Id: _luO6IIApEeapKOQVaYCQqQ
+Runtime-Version: 2.1.0.201605312320
+Save-Time: 9/26/16 7:37 AM
+Testcase-Type: ecl
+
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
+Content-Type: text/ecl
+Entry-Name: .content
+
+let [val review [amend-review -review [create-review -server $serverURL]]] {
+ runQueryAndOpenEditor $review
+ with [get-editor] {
+ assert-that-patchset-counter-in-editor -is "2/2"
+ }
+}
+with [get-editor | get-table -index 0] {
+ assert-that-itemCount-in-history-is -is 2
+ get-column-header "Message" | get-menu "Filter out human messages" | click
+ assert-that-itemCount-in-history-is -is 0
+}
+with [get-editor | get-table -index 0] {
+ assert-that-itemCount-in-history-is -is 0
+ get-column-header "Message" | get-menu "Reset all filters" | click
+ assert-that-itemCount-in-history-is -is 2
+}
+
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/HistoryFileFilter.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/HistoryFileFilter.java
new file mode 100644
index 00000000..2f8d82f5
--- /dev/null
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/HistoryFileFilter.java
@@ -0,0 +1,78 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Ericsson AB.
+ * 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:
+ * Ericsson - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.egerrit.internal.ui.table;
+
+import java.util.ArrayList;
+
+import org.eclipse.egerrit.internal.model.impl.ChangeMessageInfoImpl;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerFilter;
+
+public class HistoryFileFilter extends ViewerFilter {
+
+ private boolean fIsMachine;
+
+ //Enum for potential CI user
+ enum AuthorCiName {
+ // Name
+ HUDSON("Hudson"), //$NON-NLS-1$
+ JENKIN("Jenkin"), // //$NON-NLS-1$
+ CI(" CI"); //$NON-NLS-1$
+
+ private final String name;
+
+ private AuthorCiName(String aName) {
+ name = aName;
+ }
+
+ private String getName() {
+ return name;
+ }
+
+ private static String[] getAllNames() {
+ ArrayList<String> listName = new ArrayList<String>();
+ for (AuthorCiName st : AuthorCiName.values()) {
+ listName.add(st.getName());
+ }
+ return listName.toArray(new String[] {});
+ }
+ }
+
+ public HistoryFileFilter(boolean isMachine) {
+ fIsMachine = isMachine;
+ }
+
+ @Override
+ public boolean select(Viewer viewer, Object parentElement, Object element) {
+ ChangeMessageInfoImpl row = (ChangeMessageInfoImpl) element;
+ if (row != null && row.getAuthor() != null) {
+ if (fIsMachine) {
+ return hasCiAuthor(row.getAuthor().getName());
+ } else {
+ return !hasCiAuthor(row.getAuthor().getName());
+ }
+ } else {
+ return true;
+ }
+ }
+
+ private boolean hasCiAuthor(String authorName) {
+ boolean included = false;
+ String[] testName = AuthorCiName.getAllNames();
+ for (String st : testName) {
+ if (authorName.toLowerCase().contains(st.toLowerCase())) {
+ included = true;
+ }
+ }
+ return included;
+ }
+}
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/HistoryResetFilter.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/HistoryResetFilter.java
new file mode 100644
index 00000000..a1acbe2b
--- /dev/null
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/HistoryResetFilter.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Ericsson AB.
+ * 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:
+ * Ericsson - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.egerrit.internal.ui.table;
+
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerFilter;
+
+/**
+ * Filter to reset all filters for the viewer
+ */
+public class HistoryResetFilter extends ViewerFilter {
+
+ public HistoryResetFilter() {
+ }
+
+ @Override
+ public boolean select(Viewer viewer, Object parentElement, Object element) {
+ return true;
+ }
+
+}
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/UIHistoryTable.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/UIHistoryTable.java
index 278f9fc7..8852ee7c 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/UIHistoryTable.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/UIHistoryTable.java
@@ -11,9 +11,11 @@
******************************************************************************/
package org.eclipse.egerrit.internal.ui.table;
+import org.eclipse.egerrit.internal.core.GerritClient;
import org.eclipse.egerrit.internal.ui.table.model.HistoryTableModel;
import org.eclipse.egerrit.internal.ui.table.model.HistoryTableSorter;
import org.eclipse.egerrit.internal.ui.table.model.ITableModel;
+import org.eclipse.egerrit.internal.ui.table.provider.DynamicHistoryMenuBuilder;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TableViewerColumn;
import org.eclipse.swt.SWT;
@@ -39,11 +41,16 @@ public class UIHistoryTable {
// ------------------------------------------------------------------------
private TableViewer fViewer;
+ private DynamicHistoryMenuBuilder dynamicHistoryMenu = new DynamicHistoryMenuBuilder();
+
+ private GerritClient fGerritClient;
+
// ------------------------------------------------------------------------
// Constructors
// ------------------------------------------------------------------------
- public UIHistoryTable() {
+ public UIHistoryTable(GerritClient gerritClient) {
+ this.fGerritClient = gerritClient;
}
@@ -125,6 +132,8 @@ public class UIHistoryTable {
table.setLinesVisible(true);
table.setData(HISTORY_TABLE);
+ dynamicHistoryMenu.addPulldownMenu(fViewer, fGerritClient);
+
return aViewer;
}
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/DynamicHistoryMenuBuilder.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/DynamicHistoryMenuBuilder.java
new file mode 100644
index 00000000..8e2997fa
--- /dev/null
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/DynamicHistoryMenuBuilder.java
@@ -0,0 +1,102 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Ericsson AB.
+ * 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:
+ * Ericsson - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.egerrit.internal.ui.table.provider;
+
+import org.eclipse.egerrit.internal.core.GerritClient;
+import org.eclipse.egerrit.internal.ui.table.HistoryFileFilter;
+import org.eclipse.egerrit.internal.ui.table.HistoryResetFilter;
+import org.eclipse.egerrit.internal.ui.utils.Messages;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.viewers.ColumnViewer;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.ViewerFilter;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.MenuItem;
+
+public class DynamicHistoryMenuBuilder {
+ private Menu commonMenu;
+
+ static protected HistoryFileFilter humanOnlyfilter;
+
+ static protected HistoryFileFilter machineOnlyfilter;
+
+ public void addPulldownMenu(ColumnViewer viewer, GerritClient client) {
+ MenuManager menuManager = new MenuManager();
+ if (viewer instanceof TableViewer) {
+ commonMenu = menuManager.createContextMenu(((TableViewer) viewer).getTable());
+ ((TableViewer) viewer).getTable().setMenu(commonMenu);
+ }
+ menuManager.addMenuListener(new IMenuListener() {
+ @Override
+ public void menuAboutToShow(IMenuManager manager) {
+ addMenuItem(commonMenu, viewer, client);
+ }
+ });
+ menuManager.update(true);
+ }
+
+ private void addMenuItem(Menu menu, ColumnViewer viewer, GerritClient client) {
+ if (menu.getItemCount() == 0) {
+ if (viewer instanceof TableViewer) {
+ final MenuItem humanOnly = new MenuItem(menu, SWT.CHECK);
+ final MenuItem machineOnly = new MenuItem(menu, SWT.CHECK);
+ final MenuItem separator = new MenuItem(menu, SWT.SEPARATOR);
+ final MenuItem reset = new MenuItem(menu, SWT.CHECK);
+ setMenu(humanOnly, viewer, Messages.UIHistoryTable_0, new HistoryFileFilter(false));
+ setMenu(machineOnly, viewer, Messages.UIHistoryTable_1, new HistoryFileFilter(true));
+ setMenu(reset, viewer, Messages.UIHistoryTable_reset, new HistoryResetFilter());
+ }
+ }
+
+ }
+
+ private void setMenu(MenuItem menuItem, ColumnViewer viewer, String name, ViewerFilter filter) {
+
+ menuItem.setText(name);
+ menuItem.addSelectionListener(new SelectionListener() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+
+ if (menuItem.getSelection()) {
+ if (filter instanceof HistoryResetFilter) {
+ //RESET filter
+ viewer.addFilter(filter);
+ Menu parent = menuItem.getParent();
+ MenuItem[] items = parent.getItems();
+ for (MenuItem mi : items) {
+ mi.setSelection(false);
+ }
+ ViewerFilter[] filters = viewer.getFilters();
+ for (ViewerFilter filter : filters) {
+ viewer.removeFilter(filter);
+ }
+ viewer.refresh();
+ } else {
+ viewer.addFilter(filter);
+ }
+ } else {
+ viewer.removeFilter(filter);
+ }
+ }
+
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+ });
+
+ }
+} \ No newline at end of file
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/tabs/HistoryTabView.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/tabs/HistoryTabView.java
index 252eeb9f..79bc55af 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/tabs/HistoryTabView.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/tabs/HistoryTabView.java
@@ -86,7 +86,7 @@ public class HistoryTabView {
SashForm sashForm = new SashForm(tabFolder, SWT.VERTICAL);
tbtmHistory.setControl(sashForm);
- UIHistoryTable tableUIHistory = new UIHistoryTable();
+ UIHistoryTable tableUIHistory = new UIHistoryTable(gerritClient);
tableUIHistory.createTableViewerSection(sashForm);
tableHistoryViewer = tableUIHistory.getViewer();
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/utils/DataConverter.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/utils/DataConverter.java
index 014c1e2d..e992f242 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/utils/DataConverter.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/utils/DataConverter.java
@@ -208,21 +208,23 @@ public class DataConverter {
*/
private static String formatMessageWithComments(ChangeMessageInfo chmsgInfo, RevisionInfo revInfo) {
StringBuilder sb = new StringBuilder();
- Collection<FileInfo> files = revInfo.getFiles().values();
- for (FileInfo fileInfo : files) {
- if (!fileInfo.getComments().isEmpty()) {
- sb.append("\n"); //$NON-NLS-1$
- sb.append(fileInfo.getPath());
- Iterator<CommentInfo> commentsIter = fileInfo.getComments().iterator();
- while (commentsIter.hasNext()) {
- //List the comments
- CommentInfo comment = commentsIter.next();
- if (comment.getUpdated().equals(chmsgInfo.getDate())) {
- sb.append(Messages.DataConverter_4);
- sb.append(comment.getMessage());
+ if (revInfo != null) {
+ Collection<FileInfo> files = revInfo.getFiles().values();
+ for (FileInfo fileInfo : files) {
+ if (!fileInfo.getComments().isEmpty()) {
+ sb.append("\n"); //$NON-NLS-1$
+ sb.append(fileInfo.getPath());
+ Iterator<CommentInfo> commentsIter = fileInfo.getComments().iterator();
+ while (commentsIter.hasNext()) {
+ //List the comments
+ CommentInfo comment = commentsIter.next();
+ if (comment.getUpdated().equals(chmsgInfo.getDate())) {
+ sb.append(Messages.DataConverter_4);
+ sb.append(comment.getMessage());
+ }
}
+ sb.append("\n"); //$NON-NLS-1$
}
- sb.append("\n"); //$NON-NLS-1$
}
}
return sb.toString();
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/utils/Messages.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/utils/Messages.java
index 3107d6dd..6ce20d4f 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/utils/Messages.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/utils/Messages.java
@@ -433,6 +433,12 @@ public class Messages extends NLS {
public static String SubmitHandler_generalMessage;
public static String SubmitHandler_specificMessage;
+
+ public static String UIHistoryTable_0;
+
+ public static String UIHistoryTable_1;
+
+ public static String UIHistoryTable_reset;
static {
// initialize resource bundle
NLS.initializeMessages(BUNDLE_NAME, Messages.class);
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/utils/messages.properties b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/utils/messages.properties
index f573b905..db22cf2d 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/utils/messages.properties
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/utils/messages.properties
@@ -210,3 +210,6 @@ SubmitHandler_notAvailable=Submit not available for {0}
SubmitProcess_failed=Submit failed
SubmitHandler_generalMessage=Submit a patch set into a selected branch.
SubmitHandler_specificMessage=Submit review id {0} with patch set {1} into {2}.
+UIHistoryTable_0=Filter out machine messages
+UIHistoryTable_1=Filter out human messages
+UIHistoryTable_reset=Reset all filters \ No newline at end of file

Back to the top