diff --git a/src/main/java/me/mrletsplay/shareclient/ShareClient.java b/src/main/java/me/mrletsplay/shareclient/ShareClient.java index b86557d..7e34bf4 100644 --- a/src/main/java/me/mrletsplay/shareclient/ShareClient.java +++ b/src/main/java/me/mrletsplay/shareclient/ShareClient.java @@ -393,6 +393,12 @@ public class ShareClient extends AbstractUIPlugin implements MessageListener, Di return partListener; } + public static void assertOnUIThread() { + if(!Thread.currentThread().equals(Display.getDefault().getThread())) { + MessageDialog.openError(null, "Assertion failed", "Not on UI thread"); + } + } + @Override public void earlyStartup() { } diff --git a/src/main/java/me/mrletsplay/shareclient/util/ShareSession.java b/src/main/java/me/mrletsplay/shareclient/util/ShareSession.java index e2b15db..fc0bcb1 100644 --- a/src/main/java/me/mrletsplay/shareclient/util/ShareSession.java +++ b/src/main/java/me/mrletsplay/shareclient/util/ShareSession.java @@ -89,7 +89,8 @@ public class ShareSession { @Override public void onInsert(int index, byte character) { - // TODO: assert that we are on the UI thread + ShareClient.assertOnUIThread(); + ShareClientDocumentListener documentListener = ShareClient.getDefault().getPartListener().getListener(path); if(documentListener != null) { IDocument document = documentListener.getDocument(); @@ -108,7 +109,8 @@ public class ShareSession { @Override public void onDelete(int index) { - // TODO: assert that we are on the UI thread + ShareClient.assertOnUIThread(); + ShareClientDocumentListener documentListener = ShareClient.getDefault().getPartListener().getListener(path); if(documentListener != null) { IDocument document = documentListener.getDocument(); 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 8e1d89f..ab18f10 100644 --- a/src/main/java/me/mrletsplay/shareclient/util/listeners/ShareClientDocumentListener.java +++ b/src/main/java/me/mrletsplay/shareclient/util/listeners/ShareClientDocumentListener.java @@ -35,6 +35,8 @@ public class ShareClientDocumentListener implements IDocumentListener { @Override public void documentAboutToBeChanged(DocumentEvent event) { + ShareClient.assertOnUIThread(); + if(ignoreChanges) return; System.out.println("UPDATE ON THREAD " + Thread.currentThread()); diff --git a/src/main/java/me/mrletsplay/shareclient/views/ShareView.java b/src/main/java/me/mrletsplay/shareclient/views/ShareView.java index 73e2544..e30aafe 100644 --- a/src/main/java/me/mrletsplay/shareclient/views/ShareView.java +++ b/src/main/java/me/mrletsplay/shareclient/views/ShareView.java @@ -178,6 +178,11 @@ public class ShareView extends ViewPart { sb.append("--- Document: ").append(path).append('\n'); sb.append(document.getContentsAsString()); + sb.append('\n'); + + for(int i = 0; i < document.getCharBag().size(); i++) { + sb.append(document.getCharBag().get(i)).append('\n'); + } sb.append('\n'); sb.append('\n');