def __init__(self): super(ComboBoxStartsWithExample, self).__init__() self.setSpacing(True) # Creates a new combobox using an existing container l = ComboBox('Please select your country', ExampleUtil.getISO3166Container()) # Sets the combobox to show a certain property as the item caption l.setItemCaptionPropertyId(ExampleUtil.iso3166_PROPERTY_NAME) l.setItemCaptionMode(AbstractSelect.ITEM_CAPTION_MODE_PROPERTY) # Sets the icon to use with the items l.setItemIconPropertyId(ExampleUtil.iso3166_PROPERTY_FLAG) # Set a reasonable width l.setWidth(350, self.UNITS_PIXELS) # Set the appropriate filtering mode for this example l.setFilteringMode(IFiltering.FILTERINGMODE_STARTSWITH) l.setImmediate(True) l.addListener(self, IValueChangeListener) # Disallow null selections l.setNullSelectionAllowed(False) self.addComponent(l)
class PersonFieldFactory(DefaultFieldFactory): def __init__(self, c): self._c = c super(PersonFieldFactory, self).__init__() self.countries = ComboBox("Country") self.countries.setWidth("100%") self.countries.setContainerDataSource(ExampleUtil.getISO3166Container()) self.countries.setItemCaptionPropertyId(ExampleUtil.iso3166_PROPERTY_NAME) self.countries.setItemIconPropertyId(ExampleUtil.iso3166_PROPERTY_FLAG) self.countries.setFilteringMode(ComboBox.FILTERINGMODE_STARTSWITH) def createField(self, item, propertyId, uiContext): if "countryCode" == propertyId: # filtering ComboBox w/ country names return self.countries elif "password" == propertyId: # Create a password field so the password is not shown f = self.createPasswordField(propertyId) else: # Use the super class to create a suitable field base # on the property type. f = super(PersonFieldFactory, self).createField(item, propertyId, uiContext) if "firstName" == propertyId: tf = f tf.setRequired(True) tf.setRequiredError("Please enter a First Name") tf.setWidth(self._c._COMMON_FIELD_WIDTH) tf.addValidator(StringLengthValidator("First Name must be 3-25 characters", 3, 25, False)) elif "lastName" == propertyId: tf = f tf.setRequired(True) tf.setRequiredError("Please enter a Last Name") tf.setWidth(self._c._COMMON_FIELD_WIDTH) tf.addValidator(StringLengthValidator("Last Name must be 3-50 characters", 3, 50, False)) elif "password" == propertyId: pf = f pf.setRequired(True) pf.setRequiredError("Please enter a password") pf.setWidth("10em") pf.addValidator(StringLengthValidator("Password must be 6-20 characters", 6, 20, False)) elif "shoesize" == propertyId: tf = f tf.setNullRepresentation("") tf.setNullSettingAllowed(True) tf.addValidator(IntegerValidator("Shoe size must be an Integer")) tf.setWidth("4em") return f def createPasswordField(self, propertyId): pf = PasswordField() pf.setCaption(DefaultFieldFactory.createCaptionByPropertyId(propertyId)) return pf
class PersonFieldFactory(DefaultFieldFactory): def __init__(self, c): self._c = c super(PersonFieldFactory, self).__init__() self.countries = ComboBox('Country') self.countries.setWidth(self._c._COMMON_FIELD_WIDTH) self.countries.setContainerDataSource( ExampleUtil.getISO3166Container()) self.countries.setItemCaptionPropertyId( ExampleUtil.iso3166_PROPERTY_NAME) self.countries.setItemIconPropertyId( ExampleUtil.iso3166_PROPERTY_FLAG) self.countries.setFilteringMode(ComboBox.FILTERINGMODE_STARTSWITH) def createField(self, item, propertyId, uiContext): if 'countryCode' == propertyId: # filtering ComboBox w/ country names return self.countries elif 'password' == propertyId: # Create a password field so the password is not shown f = self.createPasswordField(propertyId) else: # Use the super class to create a suitable field base on the # property type. f = super(PersonFieldFactory, self).createField(item, propertyId, uiContext) if 'firstName' == propertyId: tf = f tf.setRequired(True) tf.setRequiredError('Please enter a First Name') tf.setWidth(self._c._COMMON_FIELD_WIDTH) tf.addValidator(StringLengthValidator( 'First Name must be 3-25 characters', 3, 25, False)) elif 'lastName' == propertyId: tf = f tf.setRequired(True) tf.setRequiredError('Please enter a Last Name') tf.setWidth(self._c._COMMON_FIELD_WIDTH) tf.addValidator(StringLengthValidator( 'Last Name must be 3-50 characters', 3, 50, False)) elif 'password' == propertyId: pf = f pf.setRequired(True) pf.setRequiredError('Please enter a password') pf.setWidth('10em') pf.addValidator(StringLengthValidator( 'Password must be 6-20 characters', 6, 20, False)) elif 'shoesize' == propertyId: tf = f tf.setNullRepresentation('') tf.setNullSettingAllowed(True) tf.addValidator(IntegerValidator('Shoe size must be an Integer')) tf.setWidth('2em') elif 'uuid' == propertyId: tf = f tf.setWidth('20em') return f def createPasswordField(self, propertyId): pf = PasswordField() pf.setCaption(DefaultFieldFactory.createCaptionByPropertyId(propertyId)) return pf