protected void createContentArea()

in plugin/src/software/aws/toolkits/eclipse/amazonq/util/PersistentToolkitNotification.java [32:83]


    protected void createContentArea(final Composite parent) {
        super.createContentArea(parent);

        Composite container = (Composite) parent.getChildren()[0];

        // create checkbox
        Button doNotShowCheckbox = new Button(container, SWT.CHECK);
        GridData checkboxGridData = new GridData(SWT.BEGINNING, SWT.CENTER, false, false);
        doNotShowCheckbox.setLayoutData(checkboxGridData);

        // create checkbox button text
        Label checkboxLabel = new Label(container, SWT.NONE);
        checkboxLabel.setText("Don't show this message again");
        checkboxLabel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));

        // style button text
        Color grayColor = new Color(parent.getDisplay(), 128, 128, 128);
        checkboxLabel.setForeground(grayColor);

        Font originalFont = checkboxLabel.getFont();
        FontData[] fontData = originalFont.getFontData();
        for (FontData fd : fontData) {
            fd.setHeight(fd.getHeight() - 1);
        }
        Font smallerFont = new Font(parent.getDisplay(), fontData);
        checkboxLabel.setFont(smallerFont);

        checkboxLabel.addDisposeListener(e -> {
            smallerFont.dispose();
            grayColor.dispose();
        });

        // make button text clickable
        checkboxLabel.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseUp(final MouseEvent e) {
                doNotShowCheckbox.setSelection(!doNotShowCheckbox.getSelection());
                if (checkboxCallback != null) {
                    checkboxCallback.accept(doNotShowCheckbox.getSelection());
                }
            }
        });

        doNotShowCheckbox.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(final SelectionEvent e) {
                if (checkboxCallback != null) {
                    checkboxCallback.accept(doNotShowCheckbox.getSelection());
                }
            }
        });
    }