public ProviderControl(
     String key,
     ProviderProperty property,
     DiscoveryDescriptor wizardDescriptor,
     JPanel panel,
     ChangeListener listener) {
   this.propertyKey = key;
   this.property = property;
   this.panel = panel;
   this.listener = listener;
   this.wizardDescriptor = wizardDescriptor;
   description = property.getDescription();
   label = new JLabel();
   Mnemonics.setLocalizedText(label, property.getName());
   switch (property.getKind()) {
     case MakeLogFile:
       field = new EditableComboBox();
       field.setEditable(true);
       chooserMode = JFileChooser.FILES_ONLY;
       initBuildOrRoot(wizardDescriptor);
       button = new JButton();
       Mnemonics.setLocalizedText(button, getString("ROOT_DIR_BROWSE_BUTTON_TXT"));
       layout(panel);
       button.addActionListener(
           new ActionListener() {
             @Override
             public void actionPerformed(ActionEvent evt) {
               rootFolderButtonActionPerformed(
                   evt,
                   ProviderControl.this.property.getKind() == PropertyKind.BinaryFile,
                   getString("LOG_FILE_CHOOSER_TITLE_TXT"));
             }
           });
       addListeners();
       break;
     case BinaryFile:
       field = new EditableComboBox();
       field.setEditable(true);
       chooserMode = JFileChooser.FILES_ONLY;
       initBuildOrRoot(wizardDescriptor);
       button = new JButton();
       Mnemonics.setLocalizedText(button, getString("ROOT_DIR_BROWSE_BUTTON_TXT"));
       layout(panel);
       button.addActionListener(
           new ActionListener() {
             @Override
             public void actionPerformed(ActionEvent evt) {
               rootFolderButtonActionPerformed(
                   evt,
                   ProviderControl.this.property.getKind() == PropertyKind.BinaryFile,
                   getString("BINARY_FILE_CHOOSER_TITLE_TXT"));
             }
           });
       addListeners();
       break;
     case Folder:
       field = new EditableComboBox();
       field.setEditable(true);
       chooserMode = JFileChooser.DIRECTORIES_ONLY;
       initRoot(wizardDescriptor);
       button = new JButton();
       Mnemonics.setLocalizedText(button, getString("ROOT_DIR_BROWSE_BUTTON_TXT"));
       layout(panel);
       button.addActionListener(
           new ActionListener() {
             @Override
             public void actionPerformed(ActionEvent evt) {
               rootFolderButtonActionPerformed(evt, true, getString("ROOT_DIR_CHOOSER_TITLE_TXT"));
             }
           });
       addListeners();
       break;
     case BinaryFiles:
       field = new EditableComboBox();
       field.setEditable(true);
       chooserMode = JFileChooser.FILES_ONLY;
       initArray();
       button = new JButton();
       Mnemonics.setLocalizedText(button, getString("ROOT_DIR_EDIT_BUTTON_TXT"));
       layout(panel);
       button.addActionListener(
           new ActionListener() {
             @Override
             public void actionPerformed(ActionEvent evt) {
               additionalLibrariesButtonActionPerformed(evt);
             }
           });
       addListeners();
       break;
     default:
       // unsuported UI
       break;
   }
 }