protected void addTokenCheckbox()

in org.eclipse.mylyn.github.ui/src/org/eclipse/mylyn/internal/github/ui/HttpRepositorySettingsPage.java [137:196]


	protected void addTokenCheckbox(boolean userOptional) {
		needsUser = !userOptional;
		useToken = new Button(compositeContainer, SWT.CHECK);
		useToken.setText(Messages.HttpRepositorySettingsPage_LabelUseToken);
		useToken.setToolTipText(
				Messages.HttpRepositorySettingsPage_TooltipUseToken);
		useToken.moveBelow(savePasswordButton);
		GridDataFactory.defaultsFor(useToken).span(3, 1).applyTo(useToken);
		String savePasswordText = savePasswordButton.getText();
		boolean[] allowAnon = { isAnonymousAccess() };
		SelectionAdapter listener = new SelectionAdapter() {

			@Override
			public void widgetSelected(SelectionEvent e) {
				boolean isChecked = useToken.getSelection();
				if (isChecked) {
					repositoryPasswordEditor.setLabelText(
							Messages.HttpRepositorySettingsPage_LabelToken);
					savePasswordButton.setText(
							Messages.HttpRepositorySettingsPage_LabelSaveToken);
					if (anonymousButton != null) {
						allowAnon[0] = isAnonymousAccess();
						setAnonymous(false);
						anonymousButton.setEnabled(false);
					}
				} else {
					repositoryPasswordEditor.setLabelText(LABEL_PASSWORD);
					savePasswordButton.setText(savePasswordText);
					if (anonymousButton != null) {
						anonymousButton.setEnabled(true);
						setAnonymous(allowAnon[0]);
					}
				}
				if (userOptional) {
					repositoryUserNameEditor.getTextControl(compositeContainer)
							.setEnabled(!isChecked);
					repositoryUserNameEditor.setEmptyStringAllowed(isChecked);
				}
				repositoryPasswordEditor.getLabelControl(compositeContainer)
						.requestLayout();
				// Trigger page validation if needed
				if (userOptional && getWizard() != null) {
					getWizard().getContainer().updateButtons();
				}
			}

			@Override
			public void widgetDefaultSelected(SelectionEvent e) {
				widgetSelected(e);
			}
		};
		useToken.addSelectionListener(listener);
		TaskRepository taskRepository = getRepository();
		if (taskRepository != null) {
			useToken.setSelection(Boolean.parseBoolean(
					taskRepository.getProperty(GitHub.PROPERTY_USE_TOKEN)));
			// setSelection does not fire a selection event
			listener.widgetSelected(null);
		}
	}