in org.eclipse.mylyn.github.ui/src/org/eclipse/mylyn/internal/github/ui/RepositorySearchWizardPage.java [98:215]
public void createControl(Composite parent) {
final Composite root = new Composite(parent, SWT.NONE);
GridLayoutFactory.swtDefaults().numColumns(1).applyTo(root);
Composite rowOne = new Composite(root, SWT.NONE);
GridLayoutFactory.fillDefaults().numColumns(2).applyTo(rowOne);
Label searchForLabel = new Label(rowOne, SWT.NONE);
searchForLabel
.setText(Messages.RepositorySearchWizardPage_SearchForRepositories);
final Combo languageCombo = new Combo(rowOne, SWT.READ_ONLY
| SWT.DROP_DOWN);
languageCombo.add(Messages.RepositorySearchWizardPage_AnyLanguage);
for (String language : Languages.getLanguages())
languageCombo.add(language);
languageCombo.select(0);
Composite rowTwo = new Composite(root, SWT.NONE);
GridLayoutFactory.fillDefaults().numColumns(2).applyTo(rowTwo);
GridDataFactory.fillDefaults().grab(true, false).applyTo(rowTwo);
searchText = new Text(rowTwo, SWT.SINGLE | SWT.BORDER);
GridDataFactory.swtDefaults().align(SWT.FILL, SWT.CENTER)
.grab(true, false).applyTo(searchText);
final Button searchButton = new Button(rowTwo, SWT.NONE);
searchButton.setText(Messages.RepositorySearchWizardPage_SearchButton);
searchButton.setEnabled(false);
final TableViewer repoListViewer = new TableViewer(root);
GridDataFactory.fillDefaults().grab(true, true)
.applyTo(repoListViewer.getControl());
repoListViewer.setContentProvider(new ArrayContentProvider());
repoListViewer.setLabelProvider(new DelegatingStyledCellLabelProvider(
new IStyledLabelProvider() {
private Image repoImage = UIIcons.REPOSITORY.createImage();
@Override
public void removeListener(ILabelProviderListener listener) {
// empty
}
@Override
public boolean isLabelProperty(Object element,
String property) {
return false;
}
@Override
public void dispose() {
repoImage.dispose();
}
@Override
public void addListener(ILabelProviderListener listener) {
// empty
}
@Override
public StyledString getStyledText(Object element) {
StyledString styled = new StyledString();
SearchRepository repo = (SearchRepository) element;
styled.append(repo.getOwner() + "/" + repo.getName()); //$NON-NLS-1$
String language = repo.getLanguage();
if (language != null && language.length() > 0)
styled.append(" (" + language + ")", //$NON-NLS-1$ //$NON-NLS-2$
StyledString.QUALIFIER_STYLER);
String counters = " " + MessageFormat.format( //$NON-NLS-1$
Messages.RepositorySearchWizardPage_counters,
Integer.valueOf(repo.getForks()),
Integer.valueOf(repo.getWatchers()));
styled.append(counters, StyledString.COUNTER_STYLER);
return styled;
}
@Override
public Image getImage(Object element) {
return repoImage;
}
}));
repoListViewer
.addSelectionChangedListener(new ISelectionChangedListener() {
@Override
public void selectionChanged(SelectionChangedEvent event) {
validate(repoListViewer);
}
});
searchText.addModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent e) {
searchButton
.setEnabled(searchText.getText().trim().length() != 0);
}
});
searchButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent selectionEvent) {
String language = null;
if (languageCombo.getSelectionIndex() > 0)
language = languageCombo.getText();
search(language, searchText.getText().trim(), repoListViewer);
}
});
setControl(root);
}