code: @Override
      public void processIOSettingQuestion(IOSetting setting) {
          // post the question
          if (setting.getLevel().ordinal() <= this.level.ordinal()) {
              String answer = setting.getSetting();
  
              if (setting instanceof BooleanIOSetting) {
                  int n = JOptionPane.showConfirmDialog(frame, setting.getQuestion(), setting.getName(),
                          JOptionPane.YES_NO_OPTION);
                  if (n == JOptionPane.YES_OPTION) {
                      answer = "true";
                  } else if (n == JOptionPane.NO_OPTION) {
                      answer = "false";
                  } else {
                      // default of setting
                  }
              } else if (setting instanceof OptionIOSetting) {
                  OptionIOSetting optionSetting = (OptionIOSetting) setting;
                  List<String> settings = optionSetting.getOptions();
                  Iterator<String> elements = settings.iterator();
                  Object[] options = new Object[settings.size()];
                  for (int i = 0; i < options.length; i++) {
                      options[i] = elements.next();
                  }
                  int n = JOptionPane.showOptionDialog(frame, setting.getQuestion(), setting.getName(),
                          JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, setting.getSetting());
                  answer = (String) options[n];
              } else if (setting instanceof StringIOSetting) {
                  answer = JOptionPane.showInputDialog(frame, setting.getQuestion(), setting.getName(),
                          JOptionPane.QUESTION_MESSAGE, null, null, setting.getSetting()).toString();
              } else {
                  answer = JOptionPane.showInputDialog(frame, setting.getQuestion(), setting.getName(),
                          JOptionPane.QUESTION_MESSAGE, null, null, setting.getSetting()).toString();
              }
  
              try {
                  setting.setSetting(answer);
              } catch (CDKException exception) {
              }
          } // else skip question
  
      }
docs: Processes the IOSettings by listing the question, giving the options
  and asking the user to provide their choice.
  
  <p>Note: if the input reader is <code>null</code>, then the method
  does not wait for an answer, and takes the default.