gt: 	protected void buttonPressed(int buttonId) {
context: /*******************************************************************************
   * Copyright (c) 2011 Mathias Kinzler <mathias.kinzler@sap.com>
   * Copyright (c) 2011 Matthias Sohn <matthias.sohn@sap.com>
   *
   * All rights reserved. This program and the accompanying materials
   * are made available under the terms of the Eclipse Public License v1.0
   * which accompanies this distribution, and is available at
   * http://www.eclipse.org/legal/epl-v10.html
   *******************************************************************************/
  package org.eclipse.egit.ui.internal.dialogs;
  
  import java.io.IOException;
  
  import org.eclipse.egit.ui.Activator;
  import org.eclipse.egit.ui.UIPreferences;
  import org.eclipse.egit.ui.internal.UIText;
  import org.eclipse.egit.ui.internal.preferences.GlobalConfigurationPreferencePage;
  import org.eclipse.jface.dialogs.Dialog;
  import org.eclipse.jface.dialogs.TitleAreaDialog;
  import org.eclipse.jface.layout.GridDataFactory;
  import org.eclipse.jface.resource.JFaceResources;
  import org.eclipse.jface.window.Window;
  import org.eclipse.jgit.errors.ConfigInvalidException;
  import org.eclipse.jgit.lib.ConfigConstants;
  import org.eclipse.jgit.lib.Repository;
  import org.eclipse.jgit.lib.StoredConfig;
  import org.eclipse.jgit.lib.UserConfig;
  import org.eclipse.jgit.util.FS;
  import org.eclipse.jgit.util.SystemReader;
  import org.eclipse.swt.SWT;
  import org.eclipse.swt.custom.CLabel;
  import org.eclipse.swt.events.ModifyEvent;
  import org.eclipse.swt.events.ModifyListener;
  import org.eclipse.swt.events.SelectionAdapter;
  import org.eclipse.swt.events.SelectionEvent;
  import org.eclipse.swt.layout.GridLayout;
  import org.eclipse.swt.widgets.Button;
  import org.eclipse.swt.widgets.Composite;
  import org.eclipse.swt.widgets.Control;
  import org.eclipse.swt.widgets.Label;
  import org.eclipse.swt.widgets.Link;
  import org.eclipse.swt.widgets.Shell;
  import org.eclipse.swt.widgets.Text;
  import org.eclipse.ui.PlatformUI;
  import org.eclipse.ui.dialogs.PreferencesUtil;
  
  /**
   * Dialog for basic configuration (User name, e-mail)
   *
   */
  public class BasicConfigurationDialog extends TitleAreaDialog {
  	private Button dontShowAgain;
  
  	private StoredConfig userScopedConfig;
  
  	private Text email;
  
  	private Text userName;
  
  	private boolean needsUpdate = false;
  
  	/**
  	 * Opens the dialog if the {@link UIPreferences#SHOW_INITIAL_CONFIG_DIALOG}
  	 * is true and author or committer identity is based on implicit data
  	 *
  	 * @param repositories
  	 *            if called from repository context otherwise null
  	 */
  	public static void show(Repository... repositories) {
  		if (Activator.getDefault().getPreferenceStore()
  				.getBoolean(UIPreferences.SHOW_INITIAL_CONFIG_DIALOG)
  				&& isImplicitUserConfig(repositories))
  			PlatformUI.getWorkbench().getDisplay().syncExec(new Runnable() {
  				@Override
  				public void run() {
  					new BasicConfigurationDialog(PlatformUI.getWorkbench()
  							.getDisplay().getActiveShell()).open();
  				}
  			});
  	}
  
  	private static boolean isImplicitUserConfig(Repository... repositories) {
  		if (repositories == null)
  			return false;
  
  		for (Repository repository : repositories) {
  			UserConfig uc = loadRepoScopedConfig(repository)
  					.get(UserConfig.KEY);
  			if (uc.isAuthorNameImplicit() //
  					|| uc.isAuthorEmailImplicit()
  					|| uc.isCommitterNameImplicit()
  					|| uc.isCommitterEmailImplicit())
  				return true;
  		}
  		return false;
  	}
  
  	private static StoredConfig loadUserScopedConfig() {
  		StoredConfig c = SystemReader.getInstance().openUserConfig(null,
  				FS.DETECTED);
  		try {
  			c.load();
  		} catch (IOException e) {
  			Activator.handleError(e.getMessage(), e, true);
  		} catch (ConfigInvalidException e) {
  			Activator.handleError(e.getMessage(), e, true);
  		}
  		return c;
  	}
  
  	private static StoredConfig loadRepoScopedConfig(Repository repo) {
  		StoredConfig c = repo.getConfig();
  		try {
  			c.load();
  		} catch (IOException e) {
  			Activator.handleError(e.getMessage(), e, true);
  		} catch (ConfigInvalidException e) {
  			Activator.handleError(e.getMessage(), e, true);
  		}
  		return c;
  	}
  
  	/**
  	 * @param parentShell
  	 */
  	public BasicConfigurationDialog(Shell parentShell) {
  		super(parentShell);
  		setHelpAvailable(false);
  	}
  
  	@Override
  	protected Control createDialogArea(Composite parent) {
  		userScopedConfig = loadUserScopedConfig();
  
  		UserConfig userConfig = userScopedConfig.get(UserConfig.KEY);
  		Composite main = new Composite(parent, SWT.NONE);
  		main.setLayout(new GridLayout(2, false));
  		GridDataFactory.fillDefaults().grab(true, true).applyTo(main);
  
  		// user name
  		Label userNameLabel = new Label(main, SWT.NONE);
  		userNameLabel.setText(UIText.BasicConfigurationDialog_UserNameLabel);
  		userName = new Text(main, SWT.BORDER);
  		GridDataFactory.fillDefaults().grab(true, false).applyTo(userName);
  		String currentName = null;
  		if (userConfig != null)
  			currentName = userConfig.getAuthorName();
  		if (currentName != null)
  			userName.setText(currentName);
  		userName.addModifyListener(new ModifyListener() {
  			@Override
  			public void modifyText(ModifyEvent e) {
  				needsUpdate = true;
  			}
  		});
  
  		// user email
  		Label emailLabel = new Label(main, SWT.NONE);
  		emailLabel.setText(UIText.BasicConfigurationDialog_UserEmailLabel);
  		email = new Text(main, SWT.BORDER);
  		GridDataFactory.fillDefaults().grab(true, false).applyTo(email);
  		String currentMail = null;
  		if (userConfig != null)
  			currentMail = userConfig.getAuthorEmail();
  		if (currentMail != null)
  			email.setText(currentMail);
  		email.addModifyListener(new ModifyListener() {
  			@Override
  			public void modifyText(ModifyEvent e) {
  				needsUpdate = true;
  			}
  		});
  
  		CLabel configLocationInfoLabel = new CLabel(main, SWT.NONE);
  		configLocationInfoLabel.setImage(JFaceResources
  				.getImage(Dialog.DLG_IMG_MESSAGE_INFO));
  		configLocationInfoLabel
  				.setText(UIText.BasicConfigurationDialog_ConfigLocationInfo);
  		GridDataFactory.fillDefaults().span(2, 1)
  				.applyTo(configLocationInfoLabel);
  
  		dontShowAgain = new Button(main, SWT.CHECK);
  		GridDataFactory.fillDefaults().span(2, 1).applyTo(dontShowAgain);
  		dontShowAgain.setText(UIText.BasicConfigurationDialog_DontShowAgain);
  		dontShowAgain.setSelection(true);
  
  		Link link = new Link(main, SWT.UNDERLINE_LINK);
  		GridDataFactory.fillDefaults().span(2, 1).applyTo(link);
  		link.setText(UIText.BasicConfigurationDialog_OpenPreferencePage);
  		link.addSelectionListener(new SelectionAdapter() {
  			@Override
  			public void widgetSelected(SelectionEvent e) {
  				PreferencesUtil.createPreferenceDialogOn(getShell(),
  						GlobalConfigurationPreferencePage.ID, null, null)
  						.open();
  			}
  		});
  		applyDialogFont(main);
  		return main;
  	}
  
  	@Override
  	public void create() {
  		super.create();
  		setTitle(UIText.BasicConfigurationDialog_DialogTitle);
  		setMessage(UIText.BasicConfigurationDialog_DialogMessage);
  	}
  
  	@Override
  	protected void configureShell(Shell newShell) {
  		super.configureShell(newShell);
  		newShell.setText(UIText.BasicConfigurationDialog_WindowTitle);
  	}
  
  	@Override
  