/* * This software copyright by various authors including the RPTools.net * development team, and licensed under the LGPL Version 3 or, at your option, * any later version. * * Portions of this software were originally covered under the Apache Software * License, Version 1.1 or Version 2.0. * * See the file LICENSE elsewhere in this distribution for license details. */ package net.rptools.maptool.client.macro.impl; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.util.List; import javax.swing.JFileChooser; import net.rptools.lib.FileUtil; import net.rptools.maptool.client.MapTool; import net.rptools.maptool.client.MapToolMacroContext; import net.rptools.maptool.client.macro.Macro; import net.rptools.maptool.client.macro.MacroContext; import net.rptools.maptool.client.macro.MacroDefinition; import net.rptools.maptool.client.macro.MacroManager; import net.rptools.maptool.language.I18N; @MacroDefinition( name = "loadaliases", aliases = {}, description = "loadaliases.description") public class LoadAliasesMacro implements Macro { public void execute(MacroContext context, String macro, MapToolMacroContext executionContext) { File aliasFile = null; if (macro.length() > 0) { aliasFile = new File(macro); } else { JFileChooser chooser = MapTool.getFrame().getLoadFileChooser(); chooser.setDialogTitle(I18N.getText("loadaliases.dialogTitle")); chooser.setFileSelectionMode(JFileChooser.FILES_ONLY); if (chooser.showOpenDialog(MapTool.getFrame()) != JFileChooser.APPROVE_OPTION) { return; } aliasFile = chooser.getSelectedFile(); } if (aliasFile.getName().indexOf(".") < 0) { aliasFile = new File(aliasFile.getAbsolutePath() + ".alias"); } if (!aliasFile.exists()) { MapTool.addLocalMessage(I18N.getText("loadaliases.cantFindFile", aliasFile)); return; } try { MapTool.addLocalMessage(I18N.getText("loadalises.loading")); List<String> lineList = FileUtil.getLines(aliasFile); for (String line : lineList) { line = line.trim(); if (line.length() == 0 || line.charAt(0) == '#') { continue; } // Split into components String name = line; String value = null; int split = line.indexOf(":"); if (split > 0) { name = line.substring(0, split); value = line.substring(split + 1).trim(); } if (value != null) { MapTool.addLocalMessage("   '" + name + "'"); MacroManager.setAlias(name, value); } else { MapTool.addLocalMessage("   " + I18N.getText("loadaliases.ignoring", name)); } } } catch (FileNotFoundException fnfe) { MapTool.addLocalMessage(I18N.getText("loadaliases.couldNotLoad", I18N.getText("msg.error.fileNotFound"))); } catch (IOException ioe) { MapTool.addLocalMessage("loadaliases.couldNotLoad" + ioe); } } }