Bug 574748: [RJ-Server] Add support for 'pager' in R
  - Add R functions for tool command 'r/showContents'

Change-Id: Iea192cf61bafc59c8943c9f75c4c7778ad242798
diff --git a/core/org.eclipse.statet.rj.server.rpkg/src/rpkg/NAMESPACE b/core/org.eclipse.statet.rj.server.rpkg/src/rpkg/NAMESPACE
index 5b18e59..6bb8d99 100644
--- a/core/org.eclipse.statet.rj.server.rpkg/src/rpkg/NAMESPACE
+++ b/core/org.eclipse.statet.rj.server.rpkg/src/rpkg/NAMESPACE
@@ -17,7 +17,8 @@
 export(.client.execCommand)
 export(.console.loadHistory, .console.saveHistory, .console.addtoHistory)
 export(rj.GD, .rj.initGD)
+export(rj.pager)
 export(statet.help, statet.help.start, .statet.initDebug, .statet.initHelp)
 export(statet.showHistory)
-export(openInEditor, openPackageManager, chooseFile)
+export(openInEditor, openPackageManager, chooseFile, showTextFiles)
 export(dbg.updateTracepoints)
diff --git a/core/org.eclipse.statet.rj.server.rpkg/src/rpkg/R/ide.R b/core/org.eclipse.statet.rj.server.rpkg/src/rpkg/R/ide.R
index 3e5b239..09f7254 100644
--- a/core/org.eclipse.statet.rj.server.rpkg/src/rpkg/R/ide.R
+++ b/core/org.eclipse.statet.rj.server.rpkg/src/rpkg/R/ide.R
@@ -82,13 +82,68 @@
 		stop("Illegal argument: new");
 	}
 	answer <- .client.execCommand("common/chooseFile", list(
-					newResource= new ), wait= TRUE)
+					newResource= new ),
+			wait= TRUE );
 	if (is.null(answer)) { # operation cancelled
 		return (invisible());
 	}
 	return (answer$filename);
 }
 
+#' Shows the content of the specified text files in the StatET/RJ client.
+#' 
+#' @param ... the path of the files to show
+#' @param fileEncoding the encoding of the files
+#' @param title an overall title to display
+#' @param headers headers to display for each file to show
+#' @param deleteFiles \code{TRUE} if files should be deleted
+#' @param pager (currently not used)
+#' @export
+showTextFiles <- function(..., fileEncoding= utils::localeToCharset()[1],
+		title= "R Information", headers= character(n),
+		deleteFiles= FALSE,
+		pager= NA_character_) {
+	filePaths <- path.expand(c(...));
+	n <- length(filePaths);
+	
+	if (!is.character(fileEncoding) || length(fileEncoding) != 1) {
+		stop("Illegal argument: fileEncoding");
+	}
+	if (!is.character(title) || length(title) != 1) {
+		stop("Illegal argument: title");
+	}
+	if (!is.character(headers) || length(headers) != n) {
+		stop("Illegal argument: headers");
+	}
+	if (!is.logical(deleteFiles) || length(deleteFiles) != 1) {
+		stop("Illegal argument: deleteFiles");
+	}
+	if (!is.character(pager) || length(pager) != 1) {
+		stop("Illegal argument: pager");
+	}
+	
+	.Call("Re_ExecJCommand", "re:showContents", list(
+					filePaths= filePaths, fileEncoding= fileEncoding,
+					title= title, headers= headers,
+					deleteFiles= deleteFiles,
+					pager= pager ),
+			0L,
+			PACKAGE= "(embedding)" );
+	return (invisible());
+}
+
+#' Shows the content of the specified text files in the StatET/RJ client.
+#' 
+#' This is an R implementation of a pager for \link[base]{file.show} /
+#' \code{\link[base]{options}(pager)} for StatET/RJ clients.
+#' 
+#' @export
+rj.pager <- function(files, header, title, delete.file, ...) {
+	showTextFiles(files,
+			title= title, headers= header,
+			deleteFiles= delete.file );
+}
+
 
 #' Shows the Cmd History view in StatET
 #'