JComponent () { myInheritCompilerOutput = new JRadioButton(JavaUiBundle.message("project.inherit.compile.output.path")); myPerModuleCompilerOutput = new JRadioButton(JavaUiBundle.message("project.module.compile.output.path")); ButtonGroup group = new ButtonGroup(); group.add(myInheritCompilerOutput); group.add(myPerModuleCompilerOutput); myOutputPathPanel = createOutputPathPanel(JavaUiBundle.message("module.paths.output.title"), new CommitPathRunnable() { @Override public void saveUrl(String url) { if (myInheritCompilerOutput.isSelected()) return; //do not override settings if any getCompilerExtension().setCompilerOutputPath(url); fireModuleConfigurationChanged(); } }); myTestsOutputPathPanel = createOutputPathPanel(JavaUiBundle.message("module.paths.test.output.title"), new CommitPathRunnable() { @Override public void saveUrl(String url) { if (myInheritCompilerOutput.isSelected()) return; //do not override settings if any getCompilerExtension().setCompilerOutputPathForTests(url); fireModuleConfigurationChanged(); } }); myCbExcludeOutput = new JCheckBox(JavaUiBundle.message("module.paths.exclude.output.checkbox"), getCompilerExtension().isExcludeOutput()); myCbExcludeOutput.addActionListener(new ActionListener() { @Override public void actionPerformed(final ActionEvent e) { getCompilerExtension().setExcludeOutput(myCbExcludeOutput.isSelected()); fireModuleConfigurationChanged(); } }); final JPanel outputPathsPanel = new JPanel(new GridBagLayout()); outputPathsPanel.add(myInheritCompilerOutput, new GridBagConstraints(0, GridBagConstraints.RELATIVE, 2, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, JBUI.insets(6, 0, 0, 4), 0, 0)); outputPathsPanel.add(myPerModuleCompilerOutput, new GridBagConstraints(0, GridBagConstraints.RELATIVE, 2, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, JBUI.insets(6, 0, 0, 4), 0, 0)); myOutputLabel = new JLabel(JavaUiBundle.message("module.paths.output.label")); outputPathsPanel.add(myOutputLabel, new GridBagConstraints(0, GridBagConstraints.RELATIVE, 1, 1, 0.0, 0.0, GridBagConstraints.EAST, GridBagConstraints.NONE, JBUI.insets(6, 12, 0, 4), 0, 0)); myOutputLabel.setLabelFor(myOutputPathPanel.getTextField()); outputPathsPanel.add(myOutputPathPanel, new GridBagConstraints(1, GridBagConstraints.RELATIVE, 2, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, JBUI.insets(6, 4, 0, 0), 0, 0)); myTestOutputLabel = new JLabel(JavaUiBundle.message("module.paths.test.output.label")); outputPathsPanel.add(myTestOutputLabel, new GridBagConstraints(0, GridBagConstraints.RELATIVE, 1, 1, 0.0, 0.0, GridBagConstraints.EAST, GridBagConstraints.NONE, JBUI.insets(6, 16, 0, 4), 0, 0)); myTestOutputLabel.setLabelFor(myTestsOutputPathPanel.getTextField()); outputPathsPanel.add(myTestsOutputPathPanel, new GridBagConstraints(1, GridBagConstraints.RELATIVE, 2, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, JBUI.insets(6, 4, 0, 0), 0, 0)); outputPathsPanel.add(myCbExcludeOutput, new GridBagConstraints(0, GridBagConstraints.RELATIVE, 2, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, JBUI.insets(6, 16, 0, 0), 0, 0)); final boolean outputPathInherited = getCompilerExtension().isCompilerOutputPathInherited(); myInheritCompilerOutput.setSelected(outputPathInherited); myPerModuleCompilerOutput.setSelected(!outputPathInherited); // fill with data updateOutputPathPresentation(); //compiler settings enableCompilerSettings(!outputPathInherited); final ActionListener listener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { enableCompilerSettings(!myInheritCompilerOutput.isSelected()); } }; myInheritCompilerOutput.addActionListener(listener); myPerModuleCompilerOutput.addActionListener(listener); final JPanel panel = new JPanel(new BorderLayout()); panel.setBorder(IdeBorderFactory.createTitledBorder(JavaUiBundle.message("project.roots.output.compiler.title"))); panel.add(outputPathsPanel, BorderLayout.NORTH); return panel; }