@Override @Nullable public JComponent createOptionsPanel() { final JPanel result = new JPanel(new BorderLayout()); final JPanel internalPanel = new JPanel(new BorderLayout()); result.add(internalPanel, BorderLayout.NORTH); final FieldPanel additionalAttributesPanel = new FieldPanel(null, getPanelTitle(), null, null); additionalAttributesPanel .getTextField() .getDocument() .addDocumentListener( new DocumentAdapter() { @Override protected void textChanged(DocumentEvent e) { final Document document = e.getDocument(); try { final String text = document.getText(0, document.getLength()); if (text != null) { myValues = reparseProperties(text.trim()); } } catch (BadLocationException e1) { getLogger().error(e1); } } }); final JCheckBox checkBox = new JCheckBox(getCheckboxTitle()); checkBox.setSelected(myCustomValuesEnabled); checkBox.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { final boolean b = checkBox.isSelected(); if (b != myCustomValuesEnabled) { myCustomValuesEnabled = b; additionalAttributesPanel.setEnabled(myCustomValuesEnabled); } } }); internalPanel.add(checkBox, BorderLayout.NORTH); internalPanel.add(additionalAttributesPanel, BorderLayout.CENTER); additionalAttributesPanel.setPreferredSize( new Dimension(150, additionalAttributesPanel.getPreferredSize().height)); additionalAttributesPanel.setEnabled(myCustomValuesEnabled); additionalAttributesPanel.setText(createPropertiesString()); return result; }