JPanel () { JPanel panel = new JPanel(); panel.setBorder(IdeBorderFactory.createTitledBorder(CodeInsightBundle.message("dialog.edit.template.options.title"))); panel.setLayout(new GridBagLayout()); GridBagConstraints gbConstraints = new GridBagConstraints(); gbConstraints.fill = GridBagConstraints.BOTH; gbConstraints.weighty = 0; gbConstraints.weightx = 0; gbConstraints.gridy = 0; JLabel expandWithLabel = new JLabel(CodeInsightBundle.message("dialog.edit.template.label.expand.with")); panel.add(expandWithLabel, gbConstraints); gbConstraints.gridx = 1; gbConstraints.insets = JBUI.insetsLeft(4); myExpandByCombo = new ComboBox<>(new String[]{myDefaultShortcutItem, getSpace(), getTab(), getEnter(), getNone()}); myExpandByCombo.addItemListener(new ItemListener() { @Override public void itemStateChanged(@NotNull ItemEvent e) { Object selectedItem = myExpandByCombo.getSelectedItem(); if(myDefaultShortcutItem.equals(selectedItem)) { myTemplate.setShortcutChar(TemplateSettings.DEFAULT_CHAR); } else if(getTab().equals(selectedItem)) { myTemplate.setShortcutChar(TemplateSettings.TAB_CHAR); } else if(getEnter().equals(selectedItem)) { myTemplate.setShortcutChar(TemplateSettings.ENTER_CHAR); } else if (getSpace().equals(selectedItem)) { myTemplate.setShortcutChar(TemplateSettings.SPACE_CHAR); } else { myTemplate.setShortcutChar(TemplateSettings.NONE_CHAR); } } }); myExpandByCombo.setSelectedItem(getShortcutText()); expandWithLabel.setLabelFor(myExpandByCombo); panel.add(myExpandByCombo, gbConstraints); gbConstraints.weightx = 1; gbConstraints.gridx = 2; panel.add(new JPanel(), gbConstraints); gbConstraints.gridx = 0; gbConstraints.gridy++; gbConstraints.gridwidth = 3; myCbReformat = new JCheckBox(CodeInsightBundle.message("dialog.edit.template.checkbox.reformat.according.to.style")); myCbReformat.setSelected(myTemplate.isToReformat()); panel.add(myCbReformat, gbConstraints); for (final TemplateOptionalProcessor processor: myOptions.keySet()) { if (!processor.isVisible(myTemplate, myContext)) continue; gbConstraints.gridy++; final JCheckBox cb = new JCheckBox(processor.getOptionName()); panel.add(cb, gbConstraints); cb.setSelected(myOptions.get(processor).booleanValue()); cb.addActionListener(e -> myOptions.put(processor, cb.isSelected())); } gbConstraints.weighty = 1; gbConstraints.gridy++; panel.add(new JPanel(), gbConstraints); return panel; }