protected JPanel createAndFillContentPanel() {
    WebProjectSettingsStepWrapper settingsStep = new WebProjectSettingsStepWrapper(this);
    if (myProjectGenerator instanceof WebProjectTemplate) {
      getPeer().buildUI(settingsStep);
    }
    else if (myProjectGenerator instanceof TemplateProjectDirectoryGenerator) {
      ((TemplateProjectDirectoryGenerator<?>)myProjectGenerator).buildUI(settingsStep);
    }
    else {
      return createContentPanelWithAdvancedSettingsPanel();
    }

    //back compatibility: some plugins can implement only GeneratorPeer#getComponent() method
    if (settingsStep.isEmpty()) return createContentPanelWithAdvancedSettingsPanel();

    final JPanel jPanel = new JPanel(new VerticalFlowLayout(0, 5));
    List<LabeledComponent<? extends JComponent>> labeledComponentList = new ArrayList<>();
    labeledComponentList.add(createLocationComponent());
    labeledComponentList.addAll(settingsStep.getFields());

    final JPanel scrollPanel = new JPanel(new BorderLayout());
    scrollPanel.add(jPanel, BorderLayout.NORTH);

    for (LabeledComponent<? extends JComponent> component : labeledComponentList) {
      component.setLabelLocation(BorderLayout.WEST);
      jPanel.add(component);
    }

    for (JComponent component : settingsStep.getComponents()) {
      jPanel.add(component);
    }

    UIUtil.mergeComponentsWithAnchor(labeledComponentList);

    return scrollPanel;
  }
protected JPanel createAndFillContentPanel()