diff options
author | Jacques Bouthillier | 2016-09-26 11:42:05 +0000 |
---|---|---|
committer | Pascal Rapicault | 2016-09-27 15:46:19 +0000 |
commit | fbd67dc4bc1680af0e4380370028e0da053aa288 (patch) | |
tree | f65f6bc2de2bd49ce7b49b19bf91182ce808f680 | |
parent | 6a7484cce81ad94dc30ef2c9b44b5ae455018de2 (diff) | |
download | org.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>
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 |