KWARC / Sally

Semantic Ally
2 stars 4 forks source link

TheoFX Thread Exceptions #20

Open jukowski opened 10 years ago

jukowski commented 10 years ago

After doing definition lookup and then trying to update the position/url of the window I get:

Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: Not on FX application thread; currentThread = AWT-EventQueue-0
    at com.sun.javafx.tk.Toolkit.checkFxUserThread(Toolkit.java:237)
    at com.sun.javafx.tk.quantum.QuantumToolkit.checkFxUserThread(QuantumToolkit.java:398)
    at javafx.scene.web.WebEngine.checkThread(WebEngine.java:931)
    at javafx.scene.web.WebEngine.load(WebEngine.java:723)
    at info.kwarc.sally.theofx.ui.TheoWindow$3.run(TheoWindow.java:305)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:694)
    at java.awt.EventQueue$3.run(EventQueue.java:692)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

Looks like TheoFX does not like when the Thread creating a window is not the same as the one updating it. When using complex workflows, I can never warranty that the same thread creating a window will be used. We need to have a solution for this.

jukowski commented 10 years ago

Here is a source code for reproducing the bug.

package info.kwarc.sally;

import info.kwarc.sally.core.SallyInteraction;
import info.kwarc.sally.injection.Configuration;
import info.kwarc.sally.networking.Injection.ProductionNetworking;
import info.kwarc.sally.networking.interfaces.IConnectionManager;
import info.kwarc.sally.networking.interfaces.MockNetworkSender;
import info.kwarc.sally.planetary.Planetary;
import info.kwarc.sally.service.def_lookup.DefinitionLookupService;
import info.kwarc.sissi.bpm.injection.ProductionLocalKnowledgeBase;
import info.kwarc.sissi.bpm.injection.ProductionSallyActions;
import sally.AlexClick;
import sally.AlexData;
import sally.RangeSelection;
import sally.SallyFrame;
import sally.ScreenCoordinates;
import sally_comm.MessageUtils;

import com.google.inject.Guice;
import com.google.inject.Injector;

/**
 * This is a sample file to launch a process.
 */
public class TheoFXBug {

    public static final void main(String[] args) throws Exception {
        Injector i = Guice.createInjector(
                new Configuration(),
                new ProductionLocalKnowledgeBase(), 
                new ProductionSallyActions(),
                new ProductionNetworking()
        );

        SallyInteraction interaction = i.getInstance(SallyInteraction.class);
        interaction.registerServices(i.getInstance(Planetary.class));
        interaction.registerServices(i.getInstance(DefinitionLookupService.class));     
        IConnectionManager conn = i.getInstance(IConnectionManager.class);

        conn.newClient("spread", new MockNetworkSender());

        conn.newMessage("spread", MessageUtils.createDesktopSpreadsheetAlex());

        AlexData alexData = AlexData.newBuilder().setFileName("file://pipe-end.xls").setData("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d2FyYy5pbmZvL3JlcG9zL3N0Yy9mY2FkL2ZsYW5nZS9jZHMvSVNPaGV4bnV0Lm9tZG9jP0lTT2hleG51dD9JU08taGV4LW51dCBmKhQKEgoIVmVuZG9yIEEQEBgCIAEoASoUChIKCFZlbmRvciBBEBEYAiABKAEqFAoSCghWZW5kb3IgQRASGAIgASgBMg0IABACGAAgACoDeCx5Er0BCAwQABpkaHR0cHM6Ly90bnQua3dhcmMuaW5mby9yZXBvcy9zdGMvZmNhZC9mbGFuZ2UvY2RzL0lTT21ldHJpY3RocmVhZC5vbWRvYz9JU09tZXRyaWN0aHJlYWQ/c0lTT2hleHRocmVhZCBpKhQKEgoIVmVuZG9yIEEQEBgDIAEoASoUChIKCFZlbmRvciBBEBEYAyABKAEqFAoSCghWZW5kb3IgQRASGAMgASgBMg0IABACGAAgACoDeCx5EqIBCA0QABpJaHR0cHM6Ly90bnQua3dhcmMuaW5mby9yZXBvcy9zdGMvZmNhZC9mbGFuZ2UvY2RzL2NvbG9ycy5vbWRvYz9jb2xvcj9jb2xvciBsKhQKEgoIVmVuZG9yIEEQEBgEIAEoASoUChIKCFZlbmRvciBBEBEYBCABKAEqFAoSCghWZW5kb3IgQRASGAQgASgBMg0IABACGAAgACoDeCx5Ep4BCA4QABpFaHR0cHM6Ly90bnQua3dhcmMuaW5mby9yZXBvcy9zdGMvZmNhZC9mbGFuZ2UvY2RzL2Nvc3Qub21kb2M/Y29zdD9jb3N0IG8qFAoSCghWZW5kb3IgQRAQGAcgASgBKhQKEgoIVmVuZG9yIEEQERgHIAEoASoUChIKCFZlbmRvciBBEBIYByABKAEyDQgAEAIYACAAKgN4LHkSmwEIDxAAGlhodHRwczovL3RudC5rd2FyYy5pbmZvL3JlcG9zL3N0Yy9mY2FkL2ZsYW5nZS9jZHMvcGFydG51bWJlci5vbWRvYz9wYXJ0bnVtYmVyP3BhcnQtbnVtYmVyIHIqFAoSCghWZW5kb3IgQRAQGAEgASgBKhQKEgoIVmVuZG9yIEEQERgBIAEoATINCAAQARgAIAAqA3gseRKrAQgREAAaaGh0dHBzOi8vdG50Lmt3YXJjLmluZm8vcmVwb3Mvc3RjL2ZjYWQvZmxhbmdlL2Nkcy9mbGFuZ2UtYm9sdC1nYXNrZXQub21kb2M/ZmxhbmdlLWJvbHQtZ2Fza2V0P2dhc2tldC10eXBlIHcqFAoSCghWZW5kb3IgQRASGAYgASgBKhQKEgoIVmVuZG9yIEEQExgGIAEoATINCAAQARgAIAAqA3gseRKtAQgQEAAaamh0dHBzOi8vdG50Lmt3YXJjLmluZm8vcmVwb3Mvc3RjL2ZjYWQvZmxhbmdlL2Nkcy9mbGFuZ2UtYm9sdC1nYXNrZXQub21kb2M/ZmxhbmdlLWJvbHQtZ2Fza2V0P2ZsYW5nZS1nYXNrZXQgdCoUChIKCFZlbmRvciBBEBIYAiABKAEqFAoSCghWZW5kb3IgQRATGAIgASgBMg0IABABGAAgACoDeCx5EoUBCBMQABpYaHR0cHM6Ly90bnQua3dhcmMuaW5mby9yZXBvcy9zdGMvZmNhZC9mbGFuZ2UvY2RzL3BhcnRudW1iZXIub21kb2M/cGFydG51bWJlcj9wYXJ0LW51bWJlciB7KhQKEgoIVmVuZG9yIEEQEhgBIAEoATINCAAQABgAIAAqA3gseRKIAQgSEAAaRWh0dHBzOi8vdG50Lmt3YXJjLmluZm8vcmVwb3Mvc3RjL2ZjYWQvZmxhbmdlL2Nkcy9jb3N0Lm9tZG9jP2Nvc3Q/Y29zdCB5KhQKEgoIVmVuZG9yIEEQEhgHIAEoASoUChIKCFZlbmRvciBBEBMYByABKAEyDQgAEAEYACAAKgN4LHkS1AEIFRAAGmRodHRwczovL3RudC5rd2FyYy5pbmZvL3JlcG9zL3N0Yy9mY2FkL2ZsYW5nZS9jZHMvSVNPbWV0cmljdGhyZWFkLm9tZG9jP0lTT21ldHJpY3RocmVhZD9zSVNPaGV4dGhyZWFkIIQBKhQKEgoIVmVuZG9yIEEQExgDIAEoASoUChIKCFZlbmRvciBBEBQYAyABKAEqFAoSCghWZW5kb3IgQRAVGAMgASgBKhQKEgoIVmVuZG9yIEEQFhgDIAEoATINCAAQAxgAIAAqA3gseRLSAQgUEAAaY2h0dHBzOi8vdG50Lmt3YXJjLmluZm8vcmVwb3Mvc3RjL2ZjYWQvZmxhbmdlL2Nkcy9mbGFuZ2UtYm9sdC1nYXNrZXQub21kb2M/ZmxhbmdlLWJvbHQtZ2Fza2V0P2ZsYW5nZSB/KhQKEgoIVmVuZG9yIEEQExgCIAEoASoUChIKCFZlbmRvciBBEBQYAiABKAEqFAoSCghWZW5kb3IgQRAVGAIgASgBKhQKEgoIVmVuZG9yIEEQFhgCIAEoATINCAAQAxgAIAAqA3gseRK1AQgXEAAaRWh0dHBzOi8vdG50Lmt3YXJjLmluZm8vcmVwb3Mvc3RjL2ZjYWQvZmxhbmdlL2Nkcy9jb3N0Lm9tZG9jP2Nvc3Q/Y29zdCCNASoUChIKCFZlbmRvciBBEBMYByABKAEqFAoSCghWZW5kb3IgQRAUGAcgASgBKhQKEgoIVmVuZG9yIEEQFRgHIAEoASoUChIKCFZlbmRvciBBEBYYByABKAEyDQgAEAMYACAAKgN4LHkSuQEIFhAAGklodHRwczovL3RudC5rd2FyYy5pbmZvL3JlcG9zL3N0Yy9mY2FkL2ZsYW5nZS9jZHMvY29sb3JzLm9tZG9jP2NvbG9yP2NvbG9yIIkBKhQKEgoIVmVuZG9yIEEQExgEIAEoASoUChIKCFZlbmRvciBBEBQYBCABKAEqFAoSCghWZW5kb3IgQRAVGAQgASgBKhQKEgoIVmVuZG9yIEEQFhgEIAEoATINCAAQAxgAIAAqA3gseRLZAQgZEAAaaWh0dHBzOi8vdG50Lmt3YXJjLmluZm8vcmVwb3Mvc3RjL2ZjYWQvZmxhbmdlL2Nkcy9mbGFuZ2UtYm9sdC1nYXNrZXQub21kb2M/ZmxhbmdlLWJvbHQtZ2Fza2V0P2JsaW5kLWZsYW5nZSCVASoUChIKCFZlbmRvciBBEBYYAiABKAEqFAoSCghWZW5kb3IgQRAXGAIgASgBKhQKEgoIVmVuZG9yIEEQGBgCIAEoASoUChIKCFZlbmRvciBBEBkYAiABKAEyDQgAEAMYACAAKgN4LHkSsgEIGBAAGlhodHRwczovL3RudC5rd2FyYy5pbmZvL3JlcG9zL3N0Yy9mY2FkL2ZsYW5nZS9jZHMvcGFydG51bWJlci5vbWRvYz9wYXJ0bnVtYmVyP3BhcnQtbnVtYmVyIJEBKhQKEgoIVmVuZG9yIEEQExgBIAEoASoUChIKCFZlbmRvciBBEBQYASABKAEqFAoSCghWZW5kb3IgQRAVGAEgASgBMg0IABACGAAgACoDeCx5ErkBCBsQABpJaHR0cHM6Ly90bnQua3dhcmMuaW5mby9yZXBvcy9zdGMvZmNhZC9mbGFuZ2UvY2RzL2NvbG9ycy5vbWRvYz9jb2xvcj9jb2xvciCdASoUChIKCFZlbmRvciBBEBYYBCABKAEqFAoSCghWZW5kb3IgQRAXGAQgASgBKhQKEgoIVmVuZG9yIEEQGBgEIAEoASoUChIKCFZlbmRvciBBEBkYBCABKAEyDQgAEAMYACAAKgN4LHkS1AEIGhAAGmRodHRwczovL3RudC5rd2FyYy5pbmZvL3JlcG9zL3N0Yy9mY2FkL2ZsYW5nZS9jZHMvSVNPbWV0cmljdGhyZWFkLm9tZG9jP0lTT21ldHJpY3RocmVhZD9zSVNPaGV4dGhyZWFkIJkBKhQKEgoIVmVuZG9yIEEQFhgDIAEoASoUChIKCFZlbmRvciBBEBcYAyABKAEqFAoSCghWZW5kb3IgQRAYGAMgASgBKhQKEgoIVmVuZG9yIEEQGRgDIAEoATINCAAQAxgAIAAqA3gseRKyAQgdEAAaWGh0dHBzOi8vdG50Lmt3YXJjLmluZm8vcmVwb3Mvc3RjL2ZjYWQvZmxhbmdlL2Nkcy9wYXJ0bnVtYmVyLm9tZG9jP3BhcnRudW1iZXI/cGFydC1udW1iZXIgpQEqFAoSCghWZW5kb3IgQRAWGAEgASgBKhQKEgoIVmVuZG9yIEEQFxgBIAEoASoUChIKCFZlbmRvciBBEBgYASABKAEyDQgAEAIYACAAKgN4LHkStQEIHBAAGkVodHRwczovL3RudC5rd2FyYy5pbmZvL3JlcG9zL3N0Yy9mY2FkL2ZsYW5nZS9jZHMvY29zdC5vbWRvYz9jb3N0P2Nvc3QgoQEqFAoSCghWZW5kb3IgQRAWGAcgASgBKhQKEgoIVmVuZG9yIEEQFxgHIAEoASoUChIKCFZlbmRvciBBEBgYByABKAEqFAoSCghWZW5kb3IgQRAZGAcgASgBMg0IABADGAAgACoDeCx5EtkBCB8QABpTaHR0cDovL3RudC5rd2FyYy5pbmZvL3JlcG9zL3N0Yy9zaXNzaS9mbGFuZ2UvY2RzL3ByaWNlLm9tZG9jP3ByaWNlP21pbmltdW0tcHVyY2hhc2UgtQEqFAoSCghWZW5kb3IgQhAEGAEgASgBKhQKEgoIVmVuZG9yIEIQBBgCIAEoASoUChIKCFZlbmRvciBCEAQYAyABKAEqFAoSCghWZW5kb3Ig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EgoIVmVuZG9yIEIQEBgDIAEoASoUChIKCFZlbmRvciBCEBEYAyABKAEqFAoSCghWZW5kb3IgQhASGAMgASgBKhQKEgoIVmVuZG9yIEIQExgDIAEoASoUChIKCFZlbmRvciBCEBQYAyABKAEyDQgAEAQYACAAKgN4LHkSrAEILhAAGmhodHRwczovL3RudC5rd2FyYy5pbmZvL3JlcG9zL3N0Yy9mY2FkL2ZsYW5nZS9jZHMvZmxhbmdlLWJvbHQtZ2Fza2V0Lm9tZG9jP2ZsYW5nZS1ib2x0LWdhc2tldD9nYXNrZXQtdHlwZSCmAioUChIKCFZlbmRvciBCEBQYBiABKAEqFAoSCghWZW5kb3IgQhAVGAYgASgBMg0IABABGAAgACoDeCx5EokBCC8QABpFaHR0cHM6Ly90bnQua3dhcmMuaW5mby9yZXBvcy9zdGMvZmNhZC9mbGFuZ2UvY2RzL2Nvc3Qub21kb2M/Y29zdD9jb3N0IKgCKhQKEgoIVmVuZG9yIEIQFBgHIAEoASoUChIKCFZlbmRvciBCEBUYByABKAEyDQgAEAEYACAAKgN4LHkSyAEILBAAGlhodHRwczovL3RudC5rd2FyYy5pbmZvL3JlcG9zL3N0Yy9mY2FkL2ZsYW5nZS9jZHMvcGFydG51bWJlci5vbWRvYz9wYXJ0bnVtYmVyP3BhcnQtbnVtYmVyIKECKhQKEgoIVmVuZG9yIEIQEBgBIAEoASoUChIKCFZlbmRvciBCEBEYASABKAEqFAoSCghWZW5kb3IgQhASGAEgASgBKhQKEgoIVmVuZG9yIEIQExgBIAEoATINCAAQAxgAIAAqA3gseRKuAQgtEAAaamh0dHBzOi8vdG50Lmt3YXJjLmluZm8vcmVwb3Mvc3RjL2ZjYWQvZmxhbmdlL2Nkcy9mbGFuZ2UtYm9sdC1nYXNrZXQub21kb2M/ZmxhbmdlLWJvbHQtZ2Fza2V0P2ZsYW5nZS1nYXNrZXQgowIqFAoSCghWZW5kb3IgQhAUGAIgASgBKhQKEgoIVmVuZG9yIEIQFRgCIAEoATINCAAQARgAIAAqA3gseRKjAQgzEAAaSWh0dHBzOi8vdG50Lmt3YXJjLmluZm8vcmVwb3Mvc3RjL2ZjYWQvZmxhbmdlL2Nkcy9jb2xvcnMub21kb2M/Y29sb3I/Y29sb3IgtQIqFAoSCghWZW5kb3IgQhAVGAQgASgBKhQKEgoIVmVuZG9yIEIQFhgEIAEoASoUChIKCFZlbmRvciBCEBcYBCABKAEyDQgAEAIYACAAKgN4LHkSvgEIMhAAGmRodHRwczovL3RudC5rd2FyYy5pbmZvL3JlcG9zL3N0Yy9mY2FkL2ZsYW5nZS9jZHMvSVNPbWV0cmljdGhyZWFkLm9tZG9jP0lTT21ldHJpY3RocmVhZD9zSVNPaGV4dGhyZWFkILECKhQKEgoIVmVuZG9yIEIQFRgDIAEoASoUChIKCFZlbmRvciBCEBYYAyABKAEqFAoSCghWZW5kb3IgQhAXGAMgASgBMg0IABACGAAgACoDeCx5Er0BCDEQABpjaHR0cHM6Ly90bnQua3dhcmMuaW5mby9yZXBvcy9zdGMvZmNhZC9mbGFuZ2UvY2RzL2ZsYW5nZS1ib2x0LWdhc2tldC5vbWRvYz9mbGFuZ2UtYm9sdC1nYXNrZXQ/ZmxhbmdlIK0CKhQKEgoIVmVuZG9yIEIQFRgCIAEoASoUChIKCFZlbmRvciBCEBYYAiABKAEqFAoSCghWZW5kb3IgQhAXGAIgASgBMg0IABACGAAgACoDeCx5EoYBCDAQABpYaHR0cHM6Ly90bnQua3dhcmMuaW5mby9yZXBvcy9zdGMvZmNhZC9mbGFuZ2UvY2RzL3BhcnRudW1iZXIub21kb2M/cGFydG51bWJlcj9wYXJ0LW51bWJlciCqAioUChIKCFZlbmRvciBCEBQYASABKAEyDQgAEAAYACAAKgN4LHkSvgEINxAAGmRodHRwczovL3RudC5rd2FyYy5pbmZvL3JlcG9zL3N0Yy9mY2FkL2ZsYW5nZS9jZHMvSVNPbWV0cmljdGhyZWFkLm9tZG9jP0lTT21ldHJpY3RocmVhZD9zSVNPaGV4dGhyZWFkIMECKhQKEgoIVmVuZG9yIEIQFxgDIAEoASoUChIKCFZlbmRvciBCEBgYAyABKAEqFAoSCghWZW5kb3IgQhAZGAMgASgBMg0IABACGAAgACoDeCx5EsMBCDYQABppaHR0cHM6Ly90bnQua3dhcmMuaW5mby9yZXBvcy9zdGMvZmNhZC9mbGFuZ2UvY2RzL2ZsYW5nZS1ib2x0LWdhc2tldC5vbWRvYz9mbGFuZ2UtYm9sdC1nYXNrZXQ/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eRLcAQhFEAAaVmh0dHBzOi8vdG50Lmt3YXJjLmluZm8vcmVwb3Mvc3RjL2ZjYWQvZmxhbmdlL2Nkcy9JU09oZXhudXQub21kb2M/SVNPaGV4bnV0P0lTTy1oZXgtbnV0ILIDKhQKEgoIVmVuZG9yIEMQEBgCIAEoASoUChIKCFZlbmRvciBDEBEYAiABKAEqFAoSCghWZW5kb3IgQxASGAIgASgBKhQKEgoIVmVuZG9yIEMQExgCIAEoASoUChIKCFZlbmRvciBDEBQYAiABKAEyDQgAEAQYACAAKgN4LHkS6gEIRhAAGmRodHRwczovL3RudC5rd2FyYy5pbmZvL3JlcG9zL3N0Yy9mY2FkL2ZsYW5nZS9jZHMvSVNPbWV0cmljdGhyZWFkLm9tZG9jP0lTT21ldHJpY3RocmVhZD9zSVNPaGV4dGhyZWFkILcDKhQKEgoIVmVuZG9yIEMQEBgDIAEoASoUChIKCFZlbmRvciBDEBEYAyABKAEqFAoSCghWZW5kb3IgQxASGAMgASgBKhQKEgoIVmVuZG9yIEMQExgDIAEoASoUChIKCFZlbmRvciBDEBQYAyABKAEyDQgAEAQYACAAKgN4LHkSzwEIRxAAGklodHRwczovL3RudC5rd2FyYy5pbmZvL3JlcG9zL3N0Yy9mY2FkL2ZsYW5nZS9jZHMvY29sb3JzLm9tZG9jP2NvbG9yP2NvbG9yILwDKhQKEgoIVmVuZG9yIEMQEBgEIAEoASoUChIKCFZlbmRvciBDEBEYBCABKAEqFAoSCghWZW5kb3IgQxASGAQgASgBKhQKEgoIVmVuZG9yIEMQExgEIAEoASoUChIKCFZlbmRvciBDEBQYBCABKAEyDQgAEAQYACAAKgN4LHkSwgIIQBAAGmRodHRwczovL3RudC5rd2FyYy5pbmZvL3JlcG9zL3N0Yy9mY2FkL2ZsYW5nZS9jZHMvSVNPbWV0cmljdGhyZWFkLm9tZG9jP0lTT21ldHJpY3RocmVhZD9zSVNPaGV4dGhyZWFkIIYDKhQKEgoIVmVuZG9yIEMQCBgDIAEoASoUChIKCFZlbmRvciBDEAkYAyABKAEqFAoSCghWZW5kb3IgQxAKGAMgASgBKhQKEgoIVmVuZG9yIEMQCxgDIAEoASoUChIKCFZlbmRvciBDEAwYAyABKAEqFAoSCghWZW5kb3IgQxANGAMgASgBKhQKEgoIVmVuZG9yIEMQDhgDIAEoASoUChIKCFZlbmRvciBDEA8YAyABKAEqFAoSCghWZW5kb3IgQxAQGAMgASgBMg0IABAIGAAgACoDeCx5EqcCCEEQABpJaHR0cHM6Ly90bnQua3dhcmMuaW5mby9yZXBvcy9zdGMvZmNhZC9mbGFuZ2UvY2RzL2NvbG9ycy5vbWRvYz9jb2xvcj9jb2xvciCQAyoUChIKCFZlbmRvciBDEAgYBCABKAEqFAoSCghWZW5kb3IgQxAJGAQgASgBKhQKEgoIVmVuZG9yIEMQChgEIAEoASoUChIKCFZlbmRvciBDEAsYBCABKAEqFAoSCghWZW5kb3IgQxAMGAQgASgBKhQKEgoIVmVuZG9yIEMQDRgEIAEoASoUChIKCFZlbmRvciBDEA4YBCABKAEqFAoSCghWZW5kb3IgQxAPGAQgASgBKhQKEgoIVmVuZG9yIEMQEBgEIAEoATINCAAQCBgAIAAqA3gseRKvAghCEAAaUWh0dHBzOi8vdG50Lmt3YXJjLmluZm8vcmVwb3Mvc3RjL2ZjYWQvZmxhbmdlL2Nkcy9JU09oZXhib2x0Lm9tZG9jP0lTT2hleGJvbHQ/aGVhZCCaAyoUChIKCFZlbmRvciBDEAgYBSABKAEqFAoSCghWZW5kb3IgQxAJGAUgASgBKhQKEgoIVmVuZG9yIEMQChgFIAEoASoUChIKCFZlbmRvciBDEAsYBSABKAEqFAoSCghWZW5kb3IgQxAMGAUgASgBKhQKEgoIVmVuZG9yIEMQDRgFIAEoASoUChIKCFZlbmRvciBDEA4YBSABKAEqFAoSCghWZW5kb3IgQxAPGAUgASgBKhQKEgoIVmVuZG9yIEMQEBgFIAEoATINCAAQCBgAIAAqA3gseRKjAghDEAAaRWh0dHBzOi8vdG50Lmt3YXJjLmluZm8vcmVwb3Mvc3RjL2ZjYWQvZmxhbmdlL2Nkcy9jb3N0Lm9tZG9jP2Nvc3Q/Y29zdCCkAyoUChIKCFZlbmRvciBDEAgYByABKAEqFAoSCghWZW5kb3IgQxAJGAcgASgBKhQKEgoIVmVuZG9yIEMQChgHIAEoASoUChIKCFZlbmRvciBDEAsYByABKAEqFAoSCghWZW5kb3IgQxAMGAcgASgBKhQKEgoIVmVuZG9yIEMQDRgHIAEoASoUChIKCFZlbmRvciBDEA4YByABKAEqFAoSCghWZW5kb3IgQxAPGAcgASgBKhQKEgoIVmVuZG9yIEMQEBgHIAEoATINCAAQCBgAIAAqA3gseRKJAQhMEAAaRWh0dHBzOi8vdG50Lmt3YXJjLmluZm8vcmVwb3Mvc3RjL2ZjYWQvZmxhbmdlL2Nkcy9jb3N0Lm9tZG9jP2Nvc3Q/Y29zdCDNAyoUChIKCFZlbmRvciBDEBQYByABKAEqFAoSCghWZW5kb3IgQxAVGAcgASgBMg0IABABGAAgACoDeCx5EoYBCE0QABpYaHR0cHM6Ly90bnQua3dhcmMuaW5mby9yZXBvcy9zdGMvZmNhZC9mbGFuZ2UvY2RzL3BhcnRudW1iZXIub21kb2M/cGFydG51bWJlcj9wYXJ0LW51bWJlciDPAyoUChIKCFZlbmRvciBDEBQYASABKAEyDQgAEAAYACAAKgN4LHkSvQEIThAAGmNodHRwczovL3RudC5rd2FyYy5pbmZvL3JlcG9zL3N0Yy9mY2FkL2ZsYW5nZS9jZHMvZmxhbmdlLWJvbHQtZ2Fza2V0Lm9tZG9jP2ZsYW5nZS1ib2x0LWdhc2tldD9mbGFuZ2Ug0gMqFAoSCghWZW5kb3IgQxAVGAIgASgBKhQKEgoIVmVuZG9yIEMQFhgCIAEoASoUChIKCFZlbmRvciBDEBcYAiABKAEyDQgAEAIYACAAKgN4LHkSvgEITxAAGmRodHRwczovL3RudC5rd2FyYy5pbmZvL3JlcG9zL3N0Yy9mY2FkL2ZsYW5nZS9jZHMvSVNPbWV0cmljdGhyZWFkLm9tZG9jP0lTT21ldHJpY3RocmVhZD9zSVNPaGV4dGhyZWFkINYDKhQKEgoIVmVuZG9yIEMQFRgDIAEoASoUChIKCFZlbmRvciBDEBYYAyABKAEqFAoSCghWZW5kb3IgQxAXGAMgASgBMg0IABACGAAgACoDeCx5EssBCEgQABpFaHR0cHM6Ly90bnQua3dhcmMuaW5mby9yZXBvcy9zdGMvZmNhZC9mbGFuZ2UvY2RzL2Nvc3Qub21kb2M/Y29zdD9jb3N0IMEDKhQKEgoIVmVuZG9yIEMQEBgHIAEoASoUChIKCFZlbmRvciBDEBEYByABKAEqFAoSCghWZW5kb3IgQxASGAcgASgBKhQKEgoIVmVuZG9yIEMQExgHIAEoASoUChIKCFZlbmRvciBDEBQYByABKAEyDQgAEAQYACAAKgN4LHkSyAEISRAAGlhodHRwczovL3RudC5rd2FyYy5pbmZvL3JlcG9zL3N0Yy9mY2FkL2ZsYW5nZS9jZHMvcGFydG51bWJlci5vbWRvYz9wYXJ0bnVtYmVyP3BhcnQtbnVtYmVyIMYDKhQKEgoIVmVuZG9yIEMQEBgBIAEoASoUChIKCFZlbmRvciBDEBEYASABKAEqFAoSCghWZW5kb3IgQxASGAEgASgBKhQKEgoIVmVuZG9yIEMQExgBIAEoATINCAAQAxgAIAAqA3gseRKuAQhKEAAaamh0dHBzOi8vdG50Lmt3YXJjLmluZm8vcmVwb3Mvc3RjL2ZjYWQvZmxhbmdlL2Nkcy9mbGFuZ2UtYm9sdC1nYXNrZXQub21kb2M/ZmxhbmdlLWJvbHQtZ2Fza2V0P2ZsYW5nZS1nYXNrZXQgyAMqFAoSCghWZW5kb3IgQxAUGAIgASgBKhQKEgoIVmVuZG9yIEMQFRgCIAEoATINCAAQARgAIAAqA3gseRKsAQhLEAAaaGh0dHBzOi8vdG50Lmt3YXJjLmluZm8vcmVwb3Mvc3RjL2ZjYWQvZmxhbmdlL2Nkcy9mbGFuZ2UtYm9sdC1nYXNrZXQub21kb2M/ZmxhbmdlLWJvbHQtZ2Fza2V0P2dhc2tldC10eXBlIMsDKhQKEgoIVmVuZG9yIEMQFBgGIAEoASoUChIKCFZlbmRvciBDEBUYBiABKAEyDQgAEAEYACAAKgN4LHkSowEIVRAAGklodHRwczovL3RudC5rd2FyYy5pbmZvL3JlcG9zL3N0Yy9mY2FkL2ZsYW5nZS9jZHMvY29sb3JzLm9tZG9jP2NvbG9yP2NvbG9yIOkDKhQKEgoIVmVuZG9yIEMQFxgEIAEoASoUChIKCFZlbmRvciBDEBgYBCABKAEqFAoSCghWZW5kb3IgQxAZGAQgASgBMg0IABACGAAgACoDeCx5Er4BCFQQABpkaHR0cHM6Ly90bnQua3dhcmMuaW5mby9yZXBvcy9zdGMvZmNhZC9mbGFuZ2UvY2RzL0lTT21ldHJpY3RocmVhZC5vbWRvYz9JU09tZXRyaWN0aHJlYWQ/c0lTT2hleHRocmVhZCDmAyoUChIKCFZlbmRvciBDEBcYAyABKAEqFAoSCghWZW5kb3IgQxAYGAMgASgBKhQKEgoIVmVuZG9yIEMQGRgDIAEoATINCAAQAhgAIAAqA3gseRKcAQhXEAAaWGh0dHBzOi8vdG50Lmt3YXJjLmluZm8vcmVwb3Mvc3RjL2ZjYWQvZmxhbmdlL2Nkcy9wYXJ0bnVtYmVyLm9tZG9jP3BhcnRudW1iZXI/cGFydC1udW1iZXIg7wMqFAoSCghWZW5kb3IgQxAXGAEgASgBKhQKEgoIVmVuZG9yIEMQGBgBIAEoATINCAAQARgAIAAqA3gseRKfAQhWEAAaRWh0dHBzOi8vdG50Lmt3YXJjLmluZm8vcmVwb3Mvc3RjL2ZjYWQvZmxhbmdlL2Nkcy9jb3N0Lm9tZG9jP2Nvc3Q/Y29zdCDsAyoUChIKCFZlbmRvciBDEBcYByABKAEqFAoSCghWZW5kb3IgQxAYGAcgASgBKhQKEgoIVmVuZG9yIEMQGRgHIAEoATINCAAQAhgAIAAqA3gseRKfAQhREAAaRWh0dHBzOi8vdG50Lmt3YXJjLmluZm8vcmVwb3Mvc3RjL2ZjYWQvZmxhbmdlL2Nkcy9jb3N0Lm9tZG9jP2Nvc3Q/Y29zdCDdAyoUChIKCFZlbmRvciBDEBUYByABKAEqFAoSCghWZW5kb3IgQxAWGAcgASgBKhQKEgoIVmVuZG9yIEMQFxgHIAEoATINCAAQAhgAIAAqA3gseRKjAQhQEAAaSWh0dHBzOi8vdG50Lmt3YXJjLmluZm8vcmVwb3Mvc3RjL2ZjYWQvZmxhbmdlL2Nkcy9jb2xvcnMub21kb2M/Y29sb3I/Y29sb3Ig2gMqFAoSCghWZW5kb3IgQxAVGAQgASgBKhQKEgoIVmVuZG9yIEMQFhgEIAEoASoUChIKCFZlbmRvciBDEBcYBCABKAEyDQgAEAIYACAAKgN4LHkSwwEIUxAAGmlodHRwczovL3RudC5rd2FyYy5pbmZvL3JlcG9zL3N0Yy9mY2FkL2ZsYW5nZS9jZHMvZmxhbmdlLWJvbHQtZ2Fza2V0Lm9tZG9jP2ZsYW5nZS1ib2x0LWdhc2tldD9ibGluZC1mbGFuZ2Ug4wMqFAoSCghWZW5kb3IgQxAXGAIgASgBKhQKEgoIVmVuZG9yIEMQGBgCIAEoASoUChIKCFZlbmRvciBDEBkYAiABKAEyDQgAEAIYACAAKgN4LHkSnAEIUhAAGlhodHRwczovL3RudC5rd2FyYy5pbmZvL3JlcG9zL3N0Yy9mY2FkL2ZsYW5nZS9jZHMvcGFydG51bWJlci5vbWRvYz9wYXJ0bnVtYmVyP3BhcnQtbnVtYmVyIOADKhQKEgoIVmVuZG9yIEMQFRgBIAEoASoUChIKCFZlbmRvciBDEBYYASABKAEyDQgAEAEYACAAKgN4LHk=").build();
        conn.newMessage("spread", alexData);

        AlexClick click = AlexClick.newBuilder().setFileName("file://pipe-end.xls").setPosition(ScreenCoordinates.newBuilder().setX(100).setY(100).build()).setSheet("Vendor A")
                .setRange(RangeSelection.newBuilder().setStartCol(2).setEndCol(2).setStartRow(8).setEndRow(8).setSheet("Vendor A").build()).build();
        conn.newMessage("spread", click);

        SallyFrame frame =  SallyFrame.newBuilder().setFileName("file://pipe-end.xls").build();
        conn.newMessage("spread", frame);

        while (true) {
            Thread.sleep(1000);

            click = AlexClick.newBuilder().setFileName("file://pipe-end.xls").setPosition(ScreenCoordinates.newBuilder().setX(100).setY(100).build()).setSheet("Vendor A")
                    .setRange(RangeSelection.newBuilder().setStartCol(2).setEndCol(2).setStartRow(8).setEndRow(8).setSheet("Vendor A").build()).build();
            conn.newMessage("spread", click);
        }
    }

}