# XQueryWizard.java Sample

This topic inludes the source code for the XQueryWizard.java Sample.

## Sample Location

This sample is located in the following directory in your WebLogic Workshop installation:

BEA_HOME/weblogic81/samples/workshop/ExtensionDevKit/ControlDevKit/ControlFeatures/jcxCreate/ide/

## Sample Source Code

`001 package jcxCreate.ide; 002 003 import java.text.MessageFormat; 004 import com.bea.ide.control.ControlWizardSimple; 005 import javax.swing.JComponent; 006 007 /* 008 * Represents an insert dialog for the XQuery control. While 009 * this dialog doesn't provide any special user interface, it 010 * does provide the text that the IDE should insert into 011 * newly created JCX files. 012 */ 013 public class XQueryWizard extends ControlWizardSimple 014 { 015 private boolean m_createExtension = false; 016 017 String m_jcxPackage = null; 018 String m_jcxName = null; 019 020 /* 021 * Tell the IDE how to configure the insert dialog. This dialog 022 * should provide an option to use an existing JCX file, or to 023 * create a new one. 024 */ 025 public int getConfigurationInfo() 026 { 027 return CONFIG_CREATE_EXTENSION_FILE | 028 CONFIG_INSERT_INSTANCE; 029 } 030 031 /* 032 * Provide a place for the IDE to tell this code whether the 033 * user has asked to create a new JCX or not. 034 */ 035 public void setConfiguration(int config) 036 { 037 m_createExtension = 038 ((config & ControlWizardSimple.CONFIG_CREATE_EXTENSION_FILE) != 0); 039 } 040 041 /* 042 * Tell the IDE what to use for custom insert dialog user interface. 043 * None is needed here. 044 */ 045 public JComponent getComponent() 046 { 047 return null; 048 } 049 050 /* 051 * Provide a place for code that should execute when the user clicks the 052 * Create button on the insert dialog. 053 */ 054 public boolean onFinish() 055 { 056 if (super.onFinish() == false){ 057 return false; 058 } else { 059 return true; 060 } 061 } 062 063 /* 064 * Provides a way for the IDE to pass in the package name 065 * that should be specified at the top of a new JCX file. 066 */ 067 public void setPackage(String packageName) 068 { 069 m_jcxPackage = packageName; 070 } 071 072 /* 073 * Provides a way for the IDE to pass in the name of the 074 * interface defined in a new JCX file. 075 */ 076 public void setName(String name) 077 { 078 m_jcxName = name; 079 } 080 081 /* 082 * Provides a place for the IDE to retrieve the content that it 083 * should insert into newly created JCX files. Here, the package name 084 * and interface name passed in by the IDE are inserted into a 085 * template using the MessageFormat class. 086 */ 087 public String getExtensionFileContent(){ 088 // did they ask for an extension? 089 String jcxTemplate = this.getTemplate(); 090 091 String jcxContent = 092 MessageFormat.format(jcxTemplate, new Object[] {m_jcxPackage, m_jcxName}); 093 094 return jcxContent; 095 } 096 097 /* 098 * Returns a template for text to be inserted into a new JCX file. 099 */ 100 private String getTemplate(){ 101 String template = 102 "package {0}; \n\n " + 103 "import com.bea.control.*; \n " + 104 "import com.bea.xml.XmlCursor; \n " + 105 "import jcxCreate.XQuery; \n\n " + 106 107 "public interface {1} extends XQuery, com.bea.control.ControlExtension \n " + 108 "'{' \n \n" + 109 110 " /* \n" + 111 " * A version number for this JCX. This will be incremented in new versions of \n" + 112 " * this control to ensure that conversations for instances of earlier \n" + 113 " * versions were invalid. \n" + 114 " */ \n" + 115 " static final long serialVersionUID = 1L; \n \n" + 116 117 " /* Replace the following method with your own. Be sure \n" + 118 " * that your method returns an XmlCursor and that its \n" + 119 " * parameter is a File object to contain the XML against \n" + 120 " * which to execute the XQuery expression. \n" + 121 " */ \n \n" + 122 123 " /** \n" + 124 " * @jc:query expression=\"$this/purchase-order/line-item[price <= 20.00]\" \n" + 125 " */ \n" + 126 " XmlCursor selectLineItem(String filePath); \n \n" + 127 128 "'}' \n "; 129 return template; 130 } 131 132 }`