http://git-wip-us.apache.org/repos/asf/ignite/blob/cca10d0c/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/checkpoint/s3.pug
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/checkpoint/s3.pug
 
b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/checkpoint/s3.pug
index 8e284fc..1f6eef2 100644
--- 
a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/checkpoint/s3.pug
+++ 
b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/checkpoint/s3.pug
@@ -28,177 +28,416 @@ include /app/helpers/jade/mixins
 -var checkpointS3CustomRetry = checkpointS3 + ' && ' + clientRetryModel + 
'.kind === "Custom"'
 
 .pc-form-grid-col-60(ng-if-start='$checkpointSPI.kind === "S3"')
-    +dropdown-required('AWS credentials:', 
'$checkpointSPI.S3.awsCredentials.kind', '"checkpointS3AwsCredentials"', 
'true', checkpointS3, 'Custom', '[\
-        {value: "Basic", label: "Basic"},\
-        {value: "Properties", label: "Properties"},\
-        {value: "Anonymous", label: "Anonymous"},\
-        {value: "BasicSession", label: "Basic with session"},\
-        {value: "Custom", label: "Custom"}\
-    ]',
-    'AWS credentials\
-    <ul>\
-        <li>Basic - Allows callers to pass in the AWS access key and secret 
access in the constructor</li>\
-        <li>Properties - Reads in AWS access keys from a properties file</li>\
-        <li>Anonymous - Allows use of "anonymous" credentials</li>\
-        <li>Database - Session credentials with keys and session token</li>\
-        <li>Custom - Custom AWS credentials provider</li>\
-    </ul>')
+    +form-field__dropdown({
+        label: 'AWS credentials:',
+        model: '$checkpointSPI.S3.awsCredentials.kind',
+        name: '"checkpointS3AwsCredentials"',
+        required: checkpointS3,
+        placeholder: 'Custom',
+        options: '[\
+                {value: "Basic", label: "Basic"},\
+                {value: "Properties", label: "Properties"},\
+                {value: "Anonymous", label: "Anonymous"},\
+                {value: "BasicSession", label: "Basic with session"},\
+                {value: "Custom", label: "Custom"}\
+            ]',
+        tip: 'AWS credentials\
+            <ul>\
+                <li>Basic - Allows callers to pass in the AWS access key and 
secret access in the constructor</li>\
+                <li>Properties - Reads in AWS access keys from a properties 
file</li>\
+                <li>Anonymous - Allows use of "anonymous" credentials</li>\
+                <li>Database - Session credentials with keys and session 
token</li>\
+                <li>Custom - Custom AWS credentials provider</li>\
+            </ul>'
+    })
+
 .pc-form-group.pc-form-grid-row(ng-if=checkpointS3Path)
     .pc-form-grid-col-60
-        +text('Path:', credentialsModel + '.Properties.path', 
'"checkpointS3PropertiesPath"', checkpointS3Path, 'Input properties file path',
-        'The file from which to read the AWS credentials properties')
+        +form-field__text({
+            label: 'Path:',
+            model: `${credentialsModel}.Properties.path`,
+            name: '"checkpointS3PropertiesPath"',
+            required: checkpointS3Path,
+            placeholder: 'Input properties file path',
+            tip: 'The file from which to read the AWS credentials properties'
+        })
 .pc-form-group.pc-form-grid-row(ng-if=checkpointS3Custom)
     .pc-form-grid-col-60
-        +java-class('Class name:', credentialsModel + '.Custom.className', 
'"checkpointS3CustomClassName"', 'true', checkpointS3Custom,
-        'Custom AWS credentials provider implementation class', 
checkpointS3Custom)
+        +form-field__java-class({
+            label: 'Class name:',
+            model: credentialsModel + '.Custom.className',
+            name: '"checkpointS3CustomClassName"',
+            required: checkpointS3Custom,
+            tip: 'Custom AWS credentials provider implementation class',
+            validationActive:checkpointS3Custom
+        })
 .pc-form-grid-col-60
     label Note, AWS credentials will be generated as stub
 .pc-form-grid-col-60
-    +text('Bucket name suffix:', '$checkpointSPI.S3.bucketNameSuffix', 
'"checkpointS3BucketNameSuffix"', 'false', 'default-bucket')
+    +form-field__text({
+        label: 'Bucket name suffix:',
+        model: '$checkpointSPI.S3.bucketNameSuffix',
+        name: '"checkpointS3BucketNameSuffix"',
+        placeholder: 'default-bucket'
+    })
 .pc-form-grid-col-60(ng-if-start=`$ctrl.available("2.4.0")`)
-    +text('Bucket endpoint:', `$checkpointSPI.S3.bucketEndpoint`, 
'"checkpointS3BucketEndpoint"', false, 'Input bucket endpoint',
-    'Bucket endpoint for IP finder<br/> \
-    For information about possible endpoint names visit <a 
href="http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region";>docs.aws.amazon.com</a>')
+    +form-field__text({
+        label: 'Bucket endpoint:',
+        model: `$checkpointSPI.S3.bucketEndpoint`,
+        name: '"checkpointS3BucketEndpoint"',
+        placeholder: 'Input bucket endpoint',
+        tip: 'Bucket endpoint for IP finder<br/> \
+            For information about possible endpoint names visit <a 
href="http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region";>docs.aws.amazon.com</a>'
+    })
 .pc-form-grid-col-60(ng-if-end)
-    +text('SSE algorithm:', `$checkpointSPI.S3.SSEAlgorithm`, 
'"checkpointS3SseAlgorithm"', false, 'Input SSE algorithm',
-    'Server-side encryption algorithm for Amazon S3-managed encryption 
keys<br/> \
-    For information about possible S3-managed encryption keys visit <a 
href="http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html";>docs.aws.amazon.com</a>')
+    +form-field__text({
+        label: 'SSE algorithm:',
+        model: `$checkpointSPI.S3.SSEAlgorithm`,
+        name: '"checkpointS3SseAlgorithm"',
+        placeholder: 'Input SSE algorithm',
+        tip: 'Server-side encryption algorithm for Amazon S3-managed 
encryption keys<br/> \
+              For information about possible S3-managed encryption keys visit 
<a 
href="http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html";>docs.aws.amazon.com</a>'
+    })
 .pc-form-grid-col-60
-    +java-class('Listener:', '$checkpointSPI.S3.checkpointListener', 
'"checkpointS3Listener"', 'true', 'false',
-        'Checkpoint listener implementation class name', checkpointS3)
+    +form-field__java-class({
+        label: 'Listener:',
+        model: '$checkpointSPI.S3.checkpointListener',
+        name: '"checkpointS3Listener"',
+        tip: 'Checkpoint listener implementation class name',
+        validationActive: checkpointS3
+    })
 .pc-form-grid-col-60.pc-form-group__text-title
     span Client configuration
 .pc-form-group.pc-form-grid-row(ng-if-end)
     .pc-form-grid-col-30
-        +dropdown('Protocol:', clientCfgModel + '.protocol', 
'"checkpointS3Protocol"', 'true', 'HTTPS', '[\
-                {value: "HTTP", label: "HTTP"},\
-                {value: "HTTPS", label: "HTTPS"}\
-            ]',
-        'Provides an ability to save an intermediate job state\
-        <ul>\
-            <li>HTTP - Using the HTTP protocol is less secure than HTTPS, but 
can slightly reduce\
-                the system resources used when communicating with AWS</li>\
-            <li>HTTPS - Using the HTTPS protocol is more secure than using the 
HTTP protocol, but\
-                may use slightly more system resources. AWS recommends using 
HTTPS for maximize security</li>\
-        </ul>')
+        +form-field__dropdown({
+            label: 'Protocol:',
+            model: clientCfgModel + '.protocol',
+            name: '"checkpointS3Protocol"',
+            placeholder: 'HTTPS',
+            options: '[\
+                            {value: "HTTP", label: "HTTP"},\
+                            {value: "HTTPS", label: "HTTPS"}\
+                        ]',
+            tip: 'Provides an ability to save an intermediate job state\
+                    <ul>\
+                        <li>HTTP - Using the HTTP protocol is less secure than 
HTTPS, but can slightly reduce\
+                            the system resources used when communicating with 
AWS</li>\
+                        <li>HTTPS - Using the HTTPS protocol is more secure 
than using the HTTP protocol, but\
+                            may use slightly more system resources. AWS 
recommends using HTTPS for maximize security</li>\
+                    </ul>'
+        })
     .pc-form-grid-col-30
-        +number('Maximum connections:', clientCfgModel + '.maxConnections', 
'"checkpointS3MaxConnections"',
-        'true', '50', '1', 'Maximum number of allowed open HTTP connections')
+        +form-field__number({
+            label:'Maximum connections:',
+            model:clientCfgModel + '.maxConnections',
+            name: '"checkpointS3MaxConnections"',
+            placeholder: '50',
+            min: '1',
+            tip: 'Maximum number of allowed open HTTP connections'
+        })
     .pc-form-grid-col-60
-        +text('User agent prefix:', clientCfgModel + '.userAgentPrefix', 
'"checkpointS3UserAgentPrefix"', 'false', 'System specific header',
-        'HTTP user agent prefix to send with all requests')
+        +form-field__text({
+            label: 'User agent prefix:',
+            model: `${clientCfgModel}.userAgentPrefix`,
+            name: '"checkpointS3UserAgentPrefix"',
+            placeholder: 'System specific header',
+            tip: 'HTTP user agent prefix to send with all requests'
+        })
     .pc-form-grid-col-60
-        +text('User agent suffix:', clientCfgModel + '.userAgentSuffix', 
'"checkpointS3UserAgentSuffix"', 'false', 'System specific header',
-        'HTTP user agent suffix to send with all requests')
+        +form-field__text({
+            label: 'User agent suffix:',
+            model: `${clientCfgModel}.userAgentSuffix`,
+            name: '"checkpointS3UserAgentSuffix"',
+            placeholder: 'System specific header',
+            tip: 'HTTP user agent suffix to send with all requests'
+        })
     .pc-form-grid-col-60
-        +text-ip-address('Local address:', clientCfgModel + '.localAddress', 
'"checkpointS3LocalAddress"', 'true', 'Not specified',
-        'Optionally specifies the local address to bind to')
+        +form-field__ip-address({
+            label: 'Local address:',
+            model: clientCfgModel + '.localAddress',
+            name: '"checkpointS3LocalAddress"',
+            enabled: 'true',
+            placeholder: 'Not specified',
+            tip: 'Optionally specifies the local address to bind to'
+        })
     .pc-form-grid-col-40
-        +text('Proxy host:', clientCfgModel + '.proxyHost', 
'"checkpointS3ProxyHost"', 'false', 'Not specified',
-        'Optional proxy host the client will connect through')
+        +form-field__text({
+            label: 'Proxy host:',
+            model: `${clientCfgModel}.proxyHost`,
+            name: '"checkpointS3ProxyHost"',
+            placeholder: 'Not specified',
+            tip: 'Optional proxy host the client will connect through'
+        })
     .pc-form-grid-col-20
-        +number('Proxy port:', clientCfgModel + '.proxyPort', 
'"checkpointS3ProxyPort"', 'true', 'Not specified', '0',
-        'Optional proxy port the client will connect through')
+        +form-field__number({
+            label: 'Proxy port:',
+            model: clientCfgModel + '.proxyPort',
+            name: '"checkpointS3ProxyPort"',
+            placeholder: 'Not specified',
+            min: '0',
+            tip: 'Optional proxy port the client will connect through'
+        })
     .pc-form-grid-col-30
-        +text('Proxy user:', clientCfgModel + '.proxyUsername', 
'"checkpointS3ProxyUsername"', 'false', 'Not specified',
-        'Optional proxy user name to use if connecting through a proxy')
+        +form-field__text({
+            label: 'Proxy user:',
+            model: clientCfgModel + '.proxyUsername',
+            name: '"checkpointS3ProxyUsername"',
+            placeholder: 'Not specified',
+            tip: 'Optional proxy user name to use if connecting through a 
proxy'
+        })
     .pc-form-grid-col-30
-        +text('Proxy domain:', clientCfgModel + '.proxyDomain', 
'"checkpointS3ProxyDomain"', 'false', 'Not specified',
-        'Optional Windows domain name for configuring an NTLM proxy')
-    .pc-form-grid-col-60
-        +text('Proxy workstation:', clientCfgModel + '.proxyWorkstation', 
'"checkpointS3ProxyWorkstation"', 'false', 'Not specified',
-        'Optional Windows workstation name for configuring NTLM proxy support')
-    .pc-form-grid-col-60
-        +text('Non proxy hosts:', clientCfgModel + '.nonProxyHosts', 
'"checkpointS3NonProxyHosts"', 'false', 'Not specified',
-        'Optional hosts the client will access without going through the 
proxy')
-    .pc-form-grid-col-60
-        +dropdown('Retry policy:', clientRetryModel + '.kind', 
'"checkpointS3RetryPolicy"', 'true', 'Default', '[\
-                                            {value: "Default", label: "Default 
SDK retry policy"},\
-                                            {value: "DefaultMaxRetries", 
label: "Default with the specified max retry count"},\
-                                            {value: "DynamoDB", label: 
"Default for DynamoDB client"},\
-                                            {value: "DynamoDBMaxRetries", 
label: "DynamoDB with the specified max retry count"},\
-                                            {value: "Custom", label: "Custom 
configured"}\
-                                        ]',
-        'Provides an ability to save an intermediate job state\
-        <ul>\
-            <li>SDK default retry policy - This policy will honor the 
maxErrorRetry set in ClientConfiguration</li>\
-            <li>Default with the specified max retry count - Default SDK retry 
policy with the specified max retry count</li>\
-            <li>Default for DynamoDB client - This policy will honor the 
maxErrorRetry set in ClientConfiguration</li>\
-            <li>DynamoDB with the specified max retry count - This policy will 
honor the maxErrorRetry set in ClientConfiguration with the specified max retry 
count</li>\
-            <li>Custom configured - Custom configured SDK retry policy</li>\
-        </ul>')
+        +form-field__text({
+            label: 'Proxy domain:',
+            model: `${clientCfgModel}.proxyDomain`,
+            name: '"checkpointS3ProxyDomain"',
+            placeholder: 'Not specified',
+            tip: 'Optional Windows domain name for configuring an NTLM proxy'
+        })
+    .pc-form-grid-col-60
+        +form-field__text({
+            label: 'Proxy workstation:',
+            model: `${clientCfgModel}.proxyWorkstation`,
+            name: '"checkpointS3ProxyWorkstation"',
+            placeholder: 'Not specified',
+            tip: 'Optional Windows workstation name for configuring NTLM proxy 
support'
+        })
+    .pc-form-grid-col-60
+        +form-field__text({
+            label: 'Non proxy hosts:',
+            model: `${clientCfgModel}.nonProxyHosts`,
+            name: '"checkpointS3NonProxyHosts"',
+            placeholder: 'Not specified',
+            tip: 'Optional hosts the client will access without going through 
the proxy'
+        })
+    .pc-form-grid-col-60
+        +form-field__dropdown({
+            label: 'Retry policy:',
+            model: `${clientRetryModel}.kind`,
+            name: '"checkpointS3RetryPolicy"',
+            placeholder: 'Default',
+            options: '[\
+                                                        {value: "Default", 
label: "Default SDK retry policy"},\
+                                                        {value: 
"DefaultMaxRetries", label: "Default with the specified max retry count"},\
+                                                        {value: "DynamoDB", 
label: "Default for DynamoDB client"},\
+                                                        {value: 
"DynamoDBMaxRetries", label: "DynamoDB with the specified max retry count"},\
+                                                        {value: "Custom", 
label: "Custom configured"}\
+                                                    ]',
+            tip: 'Provides an ability to save an intermediate job state\
+                    <ul>\
+                        <li>SDK default retry policy - This policy will honor 
the maxErrorRetry set in ClientConfiguration</li>\
+                        <li>Default with the specified max retry count - 
Default SDK retry policy with the specified max retry count</li>\
+                        <li>Default for DynamoDB client - This policy will 
honor the maxErrorRetry set in ClientConfiguration</li>\
+                        <li>DynamoDB with the specified max retry count - This 
policy will honor the maxErrorRetry set in ClientConfiguration with the 
specified max retry count</li>\
+                        <li>Custom configured - Custom configured SDK retry 
policy</li>\
+                    </ul>'
+        })
     .pc-form-group.pc-form-grid-row(ng-if=checkpointS3DefaultMaxRetry)
         .pc-form-grid-col-60
-            +number-required('Maximum retry attempts:', clientRetryModel + 
'.DefaultMaxRetries.maxErrorRetry', '"checkpointS3DefaultMaxErrorRetry"', 
'true', checkpointS3DefaultMaxRetry, '-1', '1',
-            'Maximum number of retry attempts for failed requests')
+            +form-field__number({
+                label: 'Maximum retry attempts:',
+                model: clientRetryModel + '.DefaultMaxRetries.maxErrorRetry',
+                name: '"checkpointS3DefaultMaxErrorRetry"',
+                required: checkpointS3DefaultMaxRetry,
+                placeholder: '-1',
+                min: '1',
+                tip: 'Maximum number of retry attempts for failed requests'
+            })
     .pc-form-group.pc-form-grid-row(ng-if=checkpointS3DynamoDbMaxRetry)
         .pc-form-grid-col-60
-            +number-required('Maximum retry attempts:', clientRetryModel + 
'.DynamoDBMaxRetries.maxErrorRetry', '"checkpointS3DynamoDBMaxErrorRetry"', 
'true', checkpointS3DynamoDbMaxRetry, '-1', '1',
-            'Maximum number of retry attempts for failed requests')
+            +form-field__number({
+                label: 'Maximum retry attempts:',
+                model: clientRetryModel + '.DynamoDBMaxRetries.maxErrorRetry',
+                name: '"checkpointS3DynamoDBMaxErrorRetry"',
+                required: checkpointS3DynamoDbMaxRetry,
+                placeholder: '-1',
+                min: '1',
+                tip: 'Maximum number of retry attempts for failed requests'
+            })
     .pc-form-group.pc-form-grid-row(ng-if=checkpointS3CustomRetry)
         .pc-form-grid-col-60
-            +java-class('Retry condition:', clientRetryModel + 
'.Custom.retryCondition', '"checkpointS3CustomRetryPolicy"', 'true', 
checkpointS3CustomRetry,
-            'Retry condition on whether a specific request and exception 
should be retried', checkpointS3CustomRetry)
+            +form-field__java-class({
+                label: 'Retry condition:',
+                model: clientRetryModel + '.Custom.retryCondition',
+                name: '"checkpointS3CustomRetryPolicy"',
+                required: checkpointS3CustomRetry,
+                tip: 'Retry condition on whether a specific request and 
exception should be retried',
+                validationActive: checkpointS3CustomRetry
+            })
         .pc-form-grid-col-60
-            +java-class('Backoff strategy:', clientRetryModel + 
'.Custom.backoffStrategy', '"checkpointS3CustomBackoffStrategy"', 'true', 
checkpointS3CustomRetry,
-            'Back-off strategy for controlling how long the next retry should 
wait', checkpointS3CustomRetry)
+            +form-field__java-class({
+                label: 'Backoff strategy:',
+                model: clientRetryModel + '.Custom.backoffStrategy',
+                name: '"checkpointS3CustomBackoffStrategy"',
+                required: checkpointS3CustomRetry,
+                tip: 'Back-off strategy for controlling how long the next 
retry should wait',
+                validationActive: checkpointS3CustomRetry
+            })
         .pc-form-grid-col-60
-            +number-required('Maximum retry attempts:', clientRetryModel + 
'.Custom.maxErrorRetry', '"checkpointS3CustomMaxErrorRetry"', 'true', 
checkpointS3CustomRetry, '-1', '1',
-            'Maximum number of retry attempts for failed requests')
+            +form-field__number({
+                label: 'Maximum retry attempts:',
+                model: clientRetryModel + '.Custom.maxErrorRetry',
+                name: '"checkpointS3CustomMaxErrorRetry"',
+                required: checkpointS3CustomRetry,
+                placeholder: '-1',
+                min: '1',
+                tip: 'Maximum number of retry attempts for failed requests'
+            })
         .pc-form-grid-col-60
-            +checkbox('Honor the max error retry set', clientRetryModel + 
'.Custom.honorMaxErrorRetryInClientConfig', 
'"checkpointS3CustomHonorMaxErrorRetryInClientConfig"',
-            'Whether this retry policy should honor the max error retry set by 
ClientConfiguration#setMaxErrorRetry(int)')
+            +form-field__checkbox({
+                label: 'Honor the max error retry set',
+                model: clientRetryModel + 
'.Custom.honorMaxErrorRetryInClientConfig',
+                name: '"checkpointS3CustomHonorMaxErrorRetryInClientConfig"',
+                tip: 'Whether this retry policy should honor the max error 
retry set by ClientConfiguration#setMaxErrorRetry(int)'
+            })
     .pc-form-grid-col-60
-        +number('Maximum retry attempts:', clientCfgModel + '.maxErrorRetry', 
'"checkpointS3MaxErrorRetry"', 'true', '-1', '0',
-        'Maximum number of retry attempts for failed retryable requests<br/>\
-        If -1 the configured RetryPolicy will be used to control the retry 
count')
+        +form-field__number({
+            label: 'Maximum retry attempts:',
+            model: `${clientCfgModel}.maxErrorRetry`,
+            name: '"checkpointS3MaxErrorRetry"',
+            placeholder: '-1',
+            min: '0',
+            tip: 'Maximum number of retry attempts for failed retryable 
requests<br/>\
+                  If -1 the configured RetryPolicy will be used to control the 
retry count'
+        })
     .pc-form-grid-col-30
-        +number('Socket timeout:', clientCfgModel + '.socketTimeout', 
'"checkpointS3SocketTimeout"', 'true', '50000', '0',
-        'Amount of time in milliseconds to wait for data to be transfered over 
an established, open connection before the connection times out and is 
closed<br/>\
-        A value of <b>0</b> means infinity')
+        +form-field__number({
+            label: 'Socket timeout:',
+            model: `${clientCfgModel}.socketTimeout`,
+            name: '"checkpointS3SocketTimeout"',
+            placeholder: '50000',
+            min: '0',
+            tip: 'Amount of time in milliseconds to wait for data to be 
transfered over an established, open connection before the connection times out 
and is closed<br/>\
+                  A value of <b>0</b> means infinity'
+        })
     .pc-form-grid-col-30
-        +number('Connection timeout:', clientCfgModel + '.connectionTimeout', 
'"checkpointS3ConnectionTimeout"', 'true', '50000', '0',
-        'Amount of time in milliseconds to wait when initially establishing a 
connection before giving up and timing out<br/>\
-        A value of <b>0</b> means infinity')
+        +form-field__number({
+            label: 'Connection timeout:',
+            model: `${clientCfgModel}.connectionTimeout`,
+            name: '"checkpointS3ConnectionTimeout"',
+            placeholder: '50000',
+            min: '0',
+            tip: 'Amount of time in milliseconds to wait when initially 
establishing a connection before giving up and timing out<br/>\
+                  A value of <b>0</b> means infinity'
+        })
     .pc-form-grid-col-30
-        +number('Request timeout:', clientCfgModel + '.requestTimeout', 
'"checkpointS3RequestTimeout"', 'true', '0', '-1',
-        'Amount of time in milliseconds to wait for the request to complete 
before giving up and timing out<br/>\
-        A non - positive value means infinity')
+        +form-field__number({
+            label: 'Request timeout:',
+            model: `${clientCfgModel}.requestTimeout`,
+            name: '"checkpointS3RequestTimeout"',
+            placeholder: '0',
+            min: '-1',
+            tip: 'Amount of time in milliseconds to wait for the request to 
complete before giving up and timing out<br/>\
+                  A non - positive value means infinity'
+        })
     .pc-form-grid-col-30
-        +number('Idle timeout:', clientCfgModel + '.connectionMaxIdleMillis', 
'"checkpointS3ConnectionMaxIdleMillis"', 'true', '60000', '0',
-        'Maximum amount of time that an idle connection may sit in the 
connection pool and still be eligible for reuse')
+        +form-field__number({
+            label: 'Idle timeout:',
+            model: `${clientCfgModel}.connectionMaxIdleMillis`,
+            name: '"checkpointS3ConnectionMaxIdleMillis"',
+            placeholder: '60000',
+            min: '0',
+            tip: 'Maximum amount of time that an idle connection may sit in 
the connection pool and still be eligible for reuse'
+        })
     .pc-form-grid-col-30
-        +text('Signature algorithm:', clientCfgModel + '.signerOverride', 
'"checkpointS3SignerOverride"', 'false', 'Not specified',
-        'Name of the signature algorithm to use for signing requests made by 
this client')
+        +form-field__text({
+            label: 'Signature algorithm:',
+            model: `${clientCfgModel}.signerOverride`,
+            name: '"checkpointS3SignerOverride"',
+            placeholder: 'Not specified',
+            tip: 'Name of the signature algorithm to use for signing requests 
made by this client'
+        })
     .pc-form-grid-col-30
-        +number('Connection TTL:', clientCfgModel + '.connectionTTL', 
'"checkpointS3ConnectionTTL"', 'true', '-1', '-1',
-        'Expiration time in milliseconds for a connection in the connection 
pool<br/>\
-        By default, it is set to <b>-1</b>, i.e. connections do not expire')
+        +form-field__number({
+            label: 'Connection TTL:',
+            model: `${clientCfgModel}.connectionTTL`,
+            name: '"checkpointS3ConnectionTTL"',
+            placeholder: '-1',
+            min: '-1',
+            tip: 'Expiration time in milliseconds for a connection in the 
connection pool<br/>\
+                  By default, it is set to <b>-1</b>, i.e. connections do not 
expire'
+        })
     .pc-form-grid-col-60
-        +java-class('DNS resolver:', clientCfgModel + '.dnsResolver', 
'"checkpointS3DnsResolver"', 'true', 'false',
-        'DNS Resolver that should be used to for resolving AWS IP addresses', 
checkpointS3)
+        +form-field__java-class({
+            label: 'DNS resolver:',
+            model: clientCfgModel + '.dnsResolver',
+            name: '"checkpointS3DnsResolver"',
+            tip: 'DNS Resolver that should be used to for resolving AWS IP 
addresses',
+            validationActive: checkpointS3
+        })
     .pc-form-grid-col-60
-        +number('Response metadata cache size:', clientCfgModel + 
'.responseMetadataCacheSize', '"checkpointS3ResponseMetadataCacheSize"', 
'true', '50', '0',
-        'Response metadata cache size')
+        +form-field__number({
+            label: 'Response metadata cache size:',
+            model: `${clientCfgModel}.responseMetadataCacheSize`,
+            name: '"checkpointS3ResponseMetadataCacheSize"',
+            placeholder: '50',
+            min: '0',
+            tip: 'Response metadata cache size'
+        })
     .pc-form-grid-col-60
-        +java-class('SecureRandom class name:', clientCfgModel + 
'.secureRandom', '"checkpointS3SecureRandom"', 'true', 'false',
-        'SecureRandom to be used by the SDK class name', checkpointS3)
+        +form-field__java-class({
+            label: 'SecureRandom class name:',
+            model: clientCfgModel + '.secureRandom',
+            name: '"checkpointS3SecureRandom"',
+            tip: 'SecureRandom to be used by the SDK class name',
+            validationActive: checkpointS3
+        })
     .pc-form-grid-col-60
-        +number('Client execution timeout:', clientCfgModel + 
'.clientExecutionTimeout', '"checkpointS3ClientExecutionTimeout"', 'true', '0', 
'0',
-        'Amount of time in milliseconds to allow the client to complete the 
execution of an API call<br/>\
-        <b>0</b> value disables that feature')
+        +form-field__number({
+            label: 'Client execution timeout:',
+            model: `${clientCfgModel}.clientExecutionTimeout`,
+            name: '"checkpointS3ClientExecutionTimeout"',
+            placeholder: '0',
+            min: '0',
+            tip: 'Amount of time in milliseconds to allow the client to 
complete the execution of an API call<br/>\
+                  <b>0</b> value disables that feature'
+        })
     .pc-form-grid-col-60
-        +checkbox('Cache response metadata', clientCfgModel + 
'.cacheResponseMetadata', '"checkpointS3CacheResponseMetadata"', 'Cache 
response metadata')
+        +form-field__checkbox({
+            label: 'Cache response metadata',
+            model: clientCfgModel + '.cacheResponseMetadata',
+            name: '"checkpointS3CacheResponseMetadata"',
+            tip: 'Cache response metadata'
+        })
     .pc-form-grid-col-60
-        +checkbox('Use expect continue', clientCfgModel + 
'.useExpectContinue', '"checkpointS3UseExpectContinue"', 'Optional override to 
enable/disable support for HTTP/1.1 handshake utilizing EXPECT: 100-Continue')
+        +form-field__checkbox({
+            label: 'Use expect continue',
+            model: clientCfgModel + '.useExpectContinue',
+            name: '"checkpointS3UseExpectContinue"',
+            tip: 'Optional override to enable/disable support for HTTP/1.1 
handshake utilizing EXPECT: 100-Continue'
+        })
     .pc-form-grid-col-60
-        +checkbox('Use throttle retries', clientCfgModel + 
'.useThrottleRetries', '"checkpointS3UseThrottleRetries"', 'Retry throttling 
will be used')
+        +form-field__checkbox({
+            label: 'Use throttle retries',
+            model: clientCfgModel + '.useThrottleRetries',
+            name: '"checkpointS3UseThrottleRetries"',
+            tip: 'Retry throttling will be used'
+        })
     .pc-form-grid-col-60
-        +checkbox('Use reaper', clientCfgModel + '.useReaper', 
'"checkpointS3UseReaper"', 'Checks if the IdleConnectionReaper is to be 
started')
+        +form-field__checkbox({
+            label: 'Use reaper',
+            model: clientCfgModel + '.useReaper',
+            name: '"checkpointS3UseReaper"',
+            tip: 'Checks if the IdleConnectionReaper is to be started'
+        })
     .pc-form-grid-col-60
-        +checkbox('Use GZIP', clientCfgModel + '.useGzip', 
'"checkpointS3UseGzip"', 'Checks if gzip compression is used')
+        +form-field__checkbox({
+            label: 'Use GZIP',
+            model: clientCfgModel + '.useGzip',
+            name: '"checkpointS3UseGzip"',
+            tip: 'Checks if gzip compression is used'
+        })
     .pc-form-grid-col-60
-        +checkbox('Preemptively basic authentication', clientCfgModel + 
'.preemptiveBasicProxyAuth', '"checkpointS3PreemptiveBasicProxyAuth"',
-        'Attempt to authenticate preemptively against proxy servers using 
basic authentication')
+        +form-field__checkbox({
+            label: 'Preemptively basic authentication',
+            model: clientCfgModel + '.preemptiveBasicProxyAuth',
+            name: '"checkpointS3PreemptiveBasicProxyAuth"',
+            tip: 'Attempt to authenticate preemptively against proxy servers 
using basic authentication'
+        })
     .pc-form-grid-col-60
-        +checkbox('TCP KeepAlive', clientCfgModel + '.useTcpKeepAlive', 
'"checkpointS3UseTcpKeepAlive"', 'TCP KeepAlive support is enabled')
+        +form-field__checkbox({
+            label: 'TCP KeepAlive',
+            model: clientCfgModel + '.useTcpKeepAlive',
+            name: '"checkpointS3UseTcpKeepAlive"',
+            tip: 'TCP KeepAlive support is enabled'
+        })

http://git-wip-us.apache.org/repos/asf/ignite/blob/cca10d0c/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/client-connector.pug
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/client-connector.pug
 
b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/client-connector.pug
index 620137b..00c3563 100644
--- 
a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/client-connector.pug
+++ 
b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/client-connector.pug
@@ -28,49 +28,156 @@ panel-collapsible(ng-show='$ctrl.available("2.3.0")' 
ng-form=form on-open=`ui.lo
     panel-content.pca-form-row(ng-if=`$ctrl.available("2.3.0") && 
ui.isPanelLoaded('${form}')`)
         .pca-form-column-6.pc-form-grid-row
             .pc-form-grid-col-60
-                +checkbox('Enabled', connectionEnabled, 
'"ClientConnectorEnabled"', 'Flag indicating whether to configure client 
connector configuration')
+                +form-field__checkbox({
+                    label: 'Enabled',
+                    model: connectionEnabled,
+                    name: '"ClientConnectorEnabled"',
+                    tip: 'Flag indicating whether to configure client 
connector configuration'
+                })
             .pc-form-grid-col-60
-                +text-enabled('Host:', `${connectionModel}.host`, 
'"ClientConnectorHost"', connectionEnabled, 'false', 'localhost')
+                +form-field__text({
+                    label: 'Host:',
+                    model: `${connectionModel}.host`,
+                    name: '"ClientConnectorHost"',
+                    disabled: `!(${connectionEnabled})`,
+                    placeholder: 'localhost'
+                })
             .pc-form-grid-col-30
-                +number('Port:', `${connectionModel}.port`, 
'"ClientConnectorPort"', connectionEnabled, '10800', '1025')
+                +form-field__number({
+                    label: 'Port:',
+                    model: `${connectionModel}.port`,
+                    name: '"ClientConnectorPort"',
+                    disabled: `!(${connectionEnabled})`,
+                    placeholder: '10800',
+                    min: '1025'
+                })
             .pc-form-grid-col-30
-                +number('Port range:', `${connectionModel}.portRange`, 
'"ClientConnectorPortRange"', connectionEnabled, '100', '0')
+                +form-field__number({
+                    label: 'Port range:',
+                    model: `${connectionModel}.portRange`,
+                    name: '"ClientConnectorPortRange"',
+                    disabled: `!(${connectionEnabled})`,
+                    placeholder: '100',
+                    min: '0'
+                })
             .pc-form-grid-col-30
-                +number('Socket send buffer size:', 
`${connectionModel}.socketSendBufferSize`, 
'"ClientConnectorSocketSendBufferSize"', connectionEnabled, '0', '0',
-                    'Socket send buffer size<br/>\
-                    When set to <b>0</b>, operation system default will be 
used')
+                +form-field__number({
+                    label: 'Socket send buffer size:',
+                    model: `${connectionModel}.socketSendBufferSize`,
+                    name: '"ClientConnectorSocketSendBufferSize"',
+                    disabled: `!(${connectionEnabled})`,
+                    placeholder: '0',
+                    min: '0',
+                    tip: 'Socket send buffer size<br/>\
+                          When set to <b>0</b>, operation system default will 
be used'
+                })
             .pc-form-grid-col-30
-                +number('Socket receive buffer size:', 
`${connectionModel}.socketReceiveBufferSize`, 
'"ClientConnectorSocketReceiveBufferSize"', connectionEnabled, '0', '0',
-                    'Socket receive buffer size<br/>\
-                    When set to <b>0</b>, operation system default will be 
used')
+                +form-field__number({
+                    label: 'Socket receive buffer size:',
+                    model: `${connectionModel}.socketReceiveBufferSize`,
+                    name: '"ClientConnectorSocketReceiveBufferSize"',
+                    disabled: `!(${connectionEnabled})`,
+                    placeholder: '0',
+                    min: '0',
+                    tip: 'Socket receive buffer size<br/>\
+                          When set to <b>0</b>, operation system default will 
be used'
+                })
             .pc-form-grid-col-30
-                +number('Max connection cursors:', 
`${connectionModel}.maxOpenCursorsPerConnection`, 
'"ClientConnectorMaxOpenCursorsPerConnection"', connectionEnabled, '128', '0',
-                    'Max number of opened cursors per connection')
+                +form-field__number({
+                    label: 'Max connection cursors:',
+                    model: `${connectionModel}.maxOpenCursorsPerConnection`,
+                    name: '"ClientConnectorMaxOpenCursorsPerConnection"',
+                    disabled: `!(${connectionEnabled})`,
+                    placeholder: '128',
+                    min: '0',
+                    tip: 'Max number of opened cursors per connection'
+                })
             .pc-form-grid-col-30
-                +number('Pool size:', `${connectionModel}.threadPoolSize`, 
'"ClientConnectorThreadPoolSize"', connectionEnabled, 'max(8, 
availableProcessors)', '1',
-                    'Size of thread pool that is in charge of processing SQL 
requests')
+                +form-field__number({
+                    label: 'Pool size:',
+                    model: `${connectionModel}.threadPoolSize`,
+                    name: '"ClientConnectorThreadPoolSize"',
+                    disabled: `!(${connectionEnabled})`,
+                    placeholder: 'max(8, availableProcessors)',
+                    min: '1',
+                    tip: 'Size of thread pool that is in charge of processing 
SQL requests'
+                })
             .pc-form-grid-col-60
-                +checkbox-enabled('TCP_NODELAY option', 
`${connectionModel}.tcpNoDelay`, '"ClientConnectorTcpNoDelay"', 
connectionEnabled)
+                +form-field__checkbox({
+                    label: 'TCP_NODELAY option',
+                    model: `${connectionModel}.tcpNoDelay`,
+                    name: '"ClientConnectorTcpNoDelay"',
+                    disabled: `!${connectionEnabled}`
+                })
             .pc-form-grid-col-60(ng-if='$ctrl.available("2.4.0")')
-                +number('Idle timeout:', `${connectionModel}.idleTimeout`, 
'"ClientConnectorIdleTimeout"', connectionEnabled, '0', '-1',
-                    'Idle timeout for client connections<br/>\
-                    Zero or negative means no timeout')
+                +form-field__number({
+                    label: 'Idle timeout:',
+                    model: `${connectionModel}.idleTimeout`,
+                    name: '"ClientConnectorIdleTimeout"',
+                    disabled: `!(${connectionEnabled})`,
+                    placeholder: '0',
+                    min: '-1',
+                    tip: 'Idle timeout for client connections<br/>\
+                         Zero or negative means no timeout'
+                })
             .pc-form-grid-col-60(ng-if-start='$ctrl.available("2.5.0")')
-                +checkbox-enabled('Enable SSL', 
`${connectionModel}.sslEnabled`, '"ClientConnectorSslEnabled"', 
connectionEnabled, 'Enable secure socket layer on client connector')
+                +form-field__checkbox({
+                    label: 'Enable SSL',
+                    model: `${connectionModel}.sslEnabled`,
+                    name: '"ClientConnectorSslEnabled"',
+                    disabled: `!${connectionEnabled}`,
+                    tip: 'Enable secure socket layer on client connector'
+                })
             .pc-form-grid-col-60
-                +checkbox-enabled('Enable SSL client auth', 
`${connectionModel}.sslClientAuth`, '"ClientConnectorSslClientAuth"', 
sslEnabled, 'Flag indicating whether or not SSL client authentication is 
required')
+                +form-field__checkbox({
+                    label: 'Enable SSL client auth',
+                    model: `${connectionModel}.sslClientAuth`,
+                    name: '"ClientConnectorSslClientAuth"',
+                    disabled: `!(${sslEnabled})`,
+                    tip: 'Flag indicating whether or not SSL client 
authentication is required'
+                })
             .pc-form-grid-col-60
-                +checkbox-enabled('Use Ignite SSL', 
`${connectionModel}.useIgniteSslContextFactory`, 
'"ClientConnectorUseIgniteSslContextFactory"', sslEnabled, 'Use SSL factory 
Ignite configuration')
+                +form-field__checkbox({
+                    label: 'Use Ignite SSL',
+                    model: `${connectionModel}.useIgniteSslContextFactory`,
+                    name: '"ClientConnectorUseIgniteSslContextFactory"',
+                    disabled: `!(${sslEnabled})`,
+                    tip: 'Use SSL factory Ignite configuration'
+                })
             .pc-form-grid-col-60(ng-if-end)
-                +java-class('SSL factory:', 
`${connectionModel}.sslContextFactory`, '"ClientConnectorSslContextFactory"', 
sslFactoryEnabled, sslFactoryEnabled,
-                'If SSL factory specified then replication will be performed 
through secure SSL channel created with this factory<br/>\
-                If not present <b>isUseIgniteSslContextFactory()</b> flag will 
be evaluated<br/>\
-                If set to <b>true</b> and 
<b>IgniteConfiguration#getSslContextFactory()</b> exists, then Ignite SSL 
context factory will be used to establish secure connection')
+                +form-field__java-class({
+                    label:'SSL factory:',
+                    model: `${connectionModel}.sslContextFactory`,
+                    name: '"ClientConnectorSslContextFactory"',
+                    disabled: `!(${sslFactoryEnabled})`,
+                    required: sslFactoryEnabled,
+                    tip: 'If SSL factory specified then replication will be 
performed through secure SSL channel created with this factory<br/>\
+                          If not present <b>isUseIgniteSslContextFactory()</b> 
flag will be evaluated<br/>\
+                          If set to <b>true</b> and 
<b>IgniteConfiguration#getSslContextFactory()</b> exists, then Ignite SSL 
context factory will be used to establish secure connection'
+                })
             .pc-form-grid-col-60(ng-if-start='$ctrl.available("2.4.0")')
-                +checkbox-enabled('JDBC Enabled', 
`${connectionModel}.jdbcEnabled`, '"ClientConnectorJdbcEnabled"', 
connectionEnabled, 'Access through JDBC is enabled')
+                +form-field__checkbox({
+                    label: 'JDBC Enabled',
+                    model: `${connectionModel}.jdbcEnabled`,
+                    name: '"ClientConnectorJdbcEnabled"',
+                    disabled: `!${connectionEnabled}`,
+                    tip: 'Access through JDBC is enabled'
+                })
             .pc-form-grid-col-60
-                +checkbox-enabled('ODBC Enabled', 
`${connectionModel}.odbcEnabled`, '"ClientConnectorOdbcEnabled"', 
connectionEnabled, 'Access through ODBC is enabled')
+                +form-field__checkbox({
+                    label: 'ODBC Enabled',
+                    model: `${connectionModel}.odbcEnabled`,
+                    name: '"ClientConnectorOdbcEnabled"',
+                    disabled: `!${connectionEnabled}`,
+                    tip: 'Access through ODBC is enabled'
+                })
             .pc-form-grid-col-60(ng-if-end)
-                +checkbox-enabled('Thin client enabled', 
`${connectionModel}.thinClientEnabled`, '"ClientConnectorThinCliEnabled"', 
connectionEnabled, 'Access through thin client is enabled')
+                +form-field__checkbox({
+                    label: 'Thin client enabled',
+                    model: `${connectionModel}.thinClientEnabled`,
+                    name: '"ClientConnectorThinCliEnabled"',
+                    disabled: `!${connectionEnabled}`,
+                    tip: 'Access through thin client is enabled'
+                })
         .pca-form-column-6
             +preview-xml-java(model, 'clusterClientConnector')

http://git-wip-us.apache.org/repos/asf/ignite/blob/cca10d0c/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/collision.pug
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/collision.pug
 
b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/collision.pug
index c315af1..e3cacd3 100644
--- 
a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/collision.pug
+++ 
b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/collision.pug
@@ -23,27 +23,32 @@ include /app/helpers/jade/mixins
 panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`)
     panel-title Collision configuration
     panel-description
-        | Configuration Collision SPI allows to regulate how grid jobs get 
executed when they arrive on a destination node for execution. 
+        | Configuration Collision SPI allows to regulate how grid jobs get 
executed when they arrive on a destination node for execution.
         | 
#[a.link-success(href="https://apacheignite.readme.io/docs/job-scheduling"; 
target="_blank") More info]
     panel-content.pca-form-row(ng-if=`ui.isPanelLoaded('${form}')`)
         .pca-form-column-6.pc-form-grid-row
             .pc-form-grid-col-60
-                +dropdown('CollisionSpi:', modelCollisionKind, 
'"collisionKind"', 'true', '',
-                    '[\
+                +form-field__dropdown({
+                    label:'CollisionSpi:',
+                    model: modelCollisionKind,
+                    name: '"collisionKind"',
+                    placeholder: 'Choose discovery',
+                    options: '[\
                         {value: "JobStealing", label: "Job stealing"},\
                         {value: "FifoQueue", label: "FIFO queue"},\
                         {value: "PriorityQueue", label: "Priority queue"},\
                         {value: "Custom", label: "Custom"},\
                         {value: "Noop", label: "Default"}\
                     ]',
-                    'Regulate how grid jobs get executed when they arrive on a 
destination node for execution\
-                    <ul>\
-                        <li>Job stealing - supports job stealing from 
over-utilized nodes to under-utilized nodes</li>\
-                        <li>FIFO queue - jobs are ordered as they arrived</li>\
-                        <li>Priority queue - jobs are first ordered by their 
priority</li>\
-                        <li>Custom - custom CollisionSpi implementation</li>\
-                        <li>Default - jobs are activated immediately on 
arrival to mapped node</li>\
-                    </ul>')
+                    tip: 'Regulate how grid jobs get executed when they arrive 
on a destination node for execution\
+                       <ul>\
+                           <li>Job stealing - supports job stealing from 
over-utilized nodes to under-utilized nodes</li>\
+                           <li>FIFO queue - jobs are ordered as they 
arrived</li>\
+                           <li>Priority queue - jobs are first ordered by 
their priority</li>\
+                           <li>Custom - custom CollisionSpi 
implementation</li>\
+                           <li>Default - jobs are activated immediately on 
arrival to mapped node</li>\
+                       </ul>'
+                })
             .pc-form-group(ng-show=`${modelCollisionKind} !== 'Noop'`)
                 .pc-form-grid-row(ng-show=`${modelCollisionKind} === 
'JobStealing'`)
                     include ./collision/job-stealing

http://git-wip-us.apache.org/repos/asf/ignite/blob/cca10d0c/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/collision/custom.pug
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/collision/custom.pug
 
b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/collision/custom.pug
index c1d11d5..64bd5e4 100644
--- 
a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/collision/custom.pug
+++ 
b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/collision/custom.pug
@@ -20,4 +20,11 @@ include /app/helpers/jade/mixins
 -var required = '$ctrl.clonedCluster.collision.kind === "Custom"'
 
 .pc-form-grid-col-60
-    +java-class('Class:', `${model}.class`, '"collisionCustom"', 'true', 
required, 'CollisionSpi implementation class', required)
+    +form-field__java-class({
+        label: 'Class:',
+        model: `${model}.class`,
+        name: '"collisionCustom"',
+        required: required,
+        tip: 'CollisionSpi implementation class',
+        validationActive: required
+    })

http://git-wip-us.apache.org/repos/asf/ignite/blob/cca10d0c/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/collision/fifo-queue.pug
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/collision/fifo-queue.pug
 
b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/collision/fifo-queue.pug
index c009386..de795b7 100644
--- 
a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/collision/fifo-queue.pug
+++ 
b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/collision/fifo-queue.pug
@@ -19,8 +19,20 @@ include /app/helpers/jade/mixins
 -var model = '$ctrl.clonedCluster.collision.FifoQueue'
 
 .pc-form-grid-col-30
-    +number('Parallel jobs number:', `${model}.parallelJobsNumber`, 
'"fifoParallelJobsNumber"', 'true', 'availableProcessors * 2', '1',
-        'Number of jobs that can be executed in parallel')
+    +form-field__number({
+        label: 'Parallel jobs number:',
+        model: `${model}.parallelJobsNumber`,
+        name: '"fifoParallelJobsNumber"',
+        placeholder: 'availableProcessors * 2',
+        min: '1',
+        tip: 'Number of jobs that can be executed in parallel'
+    })
 .pc-form-grid-col-30
-    +number('Wait jobs number:', `${model}.waitingJobsNumber`, 
'"fifoWaitingJobsNumber"', 'true', 'Integer.MAX_VALUE', '0',
-        'Maximum number of jobs that are allowed to wait in waiting queue')
+    +form-field__number({
+        label: 'Wait jobs number:',
+        model: `${model}.waitingJobsNumber`,
+        name: '"fifoWaitingJobsNumber"',
+        placeholder: 'Integer.MAX_VALUE',
+        min: '0',
+        tip: 'Maximum number of jobs that are allowed to wait in waiting queue'
+    })

http://git-wip-us.apache.org/repos/asf/ignite/blob/cca10d0c/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/collision/job-stealing.pug
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/collision/job-stealing.pug
 
b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/collision/job-stealing.pug
index 10e0d7d..8722544 100644
--- 
a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/collision/job-stealing.pug
+++ 
b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/collision/job-stealing.pug
@@ -20,30 +20,63 @@ include /app/helpers/jade/mixins
 -var stealingAttributes = `${model}.stealingAttributes`
 
 .pc-form-grid-col-30
-    +number('Active jobs threshold:', `${model}.activeJobsThreshold`, 
'"jsActiveJobsThreshold"', 'true', '95', '0',
-        'Number of jobs that can be executed in parallel')
+    +form-field__number({
+        label: 'Active jobs threshold:',
+        model: `${model}.activeJobsThreshold`,
+        name: '"jsActiveJobsThreshold"',
+        placeholder: '95',
+        min: '0',
+        tip: 'Number of jobs that can be executed in parallel'
+    })
 .pc-form-grid-col-30
-    +number('Wait jobs threshold:', `${model}.waitJobsThreshold`, 
'"jsWaitJobsThreshold"', 'true', '0', '0',
-        'Job count threshold at which this node will start stealing jobs from 
other nodes')
+    +form-field__number({
+        label: 'Wait jobs threshold:',
+        model: `${model}.waitJobsThreshold`,
+        name: '"jsWaitJobsThreshold"',
+        placeholder: '0',
+        min: '0',
+        tip: 'Job count threshold at which this node will start stealing jobs 
from other nodes'
+    })
 .pc-form-grid-col-30
-    +number('Message expire time:', `${model}.messageExpireTime`, 
'"jsMessageExpireTime"', 'true', '1000', '1',
-        'Message expire time in ms')
+    +form-field__number({
+        label: 'Message expire time:',
+        model: `${model}.messageExpireTime`,
+        name: '"jsMessageExpireTime"',
+        placeholder: '1000',
+        min: '1',
+        tip: 'Message expire time in ms'
+    })
 .pc-form-grid-col-30
-    +number('Maximum stealing attempts:', `${model}.maximumStealingAttempts`, 
'"jsMaximumStealingAttempts"', 'true', '5', '1',
-        'Maximum number of attempts to steal job by another node')
+    +form-field__number({
+        label: 'Maximum stealing attempts:',
+        model: `${model}.maximumStealingAttempts`,
+        name: '"jsMaximumStealingAttempts"',
+        placeholder: '5',
+        min: '1',
+        tip: 'Maximum number of attempts to steal job by another node'
+    })
 .pc-form-grid-col-60
-    +checkbox('Stealing enabled', `${model}.stealingEnabled`, 
'"jsStealingEnabled"',
-        'Node should attempt to steal jobs from other nodes')
+    +form-field__checkbox({
+        label: 'Stealing enabled',
+        model: `${model}.stealingEnabled`,
+        name: '"jsStealingEnabled"',
+        tip: 'Node should attempt to steal jobs from other nodes'
+    })
 .pc-form-grid-col-60
-    +java-class('External listener:', `${model}.externalCollisionListener`, 
'"jsExternalCollisionListener"', 'true', 'false',
-        'Listener to be set for notification of external collision events', 
'$ctrl.clonedCluster.collision.kind === "JobStealing"')
+    +form-field__java-class({
+        label: 'External listener:',
+        model: `${model}.externalCollisionListener`,
+        name: '"jsExternalCollisionListener"',
+        tip: 'Listener to be set for notification of external collision 
events',
+        validationActive: '$ctrl.clonedCluster.collision.kind === 
"JobStealing"'
+    })
 .pc-form-grid-col-60
     .ignite-form-field
         +form-field__label({ label: 'Stealing attributes:', name: 
'"stealingAttributes"' })
             +form-field__tooltip(`Configuration parameter to enable stealing 
to/from only nodes that have these attributes set`)
         +list-pair-edit({
             items: stealingAttributes,
-            keyLbl: 'Attribute name', 
+            keyLbl: 'Attribute name',
             valLbl: 'Attribute value',
             itemName: 'stealing attribute',
             itemsName: 'stealing attributes'

http://git-wip-us.apache.org/repos/asf/ignite/blob/cca10d0c/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/collision/priority-queue.pug
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/collision/priority-queue.pug
 
b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/collision/priority-queue.pug
index fd198ce..c8ae733 100644
--- 
a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/collision/priority-queue.pug
+++ 
b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/collision/priority-queue.pug
@@ -19,23 +19,61 @@ include /app/helpers/jade/mixins
 -var model = '$ctrl.clonedCluster.collision.PriorityQueue'
 
 .pc-form-grid-col-30
-    +number('Parallel jobs number:', `${model}.parallelJobsNumber`, 
'"priorityParallelJobsNumber"', 'true', 'availableProcessors * 2', '1',
-        'Number of jobs that can be executed in parallel')
+    +form-field__number({
+        label: 'Parallel jobs number:',
+        model: `${model}.parallelJobsNumber`,
+        name: '"priorityParallelJobsNumber"',
+        placeholder: 'availableProcessors * 2',
+        min: '1',
+        tip: 'Number of jobs that can be executed in parallel'
+    })
 .pc-form-grid-col-30
-    +number('Waiting jobs number:', `${model}.waitingJobsNumber`, 
'"priorityWaitingJobsNumber"', 'true', 'Integer.MAX_VALUE', '0',
-        'Maximum number of jobs that are allowed to wait in waiting queue')
+    +form-field__number({
+        label: 'Waiting jobs number:',
+        model: `${model}.waitingJobsNumber`,
+        name: '"priorityWaitingJobsNumber"',
+        placeholder: 'Integer.MAX_VALUE',
+        min: '0',
+        tip: 'Maximum number of jobs that are allowed to wait in waiting queue'
+    })
 .pc-form-grid-col-30
-    +text('Priority attribute key:', `${model}.priorityAttributeKey`, 
'"priorityPriorityAttributeKey"', 'false', 'grid.task.priority',
-        'Task priority attribute key')
+    +form-field__text({
+        label: 'Priority attribute key:',
+        model: `${model}.priorityAttributeKey`,
+        name: '"priorityPriorityAttributeKey"',
+        placeholder: 'grid.task.priority',
+        tip: 'Task priority attribute key'
+    })
 .pc-form-grid-col-30
-    +text('Job priority attribute key:', `${model}.jobPriorityAttributeKey`, 
'"priorityJobPriorityAttributeKey"', 'false', 'grid.job.priority',
-        'Job priority attribute key')
+    +form-field__text({
+        label: 'Job priority attribute key:',
+        model: `${model}.jobPriorityAttributeKey`,
+        name: '"priorityJobPriorityAttributeKey"',
+        placeholder: 'grid.job.priority',
+        tip: 'Job priority attribute key'
+    })
 .pc-form-grid-col-30
-    +number('Default priority:', `${model}.defaultPriority`, 
'"priorityDefaultPriority"', 'true', '0', '0',
-        'Default priority to use if a job does not have priority attribute 
set')
+    +form-field__number({
+        label: 'Default priority:',
+        model: `${model}.defaultPriority`,
+        name: '"priorityDefaultPriority"',
+        placeholder: '0',
+        min: '0',
+        tip: 'Default priority to use if a job does not have priority 
attribute set'
+    })
 .pc-form-grid-col-30
-    +number('Starvation increment:', `${model}.starvationIncrement`, 
'"priorityStarvationIncrement"', 'true', '1', '0',
-        'Value to increment job priority by every time a lower priority job 
gets behind a higher priority job')
+    +form-field__number({
+        label: 'Starvation increment:',
+        model: `${model}.starvationIncrement`,
+        name: '"priorityStarvationIncrement"',
+        placeholder: '1',
+        min: '0',
+        tip: 'Value to increment job priority by every time a lower priority 
job gets behind a higher priority job'
+    })
 .pc-form-grid-col-60
-    +checkbox('Starvation prevention enabled', 
`${model}.starvationPreventionEnabled`, '"priorityStarvationPreventionEnabled"',
-        'Job starvation prevention is enabled')
+    +form-field__checkbox({
+        label: 'Starvation prevention enabled',
+        model: `${model}.starvationPreventionEnabled`,
+        name: '"priorityStarvationPreventionEnabled"',
+        tip: 'Job starvation prevention is enabled'
+    })

http://git-wip-us.apache.org/repos/asf/ignite/blob/cca10d0c/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/communication.pug
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/communication.pug
 
b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/communication.pug
index c94ea40..cdf473a 100644
--- 
a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/communication.pug
+++ 
b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/communication.pug
@@ -24,28 +24,82 @@ panel-collapsible(ng-form=form 
on-open=`ui.loadPanel('${form}')`)
     panel-title Communication
     panel-description
         | Configuration of communication with other nodes by TCP/IP.
-        | Provide basic plumbing to send and receive grid messages and is 
utilized for all distributed grid operations. 
+        | Provide basic plumbing to send and receive grid messages and is 
utilized for all distributed grid operations.
         | 
#[a.link-success(href="https://apacheignite.readme.io/docs/network-config"; 
target="_blank") More info]
     panel-content.pca-form-row(ng-if=`ui.isPanelLoaded('${form}')`)
         .pca-form-column-6.pc-form-grid-row
             .pc-form-grid-col-30
-                +number('Timeout:', `${model}.networkTimeout`, 
'"commNetworkTimeout"', 'true', '5000', '1', 'Maximum timeout in milliseconds 
for network requests')
+                +form-field__number({
+                    label: 'Timeout:',
+                    model: `${model}.networkTimeout`,
+                    name: '"commNetworkTimeout"',
+                    placeholder: '5000',
+                    min: '1',
+                    tip: 'Maximum timeout in milliseconds for network requests'
+                })
             .pc-form-grid-col-30
-                +number('Send retry delay:', `${model}.networkSendRetryDelay`, 
'"networkSendRetryDelay"', 'true', '1000', '1', 'Interval in milliseconds 
between message send retries')
+                +form-field__number({
+                    label: 'Send retry delay:',
+                    model: `${model}.networkSendRetryDelay`,
+                    name: '"networkSendRetryDelay"',
+                    placeholder: '1000',
+                    min: '1',
+                    tip: 'Interval in milliseconds between message send 
retries'
+                })
             .pc-form-grid-col-30
-                +number('Send retry count:', `${model}.networkSendRetryCount`, 
'"networkSendRetryCount"', 'true', '3', '1', 'Message send retries count')
+                +form-field__number({
+                    label: 'Send retry count:',
+                    model: `${model}.networkSendRetryCount`,
+                    name: '"networkSendRetryCount"',
+                    placeholder: '3',
+                    min: '1',
+                    tip: 'Message send retries count'
+                })
             .pc-form-grid-col-30(ng-if='$ctrl.available(["1.0.0", "2.3.0"])')
-                +number('Discovery startup delay:', 
`${model}.discoveryStartupDelay`, '"discoveryStartupDelay"', 'true', '60000', 
'1', 'This value is used to expire messages from waiting list whenever node 
discovery discrepancies happen')
+                +form-field__number({
+                    label: 'Discovery startup delay:',
+                    model: `${model}.discoveryStartupDelay`,
+                    name: '"discoveryStartupDelay"',
+                    placeholder: '60000',
+                    min: '1',
+                    tip: 'This value is used to expire messages from waiting 
list whenever node discovery discrepancies happen'
+                })
             .pc-form-grid-col-60
-                +java-class('Communication listener:', 
`${communication}.listener`, '"comListener"', 'true', 'false', 'Listener of 
communication events')
+                +form-field__java-class({
+                    label: 'Communication listener:',
+                    model: `${communication}.listener`,
+                    name: '"comListener"',
+                    tip: 'Listener of communication events'
+                })
             .pc-form-grid-col-30
-                +text-ip-address('Local IP address:', 
`${communication}.localAddress`, '"comLocalAddress"', 'true', '0.0.0.0',
-                    'Local host address for socket binding<br/>\
-                    If not specified use all available addres on local host')
+                +form-field__ip-address({
+                    label: 'Local IP address:',
+                    model: `${communication}.localAddress`,
+                    name: '"comLocalAddress"',
+                    enabled: 'true',
+                    placeholder: '0.0.0.0',
+                    tip: 'Local host address for socket binding<br/>\
+                         If not specified use all available addres on local 
host'
+                })
             .pc-form-grid-col-30
-                +number-min-max('Local port:', `${communication}.localPort`, 
'"comLocalPort"', 'true', '47100', '1024', '65535', 'Local port for socket 
binding')
+                +form-field__number({
+                    label: 'Local port:',
+                    model: `${communication}.localPort`,
+                    name: '"comLocalPort"',
+                    placeholder: '47100',
+                    min: '1024',
+                    max: '65535',
+                    tip: 'Local port for socket binding'
+                })
             .pc-form-grid-col-30
-                +number('Local port range:', 
`${communication}.localPortRange`, '"comLocalPortRange"', 'true', '100', '1', 
'Local port range for local host ports')
+                +form-field__number({
+                    label: 'Local port range:',
+                    model: `${communication}.localPortRange`,
+                    name: '"comLocalPortRange"',
+                    placeholder: '100',
+                    min: '1',
+                    tip: 'Local port range for local host ports'
+                })
             .pc-form-grid-col-30
                 +form-field__number({
                     label: 'Shared memory port:',
@@ -60,21 +114,68 @@ panel-collapsible(ng-form=form 
on-open=`ui.loadPanel('${form}')`)
                 )
                     +form-field__error({ error: 'notInCollection', message: 
'Shared memory port should be more than "{{ 
::$ctrl.Clusters.sharedMemoryPort.invalidValues[0] }}" or equal to "{{ 
::$ctrl.Clusters.sharedMemoryPort.min }}"' })
             .pc-form-grid-col-30
-                +number('Idle connection timeout:', 
`${communication}.idleConnectionTimeout`, '"idleConnectionTimeout"', 'true', 
'30000', '1',
-                    'Maximum idle connection timeout upon which a connection 
to client will be closed')
+                +form-field__number({
+                    label: 'Idle connection timeout:',
+                    model: `${communication}.idleConnectionTimeout`,
+                    name: '"idleConnectionTimeout"',
+                    placeholder: '30000',
+                    min: '1',
+                    tip: 'Maximum idle connection timeout upon which a 
connection to client will be closed'
+                })
             .pc-form-grid-col-30
-                +number('Connect timeout:', `${communication}.connectTimeout`, 
'"connectTimeout"', 'true', '5000', '0', 'Connect timeout used when 
establishing connection with remote nodes')
+                +form-field__number({
+                    label: 'Connect timeout:',
+                    model: `${communication}.connectTimeout`,
+                    name: '"connectTimeout"',
+                    placeholder: '5000',
+                    min: '0',
+                    tip: 'Connect timeout used when establishing connection 
with remote nodes'
+                })
             .pc-form-grid-col-30
-                +number('Max. connect timeout:', 
`${communication}.maxConnectTimeout`, '"maxConnectTimeout"', 'true', '600000', 
'0', 'Maximum connect timeout')
+                +form-field__number({
+                    label: 'Max. connect timeout:',
+                    model: `${communication}.maxConnectTimeout`,
+                    name: '"maxConnectTimeout"',
+                    placeholder: '600000',
+                    min: '0',
+                    tip: 'Maximum connect timeout'
+                })
             .pc-form-grid-col-30
-                +number('Reconnect count:', `${communication}.reconnectCount`, 
'"comReconnectCount"', 'true', '10', '1',
-                    'Maximum number of reconnect attempts used when 
establishing connection with remote nodes')
+                +form-field__number({
+                    label: 'Reconnect count:',
+                    model: `${communication}.reconnectCount`,
+                    name: '"comReconnectCount"',
+                    placeholder: '10',
+                    min: '1',
+                    tip: 'Maximum number of reconnect attempts used when 
establishing connection with remote nodes'
+                })
             .pc-form-grid-col-30
-                +number('Socket send buffer:', 
`${communication}.socketSendBuffer`, '"socketSendBuffer"', 'true', '32768', 
'0', 'Send buffer size for sockets created or accepted by this SPI')
+                +form-field__number({
+                    label: 'Socket send buffer:',
+                    model: `${communication}.socketSendBuffer`,
+                    name: '"socketSendBuffer"',
+                    placeholder: '32768',
+                    min: '0',
+                    tip: 'Send buffer size for sockets created or accepted by 
this SPI'
+                })
             .pc-form-grid-col-30
-                +number('Socket receive buffer:', 
`${communication}.socketReceiveBuffer`, '"socketReceiveBuffer"', 'true', 
'32768', '0', 'Receive buffer size for sockets created or accepted by this SPI')
+                +form-field__number({
+                    label: 'Socket receive buffer:',
+                    model: `${communication}.socketReceiveBuffer`,
+                    name: '"socketReceiveBuffer"',
+                    placeholder: '32768',
+                    min: '0',
+                    tip: 'Receive buffer size for sockets created or accepted 
by this SPI'
+                })
             .pc-form-grid-col-30
-                +number('Slow client queue limit:', 
`${communication}.slowClientQueueLimit`, '"slowClientQueueLimit"', 'true', '0', 
'0', 'Slow client queue limit')
+                +form-field__number({
+                    label: 'Slow client queue limit:',
+                    model: `${communication}.slowClientQueueLimit`,
+                    name: '"slowClientQueueLimit"',
+                    placeholder: '0',
+                    min: '0',
+                    tip: 'Slow client queue limit'
+                })
             .pc-form-grid-col-30
                 +form-field__number({
                     label: 'Ack send threshold:',
@@ -117,18 +218,51 @@ panel-collapsible(ng-form=form 
on-open=`ui.loadPanel('${form}')`)
                     }`
                 )
             .pc-form-grid-col-30
-                +number('Socket write timeout:', 
`${communication}.socketWriteTimeout`, '"socketWriteTimeout"', 'true', '2000', 
'0', 'Socket write timeout')
+                +form-field__number({
+                    label: 'Socket write timeout:',
+                    model: `${communication}.socketWriteTimeout`,
+                    name: '"socketWriteTimeout"',
+                    placeholder: '2000',
+                    min: '0',
+                    tip: 'Socket write timeout'
+                })
             .pc-form-grid-col-30
-                +number('Selectors count:', `${communication}.selectorsCount`, 
'"selectorsCount"', 'true', 'min(4, availableProcessors)', '1', 'Count of 
selectors te be used in TCP server')
+                +form-field__number({
+                    label: 'Selectors count:',
+                    model: `${communication}.selectorsCount`,
+                    name: '"selectorsCount"',
+                    placeholder: 'min(4, availableProcessors)',
+                    min: '1',
+                    tip: 'Count of selectors te be used in TCP server'
+                })
             .pc-form-grid-col-60
-                +java-class('Address resolver:', 
`${communication}.addressResolver`, '"comAddressResolver"', 'true', 'false', 
'Provides resolution between external and internal addresses')
+                +form-field__java-class({
+                    label: 'Address resolver:',
+                    model: `${communication}.addressResolver`,
+                    name: '"comAddressResolver"',
+                    tip: 'Provides resolution between external and internal 
addresses'
+                })
             .pc-form-grid-col-60
-                +checkbox('Direct buffer', `${communication}.directBuffer`, 
'"directBuffer"',
-                'If value is true, then SPI will use 
ByteBuffer.allocateDirect(int) call<br/>\
-                Otherwise, SPI will use ByteBuffer.allocate(int) call')
+                +form-field__checkbox({
+                    label: 'Direct buffer',
+                    model: `${communication}.directBuffer`,
+                    name: '"directBuffer"',
+                    tip: 'If value is true, then SPI will use 
ByteBuffer.allocateDirect(int) call<br/>\
+                          Otherwise, SPI will use ByteBuffer.allocate(int) 
call'
+                })
             .pc-form-grid-col-60
-                +checkbox('Direct send buffer', 
`${communication}.directSendBuffer`, '"directSendBuffer"', 'Flag defining 
whether direct send buffer should be used')
+                +form-field__checkbox({
+                    label: 'Direct send buffer',
+                    model: `${communication}.directSendBuffer`,
+                    name: '"directSendBuffer"',
+                    tip: 'Flag defining whether direct send buffer should be 
used'
+                })
             .pc-form-grid-col-60
-                +checkbox('TCP_NODELAY option', `${communication}.tcpNoDelay`, 
'"tcpNoDelay"', 'Value for TCP_NODELAY socket option')
+                +form-field__checkbox({
+                    label: 'TCP_NODELAY option',
+                    model: `${communication}.tcpNoDelay`,
+                    name: '"tcpNoDelay"',
+                    tip: 'Value for TCP_NODELAY socket option'
+                })
         .pca-form-column-6
             +preview-xml-java(model, 'clusterCommunication')

Reply via email to