Mercurial > hg > Database > Christie
view src/main/java/christie/textEditor/textFrame.java @ 228:eb786b5d4628
tweak
author | ichikitakahiro <e165713@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 27 Dec 2019 18:18:04 +0900 |
parents | 218ad6b9ba87 |
children | 665d56665b7e |
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 String inserted_string; private int sendLoc = 0; private 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(int pos, String str){ textArea.insert(str, pos); } public boolean SendPermission(){ return send; } public void changeToFalseSend(){ send = false; } public int returnOffset(){ return sendLoc; } public void prohibitDL(){canWrite = false;} public String returnString(){return inserted_string;} public class MyDocumentListener implements DocumentListener { public void insertUpdate(DocumentEvent e) { if(canWrite == true) { Document doc = e.getDocument(); loc = e.getOffset(); sendLoc = loc; try { inserted_string = doc.getText(loc, 1); System.out.println("string = " + doc.getText(loc, 1)); } catch (BadLocationException e1) { e1.printStackTrace(); } send = true; } canWrite = true; } @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.println("string = " + doc.getText(loc, 1)); } catch (BadLocationException e1) { e1.printStackTrace(); } } }); } @Override public void changedUpdate(DocumentEvent e) { } } public static void StartEditor(){ MainFrame mainFrame = MainFrame.getInstance(); mainFrame.setVisible(true); } }