gt: 		for (Control element : children) {
context: /*
   * This program is free software; you can redistribute it and/or
   * modify it under the terms of the GNU General Public License
   * as published by the Free Software Foundation; either version 2
   * of the License, or (at your option) any later version.
   *
   * This program is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
   * GNU General Public License for more details.
   *
   * You should have received a copy of the GNU General Public License
   * along with this program; if not, write to the Free Software
   * Foundation, Inc., 51 Franklin Street, Fifth Floor,
   * Boston, MA 02110-1301, USA.
   *
   * For information about the authors of this project Have a look
   * at the AUTHORS file in the root of this project.
   */
  package net.sourceforge.fullsync.ui;
  
  import javax.inject.Inject;
  
  import org.eclipse.swt.SWT;
  import org.eclipse.swt.events.KeyEvent;
  import org.eclipse.swt.graphics.Color;
  import org.eclipse.swt.graphics.Image;
  import org.eclipse.swt.graphics.Point;
  import org.eclipse.swt.layout.GridData;
  import org.eclipse.swt.layout.GridLayout;
  import org.eclipse.swt.widgets.Composite;
  import org.eclipse.swt.widgets.Control;
  import org.eclipse.swt.widgets.Display;
  import org.eclipse.swt.widgets.Event;
  import org.eclipse.swt.widgets.Label;
  import org.eclipse.swt.widgets.Listener;
  import org.eclipse.swt.widgets.ToolBar;
  import org.eclipse.swt.widgets.ToolItem;
  
  import com.google.inject.assistedinject.Assisted;
  
  import net.sourceforge.fullsync.ConnectionDescription;
  import net.sourceforge.fullsync.Profile;
  
  class NiceListViewItem extends Composite implements Listener {
  	private final NiceListView list;
  	private final ImageRepository imageRepository;
  	private Label labelIcon;
  	private Label labelCaption;
  	private Label labelStatus;
  	private Composite compositeContent;
  	private Label labelSource;
  	private Label labelDestination;
  	private Label labelLastUpdate;
  	private Label labelNextUpdate;
  	private ProfileListControlHandler handler;
  	private Profile profile;
  	private boolean mouseOver;
  	private boolean selected;
  
  	@Inject
  	NiceListViewItem(ImageRepository imageRepository, FontRepository fontRepository, @Assisted NiceListView parent,
  		@Assisted ProfileListControlHandler handler) {
  		super(parent, SWT.NULL);
  		this.imageRepository = imageRepository;
  		this.list = parent;
  		this.handler = handler;
  		this.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
  
  		GridLayout thisLayout = new GridLayout(3, false);
  		this.addListener(SWT.MouseEnter, this);
  		this.addListener(SWT.MouseExit, this);
  		this.addListener(SWT.MouseUp, this);
  		this.addListener(SWT.MouseDown, this);
  		this.addListener(SWT.MouseDoubleClick, this);
  		this.addListener(SWT.KeyDown, this);
  		this.addListener(SWT.FocusIn, this);
  		this.addListener(SWT.FocusOut, this);
  		this.setLayout(thisLayout);
  		thisLayout.marginHeight = 3;
  		thisLayout.marginWidth = 3;
  
  		// icon
  		labelIcon = new Label(this, SWT.TRANSPARENT);
  		labelIcon.setSize(16, 16);
  		GridData labelIconLData = new GridData(GridData.CENTER, GridData.BEGINNING, false, true);
  		labelIconLData.widthHint = 16;
  		labelIconLData.heightHint = 16;
  		labelIcon.setLayoutData(labelIconLData);
  		labelIcon.addListener(SWT.MouseEnter, this);
  		labelIcon.addListener(SWT.MouseExit, this);
  		labelIcon.addListener(SWT.MouseUp, this);
  		labelIcon.addListener(SWT.MouseDown, this);
  		labelIcon.addListener(SWT.MouseDoubleClick, this);
  
  		// profile name
  		labelCaption = new Label(this, SWT.TRANSPARENT);
  		labelCaption.setFont(fontRepository.getFont("Tahoma", 9, 1)); //$NON-NLS-1$
  		GridData labelCaptionLData = new GridData();
  		labelCaptionLData.widthHint = -1;
  		labelCaption.setLayoutData(labelCaptionLData);
  		labelCaption.addListener(SWT.MouseEnter, this);
  		labelCaption.addListener(SWT.MouseExit, this);
  		labelCaption.addListener(SWT.MouseUp, this);
  		labelCaption.addListener(SWT.MouseDown, this);
  		labelCaption.addListener(SWT.MouseDoubleClick, this);
  
  		labelStatus = new Label(this, SWT.TRANSPARENT);
  		GridData labelStatusLData = new GridData(GridData.FILL, GridData.CENTER, true, false);
  		labelStatusLData.horizontalIndent = 10;
  		labelStatus.setLayoutData(labelStatusLData);
  		labelStatus.addListener(SWT.MouseEnter, this);
  		labelStatus.addListener(SWT.MouseExit, this);
  		labelStatus.addListener(SWT.MouseUp, this);
  		labelStatus.addListener(SWT.MouseDown, this);
  		labelStatus.addListener(SWT.MouseDoubleClick, this);
  
  		this.setBackground(getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND));
  		this.setForeground(parent.getForeground());
  		this.layout();
  		this.compositeContent = new Composite(this, SWT.NULL);
  		createContentComposite(compositeContent);
  	}
  
  	private void createContentComposite(Composite parent) {
  		parent.setBackgroundMode(SWT.INHERIT_FORCE);
  
  		GridLayout layout = new GridLayout(2, false);
  		layout.marginHeight = 1;
  		layout.marginWidth = 1;
  		layout.verticalSpacing = 2;
  		layout.horizontalSpacing = 2;
  		parent.setLayout(layout);
  
  		Composite cSourceDestination = new Composite(parent, SWT.FILL);
  		GridLayout sourceDestinationLayout = new GridLayout(2, false);
  		sourceDestinationLayout.marginHeight = 0;
  		sourceDestinationLayout.marginWidth = 0;
  		cSourceDestination.setLayout(sourceDestinationLayout);
  		cSourceDestination.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
  		cSourceDestination.setEnabled(false); // passes any events up to the parent
  
  		// source label
  		new Label(cSourceDestination, SWT.NULL).setText(Messages.getString("NiceListViewProfileListComposite.Source")); //$NON-NLS-1$
  		labelSource = new Label(cSourceDestination, SWT.NULL);
  		labelSource.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
  
  		// destination label
  		new Label(cSourceDestination, SWT.NULL).setText(Messages.getString("NiceListViewProfileListComposite.Destination")); //$NON-NLS-1$
  		labelDestination = new Label(cSourceDestination, SWT.NULL);
  		labelDestination.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
  
  		// last / next update
  		Composite cUpdate = new Composite(parent, SWT.FILL);
  		GridLayout updateLayout = new GridLayout(2, false);
  		updateLayout.marginHeight = 0;
  		updateLayout.marginWidth = 0;
  		cUpdate.setLayout(updateLayout);
  		cUpdate.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
  		cUpdate.setEnabled(false); // passes any events up to the parent
  
  		// last update
  		new Label(cUpdate, SWT.NULL).setText(Messages.getString("NiceListViewProfileListComposite.LastUpdate")); //$NON-NLS-1$
  		labelLastUpdate = new Label(cUpdate, SWT.NULL);
  		labelLastUpdate.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
  
  		// next update
  		new Label(cUpdate, SWT.NULL).setText(Messages.getString("NiceListViewProfileListComposite.NextUpdate")); //$NON-NLS-1$
  		labelNextUpdate = new Label(cUpdate, SWT.NULL);
  		labelNextUpdate.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
  
  		// buttons
  		ToolBar toolbar = new ToolBar(parent, SWT.FLAT);
  		toolbar.setLayoutData(new GridData(GridData.END, GridData.CENTER, true, false, 1, 2));
  
  		ToolItem runProfile = new ToolItem(toolbar, SWT.PUSH);
  		runProfile.setImage(imageRepository.getImage("Profile_Run.png")); //$NON-NLS-1$
  		runProfile.addListener(SWT.Selection, e -> handler.runProfile(getProfile(), true));
  
  		ToolItem runProfileNonInteractive = new ToolItem(toolbar, SWT.PUSH);
  		runProfileNonInteractive.setImage(imageRepository.getImage("Profile_Run_Non_Inter.png")); //$NON-NLS-1$
  		runProfileNonInteractive.addListener(SWT.Selection, e -> handler.runProfile(getProfile(), false));
  
  		ToolItem editProfile = new ToolItem(toolbar, SWT.PUSH);
  		editProfile.setImage(imageRepository.getImage("Profile_Edit.png")); //$NON-NLS-1$
  		editProfile.addListener(SWT.Selection, e -> handler.editProfile(getProfile()));
  
  		ToolItem deleteProfile = new ToolItem(toolbar, SWT.PUSH);
  		deleteProfile.setImage(imageRepository.getImage("Profile_Delete.png")); //$NON-NLS-1$
  		deleteProfile.addListener(SWT.Selection, e -> handler.deleteProfile(getProfile()));
  		GridData compositeContentLData = new GridData(GridData.FILL, GridData.CENTER, true, false, 3, 1);
  		compositeContentLData.horizontalIndent = labelIcon.getBounds().width + 4;
  		compositeContentLData.heightHint = 0;
  		compositeContentLData.widthHint = 0;
  		parent.setLayoutData(compositeContentLData);
  		parent.setVisible(false);
  		parent.addListener(SWT.MouseDoubleClick, this);
  		parent.addListener(SWT.MouseUp, this);
  		parent.addListener(SWT.MouseDown, this);
  		Control[] children = parent.getChildren();
  