Hi Matthias,

Mathias Bauer schrieb:
> Tobias Krais wrote:
> 
>> Hi together again,
>>
>> I implemented a protocol handler for the CommandURL .Judas:PrintTrays.
>> The target of this new protocol is to print a document on different
>> printer trays (page one on tray with letter paper, the others on the
>> tray with normal paper). After sending the print command via API I added
>> a PrintJobListener:
>> -----%<-----
>> // Querying for the interface XPrintable on the loaded document
>> XPrintable xPrintable = (XPrintable)
>>                 UnoRuntime.queryInterface(XPrintable.class,
>>                      this.xComponent);
>>
>> // Adding a print job listener
>> XPrintJobBroadcaster selection = (XPrintJobBroadcaster)
>>                      UnoRuntime.queryInterface(XPrintJobBroadcaster.class,
>>                      xPrintable);
>> OOPrintJobListener ooPrintJobListener = new OOPrintJobListener();
>> ooPrintJobListener.setDebug(debug);
>> selection.addPrintJobListener(ooPrintJobListener);
>>
>> // Setting the property "Pages" so that only the desired pages
>> // will be printed.
>> PropertyValue[] printOpts = new PropertyValue[1];
>> printOpts[0] = new PropertyValue();
>> printOpts[0].Name = "Pages";
>> printOpts[0].Value = myPages;
>>
>> try {
>>      xPrintable.print(printOpts);
>> } catch (IllegalArgumentException e) {}
>>
>> // Watch print process and continue if done.
>> // TODO: see OO Bug id 72240; don't print a non-existing page, other-
>> // wise here is a loop.
>> while (ooPrintJobListener.getStatus() == null ||
>>            ooPrintJobListener.getStatus() == PrintableState.JOB_STARTED)
>> {
>>      try {
>>              Thread.sleep(2000);
>>      }
>>      catch (InterruptedException e) {}
>> }
>> -----%<-----

> Why do you want to "sleep" in your listener? Perhaps you can avoid that.
> Without understanding what you are trying to achieve it's hard to give
> any useful hints.

The code above answers half. I have to wait till the print job is done
and then I can send a second print job (same code again), otherwise the
second one will be fired too fast and wont be printed. For this I
implemented a PrintJobListener that checks every two seconds if the
PrintableState changed to be able to continue setting the second print job.

I don't think there is a workaround. It's a pity, because I would like
to pop up a message if the print job failed - but I cannot pop up a
message from the second thread.

Greetings, Tobias

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to