changeset 267:1ac366f96815

remake for CommandPattern
author ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
date Wed, 29 Jan 2020 18:50:14 +0900
parents 345de1b14ea5
children 1f42a0903440
files src/main/java/christie/protoRemotingTextEditor/GetOpponentMessage.java src/main/java/christie/remoteTextEditor/CheckCommand.java src/main/java/christie/remoteTextEditor/Command.java src/main/java/christie/remoteTextEditor/Insert.java src/main/java/christie/remoteTextEditor/receiveCommand.java src/main/java/christie/textEditor/NewTextEditor.java src/main/java/christie/textEditor/TextFrame.java
diffstat 7 files changed, 103 insertions(+), 48 deletions(-) [+]
line wrap: on
line diff
--- 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());
     }
--- 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());
     }
--- /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;
+    }
+}
--- 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;
-    }
-
-
-
-}
--- 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
--- 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();
--- 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