コード例 #1
0
  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));
  }