001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.io.remotecontrol.handler; 003 004import static org.openstreetmap.josm.tools.I18n.tr; 005 006import java.io.File; 007import java.util.Arrays; 008 009import org.openstreetmap.josm.actions.OpenFileAction; 010import org.openstreetmap.josm.gui.util.GuiHelper; 011import org.openstreetmap.josm.io.remotecontrol.PermissionPrefWithDefault; 012 013/** 014 * Opens a local file 015 */ 016public class OpenFileHandler extends RequestHandler { 017 018 /** 019 * The remote control command name used to open a local file. 020 */ 021 public static final String command = "open_file"; 022 023 @Override 024 public String[] getMandatoryParams() { 025 return new String[]{"filename"}; 026 } 027 028 @Override 029 public String getUsage() { 030 return "opens a local file in JOSM"; 031 } 032 033 @Override 034 public String[] getUsageExamples() { 035 return new String[] {"/open_file?filename=/tmp/test.osm"}; 036 } 037 038 @Override 039 public PermissionPrefWithDefault getPermissionPref() { 040 return PermissionPrefWithDefault.OPEN_FILES; 041 } 042 043 @Override 044 protected void handleRequest() throws RequestHandlerErrorException, RequestHandlerBadRequestException { 045 GuiHelper.runInEDTAndWait(new Runnable() { 046 @Override public void run() { 047 OpenFileAction.openFiles(Arrays.asList(new File(args.get("filename")))); 048 } 049 }); 050 } 051 052 @Override 053 public String getPermissionMessage() { 054 return tr("Remote Control has been asked to open a local file."); 055 } 056 057 @Override 058 protected void validateRequest() throws RequestHandlerBadRequestException { 059 // Nothing to do 060 } 061}