private void createSettings()

in PluginsAndFeatures/azure-toolkit-for-eclipse/com.microsoft.azuretools.azureexplorer/src/com/microsoft/azuretools/azureexplorer/forms/createvm/MachineSettingsStep.java [97:200]


    private void createSettings(Composite container) {
        final Composite composite = new Composite(container, SWT.NONE);
        GridLayout gridLayout = new GridLayout();
        gridLayout.numColumns = 1;
        GridData gridData = new GridData();
        gridData.horizontalAlignment = SWT.FILL;
        gridData.verticalAlignment = GridData.BEGINNING;
        gridData.grabExcessHorizontalSpace = true;
        gridData.widthHint = 250;
        composite.setLayout(gridLayout);
        composite.setLayoutData(gridData);

        vmNameLabel = new Label(composite, SWT.LEFT);
        vmNameLabel.setText("Virtual Machine Name:");
        vmNameTextField = new Text(composite, SWT.LEFT | SWT.BORDER);
        gridData = new GridData(SWT.FILL, SWT.CENTER, true, true);
        vmNameTextField.setLayoutData(gridData);

        vmSizeLabel = new Label(composite, SWT.LEFT);
        vmSizeLabel.setText("Size:");

        Composite sizeContainer = new Composite(composite, SWT.NONE);
        gridLayout = new GridLayout();
        gridLayout.numColumns = 2;
        sizeContainer.setLayout(gridLayout);
        gridData = new GridData();
        gridData.horizontalAlignment = SWT.FILL;
        gridData.grabExcessHorizontalSpace = true;
        sizeContainer.setLayoutData(gridData);

        vmSizeComboBox = new Combo(sizeContainer, SWT.READ_ONLY);
        gridData = new GridData(SWT.FILL, SWT.CENTER, true, true);
        vmSizeComboBox.setLayoutData(gridData);

        pricingLink = new Link(sizeContainer, SWT.NONE);
        pricingLink.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                try {
                    PlatformUI.getWorkbench().getBrowserSupport().getExternalBrowser()
                            .openURL(new URL("https://azure.microsoft.com/en-us/pricing/details/virtual-machines/linux/"));
                } catch (Exception ex) {
                    DefaultLoader.getUIHelper().logError(ex.getMessage(), ex);
                }
            }
        });
        pricingLink.setText("<a>Pricing</a>");
        gridData = new GridData(SWT.RIGHT, SWT.CENTER, false, false);
        pricingLink.setLayoutData(gridData);

        vmUserLabel = new Label(composite, SWT.LEFT);
        vmUserLabel.setText("User name:");
        vmUserTextField = new Text(composite, SWT.LEFT | SWT.BORDER);
        gridData = new GridData(SWT.FILL, SWT.CENTER, true, true);
        vmUserTextField.setLayoutData(gridData);

        certificateCheckBox = new Button(composite, SWT.CHECK);
        certificateCheckBox.setText("Upload compatible SSH key");
        certificateCheckBox.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent event) {
                certificateCheckBoxSelected(certificateCheckBox.getSelection());
            }
        });

        createCertificatePanel(composite);

        passwordCheckBox = new Button(composite, SWT.CHECK);
        passwordCheckBox.setText("Provide a password");
        passwordCheckBox.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent event) {
                vmPasswordLabel.setEnabled(passwordCheckBox.getSelection());
                vmPasswordField.setEnabled(passwordCheckBox.getSelection());
                confirmPasswordLabel.setEnabled(passwordCheckBox.getSelection());
                confirmPasswordField.setEnabled(passwordCheckBox.getSelection());

                validateEmptyFields();
            }
        });

        vmPasswordLabel = new Label(composite, SWT.LEFT);
        vmPasswordLabel.setText("Password:");
        vmPasswordField = new Text(composite, SWT.PASSWORD | SWT.BORDER);
        gridData = new GridData(SWT.FILL, SWT.CENTER, true, true);
        vmPasswordField.setLayoutData(gridData);
        confirmPasswordLabel = new Label(composite, SWT.LEFT);
        confirmPasswordLabel.setText("Confirm:");
        confirmPasswordField = new Text(composite, SWT.PASSWORD | SWT.BORDER);
        gridData = new GridData(SWT.FILL, SWT.CENTER, true, true);
        confirmPasswordField.setLayoutData(gridData);

        ModifyListener modifyListener = new ModifyListener() {
            @Override
            public void modifyText(ModifyEvent modifyEvent) {
                validateEmptyFields();
            }
        };
        vmNameTextField.addModifyListener(modifyListener);
        vmUserTextField.addModifyListener(modifyListener);
        certificateField.addModifyListener(modifyListener);
        vmPasswordField.addModifyListener(modifyListener);
        confirmPasswordField.addModifyListener(modifyListener);
    }