more cleanup in the ui.

Change-Id: I0ff0a4d5d83ba0154ab257e5fc3765e04fa7f7f3
Signed-off-by: Jacques Bouthillier <lmcbout@gmail.com>
diff --git a/org.eclipse.egerrit.ui/.settings/org.sonarlint.eclipse.core.prefs b/org.eclipse.egerrit.ui/.settings/org.sonarlint.eclipse.core.prefs
new file mode 100644
index 0000000..684e50d
--- /dev/null
+++ b/org.eclipse.egerrit.ui/.settings/org.sonarlint.eclipse.core.prefs
@@ -0,0 +1,5 @@
+autoEnabled=true
+eclipse.preferences.version=1
+extraProperties=
+moduleKey=org.eclipse.egerrit\:org.eclipse.egerrit.ui
+serverId=sonarqube
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/EGerritImages.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/EGerritImages.java
index c2691d1..118af65 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/EGerritImages.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/EGerritImages.java
@@ -48,6 +48,12 @@
 
 	public static final String PREVIOUS_COMMENT_ANNOTATION_ICON_FILE = "icons/previousComment_menu.gif"; //$NON-NLS-1$
 
+	/**
+	 * The default constructor. Do not allow to build an object of this class
+	 */
+	private EGerritImages() {
+	}
+
 	static {
 		fgImageRegistry.put(AUTHOR_COMMENT, EGerritUIPlugin.getImageDescriptor(AUTHOR_COMMENT));
 		fgImageRegistry.put(ANONYMOUS_COMMENT, EGerritUIPlugin.getImageDescriptor(ANONYMOUS_COMMENT));
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/EGerritUIPlugin.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/EGerritUIPlugin.java
index 5b5de58..811e611 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/EGerritUIPlugin.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/EGerritUIPlugin.java
@@ -69,7 +69,7 @@
 	 *            the path
 	 * @return the image descriptor
 	 */
-	public static ImageDescriptor getImageDescriptor(String aPath) {
+	static ImageDescriptor getImageDescriptor(String aPath) {
 		return imageDescriptorFromPlugin(PLUGIN_ID, aPath);
 	}
 
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/ChangeDetailEditor.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/ChangeDetailEditor.java
index 7bc7612..b6e4b6d 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/ChangeDetailEditor.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/ChangeDetailEditor.java
@@ -80,10 +80,8 @@
 import org.eclipse.swt.widgets.Composite;

 import org.eclipse.swt.widgets.Control;

 import org.eclipse.swt.widgets.Display;

-import org.eclipse.swt.widgets.Event;

 import org.eclipse.swt.widgets.Group;

 import org.eclipse.swt.widgets.Label;

-import org.eclipse.swt.widgets.Listener;

 import org.eclipse.swt.widgets.MenuItem;

 import org.eclipse.swt.widgets.TabFolder;

 import org.eclipse.swt.widgets.Text;

@@ -109,7 +107,7 @@
 	 */

 	public static final String EDITOR_ID = "org.eclipse.egerrit.ui.editors.ChangeDetailEditor"; //$NON-NLS-1$

 

-	public static int REFRESH_RATE = 60000;

+	private static int REFRESH_RATE = 60000;

 

 	private DetailsTabView detailsTab = null;

 

@@ -171,11 +169,11 @@
 		tabFolder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));

 		tabFolder.setBackground(parent.getBackground());

 

-		historytab = new HistoryTabView();

-		historytab.create(fGerritClient, tabFolder, fChangeInfo);

+		historytab = new HistoryTabView(fGerritClient, fChangeInfo);

+		historytab.create(tabFolder);

 

-		messageTab = new MessageTabView();

-		messageTab.create(fGerritClient, tabFolder, fChangeInfo);

+		messageTab = new MessageTabView(fGerritClient, fChangeInfo);

+		messageTab.create(tabFolder);

 

 		detailsTab = new DetailsTabView(fGerritClient, fChangeInfo);

 		detailsTab.create(tabFolder);

@@ -191,72 +189,48 @@
 	}

 

 	private Composite headerSection(final Composite parent) {

-		Group group_header = new Group(parent, SWT.NONE);

-		group_header.setLayout(new GridLayout(10, false));

-		group_header.setBackground(parent.getBackground());

+		Group groupHeader = new Group(parent, SWT.NONE);

+		groupHeader.setLayout(new GridLayout(10, false));

+		groupHeader.setBackground(parent.getBackground());

 

-		Label lblId = new Label(group_header, SWT.NONE);

+		Label lblId = new Label(groupHeader, SWT.NONE);

 		lblId.setText(Messages.ChangeDetailEditor_2);

 

-		shortIdData = new Text(group_header, SWT.NONE);

+		shortIdData = new Text(groupHeader, SWT.NONE);

 		shortIdData.setEditable(false);

 		shortIdData.setBackground(parent.getBackground());

 		shortIdData.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1));

 

-		statusData = new Text(group_header, SWT.LEFT);

-		GridData gd_lblStatus = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);

-		statusData.setLayoutData(gd_lblStatus);

+		statusData = new Text(groupHeader, SWT.LEFT);

+		GridData gdLblStatus = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);

+		statusData.setLayoutData(gdLblStatus);

 		statusData.setEditable(false);

-		statusData.addListener(SWT.Modify, new Listener() {

+		statusData.addListener(SWT.Modify, event -> statusData.getParent().layout());

 

-			@Override

-			public void handleEvent(Event event) {

-				statusData.getParent().layout();

-			}

-		});

-

-		Label lblSubject = new Label(group_header, SWT.NONE);

+		Label lblSubject = new Label(groupHeader, SWT.NONE);

 		lblSubject.setText(Messages.ChangeDetailEditor_3);

-		GridData gd_Subject = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);

-		gd_Subject.horizontalIndent = 10;

-		lblSubject.setLayoutData(gd_Subject);

+		GridData gdSubject = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);

+		gdSubject.horizontalIndent = 10;

+		lblSubject.setLayoutData(gdSubject);

 

-		subjectData = new Text(group_header, SWT.NONE);

-		GridData gd_lblSubjectData = new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1);

-		subjectData.setLayoutData(gd_lblSubjectData);

+		subjectData = new Text(groupHeader, SWT.NONE);

+		GridData gdLblSubjectData = new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1);

+		subjectData.setLayoutData(gdLblSubjectData);

 		subjectData.setEditable(false);

 		subjectData.setBackground(parent.getBackground());

 

 		final ToolTip tip = new ToolTip(parent.getShell(), SWT.NONE);

 

-		subjectData.addListener(SWT.MouseMove, new Listener() {

-

-			@Override

-			public void handleEvent(Event event) {

-				tip.setVisible(false);

-

-			}

-		});

-		subjectData.addListener(SWT.MouseHover, new Listener() {

-

-			@Override

-			public void handleEvent(Event event) {

-

-				tip.setMessage(subjectData.getText());

-				tip.setVisible(true);

-			}

+		subjectData.addListener(SWT.MouseMove, event -> tip.setVisible(false));

+		subjectData.addListener(SWT.MouseHover, event -> {

+			tip.setMessage(subjectData.getText());

+			tip.setVisible(true);

 		});

 

-		subjectData.addListener(SWT.Modify, new Listener() {

-

-			@Override

-			public void handleEvent(Event event) {

-				subjectData.getParent().layout();

-			}

-		});

+		subjectData.addListener(SWT.Modify, event -> subjectData.getParent().layout());

 

 		final String ACTIVATION_MESSAGE = Messages.ChangeDetailEditor_4;

-		Button activeReview = new Button(group_header, SWT.CHECK);

+		Button activeReview = new Button(groupHeader, SWT.CHECK);

 		activeReview.setSelection(false);

 		activeReview.setText(ACTIVATION_MESSAGE);

 		activeReview.setToolTipText(Messages.ChangeDetailEditor_5);

@@ -271,7 +245,7 @@
 							return ACTIVATION_MESSAGE;

 						}

 						if (((RevisionInfo) value).getChangeInfo().getId().equals(fChangeInfo.getId())) {

-							return Messages.ChangeDetailEditor_7 + (((RevisionInfo) value)).get_number();

+							return Messages.ChangeDetailEditor_7 + ((RevisionInfo) value).get_number();

 						}

 						return ACTIVATION_MESSAGE;

 					}

@@ -317,15 +291,15 @@
 

 		//Add Delete revision button for DRAFT patchset

 		deleteDraftRevision = new DeleteDraftRevisionProvider();

-		deleteDraftRevision.create(group_header, fGerritClient, fChangeInfo);

+		deleteDraftRevision.create(groupHeader, fGerritClient, fChangeInfo);

 

 		//Create the PatchSetButton

 		patchSetSelector = new PatchSetHandlerProvider();

-		patchSetSelector.create(group_header, fChangeInfo);

+		patchSetSelector.create(groupHeader, fChangeInfo);

 

 		//Set the binding for this section

 		headerSectionDataBindings();

-		return group_header;

+		return groupHeader;

 	}

 

 	private Composite buttonSection(final Composite parent) {

@@ -355,129 +329,14 @@
 		revertButton.setEnabled(false);

 

 		//Bind the submit button

-		{

-			IObservableValue observeSubmitable = EMFProperties

-					.value(ModelPackage.Literals.CHANGE_INFO__USER_SELECTED_REVISION)

-					.value(ModelPackage.Literals.REVISION_INFO__SUBMITABLE)

-					.observe(fChangeInfo);

-			bindingContext.bindValue(WidgetProperties.enabled().observe(submitButton), observeSubmitable,

-					new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), null);

-			bindingContext.bindValue(WidgetProperties.visible().observe(submitButton), observeSubmitable,

-					new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), new UpdateValueStrategy() {

-						@Override

-						public Object convert(Object value) {

-							if (value == null) {

-								return false;

-							}

-							boolean state = ((Boolean) value).booleanValue();

-							if (state) {

-								return true;

-							}

-							if (revertButton.isVisible()) {

-								return false;

-							}

-							return true;

-						}

-					});

-		}

+		bindSubmitButton(submitButton, revertButton);

 

 		//Bind the revert button

-		{

-			IObservableValue observeRevertable = EMFProperties.value(ModelPackage.Literals.CHANGE_INFO__REVERTABLE)

-					.observe(fChangeInfo);

-			bindingContext.bindValue(WidgetProperties.enabled().observe(revertButton), observeRevertable,

-					new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), null);

-			bindingContext.bindValue(WidgetProperties.visible().observe(revertButton), observeRevertable,

-					new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), null);

+		bindRevertButton(submitButton, revertButton);

 

-			//When the revert is not enable, we need to force the submit button to be visible

-			bindingContext.bindValue(WidgetProperties.visible().observe(submitButton), observeRevertable,

-					new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), new NegateBooleanConverter());

+		submitButton.addSelectionListener(submitSelectionListener());

 

-			//We need to force a redraw of the layout to remove the whitespace that would otherwise be left by the buttons being hidden

-			hidableSubmitButton = new HideControlObservable(submitButton);

-			bindingContext.bindValue(hidableSubmitButton, observeRevertable,

-					new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), new NegateBooleanConverter());

-			hidableRevertButton = new HideControlObservable(revertButton);

-			bindingContext.bindValue(new HideControlObservable(revertButton), observeRevertable, null, null);

-		}

-

-		submitButton.addSelectionListener(new SelectionAdapter() {

-			@Override

-			public void widgetSelected(SelectionEvent e) {

-				super.widgetSelected(e);

-				SubmitProcess submitProcess = new SubmitProcess();

-				submitProcess.handleSubmit(fChangeInfo, fGerritClient);

-			}

-		});

-

-		revertButton.addSelectionListener(new SelectionAdapter() {

-			@Override

-			public void widgetSelected(SelectionEvent e) {

-				boolean revertSuccessfull = false;

-				String revertMsg = NLS.bind(Messages.Revert_message, new Object[] { fChangeInfo.getSubject(),

-						fChangeInfo.getRevision().getCommit().getCommit(), fChangeInfo.get_number() });

-				ChangeInfo revertResult = null;

-				String revertErrorMessage = null;

-

-				while (!revertSuccessfull) {

-					final String errorMsg = revertErrorMessage;

-					final InputDialog replyDialog = new InputDialog(revertButton.getShell(),

-							Messages.Revert_dialog_title, Messages.Revert_dialog_message, revertMsg,

-							revertErrorMessage == null ? null : new IInputValidator() {

-								//Because InputDialog does not allow us to set the text w/o disabling the ok button,

-								//we need to trick the dialog in displaying what we want with this counter.

-								private int count = 0;

-

-								@Override

-								public String isValid(String newText) {

-									if (count == 0) {

-										count++;

-										return errorMsg;

-									} else {

-										return null;

-									}

-								}

-							}) {

-						@Override

-						protected int getInputTextStyle() {

-							return SWT.MULTI | SWT.BORDER | SWT.V_SCROLL | SWT.WRAP;

-						}

-

-						@Override

-						protected Control createDialogArea(Composite parent) {

-							Control res = super.createDialogArea(parent);

-							((GridData) this.getText().getLayoutData()).heightHint = 100;

-							((GridData) this.getText().getLayoutData()).widthHint = 500;

-							return res;

-						}

-					};

-					if (replyDialog.open() != Window.OK) {

-						return;

-					}

-

-					RevertCommand revertCmd = fGerritClient.revert(fChangeInfo.getId());

-					RevertInput revertInput = new RevertInput();

-					revertMsg = replyDialog.getValue();

-					revertInput.setMessage(revertMsg);

-					revertCmd.setCommandInput(revertInput);

-

-					try {

-						revertResult = revertCmd.call();

-						if (revertResult == null) {

-							revertErrorMessage = revertCmd.getFailureReason();

-						} else {

-							revertSuccessfull = true;

-						}

-					} catch (EGerritException e3) {

-						EGerritCorePlugin

-								.logError(fGerritClient.getRepository().formatGerritVersion() + e3.getMessage());

-						return;

-					}

-				}

-				UIUtils.openAnotherEditor(revertResult, fGerritClient);

-			}

-		});

+		revertButton.addSelectionListener(revertSelectionListener(revertButton));

 

 		Button fAbandon = new Button(c, SWT.PUSH);

 		fAbandon.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));

@@ -488,130 +347,29 @@
 		fRestore.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));

 		fRestore.setEnabled(false);

 		fRestore.setText(ActionConstants.RESTORE.getLiteral());

+

 		//Bind the abandon button

-		{

-			IObservableValue observeAbandonable = EMFProperties.value(ModelPackage.Literals.CHANGE_INFO__ABANDONABLE)

-					.observe(fChangeInfo);

-			bindingContext.bindValue(WidgetProperties.enabled().observe(fAbandon), observeAbandonable,

-					new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), null);

-			bindingContext.bindValue(WidgetProperties.visible().observe(fAbandon), observeAbandonable,

-					new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), null);

-			bindingContext.bindValue(WidgetProperties.visible().observe(fAbandon), observeAbandonable,

-					new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), new UpdateValueStrategy() {

-						@Override

-						public Object convert(Object value) {

-							boolean state = ((Boolean) value).booleanValue();

-							if (state) {

-								return true;

-							}

-							if (fRestore.isVisible()) {

-								//We want to make sure to always show the submit button even if the restore is disabled so we at least get one button

-								return false;

-							}

-							return true;

-						}

-					});

-		}

+		bindAbandonButton(fAbandon, fRestore);

+

 		//Bind the restore button

-		{

-			IObservableValue observeRestorable = EMFProperties.value(ModelPackage.Literals.CHANGE_INFO__RESTOREABLE)

-					.observe(fChangeInfo);

-			bindingContext.bindValue(WidgetProperties.enabled().observe(fRestore), observeRestorable,

-					new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), null);

-			bindingContext.bindValue(WidgetProperties.visible().observe(fRestore), observeRestorable, null,

-					new NegateBooleanConverter());

+		bindRestoreButton(fAbandon, fRestore);

 

-			//When restore is not enable, we need to force the abandon button to be visible

-			bindingContext.bindValue(WidgetProperties.visible().observe(fAbandon), observeRestorable,

-					new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), new NegateBooleanConverter());

+		fAbandon.addSelectionListener(abandonSelectionListener(fAbandon));

 

-			//We need to force a redraw of the layout to remove the whitespace that would otherwise be left by the buttons being hidden

-			bindingContext.bindValue(new HideControlObservable(fAbandon), observeRestorable,

-					new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), new NegateBooleanConverter());

-			bindingContext.bindValue(new HideControlObservable(fRestore), observeRestorable, null, null);

-		}

-

-		fAbandon.addSelectionListener(new SelectionAdapter() {

-

-			@Override

-			public void widgetSelected(SelectionEvent e) {

-				super.widgetSelected(e);

-				InputDialog inputDialog = new InputDialog(fAbandon.getParent().getShell(),

-						Messages.ChangeDetailEditor_13, Messages.ChangeDetailEditor_14, "", null); //$NON-NLS-1$

-				if (inputDialog.open() != Window.OK) {

-					return;

-				}

-

-				AbandonCommand abandonCmd = fGerritClient.abandon(fChangeInfo.getId());

-				AbandonInput abandonInput = new AbandonInput();

-				abandonInput.setMessage(inputDialog.getValue());

-

-				abandonCmd.setCommandInput(abandonInput);

-

-				CompletableFuture.runAsync(() -> {

-					try {

-						abandonCmd.call();

-					} catch (EGerritException e1) {

-						EGerritCorePlugin

-								.logError(fGerritClient.getRepository().formatGerritVersion() + e1.getMessage());

-					}

-					refreshStatus();

-				}).thenRun(() -> {

-					new RefreshRelatedEditors(fChangeInfo, fGerritClient).schedule();

-				});

-			}

-		});

-

-		fRestore.addSelectionListener(new SelectionAdapter() {

-			@Override

-			public void widgetSelected(SelectionEvent e) {

-				super.widgetSelected(e);

-				InputDialog inputDialog = new InputDialog(fAbandon.getParent().getShell(),

-						Messages.ChangeDetailEditor_16, Messages.ChangeDetailEditor_17, "", null); //$NON-NLS-1$

-				if (inputDialog.open() != Window.OK) {

-					return;

-				}

-

-				RestoreCommand restoreCmd = fGerritClient.restore(fChangeInfo.getId());

-				RestoreInput restoreInput = new RestoreInput();

-				restoreInput.setMessage(inputDialog.getValue());

-

-				restoreCmd.setCommandInput(restoreInput);

-

-				CompletableFuture.runAsync(() -> {

-					try {

-						restoreCmd.call();

-					} catch (EGerritException e1) {

-						EGerritCorePlugin

-								.logError(fGerritClient.getRepository().formatGerritVersion() + e1.getMessage());

-					}

-					refreshStatus();

-				}).thenRun(() -> {

-					new RefreshRelatedEditors(fChangeInfo, fGerritClient).schedule();

-				});

-			}

-		});

+		fRestore.addSelectionListener(restoreSelectionListener(fAbandon));

 

 		Button rebaseButton = new Button(c, SWT.PUSH);

 		rebaseButton.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));

 		rebaseButton.setText(ActionConstants.REBASE.getLiteral() + "..."); //$NON-NLS-1$

 

 		//Bind the rebase button

-		{

-			IObservableValue observeRebasable = EMFProperties

-					.value(ModelPackage.Literals.CHANGE_INFO__USER_SELECTED_REVISION)

-					.value(ModelPackage.Literals.REVISION_INFO__REBASEABLE)

-					.observe(fChangeInfo);

-

-			bindingContext.bindValue(WidgetProperties.enabled().observe(rebaseButton), observeRebasable,

-					new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), null);

-		}

+		bindRebaseButton(rebaseButton);

 		rebaseButton.addSelectionListener(rebaseButtonListener(rebaseButton.getShell()));

 

 		Button download = new Button(c, SWT.PUSH);

 		download.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));

 		download.setText(Messages.ChangeDetailEditor_24);

-		download.addSelectionListener(downloadButtonListener(parent));//checkoutButtonListener(parent));

+		download.addSelectionListener(downloadButtonListener(parent));

 

 		Button cherryPickToRemoteBranch = new Button(c, SWT.PUSH);

 		cherryPickToRemoteBranch.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));

@@ -623,14 +381,7 @@
 		bindingContext.bindValue(WidgetProperties.enabled().observe(cherryPickToRemoteBranch), cherryPickAble, null,

 				null);

 

-		cherryPickToRemoteBranch.addSelectionListener(new SelectionAdapter() {

-			@Override

-			public void widgetSelected(SelectionEvent e) {

-				CherryPickProcess cherryPickProcess = new CherryPickProcess(cherryPickToRemoteBranch.getShell(),

-						fGerritClient, fChangeInfo, fChangeInfo.getUserSelectedRevision());

-				cherryPickProcess.handleCherryPick();

-			}

-		});

+		cherryPickToRemoteBranch.addSelectionListener(cherryPickSelectionListener(cherryPickToRemoteBranch));

 

 		Button replyButton = new Button(c, SWT.PUSH | SWT.DROP_DOWN | SWT.ARROW_DOWN);

 		replyButton.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));

@@ -638,25 +389,7 @@
 		if (fGerritClient.getRepository().getServerInfo().isAnonymous()) {

 			replyButton.setEnabled(false);

 		}

-		replyButton.addSelectionListener(new SelectionAdapter() {

-

-			@Override

-			public void widgetSelected(SelectionEvent e) {

-				//Adjust the list of label which the current user can set to a maximum value

-				String loginUser = fGerritClient.getRepository().getServerInfo().getUserName();

-				Map<String, Integer> adjustedAllowedButton = fChangeInfo.getLabelsNotAtMax(loginUser);

-				if (adjustedAllowedButton.isEmpty()) {

-					//Should open directly the reply dialog, no sub-menu

-					ReplyProcess replyProcess = new ReplyProcess();

-					replyProcess.handleReplyDialog(replyButton.getShell(), fChangeInfo, fGerritClient,

-							fChangeInfo.getUserSelectedRevision(), null);

-				} else {

-					MenuManager mgr = new MenuManager();

-					buildReplyDynamicMenu(adjustedAllowedButton, mgr);

-					mgr.createContextMenu(replyButton).setVisible(true);

-				}

-			}

-		});

+		replyButton.addSelectionListener(replySelectionListener(replyButton));

 

 		Button draftButton = new Button(c, SWT.PUSH | SWT.DROP_DOWN | SWT.ARROW_DOWN);

 		draftButton.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));

@@ -665,7 +398,18 @@
 				.observe(fChangeInfo);

 		bindingContext.bindValue(WidgetProperties.enabled().observe(draftButton), observeDeleteable,

 				new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), null);

-		draftButton.addSelectionListener(new SelectionAdapter() {

+		draftButton.addSelectionListener(draftSelectionListener(draftButton));

+

+		c.setSize(c.computeSize(SWT.DEFAULT, SWT.DEFAULT));

+		return c;

+	}

+

+	/**

+	 * @param draftButton

+	 * @return

+	 */

+	private SelectionAdapter draftSelectionListener(Button draftButton) {

+		return new SelectionAdapter() {

 			@Override

 			public void widgetSelected(SelectionEvent e) {

 				org.eclipse.swt.widgets.Menu menu = new org.eclipse.swt.widgets.Menu(draftButton.getShell(),

@@ -731,10 +475,209 @@
 

 				menu.setVisible(true);

 			}

-		});

+		};

+	}

 

-		c.setSize(c.computeSize(SWT.DEFAULT, SWT.DEFAULT));

-		return c;

+	/**

+	 * @param replyButton

+	 * @return

+	 */

+	private SelectionAdapter replySelectionListener(Button replyButton) {

+		return new SelectionAdapter() {

+

+			@Override

+			public void widgetSelected(SelectionEvent e) {

+				//Adjust the list of label which the current user can set to a maximum value

+				String loginUser = fGerritClient.getRepository().getServerInfo().getUserName();

+				Map<String, Integer> adjustedAllowedButton = fChangeInfo.getLabelsNotAtMax(loginUser);

+				if (adjustedAllowedButton.isEmpty()) {

+					//Should open directly the reply dialog, no sub-menu

+					ReplyProcess replyProcess = new ReplyProcess();

+					replyProcess.handleReplyDialog(replyButton.getShell(), fChangeInfo, fGerritClient,

+							fChangeInfo.getUserSelectedRevision(), null);

+				} else {

+					MenuManager mgr = new MenuManager();

+					buildReplyDynamicMenu(adjustedAllowedButton, mgr);

+					mgr.createContextMenu(replyButton).setVisible(true);

+				}

+			}

+		};

+	}

+

+	/**

+	 * @param cherryPickToRemoteBranch

+	 * @return

+	 */

+	private SelectionAdapter cherryPickSelectionListener(Button cherryPickToRemoteBranch) {

+		return new SelectionAdapter() {

+			@Override

+			public void widgetSelected(SelectionEvent e) {

+				CherryPickProcess cherryPickProcess = new CherryPickProcess(cherryPickToRemoteBranch.getShell(),

+						fGerritClient, fChangeInfo, fChangeInfo.getUserSelectedRevision());

+				cherryPickProcess.handleCherryPick();

+			}

+		};

+	}

+

+	/**

+	 * @return

+	 */

+	private SelectionAdapter submitSelectionListener() {

+		return new SelectionAdapter() {

+			@Override

+			public void widgetSelected(SelectionEvent e) {

+				super.widgetSelected(e);

+				SubmitProcess submitProcess = new SubmitProcess();

+				submitProcess.handleSubmit(fChangeInfo, fGerritClient);

+			}

+		};

+	}

+

+	/**

+	 * @param fAbandon

+	 * @return

+	 */

+	private SelectionAdapter restoreSelectionListener(Button fAbandon) {

+		return new SelectionAdapter() {

+			@Override

+			public void widgetSelected(SelectionEvent e) {

+				super.widgetSelected(e);

+				InputDialog inputDialog = new InputDialog(fAbandon.getParent().getShell(),

+						Messages.ChangeDetailEditor_16, Messages.ChangeDetailEditor_17, "", null); //$NON-NLS-1$

+				if (inputDialog.open() != Window.OK) {

+					return;

+				}

+

+				RestoreCommand restoreCmd = fGerritClient.restore(fChangeInfo.getId());

+				RestoreInput restoreInput = new RestoreInput();

+				restoreInput.setMessage(inputDialog.getValue());

+

+				restoreCmd.setCommandInput(restoreInput);

+

+				CompletableFuture.runAsync(() -> {

+					try {

+						restoreCmd.call();

+					} catch (EGerritException e1) {

+						EGerritCorePlugin

+								.logError(fGerritClient.getRepository().formatGerritVersion() + e1.getMessage());

+					}

+					refreshStatus();

+				}).thenRun(() -> {

+					new RefreshRelatedEditors(fChangeInfo, fGerritClient).schedule();

+				});

+			}

+		};

+	}

+

+	/**

+	 * @param fAbandon

+	 * @return

+	 */

+	private SelectionAdapter abandonSelectionListener(Button fAbandon) {

+		return new SelectionAdapter() {

+

+			@Override

+			public void widgetSelected(SelectionEvent e) {

+				super.widgetSelected(e);

+				InputDialog inputDialog = new InputDialog(fAbandon.getParent().getShell(),

+						Messages.ChangeDetailEditor_13, Messages.ChangeDetailEditor_14, "", null); //$NON-NLS-1$

+				if (inputDialog.open() != Window.OK) {

+					return;

+				}

+

+				AbandonCommand abandonCmd = fGerritClient.abandon(fChangeInfo.getId());

+				AbandonInput abandonInput = new AbandonInput();

+				abandonInput.setMessage(inputDialog.getValue());

+

+				abandonCmd.setCommandInput(abandonInput);

+

+				CompletableFuture.runAsync(() -> {

+					try {

+						abandonCmd.call();

+					} catch (EGerritException e1) {

+						EGerritCorePlugin

+								.logError(fGerritClient.getRepository().formatGerritVersion() + e1.getMessage());

+					}

+					refreshStatus();

+				}).thenRun(() -> {

+					new RefreshRelatedEditors(fChangeInfo, fGerritClient).schedule();

+				});

+			}

+		};

+	}

+

+	/**

+	 * @param revertButton

+	 * @return

+	 */

+	private SelectionAdapter revertSelectionListener(Button revertButton) {

+		return new SelectionAdapter() {

+			@Override

+			public void widgetSelected(SelectionEvent e) {

+				boolean revertSuccessfull = false;

+				String revertMsg = NLS.bind(Messages.Revert_message, new Object[] { fChangeInfo.getSubject(),

+						fChangeInfo.getRevision().getCommit().getCommit(), fChangeInfo.get_number() });

+				ChangeInfo revertResult = null;

+				String revertErrorMessage = null;

+

+				while (!revertSuccessfull) {

+					final String errorMsg = revertErrorMessage;

+					final InputDialog replyDialog = new InputDialog(revertButton.getShell(),

+							Messages.Revert_dialog_title, Messages.Revert_dialog_message, revertMsg,

+							revertErrorMessage == null ? null : new IInputValidator() {

+								//Because InputDialog does not allow us to set the text w/o disabling the ok button,

+								//we need to trick the dialog in displaying what we want with this counter.

+								private int count = 0;

+

+								@Override

+								public String isValid(String newText) {

+									if (count == 0) {

+										count++;

+										return errorMsg;

+									} else {

+										return null;

+									}

+								}

+							}) {

+						@Override

+						protected int getInputTextStyle() {

+							return SWT.MULTI | SWT.BORDER | SWT.V_SCROLL | SWT.WRAP;

+						}

+

+						@Override

+						protected Control createDialogArea(Composite parent) {

+							Control res = super.createDialogArea(parent);

+							((GridData) this.getText().getLayoutData()).heightHint = 100;

+							((GridData) this.getText().getLayoutData()).widthHint = 500;

+							return res;

+						}

+					};

+					if (replyDialog.open() != Window.OK) {

+						return;

+					}

+

+					RevertCommand revertCmd = fGerritClient.revert(fChangeInfo.getId());

+					RevertInput revertInput = new RevertInput();

+					revertMsg = replyDialog.getValue();

+					revertInput.setMessage(revertMsg);

+					revertCmd.setCommandInput(revertInput);

+

+					try {

+						revertResult = revertCmd.call();

+						if (revertResult == null) {

+							revertErrorMessage = revertCmd.getFailureReason();

+						} else {

+							revertSuccessfull = true;

+						}

+					} catch (EGerritException e3) {

+						EGerritCorePlugin

+								.logError(fGerritClient.getRepository().formatGerritVersion() + e3.getMessage());

+						return;

+					}

+				}

+				UIUtils.openAnotherEditor(revertResult, fGerritClient);

+			}

+		};

 	}

 

 	private SelectionListener rebaseButtonListener(Composite parent) {

@@ -756,6 +699,133 @@
 		};

 	}

 

+	/**

+	 * @param rebaseButton

+	 */

+	private void bindRebaseButton(Button rebaseButton) {

+		{

+			IObservableValue observeRebasable = EMFProperties

+					.value(ModelPackage.Literals.CHANGE_INFO__USER_SELECTED_REVISION)

+					.value(ModelPackage.Literals.REVISION_INFO__REBASEABLE)

+					.observe(fChangeInfo);

+

+			bindingContext.bindValue(WidgetProperties.enabled().observe(rebaseButton), observeRebasable,

+					new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), null);

+		}

+	}

+

+	/**

+	 * @param fAbandon

+	 * @param fRestore

+	 */

+	private void bindRestoreButton(Button fAbandon, Button fRestore) {

+		{

+			IObservableValue observeRestorable = EMFProperties.value(ModelPackage.Literals.CHANGE_INFO__RESTOREABLE)

+					.observe(fChangeInfo);

+			bindingContext.bindValue(WidgetProperties.enabled().observe(fRestore), observeRestorable,

+					new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), null);

+			bindingContext.bindValue(WidgetProperties.visible().observe(fRestore), observeRestorable, null,

+					new NegateBooleanConverter());

+

+			//When restore is not enable, we need to force the abandon button to be visible

+			bindingContext.bindValue(WidgetProperties.visible().observe(fAbandon), observeRestorable,

+					new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), new NegateBooleanConverter());

+

+			//We need to force a redraw of the layout to remove the whitespace that would otherwise be left by the buttons being hidden

+			bindingContext.bindValue(new HideControlObservable(fAbandon), observeRestorable,

+					new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), new NegateBooleanConverter());

+			bindingContext.bindValue(new HideControlObservable(fRestore), observeRestorable, null, null);

+		}

+	}

+

+	/**

+	 * @param fAbandon

+	 * @param fRestore

+	 */

+	private void bindAbandonButton(Button fAbandon, Button fRestore) {

+		{

+			IObservableValue observeAbandonable = EMFProperties.value(ModelPackage.Literals.CHANGE_INFO__ABANDONABLE)

+					.observe(fChangeInfo);

+			bindingContext.bindValue(WidgetProperties.enabled().observe(fAbandon), observeAbandonable,

+					new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), null);

+			bindingContext.bindValue(WidgetProperties.visible().observe(fAbandon), observeAbandonable,

+					new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), null);

+			bindingContext.bindValue(WidgetProperties.visible().observe(fAbandon), observeAbandonable,

+					new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), new UpdateValueStrategy() {

+						@Override

+						public Object convert(Object value) {

+							boolean state = ((Boolean) value).booleanValue();

+							if (state) {

+								return true;

+							}

+							if (fRestore.isVisible()) {

+								//We want to make sure to always show the submit button even if the restore is disabled so we at least get one button

+								return false;

+							}

+							return true;

+						}

+					});

+		}

+	}

+

+	/**

+	 * @param submitButton

+	 * @param revertButton

+	 */

+	private void bindRevertButton(Button submitButton, Button revertButton) {

+		{

+			IObservableValue observeRevertable = EMFProperties.value(ModelPackage.Literals.CHANGE_INFO__REVERTABLE)

+					.observe(fChangeInfo);

+			bindingContext.bindValue(WidgetProperties.enabled().observe(revertButton), observeRevertable,

+					new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), null);

+			bindingContext.bindValue(WidgetProperties.visible().observe(revertButton), observeRevertable,

+					new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), null);

+

+			//When the revert is not enable, we need to force the submit button to be visible

+			bindingContext.bindValue(WidgetProperties.visible().observe(submitButton), observeRevertable,

+					new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), new NegateBooleanConverter());

+

+			//We need to force a redraw of the layout to remove the whitespace that would otherwise be left by the buttons being hidden

+			hidableSubmitButton = new HideControlObservable(submitButton);

+			bindingContext.bindValue(hidableSubmitButton, observeRevertable,

+					new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), new NegateBooleanConverter());

+			hidableRevertButton = new HideControlObservable(revertButton);

+			bindingContext.bindValue(new HideControlObservable(revertButton), observeRevertable, null, null);

+		}

+	}

+

+	/**

+	 * @param submitButton

+	 * @param revertButton

+	 */

+	private void bindSubmitButton(Button submitButton, Button revertButton) {

+		{

+			IObservableValue observeSubmitable = EMFProperties

+					.value(ModelPackage.Literals.CHANGE_INFO__USER_SELECTED_REVISION)

+					.value(ModelPackage.Literals.REVISION_INFO__SUBMITABLE)

+					.observe(fChangeInfo);

+			bindingContext.bindValue(WidgetProperties.enabled().observe(submitButton), observeSubmitable,

+					new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), null);

+			bindingContext.bindValue(WidgetProperties.visible().observe(submitButton), observeSubmitable,

+					new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), new UpdateValueStrategy() {

+						@Override

+						public Object convert(Object value) {

+							if (value == null) {

+								return false;

+							}

+							boolean state = ((Boolean) value).booleanValue();

+							if (state) {

+								return true;

+							}

+							if (revertButton.isVisible()) {

+								return false;

+							}

+							return true;

+						}

+					});

+		}

+	}

+

 	private void buildReplyDynamicMenu(Map<String, Integer> adjustedAllowedButton, MenuManager mgr) {

 		mgr.add(new ReplyHandler(fChangeInfo, fGerritClient, ActionConstants.REPLY.getLiteral())); //Add the Reply option

 

@@ -839,7 +909,7 @@
 		loader.reload(true);

 	}

 

-	protected void headerSectionDataBindings() {

+	private void headerSectionDataBindings() {

 		//Show id

 		IObservableValue idObservable = EMFProperties.value(ModelPackage.Literals.CHANGE_INFO__NUMBER)

 				.observe(fChangeInfo);

diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/CheckoutRevision.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/CheckoutRevision.java
index 0211127..ea79d4c 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/CheckoutRevision.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/CheckoutRevision.java
@@ -59,7 +59,7 @@
 

 	private String selectedBranch;

 

-	private final String RENAME_KEY = "branchRenameTip"; //$NON-NLS-1$

+	private static final String RENAME_KEY = "branchRenameTip"; //$NON-NLS-1$

 

 	public CheckoutRevision(RevisionInfo revision, GerritClient gerritClient) {

 		this.revisionCheckedOut = revision;

@@ -86,6 +86,25 @@
 		}

 

 		Map<String, BranchMatch> potentialBranches = findAllPotentialBranches(localRepo);

+		reActivateWorkspaceRevision = selectAndCheckoutBranch(localRepo, refSelected, potentialBranches);

+

+		//Verify if the user wants to rename the selected branch

+		shouldRenameBranch(potentialBranches, refSelected, localRepo);

+

+		if (reActivateWorkspaceRevision) {

+			ActiveWorkspaceRevision.getInstance().activateCurrentRevision(gerritClient, revisionCheckedOut);

+		}

+	}

+

+	/**

+	 * @param localRepo

+	 * @param refSelected

+	 * @param potentialBranches

+	 * @return

+	 */

+	private boolean selectAndCheckoutBranch(Repository localRepo, String refSelected,

+			Map<String, BranchMatch> potentialBranches) {

+		boolean reActivateWorkspaceRevision = true;

 		if (potentialBranches.size() > 1) {

 			reActivateWorkspaceRevision = branchUiSelection(localRepo, potentialBranches);

 		} else {

@@ -109,13 +128,7 @@
 				reActivateWorkspaceRevision = branchUiSelection(localRepo, potentialBranches);

 			}

 		}

-

-		//Verify if the user wants to rename the selected branch

-		shouldRenameBranch(potentialBranches, refSelected, localRepo);

-

-		if (reActivateWorkspaceRevision) {

-			ActiveWorkspaceRevision.getInstance().activateCurrentRevision(gerritClient, revisionCheckedOut);

-		}

+		return reActivateWorkspaceRevision;

 	}

 

 	/**

@@ -138,7 +151,7 @@
 			//What would the branch name be from refspec:

 			//Parse the ref from the revision to checkout

 			Change revisionRef = Change.fromRef(refSelected);

-			if (!revisionRef.getBranchNameLabel().contains(getSelectedBranch())) {

+			if (revisionRef != null && !revisionRef.getBranchNameLabel().contains(getSelectedBranch())) {

 				//test to see if we can rename the branch or not by removing the patch set

 				int lastSlash = getSelectedBranch().lastIndexOf('/');

 				String perfectMatchModified = lastSlash == -1

@@ -175,10 +188,10 @@
 	public Map<String, BranchMatch> findAllPotentialBranches(Repository localRepo) {

 		Git gitRepo = new Git(localRepo);

 		//Map <Key,value> = Map<Short branch name, commit id>

-		Map<String, String> mapBranches = new HashMap<String, String>();

+		Map<String, String> mapBranches = new HashMap<>();

 		Map<String, BranchMatch> potentialBranches = null;

 		//Map <Key,Map<keycommit, ListChangeIdvalue> = Map<Short branch name, commit id, list of changeId>

-		Map<String, Map<String, List<String>>> mapBranchesChangeId = new HashMap<String, Map<String, List<String>>>();

+		Map<String, Map<String, List<String>>> mapBranchesChangeId = new HashMap<>();

 		try (RevWalk walk = new RevWalk(localRepo)) {

 			mapBranchNameWithCommitId(gitRepo, mapBranches, mapBranchesChangeId, walk);

 			//Get only potential branches

@@ -250,9 +263,7 @@
 

 	//Filter the branches that need to be shown and indicate the level of matching for these branches

 	private Map<String, BranchMatch> mapPotentialBranch(Map<String, Map<String, List<String>>> mapBranchesChangeId) {

-		String lookingChangeId = revisionCheckedOut.getChangeInfo().getChange_id().trim();

-		String lookingCommitIdForRevision = revisionCheckedOut.getCommit().getCommit().trim();

-		Map<String, BranchMatch> mapBranches = new TreeMap<String, BranchMatch>();

+		Map<String, BranchMatch> mapBranches = new TreeMap<>();

 		String defaultBranchName = changeInfo.get_number() + "/" //$NON-NLS-1$

 				+ revisionCheckedOut.get_number();

 		Iterator<Entry<String, Map<String, List<String>>>> iterBranch = mapBranchesChangeId.entrySet().iterator();

@@ -265,28 +276,44 @@
 				List<String> listChangeIds = entryCommitIds.getValue();

 				Iterator<String> iterChangeId = listChangeIds.iterator();

 				while (iterChangeId.hasNext()) {

-					String changeId = iterChangeId.next().trim();

-					if (matchesPerfectlyAnotherRevision(revisionCheckedOut, entryCommitIds.getKey())) {

-						continue;

-					}

-					if (lookingCommitIdForRevision.equals(entryCommitIds.getKey())) {

-						mapBranches.put(entryBranch.getKey(), BranchMatch.PERFECT_MATCH);//Perfect match branch with commit Id

-						continue;

-					}

-					if (lookingChangeId.equals(changeId)) {

-						mapBranches.put(entryBranch.getKey(), BranchMatch.CHANGE_ID_MATCH);//Potential branch for this changeId, but with some modification on the branch

-						continue;

-					}

-					if (entryBranch.getKey().contains(defaultBranchName)) {

-						mapBranches.put(entryBranch.getKey(), BranchMatch.BRANCH_NAME_MATCH);//Perfect match branch

-						continue;

-					}

+					fillMappForPotentialBranch(mapBranches, defaultBranchName, entryBranch, entryCommitIds,

+							iterChangeId);

 				}

 			}

 		}

 		return mapBranches;

 	}

 

+	/**

+	 * @param mapBranches

+	 * @param defaultBranchName

+	 * @param entryBranch

+	 * @param entryCommitIds

+	 * @param iterChangeId

+	 */

+	private void fillMappForPotentialBranch(Map<String, BranchMatch> mapBranches, String defaultBranchName,

+			Entry<String, Map<String, List<String>>> entryBranch, Entry<String, List<String>> entryCommitIds,

+			Iterator<String> iterChangeId) {

+		String lookingChangeId = revisionCheckedOut.getChangeInfo().getChange_id().trim();

+		String lookingCommitIdForRevision = revisionCheckedOut.getCommit().getCommit().trim();

+		String changeId = iterChangeId.next().trim();

+		if (matchesPerfectlyAnotherRevision(revisionCheckedOut, entryCommitIds.getKey())) {

+			return;

+		}

+		if (lookingCommitIdForRevision.equals(entryCommitIds.getKey())) {

+			mapBranches.put(entryBranch.getKey(), BranchMatch.PERFECT_MATCH);//Perfect match branch with commit Id

+			return;

+		}

+		if (lookingChangeId.equals(changeId)) {

+			mapBranches.put(entryBranch.getKey(), BranchMatch.CHANGE_ID_MATCH);//Potential branch for this changeId, but with some modification on the branch

+			return;

+		}

+		if (entryBranch.getKey().contains(defaultBranchName)) {

+			mapBranches.put(entryBranch.getKey(), BranchMatch.BRANCH_NAME_MATCH);//Perfect match branch

+			return;

+		}

+	}

+

 	//Check if the given commitId matches the commitId of a revision that is not the current one

 	private boolean matchesPerfectlyAnotherRevision(RevisionInfo revisionToCheckOut, String commitId) {

 		ChangeInfo review = revisionToCheckOut.getChangeInfo();

@@ -358,21 +385,21 @@
 	/**

 	 * Private class reading the information associated to a ref change

 	 */

-	private final static class Change {

+	private static final class Change {

 		private final String refName;

 

 		private final Integer changeNumber;

 

 		private final Integer patchSetNumber;

 

-		private final static String refChanges = "refs/changes/"; //$NON-NLS-1$

+		private static final String REF_CHANGES = "refs/changes/"; //$NON-NLS-1$

 

 		static Change fromRef(String refName) {

 			try {

-				if (!refName.startsWith(refChanges)) {

+				if (!refName.startsWith(REF_CHANGES)) {

 					return null;

 				}

-				int reflen = refChanges.length();

+				int reflen = REF_CHANGES.length();

 				String[] tokens = refName.substring(reflen).split("/"); //$NON-NLS-1$

 				if (tokens.length != 3) {

 					return null;

diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/CherryPickDialog.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/CherryPickDialog.java
index a9c4a3d..73944f9 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/CherryPickDialog.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/CherryPickDialog.java
@@ -43,7 +43,7 @@
  */
 public class CherryPickDialog extends Dialog {
 
-	final static Logger logger = LoggerFactory.getLogger(CherryPickDialog.class);
+	private static final Logger logger = LoggerFactory.getLogger(CherryPickDialog.class);
 
 	private String commitMessage;
 
@@ -51,10 +51,6 @@
 
 	private Text msgTextData;
 
-	private Composite buttonComposite;
-
-	private Button cancel;
-
 	private Combo fBranch;
 
 	private String fBranchText;
@@ -100,12 +96,12 @@
 		fBranch = new Combo(parent, SWT.NONE);
 		addContentProposal(fBranch);
 
-		GridData gd_combo = new GridData(SWT.FILL, SWT.FILL, true, false, 1, 3);
-		gd_combo.verticalIndent = 5;
-		gd_combo.grabExcessVerticalSpace = false;
+		GridData gdCombo = new GridData(SWT.FILL, SWT.FILL, true, false, 1, 3);
+		gdCombo.verticalIndent = 5;
+		gdCombo.grabExcessVerticalSpace = false;
 		lblBranch.setText(Messages.CherryPickDialog_1);
-		lblBranch.setLayoutData(gd_combo);
-		fBranch.setLayoutData(gd_combo);
+		lblBranch.setLayoutData(gdCombo);
+		fBranch.setLayoutData(gdCombo);
 		fBranch.setItems(branchesRef);
 
 		Label lblMessage = new Label(parent, SWT.LEFT);
@@ -114,14 +110,14 @@
 		gridlbl.verticalIndent = 20;
 		lblMessage.setLayoutData(gridlbl);
 
-		ScrolledComposite sc_msgtxt = new ScrolledComposite(parent, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
-		sc_msgtxt.setExpandHorizontal(true);
-		sc_msgtxt.setExpandVertical(true);
+		ScrolledComposite scMsgTxt = new ScrolledComposite(parent, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
+		scMsgTxt.setExpandHorizontal(true);
+		scMsgTxt.setExpandVertical(true);
 		GridData grid = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1);
 
-		msgTextData = new Text(sc_msgtxt, SWT.WRAP | SWT.MULTI);
-		sc_msgtxt.setLayoutData(grid);
-		sc_msgtxt.setContent(msgTextData);
+		msgTextData = new Text(scMsgTxt, SWT.WRAP | SWT.MULTI);
+		scMsgTxt.setLayoutData(grid);
+		scMsgTxt.setContent(msgTextData);
 		msgTextData.setText(commitMessage);
 
 		//Create the bottom section for the buttons
@@ -133,21 +129,17 @@
 	}
 
 	private void addContentProposal(Combo combo) {
-		IContentProposalProvider cp = new IContentProposalProvider() {
-			@Override
-			public IContentProposal[] getProposals(String contents, int position) {
-				List<IContentProposal> resultList = new ArrayList<>();
+		IContentProposalProvider cp = (contents, position) -> {
+			List<IContentProposal> resultList = new ArrayList<>();
 
-				for (final String branch : branchesRef) {
-					if (branch.indexOf(contents) != -1) {
-						resultList.add(new ContentProposal(branch));
-					}
+			for (final String branch : branchesRef) {
+				if (branch.indexOf(contents) != -1) {
+					resultList.add(new ContentProposal(branch));
 				}
-
-				return resultList.toArray(new IContentProposal[resultList.size()]);
 			}
-		};
 
+			return resultList.toArray(new IContentProposal[resultList.size()]);
+		};
 		ContentProposalAdapter adapter = new ContentProposalAdapter(combo, new ComboContentAdapter(), cp, null, null);
 		// set the acceptance style to always replace the complete content
 		adapter.setProposalAcceptanceStyle(ContentProposalAdapter.PROPOSAL_REPLACE);
@@ -162,21 +154,21 @@
 		sepGrid.grabExcessHorizontalSpace = true;
 		separator.setLayoutData(sepGrid);
 
-		buttonComposite = new Composite(parent, SWT.NONE);
+		Composite buttonComposite = new Composite(parent, SWT.NONE);
 		GridLayout gridLayout = new GridLayout(4, false);
 		buttonComposite.setLayout(gridLayout);
 
-		GridData gd_button = new GridData(SWT.FILL, SWT.CENTER, true, false);
-		gd_button.grabExcessHorizontalSpace = true;
-		buttonComposite.setLayoutData(gd_button);
+		GridData gdButton = new GridData(SWT.FILL, SWT.CENTER, true, false);
+		gdButton.grabExcessHorizontalSpace = true;
+		buttonComposite.setLayoutData(gdButton);
 
 		//Callback handle by the okPressed()
 		createButton(buttonComposite, IDialogConstants.OK_ID, Messages.CherryPickDialog_3, false);
 
-		cancel = createButton(buttonComposite, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, true);
-		GridData gd_cancel = new GridData(SWT.RIGHT, SWT.CENTER, false, false);
-		gd_cancel.grabExcessHorizontalSpace = true;
-		cancel.setLayoutData(gd_cancel);
+		Button cancel = createButton(buttonComposite, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, true);
+		GridData gdCancel = new GridData(SWT.RIGHT, SWT.CENTER, false, false);
+		gdCancel.grabExcessHorizontalSpace = true;
+		cancel.setLayoutData(gdCancel);
 	}
 
 	@Override
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/CherryPickRevision.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/CherryPickRevision.java
index 6888404..1c4b5d4 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/CherryPickRevision.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/CherryPickRevision.java
@@ -44,9 +44,6 @@
 import org.eclipse.jface.dialogs.ErrorDialog;

 import org.eclipse.jface.viewers.IStructuredSelection;

 import org.eclipse.jface.viewers.StructuredSelection;

-import org.eclipse.jgit.errors.AmbiguousObjectException;

-import org.eclipse.jgit.errors.IncorrectObjectTypeException;

-import org.eclipse.jgit.errors.RevisionSyntaxException;

 import org.eclipse.jgit.lib.Constants;

 import org.eclipse.jgit.lib.ObjectId;

 import org.eclipse.jgit.lib.Repository;

@@ -89,33 +86,43 @@
 			return;

 		}

 		URIish remoteURI = getRemoteURI();

-		Job job = new WorkspaceJob(Messages.CherryPickRevision_4 + remoteURI.toPrivateString()) {

-			@Override

-			public IStatus runInWorkspace(IProgressMonitor monitor) {

-				try {

-					fetchChange(monitor);

-				} catch (CoreException | URISyntaxException | IOException e) {

-					return new Status(IStatus.ERROR, EGerritUIPlugin.PLUGIN_ID,

-							Messages.CherryPickRevision_5 + remoteURI.toPrivateString(), e);

+		if (remoteURI != null) {

+			Job job = new WorkspaceJob(Messages.CherryPickRevision_4 + remoteURI.toPrivateString()) {

+				@Override

+				public IStatus runInWorkspace(IProgressMonitor monitor) {

+					try {

+						fetchChange(monitor);

+					} catch (CoreException | URISyntaxException | IOException e) {

+						return new Status(IStatus.ERROR, EGerritUIPlugin.PLUGIN_ID,

+								Messages.CherryPickRevision_5 + remoteURI.toPrivateString(), e);

+					}

+					return Status.OK_STATUS;

 				}

-				return Status.OK_STATUS;

-			}

 

-			@Override

-			public boolean belongsTo(Object family) {

-				if (JobFamilies.FETCH.equals(family)) {

-					return true;

+				@Override

+				public boolean belongsTo(Object family) {

+					if (JobFamilies.FETCH.equals(family)) {

+						return true;

+					}

+					return super.belongsTo(family);

 				}

-				return super.belongsTo(family);

+			};

+			job.setUser(true);

+			job.schedule();

+			try {

+				job.join();

+			} catch (InterruptedException e) {

+				return;

 			}

-		};

-		job.setUser(true);

-		job.schedule();

-		try {

-			job.join();

-		} catch (InterruptedException e) {

-			return;

+			cherryPickAfterFetch(job);

 		}

+

+	}

+

+	/**

+	 * @param job

+	 */

+	private void cherryPickAfterFetch(Job job) {

 		try {

 			if (!job.getResult().isOK()) {

 				return;

@@ -138,8 +145,7 @@
 		}

 	}

 

-	private void initializeCommitFromRevision() throws RevisionSyntaxException, AmbiguousObjectException,

-			IncorrectObjectTypeException, IOException, CoreException {

+	private void initializeCommitFromRevision() throws IOException, CoreException {

 		ObjectId commitId = repo.resolve(revision.getCommit().getCommit());

 		commit = null;

 		try (org.eclipse.jgit.revwalk.RevWalk revWalk = new org.eclipse.jgit.revwalk.RevWalk(repo)) {

diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/EGerritCommentMarkers.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/EGerritCommentMarkers.java
index fa54686..ae8f599 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/EGerritCommentMarkers.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/EGerritCommentMarkers.java
@@ -12,15 +12,21 @@
 package org.eclipse.egerrit.internal.ui.editors;
 
 public class EGerritCommentMarkers {
-	public static String COMMENT_MARKER_ID = "org.eclipse.egerrit.ui.commentMarker"; //$NON-NLS-1$
+	public static final String COMMENT_MARKER_ID = "org.eclipse.egerrit.ui.commentMarker"; //$NON-NLS-1$
 
-	public static String ATTR_COMMENT_INFO = "commentInfo"; //$NON-NLS-1$
+	public static final String ATTR_COMMENT_INFO = "commentInfo"; //$NON-NLS-1$
 
-	public static String ATTR_FILE_INFO = "fileInfo"; //$NON-NLS-1$
+	public static final String ATTR_FILE_INFO = "fileInfo"; //$NON-NLS-1$
 
-	public static String ATTR_GERRIT_CLIENT = "gerritClient"; //$NON-NLS-1$
+	public static final String ATTR_GERRIT_CLIENT = "gerritClient"; //$NON-NLS-1$
 
-	public static String ATTR_IS_DRAFT = "isDraft"; //$NON-NLS-1$
+	public static final String ATTR_IS_DRAFT = "isDraft"; //$NON-NLS-1$
 
-	public static String ATTR_MESSAGE = "message"; //$NON-NLS-1$
+	public static final String ATTR_MESSAGE = "message"; //$NON-NLS-1$
+
+	/**
+	 * The default constructor. Do not allow to build an object of this class
+	 */
+	private EGerritCommentMarkers() {
+	}
 }
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/EGerritQuickFix.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/EGerritQuickFix.java
index 1c8305e..8521bf5 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/EGerritQuickFix.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/EGerritQuickFix.java
@@ -16,10 +16,10 @@
 /**
  * Base class for the quick fixes provided by egerrit
  */
-public abstract class EGerritQuickFix implements IMarkerResolution2 {
-	String label;
+abstract class EGerritQuickFix implements IMarkerResolution2 {
+	private String label;
 
-	String description;
+	private String description;
 
 	EGerritQuickFix(String label, String completeMessage) {
 		this.label = label;
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/FilesDialog.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/FilesDialog.java
index 1e0e3ed..d8c102c 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/FilesDialog.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/FilesDialog.java
@@ -24,8 +24,6 @@
 import org.eclipse.jface.dialogs.Dialog;
 import org.eclipse.jface.dialogs.IDialogConstants;
 import org.eclipse.jface.resource.StringConverter;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IDoubleClickListener;
 import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.jface.viewers.ViewerFilter;
 import org.eclipse.osgi.util.NLS;
@@ -136,13 +134,9 @@
 		tableUIFiles.createTableViewerSection(composite);
 		fViewer = tableUIFiles.getViewer();
 		//Create a second listener to close the dialog
-		fViewer.addDoubleClickListener(new IDoubleClickListener() {
-
-			@Override
-			public void doubleClick(DoubleClickEvent event) {
-				storeDialogSettings();
-				FilesDialog.this.close();
-			}
+		fViewer.addDoubleClickListener(event -> {
+			storeDialogSettings();
+			FilesDialog.this.close();
 		});
 		tableUIFiles.setDialogSelection();
 		createFilterArea(composite, tableUIFiles);
@@ -288,10 +282,10 @@
 	private int getcommitMessageIndex(Table table) {
 		TableItem[] items = table.getItems();
 		int size = items.length;
-		String COMMIT_MSG = "COMMIT_MSG".toLowerCase(); //$NON-NLS-1$
+		String commitMsg = "COMMIT_MSG".toLowerCase(); //$NON-NLS-1$
 		for (int index = 0; index < size; index++) {
 			StringToFileInfoImpl data = (StringToFileInfoImpl) items[index].getData();
-			if (data.getKey().toLowerCase().contains(COMMIT_MSG)) {
+			if (data.getKey().toLowerCase().contains(commitMsg)) {
 				return index;
 			}
 		}
@@ -457,7 +451,7 @@
 			nextIndex = 0;
 		}
 		if (nextIndex <= maxTableItem) {
-			table.setSelection((nextIndex));
+			table.setSelection(nextIndex);
 		} else {
 			//Select the last item in the table (Even the Commit MSG )
 			table.setSelection(maxTableItem);
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/HideControlObservable.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/HideControlObservable.java
index 7027632..6012f9b 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/HideControlObservable.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/HideControlObservable.java
@@ -37,7 +37,7 @@
  * <strong>Note:</strong> this observable works for controls within a <strong>GridLayout only</strong>.
  * </p>
  */
-public class HideControlObservable extends WritableValue implements IValueChangeListener {
+class HideControlObservable extends WritableValue implements IValueChangeListener {
 	private final DataBindingContext bindingContext = new DataBindingContext();
 
 	private final ISWTObservableValue sizeObservable;
@@ -46,7 +46,7 @@
 
 	private final Control control;
 
-	public HideControlObservable(Control control) {
+	HideControlObservable(Control control) {
 		super(control.getVisible(), Boolean.class);
 		this.control = control;
 
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/MarkerMenuContribution.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/MarkerMenuContribution.java
index fb3311a..d5a733d 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/MarkerMenuContribution.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/MarkerMenuContribution.java
@@ -41,13 +41,13 @@
  * @since 1.0
  */
 
-public class MarkerMenuContribution extends ContributionItem {
+class MarkerMenuContribution extends ContributionItem {
 
 	private ITextEditor editor;
 
 	private int fCurrentLine = -1;
 
-	public MarkerMenuContribution(ITextEditor editor) {
+	MarkerMenuContribution(ITextEditor editor) {
 		this.editor = editor;
 	}
 
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/NegateBooleanConverter.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/NegateBooleanConverter.java
index eb2f72c..c387fb3 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/NegateBooleanConverter.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/NegateBooleanConverter.java
@@ -16,7 +16,7 @@
 /**
  * Return the boolean value opposite to the one provided
  */
-public class NegateBooleanConverter extends UpdateValueStrategy {
+class NegateBooleanConverter extends UpdateValueStrategy {
 	@Override
 	public Object convert(Object value) {
 		return !((Boolean) value).booleanValue();
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/OpenCompareEditor.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/OpenCompareEditor.java
index 4bd461b..d335c50 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/OpenCompareEditor.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/OpenCompareEditor.java
@@ -31,9 +31,9 @@
 import org.slf4j.LoggerFactory;
 
 public class OpenCompareEditor {
-	final static Logger logger = LoggerFactory.getLogger(OpenCompareEditor.class);
+	private static final Logger logger = LoggerFactory.getLogger(OpenCompareEditor.class);
 
-	final static boolean SUPPORT_SWAP = Platform.getBundle("org.eclipse.compare") //$NON-NLS-1$
+	private static final boolean SUPPORT_SWAP = Platform.getBundle("org.eclipse.compare") //$NON-NLS-1$
 			.getVersion()
 			.compareTo(new Version("3.7.0")) > 0; //$NON-NLS-1$
 
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/OpenFileSelectionHandler.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/OpenFileSelectionHandler.java
index 86027da..e862d53 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/OpenFileSelectionHandler.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/OpenFileSelectionHandler.java
@@ -43,7 +43,7 @@
 			if (editorInput == null) {
 				FilesDialog dialog = FilesDialog.openedDialog();
 				if (dialog != null) {
-					if (event.getCommand().getId().equals("org.eclipse.egerrit.internal.ui.SelectPreviousFile")) { //$NON-NLS-1$
+					if ("org.eclipse.egerrit.internal.ui.SelectPreviousFile".equals(event.getCommand().getId())) { //$NON-NLS-1$
 						dialog.selectPreviousFile();
 					} else {
 						dialog.selectNextFile();
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/QueryHelpers.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/QueryHelpers.java
index fb1f12e..f7263c8 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/QueryHelpers.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/QueryHelpers.java
@@ -57,6 +57,12 @@
 public class QueryHelpers {
 
 	/**
+	 * The default constructor. Do not allow to build an object of this class
+	 */
+	private QueryHelpers() {
+	}
+
+	/**
 	 * Get the changes that have a given subject
 	 */
 	public static ChangeInfo[] lookupPartialChangeInfoFromSubject(GerritClient gerritClient, String subject,
@@ -79,7 +85,7 @@
 			} catch (EGerritException e) {
 				EGerritCorePlugin.logError(gerritClient.getRepository().formatGerritVersion() + e.getMessage());
 			}
-			return null;
+			return new ChangeInfo[0];
 		} finally {
 			monitor.done();
 		}
@@ -87,20 +93,19 @@
 
 	private static String setFreeText(String subject) {
 		// use the subject to query the server
-		String query = "message:\"" + subject + "\""; //$NON-NLS-1$ //$NON-NLS-2$
-		return query;
+		return "message:\"" + subject + "\""; //$NON-NLS-1$ //$NON-NLS-2$
 	}
 
 	/**
 	 * Get a review by changeId
 	 */
-	public static ChangeInfo lookupPartialChangeInfoFromChangeId(GerritClient gerrit, String change_id,
+	public static ChangeInfo lookupPartialChangeInfoFromChangeId(GerritClient gerrit, String changeId,
 			IProgressMonitor monitor) {
 		try {
 			monitor.beginTask(Messages.QueryHelpers_executingQuery, IProgressMonitor.UNKNOWN);
 
 			GetChangeCommand command = null;
-			command = gerrit.getChange(change_id);
+			command = gerrit.getChange(changeId);
 			command.addOption(ChangeOption.LABELS);
 			command.addOption(ChangeOption.DETAILED_LABELS);
 			command.addOption(ChangeOption.DETAILED_ACCOUNTS);
@@ -170,14 +175,14 @@
 			//There is no more drafts, so we need to clear our data structure
 			if (drafts.entrySet().isEmpty()) {
 				Collection<FileInfo> files = revision.getFiles().values();
-				files.stream().filter(f -> f.getDraftComments().size() != 0).forEach(f -> f.getDraftComments().clear());
+				files.stream().filter(f -> !f.getDraftComments().isEmpty()).forEach(f -> f.getDraftComments().clear());
 				return;
 			}
 
 			for (Entry<String, ArrayList<CommentInfo>> draftComment : drafts.entrySet()) {
 				FileInfo files = revision.getFiles().get(draftComment.getKey());
 				if (files != null) {
-					if (files.getDraftComments().size() != 0) {
+					if (!files.getDraftComments().isEmpty()) {
 						files.getDraftComments().clear();
 					}
 					files.getDraftComments().addAll(draftComment.getValue());
@@ -512,7 +517,7 @@
 		ChangeInfo[] conflictsWithChangeInfo = null;
 
 		synchronized (element) {
-			if (("MERGED".equals(element.getStatus()) || "ABANDONED".equals(element.getStatus()))) { //$NON-NLS-1$ //$NON-NLS-2$
+			if ("MERGED".equals(element.getStatus()) || "ABANDONED".equals(element.getStatus())) { //$NON-NLS-1$ //$NON-NLS-2$
 				return;
 			}
 		}
@@ -540,7 +545,7 @@
 		}
 	}
 
-	public static void loadDetailedInformation(GerritClient gerritClient, ChangeInfo toLoad) {
+	static void loadDetailedInformation(GerritClient gerritClient, ChangeInfo toLoad) {
 		loadSameTopic(gerritClient, toLoad);
 		loadConflictsWith(gerritClient, toLoad);
 		loadIncludedIn(gerritClient, toLoad);
@@ -549,7 +554,7 @@
 		loadRelatedChanges(gerritClient, toLoad);
 	}
 
-	public static void deleteDraft(GerritClient gerritClient, CommentInfo toDelete) {
+	static void deleteDraft(GerritClient gerritClient, CommentInfo toDelete) {
 		RevisionInfo revision = ModelHelpers.getRevision(toDelete);
 		DeleteDraftCommand deleteDraft = gerritClient.deleteDraft(revision.getChangeInfo().getId(), revision.getId(),
 				toDelete.getId());
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/QuickFixDeleteDraftComment.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/QuickFixDeleteDraftComment.java
index cdb67bc..cd77118 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/QuickFixDeleteDraftComment.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/QuickFixDeleteDraftComment.java
@@ -29,7 +29,7 @@
  * @since 1.0
  */
 
-public class QuickFixDeleteDraftComment extends EGerritQuickFix {
+class QuickFixDeleteDraftComment extends EGerritQuickFix {
 	QuickFixDeleteDraftComment(String label, String completeMessage) {
 		super(label, completeMessage);
 	}
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/QuickFixModifyDraft.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/QuickFixModifyDraft.java
index 2f1b2b9..608171a 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/QuickFixModifyDraft.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/QuickFixModifyDraft.java
@@ -36,7 +36,7 @@
  * @since 1.0
  */
 
-public class QuickFixModifyDraft extends EGerritQuickFix {
+class QuickFixModifyDraft extends EGerritQuickFix {
 	QuickFixModifyDraft(String label, String completeMessage) {
 		super(label, completeMessage);
 	}
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/QuickFixReplyDoneToComment.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/QuickFixReplyDoneToComment.java
index f2371c5..e7c8427 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/QuickFixReplyDoneToComment.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/QuickFixReplyDoneToComment.java
@@ -31,7 +31,7 @@
  * @since 1.0
  */
 
-public class QuickFixReplyDoneToComment extends EGerritQuickFix {
+class QuickFixReplyDoneToComment extends EGerritQuickFix {
 
 	QuickFixReplyDoneToComment(String label, String completeMessage) {
 		super(label, completeMessage);
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/QuickFixReplyToComment.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/QuickFixReplyToComment.java
index 81fb49b..777af52 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/QuickFixReplyToComment.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/QuickFixReplyToComment.java
@@ -36,7 +36,7 @@
  * @since 1.0
  */
 
-public class QuickFixReplyToComment extends EGerritQuickFix {
+class QuickFixReplyToComment extends EGerritQuickFix {
 	QuickFixReplyToComment(String label, String completeMessage) {
 		super(label, completeMessage);
 	}
@@ -49,7 +49,7 @@
 			CommentInfo existingComment = (CommentInfo) marker.getAttribute(EGerritCommentMarkers.ATTR_COMMENT_INFO);
 
 			final InputDialog replyDialog = new InputDialog(shell, Messages.QuickFixReplyToComment_0,
-					Messages.QuickFixReplyToComment_1 + message.toString(), "", null) { //$NON-NLS-1$
+					Messages.QuickFixReplyToComment_1 + message, "", null) { //$NON-NLS-1$
 				@Override
 				protected int getInputTextStyle() {
 					return SWT.MULTI | SWT.BORDER | SWT.V_SCROLL | SWT.WRAP;
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/QuickFixer.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/QuickFixer.java
index 9d98363..b3ca9c9 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/QuickFixer.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/QuickFixer.java
@@ -38,7 +38,7 @@
 						new QuickFixModifyDraft(Messages.QuickFixer_0 + truncatedMsg, fullMessage),
 						new QuickFixDeleteDraftComment(Messages.QuickFixer_1 + truncatedMsg, fullMessage) };
 			} else {
-				if (element.getMessage().equalsIgnoreCase("done")) { //$NON-NLS-1$
+				if ("done".equalsIgnoreCase(element.getMessage())) { //$NON-NLS-1$
 					return new IMarkerResolution[] {
 							new QuickFixReplyToComment(Messages.QuickFixer_3 + truncatedMsg, fullMessage) };
 				}
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/RefreshRelatedEditors.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/RefreshRelatedEditors.java
index 46f93b6..0df3d8a 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/RefreshRelatedEditors.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/RefreshRelatedEditors.java
@@ -46,7 +46,7 @@
 	@Override
 	public IStatus run(IProgressMonitor monitor) {
 		/* Get list of related changes and remove current one */
-		List<String> changeIds = new ArrayList<String>();
+		List<String> changeIds = new ArrayList<>();
 		if (fChangeInfo.getRelatedChanges() != null) {
 			for (RelatedChangeAndCommitInfo change : fChangeInfo.getRelatedChanges().getChanges()) {
 				if (change.getChange_id() != null && !change.getChange_id().equals(fChangeInfo.getChange_id())) {
@@ -54,15 +54,16 @@
 				}
 			}
 		}
-		if (changeIds.size() == 0) {
+		if (changeIds.isEmpty()) {
 			return Status.OK_STATUS;
 		}
 
 		//Obtain the list of editors opened
 		IEditorReference[][] editorRefs = new IEditorReference[1][];
-		Display.getDefault().syncExec(() -> {
-			editorRefs[0] = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getEditorReferences();
-		});
+		Display.getDefault().syncExec(() -> editorRefs[0] = PlatformUI.getWorkbench()
+				.getActiveWorkbenchWindow()
+				.getActivePage()
+				.getEditorReferences());
 
 		/* Iterate over all the open editors in the workbench */
 		for (IEditorReference editorRef : editorRefs[0]) {
@@ -71,10 +72,9 @@
 
 			if (part instanceof ChangeDetailEditor) {
 				ChangeDetailEditorInput changeInput = (ChangeDetailEditorInput) part.getEditorInput();
-				if (!changeInput.getChange().getChange_id().equals(fChangeInfo.getChange_id())) {
-					if (changeIds.contains(changeInput.getChange().getChange_id())) {
-						QueryHelpers.loadBasicInformation(fGerritClient, changeInput.getChange(), true);
-					}
+				if (!changeInput.getChange().getChange_id().equals(fChangeInfo.getChange_id())
+						&& (changeIds.contains(changeInput.getChange().getChange_id()))) {
+					QueryHelpers.loadBasicInformation(fGerritClient, changeInput.getChange(), true);
 				}
 			}
 		}
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/ReplyDialog.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/ReplyDialog.java
index 3632bb5b..d2d646f 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/ReplyDialog.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/ReplyDialog.java
@@ -66,7 +66,7 @@
 	// A map of the permitted labels that maps a label name to the list of
 	// values that are allowed for that label. Only set if 'detailed labels' are
 	// requested.
-	private Map<String, EList<String>> permitted_labels;
+	private Map<String, EList<String>> permittedLabels;
 
 	private Composite keyComposite;
 
@@ -76,9 +76,9 @@
 
 	private ScrolledComposite scrolledDraftArea;
 
-	private final String DISPLAYWIDGET = "displayWidget"; //$NON-NLS-1$
+	private static final String DISPLAYWIDGET = "displayWidget"; //$NON-NLS-1$
 
-	private Map<String, Integer> lastUserVotes = new LinkedHashMap<String, Integer>();
+	private Map<String, Integer> lastUserVotes = new LinkedHashMap<>();
 
 	private RevisionInfo fRevisionInfo;
 
@@ -95,7 +95,7 @@
 				null);
 		fRevisionInfo = revisionToReplyTo;
 		fGerritClient = gerritClient;
-		permitted_labels = revisionToReplyTo.getChangeInfo().getSortedPermittedLabels();
+		permittedLabels = revisionToReplyTo.getChangeInfo().getSortedPermittedLabels();
 		labelsInfo = revisionToReplyTo.getChangeInfo().getLabels();
 		boolean isVoteAllowed = revisionToReplyTo.getId()
 				.equals(revisionToReplyTo.getChangeInfo().getCurrent_revision());
@@ -305,13 +305,13 @@
 			scrolledDraftArea.setLayoutData(grid);
 			Composite composite = new Composite(scrolledDraftArea, SWT.NONE);
 
-			GridLayout gl_composite = new GridLayout(1, false);
-			gl_composite.marginTop = 0;
-			gl_composite.marginHeight = 0;
-			composite.setLayout(gl_composite);
-			GridData gd_composite = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1);
-			gd_composite.heightHint = 150;
-			composite.setLayoutData(gd_composite);
+			GridLayout glComposite = new GridLayout(1, false);
+			glComposite.marginTop = 0;
+			glComposite.marginHeight = 0;
+			composite.setLayout(glComposite);
+			GridData gdComposite = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1);
+			gdComposite.heightHint = 150;
+			composite.setLayoutData(gdComposite);
 			composite.addControlListener(new ControlListener() {
 
 				@Override
@@ -397,14 +397,14 @@
 			return;//no need to create the composite
 		}
 		Composite composite = new Composite(parent, SWT.NONE);
-		GridLayout gl_composite = new GridLayout(3, false);
-		gl_composite.marginTop = 3;
-		composite.setLayout(gl_composite);
-		GridData gd_composite = new GridData(SWT.FILL, SWT.LEFT, true, false, 1, 1);
-		int height = 75 + (30 * (permitted_labels.size() - 1));//Increase by 30  for each line to add after
-		gd_composite.minimumHeight = height;
-		gd_composite.heightHint = height;
-		composite.setLayoutData(gd_composite);
+		GridLayout glComposite = new GridLayout(3, false);
+		glComposite.marginTop = 3;
+		composite.setLayout(glComposite);
+		GridData gdComposite = new GridData(SWT.FILL, SWT.LEFT, true, false, 1, 1);
+		int height = 75 + (30 * (permittedLabels.size() - 1));//Increase by 30  for each line to add after
+		gdComposite.minimumHeight = height;
+		gdComposite.heightHint = height;
+		composite.setLayoutData(gdComposite);
 		keyComposite = createComposite(composite, SWT.LEFT, 1, false);
 		radioButtonComposite = createComposite(composite, SWT.CENTER, 1, false);
 		detailTextComposite = createComposite(composite, SWT.LEFT, 1, true);
@@ -415,11 +415,11 @@
 
 	private Composite createComposite(Composite parent, int horizontalSwt, int numColumn, boolean grabHorizon) {
 		Composite composite = new Composite(parent, SWT.NONE);
-		GridLayout gl_composite = new GridLayout(numColumn, false);
-		gl_composite.marginTop = 3;
-		composite.setLayout(gl_composite);
-		GridData gd_composite = new GridData(horizontalSwt, SWT.CENTER, grabHorizon, false);
-		composite.setLayoutData(gd_composite);
+		GridLayout glComposite = new GridLayout(numColumn, false);
+		glComposite.marginTop = 3;
+		composite.setLayout(glComposite);
+		GridData gdComposite = new GridData(horizontalSwt, SWT.CENTER, grabHorizon, false);
+		composite.setLayoutData(gdComposite);
 		return composite;
 	}
 
@@ -460,7 +460,7 @@
 		lastUserVotes = fRevisionInfo.getChangeInfo().getUserLastLabelSet(loginUser);
 
 		//Set the radio buttons
-		Iterator<Map.Entry<String, EList<String>>> iterator = permitted_labels.entrySet().iterator();
+		Iterator<Map.Entry<String, EList<String>>> iterator = permittedLabels.entrySet().iterator();
 		while (iterator.hasNext()) {
 			Entry<String, EList<String>> permittedlabel = iterator.next();
 			sizeRadio = createARowRadioLabel(permittedlabel, maxRadio, fontSize.x);
@@ -498,7 +498,7 @@
 
 		radioComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
 		//Fill the dummy space
-		int middlePoint = (maxRadio + 1) / 2; //button position for the column = 0;
+		int middlePoint = (maxRadio + 1) / 2; //button position for the column  = 0
 		int minValue = Integer.parseInt(listPermitted.get(0)); //get the first minimum value
 		int numEmptyBefore = middlePoint + minValue - 1;
 		int numEmptyAfter = middlePoint - Integer.parseInt(listPermitted.get(listPermitted.size() - 1)) - 1;//compute the number of empty space to add at the end
@@ -581,7 +581,7 @@
 	 */
 	private Composite getRadioButtonHeaderLabels(int maxRadioChoice) {
 		EList<String> listPermitted = null;
-		Iterator<Map.Entry<String, EList<String>>> iterator = permitted_labels.entrySet().iterator();
+		Iterator<Map.Entry<String, EList<String>>> iterator = permittedLabels.entrySet().iterator();
 		//Get the structure having all the possible options
 		while (iterator.hasNext()) {
 			Entry<String, EList<String>> permittedlabel = iterator.next();
@@ -631,7 +631,7 @@
 	private int getMaxCountLabels() {
 		int maxButtons = 0;
 		int count = 0;
-		Iterator<Map.Entry<String, EList<String>>> iterator = permitted_labels.entrySet().iterator();
+		Iterator<Map.Entry<String, EList<String>>> iterator = permittedLabels.entrySet().iterator();
 		while (iterator.hasNext()) {
 			Map.Entry<String, EList<String>> permittedlabel = iterator.next();
 			count = permittedlabel.getValue().size();
@@ -646,24 +646,21 @@
 	 * @return Listener
 	 */
 	private Listener radioGroupListener() {
-		return new Listener() {
 
-			@Override
-			public void handleEvent(Event event) {
-				Widget wid = event.widget;
-				Object obj = wid.getData();
-				String keyLabel = (String) wid.getData((String) obj);
-				String tootip = ((Button) wid).getToolTipText();
-				Object objWidget = wid.getData(DISPLAYWIDGET);
-				Label toShow = (Label) objWidget;
-				toShow.setText(tootip);
-				toShow.pack();
-				String st = (String) obj;
-				if (st.startsWith("+")) { //$NON-NLS-1$
-					st = st.substring(1);//parse the string for the positive value
-				}
-				lastUserVotes.put(keyLabel, Integer.parseInt(st.trim()));
+		return event -> {
+			Widget wid = event.widget;
+			Object obj = wid.getData();
+			String keyLabel = (String) wid.getData((String) obj);
+			String tootip = ((Button) wid).getToolTipText();
+			Object objWidget = wid.getData(DISPLAYWIDGET);
+			Label toShow = (Label) objWidget;
+			toShow.setText(tootip);
+			toShow.pack();
+			String st = (String) obj;
+			if (st.startsWith("+")) { //$NON-NLS-1$
+				st = st.substring(1);//parse the string for the positive value
 			}
+			lastUserVotes.put(keyLabel, Integer.parseInt(st.trim()));
 		};
 	}
 
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/ShowNextPatchSetHandler.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/ShowNextPatchSetHandler.java
index d9367e6..b5ab805 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/ShowNextPatchSetHandler.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/ShowNextPatchSetHandler.java
@@ -39,14 +39,14 @@
 		if (editor instanceof ChangeDetailEditor) {
 			ChangeDetailEditorInput input = (ChangeDetailEditorInput) ((ChangeDetailEditor) editor).getEditorInput();
 
-			ArrayList<RevisionInfo> revisions = new ArrayList<RevisionInfo>(input.getChange().getRevisions().values());
+			ArrayList<RevisionInfo> revisions = new ArrayList<>(input.getChange().getRevisions().values());
 
 			revisions.sort((o2, o1) -> o1.get_number() - o2.get_number());
 
-			LinkedHashMap<String, RevisionInfo> patchNumber = new LinkedHashMap<String, RevisionInfo>();
+			LinkedHashMap<String, RevisionInfo> patchNumber = new LinkedHashMap<>();
 			for (ListIterator<RevisionInfo> iter = revisions.listIterator(); iter.hasNext();) {
 				RevisionInfo element = iter.next();
-				patchNumber.put(new Integer(element.get_number()).toString(), element);
+				patchNumber.put(Integer.toString(element.get_number()), element);
 			}
 
 			Iterator<Entry<String, RevisionInfo>> itr = patchNumber.entrySet().iterator();
@@ -57,13 +57,11 @@
 				if (entry.getValue().get_number() == input.getChange().getUserSelectedRevision().get_number()) {
 					if (itr.hasNext()) {
 						entry = itr.next();
-						input.getChange().setUserSelectedRevision(entry.getValue());
-						break;
 					} else {
 						entry = first.next();
-						input.getChange().setUserSelectedRevision(entry.getValue());
-						break;
 					}
+					input.getChange().setUserSelectedRevision(entry.getValue());
+					break;
 				}
 			}
 
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/UIConflictsWithTable.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/UIConflictsWithTable.java
index b2a2dc9..cc3da80 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/UIConflictsWithTable.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/UIConflictsWithTable.java
@@ -31,7 +31,7 @@
 
 	public static final String CONFLICTS_WITH_TABLE = "conflictsWithTable"; //$NON-NLS-1$
 
-	private final int TABLE_STYLE = (SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);
+	private static final int TABLE_STYLE = SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION;
 
 	// ------------------------------------------------------------------------
 	// Variables
@@ -43,7 +43,6 @@
 	// ------------------------------------------------------------------------
 
 	public UIConflictsWithTable() {
-
 	}
 
 	// ------------------------------------------------------------------------
@@ -74,9 +73,6 @@
 		int size = tableInfo.length;
 //		logger.debug("Table	Name	Width	Resize Moveable"); //$NON-NLS-1$
 		for (int index = 0; index < size; index++) {
-//			logger.debug("index [ " + index + " ] " + tableInfo[index].getName() + "\t: " //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
-//					+ tableInfo[index].getWidth() + "\t: " + tableInfo[index].getResize() + "\t: " //$NON-NLS-1$ //$NON-NLS-2$
-//					+ tableInfo[index].getMoveable());
 			createTableViewerColumn(tableInfo[index]);
 		}
 
@@ -108,6 +104,11 @@
 
 	}
 
+	/**
+	 * return the table viewer
+	 *
+	 * @return
+	 */
 	public TableViewer getViewer() {
 		return fViewer;
 	}
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/UIFilesTable.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/UIFilesTable.java
index d5c5377..ba275d0 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/UIFilesTable.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/UIFilesTable.java
@@ -42,7 +42,6 @@
 import org.eclipse.emf.databinding.FeaturePath;
 import org.eclipse.jface.databinding.viewers.ObservableListContentProvider;
 import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.jface.viewers.DoubleClickEvent;
 import org.eclipse.jface.viewers.IDoubleClickListener;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.IStructuredSelection;
@@ -81,12 +80,10 @@
 
 	public static final String FILES_TABLE = "filesTable"; //$NON-NLS-1$
 
-	private final int TABLE_STYLE = (SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);
+	private static final int TABLE_STYLE = SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION;
 
 	private TableViewer fViewer = null;
 
-	private IDoubleClickListener fdoubleClickListener;
-
 	private GerritClient fGerritClient;
 
 	private ChangeInfo fChangeInfo;
@@ -340,25 +337,24 @@
 
 	private void adjustTableData() {
 		fViewer.getTable().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 10, 1));
-		fdoubleClickListener = new IDoubleClickListener() {
-			public void doubleClick(DoubleClickEvent event) {
-				if (!popupEnabled) {
-					HandleFileSelection handleSelection = new HandleFileSelection(fGerritClient, fViewer);
-					handleSelection.showFileSelection();
-				} else {
-					IStructuredSelection sel = (IStructuredSelection) event.getSelection();
-					Object element = sel.getFirstElement();
-					if (element instanceof StringToFileInfoImpl) {
-						FileInfo selectedFile = ((StringToFileInfoImpl) element).getValue();
-						OpenCompareProcess openCompare = new OpenCompareProcess();
-						openCompare.handleOpenCompare(fViewer.getTable().getShell(), fGerritClient, fChangeInfo,
-								selectedFile, fChangeInfo.getUserSelectedRevision());
-					}
+
+		IDoubleClickListener doubleClickListener = event -> {
+			if (!popupEnabled) {
+				HandleFileSelection handleSelection = new HandleFileSelection(fGerritClient, fViewer);
+				handleSelection.showFileSelection();
+			} else {
+				IStructuredSelection sel = (IStructuredSelection) event.getSelection();
+				Object element = sel.getFirstElement();
+				if (element instanceof StringToFileInfoImpl) {
+					FileInfo selectedFile = ((StringToFileInfoImpl) element).getValue();
+					OpenCompareProcess openCompare = new OpenCompareProcess();
+					openCompare.handleOpenCompare(fViewer.getTable().getShell(), fGerritClient, fChangeInfo,
+							selectedFile, fChangeInfo.getUserSelectedRevision());
 				}
 			}
 		};
 
-		fViewer.addDoubleClickListener(fdoubleClickListener);
+		fViewer.addDoubleClickListener(doubleClickListener);
 		if (!fGerritClient.getRepository().getServerInfo().isAnonymous()) {
 			fViewer.getTable().addMouseListener(toggleReviewedStateListener());
 		}
@@ -412,7 +408,7 @@
 		});
 	}
 
-	protected void filesTabDataBindings() {
+	private void filesTabDataBindings() {
 		//Set the FilesViewer
 		if (fViewer != null) {
 			final FeaturePath reviewed = FeaturePath.fromList(ModelPackage.Literals.STRING_TO_FILE_INFO__VALUE,
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 6e8aa89..4131e48 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
@@ -36,7 +36,7 @@
 
 	public static final String HISTORY_TABLE = "historyTable"; //$NON-NLS-1$
 
-	private final int TABLE_STYLE = (SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);
+	private static final int TABLE_STYLE = SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION;
 
 	// ------------------------------------------------------------------------
 	// Variables
@@ -81,7 +81,7 @@
 	 * @return
 	 */
 	private Listener initPaintListener() {
-		Listener paint = new Listener() {
+		return new Listener() {
 
 			@Override
 			public void handleEvent(Event event) {
@@ -99,7 +99,6 @@
 				}
 			}
 		};
-		return paint;
 	}
 
 	/**
@@ -129,9 +128,6 @@
 		int size = tableInfo.length;
 //		logger.debug("Table	Name	Width	Resize Moveable"); //$NON-NLS-1$
 		for (int index = 0; index < size; index++) {
-//			logger.debug("index [ " + index + " ] " + tableInfo[index].getName() + "\t: " //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
-//					+ tableInfo[index].getWidth() + "\t: " + tableInfo[index].getResize() + "\t: " //$NON-NLS-1$ //$NON-NLS-2$
-//					+ tableInfo[index].getMoveable());
 			createTableViewerColumn(tableInfo[index]);
 		}
 
@@ -162,6 +158,11 @@
 
 	}
 
+	/**
+	 * return the table viewer
+	 *
+	 * @return
+	 */
 	public TableViewer getViewer() {
 		return fViewer;
 	}
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/UIRelatedChangesTable.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/UIRelatedChangesTable.java
index 3aa5acc..8969d64 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/UIRelatedChangesTable.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/UIRelatedChangesTable.java
@@ -30,7 +30,7 @@
 
 	public static final String RELATED_CHANGES_TABLE = "relatedChangesTable"; //$NON-NLS-1$
 
-	private final int TABLE_STYLE = (SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);
+	private static final int TABLE_STYLE = SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION;
 
 	// ------------------------------------------------------------------------
 	// Variables
@@ -71,9 +71,6 @@
 		int size = tableInfo.length;
 //		logger.debug("Table	Name	Width	Resize Moveable"); //$NON-NLS-1$
 		for (int index = 0; index < size; index++) {
-//			logger.debug("index [ " + index + " ] " + tableInfo[index].getName() + "\t: " //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
-//					+ tableInfo[index].getWidth() + "\t: " + tableInfo[index].getResize() + "\t: " //$NON-NLS-1$ //$NON-NLS-2$
-//					+ tableInfo[index].getMoveable());
 			createTableViewerColumn(tableInfo[index]);
 		}
 
@@ -105,6 +102,11 @@
 
 	}
 
+	/**
+	 * return the table viewer
+	 * 
+	 * @return
+	 */
 	public TableViewer getViewer() {
 		return fViewer;
 	}
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/UIReviewersTable.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/UIReviewersTable.java
index 18268d0..67ff3a6 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/UIReviewersTable.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/UIReviewersTable.java
@@ -32,7 +32,7 @@
 
 	public static final String REVIEWERS_TABLE = "reviewersTable"; //$NON-NLS-1$
 
-	private final int TABLE_STYLE = (SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);
+	private static final int TABLE_STYLE = SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION;
 
 	// ------------------------------------------------------------------------
 	// Variables
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/UISameTopicTable.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/UISameTopicTable.java
index 58a00fc..6658c7c 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/UISameTopicTable.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/UISameTopicTable.java
@@ -31,7 +31,7 @@
 
 	public static final String SAME_TOPIC_TABLE = "sameTopicTable"; //$NON-NLS-1$
 
-	private final int TABLE_STYLE = (SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);
+	private static final int TABLE_STYLE = SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION;
 
 	// ------------------------------------------------------------------------
 	// Variables
@@ -76,9 +76,6 @@
 		int size = tableInfo.length;
 //		logger.debug("Table	Name	Width	Resize Moveable"); //$NON-NLS-1$
 		for (int index = 0; index < size; index++) {
-//			logger.debug("index [ " + index + " ] " + tableInfo[index].getName() + "\t: " //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
-//					+ tableInfo[index].getWidth() + "\t: " + tableInfo[index].getResize() + "\t: " //$NON-NLS-1$ //$NON-NLS-2$
-//					+ tableInfo[index].getMoveable());
 			createTableViewerColumn(tableInfo[index]);
 
 		}
@@ -111,6 +108,11 @@
 
 	}
 
+	/**
+	 * return the table viewer
+	 *
+	 * @return
+	 */
 	public TableViewer getViewer() {
 
 		return fViewer;
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/filter/AuthorKindFilter.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/filter/AuthorKindFilter.java
index c7215b4..00251ed 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/filter/AuthorKindFilter.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/filter/AuthorKindFilter.java
@@ -22,7 +22,7 @@
 	private boolean fIsMachine;
 
 	//Enum for potential CI user
-	enum AuthorCiName {
+	private enum AuthorCiName {
 		// 	Name
 		HUDSON("Hudson"), //$NON-NLS-1$
 		JENKINS("Jenkins"), // //$NON-NLS-1$
@@ -39,7 +39,7 @@
 		}
 
 		private static String[] getAllNames() {
-			ArrayList<String> listName = new ArrayList<String>();
+			ArrayList<String> listName = new ArrayList<>();
 			for (AuthorCiName st : AuthorCiName.values()) {
 				listName.add(st.getName());
 			}
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/filter/CommentsFilter.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/filter/CommentsFilter.java
index d61b80f..822917d 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/filter/CommentsFilter.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/filter/CommentsFilter.java
@@ -26,7 +26,7 @@
 	@Override
 	public boolean select(Viewer viewer, Object parentElement, Object element) {
 		FileInfo fileInfo = ((StringToFileInfoImpl) element).getValue();
-		if (fileInfo.getAllComments().size() != 0) {
+		if (!fileInfo.getAllComments().isEmpty()) {
 			return true;
 		}
 		return false;
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/filter/CommitMsgFileFilter.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/filter/CommitMsgFileFilter.java
index 9c11922..2a7b8df 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/filter/CommitMsgFileFilter.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/filter/CommitMsgFileFilter.java
@@ -25,7 +25,7 @@
 	@Override
 	public boolean select(Viewer viewer, Object parentElement, Object element) {
 		String file = ((StringToFileInfoImpl) element).getKey();
-		if (file.equalsIgnoreCase("/COMMIT_MSG")) { //$NON-NLS-1$
+		if ("/COMMIT_MSG".equalsIgnoreCase(file)) { //$NON-NLS-1$
 			return false;
 		}
 		return true;
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/filter/DeletedFilesFilter.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/filter/DeletedFilesFilter.java
index b58b4d2..8a2e656 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/filter/DeletedFilesFilter.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/filter/DeletedFilesFilter.java
@@ -26,7 +26,7 @@
 	@Override
 	public boolean select(Viewer viewer, Object parentElement, Object element) {
 		FileInfo fileInfo = ((StringToFileInfoImpl) element).getValue();
-		if (fileInfo.getStatus().equalsIgnoreCase("D")) { //$NON-NLS-1$
+		if ("D".equalsIgnoreCase(fileInfo.getStatus())) { //$NON-NLS-1$
 			return false;
 		}
 		return true;
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/model/BranchSelectionTableModel.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/model/BranchSelectionTableModel.java
index 571cc54..6f87aa8 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/model/BranchSelectionTableModel.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/model/BranchSelectionTableModel.java
@@ -25,8 +25,8 @@
 // ------------------------------------------------------------------------
 // Constants
 // ------------------------------------------------------------------------
-// Definition of the Conflict with table {name, width of the column, Resizeable,
-// Moveable, Alignment}
+// Definition of the Branch Selection with table :name, width of the column, Resizeable,
+// Moveable, Alignment
 public enum BranchSelectionTableModel implements ITableModel {
 	// 			Name 			                               Width 	Resize Moveable Alignment
 	Branch(Messages.BranchSelectionTableModel_branch, 140, true, true, SWT.LEFT), //
@@ -36,8 +36,6 @@
 
 	private int fwidth;
 
-	private final int fInitialwidth;
-
 	private final boolean fResize;
 
 	private final boolean fMoveable;
@@ -49,41 +47,61 @@
 	private BranchSelectionTableModel(String aName, int aWidth, boolean aResize, boolean aMove, int align) {
 		fHeader = aName;
 		fwidth = aWidth;
-		fInitialwidth = aWidth;
 		fResize = aResize;
 		fMoveable = aMove;
 		fAlignment = align;
 		fVisible = true;
 	}
 
+	/**
+	 * return the name
+	 */
 	public String getName() {
 		return fHeader;
 	}
 
+	/**
+	 * return the column width
+	 */
 	public int getWidth() {
 		return fwidth;
 	}
 
+	/**
+	 * return boolean if the field is resize-able
+	 */
 	public boolean getResize() {
 		return fResize;
 	}
 
+	/**
+	 * return boolean if the column is move-able
+	 */
 	public boolean getMoveable() {
 		return fMoveable;
 	}
 
+	/**
+	 * return the alignment of the field
+	 */
 	public int getAlignment() {
 		return fAlignment;
 	}
 
+	/**
+	 * return an array with the column name
+	 */
 	public String[] getColumnName() {
-		ArrayList<String> listName = new ArrayList<String>();
+		ArrayList<String> listName = new ArrayList<>();
 		for (ITableModel st : BranchSelectionTableModel.values()) {
 			listName.add(st.getName());
 		}
 		return listName.toArray(new String[] {});
 	}
 
+	/**
+	 * return the minimum width for all columns
+	 */
 	public int getMinimumWidth() {
 		int width = 0;
 		for (int index = 0; index < BranchSelectionTableModel.values().length; index++) {
@@ -92,16 +110,13 @@
 		return width;
 	}
 
+	/**
+	 * return if the column is visible
+	 *
+	 * @return
+	 */
 	public boolean isColumnVisible() {
 		return fVisible;
 	}
 
-	public void setColumnVisible(boolean value) {
-		fVisible = value;
-		if (value) {
-			fwidth = fInitialwidth;
-		} else {
-			fwidth = 0;
-		}
-	}
 }
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/model/ConflictWithTableModel.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/model/ConflictWithTableModel.java
index aa43dd1..9826089 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/model/ConflictWithTableModel.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/model/ConflictWithTableModel.java
@@ -25,8 +25,8 @@
 // ------------------------------------------------------------------------
 // Constants
 // ------------------------------------------------------------------------
-// Definition of the Conflict with table {name, width of the column, Resizeable,
-// Moveable, Alignment}
+// Definition of the Conflict with table :name, width of the column, Resizeable,
+// Moveable, Alignment
 public enum ConflictWithTableModel implements ITableModel {
 	// 			Name 			                               Width 	Resize Moveable Alignment
 	ID(Messages.ConfictWithTableDefinition_id, 80, false, true, SWT.LEFT), //
@@ -50,34 +50,55 @@
 		fAlignment = align;
 	}
 
+	/**
+	 * return the name
+	 */
 	public String getName() {
 		return fHeader;
 	}
 
+	/**
+	 * return the column width
+	 */
 	public int getWidth() {
 		return fwidth;
 	}
 
+	/**
+	 * return boolean if the field is resize-able
+	 */
 	public boolean getResize() {
 		return fResize;
 	}
 
+	/**
+	 * return boolean if the column is move-able
+	 */
 	public boolean getMoveable() {
 		return fMoveable;
 	}
 
+	/**
+	 * return the alignment of the field
+	 */
 	public int getAlignment() {
 		return fAlignment;
 	}
 
+	/**
+	 * return an array with the column name
+	 */
 	public String[] getColumnName() {
-		ArrayList<String> listName = new ArrayList<String>();
+		ArrayList<String> listName = new ArrayList<>();
 		for (ITableModel st : ConflictWithTableModel.values()) {
 			listName.add(st.getName());
 		}
 		return listName.toArray(new String[] {});
 	}
 
+	/**
+	 * return the minimum width for all columns
+	 */
 	public int getMinimumWidth() {
 		int width = 0;
 		for (int index = 0; index < ConflictWithTableModel.values().length; index++) {
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/model/FilesTableModel.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/model/FilesTableModel.java
index b67ef9f..00a5713 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/model/FilesTableModel.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/model/FilesTableModel.java
@@ -25,8 +25,8 @@
 // ------------------------------------------------------------------------
 // Constants
 // ------------------------------------------------------------------------
-// Definition of the Conflict with table {name, width of the column, Resizeable,
-// Moveable, Alignment}
+// Definition of the Conflict with table :name, width of the column, Resizeable,
+// Moveable, Alignment
 public enum FilesTableModel implements ITableModel {
 	// 			Name 			                               Width 	Resize Moveable Alignment
 	REVIEWED("", 35, true, true, SWT.LEFT), //$NON-NLS-1$
@@ -59,34 +59,55 @@
 		fVisible = true;
 	}
 
+	/**
+	 * return the name
+	 */
 	public String getName() {
 		return fHeader;
 	}
 
+	/**
+	 * return the column width
+	 */
 	public int getWidth() {
 		return fwidth;
 	}
 
+	/**
+	 * return boolean if the field is resize-able
+	 */
 	public boolean getResize() {
 		return fResize;
 	}
 
+	/**
+	 * return boolean if the column is move-able
+	 */
 	public boolean getMoveable() {
 		return fMoveable;
 	}
 
+	/**
+	 * return the alignment of the field
+	 */
 	public int getAlignment() {
 		return fAlignment;
 	}
 
+	/**
+	 * return an array with the column name
+	 */
 	public String[] getColumnName() {
-		ArrayList<String> listName = new ArrayList<String>();
+		ArrayList<String> listName = new ArrayList<>();
 		for (ITableModel st : FilesTableModel.values()) {
 			listName.add(st.getName());
 		}
 		return listName.toArray(new String[] {});
 	}
 
+	/**
+	 * return the minimum width for all columns
+	 */
 	public int getMinimumWidth() {
 		int width = 0;
 		for (int index = 0; index < FilesTableModel.values().length; index++) {
@@ -95,6 +116,11 @@
 		return width;
 	}
 
+	/**
+	 * return if the column is visible
+	 *
+	 * @return
+	 */
 	public boolean isColumnVisible() {
 		return fVisible;
 	}
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/model/HistoryTableModel.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/model/HistoryTableModel.java
index 6c5a4bc..a5730a0 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/model/HistoryTableModel.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/model/HistoryTableModel.java
@@ -25,7 +25,7 @@
 // ------------------------------------------------------------------------
 // Constants
 // ------------------------------------------------------------------------
-// Definition of the history table {date, author, message}
+// Definition of the history table :date, author, message
 public enum HistoryTableModel implements ITableModel {
 	// 			Name 			                               Width 	Resize Moveable Alignment
 	COMMENT("", 20, false, true, SWT.LEFT), // //$NON-NLS-1$
@@ -51,26 +51,44 @@
 		fAlignment = align;
 	}
 
+	/**
+	 * return the name
+	 */
 	public String getName() {
 		return fHeader;
 	}
 
+	/**
+	 * return the column width
+	 */
 	public int getWidth() {
 		return fwidth;
 	}
 
+	/**
+	 * return boolean if the field is resize-able
+	 */
 	public boolean getResize() {
 		return fResize;
 	}
 
+	/**
+	 * return boolean if the column is move-able
+	 */
 	public boolean getMoveable() {
 		return fMoveable;
 	}
 
+	/**
+	 * return the alignment of the field
+	 */
 	public int getAlignment() {
 		return fAlignment;
 	}
 
+	/**
+	 * return an array with the column name
+	 */
 	public String[] getColumnName() {
 		ArrayList<String> listName = new ArrayList<String>();
 		for (ITableModel st : HistoryTableModel.values()) {
@@ -79,6 +97,9 @@
 		return listName.toArray(new String[] {});
 	}
 
+	/**
+	 * return the minimum width for all columns
+	 */
 	public int getMinimumWidth() {
 		int width = 0;
 		for (int index = 0; index < HistoryTableModel.values().length; index++) {
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/model/HistoryTableSorter.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/model/HistoryTableSorter.java
index 672e137..c80c442 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/model/HistoryTableSorter.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/model/HistoryTableSorter.java
@@ -106,68 +106,90 @@
 
 		if (aViewer instanceof TableViewer) {
 
-			// We are in a table
-			TableViewer tv = (TableViewer) aViewer;
-			tv.getTable().setSortColumn(tv.getTable().getColumn(fColumnIndex));
+			return defaultSortTable(aViewer, aE1, aE2);
+		}
 
-			// Lookup aE1 and aE2
-			int idx1 = -1, idx2 = -1;
-			for (int i = 0; i < tv.getTable().getItemCount(); i++) {
-				Object obj = tv.getElementAt(i);
+		else if (aViewer instanceof TreeViewer) {
+
+			return defaultSortTree(aViewer, aE1, aE2);
+		}
+		return 0;
+	}
+
+	/**
+	 * @param aViewer
+	 * @param aE1
+	 * @param aE2
+	 * @return
+	 */
+	private int defaultSortTree(Viewer aViewer, Object aE1, Object aE2) {
+		TreeViewer tv = (TreeViewer) aViewer;
+		tv.getTree().setSortColumn(tv.getTree().getColumn(fColumnIndex));
+		int idx1 = -1;
+		int idx2 = -1;
+
+		Object[] listObj = tv.getTree().getItems();
+
+		for (int i = 0; i < listObj.length; i++) {
+			Object obj = ((TreeItem) listObj[i]).getData();
+			((TreeItem) listObj[i]).setExpanded(true);
+
+			if (obj != null) {
 				if (obj.equals(aE1)) {
 					idx1 = i;
 				} else if (obj.equals(aE2)) {
 					idx2 = i;
 				}
-				if (idx1 != -1 && idx2 != -1) {
+				if (idx1 > 0 && idx2 > 0) {
 					break;
 				}
 			}
-
-			// Compare the respective fields
-			int order = 0;
-
-			if (idx1 > -1 && idx2 > -1) {
-				String str1 = tv.getTable().getItems()[idx1].getText(this.fColumnIndex);
-				String str2 = tv.getTable().getItems()[idx2].getText(this.fColumnIndex);
-				order = str1.compareTo(str2);
-			}
-			return order;
 		}
 
-		else if (aViewer instanceof TreeViewer) {
-
-			TreeViewer tv = (TreeViewer) aViewer;
-			tv.getTree().setSortColumn(tv.getTree().getColumn(fColumnIndex));
-			int idx1 = -1, idx2 = -1;
-
-			Object[] listObj = tv.getTree().getItems();
-
-			for (int i = 0; i < listObj.length; i++) {
-				Object obj = ((TreeItem) listObj[i]).getData();
-				((TreeItem) listObj[i]).setExpanded(true);
-
-				if (obj != null) {
-					if (obj.equals(aE1)) {
-						idx1 = i;
-					} else if (obj.equals(aE2)) {
-						idx2 = i;
-					}
-					if (idx1 > 0 && idx2 > 0) {
-						break;
-					}
-				}
-			}
-
-			int order = 0;
-			if (idx1 > -1 && idx2 > -1) {
-				String str1 = tv.getTree().getItems()[idx1].getText(this.fColumnIndex);
-				String str2 = tv.getTree().getItems()[idx2].getText(this.fColumnIndex);
-				order = str1.compareTo(str2);
-			}
-			return order;
+		int order = 0;
+		if (idx1 > -1 && idx2 > -1) {
+			String str1 = tv.getTree().getItems()[idx1].getText(this.fColumnIndex);
+			String str2 = tv.getTree().getItems()[idx2].getText(this.fColumnIndex);
+			order = str1.compareTo(str2);
 		}
-		return 0;
+		return order;
+	}
+
+	/**
+	 * @param aViewer
+	 * @param aE1
+	 * @param aE2
+	 * @return
+	 */
+	private int defaultSortTable(Viewer aViewer, Object aE1, Object aE2) {
+		// We are in a table
+		TableViewer tv = (TableViewer) aViewer;
+		tv.getTable().setSortColumn(tv.getTable().getColumn(fColumnIndex));
+
+		// Lookup aE1 and aE2
+		int idx1 = -1;
+		int idx2 = -1;
+		for (int i = 0; i < tv.getTable().getItemCount(); i++) {
+			Object obj = tv.getElementAt(i);
+			if (obj.equals(aE1)) {
+				idx1 = i;
+			} else if (obj.equals(aE2)) {
+				idx2 = i;
+			}
+			if (idx1 != -1 && idx2 != -1) {
+				break;
+			}
+		}
+
+		// Compare the respective fields
+		int order = 0;
+
+		if (idx1 > -1 && idx2 > -1) {
+			String str1 = tv.getTable().getItems()[idx1].getText(this.fColumnIndex);
+			String str2 = tv.getTable().getItems()[idx2].getText(this.fColumnIndex);
+			order = str1.compareTo(str2);
+		}
+		return order;
 	}
 
 	// ------------------------------------------------------------------------
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/model/RelatedChangesTableModel.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/model/RelatedChangesTableModel.java
index f448de6..33291b1 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/model/RelatedChangesTableModel.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/model/RelatedChangesTableModel.java
@@ -27,8 +27,8 @@
 // ------------------------------------------------------------------------
 // Constants
 // ------------------------------------------------------------------------
-// Definition of the Conflict with table {name, width of the column, Resizeable,
-// Moveable, Alignment}
+// Definition of the Conflict with table :name, width of the column, Resizeable,
+// Moveable, Alignment
 public enum RelatedChangesTableModel implements ITableModel {
 	// 			Name 			                               Width 	Resize Moveable Alignment
 	ID(Messages.RelatedChangesTableDefinition_id, 80, false, true, SWT.LEFT), //
@@ -53,34 +53,55 @@
 		fAlignment = align;
 	}
 
+	/**
+	 * return the name
+	 */
 	public String getName() {
 		return fHeader;
 	}
 
+	/**
+	 * return the column width
+	 */
 	public int getWidth() {
 		return fwidth;
 	}
 
+	/**
+	 * return boolean if the field is resize-able
+	 */
 	public boolean getResize() {
 		return fResize;
 	}
 
+	/**
+	 * return boolean if the column is move-able
+	 */
 	public boolean getMoveable() {
 		return fMoveable;
 	}
 
+	/**
+	 * return the alignment of the field
+	 */
 	public int getAlignment() {
 		return fAlignment;
 	}
 
+	/**
+	 * return an array with the column name
+	 */
 	public String[] getColumnName() {
-		ArrayList<String> listName = new ArrayList<String>();
+		ArrayList<String> listName = new ArrayList<>();
 		for (ITableModel st : RelatedChangesTableModel.values()) {
 			listName.add(st.getName());
 		}
 		return listName.toArray(new String[] {});
 	}
 
+	/**
+	 * return the minimum width for all columns
+	 */
 	public int getMinimumWidth() {
 		int width = 0;
 		for (int index = 0; index < RelatedChangesTableModel.values().length; index++) {
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/model/ReviewTableSorter.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/model/ReviewTableSorter.java
index 69e0051..05108dc 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/model/ReviewTableSorter.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/model/ReviewTableSorter.java
@@ -74,11 +74,9 @@
 
 	private int defaultCompare(Viewer aViewer, Object aE1, Object aE2) {
 		if (aViewer instanceof TreeViewer) {
-			if (fColumnIndex == 0) {
-				if (aE1 instanceof GerritDiffNode && aE2 instanceof GerritDiffNode) {
-					return getComparator().compare(Boolean.toString(((GerritDiffNode) aE1).getFileInfo().isReviewed()),
-							Boolean.toString(((GerritDiffNode) aE2).getFileInfo().isReviewed()));
-				}
+			if ((fColumnIndex == 0) && (aE1 instanceof GerritDiffNode && aE2 instanceof GerritDiffNode)) {
+				return getComparator().compare(Boolean.toString(((GerritDiffNode) aE1).getFileInfo().isReviewed()),
+						Boolean.toString(((GerritDiffNode) aE2).getFileInfo().isReviewed()));
 			}
 			TreeViewer tv = (TreeViewer) aViewer;
 			FileInfoCompareCellLabelProvider provider = (FileInfoCompareCellLabelProvider) tv
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/model/ReviewersTableModel.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/model/ReviewersTableModel.java
index a7cc320..7664889 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/model/ReviewersTableModel.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/model/ReviewersTableModel.java
@@ -27,8 +27,8 @@
 // ------------------------------------------------------------------------
 // Constants
 // ------------------------------------------------------------------------
-// Definition of the Conflict with table {name, width of the column, Resizeable,
-// Moveable, Alignment}
+// Definition of the Conflict with table :name, width of the column, Resizeable,
+// Moveable, Alignment
 public enum ReviewersTableModel implements ITableModel {
 	// 			Name 			                               Width 	Resize Moveable Alignment
 	SELECT("", 24, false, true, SWT.LEFT), // //$NON-NLS-1$
@@ -53,34 +53,55 @@
 		fAlignment = align;
 	}
 
+	/**
+	 * return the name
+	 */
 	public String getName() {
 		return fHeader;
 	}
 
+	/**
+	 * return the column width
+	 */
 	public int getWidth() {
 		return fwidth;
 	}
 
+	/**
+	 * return boolean if the field is resize-able
+	 */
 	public boolean getResize() {
 		return fResize;
 	}
 
+	/**
+	 * return boolean if the column is move-able
+	 */
 	public boolean getMoveable() {
 		return fMoveable;
 	}
 
+	/**
+	 * return the alignment of the field
+	 */
 	public int getAlignment() {
 		return fAlignment;
 	}
 
+	/**
+	 * return an array with the column name
+	 */
 	public String[] getColumnName() {
-		ArrayList<String> listName = new ArrayList<String>();
+		ArrayList<String> listName = new ArrayList<>();
 		for (ITableModel st : ReviewersTableModel.values()) {
 			listName.add(st.getName());
 		}
 		return listName.toArray(new String[] {});
 	}
 
+	/**
+	 * return the minimum width for all columns
+	 */
 	public int getMinimumWidth() {
 		int width = 0;
 		for (int index = 0; index < ReviewersTableModel.values().length; index++) {
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/model/SameTopicTableModel.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/model/SameTopicTableModel.java
index aa950b6..f8de9d9 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/model/SameTopicTableModel.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/model/SameTopicTableModel.java
@@ -27,8 +27,8 @@
 // ------------------------------------------------------------------------
 // Constants
 // ------------------------------------------------------------------------
-// Definition of the Same topic table {name, width of the column, Resizeable,
-// Moveable, Alignment}
+// Definition of the Same topic table :name, width of the column, Resizeable,
+// Moveable, Alignment
 
 public enum SameTopicTableModel implements ITableModel {
 	// 			Name 			                               Width 	Resize Moveable Alignment
@@ -53,34 +53,55 @@
 		fAlignment = align;
 	}
 
+	/**
+	 * return the name
+	 */
 	public String getName() {
 		return fHeader;
 	}
 
+	/**
+	 * return the column width
+	 */
 	public int getWidth() {
 		return fwidth;
 	}
 
+	/**
+	 * return boolean if the field is resize-able
+	 */
 	public boolean getResize() {
 		return fResize;
 	}
 
+	/**
+	 * return boolean if the column is move-able
+	 */
 	public boolean getMoveable() {
 		return fMoveable;
 	}
 
+	/**
+	 * return the alignment of the field
+	 */
 	public int getAlignment() {
 		return fAlignment;
 	}
 
+	/**
+	 * return an array with the column name
+	 */
 	public String[] getColumnName() {
-		ArrayList<String> listName = new ArrayList<String>();
+		ArrayList<String> listName = new ArrayList<>();
 		for (ITableModel st : SameTopicTableModel.values()) {
 			listName.add(st.getName());
 		}
 		return listName.toArray(new String[] {});
 	}
 
+	/**
+	 * return the minimum width for all columns
+	 */
 	public int getMinimumWidth() {
 		int width = 0;
 		for (int index = 0; index < SameTopicTableModel.values().length; index++) {
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/BaseTableLabelProvider.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/BaseTableLabelProvider.java
index 1ca8f0c..7bb7499 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/BaseTableLabelProvider.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/BaseTableLabelProvider.java
@@ -27,10 +27,7 @@
  *
  * @since 1.0
  */
-public class BaseTableLabelProvider extends ObservableMapLabelProvider
-		implements ITableLabelProvider, ITableColorProvider {
-
-	private static final int INTEGER_BASE = 10;
+class BaseTableLabelProvider extends ObservableMapLabelProvider implements ITableLabelProvider, ITableColorProvider {
 
 	// ------------------------------------------------------------------------
 	// Constants
@@ -47,7 +44,7 @@
 	/**
 	 * Color used depending on the review state
 	 */
-	protected static Color DEFAULT_COLOR = fDisplay.getSystemColor(SWT.COLOR_LIST_BACKGROUND);
+	private static final Color DEFAULT_COLOR = fDisplay.getSystemColor(SWT.COLOR_LIST_BACKGROUND);
 
 	// ------------------------------------------------------------------------
 	// Constructors
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/BranchListLabelProvider.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/BranchListLabelProvider.java
index 5257b88..6620078 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/BranchListLabelProvider.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/BranchListLabelProvider.java
@@ -32,10 +32,10 @@
  */
 
 public class BranchListLabelProvider extends LabelProvider implements ITableLabelProvider {
-	private final String[] fTitles = { Messages.BranchSelectionTableModel_branch,
+	private static final String[] fTitles = { Messages.BranchSelectionTableModel_branch,
 			Messages.BranchSelectionTableModel_match };
 
-	private final String EMPTY_STRING = ""; //$NON-NLS-1$
+	private static final String EMPTY_STRING = ""; //$NON-NLS-1$
 
 	/**
 	 * Return the text associated to the column
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/DeleteDraftRevisionProvider.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/DeleteDraftRevisionProvider.java
index 0644017..f53491a 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/DeleteDraftRevisionProvider.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/DeleteDraftRevisionProvider.java
@@ -56,8 +56,8 @@
 	public void create(Composite parent, GerritClient gerritClient, ChangeInfo changeInfo) {
 		fDeleteDraftRevisionButton = new Button(parent, SWT.BORDER);
 		fDeleteDraftRevisionButton.setText(Messages.DeleteDraft_Text);
-		GridData gd_deleteDraft = new GridData(SWT.FILL, SWT.TOP, false, false, 1, 1);
-		fDeleteDraftRevisionButton.setLayoutData(gd_deleteDraft);
+		GridData gdDeleteDraft = new GridData(SWT.FILL, SWT.TOP, false, false, 1, 1);
+		fDeleteDraftRevisionButton.setLayoutData(gdDeleteDraft);
 		fDeleteDraftRevisionButton.setToolTipText(Messages.DeleteDraft_Tip);
 
 		IObservableValue revisionInfoObserveValue = EMFProperties
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/DynamicMenuBuilder.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/DynamicMenuBuilder.java
index ded3ff1..5a028bf 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/DynamicMenuBuilder.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/DynamicMenuBuilder.java
@@ -24,8 +24,6 @@
 import org.eclipse.egerrit.internal.ui.editors.ClearReviewedFlag;
 import org.eclipse.egerrit.internal.ui.table.model.ITableModel;
 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;
@@ -40,7 +38,7 @@
 public class DynamicMenuBuilder {
 	private Menu commonMenu;
 
-	private HashMap<ITableModel, TreeViewerColumn> treeViewerColumn = new HashMap<ITableModel, TreeViewerColumn>();
+	private HashMap<ITableModel, TreeViewerColumn> treeViewerColumn = new HashMap<>();
 
 	private FileTableLabelProvider tableLabelProvider;
 
@@ -61,13 +59,7 @@
 			((DiffTreeViewer) viewer).getControl().setMenu(commonMenu);
 		}
 
-		menuManager.addMenuListener(new IMenuListener() {
-			@Override
-			public void menuAboutToShow(IMenuManager manager) {
-				addMenuItem(commonMenu, viewer, client, available);
-			}
-		});
-
+		menuManager.addMenuListener(manager -> addMenuItem(commonMenu, viewer, client, available));
 		menuManager.update(true);
 	}
 
@@ -84,93 +76,118 @@
 
 			if (available) {
 				//Menu item: Open Workspace file
-				final MenuItem openFile = new MenuItem(menu, SWT.PUSH);
-				openFile.setText(Messages.UIFilesTable_0);
-				if (viewer instanceof TableViewer) {
-					tableLabelProvider = (FileTableLabelProvider) viewer.getLabelProvider();
-					openFile.setSelection(tableLabelProvider.getFileOrder());
-				}
-
-				openFile.addSelectionListener(new SelectionListener() {
-
-					@Override
-					public void widgetSelected(SelectionEvent e) {
-						HandleFileSelection handleSelection = new HandleFileSelection(client, viewer);
-						handleSelection.showFileSelection();
-					}
-
-					@Override
-					public void widgetDefaultSelected(SelectionEvent e) {
-					}
-				});
+				openFileMenuItem(menu, viewer, client);
 			}
 
 			//Menu item: Remove all Check Marks
-			final MenuItem removeCheckMark = new MenuItem(menu, SWT.PUSH);
-			removeCheckMark.setText(Messages.UIFilesTable_clearReviewedFlag);
-			removeCheckMark.addSelectionListener(new SelectionListener() {
-
-				@Override
-				public void widgetSelected(SelectionEvent e) {
-					List<FileInfo> listFiles = new ArrayList<FileInfo>();
-					if (viewer instanceof TableViewer) {
-						TableItem[] tableItems = ((TableViewer) viewer).getTable().getItems();
-						for (TableItem tableItem : tableItems) {
-							listFiles.add(((StringToFileInfoImpl) tableItem.getData()).getValue());
-						}
-					} else {
-						//Looking at the tree table in the upper section of the compare editor
-						Object obj = viewer.getInput();
-						if (obj instanceof GerritDiffNode) {
-							GerritDiffNode diffNode = (GerritDiffNode) obj;
-							IDiffElement[] children = diffNode.getChildren();
-							for (IDiffElement element : children) {
-								listFiles.add(((GerritDiffNode) element).getFileInfo());
-							}
-						}
-					}
-					ClearReviewedFlag reviewCheck = new ClearReviewedFlag(client, listFiles);
-					reviewCheck.removeCheckMark();
-				}
-
-				@Override
-				public void widgetDefaultSelected(SelectionEvent e) {
-				}
-			});
+			removeCheckMarkMenuItem(menu, viewer, client);
 
 			if (available) {
 				//Menu item: Separator
 				new MenuItem(menu, SWT.SEPARATOR);
 
 				//Menu item: Show File name first
-				final MenuItem nameFirst = new MenuItem(menu, SWT.CHECK);
-				nameFirst.setText(Messages.UIFilesTable_1);
-				if (viewer instanceof TableViewer) {
-					nameFirst.setSelection(tableLabelProvider.getFileOrder());
-				} else {
-
-					nameFirst.setSelection(
-							((FileInfoCompareCellLabelProvider) viewer.getLabelProvider()).getFileOrder());
-				}
-				nameFirst.addSelectionListener(new SelectionListener() {
-
-					@Override
-					public void widgetSelected(SelectionEvent e) {
-						MenuItem menuItem = (MenuItem) e.getSource();
-						if (viewer instanceof TableViewer) {
-							tableLabelProvider.setFileNameFirst(menuItem.getSelection());
-						} else {
-							((FileInfoCompareCellLabelProvider) viewer.getLabelProvider())
-									.setFileNameFirst(menuItem.getSelection());
-						}
-						viewer.refresh();
-					}
-
-					@Override
-					public void widgetDefaultSelected(SelectionEvent e) {
-					}
-				});
+				showFileNameFirstMenuItem(menu, viewer);
 			}
 		}
 	}
+
+	/**
+	 * @param menu
+	 * @param viewer
+	 */
+	private void showFileNameFirstMenuItem(Menu menu, ColumnViewer viewer) {
+		final MenuItem nameFirst = new MenuItem(menu, SWT.CHECK);
+		nameFirst.setText(Messages.UIFilesTable_1);
+		if (viewer instanceof TableViewer) {
+			nameFirst.setSelection(tableLabelProvider.getFileOrder());
+		} else {
+
+			nameFirst.setSelection(((FileInfoCompareCellLabelProvider) viewer.getLabelProvider()).getFileOrder());
+		}
+		nameFirst.addSelectionListener(new SelectionListener() {
+
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				MenuItem menuItem = (MenuItem) e.getSource();
+				if (viewer instanceof TableViewer) {
+					tableLabelProvider.setFileNameFirst(menuItem.getSelection());
+				} else {
+					((FileInfoCompareCellLabelProvider) viewer.getLabelProvider())
+							.setFileNameFirst(menuItem.getSelection());
+				}
+				viewer.refresh();
+			}
+
+			@Override
+			public void widgetDefaultSelected(SelectionEvent e) {
+			}
+		});
+	}
+
+	/**
+	 * @param menu
+	 * @param viewer
+	 * @param client
+	 */
+	private void removeCheckMarkMenuItem(Menu menu, ColumnViewer viewer, GerritClient client) {
+		final MenuItem removeCheckMark = new MenuItem(menu, SWT.PUSH);
+		removeCheckMark.setText(Messages.UIFilesTable_clearReviewedFlag);
+		removeCheckMark.addSelectionListener(new SelectionListener() {
+
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				List<FileInfo> listFiles = new ArrayList<>();
+				if (viewer instanceof TableViewer) {
+					TableItem[] tableItems = ((TableViewer) viewer).getTable().getItems();
+					for (TableItem tableItem : tableItems) {
+						listFiles.add(((StringToFileInfoImpl) tableItem.getData()).getValue());
+					}
+				} else {
+					//Looking at the tree table in the upper section of the compare editor
+					Object obj = viewer.getInput();
+					if (obj instanceof GerritDiffNode) {
+						GerritDiffNode diffNode = (GerritDiffNode) obj;
+						IDiffElement[] children = diffNode.getChildren();
+						for (IDiffElement element : children) {
+							listFiles.add(((GerritDiffNode) element).getFileInfo());
+						}
+					}
+				}
+				ClearReviewedFlag reviewCheck = new ClearReviewedFlag(client, listFiles);
+				reviewCheck.removeCheckMark();
+			}
+
+			@Override
+			public void widgetDefaultSelected(SelectionEvent e) {
+			}
+		});
+	}
+
+	/**
+	 * @param menu
+	 * @param viewer
+	 * @param client
+	 */
+	private void openFileMenuItem(Menu menu, ColumnViewer viewer, GerritClient client) {
+		final MenuItem openFile = new MenuItem(menu, SWT.PUSH);
+		openFile.setText(Messages.UIFilesTable_0);
+		if (viewer instanceof TableViewer) {
+			tableLabelProvider = (FileTableLabelProvider) viewer.getLabelProvider();
+			openFile.setSelection(tableLabelProvider.getFileOrder());
+		}
+
+		openFile.addSelectionListener(new SelectionListener() {
+
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				HandleFileSelection handleSelection = new HandleFileSelection(client, viewer);
+				handleSelection.showFileSelection();
+			}
+
+			@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/table/provider/FileInfoCompareCellLabelProvider.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/FileInfoCompareCellLabelProvider.java
index 22a6b41..bea910e 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/FileInfoCompareCellLabelProvider.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/FileInfoCompareCellLabelProvider.java
@@ -29,14 +29,10 @@
 
 public class FileInfoCompareCellLabelProvider extends CellLabelProvider {
 
-	final String EMPTY_STRING = ""; //$NON-NLS-1$
-
 	private static final String COMMENTS = Messages.FileInfoCompareCellLabelProvider_1;
 
 	private static final String DRAFTS = Messages.FileInfoCompareCellLabelProvider_2;
 
-	public static final String CHECKED_IMAGE = "greenCheck.png"; //$NON-NLS-1$
-
 	//Layout selection for the file path. Also as a default value
 	private boolean nameFirst = true;
 
@@ -70,12 +66,11 @@
 				return "A"; //$NON-NLS-1$
 			case GerritDifferences.DELETION:
 				return "D"; //$NON-NLS-1$
-			case GerritDifferences.CHANGE:
-				return "M"; //$NON-NLS-1$
 			case GerritDifferences.RENAMED:
 				return "R"; //$NON-NLS-1$
 			case GerritDifferences.COPIED:
 				return "C"; //$NON-NLS-1$
+			case GerritDifferences.CHANGE:
 			default:
 				return "M"; //$NON-NLS-1$
 			}
@@ -86,12 +81,12 @@
 			if (gerrritNode.getLeft() == null || !(gerrritNode.getLeft() instanceof CommentableCompareItem)) {
 				return ""; //$NON-NLS-1$
 			}
-			return prettyPrintComments(((CommentableCompareItem) gerrritNode.getLeft()));
+			return prettyPrintComments((CommentableCompareItem) gerrritNode.getLeft());
 		case 4:
 			if (gerrritNode.getRight() == null || !(gerrritNode.getRight() instanceof CommentableCompareItem)) {
 				return ""; //$NON-NLS-1$
 			}
-			return prettyPrintComments(((CommentableCompareItem) gerrritNode.getRight()));
+			return prettyPrintComments((CommentableCompareItem) gerrritNode.getRight());
 		case 5:
 			StringBuilder modifySize = new StringBuilder();
 			FileInfo file = gerrritNode.getDiffFileInfo() != null
@@ -152,7 +147,7 @@
 	 * @return Image
 	 */
 	private Image getReviewedStateImage(boolean aState) {
-		if (aState == true) {
+		if (aState) {
 			return EGerritImages.get(EGerritImages.CHECKED_IMAGE);
 		} else {
 			return null;
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/FileTableLabelProvider.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/FileTableLabelProvider.java
index cb63f5e..e910615 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/FileTableLabelProvider.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/FileTableLabelProvider.java
@@ -21,7 +21,6 @@
 import org.eclipse.egerrit.internal.model.impl.StringToFileInfoImpl;
 import org.eclipse.egerrit.internal.ui.EGerritImages;
 import org.eclipse.egerrit.internal.ui.utils.Messages;
-import org.eclipse.jface.resource.ImageRegistry;
 import org.eclipse.swt.graphics.Image;
 
 /**
@@ -42,9 +41,6 @@
 
 	private static final String DRAFTS = Messages.FileTableLabelProvider_2;
 
-	// For the images
-	private static ImageRegistry fImageRegistry = new ImageRegistry();
-
 	//Layout selection for the file path. Also as a default value
 	private boolean nameFirst = true;
 
@@ -82,7 +78,7 @@
 				String path = null;
 				if (nameFirst) {
 					path = fileInfo.getPath();
-					int index = path.lastIndexOf("/"); //$NON-NLS-1$
+					int index = path.lastIndexOf('/');
 					if (index != -1) {
 						String fileName = path.substring(index + 1);
 						String firstName = fileName + " - " + path.substring(0, index); //$NON-NLS-1$
@@ -125,7 +121,7 @@
 						Iterator<CommentInfo> iterator2 = fileInfo.getComments().iterator();
 						while (iterator2.hasNext()) {
 							CommentInfo aComment2 = iterator2.next();
-							if ((Timestamp.valueOf(aComment2.getUpdated()).after(Timestamp.valueOf(currentUpdate)))) {
+							if (Timestamp.valueOf(aComment2.getUpdated()).after(Timestamp.valueOf(currentUpdate))) {
 								newCommentCount++;
 							}
 						}
@@ -166,7 +162,7 @@
 	 * @return Image
 	 */
 	private Image getReviewedStateImage(boolean aState) {
-		if (aState == true) {
+		if (aState) {
 			return EGerritImages.get(EGerritImages.CHECKED_IMAGE);
 		} else {
 			return null;
@@ -196,14 +192,9 @@
 				}
 				break;
 			case 1:
-				return image;
 			case 2:
-				return image;
 			case 3:
-				return image;
 			case 4:
-				return image;
-
 			default:
 				return image;
 			}
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/HandleFileSelection.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/HandleFileSelection.java
index 22887b5..d3ecddc 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/HandleFileSelection.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/HandleFileSelection.java
@@ -52,23 +52,7 @@
 			Iterator<?> itr = structuredSelection.iterator();
 			String failedFiles = ""; //$NON-NLS-1$
 			while (itr.hasNext()) {
-				Object element = itr.next();
-				if (element == null) {
-					return;
-				}
-				FileInfo fileInfo;
-				if (fViewer instanceof TableViewer) {
-					fileInfo = ((StringToFileInfoImpl) element).getValue();
-				} else {
-					fileInfo = ((GerritDiffNode) element).getFileInfo();
-				}
-				String status = fileInfo.getStatus();
-				if (status.compareTo("D") != 0) { //$NON-NLS-1$
-					if (UIUtils.openSingleFile(fileInfo, fGerritClient, fileInfo.getRevision(), 0) == false) {
-						failedFiles += fileInfo.getPath() + '\n';
-					}
-				}
-				QueryHelpers.markAsReviewed(fGerritClient, fileInfo);
+				failedFiles = findFailedFiles(itr);
 			}
 			if (!failedFiles.isEmpty()) {
 				UIUtils.displayInformation(Messages.UIFilesTable_3, Messages.UIFilesTable_2 + '\n' + failedFiles);
@@ -76,4 +60,30 @@
 		}
 
 	}
+
+	/**
+	 * @param itr
+	 * @param failedFiles
+	 * @return
+	 */
+	private String findFailedFiles(Iterator<?> itr) {
+		String failedFiles = ""; //$NON-NLS-1$
+		Object element = itr.next();
+		if (element == null) {
+			return ""; //$NON-NLS-1$
+		}
+		FileInfo fileInfo;
+		if (fViewer instanceof TableViewer) {
+			fileInfo = ((StringToFileInfoImpl) element).getValue();
+		} else {
+			fileInfo = ((GerritDiffNode) element).getFileInfo();
+		}
+		String status = fileInfo.getStatus();
+		if ((status.compareTo("D") != 0) //$NON-NLS-1$
+				&& (!UIUtils.openSingleFile(fileInfo, fGerritClient, fileInfo.getRevision(), 0))) {
+			failedFiles += fileInfo.getPath() + '\n';
+		}
+		QueryHelpers.markAsReviewed(fGerritClient, fileInfo);
+		return failedFiles;
+	}
 }
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/HistoryTableLabelProvider.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/HistoryTableLabelProvider.java
index 4204bfd..7a3f86e 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/HistoryTableLabelProvider.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/HistoryTableLabelProvider.java
@@ -28,7 +28,7 @@
  * @since 1.0
  */
 public class HistoryTableLabelProvider extends ObservableMapLabelProvider implements ITableLabelProvider {
-	private final String EMPTY_STRING = ""; //$NON-NLS-1$
+	private static final String EMPTY_STRING = ""; //$NON-NLS-1$
 
 	private GerritClient gerritClient;
 
@@ -104,14 +104,9 @@
 				}
 				break;
 			case 1:
-				return image;
 			case 2:
-				return image;
 			case 3:
-				return image;
 			case 4:
-				return image;
-
 			default:
 				return image;
 			}
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/HistoryTableMenuBuilder.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/HistoryTableMenuBuilder.java
index 8d62cb7..9e02281 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/HistoryTableMenuBuilder.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/HistoryTableMenuBuilder.java
@@ -20,8 +20,6 @@
 import org.eclipse.egerrit.internal.ui.table.filter.AuthorKindFilter;
 import org.eclipse.egerrit.internal.ui.utils.Messages;
 import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IMenuListener;
-import org.eclipse.jface.action.IMenuManager;
 import org.eclipse.jface.action.MenuManager;
 import org.eclipse.jface.action.Separator;
 import org.eclipse.jface.viewers.ColumnViewer;
@@ -53,12 +51,7 @@
 					new AuthorKindFilter(true));
 			replyMessages = new ReplyMessageAction(ActionConstants.REPLY.getLiteral(), viewer, client);
 		}
-		menuManager.addMenuListener(new IMenuListener() {
-			@Override
-			public void menuAboutToShow(IMenuManager manager) {
-				addMenuItem(commonMenu, viewer, client);
-			}
-		});
+		menuManager.addMenuListener(manager -> addMenuItem(commonMenu, viewer));
 		menuManager.update(true);
 	}
 
@@ -83,26 +76,24 @@
 		}
 	}
 
-	private void addMenuItem(Menu menu, ColumnViewer viewer, GerritClient client) {
-		if (menu.getItemCount() == 0) {
-			if (viewer instanceof TableViewer) {
-				MenuManager menuMgr = new MenuManager();
-				menuMgr.add(replyMessages);
-				menuMgr.add(new Separator());
-				menuMgr.add(humanOnlyfilter);
-				menuMgr.add(machineOnlyfilter);
-				menuMgr.createContextMenu(menu.getShell()).setVisible(true);
-				menuMgr.add(new Separator());
-				menuMgr.add(new Action(Messages.UIHistoryTable_reset) {
-					@Override
-					public void run() {
-						humanOnlyfilter.setChecked(false);
-						humanOnlyfilter.run();
-						machineOnlyfilter.setChecked(false);
-						machineOnlyfilter.run();
-					}
-				});
-			}
+	private void addMenuItem(Menu menu, ColumnViewer viewer) {
+		if ((menu.getItemCount() == 0) && (viewer instanceof TableViewer)) {
+			MenuManager menuMgr = new MenuManager();
+			menuMgr.add(replyMessages);
+			menuMgr.add(new Separator());
+			menuMgr.add(humanOnlyfilter);
+			menuMgr.add(machineOnlyfilter);
+			menuMgr.createContextMenu(menu.getShell()).setVisible(true);
+			menuMgr.add(new Separator());
+			menuMgr.add(new Action(Messages.UIHistoryTable_reset) {
+				@Override
+				public void run() {
+					humanOnlyfilter.setChecked(false);
+					humanOnlyfilter.run();
+					machineOnlyfilter.setChecked(false);
+					machineOnlyfilter.run();
+				}
+			});
 		}
 	}
 
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/PatchSetHandlerProvider.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/PatchSetHandlerProvider.java
index 1b2d017..6996e80 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/PatchSetHandlerProvider.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/PatchSetHandlerProvider.java
@@ -41,8 +41,6 @@
 
 	private ChangeInfo fChangeInfo;
 
-	private Button fButtonPatchSet;
-
 	private Label patchsetlabel;
 
 	private DataBindingContext bindingContext = new DataBindingContext();
@@ -59,13 +57,14 @@
 	public Button create(Composite parent, ChangeInfo changeInfo) {
 		this.fChangeInfo = changeInfo;
 		patchsetlabel = new Label(parent, SWT.NONE);
-		fButtonPatchSet = new Button(parent, SWT.DROP_DOWN | SWT.ARROW | SWT.DOWN);
+
+		Button fButtonPatchSet = new Button(parent, SWT.DROP_DOWN | SWT.ARROW | SWT.DOWN);
 		fButtonPatchSet.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1));
 		fButtonPatchSet.addSelectionListener(new SelectionAdapter() {
 			@Override
 			public void widgetSelected(SelectionEvent e) {
 				MenuManager mgr = new MenuManager();
-				fillMenuItemForChangeInfo(mgr, patchsetlabel);
+				fillMenuItemForChangeInfo(mgr);
 				mgr.createContextMenu(parent).setVisible(true);
 			}
 		});
@@ -73,8 +72,8 @@
 		return fButtonPatchSet;
 	}
 
-	private void fillMenuItemForChangeInfo(MenuManager menu, Label labelToUpdate) {
-		ArrayList<RevisionInfo> revisions = new ArrayList<RevisionInfo>(fChangeInfo.getRevisions().values());
+	private void fillMenuItemForChangeInfo(MenuManager menu) {
+		ArrayList<RevisionInfo> revisions = new ArrayList<>(fChangeInfo.getRevisions().values());
 		revisions.sort((o1, o2) -> o2.get_number() - o1.get_number());
 		revisions.stream().forEach(rev -> menu.add(new SwitchCurrentPathsetAction(fChangeInfo, rev)));
 	}
@@ -92,8 +91,7 @@
 
 		//See when a REBASE occurs, the current revision is updated
 		IObservableValue observerRevisionsValue = EMFProperties
-				.value(ModelPackage.Literals.CHANGE_INFO__CURRENT_REVISION)
-				.observe(fChangeInfo);
+				.value(ModelPackage.Literals.CHANGE_INFO__CURRENT_REVISION).observe(fChangeInfo);
 
 		bindingContext.bindValue(WidgetProperties.text().observe(patchsetlabel), observerRevisionsValue, null,
 				new UpdateValueStrategy().setConverter(DataConverter.patchSetSelected(fChangeInfo)));
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/ReviewersTableLabelProvider.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/ReviewersTableLabelProvider.java
index 1ac733f..342e032 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/ReviewersTableLabelProvider.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/ReviewersTableLabelProvider.java
@@ -31,9 +31,9 @@
 	private static Display fDisplay = Display.getCurrent();
 
 	//Color used depending on the review state
-	private static Color RED_COLOR = fDisplay.getSystemColor(SWT.COLOR_RED);
+	private static final Color RED_COLOR = fDisplay.getSystemColor(SWT.COLOR_RED);
 
-	private static Color GREEN_COLOR = fDisplay.getSystemColor(SWT.COLOR_DARK_GREEN);
+	private static final Color GREEN_COLOR = fDisplay.getSystemColor(SWT.COLOR_DARK_GREEN);
 
 	private String[] dynamicName;
 
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/SwitchCurrentPathsetAction.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/SwitchCurrentPathsetAction.java
index 568eb0f..786b80a 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/SwitchCurrentPathsetAction.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/SwitchCurrentPathsetAction.java
@@ -17,12 +17,12 @@
 import org.eclipse.egerrit.internal.ui.utils.UIUtils;
 import org.eclipse.jface.action.Action;
 
-public class SwitchCurrentPathsetAction extends Action {
+class SwitchCurrentPathsetAction extends Action {
 	private ChangeInfo changeInfo;
 
 	private String revisionIdToSwitchTo;
 
-	public SwitchCurrentPathsetAction(ChangeInfo changeInfo, RevisionInfo revision) {
+	SwitchCurrentPathsetAction(ChangeInfo changeInfo, RevisionInfo revision) {
 		super();
 		this.changeInfo = changeInfo;
 		this.revisionIdToSwitchTo = revision.getId();
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/tabs/DetailsTabView.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/tabs/DetailsTabView.java
index 1e2d3f1..2b6d355 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/tabs/DetailsTabView.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/tabs/DetailsTabView.java
@@ -133,7 +133,7 @@
  */
 public class DetailsTabView {
 
-	private final String TITLE = Messages.SummaryTabView_0;
+	private static final String TITLE = Messages.SummaryTabView_0;
 
 	private static Color RED;
 
@@ -938,7 +938,7 @@
 				.value(ModelPackage.Literals.CHANGE_INFO__MERGEABLE_INFO).observe(fChangeInfo);
 
 		bindingContext.bindValue(WidgetProperties.text().observe(genStrategyData), mergeSubmitValue, null,
-				new UpdateValueStrategy().setConverter(DataConverter.submitTypeConverter(fChangeInfo)));
+				new UpdateValueStrategy().setConverter(DataConverter.submitTypeConverter()));
 
 		//Show mergeable status
 		IObservableValue<String> mergeableMergeableInfoObserveValue = EMFProperties
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 ec2221b..a61bccc 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
@@ -56,7 +56,9 @@
 
 	private TextViewerWithLinks msgTextData;
 
-	private GerritClient gerritClient;
+	private GerritClient fGerritClient;
+
+	private ChangeInfo fChangeInfo;
 
 	private UIFilesTable tableUIFiles;
 
@@ -66,29 +68,32 @@
 
 	/**
 	 * The constructor.
+	 *
+	 * @param fChangeInfo
+	 * @param fGerritClient
 	 */
-	public HistoryTabView() {
+	public HistoryTabView(GerritClient gerritClient, ChangeInfo changeInfo) {
+		this.fGerritClient = gerritClient;
+		this.fChangeInfo = changeInfo;
 	}
 
 	/**
-	 * @param fGerritClient
 	 * @param tabFolder
-	 * @param listMessages
 	 *            List<ChangeMessageInfo>
 	 */
-	public void create(GerritClient gerritClient, TabFolder tabFolder, ChangeInfo changeInfo) {
-		this.gerritClient = gerritClient;
-		createControls(tabFolder, changeInfo);
+	public void create(TabFolder tabFolder) {
+
+		createControls(tabFolder);
 	}
 
-	private void createControls(TabFolder tabFolder, ChangeInfo changeInfo) {
+	private void createControls(TabFolder tabFolder) {
 		TabItem tbtmHistory = new TabItem(tabFolder, SWT.NONE);
 		tbtmHistory.setText(Messages.HistoryTabView_0);
 
 		SashForm sashForm = new SashForm(tabFolder, SWT.VERTICAL);
 		tbtmHistory.setControl(sashForm);
 
-		UIHistoryTable tableUIHistory = new UIHistoryTable(gerritClient);
+		UIHistoryTable tableUIHistory = new UIHistoryTable(fGerritClient);
 		tableUIHistory.createTableViewerSection(sashForm);
 
 		tableHistoryViewer = tableUIHistory.getViewer();
@@ -96,7 +101,7 @@
 
 		msgTextData = new TextViewerWithLinks(sashFormHorizon, SWT.BORDER | SWT.WRAP | SWT.MULTI | SWT.V_SCROLL);
 		msgTextData.setEditable(false);
-		tableUIFiles = new UIFilesTable(gerritClient, changeInfo, HISTORY_FILES);
+		tableUIFiles = new UIFilesTable(fGerritClient, fChangeInfo, HISTORY_FILES);
 		tableUIFiles.createTableViewerSection(sashFormHorizon);
 
 		//Set the % of display data.40% table and 60% for the comment message
@@ -110,21 +115,18 @@
 
 			@Override
 			public IHyperlinkDetector[] getHyperlinkDetectors(ISourceViewer sourceViewer) {
-				return new IHyperlinkDetector[] { new HyperLinkDetector(gerritClient, changeInfo) };
+				return new IHyperlinkDetector[] { new HyperLinkDetector(fGerritClient, fChangeInfo) };
 			}
 
 			@Override
 			public IHyperlinkPresenter getHyperlinkPresenter(final ISourceViewer sourceViewer) {
-				HyperLinkPresenter presenter = new HyperLinkPresenter(new RGB(0, 0, 255), sourceViewer, gerritClient,
-						changeInfo);
-
-				return presenter;
-			};
+				return new HyperLinkPresenter(new RGB(0, 0, 255), sourceViewer, fGerritClient, fChangeInfo);
+			}
 		});
 
 		//Set the % of display data.40% table and 60% for the comment message
 		sashForm.setWeights(new int[] { 40, 60 });
-		bind(changeInfo);
+		bind(fChangeInfo);
 	}
 
 	private void bind(ChangeInfo changeInfo) {
@@ -137,7 +139,7 @@
 				new IValueProperty[] { EMFProperties.value(ModelPackage.Literals.CHANGE_MESSAGE_INFO__DATE),
 						EMFProperties.value(authorName),
 						EMFProperties.value(ModelPackage.Literals.CHANGE_MESSAGE_INFO__MESSAGE) });
-		tableHistoryViewer.setLabelProvider(new HistoryTableLabelProvider(watchedProperties, gerritClient));
+		tableHistoryViewer.setLabelProvider(new HistoryTableLabelProvider(watchedProperties, fGerritClient));
 		tableHistoryViewer
 				.setInput(EMFProperties.list(ModelPackage.Literals.CHANGE_INFO__MESSAGES).observe(changeInfo));
 
@@ -146,13 +148,12 @@
 		IObservableValue textViewerDocument = BeanProperties.value(msgTextData.getClass(), "document") //$NON-NLS-1$
 				.observe(Realm.getDefault(), msgTextData);
 		UpdateValueStrategy textToDocumentStrategy = new UpdateValueStrategy();
-		textToDocumentStrategy.setConverter(DataConverter.fromStringToDocument(gerritClient));
+		textToDocumentStrategy.setConverter(DataConverter.fromStringToDocument(fGerritClient));
 		dataBindingContext.bindValue(textViewerDocument, selection, null, textToDocumentStrategy);
 
 		//Automatically update the user selected revision as the user changes the selection
 		IObservableValue settableUserRevision = EMFProperties
-				.value(ModelPackage.Literals.CHANGE_INFO__USER_SELECTED_REVISION)
-				.observe(changeInfo);
+				.value(ModelPackage.Literals.CHANGE_INFO__USER_SELECTED_REVISION).observe(changeInfo);
 		dataBindingContext.bindValue(settableUserRevision, selection, null, new UpdateValueStrategy() {
 			@Override
 			public Object convert(Object value) {
@@ -160,7 +161,7 @@
 					return null;
 				}
 				//-> from the message info to the revision
-				ChangeMessageInfo message = ((ChangeMessageInfo) value);
+				ChangeMessageInfo message = (ChangeMessageInfo) value;
 				ChangeInfo containingChange = (ChangeInfo) message.eContainer();
 				return containingChange.getRevisionByNumber(message.get_revision_number());
 			}
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/tabs/HyperLinkPresenter.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/tabs/HyperLinkPresenter.java
index 4cabfa0..ada41d4 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/tabs/HyperLinkPresenter.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/tabs/HyperLinkPresenter.java
@@ -54,8 +54,8 @@
 
 /* Change the IHyperlinkPresenterExtension by IHyperlinkPresenterExtension2 for multi hyperlink */
 
-public class HyperLinkPresenter implements IHyperlinkPresenter, IHyperlinkPresenterExtension2,
-		ITextPresentationListener, ITextInputListener, IDocumentListener, IPropertyChangeListener {
+class HyperLinkPresenter implements IHyperlinkPresenter, IHyperlinkPresenterExtension2, ITextPresentationListener,
+		ITextInputListener, IDocumentListener, IPropertyChangeListener {
 
 	private ISourceViewer fSourceViewer;
 
@@ -73,7 +73,7 @@
 	 * @see org.eclipse.jface.resource.StringConverter
 	 * @see org.eclipse.jface.preference.PreferenceConverter
 	 */
-	public final static String HYPERLINK_COLOR = "hyperlinkColor"; //$NON-NLS-1$
+	private static final String HYPERLINK_COLOR = "hyperlinkColor"; //$NON-NLS-1$
 
 	/**
 	 * A named preference that holds the preference whether to use the native link color.
@@ -83,7 +83,7 @@
 	 *
 	 * @since 3.5
 	 */
-	public final static String HYPERLINK_COLOR_SYSTEM_DEFAULT = "hyperlinkColor.SystemDefault"; //$NON-NLS-1$
+	private static final String HYPERLINK_COLOR_SYSTEM_DEFAULT = "hyperlinkColor.SystemDefault"; //$NON-NLS-1$
 
 	/** The text viewer. */
 	private ITextViewer fTextViewer;
@@ -147,7 +147,7 @@
 	 * @param gerritClient
 	 * @param changeInfo
 	 */
-	public HyperLinkPresenter(RGB rgb, ISourceViewer sourceViewer, GerritClient gerritClient, ChangeInfo changeInfo) {
+	HyperLinkPresenter(RGB rgb, ISourceViewer sourceViewer, GerritClient gerritClient, ChangeInfo changeInfo) {
 		fRGB = rgb;
 		fDisposeColor = true;
 		fSourceViewer = sourceViewer;
@@ -171,9 +171,9 @@
 		for (IHyperlink hyperlink : hyperlinks) {
 			highlightRegion(hyperlink.getHyperlinkRegion());
 		}
-		if (hyperlinks.length > 1) {
+		if (hyperlinks != null && hyperlinks.length > 1) {
 			for (IHyperlink hyperlink : hyperlinks) {
-				if (isWithinRegion(hyperlink.getHyperlinkRegion()) == true && fClickedOffset != -1) {
+				if (isWithinRegion(hyperlink.getHyperlinkRegion()) && fClickedOffset != -1) {
 					hyperlink.open();
 				}
 			}
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/tabs/MessageTabView.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/tabs/MessageTabView.java
index 6767792..8ce053f 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/tabs/MessageTabView.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/tabs/MessageTabView.java
@@ -42,7 +42,6 @@
 import org.eclipse.swt.custom.ScrolledComposite;
 import org.eclipse.swt.events.ControlAdapter;
 import org.eclipse.swt.events.ControlEvent;
-import org.eclipse.swt.events.ModifyEvent;
 import org.eclipse.swt.events.ModifyListener;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
@@ -84,6 +83,8 @@
 
 	private GerritClient fGerritClient;
 
+	private ChangeInfo fChangeInfo;
+
 	private Boolean fShowExtraInfo = true;
 
 	private DataBindingContext bindingContext = new DataBindingContext();
@@ -96,8 +97,13 @@
 
 	/**
 	 * The constructor.
+	 *
+	 * @param changeInfo
+	 * @param gerritClient
 	 */
-	public MessageTabView() {
+	public MessageTabView(GerritClient gerritClient, ChangeInfo changeInfo) {
+		fGerritClient = gerritClient;
+		fChangeInfo = changeInfo;
 	}
 
 	/**
@@ -105,9 +111,9 @@
 	 * @param Composite
 	 * @param ChangeInfo
 	 */
-	public void create(GerritClient gerritClient, Composite tabFolder, ChangeInfo changeInfo) {
-		fGerritClient = gerritClient;
-		createControls(tabFolder, changeInfo);
+	public void create(Composite tabFolder) {
+
+		createControls(tabFolder);
 	}
 
 	private boolean isEditingAllowed() {
@@ -149,8 +155,6 @@
 		scrollComposite.addControlListener(new ControlAdapter() {
 			@Override
 			public void controlResized(ControlEvent e) {
-//				Rectangle r = scrollComposite.getClientArea();
-//				scrollComposite.setMinSize(messagesComposite.computeSize(r.width, SWT.DEFAULT));
 				scrollComposite.setMinSize(messagesComposite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
 			}
 		});
@@ -160,7 +164,7 @@
 		return messagesComposite;
 	}
 
-	private void createControls(Composite composite, final ChangeInfo changeInfo) {
+	private void createControls(Composite composite) {
 		final Composite messagesComposite;
 
 		//Define the proper instance of the composite, i.e. Tabfolder or anything else
@@ -178,14 +182,14 @@
 		msgTextData.setEditable(isEditingAllowed());
 
 		final Button btnCancel = new Button(messagesComposite, SWT.NONE);
-		GridData gd_btnCancel = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
-		btnCancel.setLayoutData(gd_btnCancel);
+		GridData gdBtnCancel = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
+		btnCancel.setLayoutData(gdBtnCancel);
 		btnCancel.setText(Messages.MessageTabView_2);
 		btnCancel.setEnabled(false);
 
 		final Button fBtnSave = new Button(messagesComposite, SWT.NONE);
-		GridData gd_btnSave_1 = new GridData(SWT.LEFT, SWT.TOP, false, false, 3, 1);
-		fBtnSave.setLayoutData(gd_btnSave_1);
+		GridData gdBtnSave = new GridData(SWT.LEFT, SWT.TOP, false, false, 3, 1);
+		fBtnSave.setLayoutData(gdBtnSave);
 		fBtnSave.setText(Messages.MessageTabView_3);
 		fBtnSave.setEnabled(false);
 
@@ -193,7 +197,7 @@
 			btnCancel.addSelectionListener(new SelectionAdapter() {
 				@Override
 				public void widgetSelected(SelectionEvent e) {
-					msgTextData.setText(changeInfo.getUserSelectedRevision().getCommit().getMessage());
+					msgTextData.setText(fChangeInfo.getUserSelectedRevision().getCommit().getMessage());
 					fBtnSave.setEnabled(false);
 					btnCancel.setEnabled(false);
 				}
@@ -201,17 +205,16 @@
 		}
 
 		if (isEditingAllowed()) {
-			ModifyListener textModifiedListener = new ModifyListener() {
-				public void modifyText(ModifyEvent event) {
-					if (changeInfo.getUserSelectedRevision() != null
-							&& changeInfo.getUserSelectedRevision().getCommit().getMessage().compareTo(
-									msgTextData.getText()) != 0) {
-						fBtnSave.setEnabled(true);
-						btnCancel.setEnabled(true);
-					} else {
-						fBtnSave.setEnabled(false);
-						btnCancel.setEnabled(false);
-					}
+			ModifyListener textModifiedListener = event -> {
+				if (fChangeInfo.getUserSelectedRevision() != null && fChangeInfo.getUserSelectedRevision()
+						.getCommit()
+						.getMessage()
+						.compareTo(msgTextData.getText()) != 0) {
+					fBtnSave.setEnabled(true);
+					btnCancel.setEnabled(true);
+				} else {
+					fBtnSave.setEnabled(false);
+					btnCancel.setEnabled(false);
 				}
 			};
 			msgTextData.addModifyListener(textModifiedListener);
@@ -258,8 +261,8 @@
 			});
 
 			msgDatecommitterData = new Label(messagesComposite, SWT.NONE);
-			GridData gd_DateCommitter = new GridData(SWT.RIGHT, SWT.CENTER, false, false, 2, 1);
-			msgDatecommitterData.setLayoutData(gd_DateCommitter);
+			GridData gdDateCommitter = new GridData(SWT.RIGHT, SWT.CENTER, false, false, 2, 1);
+			msgDatecommitterData.setLayoutData(gdDateCommitter);
 
 			//LINE 3 - Commit: <commitId>
 			Label lblCommit = new Label(messagesComposite, SWT.NONE);
@@ -311,11 +314,12 @@
 				@Override
 				public void widgetSelected(SelectionEvent e) {
 					super.widgetSelected(e);
-					ChangeCommitMsgCommand editMessageCmd = fGerritClient.editMessage(changeInfo.getId());
+					ChangeCommitMsgCommand editMessageCmd = fGerritClient.editMessage(fChangeInfo.getId());
 					ChangeEditMessageInput changeEditMessageInput = new ChangeEditMessageInput();
 					changeEditMessageInput.setMessage(msgTextData.getText());
 					editMessageCmd.setCommandInput(changeEditMessageInput);
-					PublishChangeEditCommand publishChangeEditCmd = fGerritClient.publishChangeEdit(changeInfo.getId());
+					PublishChangeEditCommand publishChangeEditCmd = fGerritClient
+							.publishChangeEdit(fChangeInfo.getId());
 
 					try {
 						editMessageCmd.call();
@@ -326,7 +330,7 @@
 					}
 					fBtnSave.setEnabled(false);
 					btnCancel.setEnabled(false);
-					ModelLoader loader = ModelLoader.initialize(fGerritClient, changeInfo);
+					ModelLoader loader = ModelLoader.initialize(fGerritClient, fChangeInfo);
 					loader.loadBasicInformation(false);
 					loader.dispose();
 				}
@@ -338,93 +342,133 @@
 		}
 
 		//Set the binding for this section
-		msgTabDataBindings(changeInfo);
+		msgTabDataBindings();
 	}
 
-	protected void msgTabDataBindings(ChangeInfo changeInfo) {
-		{
-			//the commit message
-			final FeaturePath commitMessage = FeaturePath.fromList(ModelPackage.Literals.CHANGE_INFO__REVISION,
-					ModelPackage.Literals.REVISION_INFO__COMMIT, ModelPackage.Literals.COMMIT_INFO__MESSAGE);
-			IObservableValue msgTextDataValue = EMFProperties.value(commitMessage).observe(changeInfo);
-			bindingContext.bindValue(WidgetProperties.text().observe(msgTextData), msgTextDataValue, null, null);
-		}
+	private void msgTabDataBindings() {
+		bindCommitMessage();
 		if (!fShowExtraInfo) {
 			observableCollector = new ObservableCollector(bindingContext);
 			return;// Do not bind any other functionality when not shown
 		}
 
-		{
-			//show commit author
-			final FeaturePath authorName = FeaturePath.fromList(ModelPackage.Literals.CHANGE_INFO__REVISION,
-					ModelPackage.Literals.REVISION_INFO__COMMIT, ModelPackage.Literals.COMMIT_INFO__AUTHOR);
-			IObservableValue msgAuthorDataValue = EMFProperties.value(authorName).observe(changeInfo);
-			bindingContext.bindValue(WidgetProperties.text().observe(msgAuthorData), msgAuthorDataValue, null,
-					new UpdateValueStrategy().setConverter(DataConverter.gitPersonConverter()));
-		}
-		{
-			final FeaturePath commitDate = FeaturePath.fromList(ModelPackage.Literals.CHANGE_INFO__REVISION,
-					ModelPackage.Literals.REVISION_INFO__COMMIT, ModelPackage.Literals.COMMIT_INFO__AUTHOR,
-					ModelPackage.Literals.GIT_PERSON_INFO__DATE);
-			IObservableValue msgAuthorDateDataValue = EMFProperties.value(commitDate).observe(changeInfo);
-			bindingContext.bindValue(WidgetProperties.text().observe(msgDatePushData), msgAuthorDateDataValue, null,
-					new UpdateValueStrategy().setConverter(DataConverter.gerritTimeConverter(formatTimeOut)));
-		}
-		{
-			//Show committer name
-			final FeaturePath committerName = FeaturePath.fromList(ModelPackage.Literals.CHANGE_INFO__REVISION,
-					ModelPackage.Literals.REVISION_INFO__COMMIT, ModelPackage.Literals.COMMIT_INFO__COMMITTER);
-			IObservableValue msgCommitterDataValue = EMFProperties.value(committerName).observe(changeInfo);
-			bindingContext.bindValue(WidgetProperties.text().observe(msgCommitterData), msgCommitterDataValue, null,
-					new UpdateValueStrategy().setConverter(DataConverter.gitPersonConverter()));
-		}
-		{
-			//Show committer date
-			final FeaturePath commiterDate = FeaturePath.fromList(ModelPackage.Literals.CHANGE_INFO__REVISION,
-					ModelPackage.Literals.REVISION_INFO__COMMIT, ModelPackage.Literals.COMMIT_INFO__COMMITTER,
-					ModelPackage.Literals.GIT_PERSON_INFO__DATE);
-			IObservableValue msgCommitterDateDataValue = EMFProperties.value(commiterDate).observe(changeInfo);
-			bindingContext.bindValue(WidgetProperties.text().observe(msgDatecommitterData), msgCommitterDateDataValue,
-					null, new UpdateValueStrategy().setConverter(DataConverter.gerritTimeConverter(formatTimeOut)));
-		}
-		{
-			//show commit id
-			final FeaturePath commitId = FeaturePath.fromList(ModelPackage.Literals.CHANGE_INFO__REVISION,
-					ModelPackage.Literals.REVISION_INFO__COMMIT, ModelPackage.Literals.COMMIT_INFO__COMMIT);
-			IObservableValue msgCommitidDataValue = EMFProperties.value(commitId).observe(changeInfo);
-			bindingContext.bindValue(WidgetProperties.text().observe(msgCommitidData), msgCommitidDataValue, null,
-					new UpdateValueStrategy().setConverter(DataConverter.linkText()));
-		}
-		{
-			//show commit parents
-			FeaturePath commitParents = FeaturePath.fromList(ModelPackage.Literals.CHANGE_INFO__REVISION,
-					ModelPackage.Literals.REVISION_INFO__COMMIT, ModelPackage.Literals.COMMIT_INFO__PARENTS);
-			final IObservableList parents = EMFProperties.list(commitParents).observe(changeInfo);
-			ComputedValue parentCommitsAsString = new ComputedValue<String>() {
-				@Override
-				protected String calculate() {
-					Iterator it = parents.iterator();
-					String result = ""; //$NON-NLS-1$
-					while (it.hasNext()) {
-						CommitInfo info = (CommitInfo) it.next();
-						result += info.getCommit() + " "; //$NON-NLS-1$
-					}
-					return result;
-				}
-			};
-			bindingContext.bindValue(WidgetProperties.text().observe(msgParentIdData), parentCommitsAsString, null,
-					null);
-		}
-		{
-			//Show change id
-			IObservableValue msgChangeIdDataValue = EMFObservables.observeValue(changeInfo,
-					ModelPackage.Literals.CHANGE_INFO__CHANGE_ID);
-			bindingContext.bindValue(WidgetProperties.text().observe(msgChangeIdData), msgChangeIdDataValue, null,
-					new UpdateValueStrategy().setConverter(DataConverter.linkText()));
-		}
+		bindComitAuthor();
+		bindCommitDate();
+		bindCommitterName();
+		bindCommitterDate();
+		bindCommitId();
+		bindCommitParents();
+		bindChangeId();
 		observableCollector = new ObservableCollector(bindingContext);
 	}
 
+	/**
+	 *
+	 */
+	private void bindChangeId() {
+		//Show change id
+		IObservableValue<String> msgChangeIdDataValue = EMFObservables.observeValue(fChangeInfo,
+				ModelPackage.Literals.CHANGE_INFO__CHANGE_ID);
+		bindingContext.bindValue(WidgetProperties.text().observe(msgChangeIdData), msgChangeIdDataValue, null,
+				new UpdateValueStrategy().setConverter(DataConverter.linkText()));
+	}
+
+	/**
+	 *
+	 */
+	private void bindCommitParents() {
+		//show commit parents
+		FeaturePath commitParents = FeaturePath.fromList(ModelPackage.Literals.CHANGE_INFO__REVISION,
+				ModelPackage.Literals.REVISION_INFO__COMMIT, ModelPackage.Literals.COMMIT_INFO__PARENTS);
+		final IObservableList parents = EMFProperties.list(commitParents).observe(fChangeInfo);
+		ComputedValue<String> parentCommitsAsString = new ComputedValue<String>() {
+			@Override
+			protected String calculate() {
+				Iterator it = parents.iterator();
+				StringBuilder result = new StringBuilder();
+				while (it.hasNext()) {
+					CommitInfo info = (CommitInfo) it.next();
+					result.append(info.getCommit());
+					result.append(" "); //$NON-NLS-1$
+				}
+				return result.toString().trim();
+			}
+		};
+		bindingContext.bindValue(WidgetProperties.text().observe(msgParentIdData), parentCommitsAsString, null, null);
+	}
+
+	/**
+	 *
+	 */
+	private void bindCommitId() {
+		//show commit id
+		final FeaturePath commitId = FeaturePath.fromList(ModelPackage.Literals.CHANGE_INFO__REVISION,
+				ModelPackage.Literals.REVISION_INFO__COMMIT, ModelPackage.Literals.COMMIT_INFO__COMMIT);
+		IObservableValue<String> msgCommitidDataValue = EMFProperties.value(commitId).observe(fChangeInfo);
+		bindingContext.bindValue(WidgetProperties.text().observe(msgCommitidData), msgCommitidDataValue, null,
+				new UpdateValueStrategy().setConverter(DataConverter.linkText()));
+	}
+
+	/**
+	 *
+	 */
+	private void bindCommitterDate() {
+		//Show committer date
+		final FeaturePath commiterDate = FeaturePath.fromList(ModelPackage.Literals.CHANGE_INFO__REVISION,
+				ModelPackage.Literals.REVISION_INFO__COMMIT, ModelPackage.Literals.COMMIT_INFO__COMMITTER,
+				ModelPackage.Literals.GIT_PERSON_INFO__DATE);
+		IObservableValue<String> msgCommitterDateDataValue = EMFProperties.value(commiterDate).observe(fChangeInfo);
+		bindingContext.bindValue(WidgetProperties.text().observe(msgDatecommitterData), msgCommitterDateDataValue, null,
+				new UpdateValueStrategy().setConverter(DataConverter.gerritTimeConverter(formatTimeOut)));
+	}
+
+	/**
+	 *
+	 */
+	private void bindCommitterName() {
+		//Show committer name
+		final FeaturePath committerName = FeaturePath.fromList(ModelPackage.Literals.CHANGE_INFO__REVISION,
+				ModelPackage.Literals.REVISION_INFO__COMMIT, ModelPackage.Literals.COMMIT_INFO__COMMITTER);
+		IObservableValue<String> msgCommitterDataValue = EMFProperties.value(committerName).observe(fChangeInfo);
+		bindingContext.bindValue(WidgetProperties.text().observe(msgCommitterData), msgCommitterDataValue, null,
+				new UpdateValueStrategy().setConverter(DataConverter.gitPersonConverter()));
+	}
+
+	/**
+	 *
+	 */
+	private void bindCommitDate() {
+		final FeaturePath commitDate = FeaturePath.fromList(ModelPackage.Literals.CHANGE_INFO__REVISION,
+				ModelPackage.Literals.REVISION_INFO__COMMIT, ModelPackage.Literals.COMMIT_INFO__AUTHOR,
+				ModelPackage.Literals.GIT_PERSON_INFO__DATE);
+		IObservableValue<String> msgAuthorDateDataValue = EMFProperties.value(commitDate).observe(fChangeInfo);
+		bindingContext.bindValue(WidgetProperties.text().observe(msgDatePushData), msgAuthorDateDataValue, null,
+				new UpdateValueStrategy().setConverter(DataConverter.gerritTimeConverter(formatTimeOut)));
+	}
+
+	/**
+	 *
+	 */
+	private void bindComitAuthor() {
+		//show commit author
+		final FeaturePath authorName = FeaturePath.fromList(ModelPackage.Literals.CHANGE_INFO__REVISION,
+				ModelPackage.Literals.REVISION_INFO__COMMIT, ModelPackage.Literals.COMMIT_INFO__AUTHOR);
+		IObservableValue<String> msgAuthorDataValue = EMFProperties.value(authorName).observe(fChangeInfo);
+		bindingContext.bindValue(WidgetProperties.text().observe(msgAuthorData), msgAuthorDataValue, null,
+				new UpdateValueStrategy().setConverter(DataConverter.gitPersonConverter()));
+	}
+
+	/**
+	 *
+	 */
+	private void bindCommitMessage() {
+		//the commit message
+		final FeaturePath commitMessage = FeaturePath.fromList(ModelPackage.Literals.CHANGE_INFO__REVISION,
+				ModelPackage.Literals.REVISION_INFO__COMMIT, ModelPackage.Literals.COMMIT_INFO__MESSAGE);
+		IObservableValue<String> msgTextDataValue = EMFProperties.value(commitMessage).observe(fChangeInfo);
+		bindingContext.bindValue(WidgetProperties.text().observe(msgTextData), msgTextDataValue, null, null);
+	}
+
 	public void dispose() {
 		observableCollector.dispose();
 		bindingContext.dispose();
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/tabs/ObservableCollector.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/tabs/ObservableCollector.java
index bc951f6..0ab82b5 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/tabs/ObservableCollector.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/tabs/ObservableCollector.java
@@ -22,7 +22,7 @@
  * A Helper class to automatically dispose the EMF Observable values.

  */

 public class ObservableCollector {

-	HashSet<IObservable> observables = new HashSet<>();

+	private HashSet<IObservable> observables = new HashSet<>();

 

 	public ObservableCollector(DataBindingContext context) {

 		Iterator<Binding> it = context.getBindings().iterator();

diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/tabs/TextViewerWithLinks.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/tabs/TextViewerWithLinks.java
index d4a3ed8..9473f6a 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/tabs/TextViewerWithLinks.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/tabs/TextViewerWithLinks.java
@@ -23,11 +23,11 @@
 /**
  * A text viewer that will always show links
  */
-public class TextViewerWithLinks extends org.eclipse.jface.text.source.SourceViewer {
+class TextViewerWithLinks extends org.eclipse.jface.text.source.SourceViewer {
 	// used to fire events of registered properties
 	private transient PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);
 
-	public TextViewerWithLinks(Composite composite, int styles) {
+	TextViewerWithLinks(Composite composite, int styles) {
 		super(composite, null, styles);
 	}
 
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/utils/ActiveWorkspaceRevision.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/utils/ActiveWorkspaceRevision.java
index 6ee3b25..9370c44 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/utils/ActiveWorkspaceRevision.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/utils/ActiveWorkspaceRevision.java
@@ -69,7 +69,19 @@
  */
 
 public class ActiveWorkspaceRevision {
-	private final String MARKERS_KEY = "markertip"; //$NON-NLS-1$
+	private static final String MARKERS_KEY = "markertip"; //$NON-NLS-1$
+
+	private static final String UI_EDITORS = "org.eclipse.ui.editors"; //$NON-NLS-1$
+
+	private static final String QUICKDIFF_QUICKDIFF = "quickdiff.quickDiff"; //$NON-NLS-1$
+
+	private static final String QUICKDIFF_DEFAULT = "quickdiff.defaultProvider"; //$NON-NLS-1$
+
+	private static final String ADDITION_INDICATION_OVERVIEW_RULE = "additionIndicationInOverviewRule"; //$NON-NLS-1$
+
+	private static final String CHANGE_INDICATION_OVERVIEW_RULE = "changeIndicationInOverviewRuler"; //$NON-NLS-1$
+
+	private static final String DELETION_INDICATION_OVERVIEW_RULE = "deletionIndicationInOverviewRuler"; //$NON-NLS-1$
 
 	private static Logger logger = LoggerFactory.getLogger(ChangeDetailEditor.class);
 
@@ -115,6 +127,17 @@
 				}
 			}
 		}
+
+		private void deleteMarker(CommentInfo commentToDelete) {
+			IMarker marker = markersManaged.remove(commentToDelete.getId());
+			if (marker != null) {
+				try {
+					marker.delete();
+				} catch (CoreException e) {
+					logger.debug("Failed to delete marker", e); //$NON-NLS-1$
+				}
+			}
+		}
 	}
 
 	// Private constructor prevents instantiation from other classes
@@ -196,15 +219,13 @@
 		if (!isProblemViewOpen()) {
 			IWorkbenchWindow[] listWW = PlatformUI.getWorkbench().getWorkbenchWindows();
 			for (IWorkbenchWindow element : listWW) {
-				Display.getDefault().asyncExec(new Runnable() {
-					public void run() {
-						try {
-							element.getActivePage().showView("org.eclipse.ui.views.AllMarkersView", //$NON-NLS-1$
-									null, mode);
-						} catch (PartInitException e) {
-							EGerritCorePlugin
-									.logError(fGerritClient.getRepository().formatGerritVersion() + e.getMessage());
-						}
+				Display.getDefault().asyncExec(() -> {
+					try {
+						element.getActivePage().showView("org.eclipse.ui.views.AllMarkersView", //$NON-NLS-1$
+								null, mode);
+					} catch (PartInitException e) {
+						EGerritCorePlugin
+								.logError(fGerritClient.getRepository().formatGerritVersion() + e.getMessage());
 					}
 				});
 			}
@@ -335,15 +356,13 @@
 
 	private void deactivateQuickDiff() {
 		//Restore the values captured when we enabled the quickdiff
-		Preferences preferences = InstanceScope.INSTANCE.getNode("org.eclipse.ui.editors"); //$NON-NLS-1$
+		Preferences preferences = InstanceScope.INSTANCE.getNode(UI_EDITORS);
 
-		preferences.put("quickdiff.quickDiff", new Boolean(fIsQuickDiffOn).toString());//$NON-NLS-1$
-		preferences.put("additionIndicationInOverviewRule", //$NON-NLS-1$
-				new Boolean(fIsAdditionIndicationInOverviewRule).toString());
-		preferences.put("changeIndicationInOverviewRuler", new Boolean(fIsChangeIndicationInOverviewRuler).toString());//$NON-NLS-1$
-		preferences.put("deletionIndicationInOverviewRuler", //$NON-NLS-1$
-				new Boolean(fIsDeletionIndicationInOverviewRuler).toString());
-		preferences.put("quickdiff.defaultProvider", fDefaultProvider); //$NON-NLS-1$
+		preferences.put(QUICKDIFF_QUICKDIFF, Boolean.toString(fIsQuickDiffOn));
+		preferences.put(ADDITION_INDICATION_OVERVIEW_RULE, Boolean.toString(fIsAdditionIndicationInOverviewRule));
+		preferences.put(CHANGE_INDICATION_OVERVIEW_RULE, Boolean.toString(fIsChangeIndicationInOverviewRuler));
+		preferences.put(DELETION_INDICATION_OVERVIEW_RULE, Boolean.toString(fIsDeletionIndicationInOverviewRuler));
+		preferences.put(QUICKDIFF_DEFAULT, fDefaultProvider);
 
 		try {
 			// forces the application to save the preferences
@@ -363,17 +382,6 @@
 		return false;
 	}
 
-	private void deleteMarker(CommentInfo commentToDelete) {
-		IMarker marker = markersManaged.remove(commentToDelete.getId());
-		if (marker != null) {
-			try {
-				marker.delete();
-			} catch (CoreException e) {
-				logger.debug("Failed to delete marker", e); //$NON-NLS-1$
-			}
-		}
-	}
-
 	//Add a marker for the specified comment.
 	//The workspacefile is optional. If it is not specified the associated file will be derived the comment
 	private void addMarker(CommentInfo newComment) {
@@ -433,7 +441,7 @@
 	}
 
 	//The following code is used to enable the databinding
-	private transient PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);
+	private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);
 
 	public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) {
 		propertyChangeSupport.addPropertyChangeListener(propertyName, listener);
@@ -451,26 +459,24 @@
 	 * enables the quickdiff feature inside the editor
 	 */
 	private void enableQuickDiff() {
-		Preferences preferences = InstanceScope.INSTANCE.getNode("org.eclipse.ui.editors"); //$NON-NLS-1$
+		Preferences preferences = InstanceScope.INSTANCE.getNode(UI_EDITORS);
 
 		//Remember the value of the preferences we are modifying
-		fIsQuickDiffOn = Platform.getPreferencesService().getBoolean("org.eclipse.ui.editors", //$NON-NLS-1$
-				"quickdiff.quickDiff", false, null); //$NON-NLS-1$
-		fIsAdditionIndicationInOverviewRule = Platform.getPreferencesService().getBoolean("org.eclipse.ui.editors", //$NON-NLS-1$
-				"additionIndicationInOverviewRule", false, null); //$NON-NLS-1$
-		fIsChangeIndicationInOverviewRuler = Platform.getPreferencesService().getBoolean("org.eclipse.ui.editors", //$NON-NLS-1$
-				"changeIndicationInOverviewRuler", false, null); //$NON-NLS-1$
-		fIsDeletionIndicationInOverviewRuler = Platform.getPreferencesService().getBoolean("org.eclipse.ui.editors", //$NON-NLS-1$
-				"deletionIndicationInOverviewRuler", false, null); //$NON-NLS-1$
-		fDefaultProvider = Platform.getPreferencesService().getString("org.eclipse.ui.editors", //$NON-NLS-1$
-				"quickdiff.defaultProvider", "", null); //$NON-NLS-1$  //$NON-NLS-2$
+		fIsQuickDiffOn = Platform.getPreferencesService().getBoolean(UI_EDITORS, QUICKDIFF_QUICKDIFF, false, null);
+		fIsAdditionIndicationInOverviewRule = Platform.getPreferencesService().getBoolean(UI_EDITORS,
+				ADDITION_INDICATION_OVERVIEW_RULE, false, null);
+		fIsChangeIndicationInOverviewRuler = Platform.getPreferencesService().getBoolean(UI_EDITORS,
+				CHANGE_INDICATION_OVERVIEW_RULE, false, null);
+		fIsDeletionIndicationInOverviewRuler = Platform.getPreferencesService().getBoolean(UI_EDITORS,
+				DELETION_INDICATION_OVERVIEW_RULE, false, null);
+		fDefaultProvider = Platform.getPreferencesService().getString(UI_EDITORS, QUICKDIFF_DEFAULT, "", //$NON-NLS-1$
+				null);
 
-		preferences.putBoolean("quickdiff.quickDiff", true);//$NON-NLS-1$
-		preferences.putBoolean("additionIndicationInOverviewRule", true);//$NON-NLS-1$
-		preferences.putBoolean("changeIndicationInOverviewRuler", true);//$NON-NLS-1$
-		preferences.putBoolean("deletionIndicationInOverviewRuler", true);//$NON-NLS-1$
-		preferences.put("quickdiff.defaultProvider", //$NON-NLS-1$
-				"org.eclipse.egit.ui.internal.decorators.GitQuickDiffProvider");//$NON-NLS-1$
+		preferences.putBoolean(QUICKDIFF_QUICKDIFF, true);
+		preferences.putBoolean(ADDITION_INDICATION_OVERVIEW_RULE, true);
+		preferences.putBoolean(CHANGE_INDICATION_OVERVIEW_RULE, true);
+		preferences.putBoolean(DELETION_INDICATION_OVERVIEW_RULE, true);
+		preferences.put(QUICKDIFF_DEFAULT, "org.eclipse.egit.ui.internal.decorators.GitQuickDiffProvider");//$NON-NLS-1$
 		try {
 			// forces the application to save the preferences
 			preferences.flush();
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 28e0abc..2769e11 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
@@ -43,12 +43,18 @@
 public class DataConverter {
 
 	/**
+	 * The default constructor. Do not allow to build an object of this class
+	 */
+	private DataConverter() {
+	}
+
+	/**
 	 * @param outputTime
 	 *            SimpleDateFormat requested
 	 * @return an IConverter from the Gerrit Timestamp to a new format
 	 */
 	public static IConverter gerritTimeConverter(final SimpleDateFormat outputTime) {
-		IConverter converter = new Converter(String.class, String.class) {
+		return new Converter(String.class, String.class) {
 
 			@Override
 			public Object convert(Object fromObject) {
@@ -57,21 +63,20 @@
 
 				Date dateNew = null;
 
-				if (fromObject != null && !fromObject.equals("")) { //$NON-NLS-1$
+				if (fromObject != null && !"".equals(fromObject)) { //$NON-NLS-1$
 					try {
 						formatIn.setTimeZone(TimeZone.getTimeZone("UTC")); //$NON-NLS-1$
 						dateNew = formatIn.parse((String) fromObject);
 					} catch (ParseException ex) {
 						EGerritCorePlugin.logError(ex.getMessage());
 					}
-					return outputTime.format(dateNew).toString();
+					return outputTime.format(dateNew);
 
 				}
 				return ""; //$NON-NLS-1$
 
 			}
 		};
-		return converter;
 
 	}
 
@@ -79,11 +84,11 @@
 	 * @return an IConverter from the GitPersonInfo structure to a format having the name and e-mail information
 	 */
 	public static IConverter gitPersonConverter() {
-		IConverter converter = new Converter(GitPersonInfo.class, String.class) {
+		return new Converter(GitPersonInfo.class, String.class) {
 			@Override
 			public Object convert(Object fromObject) {
 
-				if (fromObject != null && !fromObject.equals("")) { //$NON-NLS-1$
+				if (fromObject != null && !"".equals(fromObject)) { //$NON-NLS-1$
 					GitPersonInfo person = (GitPersonInfo) fromObject;
 					if (person.getName() != null && person.getEmail() != null) {
 						// "<a>  </a> is to allow the link selection of the text
@@ -96,22 +101,19 @@
 				}
 			}
 		};
-		return converter;
 
 	}
 
 	/**
-	 * @param fChangeInfo
-	 *            ChangeInfo
 	 * @return an IConverter from the Submit type structure to a format to display
 	 */
-	public static IConverter submitTypeConverter(final ChangeInfo fChangeInfo) {
-		IConverter converter = new Converter(MergeableInfo.class, String.class) {
+	public static IConverter submitTypeConverter() {
+		return new Converter(MergeableInfo.class, String.class) {
 
 			@Override
 			public Object convert(Object fromObject) {
 
-				if (fromObject != null && !fromObject.equals("")) { //$NON-NLS-1$
+				if (fromObject != null && !"".equals(fromObject)) { //$NON-NLS-1$
 					MergeableInfo mInfo = (MergeableInfo) fromObject;
 					return SubmitType.getEnumName(mInfo.getSubmit_type());
 				} else {
@@ -119,7 +121,6 @@
 				}
 			}
 		};
-		return converter;
 
 	}
 
@@ -127,19 +128,18 @@
 	 * @return an IConverter from the boolean structure to the "Cannot Merge" to display
 	 */
 	public static IConverter cannotMergeConverter() {
-		IConverter converter = new Converter(Boolean.class, String.class) {
+		return new Converter(Boolean.class, String.class) {
 
 			@Override
 			public Object convert(Object fromObject) {
 
-				if (fromObject != null && !fromObject.equals("")) { //$NON-NLS-1$
+				if (fromObject != null && !"".equals(fromObject)) { //$NON-NLS-1$
 					return new Boolean((boolean) fromObject).booleanValue() ? "" : Messages.DataConverter_0; //$NON-NLS-1$
 				} else {
 					return null;
 				}
 			}
 		};
-		return converter;
 
 	}
 
@@ -180,7 +180,7 @@
 				if (fromObject == null) {
 					return null;
 				}
-				ChangeMessageInfo message = ((ChangeMessageInfo) fromObject);
+				ChangeMessageInfo message = (ChangeMessageInfo) fromObject;
 
 				//There is no comment
 				if (!message.isComment()) {
@@ -246,13 +246,11 @@
 					//Force this string to be long to reserve the space because the first time things get rendered there is no selection
 					return "                               "; //$NON-NLS-1$
 				}
-				final String PATCHSET = Messages.DataConverter_5;
-				final String SEPARATOR = "/"; //$NON-NLS-1$
 				RevisionInfo revInfo = changeInfo.getUserSelectedRevision();
 				StringBuilder sb = new StringBuilder();
-				sb.append(PATCHSET);
+				sb.append(Messages.DataConverter_5);
 				sb.append(revInfo.get_number());
-				sb.append(SEPARATOR);
+				sb.append("/"); //$NON-NLS-1$
 				sb.append(changeInfo.getRevision().get_number());
 				return sb.toString();
 			}
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/utils/EGerritConstants.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/utils/EGerritConstants.java
index 3a77c1a..5d034b2 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/utils/EGerritConstants.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/utils/EGerritConstants.java
@@ -23,4 +23,10 @@
 
 	public static final String OWNER = "owner"; //$NON-NLS-1$
 
+	/**
+	 * The default constructor. Do not allow to build an object of this class
+	 */
+	private EGerritConstants() {
+	}
+
 }
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/utils/EditExtractor.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/utils/EditExtractor.java
index 58cd90e..d896277 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/utils/EditExtractor.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/utils/EditExtractor.java
@@ -25,10 +25,10 @@
  * only interested in knowing the structural changes that happened to the file, we create our own formatter to only

  * extract that information.

  */

-public class EditExtractor extends DiffFormatter {

+class EditExtractor extends DiffFormatter {

 	private EditList fileEdits = null;

 

-	public EditExtractor(OutputStream out) {

+	EditExtractor(OutputStream out) {

 		super(out);

 	}

 

diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/utils/GerritToGitMapping.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/utils/GerritToGitMapping.java
index 9ecc8c2..175ce4c 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/utils/GerritToGitMapping.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/utils/GerritToGitMapping.java
@@ -125,7 +125,7 @@
 
 	}
 
-	protected void findMatchingRepository() throws IOException {
+	private void findMatchingRepository() throws IOException {
 		RepositoryUtil repoUtil = getRepositoryUtil();
 		RepositoryCache repoCache = getRepositoryCache();
 		for (String dirs : repoUtil.getConfiguredRepositories()) {
@@ -141,7 +141,7 @@
 		match = null;
 	}
 
-	protected RemoteConfig findMatchingRemote() throws IOException {
+	private RemoteConfig findMatchingRemote() throws IOException {
 		Assert.isNotNull(match);
 		List<RemoteConfig> remotes;
 		try {
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/utils/LinkDashboard.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/utils/LinkDashboard.java
index 660e530..c956fe5 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/utils/LinkDashboard.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/utils/LinkDashboard.java
@@ -37,8 +37,8 @@
 	/**
 	 * The constructor.
 	 */
-	public LinkDashboard(GerritClient GerritClient) {
-		this.fGerritClient = GerritClient;
+	public LinkDashboard(GerritClient gerritClient) {
+		this.fGerritClient = gerritClient;
 	}
 
 	/**
@@ -49,7 +49,7 @@
 	 */
 	public void invokeRefreshDashboardCommand(String key, String value) {
 		// Optionally pass a ExecutionEvent instance, default no-param arg creates blank event
-		Map<String, String> parameters = new HashMap<String, String>();
+		Map<String, String> parameters = new HashMap<>();
 		if ((key != null && !key.isEmpty()) || (value != null && !value.isEmpty())) {
 			parameters.put(key, value);
 		}
@@ -63,7 +63,7 @@
 	 */
 	public void invokeRefreshDashboardCommand(Map<String, String> parameters) {
 		IServiceLocator serviceLocator = PlatformUI.getWorkbench();
-		ICommandService commandService = (ICommandService) serviceLocator.getService(ICommandService.class);
+		ICommandService commandService = serviceLocator.getService(ICommandService.class);
 
 		try {
 			// Lookup command with its ID
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/utils/MarkerRepositioner.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/utils/MarkerRepositioner.java
index 11263ee..f337b4f 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/utils/MarkerRepositioner.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/utils/MarkerRepositioner.java
@@ -42,7 +42,7 @@
 

 	private EditList edits;

 

-	public MarkerRepositioner(Repository repo, String filePath) throws Exception {

+	MarkerRepositioner(Repository repo, String filePath) throws Exception {

 		this.repo = repo;

 		this.filePath = filePath;

 

@@ -137,7 +137,7 @@
 

 	/**

 	 * For testing purpose only

-	 * 

+	 *

 	 * @param edits

 	 */

 	public void setEdits(EditList edits) {

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 fb87c4e..d95747e 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
@@ -74,16 +74,10 @@
 
 	public static String AutoRebaseProcess_RebaseCancelled;
 
-	public static String AutoRebaseProcess_RebaseConflicts;
-
-	public static String AutoRebaseProcess_RebaseFailed;
-
 	public static String AutoRebaseProcess_RebaseFF;
 
 	public static String AutoRebaseProcess_RebaseSuccessful;
 
-	public static String AutoRebaseProcess_RebaseUpToDate;
-
 	public static String AutoRebaseProcess_RebasingLocally;
 
 	public static String AutoRebaseProcess_RevertingSteps;
@@ -98,8 +92,6 @@
 
 	public static String AutoRebaseProcess_StoppedConflict;
 
-	public static String AutoRebaseProcess_UncommitedChanges;
-
 	public static String Branch_perfect_match;
 
 	public static String Branch_change_Id;
@@ -118,8 +110,6 @@
 
 	public static String BranchSelectionTableModel_question;
 
-	public static String ChangeDetailEditor_12;
-
 	public static String ChangeDetailEditor_13;
 
 	public static String ChangeDetailEditor_14;
@@ -132,8 +122,6 @@
 
 	public static String ChangeDetailEditor_24;
 
-	public static String ChangeDetailEditor_25;
-
 	public static String ChangeDetailEditor_27;
 
 	public static String ChangeDetailEditor_28;
@@ -142,8 +130,6 @@
 
 	public static String ChangeDetailEditor_3;
 
-	public static String ChangeDetailEditor_30;
-
 	public static String ChangeDetailEditor_4;
 
 	public static String ChangeDetailEditor_5;
@@ -160,10 +146,6 @@
 
 	public static String CheckoutRevision_1;
 
-	public static String CheckoutRevision_12;
-
-	public static String CheckoutRevision_13;
-
 	public static String CheckoutRevision_2;
 
 	public static String CheckoutRevision_3;
@@ -238,8 +220,6 @@
 
 	public static String MarkerMenuContribution_2;
 
-	public static String MessageTabView_0;
-
 	public static String MessageTabView_1;
 
 	public static String MessageTabView_2;
@@ -284,16 +264,6 @@
 
 	public static String QuickFixReplyDoneToComment_2;
 
-	public static String ReplyAction_0;
-
-	public static String ReplyAction_1;
-
-	public static String ReplyAction_2;
-
-	public static String ReplyAction_3;
-
-	public static String ReplyAction_4;
-
 	public static String ReplyDialog_0;
 
 	public static String ReplyDialog_1;
@@ -404,12 +374,6 @@
 
 	public static String ShowCommentedFileAction_1;
 
-	public static String ShowFilePathAction_0;
-
-	public static String ShowFilePathAction_1;
-
-	public static String SwitchPatchAction_0;
-
 	public static String RelatedChangesTableDefinition_id;
 
 	public static String RelatedChangesTableDefinition_headline;
@@ -494,10 +458,6 @@
 
 	public static String CheckoutHandler_specificMessage;
 
-	public static String CherryPickHandler_title;
-
-	public static String CherryPickHandler_notAvailable;
-
 	public static String CherryPickHandler_generalMessage;
 
 	public static String CherryPickHandler_specificMessage;
@@ -506,8 +466,6 @@
 
 	public static String OpenCompareHandler_specificMessage;
 
-	public static String RebaseHandler_title;
-
 	public static String RebaseHandler_generalMessage;
 
 	public static String RebaseHandler_specificMessage;
@@ -518,8 +476,6 @@
 
 	public static String RebaseProcess_changeParent;
 
-	public static String RebaseProcess_failed;
-
 	public static String RebaseProcess_notPerform;
 
 	public static String ReplyProcess_AllButtons;
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/utils/UIUtils.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/utils/UIUtils.java
index e932f69..ba9d4f2 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/utils/UIUtils.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/utils/UIUtils.java
@@ -76,9 +76,15 @@
 
 	private static Logger logger = LoggerFactory.getLogger(UIUtils.class);
 
-	private final static String EGERRIT_PREF = "org.eclipse.egerrit.prefs"; //$NON-NLS-1$
+	private static final String EGERRIT_PREF = "org.eclipse.egerrit.prefs"; //$NON-NLS-1$
 
-	private final static int TITLE_LENGTH = 75;
+	private static final int TITLE_LENGTH = 75;
+
+	/**
+	 * The default constructor. Do not allow to build an object of this class
+	 */
+	private UIUtils() {
+	}
 
 	/**
 	 * To display some information to the end-user
@@ -87,11 +93,7 @@
 	 * @param message
 	 */
 	public static void displayInformation(final String title, final String message) {
-		PlatformUI.getWorkbench().getDisplay().syncExec(new Runnable() {
-			public void run() {
-				MessageDialog.openInformation(null, title, message);
-			}
-		});
+		PlatformUI.getWorkbench().getDisplay().syncExec(() -> MessageDialog.openInformation(null, title, message));
 	}
 
 	/**
@@ -125,33 +127,30 @@
 		String current = revisionInfo.getId();
 		QueryHelpers.loadDrafts(client, revisionInfo); //Force load the drafts to make sure they are shown in the dialog.
 		final ReplyDialog replyDialog = new ReplyDialog(shell, reason, revisionInfo, client, messageInfo);
-		Display.getDefault().syncExec(new Runnable() {
-			public void run() {
-				int ret = replyDialog.open();
-				if (ret == IDialogConstants.OK_ID) {
-					//Fill the data structure for the reply
-					ReviewInput reviewInput = new ReviewInput();
-					reviewInput.setMessage(replyDialog.getValue());
-					reviewInput.setLabels(replyDialog.getRadiosSelection());
-					reviewInput.setDrafts(ReviewInput.DRAFT_PUBLISH);
+		Display.getDefault().syncExec(() -> {
+			int ret = replyDialog.open();
+			if (ret == IDialogConstants.OK_ID) {
+				//Fill the data structure for the reply
+				ReviewInput reviewInput = new ReviewInput();
+				reviewInput.setMessage(replyDialog.getValue());
+				reviewInput.setLabels(replyDialog.getRadiosSelection());
+				reviewInput.setDrafts(ReviewInput.DRAFT_PUBLISH);
 
-					CompletableFuture<Void> reloading = CompletableFuture.runAsync(() -> {
-						try {
-							SetReviewCommand reviewToEmit = client.setReview(revisionInfo.getChangeInfo().getId(),
-									current);
-							reviewToEmit.setCommandInput(reviewInput);
-							reviewToEmit.call();
-						} catch (EGerritException e1) {
-							EGerritCorePlugin.logError(client.getRepository().formatGerritVersion() + e1.getMessage());
+				CompletableFuture<Void> reloading = CompletableFuture.runAsync(() -> {
+					try {
+						SetReviewCommand reviewToEmit = client.setReview(revisionInfo.getChangeInfo().getId(), current);
+						reviewToEmit.setCommandInput(reviewInput);
+						reviewToEmit.call();
+					} catch (EGerritException e1) {
+						EGerritCorePlugin.logError(client.getRepository().formatGerritVersion() + e1.getMessage());
 
-						}
-					}).thenRun(() -> {
-						//Here we don't use the model loader because we need the re-loading of the comments to be done synchronously
-						QueryHelpers.loadBasicInformation(client, revisionInfo.getChangeInfo(), false);
-					});
-					if (waitForDataRefresh) {
-						reloading.join();
 					}
+				}).thenRun(() -> {
+					//Here we don't use the model loader because we need the re-loading of the comments to be done synchronously
+					QueryHelpers.loadBasicInformation(client, revisionInfo.getChangeInfo(), false);
+				});
+				if (waitForDataRefresh) {
+					reloading.join();
 				}
 			}
 		});
@@ -347,7 +346,7 @@
 
 		//Keep the title length to TITLE_LENGTH characters max
 		if (title.length() > TITLE_LENGTH) {
-			title = title.substring(0, (TITLE_LENGTH - 3)).concat("..."); //$NON-NLS-1$
+			title = title.substring(0, TITLE_LENGTH - 3).concat("..."); //$NON-NLS-1$
 		}
 
 		if (note != null) {
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 c10a121..caf4deb 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
@@ -37,11 +37,8 @@
 AutoRebaseProcess_FollowingStepsSuccessful=The following steps were successful
 AutoRebaseProcess_PleaseFinishOrCancelCurrentRebase=Please make sure to finish or cancel any current rebasing process before starting the automatic rebase process.
 AutoRebaseProcess_RebaseCancelled=The automatic rebase process was cancelled\!
-AutoRebaseProcess_RebaseConflicts=Conflicts: checkout of target HEAD failed.
-AutoRebaseProcess_RebaseFailed=Failed; the original HEAD was restored
 AutoRebaseProcess_RebaseFF=Fast-forward, HEAD points to the new commit.
 AutoRebaseProcess_RebaseSuccessful=Rebase was successful, HEAD points to the new commit.
-AutoRebaseProcess_RebaseUpToDate=Already up-to-date.
 AutoRebaseProcess_RebasingLocally=Rebasing locally...
 AutoRebaseProcess_RevertingSteps=Reverting steps because of failure...
 AutoRebaseProcess_StartingTheRebaseProcess=Starting the rebase process
@@ -49,7 +46,6 @@
 AutoRebaseProcess_StashingLocalChanges=Stashing the local changes in stash : 
 AutoRebaseProcess_StashingTheLocalChanges=Stashing the local changes (no stash created)
 AutoRebaseProcess_StoppedConflict=Stopped due to a conflict; must either abort or resolve or skip.
-AutoRebaseProcess_UncommitedChanges=Uncommitted changes before rebase
 Branch_change_Id=The branch was created from some patchset of this review but contains code you modified or rebased
 Branch_branch_name=The branch name matches the review id and revision, but contains extra commits
 Branch_perfect_match=This is commit you are looking for
@@ -62,19 +58,16 @@
 Revert_message=Revert "{0}".\n\nThis reverts commit {1} from review {2}.
 EGerriTip=EGerrit Tip
 ChangeDetailEditor_EGerriTipValue=A marker is being created for each comment. The marker is displayed in the regular editor and has quickfixes allowing you to reply or delete a comment.\nYou can also create a new comment by right clicking in the left margin of the editor and see the markers in the Marker's view under the "Gerrit comment" section, or in the Problems view.\n\nFinally, the Quickdiff feature has been activated and will allow you to see the changes since HEAD^1 in the editor's margins.
-ChangeDetailEditor_12=.
 ChangeDetailEditor_13=Abandon message
 ChangeDetailEditor_14=Enter the abandon message
 ChangeDetailEditor_16=Restore message
 ChangeDetailEditor_17=Enter the restore message
 ChangeDetailEditor_2=ID:
 ChangeDetailEditor_24=D&ownload
-ChangeDetailEditor_25=Code-Review+2
 ChangeDetailEditor_27=Delete
 ChangeDetailEditor_28=Delete draft review
 ChangeDetailEditor_29=The draft review "{0}" is about to be deleted, continue ?
 ChangeDetailEditor_3=Subject:
-ChangeDetailEditor_30=Input is not a ChangeDetailEditorInput
 ChangeDetailEditor_4=Activate Comment Markers
 ChangeDetailEditor_5=Toggle to create markers for each comment in the currently selected revision
 ChangeDetailEditor_7=Markers for patchset 
@@ -83,11 +76,6 @@
 ChangeDetailEditor_updatingRelatedChanges=Updating opened related changes
 CheckoutRevision_0=Checkout...
 CheckoutRevision_1=No repository found
-CheckoutRevision_12=Change " {0} " \ has previously been checked out in branch " {1} ".\n\n\
-				 Do you want to switch to it or create a new branch?
-CheckoutRevision_13=Branch " {0} " has been modified since, but branch \n\
-                 " {1} " has the original code base.\n\n\
-                 Do you want to switch to it or create a new branch?\n
 CheckoutRevision_2=Error
 CheckoutRevision_3=Operation could not be performed
 CheckoutRevision_4=No patchset selected
@@ -127,7 +115,6 @@
 MarkerMenuContribution_0=Add Gerrit comment
 MarkerMenuContribution_1=Add a comment
 MarkerMenuContribution_2=Enter the comment for patchset 
-MessageTabView_0=Gerrit Server 
 MessageTabView_1=Messa&ges
 MessageTabView_10=Use this committer in a search query
 MessageTabView_11=Use this commit id in a search query
@@ -150,11 +137,6 @@
 QuickFixReplyDoneToComment_0=Reply done to comment
 QuickFixReplyDoneToComment_1=Do you want to reply 'Done' to\n\n
 QuickFixReplyDoneToComment_2=Done
-ReplyAction_0=Reply to the review
-ReplyAction_1=Reply to the review
-ReplyAction_2=This button is disabled because you are connected anonymously to 
-ReplyAction_3=.
-ReplyAction_4=Reply to the review
 ReplyDialog_0=Reply to comment
 ReplyDialog_1=Enter the reply to patchset 
 ReplyDialog_2=Selecting this link will bring you to the compare file and close the reply dialog
@@ -211,9 +193,6 @@
 SameTopicTableDefinition_headline=Headline
 ShowCommentedFileAction_0=Show/hide the files without comments and drafts
 ShowCommentedFileAction_1=Show/hide the files without comments and drafts
-ShowFilePathAction_0=Toggle the File path layout
-ShowFilePathAction_1=Toggle the File path layout
-SwitchPatchAction_0=Patch set 
 RelatedChangesTableDefinition_id=ID
 RelatedChangesTableDefinition_headline=Headline
 RelatedChangesTableDefinition_flag=Flag
@@ -257,17 +236,13 @@
 PreviousCommentAnnotationCommandTooltip=Go To Previous Group of Comment Annotation
 CheckoutHandler_generalMessage=Checkout the branch associated with the latest patch-set of this review.
 CheckoutHandler_specificMessage=Checkout review id {0} with branch associated with the patch-set {1}
-CherryPickHandler_title =Cherry Pick
-CherryPickHandler_notAvailable=CherryPick not available for {0}
 CherryPickHandler_generalMessage=Cherry Pick the selected commit onto the current local branch.
 CherryPickHandler_specificMessage=Cherry Pick review id {0} patch-set {1} onto the current local branch
-RebaseHandler_title=Rebase
 RebaseHandler_generalMessage=Rebase the most recent patch-set.
 RebaseHandler_specificMessage=Rebase patch-set {0} of review id {1}
 RebaseProcess_AutomaticLocalRebase=Automatic local rebase
 RebaseProcess_title=Code Review - Rebase Change
 RebaseProcess_changeParent=Change parent revision (leave empty to rebase on targeted branch)
-RebaseProcess_failed=Rebase failed
 RebaseProcess_notPerform=Gerrit could not perform the rebase automatically on the remote server. To try the autorebase locally, make sure that the number associated to a change is valid.
 RebaseProcess_changeIsAlreadyUpToDate=Change is already up to date.
 RebaseProcess_Changes=\ change(s)