Javaで1行エディタ
なんだっけな。そうだtwitter発言スクリプト - hogeなlogでエディタは外部のプログラム使ってたんだけど、twitter用の1行テキスト書くのにでっけえ画面のエディタ開いて、書いて、保存して、終了するっていうのがめんどくさかったからJavaで1行だけのテキストエディタもどきを書きました。ということです。超絶書き捨てプログラム。Enterで保存して終了、普通に終了すると保存しない。「保存しますか?」などと聞いてくる親切さは皆無。twitter投稿スクリプト用に使うことしか考えてない。中身ある既存ファイル開いても問答無用で上書きします。
import java.io.*; import javax.swing.*; import javax.swing.event.*; import java.awt.event.*; import java.util.*; public class OneLineEditor extends JFrame{ private static final String title = "OneLineEditor"; private String filepath; private JTextField field; private File file; private FileWriter writer; public OneLineEditor(String _filepath) { super(title); filepath = _filepath; try { writer = new FileWriter(new File(filepath)); } catch(IOException ex) { System.err.printf("cannot open %s", filepath); System.exit(1); } field = new JTextField(50); field.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ev) { save(field.getText()); System.exit(0); } }); field.getDocument().addDocumentListener(new DocumentListener() { public void changedUpdate(DocumentEvent ev) { edit(field.getText()); } public void insertUpdate(DocumentEvent ev) { edit(field.getText()); } public void removeUpdate(DocumentEvent ev) { edit(field.getText()); } }); getContentPane().add(field); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent ev) { System.exit(0); } }); pack(); setVisible(true); } private void save(String text) { try { writer.write(text, 0, text.length()); writer.close(); } catch(IOException ex) { System.err.printf("cannot write to %s", filepath); System.exit(1); } } private void edit(String text) { setTitle((new Formatter()).format("%s %d", title, text.length()).toString()); } public static void main(String[] args) { if(args.length>0) { OneLineEditor editor = new OneLineEditor(args[0]); } } }