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(() -> OpenFileAction.openFiles(Arrays.asList(new File(args.get("filename")))));
046    }
047
048    @Override
049    public String getPermissionMessage() {
050        return tr("Remote Control has been asked to open a local file.");
051    }
052
053    @Override
054    protected void validateRequest() throws RequestHandlerBadRequestException {
055        // Nothing to do
056    }
057}