Mercurial > hg > Database > Christie
view src/main/java/christie/textEditor/textFrame.java @ 224:0c74d9168aff
fix Editor & trans
author | ichikitakahiro <e165713@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 24 Dec 2019 19:33:50 +0900 |
parents | 1c37472fc00d |
children | 218ad6b9ba87 |
line wrap: on
line source
package christie.textEditor; import christie.codegear.CodeGear; import christie.remotingTextEditor.SetInstance; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import javax.swing.*; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.text.BadLocationException; import javax.swing.text.Document; import javax.swing.text.StyleConstants; import javax.swing.text.StyleContext; import static javax.swing.UIManager.put; public class TextFrame extends JInternalFrame { private JTextArea textArea; private static String DEFAULT_CHARACTER_CODE = "Shift_JIS"; public int loc = 0; public boolean send = false; private int sendLoc = 0; public boolean canWrite = true; StyleContext sc = new StyleContext(); public TextFrame() { this("新規テキスト"); } public TextFrame(String title) { //JInternalFrameのコンストラクタの呼び出しを実行 super(title, true, true, true, true); //サイズの指定 this.setSize(800, 600); // JTextArea(テキスト入力のコンポーネントを追加する。) textArea = new JTextArea(); textArea.getDocument().addDocumentListener(new MyDocumentListener()); //textArea.getDocument().putProperty("name", "Text Area"); this.add(textArea); } public TextFrame(File file) throws IOException { this(file.getName()); this.openFile(file); } void openFile(File file) throws IOException { FileInputStream fiStream = null; ByteArrayOutputStream baoStream = null; try { fiStream = new FileInputStream(file); System.out.print(fiStream); baoStream = new ByteArrayOutputStream(); System.out.print(baoStream); //読み込みデータ格納用配列 byte[] byteData = new byte[1]; int ret = fiStream.read(byteData); //ファイルの最後まで繰り返す。 while (ret != -1) { baoStream.write(byteData); ret = fiStream.read(byteData); } //バイト配列を文字列に変換、重い。 String text = new String(baoStream.toByteArray(), DEFAULT_CHARACTER_CODE); //テキストGUIに読み込んだファイルの内容を設定 textArea.setText(text); //タイトルを開いたファイル名へ変更 this.setTitle(file.getName()); } finally { if (fiStream != null) { fiStream.close(); } if (baoStream != null) { baoStream.close(); } } } public void insertText(){ textArea.insert("send", 0); } public boolean SendPermission(){ return send; } public void changeToFalseSend(){ send = false; } public int returnOffset(){ return sendLoc; } public class MyDocumentListener implements DocumentListener { public void insertUpdate(DocumentEvent e) { if(canWrite == true) { Document doc = e.getDocument(); loc = e.getOffset(); sendLoc = loc; //System.out.println("location = " + loc); try { System.out.print("string = " + doc.getText(loc, 1) + "\n"); } catch (BadLocationException e1){ e1.printStackTrace(); } send = true; /* SwingUtilities.invokeLater(new Runnable() { @Override public void run() { try { canWrite = false; doc.insertString(0, "kakikomi", sc.getStyle(StyleContext.DEFAULT_STYLE)); canWrite = true; //System.out.print("string = " + doc.getText(loc, 1) + "\n"); } catch (BadLocationException e1) { e1.printStackTrace(); } } }); */ } } @Override public void removeUpdate(DocumentEvent e) { Document doc = e.getDocument(); int loc = e.getOffset(); int e_length = e.getLength(); int del_loc_end = loc + e_length - 1; if (e_length == 1) { System.out.println("delete " + loc); } else { System.out.println("delete " + loc + " to " + del_loc_end); } SwingUtilities.invokeLater(new Runnable() { @Override public void run() { try { doc.insertString(0, "kakikomi", sc.getStyle(StyleContext.DEFAULT_STYLE)); //System.out.print("string = " + doc.getText(loc, 1) + "\n"); } catch (BadLocationException e1) { e1.printStackTrace(); } } }); } @Override public void changedUpdate(DocumentEvent e) { } } public static void StartEditor(){ MainFrame mainFrame = MainFrame.getInstance(); mainFrame.setVisible(true); } }