protected Component buildPage() {
    GridBagConstraints constraints = new GridBagConstraints();
    Insets offset = BorderFactory.createTitledBorder("m").getBorderInsets(this);
    offset.left += 5;
    offset.right += 5;

    JPanel container = new JPanel(new GridBagLayout());
    container.setBorder(BorderFactory.createEmptyBorder(5, 5, 0, 5));

    // Reference Descriptor chooser
    JComponent referenceDescriptorWidgets =
        buildLabeledComponent(
            "REFERENCE_DESCRIPTOR_CHOOSER_LABEL", buildReferenceDescriptorChooser());
    constraints.gridx = 0;
    constraints.gridy = 0;
    constraints.gridwidth = 1;
    constraints.gridheight = 1;
    constraints.weightx = 1;
    constraints.weighty = 0;
    constraints.fill = GridBagConstraints.HORIZONTAL;
    constraints.anchor = GridBagConstraints.CENTER;
    constraints.insets = new Insets(0, offset.left, 0, offset.right);
    container.add(referenceDescriptorWidgets, constraints);
    addHelpTopicId(referenceDescriptorWidgets, "mapping.referenceDescriptor");

    // Use Method accessing widgets
    MethodAccessingPanel methodAccessingPanel =
        new MethodAccessingPanel(getSelectionHolder(), getWorkbenchContextHolder());
    constraints.gridx = 0;
    constraints.gridy = 2;
    constraints.gridwidth = 1;
    constraints.gridheight = 1;
    constraints.weightx = 1;
    constraints.weighty = 0;
    constraints.fill = GridBagConstraints.HORIZONTAL;
    constraints.anchor = GridBagConstraints.CENTER;
    constraints.insets = new Insets(5, 0, 0, 0);
    container.add(methodAccessingPanel, constraints);
    addPaneForAlignment(methodAccessingPanel);

    // Read Only
    JCheckBox readOnlyCheckBox =
        RelationalMappingComponentFactory.buildReadOnlyCheckBox(
            this.getSelectionHolder(), this.getApplicationContext());
    constraints.gridx = 0;
    constraints.gridy = 3;
    constraints.gridwidth = 1;
    constraints.gridheight = 1;
    constraints.weightx = 0;
    constraints.weighty = 0;
    constraints.fill = GridBagConstraints.NONE;
    constraints.anchor = GridBagConstraints.LINE_START;
    constraints.insets = new Insets(5, 5, 0, 0);
    container.add(readOnlyCheckBox, constraints);

    // Private Owned
    JCheckBox privateOwnedCheckBox =
        RelationalMappingComponentFactory.buildPrivateOwnedCheckBox(
            this.getSelectionHolder(), this.resourceRepository(), this.helpManager());
    constraints.gridx = 0;
    constraints.gridy = 4;
    constraints.gridwidth = 1;
    constraints.gridheight = 1;
    constraints.weightx = 0;
    constraints.weighty = 0;
    constraints.fill = GridBagConstraints.NONE;
    constraints.anchor = GridBagConstraints.LINE_START;
    constraints.insets = new Insets(0, 5, 0, 0);
    container.add(privateOwnedCheckBox, constraints);

    // Use Batch Reading
    JCheckBox useBatchReadingCheckBox =
        RelationalMappingComponentFactory.buildBatchReadingCheckBox(
            getSelectionHolder(), resourceRepository());
    constraints.gridx = 0;
    constraints.gridy = 5;
    constraints.gridwidth = 1;
    constraints.gridheight = 1;
    constraints.weightx = 0;
    constraints.weighty = 0;
    constraints.fill = GridBagConstraints.NONE;
    constraints.anchor = GridBagConstraints.LINE_START;
    constraints.insets = new Insets(0, 5, 0, 0);
    container.add(useBatchReadingCheckBox, constraints);
    addHelpTopicId(useBatchReadingCheckBox, "mapping.useBatchReading");

    // join fetching
    JComponent joinFetchWidgets =
        buildLabeledComponent(
            "JOIN_FETCHING_CHOOSER_LABEL",
            RelationalMappingComponentFactory.buildJoinFetchingCombobox(
                getSelectionHolder(), getWorkbenchContextHolder()));
    constraints.gridx = 0;
    constraints.gridy = 6;
    constraints.gridwidth = 1;
    constraints.gridheight = 1;
    constraints.weightx = 1;
    constraints.weighty = 0;
    constraints.fill = GridBagConstraints.HORIZONTAL;
    constraints.anchor = GridBagConstraints.CENTER;
    constraints.insets = new Insets(0, offset.left, 0, offset.right);
    container.add(joinFetchWidgets, constraints);
    addHelpTopicId(joinFetchWidgets, "mapping.joinFetch");

    // indirection
    ProxyIndirectionPanel indirectionPanel =
        new ProxyIndirectionPanel(getSelectionHolder(), getApplicationContext());
    constraints.gridx = 0;
    constraints.gridy = 7;
    constraints.gridwidth = 1;
    constraints.gridheight = 1;
    constraints.weightx = 1;
    constraints.weighty = 0;
    constraints.fill = GridBagConstraints.HORIZONTAL;
    constraints.anchor = GridBagConstraints.LINE_START;
    constraints.insets = new Insets(0, 0, 0, 0);
    container.add(indirectionPanel, constraints);

    // Maintain Bidirectionality Relationship
    MaintainsBidirectionalRelationshipPanel maintainBidiRelationshipWidget =
        new MaintainsBidirectionalRelationshipPanel(
            getSelectionHolder(), getWorkbenchContextHolder());
    constraints.gridx = 0;
    constraints.gridy = 8;
    constraints.gridwidth = 1;
    constraints.gridheight = 1;
    constraints.weightx = 1;
    constraints.weighty = 0;
    constraints.fill = GridBagConstraints.HORIZONTAL;
    constraints.anchor = GridBagConstraints.CENTER;
    constraints.insets = new Insets(5, 0, 0, 0);
    container.add(maintainBidiRelationshipWidget, constraints);
    addPaneForAlignment(maintainBidiRelationshipWidget);

    // comment
    JComponent commentPanel =
        SwingComponentFactory.buildCommentPanel(
            this.getSelectionHolder(), this.resourceRepository());
    constraints.gridx = 0;
    constraints.gridy = 9;
    constraints.gridwidth = 1;
    constraints.gridheight = 1;
    constraints.weightx = 1;
    constraints.weighty = 1;
    constraints.fill = GridBagConstraints.HORIZONTAL;
    constraints.anchor = GridBagConstraints.FIRST_LINE_START;
    constraints.insets = new Insets(5, 5, 0, 5);
    container.add(commentPanel, constraints);
    addHelpTopicId(commentPanel, "mapping.comment");

    addHelpTopicId(container, "mapping.oneToOne");
    return container;
  }
 private ListChooser buildReferenceDescriptorChooser() {
   return RelationalMappingComponentFactory.buildReferenceDescriptorChooser(
       getSelectionHolder(), getWorkbenchContextHolder());
 }