package com.amazonaws.eclipse.core.ui;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import com.amazonaws.eclipse.core.regions.Region;
import com.amazonaws.eclipse.core.regions.RegionUtils;
public class RegionSelectionComposite extends Composite {
private String serviceName;
private Combo regionSelectionCombo;
private List<SelectionListener> listeners = new ArrayList<SelectionListener>();
public RegionSelectionComposite(final Composite parent, final int style) {
this(parent, style, null);
}
public RegionSelectionComposite(final Composite parent, final int style, final String serviceName) {
super(parent, style);
this.serviceName = serviceName;
this.setLayout(new GridLayout(3, false));
createRegionSelectionCombo();
}
protected void createRegionSelectionCombo() {
Label selectAccount = new Label(this, SWT.None);
selectAccount.setText("Select Region:"); //$NON-NLS-1$
regionSelectionCombo = new Combo(this, SWT.DROP_DOWN | SWT.READ_ONLY);
List<Region> regions = serviceName == null ? RegionUtils.getRegions()
: RegionUtils.getRegionsForService(serviceName);
for (Region region : regions) {
regionSelectionCombo.add(region.getName());
regionSelectionCombo.setData(region.getName(), region);
}
regionSelectionCombo.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
for ( SelectionListener listener : listeners ) {
listener.widgetSelected(e);
}
}
});
}
public void setSelectRegion(String regionName) {
regionSelectionCombo.setText(regionName);
}
}