Index: tmp/org.txm.edition.rcp/src/org/txm/edition/rcp/editors/EditionPanel.java
===================================================================
--- tmp/org.txm.edition.rcp/src/org/txm/edition/rcp/editors/EditionPanel.java	(revision 3239)
+++ tmp/org.txm.edition.rcp/src/org/txm/edition/rcp/editors/EditionPanel.java	(revision 3240)
@@ -1230,6 +1230,20 @@
 				if (menu == null) return;
 				new MenuItem(menu, SWT.SEPARATOR);
 				
+				MenuItem searchItem = new MenuItem(menu, SWT.NONE);
+				searchItem.setText("Search...");
+				searchItem.addSelectionListener(new SelectionListener() {
+					
+					@Override
+					public void widgetSelected(SelectionEvent e) {
+						String text = EditionPanel.this.getTextSelection();
+						synopticEditionEditor.getSearchEditionToolbar().openSearch(text);
+					}
+					
+					@Override
+					public void widgetDefaultSelected(SelectionEvent e) {}
+				});
+				
 				MenuItem copyItem = new MenuItem(menu, SWT.NONE);
 				copyItem.setText(EditionUIMessages.copyTextSelection);
 				copyItem.addSelectionListener(new SelectionListener() {
Index: tmp/org.txm.edition.rcp/src/org/txm/edition/rcp/editors/SynopticEditionEditor.java
===================================================================
--- tmp/org.txm.edition.rcp/src/org/txm/edition/rcp/editors/SynopticEditionEditor.java	(revision 3239)
+++ tmp/org.txm.edition.rcp/src/org/txm/edition/rcp/editors/SynopticEditionEditor.java	(revision 3240)
@@ -120,6 +120,9 @@
 	// private TXMEditorToolBar supplementaryButtonToolbar;
 	private ISelectionProvider selProvider;
 	
+	/**
+	 * null if the corpus has only one Text
+	 */
 	private org.eclipse.swt.widgets.Text text_text;
 	
 	// private Label text_label;
@@ -395,8 +398,15 @@
 			
 			@Override
 			public void keyReleased(KeyEvent e) {
-				if (e.keyCode == 102 && (e.stateMask & SWT.CTRL) != 0) {
+				System.out.println(e);
+				if (e.character == 'f' && (e.stateMask & SWT.CTRL) != 0) {
 					getSearchEditionToolbar().openSearch(getTextSelection());
+				} else if (e.character == 'g' && (e.stateMask & SWT.CTRL|SWT.SHIFT) == (SWT.CTRL|SWT.SHIFT)) {
+					getSearchEditionToolbar().backward();
+				} else if (e.character == 'g' && (e.stateMask & SWT.CTRL) == (SWT.CTRL)) {
+					getSearchEditionToolbar().forward();
+				} else if (e.keyCode == SWT.ESC) {
+					getSearchEditionToolbar().closeSearch();
 				}
 			}
 			
@@ -463,8 +473,10 @@
 		
 		// Navigation buttons
 		GLComposite pageNavigationComposite = new GLComposite(lowerControlsArea, SWT.NONE, EditionUIMessages.pageButtons);
-		pageNavigationComposite.getLayout().numColumns = 6;
+		pageNavigationComposite.getLayout().numColumns = 7;
 		pageNavigationComposite.getLayout().horizontalSpacing = 1;
+		Label l = new Label(pageNavigationComposite, SWT.NONE);
+		l.setText("Page ");
 		Button first = new Button(pageNavigationComposite, SWT.FLAT | SWT.PUSH);
 		Button previous = new Button(pageNavigationComposite, SWT.FLAT | SWT.PUSH);
 		page_text = new org.eclipse.swt.widgets.Text(pageNavigationComposite, SWT.BORDER);
@@ -473,47 +485,152 @@
 		Button last = new Button(pageNavigationComposite, SWT.FLAT | SWT.PUSH);
 		pageNavigationComposite.setLayoutData(new GridData(GridData.CENTER, GridData.CENTER, true, false));
 		
-		GLComposite textNavigationComposite = new GLComposite(lowerControlsArea, SWT.NONE, EditionUIMessages.textButtons);
-		textNavigationComposite.getLayout().numColumns = 7;
-		textNavigationComposite.getLayout().horizontalSpacing = 1;
-		Button firstText = new Button(textNavigationComposite, SWT.FLAT);
-		Button previousText = new Button(textNavigationComposite, SWT.FLAT);
-		text_text = new org.eclipse.swt.widgets.Text(textNavigationComposite, SWT.BORDER);
-		KeyStroke keys = KeyStroke.getInstance(SWT.CONTROL, SWT.SPACE);
-		try {
-			String[] text_ids = corpus.getCorpusTextIdsList();
-			GridData gdata = new GridData(GridData.CENTER, GridData.CENTER, true, false);
-			gdata.minimumWidth = 1;
-			for (String text_id : text_ids) {
-				double s = text_id.length() * 7;
-				if (s > gdata.minimumWidth) {
-					gdata.minimumWidth = (int) s;
+		
+		if (project.getTexts().size() > 1) {
+			GLComposite textNavigationComposite = new GLComposite(lowerControlsArea, SWT.NONE, EditionUIMessages.textButtons);
+			textNavigationComposite.getLayout().numColumns = 8;
+			textNavigationComposite.getLayout().horizontalSpacing = 1;
+			Label l2 = new Label(textNavigationComposite, SWT.NONE);
+			l2.setText("Text ");
+			Button firstText = new Button(textNavigationComposite, SWT.FLAT);
+			Button previousText = new Button(textNavigationComposite, SWT.FLAT);
+			text_text = new org.eclipse.swt.widgets.Text(textNavigationComposite, SWT.BORDER);
+			KeyStroke keys = KeyStroke.getInstance(SWT.CONTROL, SWT.SPACE);
+			try {
+				String[] text_ids = corpus.getCorpusTextIdsList();
+				GridData gdata = new GridData(GridData.CENTER, GridData.CENTER, true, false);
+				gdata.minimumWidth = 1;
+				for (String text_id : text_ids) {
+					double s = text_id.length() * 7;
+					if (s > gdata.minimumWidth) {
+						gdata.minimumWidth = (int) s;
+					}
 				}
+				gdata.widthHint = 200;
+				text_text.setLayoutData(gdata);
+				identifiantComboAutoCompleteField = new TXMAutoCompleteField(text_text, new TextContentAdapter(), text_ids, keys);
+				// identifiantComboAutoCompleteField.setSelectionListener(new SelectionListener() {
+				// @Override
+				// public void widgetSelected(SelectionEvent e) {
+				// goToText(text_text.getText());
+				// }
+				//
+				// @Override
+				// public void widgetDefaultSelected(SelectionEvent e) { }
+				// });
 			}
-			gdata.widthHint = 200;
-			text_text.setLayoutData(gdata);
-			identifiantComboAutoCompleteField = new TXMAutoCompleteField(text_text, new TextContentAdapter(), text_ids, keys);
-			// identifiantComboAutoCompleteField.setSelectionListener(new SelectionListener() {
-			// @Override
-			// public void widgetSelected(SelectionEvent e) {
-			// goToText(text_text.getText());
-			// }
-			//
-			// @Override
-			// public void widgetDefaultSelected(SelectionEvent e) { }
-			// });
+			catch (Exception e2) {
+				e2.printStackTrace();
+			}
+			Cursor cursor = new Cursor(text_text.getDisplay(), SWT.CURSOR_SIZENS);
+			text_text.setCursor(cursor);
+			// text_label = new Label(textNavigationComposite, SWT.NONE);
+			Button nextText = new Button(textNavigationComposite, SWT.FLAT | SWT.PUSH);
+			Button lastText = new Button(textNavigationComposite, SWT.FLAT | SWT.PUSH);
+			textNavigationComposite.setLayoutData(new GridData(GridData.CENTER, GridData.CENTER, false, false));
+			// Layouts data
+			firstText.setImage(IImageKeys.getImage(IImageKeys.CTRLREWINDSTART));
+			firstText.setToolTipText(EditionUIMessages.firstTextOfTheCorpus);
+			previousText.setImage(IImageKeys.getImage(IImageKeys.CTRLREWIND));
+			previousText.setToolTipText(EditionUIMessages.previousText);
+			nextText.setImage(IImageKeys.getImage(IImageKeys.CTRLFASTFORWARD));
+			nextText.setToolTipText(EditionUIMessages.nextText);
+			lastText.setImage(IImageKeys.getImage(IImageKeys.CTRLFASTFORWARDEND));
+			lastText.setToolTipText(EditionUIMessages.lastTextOfTheCorpus);
+			
+			nextText.addSelectionListener(new SelectionListener() {
+				
+				@Override
+				public void widgetDefaultSelected(SelectionEvent e) {
+					nextText();
+				}
+				
+				@Override
+				public void widgetSelected(SelectionEvent e) {
+					nextText();
+				}
+			});
+			// set listeners
+			previousText.addSelectionListener(new SelectionListener() {
+				
+				@Override
+				public void widgetDefaultSelected(SelectionEvent e) {
+					previousText(false);
+				}
+				
+				@Override
+				public void widgetSelected(SelectionEvent e) {
+					previousText(false);
+				}
+			});
+			lastText.addSelectionListener(new SelectionListener() {
+				
+				@Override
+				public void widgetDefaultSelected(SelectionEvent e) {
+					lastText();
+				}
+				
+				@Override
+				public void widgetSelected(SelectionEvent e) {
+					lastText();
+				}
+			});
+			// set listeners
+			firstText.addSelectionListener(new SelectionListener() {
+				
+				@Override
+				public void widgetDefaultSelected(SelectionEvent e) {
+					firstText();
+				}
+				
+				@Override
+				public void widgetSelected(SelectionEvent e) {
+					firstText();
+				}
+			});
+			
+			text_text.addKeyListener(new KeyListener() {
+				
+				@Override
+				public void keyReleased(KeyEvent e) {
+					if (identifiantComboAutoCompleteField.isOpen()) return;
+					
+					if (e.keyCode == SWT.CR || e.keyCode == SWT.KEYPAD_CR) {
+						if (identifiantComboAutoCompleteField.isOpen()) {
+							return; // ignore keys when content assist is opened
+						}
+						
+						goToText(text_text.getText());
+					}
+					else if (e.keyCode == SWT.ARROW_DOWN) {
+						nextText();
+					}
+					else if (e.keyCode == SWT.ARROW_UP) {
+						previousText(false);
+					}
+				}
+				
+				@Override
+				public void keyPressed(KeyEvent e) {}
+			});
+			text_text.addMouseWheelListener(new MouseWheelListener() {
+				
+				@Override
+				public void mouseScrolled(MouseEvent e) {
+					if (identifiantComboAutoCompleteField.isOpen()) {
+						return;
+					}
+					
+					if (e.count > 0) {
+						previousText(false);
+					}
+					else {
+						nextText();
+					}
+					// toolbar.getEditor().updateWordStyles();
+				}
+			});
 		}
-		catch (Exception e2) {
-			e2.printStackTrace();
-		}
-		Cursor cursor = new Cursor(text_text.getDisplay(), SWT.CURSOR_SIZENS);
-		text_text.setCursor(cursor);
-		// text_label = new Label(textNavigationComposite, SWT.NONE);
-		Button nextText = new Button(textNavigationComposite, SWT.FLAT | SWT.PUSH);
-		Button lastText = new Button(textNavigationComposite, SWT.FLAT | SWT.PUSH);
-		textNavigationComposite.setLayoutData(new GridData(GridData.CENTER, GridData.CENTER, false, false));
-		// Layouts data
-		
 		if (editionsChooser != null) editionsChooser.setLayoutData(new GridData(GridData.BEGINNING, GridData.CENTER, false, false));
 		
 		// GridData buttonGridData = new GridData(GridData.END,GridData.CENTER, true, false);
@@ -553,10 +670,7 @@
 		// set labels
 		page_label.setText(""); //$NON-NLS-1$
 		// text_label.setText(""); //$NON-NLS-1$
-		firstText.setImage(IImageKeys.getImage(IImageKeys.CTRLREWINDSTART));
-		firstText.setToolTipText(EditionUIMessages.firstTextOfTheCorpus);
-		previousText.setImage(IImageKeys.getImage(IImageKeys.CTRLREWIND));
-		previousText.setToolTipText(EditionUIMessages.previousText);
+		
 		first.setImage(IImageKeys.getImage(IImageKeys.CTRLSTART));
 		first.setToolTipText(EditionUIMessages.firstPageOfTheText);
 		previous.setImage(IImageKeys.getImage(IImageKeys.CTRLREVERSE));
@@ -565,10 +679,6 @@
 		next.setToolTipText(EditionUIMessages.nextPage);
 		last.setImage(IImageKeys.getImage(IImageKeys.CTRLEND));
 		last.setToolTipText(EditionUIMessages.lastPageOfTheText);
-		nextText.setImage(IImageKeys.getImage(IImageKeys.CTRLFASTFORWARD));
-		nextText.setToolTipText(EditionUIMessages.nextText);
-		lastText.setImage(IImageKeys.getImage(IImageKeys.CTRLFASTFORWARDEND));
-		lastText.setToolTipText(EditionUIMessages.lastTextOfTheCorpus);
 		
 		page_text.addKeyListener(new KeyListener() {
 			
@@ -582,47 +692,7 @@
 			@Override
 			public void keyPressed(KeyEvent e) {}
 		});
-		text_text.addKeyListener(new KeyListener() {
-			
-			@Override
-			public void keyReleased(KeyEvent e) {
-				if (identifiantComboAutoCompleteField.isOpen()) return;
-				
-				if (e.keyCode == SWT.CR || e.keyCode == SWT.KEYPAD_CR) {
-					if (identifiantComboAutoCompleteField.isOpen()) {
-						return; // ignore keys when content assist is opened
-					}
-					
-					goToText(text_text.getText());
-				}
-				else if (e.keyCode == SWT.ARROW_DOWN) {
-					nextText();
-				}
-				else if (e.keyCode == SWT.ARROW_UP) {
-					previousText(false);
-				}
-			}
-			
-			@Override
-			public void keyPressed(KeyEvent e) {}
-		});
-		text_text.addMouseWheelListener(new MouseWheelListener() {
-			
-			@Override
-			public void mouseScrolled(MouseEvent e) {
-				if (identifiantComboAutoCompleteField.isOpen()) {
-					return;
-				}
-				
-				if (e.count > 0) {
-					previousText(false);
-				}
-				else {
-					nextText();
-				}
-				// toolbar.getEditor().updateWordStyles();
-			}
-		});
+		
 		// set listeners
 		first.addSelectionListener(new SelectionListener() {
 			
@@ -672,57 +742,8 @@
 				lastPage();
 			}
 		});
-		nextText.addSelectionListener(new SelectionListener() {
-			
-			@Override
-			public void widgetDefaultSelected(SelectionEvent e) {
-				nextText();
-			}
-			
-			@Override
-			public void widgetSelected(SelectionEvent e) {
-				nextText();
-			}
-		});
-		// set listeners
-		previousText.addSelectionListener(new SelectionListener() {
-			
-			@Override
-			public void widgetDefaultSelected(SelectionEvent e) {
-				previousText(false);
-			}
-			
-			@Override
-			public void widgetSelected(SelectionEvent e) {
-				previousText(false);
-			}
-		});
-		lastText.addSelectionListener(new SelectionListener() {
-			
-			@Override
-			public void widgetDefaultSelected(SelectionEvent e) {
-				lastText();
-			}
-			
-			@Override
-			public void widgetSelected(SelectionEvent e) {
-				lastText();
-			}
-		});
-		// set listeners
-		firstText.addSelectionListener(new SelectionListener() {
-			
-			@Override
-			public void widgetDefaultSelected(SelectionEvent e) {
-				firstText();
-			}
-			
-			@Override
-			public void widgetSelected(SelectionEvent e) {
-				firstText();
-			}
-		});
 		
+		
 		try {
 			// ensure all texts have build their page indexes
 			for (Text t : project.getTexts()) {
@@ -768,7 +789,7 @@
 			page_text.setText(cpage.getName());
 			page_label.setText(" / " + e.getNumPages()); //$NON-NLS-1$
 			
-			text_text.setText(p.getCurrentText().getName());
+			if (text_text != null) text_text.setText(p.getCurrentText().getName());
 			// try {
 			// text_label.setText(" / "+corpus.getCorpusTextIdsList().length);
 			// } catch (Exception e1) {
@@ -1031,13 +1052,9 @@
 	
 	@Override
 	public void updateEditorFromResult(boolean update) throws Exception {
-		this.firstPage();
+		//this.firstPage();
 	}
 	
-
-	
-
-
 	public LinkedHashMap<String, EditionPanel> getEditionPanels() {
 		return editionPanels;
 	}
Index: tmp/org.txm.edition.rcp/src/org/txm/edition/rcp/editors/SearchEditionToolbar.java
===================================================================
--- tmp/org.txm.edition.rcp/src/org/txm/edition/rcp/editors/SearchEditionToolbar.java	(revision 3239)
+++ tmp/org.txm.edition.rcp/src/org/txm/edition/rcp/editors/SearchEditionToolbar.java	(revision 3240)
@@ -2,6 +2,7 @@
 
 import java.util.List;
 
+import org.eclipse.osgi.util.NLS;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.KeyEvent;
 import org.eclipse.swt.events.KeyListener;
@@ -10,6 +11,7 @@
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
+import org.txm.concordance.rcp.handlers.ComputeConcordance;
 import org.txm.edition.rcp.handlers.BackToText;
 import org.txm.objects.Match;
 import org.txm.rcp.IImageKeys;
@@ -60,6 +62,10 @@
 	private Button endSearchButton;
 	
 	private GridData searchButtonGdata;
+
+	private GridData concordanceButtonGdata;
+
+	private Button concordanceButton;
 	
 	public void init(Composite lowerControlsArea, CQPCorpus mcorpus, SynopticEditionEditor editor) {
 		
@@ -97,9 +103,23 @@
 			@Override
 			public void keyReleased(KeyEvent e) {
 				if (e.keyCode == SWT.CR || e.keyCode == SWT.KEYPAD_CR) {
+					
 					if (searchText.getQuery() != null) {
 						search();
 					}
+				} else if ((e.stateMask & SWT.CTRL) == SWT.CTRL) {
+					
+					if (e.keyCode == 'g') {
+						
+						if ((e.stateMask & SWT.SHIFT) == SWT.SHIFT) {
+							
+							backward();
+						} else {
+							forward();
+						}
+					}
+				} else if (e.keyCode == SWT.ESC) {
+					closeSearch();
 				}
 			}
 			
@@ -143,13 +163,49 @@
 		searchGdata2.minimumWidth = searchGdata2.widthHint = 0;
 		searchNavigation.setLayoutData(searchGdata2);
 		searchNavigation.setEnabled(false);
+		
+//		concordanceButton = new Button(lowerControlsArea, SWT.PUSH);
+//		concordanceButton.setImage(IImageKeys.getImage("org.txm.concordance.rcp", IImageKeys.ACTION_CONCORDANCES));
+//		concordanceButton.addSelectionListener(new SelectionListener() {
+//			
+//			@Override
+//			public void widgetSelected(SelectionEvent e) {
+//				if (searchText.getQuery() != null) {
+//					openConcordance();
+//				}
+//			}
+//			
+//			@Override
+//			public void widgetDefaultSelected(SelectionEvent e) {}
+//		});
+//		concordanceButtonGdata = new GridData(GridData.CENTER, GridData.CENTER, false, false);
+//		concordanceButtonGdata.minimumWidth = concordanceButtonGdata.widthHint = 0;
+//		concordanceButton.setLayoutData(concordanceButtonGdata);
 	}
 	
+	protected void forward() {
+		if (searchResult == null) return;
+		
+		searchNavigation.setCurrentPosition(searchNavigation.getCurrentPosition() + 1);
+		searchNavigation.refresh();
+	}
+	
+	protected void backward() {
+		if (searchResult == null) return;
+		
+		searchNavigation.setCurrentPosition(searchNavigation.getCurrentPosition() - 1);
+		searchNavigation.refresh();
+	}
+
+	protected void openConcordance() {
+		System.out.println("Opening concordances with query="+this.searchText.getQuery());
+	}
+
 	protected void closeSearch() {
 		
 		// disable highlights
 		if (foundWordids != null) {
-			editor.removeHighlightWordsById(BackToText.red, foundWordids);
+			editor.removeHighlightWordsById(BackToText.lightred, foundWordids);
 			editor.setFocusedWordID(null);
 			editor.updateWordStyles();
 		}
@@ -158,6 +214,7 @@
 		searchGdata.minimumWidth = searchGdata.widthHint = 0;
 		searchGdata2.minimumWidth = searchGdata2.widthHint = 0;
 		searchButtonGdata.minimumWidth = searchButtonGdata.widthHint = 0;
+		if (concordanceButtonGdata != null) concordanceButtonGdata.minimumWidth = concordanceButtonGdata.widthHint = 0;
 		lowerControlsArea.layout();
 		endSearchButton.setImage(IImageKeys.getImage(IImageKeys.ACTION_SEARCH));
 	}
@@ -168,19 +225,22 @@
 	public void openSearch(String value) {
 		if (searchGdata.widthHint == 0) {
 			searchGdata.minimumWidth = searchGdata.widthHint = 350; //
+			searchGdata.minimumWidth = searchGdata.widthHint = 350; //
 			searchGdata2.minimumWidth = searchGdata2.widthHint = SWT.DEFAULT; // several buttons
 			searchButtonGdata.minimumWidth = searchButtonGdata.widthHint = SWT.DEFAULT; // button
+			if (concordanceButtonGdata != null) concordanceButtonGdata.minimumWidth = concordanceButtonGdata.widthHint = SWT.DEFAULT; // button
 			lowerControlsArea.layout();
 			endSearchButton.setImage(IImageKeys.getImage(IImageKeys.ACTION_DELETE));
 		}
-		searchText.setFocus();
+		
 		if (value != null && value.length() > 0) {
 			searchText.setText(value);
 		}
+		searchText.setFocus();
 	}
 	
 	protected void search() {
-		Log.info("Searching " + searchText.getQuery());
+		Log.info(NLS.bind("Searching for <{0}> in the {1} corpus...", searchText.getQuery(), mcorpus.getName()));
 		IQuery q = searchText.getQuery();
 		try {
 			Selection tmp = searchText.getQuery().getSearchEngine().query(mcorpus, q, "SEARCH", false);
@@ -206,15 +266,19 @@
 					}
 				}
 				searchNavigation.setEnabled(true);
+				if (concordanceButton != null) concordanceButton.setEnabled(true);
 				searchNavigation.setCurrentPosition(searchIndex);
 				searchNavigation.setMinPosition(1);
 				searchNavigation.setMaxPosition(tmp.getNMatch());
 				searchNavigation.refresh();
+				searchText.setFocus();
+				showCurrentSearchMatch();
 				Log.info("" + searchResult.getNMatch() + " hits.");
 			}
 			else {
 				searchIndex = 0;
 				searchNavigation.setEnabled(false);
+				if (concordanceButton != null) concordanceButton.setEnabled(false);
 				searchNavigation.setCurrentPosition(0);
 				searchNavigation.setMinPosition(0);
 				searchNavigation.setMaxPosition(0);
@@ -243,7 +307,7 @@
 				if (foundWordids.size() == 0) return;
 				
 				editor.getEditionPanel(0).backToText(editor.getResult().getProject().getText(text), foundWordids.get(0));
-				editor.addHighlightWordsById(BackToText.red, foundWordids);
+				editor.addHighlightWordsById(BackToText.lightred, foundWordids);
 				editor.setFocusedWordID(foundWordids.get(0));
 				editor.updateWordStyles();
 			}
