fun createLayout()

in app-inspection/inspectors/database/src/com/android/tools/idea/sqlite/ui/exportToFile/ExportToFileDialogLayout.kt [31:215]


  fun createLayout(
    fileTypeLabel: JComponent,
    formatDbRadioButton: JComponent,
    formatSqlRadioButton: JComponent,
    formatCsvRadioButton: JComponent,
    delimiterLabel: JComponent,
    delimiterComboBox: JComponent,
    saveLocationLabel: JComponent,
    saveLocationTextField: JComponent,
  ): JComponent {

    // panels to position elements
    val fileFormatPanel = JPanel()
    val delimiterPanel = JPanel()
    val saveLocationPanel = JPanel()
    val mainContentPanel = JPanel()
    val result = JPanel()

    // file format selection
    val fileFormatPanelLayout = GroupLayout(fileFormatPanel)
    fileFormatPanel.layout = fileFormatPanelLayout
    fileFormatPanelLayout.setHorizontalGroup(
      fileFormatPanelLayout
        .createParallelGroup(LEADING)
        .addComponent(fileTypeLabel, DEFAULT_SIZE, DEFAULT_SIZE, MAX_VALUE.toInt())
        .addGroup(
          fileFormatPanelLayout
            .createSequentialGroup()
            .addGap(20.scaled)
            .addGroup(
              fileFormatPanelLayout
                .createParallelGroup(LEADING)
                .addComponent(formatCsvRadioButton)
                .addComponent(formatSqlRadioButton)
                .addComponent(formatDbRadioButton)
            )
        )
        .addGroup(
          fileFormatPanelLayout
            .createSequentialGroup()
            .addGap(40.scaled)
            .addComponent(delimiterPanel, DEFAULT_SIZE, DEFAULT_SIZE, MAX_VALUE.toInt())
        )
    )
    fileFormatPanelLayout.setVerticalGroup(
      fileFormatPanelLayout
        .createParallelGroup(LEADING)
        .addGroup(
          fileFormatPanelLayout
            .createSequentialGroup()
            .addComponent(fileTypeLabel)
            .addPreferredGap(RELATED)
            .addComponent(formatDbRadioButton)
            .addPreferredGap(RELATED)
            .addComponent(formatSqlRadioButton)
            .addPreferredGap(RELATED)
            .addComponent(formatCsvRadioButton)
            .addPreferredGap(RELATED)
            .addComponent(delimiterPanel, PREFERRED_SIZE, DEFAULT_SIZE, PREFERRED_SIZE)
            .addGap(0)
        )
    )

    // delimiter selection
    val delimiterPanelLayout = GroupLayout(delimiterPanel)
    delimiterPanel.layout = delimiterPanelLayout
    delimiterPanelLayout.setHorizontalGroup(
      delimiterPanelLayout
        .createParallelGroup(LEADING)
        .addGroup(
          delimiterPanelLayout
            .createSequentialGroup()
            .addComponent(delimiterLabel)
            .addPreferredGap(RELATED)
            .addComponent(delimiterComboBox, 0, DEFAULT_SIZE, MAX_VALUE.toInt())
            .addGap(0)
        )
    )
    delimiterPanelLayout.setVerticalGroup(
      delimiterPanelLayout
        .createParallelGroup(LEADING)
        .addGroup(
          delimiterPanelLayout
            .createSequentialGroup()
            .addGroup(
              delimiterPanelLayout
                .createParallelGroup(GroupLayout.Alignment.BASELINE)
                .addComponent(delimiterLabel)
                .addComponent(delimiterComboBox, PREFERRED_SIZE, DEFAULT_SIZE, PREFERRED_SIZE)
            )
            .addGap(0)
        )
    )

    // destination file selection
    val saveLocationPanelLayout = GroupLayout(saveLocationPanel)
    saveLocationPanel.layout = saveLocationPanelLayout
    saveLocationPanelLayout.setHorizontalGroup(
      saveLocationPanelLayout
        .createParallelGroup(LEADING)
        .addGroup(
          saveLocationPanelLayout
            .createSequentialGroup()
            .addComponent(saveLocationLabel)
            .addPreferredGap(RELATED)
            .addComponent(saveLocationTextField, DEFAULT_SIZE, 275.scaled, MAX_VALUE.toInt())
            .addGap(0)
        )
    )
    saveLocationPanelLayout.setVerticalGroup(
      saveLocationPanelLayout
        .createParallelGroup(LEADING)
        .addGroup(
          saveLocationPanelLayout
            .createSequentialGroup()
            .addGroup(
              saveLocationPanelLayout
                .createParallelGroup(GroupLayout.Alignment.CENTER)
                .addComponent(saveLocationLabel)
                .addComponent(saveLocationTextField, PREFERRED_SIZE, DEFAULT_SIZE, PREFERRED_SIZE)
            )
            .addGap(0)
        )
    )

    // putting the above together
    val mainContentPanelLayout = GroupLayout(mainContentPanel)
    mainContentPanel.layout = mainContentPanelLayout
    mainContentPanelLayout.setHorizontalGroup(
      mainContentPanelLayout
        .createParallelGroup(LEADING)
        .addGroup(
          mainContentPanelLayout
            .createSequentialGroup()
            .addGroup(
              mainContentPanelLayout
                .createParallelGroup(LEADING)
                .addComponent(saveLocationPanel, DEFAULT_SIZE, DEFAULT_SIZE, MAX_VALUE.toInt())
                .addComponent(fileFormatPanel, DEFAULT_SIZE, DEFAULT_SIZE, MAX_VALUE.toInt())
            )
            .addGap(0)
        )
    )
    mainContentPanelLayout.setVerticalGroup(
      mainContentPanelLayout
        .createParallelGroup(LEADING)
        .addGroup(
          mainContentPanelLayout
            .createSequentialGroup()
            .addComponent(fileFormatPanel, PREFERRED_SIZE, DEFAULT_SIZE, PREFERRED_SIZE)
            .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
            .addComponent(saveLocationPanel, PREFERRED_SIZE, DEFAULT_SIZE, PREFERRED_SIZE)
        )
    )

    // adding padding
    val layout = GroupLayout(result)
    result.layout = layout
    layout.setHorizontalGroup(
      layout
        .createParallelGroup(LEADING)
        .addGroup(
          GroupLayout.Alignment.TRAILING,
          layout
            .createSequentialGroup()
            .addGap(20.scaled)
            .addComponent(mainContentPanel, DEFAULT_SIZE, DEFAULT_SIZE, MAX_VALUE.toInt())
            .addGap(20.scaled),
        )
    )
    layout.setVerticalGroup(
      layout
        .createParallelGroup(LEADING)
        .addGroup(
          layout
            .createSequentialGroup()
            .addGap(20.scaled)
            .addComponent(mainContentPanel, PREFERRED_SIZE, DEFAULT_SIZE, PREFERRED_SIZE)
            .addGap(20.scaled)
        )
    )

    // done
    return result
  }