FilterEditor<NamedScriptableDefinition> () { return new FilterEditor<>(myTable.getVariable(), myTable.getConstraintChangedCallback()) { private final JLabel myLabel = new JLabel(SSRBundle.message("script.label")); private final EditorTextField myTextField = UIUtil.createScriptComponent("", myTable.getProject()); private ContextHelpLabel myHelpLabel; @Override protected void layoutComponents() { new ExpandableEditorSupport(myTextField) { @NotNull @Override protected Content prepare(@NotNull EditorTextField field, @NotNull Function<? super String, String> onShow) { final Content popup = super.prepare(field, onShow); popup.getContentComponent().setPreferredSize(new Dimension(600, 150)); return popup; } }; final String[] variableNames = {Configuration.CONTEXT_VAR_NAME, ScriptLog.SCRIPT_LOG_VAR_NAME}; final String variableText = String.join(", ", variableNames); if (myConstraint instanceof MatchVariableConstraint) { myHelpLabel = ContextHelpLabel.create(SSRBundle.message("script.filter.match.variable.help.text", variableText)); } else { myHelpLabel = ContextHelpLabel.create(SSRBundle.message("script.filter.replacement.variable.help.text", variableText)); } final GroupLayout layout = new GroupLayout(this); setLayout(layout); layout.setAutoCreateContainerGaps(true); layout.setHorizontalGroup( layout.createSequentialGroup() .addComponent(myLabel) .addComponent(myTextField) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, 1, 1) .addComponent(myHelpLabel) ); layout.setVerticalGroup( layout.createParallelGroup(GroupLayout.Alignment.CENTER) .addComponent(myLabel) .addComponent(myTextField) .addComponent(myHelpLabel) ); } @Override protected void loadValues() { myTextField.setText(StringUtil.unquoteString(myConstraint.getScriptCodeConstraint())); } @Override protected void saveValues() { myConstraint.setScriptCodeConstraint('"' + myTextField.getText() + '"'); } @Override public JComponent getPreferredFocusedComponent() { return myTextField; } @Override public JComponent[] getFocusableComponents() { return new JComponent[]{myTextField}; } }; }