- From: Ichiro Furusato <ichiro.furusato@gmail.com>
- Date: Thu, 16 May 2013 20:59:16 +1200
- To: Ari Nordström <Ari.Nordstrom@condesign.se>
- Cc: XProc Dev <xproc-dev@w3.org>
- Message-ID: <CAFKb9FNTMqYE8tAJNP2Xx3z=Miyrbrxr9i_+AZxRm1+Fk-_Ysw@mail.gmail.com>
Ack. @#$%*&! Gmail. It sent if off before I was done editing. The only thing that actually needs changing is that the line preceding the declaration file should read: ---------------------- declare-option-dialog.xpl --------------------- and not the Java class. Sorry for any confusion. Ichiro On Thu, May 16, 2013 at 8:56 PM, Ichiro Furusato <ichiro.furusato@gmail.com>wrote: > Hi Ari, > > I've had a number of occasions to develop what are essentially > pass-through steps, i.e., steps that do something related to the pipeline > but don't alter the actual content flowing through. Below is a very quick > shell of a step that displays a JOptionPane that displays a dialog upon > encountering the step. This could obviously be improved by adding passed > arguments, actually altering processing based upon the chosen option, etc., > but I leave that as an exercise to the implementer since I don't know what > you'd plan to do with it. > > Hopefully it's helpful. > > Here's the declaration: > > ---------------------- OptionDialogStep.java --------------------- > <?xml version="1.0" encoding="UTF-8"?> > <p:declare-step > name="option-dialog" > type="acme:option-dialog" > version="1.0" > xmlns:acme="http://acme.com/xproc/1.0/" > xmlns:p="http://www.w3.org/ns/xproc"> > > <p:input port="source"/> > <p:output port="result"/> > > </p:declare-step> > > This must be imported into an existing pipeline using: > > <p:import href="declare-option-dialog.xpl"/> > > and then used as a step, e.g., > > <acme:option-dialog name="option-dialog-step"> > <p:documentation> > This is a step used to display an option dialog. > </p:documentation> > </acme:option-dialog> > > And here's the Java code (which I release without license restriction): > > ---------------------- OptionDialogStep.java --------------------- > > package com.acme.transform; > > import net.sf.saxon.s9api.SaxonApiException; > import net.sf.saxon.s9api.XdmNode; > > import com.xmlcalabash.core.XProcRuntime; > import com.xmlcalabash.io.ReadablePipe; > import com.xmlcalabash.io.WritablePipe; > import com.xmlcalabash.library.DefaultStep; > import com.xmlcalabash.runtime.XAtomicStep; > import javax.swing.JOptionPane; > > /** > * An XProc step that displays a dialog box. > * > * @author Ichiro Furusato > */ > public class OptionDialogStep extends DefaultStep > { > private ReadablePipe source = null; // the source of this step > private WritablePipe result = null; // the result of this step > > > public OptionDialogStep( XProcRuntime runtime, XAtomicStep step ) > { > super(runtime, step); > } > > > @Override > public final void setInput( String port, ReadablePipe pipe ) > { > source = pipe; > } > > > @Override > public final void setOutput( String port, WritablePipe pipe ) > { > result = pipe; > } > > > @Override > public void reset() > { > if ( source != null ) { > source.resetReader(); > } > if ( result != null ) { > result.resetWriter(); > } > } > > > @Override > public void run() throws SaxonApiException > { > try { > Object message = "Dialog message here."; > String title = "Dialog Title"; > int option = JOptionPane.showConfirmDialog(null, > message, title, > JOptionPane.YES_NO_CANCEL_OPTION); > switch ( option ) { > case JOptionPane.YES_OPTION: > System.out.println("option: YES_OPTION"); > break; > case JOptionPane.NO_OPTION: > System.out.println("option: NO_OPTION"); > break; > case JOptionPane.CANCEL_OPTION: > System.out.println("option: CANCEL_OPTION"); > break; > default: > System.out.println("option: default"); > break; > } > super.run(); > > // get Saxon document from pipeline > XdmNode doc = source.read(); > if ( doc == null ) { > throw new IllegalStateException("null document."); > } > // pass through pipeline > result.write(doc); > > } catch ( Exception e ) { > throw new SaxonApiException(e.getClass().getName() > + " thrown by OptionDialogStep: " > + e.getLocalizedMessage(), e); > } > } > > > } // end OptionDialogStep > >
Received on Thursday, 16 May 2013 08:59:49 UTC