public StatementExecutionVariablesForm( StatementExecutionVariablesBundle variablesBundle, String statementText) { this.variablesBundle = variablesBundle; this.statementText = statementText; variablesPanel.setLayout(new BoxLayout(variablesPanel, BoxLayout.Y_AXIS)); for (StatementExecutionVariable variable : variablesBundle.getVariables()) { StatementExecutionVariableValueForm variableValueForm = new StatementExecutionVariableValueForm(variable); variableValueForms.add(variableValueForm); variablesPanel.add(variableValueForm.getComponent()); variableValueForm.addDocumentListener( new DocumentAdapter() { protected void textChanged(DocumentEvent e) { updatePreview(); } }); variableValueForm.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { updatePreview(); } }); } int[] metrics = new int[] {0, 0}; for (StatementExecutionVariableValueForm variableValueForm : variableValueForms) { metrics = variableValueForm.getMetrics(metrics); } for (StatementExecutionVariableValueForm variableValueForm : variableValueForms) { variableValueForm.adjustMetrics(metrics); } updatePreview(); GuiUtils.replaceJSplitPaneWithIDEASplitter(mainPanel); Dimension preferredSize = variablesPanel.getPreferredSize(); int height = (int) Math.min(preferredSize.getHeight(), 200) + 24; splitPane.setDividerLocation(height); mainPanel.setPreferredSize( new Dimension((int) mainPanel.getPreferredSize().getWidth(), height + 250)); }