The following example shows some possibilities about the SDK configuration framework.
In the following definition, three scopes are defined: server, project, process-catalog.
<?xml version="1.0" encoding="UTF-8"?> <configuration> <tab name="sample-server" scope="server"> <class qualifiedName="com.axemble.vdoc.configuration.TestDataTestServerConfigurationSDKEditor" /> <section name="settings" label="service.library.createFolder.section.settings.label"> <fields> <field name="sampleServerBoolean" label="sample-server.sampleServerBoolean.label" description="" ctrl="checkbox" boolean-value="true" throw-events="true"/> <field name="sampleServerText" label="sampleServerText" description="" ctrl="text" /> <field name="sampleServerList" label="sampleServerList" description="" ctrl="textselectlist" mode="write" throw-events="true" string-value="sampleServerListOptionOne" allowreset="never"> <options> <option key="sampleServerListOptionOne" labelid="sampleServerListOptionOne" /> <option key="sampleServerListOptionTwo" labelid="sampleServerListOptionTwo" /> </options> </field> <field name="sampleServerDate" label="sampleServerDate" description="" ctrl="date" /> <field name="sampleServerUser" label="sampleServerUser" description="" ctrl="user" /> </fields> </section> <custom> <customElement1 attribute1="attributeValue1"/> </custom> </tab> <tab name="sample-catalog" scope="process-catalog"> <class qualifiedName="com.axemble.vdoc.configuration.TestDataTestCatalogConfigurationSDKEditor" /> <section name="settings" label="service.library.createFolder.section.settings.label"> <fields> <field name="sampleCatalogText" ctrl="text" label="sampleCatalogText"/> <field name="sampleCatalogBoolean" label="sample-server.sampleServerBoolean.label" description="" ctrl="checkbox" boolean-value="true" throw-events="true"/> </fields> </section> <section name="advanced"> <fields> <field name="sampleCatalogDate" ctrl="date" /> <field name="sampleCatalogUser" ctrl="user" /> </fields> </section> </tab> </configuration>
The onAfterLoad() method is implemented to initialize and hide some fields.
package com.axemble.vdoc.configuration; import java.io.IOException; import com.axemble.commons.xml.DomWriter; import com.axemble.vdoc.sdk.configuration.base.BaseConfigurationEditor; import com.axemble.vdp.utils.StringUtils; public class TestDataTestServerConfigurationSDKEditor extends BaseConfigurationEditor { private static final long serialVersionUID = 1L; public TestDataTestServerConfigurationSDKEditor() { } @Override public boolean onAfterLoad() { // hide fields (getResourceController()) // if sampleServerBoolean is check then sampleServerDate and sampleServerUser field will be hidden. boolean advanced = ( getResource().getValue( "sampleServerBoolean" ) == null ) ? false : (boolean)getResource().getValue( "sampleServerBoolean" ); getConfigurationSection().getEntryByName( "sampleServerDate" ).setHidden( advanced ); getResourceController().getDefaultWidget( "sampleServerUser" ).setHidden( advanced ); // Set field to an initial value (getResource()) if ( StringUtils.isEmpty( (String)getResource().getValue( "sampleServerText" ) ) ) { getDocument().getAbstractFieldByName( "sampleServerText" ).setValue( "Initial value" ); } return super.onAfterLoad(); } }
package com.axemble.vdoc.configuration; import java.io.IOException; import com.axemble.commons.xml.DomWriter; import com.axemble.vdoc.sdk.configuration.base.BaseConfigurationEditor; import com.axemble.vdp.ui.framework.components.events.ChangeEvent; import com.axemble.vdp.ui.framework.components.listeners.ChangeListener; import com.axemble.vdp.ui.framework.document.AbstractField; import com.axemble.vdp.utils.StringUtils; public class TestDataTestCatalogConfigurationSDKEditor extends BaseConfigurationEditor { private static final long serialVersionUID = 1L; public TestDataTestCatalogConfigurationSDKEditor() { } @Override public boolean onAfterLoad() { //initialize default value (getResource()) if ( StringUtils.isEmpty( (String)getResource().getValue( "sampleCatalogText" ) ) ) { getDocument().getAbstractFieldByName( "sampleCatalogText" ).setValue( "Bla bla" ); } AbstractField booleanField = getDocument().getAbstractFieldByName( "sampleCatalogBoolean" ); hideAdvancedSection( ( booleanField.getValue() != null ) ? (boolean)booleanField.getValue() : false ); booleanField.addChangeListener( new ChangeListener() { private static final long serialVersionUID = -2491203551267196556L; @Override public void onChange( ChangeEvent event ) { boolean hide = (boolean)( (AbstractField)event.getSource() ).getValue(); hideAdvancedSection( hide ); } } ); return super.onAfterLoad(); } void hideAdvancedSection( boolean hide ) { if ( getConfigurationSection().getSubSectionByName( "advanced" ) != null ) getConfigurationSection().getSubSectionByName( "advanced" ).setHidden( hide ); } }