private boolean searchAction() {
		
		// impossible (otherwise -> logic error)
		assert(lastSearchText != null && !lastSearchText.isEmpty());
		
		if (lastSearchText == null || lastSearchText.isEmpty()) {
			return false;
		}
		
		TreeItem foundItem = search();
		
		GlobalSearch.this.lastFoundItem = ((VCNTreeItem)foundItem);
		currentItem = ((VCNTreeItem)foundItem);
		
		if (foundItem != null) {
			vermilionCascadeNotebook.getTree().setSelection(foundItem);
			Event treeSelectionEvent = new Event();
			treeSelectionEvent.item = foundItem;
			vermilionCascadeNotebook.getTree().notifyListeners(SWT.Selection, treeSelectionEvent);
		} else {
			return false;
		}
		
		// because if we search by node names it is useless for page search.
		return !isCheckNodes;
	}