Example usage for com.jgoodies.binding.adapter BasicComponentFactory createCheckBox

List of usage examples for com.jgoodies.binding.adapter BasicComponentFactory createCheckBox

Introduction

In this page you can find the example usage for com.jgoodies.binding.adapter BasicComponentFactory createCheckBox.

Prototype

public static JCheckBox createCheckBox(ValueModel valueModel, String markedText) 

Source Link

Document

Creates and returns a check box with the specified text label that is bound to the given ValueModel.

Usage

From source file:ch.fork.AdHocRailway.ui.turnouts.configuration.TurnoutConfig.java

License:Open Source License

private void initComponents() {

    numberModel = getBufferedModel(Turnout.PROPERTYNAME_NUMBER);
    descriptionModel = getBufferedModel(Turnout.PROPERTYNAME_DESCRIPTION);
    bus1Model = getBufferedModel(Turnout.PROPERTYNAME_BUS1);
    address1Model = getBufferedModel(Turnout.PROPERTYNAME_ADDRESS1);
    bus2Model = getBufferedModel(Turnout.PROPERTYNAME_BUS2);
    address2Model = getBufferedModel(Turnout.PROPERTYNAME_ADDRESS2);
    swiched1Model = getBufferedModel(Turnout.PROPERTYNAME_ADDRESS1_SWITCHED);
    switched2Model = getBufferedModel(Turnout.PROPERTYNAME_ADDRESS2_SWITCHED);
    turnoutTypeModel = getBufferedModel(Turnout.PROPERTYNAME_TURNOUT_TYPE);
    defaultStateModel = getBufferedModel(Turnout.PROPERTYNAME_DEFAULT_STATE);
    orientationModel = getBufferedModel(Turnout.PROPERTYNAME_ORIENTATION);

    numberTextField = new JSpinner();
    numberTextField.setModel(SpinnerAdapterFactory.createNumberAdapter(numberModel, 1, // defaultValue
            0, // minValue
            1000, // maxValue
            1)); // step

    descTextField = BasicComponentFactory.createTextField(descriptionModel);
    descTextField.setColumns(5);//from  ww  w  .j  a  v  a2  s  .  c o m

    bus1TextField = new JSpinner();
    bus1TextField.setModel(SpinnerAdapterFactory.createNumberAdapter(bus1Model, 1, // defaultValue
            0, // minValue
            100, // maxValue
            1)); // step

    address1TextField = new JSpinner();
    address1TextField.setModel(SpinnerAdapterFactory.createNumberAdapter(address1Model, 1, // defaultValue
            0, // minValue
            324, // maxValue
            1)); // step

    bus2TextField = new JSpinner();
    bus2TextField.setModel(SpinnerAdapterFactory.createNumberAdapter(bus2Model, 0, // defaultValue
            0, // minValue
            100, // maxValue
            1)); // step

    address2TextField = new JSpinner();
    address2TextField.setModel(SpinnerAdapterFactory.createNumberAdapter(address2Model, 0, // defaultValue
            0, // minValue
            324, // maxValue
            1)); // step

    switched1Checkbox = BasicComponentFactory.createCheckBox(swiched1Model, "Inverted");

    switched2Checkbox = BasicComponentFactory.createCheckBox(switched2Model, "Inverted");

    final List<TurnoutType> turnoutTypes = Arrays.asList(TurnoutType.values());

    turnoutTypeComboBox = BasicComponentFactory
            .createComboBox(new SelectionInList<TurnoutType>(turnoutTypes, turnoutTypeModel));
    turnoutTypeComboBox.setRenderer(new TurnoutTypeComboBoxCellRenderer());
    turnoutTypeComboBox.addActionListener(new TurnoutTypeSelectionListener());

    switch (presentationModel.getBean().getType()) {
    case DEFAULT_LEFT:
    case DOUBLECROSS:
    case CUTTER:
        bus2TextField.setValue(0);
        bus2TextField.setEnabled(false);
        address2TextField.setValue(0);
        address2TextField.setEnabled(false);
        break;
    case THREEWAY:
        bus2TextField.setEnabled(true);
        address2TextField.setEnabled(true);
        break;
    default:
        break;
    }

    turnoutDefaultStateComboBox = BasicComponentFactory.createComboBox(new SelectionInList<TurnoutState>(
            new TurnoutState[] { TurnoutState.STRAIGHT, TurnoutState.LEFT }, defaultStateModel));
    turnoutDefaultStateComboBox.setRenderer(new TurnoutDefaultStateComboBoxCellRenderer());

    turnoutOrientationComboBox = BasicComponentFactory.createComboBox(
            new SelectionInList<TurnoutOrientation>(TurnoutOrientation.values(), orientationModel));

    testTurnoutWidget = new TurnoutWidget(ctx, testTurnout, false, true);
    if (!TurnoutHelper.isTurnoutReadyToTest(presentationModel.getBean())) {
        testTurnoutWidget.setEnabled(false);
    }

    testTurnoutWidget
            .connectedToRailwayDevice(new ConnectedToRailwayEvent(ctx.getRailwayDeviceManager().isConnected()));

    errorPanel = new ErrorPanel();

    okButton = new JButton(new ApplyChangesAction());
    cancelButton = new JButton(new CancelAction());
    validate(presentationModel.getBean());
}

From source file:com.mrfeinberg.proxyprefs.ProxyPrefsEditorBuilder.java

License:Apache License

private void initComponents() {
    hostField = BasicComponentFactory.createTextField(
            proxyPrefsPresentationModel.getBufferedModel(ProxyPreferences.PROPERTYNAME_PROXY_HOST));
    portField = BasicComponentFactory.createIntegerField(
            proxyPrefsPresentationModel.getBufferedModel(ProxyPreferences.PROPERTYNAME_PROXY_PORT),
            new DecimalFormat("0"));
    useProxyCheckbox = BasicComponentFactory.createCheckBox(
            proxyPrefsPresentationModel.getBufferedModel(ProxyPreferences.PROPERTYNAME_USE_PROXY),
            "Use HTTP Proxy");
    useProxyCheckbox.addActionListener(new ActionListener() {
        public void actionPerformed(final ActionEvent e) {
            enableFields();/*from   w  ww  . j  a v a 2  s .  c  o m*/
        }
    });
    enableFields();
}

From source file:com.stefanbrenner.droplet.ui.ActionPanel.java

License:Open Source License

/**
 * Create the panel./*from w w w . j  av  a 2 s. co m*/
 */
public ActionPanel(final IActionDevice device, final T action) {

    setDevice(device);
    setAction(action);

    setLayout(new GridBagLayout());
    setBackground(DropletColors.getBackgroundColor(getDevice()));

    GridBagConstraints gbc = UiUtils.createGridBagConstraints();
    gbc.fill = GridBagConstraints.BOTH;
    gbc.insets = new Insets(2, 2, 2, 2);

    BeanAdapter<IAction> adapter = new BeanAdapter<IAction>(action, true);

    // enabled checkbox
    cbEnable = BasicComponentFactory.createCheckBox(adapter.getValueModel(IAction.PROPERTY_ENABLED),
            StringUtils.EMPTY);
    cbEnable.setToolTipText(Messages.getString("ActionPanel.enableAction.tooltip")); //$NON-NLS-1$
    cbEnable.setFocusable(false);
    UiUtils.editGridBagConstraints(gbc, 0, 0, 0, 0);
    add(cbEnable, gbc);

    // offset spinner
    spOffset = new MouseWheelSpinner(true);
    spOffset.setToolTipText(Messages.getString("ActionPanel.Offset.Tooltip")); //$NON-NLS-1$
    spOffset.setModel(SpinnerAdapterFactory.createNumberAdapter(adapter.getValueModel(IAction.PROPERTY_OFFSET),
            0, 0, ActionPanel.MAX_TIME_INPUT, 1));
    ((JSpinner.DefaultEditor) spOffset.getEditor()).getTextField().setColumns(4);
    UiUtils.editGridBagConstraints(gbc, 1, 0, 0, 0);
    add(spOffset, gbc);

    // duration spinner
    spDuration = new MouseWheelSpinner(true);
    spDuration.setToolTipText(Messages.getString("ActionPanel.Duration.Tooltip")); //$NON-NLS-1$
    if (action instanceof IDurationAction) {
        spDuration.setModel(SpinnerAdapterFactory.createNumberAdapter(
                adapter.getValueModel(IDurationAction.PROPERTY_DURATION), 0, 0, ActionPanel.MAX_TIME_INPUT, 1));
        ((JSpinner.DefaultEditor) spDuration.getEditor()).getTextField().setColumns(4);
        UiUtils.editGridBagConstraints(gbc, 2, 0, 0, 0);
        add(spDuration, gbc);
    }

    // remove button
    btnRemove = new JButton(Messages.getString("ActionPanel.removeAction")); //$NON-NLS-1$
    btnRemove.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(final ActionEvent e) {
            remove();
        }
    });
    btnRemove.setToolTipText(Messages.getString("ActionPanel.removeAction.tooltip")); //$NON-NLS-1$
    btnRemove.setFocusable(false);
    UiUtils.editGridBagConstraints(gbc, 3, 0, 0, 0);
    add(btnRemove, gbc);

}

From source file:de.dal33t.powerfolder.ui.wizard.DefaultFolderWizardHelper.java

License:Open Source License

protected void initComponents() {
    listener = new MyServerClientListener();

    setupDefaultModel = new ValueHolder(PreferencesEntry.SETUP_DEFAULT_FOLDER.getValueBoolean(getController()),
            true);/*www.j a v a  2  s .c o  m*/
    setupDefaultCB = BasicComponentFactory.createCheckBox(setupDefaultModel,
            Translation.getTranslation("wizard.login_online_storage.setup_default"));
    setupDefaultCB.setOpaque(false);

    defaultSynchronizedFolder = getController().getFolderRepository().getFoldersBasedir()
            .resolve(Translation.getTranslation("exp.wizard.basic_setup.default_folder_name"));

    if (Files.exists(defaultSynchronizedFolder)) {
        // Hmmm. User has already created this???
        setupDefaultCB.setSelected(false);
    }

    client.addListener(listener);
}

From source file:de.dal33t.powerfolder.ui.wizard.LoginPanel.java

License:Open Source License

/**
 * Initializes all necessary components/*  w  w  w .  ja  va2  s.com*/
 */
protected void initComponents() {
    boolean changeLoginAllowed = ConfigurationEntry.SERVER_CONNECT_CHANGE_LOGIN_ALLOWED
            .getValueBoolean(getController());
    boolean rememberPasswordAllowed = ConfigurationEntry.SERVER_CONNECT_REMEMBER_PASSWORD_ALLOWED
            .getValueBoolean(getController());
    serverLabel = new JLabel(Translation.getTranslation("general.server"));
    serverInfoLabel = new ActionLabel(getController(), new AbstractAction() {
        public void actionPerformed(ActionEvent e) {
            new ConfigurationLoaderDialog(getController()).openAndWait();
        }
    });
    serverInfoLabel.setText(client.getServerString());
    serverInfoLabel.setEnabled(changeLoginAllowed);

    if (StringUtils.isNotBlank(ConfigurationEntry.SERVER_CONNECTION_URLS.getValue(getController()))) {
        serverURLLabel = new JLabel(Translation.getTranslation("general.server"));

        String webURL = client.getWebURL();
        int selection = 0;

        String allServers = ConfigurationEntry.SERVER_CONNECTION_URLS.getValue(getController());
        String[] allServersArray = allServers.split(";");
        String[] serverLabels = new String[allServersArray.length];

        for (int i = 0; i < allServersArray.length; i++) {
            try {
                String server = allServersArray[i];
                serverLabels[i] = server.substring(0, server.indexOf("="));
                String serverURL = server.substring(server.indexOf("=") + 1);
                if (serverURL.equals(webURL)) {
                    selection = i;
                }
            } catch (Exception e) {
                Logger.getLogger(LoginPanel.class.getName())
                        .warning("Unable to read servers config: " + allServers);
            }
        }

        serverURLBox = new JComboBox<String>(serverLabels);
        serverURLBox.setSelectedIndex(selection);
        serverURLBox.setEditable(false);
        serverURLBox.addActionListener(new ServerSelectAction());
    }

    if (StringUtils.isNotBlank(ConfigurationEntry.SERVER_IDP_DISCO_FEED_URL.getValue(getController()))) {
        idPLabel = new JLabel(Translation.getTranslation("general.idp"));
        idPSelectBox = new StyledComboBox<>(new String[] { Translation.getTranslation("general.loading") });
        idPSelectBox.setEnabled(false);

        SwingWorker<Void, Void> worker = new SwingWorker<Void, Void>() {
            @Override
            protected Void doInBackground() throws Exception {
                URL url = new URL(ConfigurationEntry.SERVER_IDP_DISCO_FEED_URL.getValue(getController()));
                HttpsURLConnection con = (HttpsURLConnection) url.openConnection();

                BufferedReader is = new BufferedReader(
                        new InputStreamReader(con.getInputStream(), Convert.UTF8.toString()));
                String line = is.readLine();
                StringBuilder body = new StringBuilder();

                while (line != null) {
                    body.append(line);
                    line = is.readLine();
                }

                JSONArray resp = new JSONArray(body.toString());
                List<String> idPList = new ArrayList<>(resp.length());

                idPSelectBox.removeAllItems();
                idPSelectBox.addItem("Keine - Externer Benutzer");
                idPList.add("ext");

                String lastIdP = ConfigurationEntry.SERVER_IDP_LAST_CONNECTED.getValue(getController());
                boolean lastIdPSet = false;

                for (int i = 0; i < resp.length(); i++) {
                    JSONObject obj = resp.getJSONObject(i);

                    String entity = obj.getString("entityID");
                    String name = obj.getJSONArray("DisplayNames").getJSONObject(0).getString("value");

                    idPSelectBox.addItem(name);
                    idPList.add(entity);

                    if (entity.equals(lastIdP)) {
                        idPSelectBox.setSelectedIndex(i + 1);
                        lastIdPSet = true;
                    }
                }

                if (!lastIdPSet) {
                    idPSelectBox.setSelectedIndex(0);
                    ConfigurationEntry.SERVER_IDP_LAST_CONNECTED.setValue(getController(), "ext");
                    ConfigurationEntry.SERVER_IDP_LAST_CONNECTED_ECP.setValue(getController(), "ext");
                }

                idPSelectBox.addActionListener(new IdPSelectionAction(getController(), idPList));
                idPSelectBox.setEnabled(true);
                listLoaded = true;

                updateButtons();

                return null;
            }
        };

        worker.execute();
    }

    usernameLabel = new JLabel(LoginUtil.getUsernameLabel(getController()));
    usernameField = new JTextField();
    usernameField.addKeyListener(new MyKeyListener());
    usernameField.setEditable(changeLoginAllowed);
    passwordLabel = new JLabel(Translation.getTranslation("general.password") + ':');
    passwordField = new JPasswordField();
    passwordField.setEditable(changeLoginAllowed);
    passwordField.addKeyListener(new MyKeyListener());

    if (StringUtils.isNotBlank(ConfigurationEntry.SERVER_IDP_DISCO_FEED_URL.getValue(getController()))) {
        usernameField.setText(ConfigurationEntry.SERVER_CONNECT_USERNAME.getValue(getController()));
        passwordField.setText(new String(LoginUtil
                .deobfuscate(ConfigurationEntry.SERVER_CONNECT_PASSWORD.getValue(getController()) == null ? ""
                        : ConfigurationEntry.SERVER_CONNECT_PASSWORD.getValue(getController()))));
    } else if (client.isConnected()) {
        usernameField.setText(client.getUsername());
        passwordField.setText(client.getPasswordClearText());
    }

    // loginButton = new JButton("Login");
    // loginButton.setOpaque(false);
    // loginButton.addActionListener(new ActionListener() {
    // public void actionPerformed(ActionEvent e) {
    // Wizard wiz = (Wizard) getWizardContext().getAttribute(
    // WizardContextAttributes.WIZARD_ATTRIBUTE);
    // wiz.next();
    // }
    // });

    rememberPasswordBox = BasicComponentFactory.createCheckBox(
            PreferencesEntry.SERVER_REMEMBER_PASSWORD.getModel(getController()),
            Translation.getTranslation("wizard.login_online_storage.remember_password"));
    rememberPasswordBox.setOpaque(false);
    rememberPasswordBox.setVisible(changeLoginAllowed && rememberPasswordAllowed);

    useOSBox = new JCheckBox(Translation.getTranslation("wizard.login_online_storage.no_os")); // @todo
                                                                                               // //
                                                                                               // "Use online storage"?
    useOSBox.setSelected(!PreferencesEntry.USE_ONLINE_STORAGE.getValueBoolean(getController()));
    useOSBox.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            PreferencesEntry.USE_ONLINE_STORAGE.setValue(getController(), !useOSBox.isSelected());
        }
    });
    useOSBox.setOpaque(false);
    connectingLabel = SimpleComponentFactory
            .createLabel(Translation.getTranslation("wizard.login_online_storage.connecting"));
    workingBar = new JProgressBar();
    workingBar.setIndeterminate(true);
    updateOnlineStatus();
    client.addListener(new MyServerClientListner());

    // Never run forever
    getController().scheduleAndRepeat(new Runnable() {
        public void run() {
            if (!client.isConnected()) {
                getWizard().next();
            }
        }
    }, 60000L, 10000L);
}

From source file:fi.smaa.jsmaa.gui.views.CriteriaListView.java

License:Open Source License

public JComponent buildPanel() {

    FormLayout layout = new FormLayout("pref, 3dlu, left:pref", "p");

    if (hasCardinalCriteria(model)) {
        layout.appendColumn(ColumnSpec.decode("3dlu"));
        layout.appendColumn(ColumnSpec.decode("center:pref"));
    }/*  w w  w .j a  v  a2 s . co  m*/
    if (hasScaleCriteria(model)) {
        layout.appendColumn(ColumnSpec.decode("3dlu"));
        layout.appendColumn(ColumnSpec.decode("center:pref"));
    }

    PanelBuilder builder = new PanelBuilder(layout);
    builder.setBorder(BorderFactory.createEmptyBorder());
    CellConstraints cc = new CellConstraints();

    builder.addLabel("Name", cc.xy(1, 1));
    builder.addLabel("Type", cc.xy(3, 1));

    if (hasCardinalCriteria(model)) {
        builder.addLabel("Ascending", cc.xy(5, 1));
    }
    if (hasScaleCriteria(model)) {
        builder.addLabel("Scale", cc.xy(7, 1));
    }

    int row = 3;

    for (Criterion c : model.getCriteria()) {
        LayoutUtil.addRow(layout);

        PresentationModel<Criterion> pm = new PresentationModel<Criterion>(c);
        builder.add(BasicComponentFactory.createLabel(pm.getModel(Criterion.PROPERTY_NAME)), cc.xy(1, row));

        builder.add(BasicComponentFactory.createLabel(pm.getModel(Criterion.PROPERTY_TYPELABEL)),
                cc.xy(3, row));
        if (c instanceof CardinalCriterion) {
            CardinalCriterion cardCrit = (CardinalCriterion) c;
            PresentationModel<CardinalCriterion> cpm = new PresentationModel<CardinalCriterion>(cardCrit);
            builder.add(
                    BasicComponentFactory.createCheckBox(cpm.getModel(ScaleCriterion.PROPERTY_ASCENDING), null),
                    cc.xy(5, row));
        }
        if (c instanceof ScaleCriterion) {
            ScaleCriterion cardCrit = (ScaleCriterion) c;
            PresentationModel<ScaleCriterion> cpm = new PresentationModel<ScaleCriterion>(cardCrit);
            builder.add(BasicComponentFactory.createLabel(cpm.getModel(ScaleCriterion.PROPERTY_SCALE),
                    new IntervalFormat()), cc.xy(7, row));
        }

        row += 2;
    }

    return builder.getPanel();
}

From source file:fi.smaa.jsmaa.gui.views.CriterionView.java

License:Open Source License

private JComponent buildOverviewPart() {
    FormLayout layout = new FormLayout("right:pref, 3dlu, left:pref", "p, 3dlu, p");

    PanelBuilder builder = new PanelBuilder(layout);
    CellConstraints cc = new CellConstraints();

    PresentationModel<Criterion> pm = new PresentationModel<Criterion>(criterion);

    builder.addLabel("Name:", cc.xy(1, 1));
    builder.add(BasicComponentFactory.createLabel(pm.getModel(Criterion.PROPERTY_NAME)), cc.xy(3, 1));
    builder.addLabel("Type:", cc.xy(1, 3));
    builder.add(BasicComponentFactory.createLabel(pm.getModel(Criterion.PROPERTY_TYPELABEL)), cc.xy(3, 3));

    int row = 5;/*from   w w  w.ja  v a 2 s. co  m*/
    if (criterion instanceof ScaleCriterion) {
        LayoutUtil.addRow(layout);
        ScaleCriterion cardCrit = (ScaleCriterion) criterion;
        PresentationModel<ScaleCriterion> pmc = new PresentationModel<ScaleCriterion>(cardCrit);
        builder.addLabel("Scale:", cc.xy(1, row));
        builder.add(BasicComponentFactory.createLabel(pmc.getModel(ScaleCriterion.PROPERTY_SCALE),
                new IntervalFormat()), cc.xy(3, row));
        row += 2;
    }

    if (criterion instanceof CardinalCriterion) {
        CardinalCriterion cardCrit = (CardinalCriterion) criterion;
        PresentationModel<CardinalCriterion> pmc = new PresentationModel<CardinalCriterion>(cardCrit);
        LayoutUtil.addRow(layout);
        builder.addLabel("Ascending:", cc.xy(1, row));
        builder.add(BasicComponentFactory.createCheckBox(pmc.getModel(ScaleCriterion.PROPERTY_ASCENDING), null),
                cc.xy(3, row));
    }

    return builder.getPanel();
}

From source file:fi.smaa.jsmaa.gui.views.TechnicalParameterView.java

License:Open Source License

public JComponent buildPanel() {
    FormLayout layout = new FormLayout("left:pref, 3dlu, left:pref:grow", "p, 3dlu, p, 3dlu, p");

    int fullWidth = 3;

    PanelBuilder builder = new PanelBuilder(layout);
    builder.setDefaultDialogBorder();/*  w  w w . j  ava 2 s . com*/
    CellConstraints cc = new CellConstraints();

    builder.addSeparator("Model technical parameters", cc.xyw(1, 1, fullWidth));

    builder.addLabel("Lambda interval", cc.xy(1, 3));

    Interval range = new Interval(0.5, 1.0);
    String msg = "Lambda must be within range ";

    PresentationModel<Interval> imodel = new PresentationModel<Interval>(model.getLambda());
    IntervalPanel lambdaPanel = new IntervalPanel(
            new ConstrainedIntervalValueModel(null, model.getLambda(), imodel.getModel(Interval.PROPERTY_START),
                    true, range, msg),
            new ConstrainedIntervalValueModel(null, model.getLambda(), imodel.getModel(Interval.PROPERTY_END),
                    false, range, msg));
    builder.add(lambdaPanel, cc.xy(3, 3));

    builder.addLabel("Exploitation rule", cc.xy(1, 5));
    builder.add(BasicComponentFactory.createCheckBox(
            new PresentationModel<SMAATRIModel>(model).getModel(SMAATRIModel.PROPERTY_RULE),
            "(optimistic if checked, pessimistic otherwise)"), cc.xy(3, 5));
    return builder.getPanel();
}

From source file:org.archiviststoolkit.swing.ATBasicComponentFactory.java

License:Open Source License

public static JCheckBox createCheckBox(PresentationModel detailsModel, String fieldName, Class clazz,
        boolean buffered) {
    ATFieldInfo fieldInfo = ATFieldInfo.getFieldInfo(clazz.getName() + "." + fieldName);
    JCheckBox checkBox;//from w  ww .  ja  va 2s .c om
    if (fieldInfo == null) {
        if (buffered) {
            checkBox = BasicComponentFactory.createCheckBox(detailsModel.getBufferedModel(fieldName),
                    fieldName);
        } else {
            checkBox = BasicComponentFactory.createCheckBox(detailsModel.getModel(fieldName), fieldName);
        }
    } else {
        if (buffered) {
            checkBox = BasicComponentFactory.createCheckBox(detailsModel.getBufferedModel(fieldName),
                    fieldInfo.getFieldLabel());
        } else {
            checkBox = BasicComponentFactory.createCheckBox(detailsModel.getModel(fieldName),
                    fieldInfo.getFieldLabel());
        }
        checkBox.setToolTipText(fieldInfo.getPopupHelpText());
    }
    checkBox.addFocusListener(new ATCheckBoxListener(checkBox));
    return checkBox;
}

From source file:org.drugis.addis.gui.AuxComponentFactory.java

License:Open Source License

public static JCheckBox createDynamicEnabledBoundCheckbox(String name, ValueHolder<Boolean> enabledModel,
        ValueHolder<Boolean> selectedModel) {
    JCheckBox checkBox = BasicComponentFactory.createCheckBox(selectedModel, name);
    Bindings.bind(checkBox, "enabled", enabledModel);
    return checkBox;
}