The EntityApplicationPanel class serves as the main application UI. When extending this class you must provide a constructor with a single application model parameter, as seen below.

public class StoreApplicationPanel extends EntityApplicationPanel<StoreApplicationModel> {

  public StoreApplicationPanel(StoreApplicationModel applicationModel) {
    super(applicationModel, createPanels(applicationModel), createLookupPanelBuilders());
  }

  private static List<EntityPanel> createPanels(StoreApplicationModel applicationModel) {
    CustomerModel customerModel = (CustomerModel)
            applicationModel.entityModels().get(Customer.TYPE);
    CustomerAddressModel customerAddressModel = (CustomerAddressModel)
            customerModel.detailModels().get(CustomerAddress.TYPE);

    EntityPanel customerPanel = new EntityPanel(customerModel,
            new CustomerEditPanel(customerModel.editModel()),
            new CustomerTablePanel(customerModel.tableModel()));
    EntityPanel customerAddressPanel = new EntityPanel(customerAddressModel,
            new CustomerAddressEditPanel(customerAddressModel.editModel()));

    customerPanel.detailPanels().add(customerAddressPanel);

    return List.of(customerPanel);
  }

  private static List<EntityPanel.Builder> createLookupPanelBuilders() {
    EntityPanel.Builder addressPanelBuilder = EntityPanel.builder()
            .entityType(Address.TYPE)
            .panel(connectionProvider -> {
              SwingEntityModel addressModel =
                      new SwingEntityModel(Address.TYPE, connectionProvider);

              return new EntityPanel(addressModel,
                      new AddressEditPanel(addressModel.editModel()));
            });

    return List.of(addressPanelBuilder);
  }

  public static void main(String[] args) {
    Locale.setDefault(new Locale("en", "EN"));
    EntityPanel.Config.TOOLBAR_CONTROLS.set(true);
    ReferentialIntegrityErrorHandling.REFERENTIAL_INTEGRITY_ERROR_HANDLING
            .set(ReferentialIntegrityErrorHandling.DISPLAY_DEPENDENCIES);
    EntityApplicationPanel.builder(StoreApplicationModel.class, StoreApplicationPanel.class)
            .domain(Store.DOMAIN)
            .applicationName("Store")
            .defaultUser(User.parse("scott:tiger"))
            .start();
  }
}

1. Examples