I would say this week has been fairly effective. Talking after the meeting with Kevin definitely helped a lot. He explained some of the intricacies of double dispatch and the visitor pattern that I had not full come to understand yet. For the most part, the idea is basically that double dispatch ensures the correct visit/accept method is called for the parameter type. This is helpful because depending on the crawler and the element being crawled, the action that we want to take could be completely different.
Keeping that in mind and using the existing crawlers written by Dennis and others in the lab, I created three fairly generic crawlers to set things to either being USER, COPIED, COPIEDREMIX, or REMIXED. COPIEDREMIX just ensures that if someone drags things into the clipboard, it won’t rewrite it as COPIED, removing any attached data.
I have found the correct spots to change things to COPIED/COPIEDREMIX. Whenever the nodes are taken out of the clipboard (It’s held in a queue, so popped), the nodes will all be labeled with COPIED/COPIED REMIX. Looking into croquet, I think I found the correct location for changing the origin property to USER as well. I just have some questions about how far back to go in the inheritance so that it doesn’t change at inappropriate times. I also need to be sure that it affects all types of insertions, which means that overrides in the inheriting classes need to be examined. After that is done, I’m going to start looking for the remix location, so where the remix is actually taken out of the other world. Hopefully at that location, I can also find out where to add the remixed information of what user/world it came from, etc. Things are progressing a little slowly, but I feel I’m learning a great deal about concepts that I haven’t covered in classes yet, which I am enjoying very much!