diff --git a/eclipse2.target b/eclipse2.target
new file mode 100644
index 0000000..936fa8d
--- /dev/null
+++ b/eclipse2.target
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ me.mrletsplay
+ ShareLib
+ 1.0-SNAPSHOT
+ jar
+
+
+ org.java-websocket
+ Java-WebSocket
+ 1.5.6
+ jar
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/me/mrletsplay/shareclient/ShareClient.java b/src/main/java/me/mrletsplay/shareclient/ShareClient.java
index 7e34bf4..fac263a 100644
--- a/src/main/java/me/mrletsplay/shareclient/ShareClient.java
+++ b/src/main/java/me/mrletsplay/shareclient/ShareClient.java
@@ -173,7 +173,6 @@ public class ShareClient extends AbstractUIPlugin implements MessageListener, Di
@Override
public void onMessage(Message message) {
Display.getDefault().asyncExec(() -> {
- System.out.println("Got: " + message);
if (message instanceof PeerJoinMessage join) {
activeSession.getPeers().add(new Peer(join.peerName(), join.peerSiteID()));
updateView();
diff --git a/src/main/java/me/mrletsplay/shareclient/util/listeners/ShareClientDocumentListener.java b/src/main/java/me/mrletsplay/shareclient/util/listeners/ShareClientDocumentListener.java
index ab18f10..f8ddd56 100644
--- a/src/main/java/me/mrletsplay/shareclient/util/listeners/ShareClientDocumentListener.java
+++ b/src/main/java/me/mrletsplay/shareclient/util/listeners/ShareClientDocumentListener.java
@@ -39,10 +39,6 @@ public class ShareClientDocumentListener implements IDocumentListener {
if(ignoreChanges) return;
- System.out.println("UPDATE ON THREAD " + Thread.currentThread());
-
- // FIXME: bug somewhere here, can cause discrepancies in local editor when editing while changes are coming in
-
ShareSession session = ShareClient.getDefault().getActiveSession();
if(session == null) return;
diff --git a/src/main/java/me/mrletsplay/shareclient/util/listeners/ShareClientPartListener.java b/src/main/java/me/mrletsplay/shareclient/util/listeners/ShareClientPartListener.java
index c77b4a1..ad47cb0 100644
--- a/src/main/java/me/mrletsplay/shareclient/util/listeners/ShareClientPartListener.java
+++ b/src/main/java/me/mrletsplay/shareclient/util/listeners/ShareClientPartListener.java
@@ -8,7 +8,6 @@ import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.jface.text.IDocument;
import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IPartListener2;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.IWorkbenchPartReference;
@@ -34,11 +33,9 @@ public class ShareClientPartListener implements IPartListener2 {
public void addDocumentListener(IWorkbenchPartReference partRef) {
IWorkbenchPart part = partRef.getPart(false);
- if(!(part instanceof IEditorPart)) return;
- IEditorPart editor = (IEditorPart) part;
- if(!(editor instanceof ITextEditor)) return;
- ITextEditor textEditor = (ITextEditor) editor;
- IEditorInput editorInput = editor.getEditorInput();
+ if(!(part instanceof ITextEditor)) return;
+ ITextEditor textEditor = (ITextEditor) part;
+ IEditorInput editorInput = textEditor.getEditorInput();
if(!(editorInput instanceof FileEditorInput)) return;
FileEditorInput fileEditorInput = (FileEditorInput) editorInput;
IDocument document = textEditor.getDocumentProvider().getDocument(editorInput);
@@ -47,10 +44,31 @@ public class ShareClientPartListener implements IPartListener2 {
IProject project = file.getProject();
Path filePath = project.getLocation().toPath().relativize(file.getLocation().toPath());
- // FIXME: this should probably just store an IProject with a relative path
ProjectAndPath relPath = new ProjectAndPath(project, filePath.toString());
- System.out.println("Opened editor: " + relPath);
document.addDocumentListener(createListener(relPath, document));
+ System.out.println("Opened editor: " + relPath);
+ }
+
+ private void removeDocumentListener(IWorkbenchPartReference partRef) {
+ IWorkbenchPart part = partRef.getPart(false);
+ if(!(part instanceof ITextEditor)) return;
+ ITextEditor textEditor = (ITextEditor) part;
+ IEditorInput editorInput = textEditor.getEditorInput();
+ if(!(editorInput instanceof FileEditorInput)) return;
+ FileEditorInput fileEditorInput = (FileEditorInput) editorInput;
+ IDocument document = textEditor.getDocumentProvider().getDocument(editorInput);
+
+ IFile file = fileEditorInput.getFile();
+ IProject project = file.getProject();
+
+ Path filePath = project.getLocation().toPath().relativize(file.getLocation().toPath());
+ ProjectAndPath relPath = new ProjectAndPath(project, filePath.toString());
+ ShareClientDocumentListener listener = getListener(relPath);
+ if(listener == null) return;
+
+ document.removeDocumentListener(listener);
+ listeners.remove(relPath);
+ System.out.println("Closed editor: " + relPath);
}
@Override
@@ -63,10 +81,19 @@ public class ShareClientPartListener implements IPartListener2 {
addDocumentListener(partRef);
}
+ @Override
+ public void partClosed(IWorkbenchPartReference partRef) {
+ removeDocumentListener(partRef);
+ }
+
public Map getListeners() {
return listeners;
}
+ public ShareClientDocumentListener getListener(ProjectAndPath path) {
+ return listeners.get(path);
+ }
+
public ShareClientDocumentListener getListener(ProjectRelativePath path) {
ShareSession session = ShareClient.getDefault().getActiveSession();
if(session == null) return null;
diff --git a/src/main/java/me/mrletsplay/shareclient/views/ShareView.java b/src/main/java/me/mrletsplay/shareclient/views/ShareView.java
index b4f346a..3d11161 100644
--- a/src/main/java/me/mrletsplay/shareclient/views/ShareView.java
+++ b/src/main/java/me/mrletsplay/shareclient/views/ShareView.java
@@ -66,7 +66,6 @@ public class ShareView extends ViewPart {
@Override
public void init(IViewSite site) throws PartInitException {
super.init(site);
- System.out.println(ShareClient.getDefault());
ShareClient.getDefault().setView(this);
}