code: @Override
  	protected void preparePaintComponent(final Request request) {
  		super.preparePaintComponent(request);
  
  		if (!isInitialised()) {
  			setInitialised(true);
  			setBean(new MyDemoBean());
  		}
  
  		// Handle readOnly state
  		checkBoxSelect.setReadOnly(readOnly.isSelected());
  		multiDropdown.setReadOnly(readOnly.isSelected());
  		multiSelect.setReadOnly(readOnly.isSelected());
  		multiSelectPair.setReadOnly(readOnly.isSelected());
  		dropdown.setReadOnly(readOnly.isSelected());
  		radioButtonSelect.setReadOnly(readOnly.isSelected());
  		singleSelect.setReadOnly(readOnly.isSelected());
  		checkBox.setReadOnly(readOnly.isSelected());
  		dateField.setReadOnly(readOnly.isSelected());
  		emailField.setReadOnly(readOnly.isSelected());
  		fileWidget.setReadOnly(readOnly.isSelected());
  		multiFileWidget.setReadOnly(readOnly.isSelected());
  		multiTextField.setReadOnly(readOnly.isSelected());
  		numberField.setReadOnly(readOnly.isSelected());
  		partialDateField.setReadOnly(readOnly.isSelected());
  		phoneNumberField.setReadOnly(readOnly.isSelected());
  		radioButton.setReadOnly(readOnly.isSelected());
  		shuffler.setReadOnly(readOnly.isSelected());
  		textField.setReadOnly(readOnly.isSelected());
  		textArea.setReadOnly(readOnly.isSelected());
  		radioButton1.setReadOnly(readOnly.isSelected());
  		radioButton2.setReadOnly(readOnly.isSelected());
  		radioButton3.setReadOnly(readOnly.isSelected());
  
  		radioButtonGroupValue.setText("Value: " + radioButtonGroup2.getValueAsString());
  
  		// Handle RadioButtonGroup (not a subordinate target)
  		radioButtonGroup2.setMandatory(mandatory.isSelected());
  		radioButtonGroup2.setDisabled(disabled.isSelected());
  	}
docs: {@inheritDoc}