Fetch gerrit server version, create gerrit button in the dashboard
toolbar.

Change-Id: I5ce91a165e0e8d33c6dfe6d8e761300199a3a280
Signed-off-by: Guy Perron <guy.perron@ericsson.com>
diff --git a/org.eclipse.mylyn.reviews.r4e-gerrit.ui/plugin.xml b/org.eclipse.mylyn.reviews.r4e-gerrit.ui/plugin.xml
index 581c6c8..a43c23e 100644
--- a/org.eclipse.mylyn.reviews.r4e-gerrit.ui/plugin.xml
+++ b/org.eclipse.mylyn.reviews.r4e-gerrit.ui/plugin.xml
@@ -64,6 +64,18 @@
       <menuContribution
             locationURI="toolbar:org.eclipse.mylyn.reviews.r4egerrit.ui.views.R4EGerritTableView?after=additions">
           <command
+                commandId="org.eclipse.mylyn.reviews.r4e-gerrit.selectCurrentGerrit"
+                icon="icons/favicon.ico"
+                id="r4eGerrit.dropdown.toolbar.initiateGerrit"
+                label="R4E-Gerrit"
+                style="pulldown">
+          </command>            
+	<!--          <separator
+                name="addition0"
+                visible="true">
+            </separator>
+            -->
+          <command
                 commandId="org.eclipse.mylyn.reviews.r4e-gerrit.ui.allOpenReviews"
                 id="r4eGerritUI.dropdown.toolbar.AddAllOpenReviews"
                 label="All"
diff --git a/org.eclipse.mylyn.reviews.r4e-gerrit.ui/src/org/eclipse/mylyn/reviews/r4egerrit/ui/views/R4EGerritTableView.java b/org.eclipse.mylyn.reviews.r4e-gerrit.ui/src/org/eclipse/mylyn/reviews/r4egerrit/ui/views/R4EGerritTableView.java
index 70b7b6d..676756d 100644
--- a/org.eclipse.mylyn.reviews.r4e-gerrit.ui/src/org/eclipse/mylyn/reviews/r4egerrit/ui/views/R4EGerritTableView.java
+++ b/org.eclipse.mylyn.reviews.r4e-gerrit.ui/src/org/eclipse/mylyn/reviews/r4egerrit/ui/views/R4EGerritTableView.java
@@ -12,6 +12,7 @@
  * Contributors:
  *   Jacques Bouthillier - Initial Implementation of the plug-in
  *   Francois Chouinard - Handle gerrit queries and open reviews in editor
+ *   Guy Perron			- Add review counter, Add Gerrit button selection
  ******************************************************************************/
 
 package org.eclipse.mylyn.reviews.r4egerrit.ui.views;
@@ -42,6 +43,8 @@
 import org.eclipse.mylyn.internal.gerrit.core.GerritConnector;
 import org.eclipse.mylyn.internal.gerrit.core.GerritCorePlugin;
 import org.eclipse.mylyn.internal.gerrit.core.GerritQuery;
+import org.eclipse.mylyn.internal.gerrit.core.client.GerritClient;
+import org.eclipse.mylyn.internal.gerrit.core.client.GerritException;
 import org.eclipse.mylyn.internal.tasks.core.AbstractTask;
 import org.eclipse.mylyn.internal.tasks.core.ITaskListChangeListener;
 import org.eclipse.mylyn.internal.tasks.core.RepositoryQuery;
@@ -62,7 +65,6 @@
 import org.eclipse.mylyn.reviews.r4e_gerrit.ui.internal.utils.UIUtils;
 import org.eclipse.mylyn.tasks.core.IRepositoryElement;
 import org.eclipse.mylyn.tasks.core.IRepositoryModel;
-import org.eclipse.mylyn.tasks.core.IRepositoryQuery;
 import org.eclipse.mylyn.tasks.core.TaskRepository;
 import org.eclipse.mylyn.tasks.core.data.TaskData;
 import org.eclipse.mylyn.tasks.ui.AbstractRepositoryConnectorUi;
@@ -70,6 +72,7 @@
 import org.eclipse.mylyn.tasks.ui.TasksUiUtil;
 import org.eclipse.mylyn.tasks.ui.editors.TaskEditorInput;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.ScrolledComposite;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Button;
@@ -124,11 +127,15 @@
 	private static final String COMMAND_MESSAGE = "Search Gerrit info ...";
 
 	// Labels for the Search 
-	private final String SEARCH_LABEL = "Current Query:";
-	private final String SEARCH_BTN = "Search";
-	private final String REPOSITORY = "Repository:";
+	private final String SEARCH_LABEL 	= "Current Query:";
+	private final String SEARCH_BTN 	= "Search";
+	private final String REPOSITORY 	= "Repository:";
+	private final String VERSION 		= "Version:";
+	private final String TOTAL_COUNT 	= "Total reviews:";
 
-	private final int SEARCH_WIDTH = 150;
+	private final int SEARCH_WIDTH = 300;
+	private final int REPO_WIDTH = 200;
+	private final int VERSION_WIDTH = 70;
 	
 	// ------------------------------------------------------------------------
 	// Member variables
@@ -147,6 +154,12 @@
 	private Label 	fRepositoryLabel;
 	private Label	fRepositoryResulLabel;
 
+    private Label 	fRepositoryVersionLabel;
+	private Label	fRepositoryVersionResulLabel;
+	
+    private Label 	fReviewsTotalLabel;	
+    private Label 	fReviewsTotalResultLabel;	
+	
 	private Text	fSearchRequestText;
 	private Button	fSearchRequestBtn;
 	
@@ -178,6 +191,8 @@
 	            @Override
 	            public void run() {
 	            	fViewer.setInput(fReviewTable.getReviews()); 
+	            	//Refresh the counter
+                    setReviewsTotalResultLabel(Integer.toString(fReviewTable.getReviews().length));
 	            	fViewer.refresh(false, false);
 	            }
 	        });
@@ -217,13 +232,18 @@
 	 * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
 	 */
 	public void createPartControl(Composite aParent) {
+		ScrolledComposite sc = new ScrolledComposite(aParent,  SWT.H_SCROLL| SWT.V_SCROLL | SWT.BORDER);
+		sc.setExpandHorizontal(true);
+		Composite c = new Composite(sc, SWT.NONE);
+		sc.setContent(c);
+    	sc.setExpandVertical(true);
 
-		createSearchSection(aParent);
+		createSearchSection(c);
 		UIReviewTable reviewTable = new UIReviewTable();
-		fViewer = reviewTable.createTableViewerSection(aParent);
+		fViewer = reviewTable.createTableViewerSection(c);
 			
 		// Setup the view layout
-		createLayout(aParent);
+		createLayout(c);
 
 		makeActions();
 		hookContextMenu();
@@ -235,6 +255,8 @@
 
 		// Listen on query results
 		TasksUiPlugin.getTaskList().addChangeListener(this);
+		
+		sc.setMinSize(c.computeSize(SWT.DEFAULT, SWT.DEFAULT));		
 	}
 
 	private void createLayout(Composite aParent) {
@@ -275,26 +297,42 @@
 		leftSearchForm.setLayoutData(gribDataViewer);
 
 		GridLayout leftLayoutForm = new GridLayout();
-		leftLayoutForm.numColumns = 2;
+		leftLayoutForm.numColumns = 4;
 		leftLayoutForm.marginHeight = 0;
 		leftLayoutForm.makeColumnsEqualWidth = false;
+		leftLayoutForm.horizontalSpacing = 10;
 		
 		leftSearchForm.setLayout(leftLayoutForm);
 		
+		//Label to display the repository
+		fRepositoryLabel = new Label(leftSearchForm, SWT.NONE);
+		fRepositoryLabel.setText(REPOSITORY);
+		
+		fRepositoryResulLabel = new Label(leftSearchForm, SWT.NONE);
+		fRepositoryResulLabel.setLayoutData(new GridData(REPO_WIDTH, SWT.DEFAULT));
+
+		//Label to display the repository version
+		fRepositoryVersionLabel = new Label(leftSearchForm, SWT.NONE);
+		fRepositoryVersionLabel.setText(VERSION);
+		
+		fRepositoryVersionResulLabel = new Label(leftSearchForm, SWT.NONE);
+		fRepositoryVersionResulLabel.setLayoutData(new GridData(VERSION_WIDTH, SWT.DEFAULT));	
+		
+		
 		// Label for SEARCH for
 		fSearchForLabel = new Label(leftSearchForm, SWT.NONE);
 		fSearchForLabel.setText(SEARCH_LABEL);
 		
 		// Label for the SEARH request
 		fSearchResulLabel = new Label(leftSearchForm, SWT.NONE);
-		fSearchResulLabel.setLayoutData(new GridData(SEARCH_WIDTH, SWT.DEFAULT));
+		fSearchResulLabel.setLayoutData(new GridData(REPO_WIDTH, SWT.DEFAULT));
 
-		//Label to display the repository
-		fRepositoryLabel = new Label(leftSearchForm, SWT.NONE);
-		fRepositoryLabel.setText(REPOSITORY);
+		//Label to display Total reviews
+		fReviewsTotalLabel = new Label(leftSearchForm, SWT.NONE);
+		fReviewsTotalLabel.setText(TOTAL_COUNT);
 		
-		fRepositoryResulLabel = new Label(leftSearchForm, SWT.NONE);
-		fRepositoryResulLabel.setLayoutData(new GridData(SEARCH_WIDTH, SWT.DEFAULT));
+		fReviewsTotalResultLabel = new Label(leftSearchForm, SWT.NONE);
+		fReviewsTotalResultLabel.setLayoutData(new GridData(VERSION_WIDTH, SWT.DEFAULT));		
 
 		
 		//Right side of the Group
@@ -529,15 +567,10 @@
 		
 		//We should have a TaskRepository here, otherwise, the user need to define one
 		if (fTaskRepository == null) {
-//			try {
 			String msg = "You need to define a Gerrit repository.";
 			String reason = "No Gerrit repository has been selected yet.";
-				R4EGerritUi.Ftracer.traceInfo(msg );
-				UIUtils.showErrorDialog(msg, reason);
-//			} catch (NotDefinedException e) {
-//				// TODO Auto-generated catch block
-//				e.printStackTrace();
-//			}
+			R4EGerritUi.Ftracer.traceInfo(msg );
+			UIUtils.showErrorDialog(msg, reason);
 		} else {
 			updateTable (fTaskRepository, aQuery);
 		}
@@ -580,6 +613,14 @@
 		                        setSearchText(aQueryType);	                        	
 	                        }
 	                        setRepositoryLabel(aTaskRepo.getRepositoryLabel());
+	                        GerritClient gerritClient = fConnector.getClient(aTaskRepo);
+	                        try {
+								R4EGerritUi.Ftracer.traceInfo("Jb GerritClient: " + gerritClient.getVersion(new NullProgressMonitor()) );
+								setRepositoryVersionLabel (gerritClient.getVersion(new NullProgressMonitor()).toString() );
+							} catch (GerritException e1) {
+								e1.printStackTrace();
+							}
+	                        
 	                    }
 	                });
 	                status = Status.OK_STATUS;
@@ -786,6 +827,19 @@
 			} catch (CoreException e) {
 			}
 		}
+		
+	}
+
+	private void setRepositoryVersionLabel(String aSt) {
+		if (!fRepositoryVersionResulLabel.isDisposed() ) {
+			fRepositoryVersionResulLabel.setText(aSt);
+		}
+	}
+
+	private void setReviewsTotalResultLabel(String aSt) {
+		if (!fReviewsTotalResultLabel.isDisposed() ) {
+			fReviewsTotalResultLabel.setText(aSt);
+		}
 	}
 
 }