private void makeUI() {
    JComponent[] variableComponents =
        createComponents(PROPERTY_VARIABLE_NAME, TextFieldEditor.class);

    final TableLayout layout = new TableLayout(2);
    layout.setTablePadding(4, 3);
    layout.setCellWeightX(0, 1, 1.0);
    layout.setCellWeightX(1, 1, 1.0);
    layout.setCellWeightX(2, 0, 1.0);
    layout.setCellColspan(2, 0, 2);
    layout.setTableFill(TableLayout.Fill.HORIZONTAL);
    final JPanel panel = new JPanel(layout);

    panel.add(variableComponents[1]);
    panel.add(variableComponents[0]);

    JLabel expressionLabel = new JLabel("Variable expression:");
    JTextArea expressionArea = new JTextArea();
    expressionArea.setRows(3);
    TextComponentAdapter textComponentAdapter = new TextComponentAdapter(expressionArea);
    bindingContext.bind(PROPERTY_EXPRESSION, textComponentAdapter);
    panel.add(expressionLabel);
    panel.add(layout.createHorizontalSpacer());
    panel.add(expressionArea);

    JButton editExpressionButton = new JButton("Edit Expression...");
    editExpressionButton.setName("editExpressionButton");
    editExpressionButton.addActionListener(createEditExpressionButtonListener());
    panel.add(layout.createHorizontalSpacer());
    panel.add(editExpressionButton);

    setContent(panel);
  }