# HG changeset patch # User ichikitakahiro # Date 1580291414 -32400 # Node ID 1ac366f96815667f6926815811cf1a5d392a4135 # Parent 345de1b14ea55b8145676f6e279f29200dcc0c80 remake for CommandPattern diff -r 345de1b14ea5 -r 1ac366f96815 src/main/java/christie/protoRemotingTextEditor/GetOpponentMessage.java --- a/src/main/java/christie/protoRemotingTextEditor/GetOpponentMessage.java Tue Jan 28 20:53:45 2020 +0900 +++ b/src/main/java/christie/protoRemotingTextEditor/GetOpponentMessage.java Wed Jan 29 18:50:14 2020 +0900 @@ -25,7 +25,7 @@ @Override protected void run(CodeGearManager cgm) { System.out.println( topoDG.getNodeName() + "get Message"); - myEditor.prohibitDL(); + myEditor.protectToExcessiveInsert(); // myEditor.insertMessage(offset, string); cgm.setup(new GetOpponentMessage()); } diff -r 345de1b14ea5 -r 1ac366f96815 src/main/java/christie/remoteTextEditor/CheckCommand.java --- a/src/main/java/christie/remoteTextEditor/CheckCommand.java Tue Jan 28 20:53:45 2020 +0900 +++ b/src/main/java/christie/remoteTextEditor/CheckCommand.java Wed Jan 29 18:50:14 2020 +0900 @@ -4,7 +4,6 @@ import christie.codegear.CodeGear; import christie.codegear.CodeGearManager; import christie.textEditor.NewTextEditor; -import christie.topology.Message; import christie.topology.TopologyDataGear; public class CheckCommand extends CodeGear { @@ -14,20 +13,26 @@ @Peek NewTextEditor myEditor; + int sendOffset; + String sendString; + int endOffset; + @Override protected void run(CodeGearManager cgm) { if(myEditor.checkPermission() == true) { - int sendOffset; - String sendString; sendOffset = myEditor.returnOffset(); sendString = myEditor.returnString(); - Insert ins = new Insert(sendOffset, sendString); + Command cmd = new Command(sendOffset, sendString, topoDG.getNodeName()); myEditor.changeToFalseSendPermmision(); - cgm.getDGM("partner").put("cmd" , ins); + cgm.getDGM("partner").put("cmd" , cmd); System.out.println(topoDG.getNodeName() + " :catch,offset = " + myEditor.returnOffset()); - - -// get,setの単語は紛らわしいのでよくない。 + }else if(myEditor.deleteFrag() == true ){ + myEditor.changeToFalseDeleteFrag(); + sendOffset = myEditor.returnOffset(); + endOffset = myEditor.returnEndOffset(); + Command cmd = new Command(sendOffset, endOffset, topoDG.getNodeName()); + cgm.getDGM("partner").put("cmd" , cmd); + System.out.println("debug"); } cgm.setup(new CheckCommand()); } diff -r 345de1b14ea5 -r 1ac366f96815 src/main/java/christie/remoteTextEditor/Command.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/christie/remoteTextEditor/Command.java Wed Jan 29 18:50:14 2020 +0900 @@ -0,0 +1,31 @@ +package christie.remoteTextEditor; + +import christie.textEditor.NewTextEditor; + +import org.msgpack.annotation.Message; + +@Message +class Command { + public String string; + public int fastOffset; + public int endOffset; + public String nodename; + public boolean isDeleteCommand = false; + + public Command() {} + + +// delete用 + public Command(int fastOffset, int endOffset, String nodeName){ + this.fastOffset = fastOffset; + this.endOffset = endOffset; + this.nodename = nodeName; + this.isDeleteCommand = true; + } + + public Command(int fastOffset, String string, String nodename) { + this.string = string; + this.fastOffset = fastOffset; + this.nodename = nodename; + } +} diff -r 345de1b14ea5 -r 1ac366f96815 src/main/java/christie/remoteTextEditor/Insert.java --- a/src/main/java/christie/remoteTextEditor/Insert.java Tue Jan 28 20:53:45 2020 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,21 +0,0 @@ -package christie.remoteTextEditor; - -import christie.textEditor.NewTextEditor; - -import org.msgpack.annotation.Message; - -@Message -class Insert { - public String string; - public int fastOffset; -// int endOffset; - public Insert () {} - - public Insert (int fastOffset, String string) { - this.string = string; - this.fastOffset = fastOffset; - } - - - -} diff -r 345de1b14ea5 -r 1ac366f96815 src/main/java/christie/remoteTextEditor/receiveCommand.java --- a/src/main/java/christie/remoteTextEditor/receiveCommand.java Tue Jan 28 20:53:45 2020 +0900 +++ b/src/main/java/christie/remoteTextEditor/receiveCommand.java Wed Jan 29 18:50:14 2020 +0900 @@ -5,19 +5,31 @@ import christie.codegear.CodeGear; import christie.codegear.CodeGearManager; import christie.textEditor.NewTextEditor; -import christie.topology.Message; public class receiveCommand extends CodeGear { @Take - Insert cmd; + Command cmd; @Peek NewTextEditor myEditor; @Override protected void run(CodeGearManager cgm) { -// cmd.execute(myEditor); - System.out.println("this is " + cmd); + if (cmd.isDeleteCommand == false) { + myEditor.protectToExcessiveInsert(); + myEditor.insertMessage(cmd.fastOffset, cmd.string); + }else if (cmd.isDeleteCommand == true){ + myEditor.protectToExcessiveInsert(); + System.out.println(cmd.fastOffset + "/" + cmd.endOffset); + if (cmd.fastOffset > cmd.endOffset) { + myEditor.delete(cmd.endOffset, cmd.fastOffset); + } else if(cmd.fastOffset < cmd.endOffset){ + myEditor.delete(cmd.fastOffset ,cmd.endOffset); + } else if (cmd.fastOffset == cmd.endOffset){ + myEditor.delete(cmd.fastOffset ,cmd.endOffset); + } + System.out.println("削除"); + } cgm.setup(new receiveCommand()); } -} +} \ No newline at end of file diff -r 345de1b14ea5 -r 1ac366f96815 src/main/java/christie/textEditor/NewTextEditor.java --- a/src/main/java/christie/textEditor/NewTextEditor.java Tue Jan 28 20:53:45 2020 +0900 +++ b/src/main/java/christie/textEditor/NewTextEditor.java Wed Jan 29 18:50:14 2020 +0900 @@ -30,7 +30,15 @@ public String returnString(){return textFrame.returnString();} - public void prohibitDL(){textFrame.prohibitDL();} + public int returnEndOffset() {return textFrame.returnEndOffset();} + + public void protectToExcessiveInsert(){textFrame.protectToExcessiveInsert();} + + public boolean deleteFrag() {return textFrame.deleteFrag();} + + public void delete(int pos, int ePos){textFrame.delete(pos, ePos);} + + public void changeToFalseDeleteFrag(){textFrame.changeToFalseDeleteFrag();}; public void changeToFalseSendPermmision(){ textFrame.changeToFalseSend(); diff -r 345de1b14ea5 -r 1ac366f96815 src/main/java/christie/textEditor/TextFrame.java --- a/src/main/java/christie/textEditor/TextFrame.java Tue Jan 28 20:53:45 2020 +0900 +++ b/src/main/java/christie/textEditor/TextFrame.java Wed Jan 29 18:50:14 2020 +0900 @@ -26,8 +26,13 @@ private int sendLoc = 0; + private int endLoc = 0; + private boolean canWrite = true; + private boolean dFrag = false; +// 文字列削除でtrue,されなければfalse + StyleContext sc = new StyleContext(); public TextFrame() { @@ -98,21 +103,33 @@ send = false; } + public void protectToExcessiveInsert(){canWrite = false;} + + public boolean deleteFrag(){return dFrag;} + + public void changeToFalseDeleteFrag(){dFrag = false;}; + public int returnOffset(){ return sendLoc; } - public void prohibitDL(){canWrite = false;} - public String returnString(){return inserted_string;} + public int returnEndOffset(){return endLoc;} + + public void delete(int pos, int ePos) { + if (pos == ePos) { + textArea.replaceRange("", pos, pos + 1); + } else { + textArea.replaceRange("", pos, pos + 1); + } + } 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)); @@ -127,16 +144,19 @@ @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); + if(canWrite == true) { + Document doc = e.getDocument(); + sendLoc = e.getOffset(); + int e_length = e.getLength(); + endLoc = sendLoc + e_length; + if (e_length == 1) { + System.out.println("delete " + sendLoc); + } else { + System.out.println("delete " + sendLoc + " to " + endLoc); + } + dFrag = true; } - + canWrite = true; } @Override