|
What this is
Other links
The source code/* * 11/18/2000 - 01:33:45 * * CreateTemplate.java - Creates a file from a template * Copyright (C) 2000 Blake Winton, modifs by Romain Guy * romain.guy@jext.org * http://www.jext.org * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ package org.jext.actions; import java.awt.event.ActionEvent; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.util.HashMap; import javax.swing.JOptionPane; import gnu.regexp.RE; import gnu.regexp.REMatch; import org.jext.Jext; import org.jext.JextFrame; import org.jext.MenuAction; import org.jext.Utilities; public class CreateTemplate extends MenuAction { public CreateTemplate() { super("create_template"); } public void actionPerformed(ActionEvent evt) { try { String fileName = evt.getActionCommand(); String input = loadFile(fileName); JextFrame parent = getJextParent(evt); HashMap tokens = new HashMap(); tokens.put("____", "__"); addTokensFromInput(parent, input, tokens); parent.open(saveOutput(parent, replace(input, tokens))); } catch(Exception e) { System.err.println(e); } } private String loadFile(String fileName) throws Exception { File source = new File(fileName); if(!source.exists() || !source.canRead()) throw new Exception("Could not read file " + source.getName()); String line; StringBuffer buf = new StringBuffer((int) source.length()); BufferedReader reader = new BufferedReader(new FileReader(source)); while ((line = reader.readLine()) != null) buf.append(line).append('\n'); reader.close(); return buf.toString(); } private void addTokensFromInput(JextFrame parent, String input, HashMap tokens) throws Exception { String pattern = "__([^_]|_[^_])*__"; RE re = new RE( pattern ); REMatch[] matches = re.getAllMatches(input); for (int i = 0; i < matches.length; i++ ) { String key = matches[i].toString(); String value = ""; if (!tokens.containsKey(key)) { String var = key.substring(2, key.length() - 2); value = (String) JOptionPane.showInputDialog(parent, Jext.getProperty("templates.input", new String[] { var }), Jext.getProperty("templates.title"), JOptionPane.QUESTION_MESSAGE, null, null, var); tokens.put(key, value); } } } private String replace(String input, HashMap tokens) throws Exception { String retval = input; String[] keys = (String[]) tokens.keySet().toArray(new String[0]); for (int i = 0; i < keys.length; i++) { String currKey = keys[i]; if (currKey.equals( "____" )) continue; RE re = new RE(currKey); retval = re.substituteAll(retval, (String) tokens.get(currKey)); } RE re = new RE("____"); retval = re.substituteAll(retval, (String) tokens.get("__")); return retval; } private String saveOutput(JextFrame parent, String output) throws Exception { String fileName = Utilities.chooseFile(parent, Utilities.SAVE); BufferedWriter writer = new BufferedWriter(new FileWriter(fileName)); writer.write(output, 0, output.length()); writer.flush(); writer.close(); return fileName; } } // End of CreateTemplate.java |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.