blob: 8cb4ec81be0a0a6574f6e86fba54a2bda1d253fb [file] [log] [blame]
/*=============================================================================#
# Copyright (c) 2009, 2019 Stephan Wahlbrink and others.
#
# This program and the accompanying materials are made available under the
# terms of the Eclipse Public License 2.0 which is available at
# https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0
# which is available at https://www.apache.org/licenses/LICENSE-2.0.
#
# SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
#
# Contributors:
# Stephan Wahlbrink <sw@wahlbrink.eu> - initial API and implementation
#=============================================================================*/
package org.eclipse.statet.r.ui.rhelp;
import java.util.Map;
import org.eclipse.statet.jcommons.status.ErrorStatus;
import org.eclipse.statet.jcommons.status.ProgressMonitor;
import org.eclipse.statet.jcommons.status.Status;
import org.eclipse.statet.jcommons.ts.core.util.ToolCommandHandlerUtils;
import org.eclipse.statet.ecommons.runtime.core.util.StatusUtils;
import org.eclipse.statet.r.console.core.RProcess;
import org.eclipse.statet.r.ui.RUI;
import org.eclipse.statet.rj.renv.core.REnv;
import org.eclipse.statet.rj.ts.core.AbstractRToolCommandHandler;
import org.eclipse.statet.rj.ts.core.RToolService;
public class RHelpUICommandHandler extends AbstractRToolCommandHandler {
public static final String SHOW_HELP_COMMAND_ID= "showHelp"; //$NON-NLS-1$
public RHelpUICommandHandler() {
}
@Override
public Status execute(final String id, final RToolService r, final Map<String, Object> data,
final ProgressMonitor m) {
if (id.equals(SHOW_HELP_COMMAND_ID)) {
String url= ToolCommandHandlerUtils.getCheckedData(data, "url", String.class, true);
if (url.startsWith("html:///")) { //$NON-NLS-1$
int idx= url.indexOf("<head"); //$NON-NLS-1$
if (idx >= 0) {
idx= url.indexOf('>', idx+5);
if (idx >= 0) {
idx++;
url= url.substring(0, idx) + "<base href=\"about:\"/>" + url.substring(idx); //$NON-NLS-1$
}
}
}
final RProcess process= (RProcess) r.getTool();
final REnv rEnv= process.getREnv();
if (rEnv == null) {
return new ErrorStatus(RUI.BUNDLE_ID, "Not supported.");
}
final OpenRHelpHandler handler= new OpenRHelpHandler(true);
return StatusUtils.convert(handler.execute(process, url));
}
throw new UnsupportedOperationException();
}
}