void invoke(Page page) {

    pageCheckBox.page = page;
    page.deselect();
    createContentPane();

    if (needNewDialog(dialog, page)) {
      String s = Modeler.getInternationalText("CustomizeCheckBoxDialogTitle");
      dialog = ModelerUtilities.getChildDialog(page, s != null ? s : "Customize check box", true);
      dialog.setContentPane(contentPane);
      dialog.pack();
      dialog.setLocationRelativeTo(dialog.getOwner());
      dialog.addWindowListener(
          new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
              cancel = true;
              dialog.setVisible(false);
            }

            public void windowActivated(WindowEvent e) {
              nameField.selectAll();
              nameField.requestFocusInWindow();
            }
          });
    }

    modelComboBox.removeItemListener(modelSelectionListener);
    modelComboBox.removeAllItems();
    actionComboBox.removeItemListener(actionSelectionListener);

    // add legacy MD models to the model list
    final ComponentPool componentPool = page.getComponentPool();
    synchronized (componentPool) {
      for (ModelCanvas mc : componentPool.getModels()) {
        if (mc.isUsed()) {
          modelComboBox.addItem(mc.getMdContainer().getModel());
        }
      }
    }

    // add target models to the model list
    for (Class c : ModelCommunicator.targetClass) {
      Map map = page.getEmbeddedComponent(c);
      if (map != null && !map.isEmpty()) {
        for (Object o : map.keySet()) {
          modelComboBox.addItem(map.get(o));
        }
      }
    }

    if (pageCheckBox.isTargetClass()) {
      if (pageCheckBox.modelID != -1) {
        try {
          Object o =
              page.getEmbeddedComponent(
                  Class.forName(pageCheckBox.modelClass), pageCheckBox.modelID);
          if (o != null) modelComboBox.setSelectedItem(o);
        } catch (ClassNotFoundException e) {
          e.printStackTrace();
        }
      } else {
        BasicModel m = (BasicModel) modelComboBox.getSelectedItem();
        if (m instanceof Embeddable) pageCheckBox.setModelID(((Embeddable) m).getIndex());
      }
    } else {
      if (pageCheckBox.modelID != -1) {
        ModelCanvas mc = componentPool.get(pageCheckBox.modelID);
        modelComboBox.setSelectedItem(mc.getMdContainer().getModel());
      } else {
        BasicModel m = (BasicModel) modelComboBox.getSelectedItem();
        pageCheckBox.setModelID(componentPool.getIndex(m));
      }
    }
    modelComboBox.addItemListener(modelSelectionListener);

    fillActionComboBox();
    if (pageCheckBox.getAction() != null) actionComboBox.setSelectedItem(pageCheckBox.getAction());
    actionComboBox.addItemListener(actionSelectionListener);

    String t = pageCheckBox.getText();
    nameField.setText(
        t != null
            ? t
            : (actionComboBox.getSelectedItem() != null
                ? actionComboBox.getSelectedItem().toString()
                : null));
    uidField.setText(pageCheckBox.getUid());
    imageSelectedField.setText(pageCheckBox.getImageFileNameSelected());
    imageDeselectedField.setText(pageCheckBox.getImageFileNameDeselected());
    toolTipField.setText(pageCheckBox.getToolTipText());
    transparentCheckBox.setSelected(pageCheckBox.isTransparent());
    disabledAtRunCheckBox.setSelected(pageCheckBox.disabledAtRun);
    disabledAtScriptCheckBox.setSelected(pageCheckBox.disabledAtScript);
    bgComboBox.setColor(pageCheckBox.getBackground());
    autoSizeCheckBox.setSelected(pageCheckBox.autoSize);
    if (pageCheckBox.isPreferredSizeSet()) {
      widthField.setValue(pageCheckBox.getWidth());
      heightField.setValue(pageCheckBox.getHeight());
    }
    widthField.setEnabled(!pageCheckBox.autoSize);
    heightField.setEnabled(!pageCheckBox.autoSize);
    okButton.setEnabled(modelComboBox.getItemCount() > 0 && actionComboBox.getItemCount() > 0);

    setScriptArea();

    dialog.setVisible(true);
  }