Hi,

I lately implemented custom saxon instructions that allow to create a message boxes or option dialogs from within an XSLT script.

Since it turned out to be pretty easy to implement and very useful within my framework, I just wanted to share this idea - and the joy over oxygen, that even this is possible.


One use-cases would be a transformation that potentially overwrites an existing file and asks the user before doing so (if the file already exists). The code looks like this:
       
       <xsl:if test="java:fileExists($myFile)">
               
<xsl:variable name="userDecision" as="xs:integer">
                       
<gui:option-dialog title="Warning" options="('Continue', 'Abort')" default="1">
                               
<xsl:text/>The file '<xsl:value-of select="$myFile"/>' already exists and will be overwritten.<xsl:text/>
                       
</gui:option-dialog>
               
</xsl:variable>
               
<xsl:if test="$userDecision = 1">
                       
<xsl:message terminate="yes">Abort on user request</xsl:message>
               
</xsl:if>
       
</xsl:if>

To implement such extension instructions you will have to implement your own java library and put it into oxygens lib folder.
To do so follow the saxon documentation at
        http://www.saxonica.com/documentation/#!extensibility/instructions
and - much more important - look at the sample of Saxon-SQL, which is included in the open source edition of saxon:
        http://sourceforge.net/projects/saxon/files/Saxon-HE/)
Make sure to use the same version as included into oxygen!


To open the actual dialog you can use something like

        JOptionPane.showOptionDialog(
                (Frame)PluginWorkspaceProvider.getPluginWorkspace().getParentFrame(),
                textString,
                titleString,
                (optionList.size() == 2) ?  JOptionPane.YES_NO_OPTION : JOptionPane.YES_NO_CANCEL_OPTION,
                JOptionPane.PLAIN_MESSAGE,
                null,
                optionList.toArray(new String[optionList.size()]),
                defaultOption);


(If someone should be interested - I will also gladly share my java code.)

There is also an entry in the forum for this:
        http://www.oxygenxml.com/forum/topic11531.html


Regards,

Patrik

GDV Dienstleistungs-GmbH & Co. KG
Glockengießerwall 1
D-20095 Hamburg
www.gdv-dl.de

Sitz und Registergericht: Hamburg
HRA 93 894
USt.-IdNr : DE 205183123

Komplementärin:
GDV Beteiligungsgesellschaft mbH
Sitz und Registergericht: Hamburg
HRB 71 153

Geschäftsführer:
Dr. Jens Bartenwerfer
Michael Bathke
Heiko Beermann
Volker Sonnenburg

------------------------------------------------------------------
Diese E-Mail und alle Anhänge enthalten vertrauliche und/oder rechtlich geschützte Informationen. Wenn Sie nicht der richtige Adressat sind oder diese E-Mail irrtümlich erhalten haben, informieren Sie bitte sofort den Absender und vernichten Sie diese E-Mail. Das unerlaubte Kopieren sowie die unbefugte Weitergabe der E-Mail ist nicht gestattet.

This e-mail and any attached files may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and destroy this e-mail. Any unauthorised copying, disclosure or distributionof the material in this e-mail is strictly forbidden.