package org.erlide.cover.ui.launch;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.dialogs.ElementTreeSelectionDialog;
import org.eclipse.ui.dialogs.SelectionDialog;
/**
* Browser for selecting projects, modules or files.
*
* @author Aleksandra Lipiec <aleksandra.lipiec@erlang.solutions.com>
*
*/
public class ItemBrowser {
private final Text text;
private final Button button;
private final SelectionDialog dialog;
private char type;
public ItemBrowser(final Composite comp, final int style,
final SelectionDialog dial) {
final GridData gd = new GridData(SWT.FILL, SWT.CENTER, false, false);
gd.widthHint = 500;
dialog = dial;
text = new Text(comp, style | SWT.RESIZE);
text.setLayoutData(gd);
text.setEditable(false);
button = new Button(comp, SWT.CENTER | SWT.PUSH);
button.setText("Browse");
button.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(final SelectionEvent e) {
dialog.open();
if (dialog.getReturnCode() == Window.OK && dialog.getResult() != null
&& dialog.getResult().length > 0) {
final Object[] res = dialog.getResult();
String result = res[0].toString();
if (dialog instanceof ElementTreeSelectionDialog) {
type = result.charAt(0);
result = result.substring(2);
}
text.setText(result);
}
}
});
}
public void addModifyListener(final ModifyListener ml) {
text.addModifyListener(ml);
}
public void setFiledLength(final int size) {
((GridData) text.getLayoutData()).widthHint = size;
}
public String getText() {
return text.getText();
}
public void setText(final String info) {
text.setText(info);
}
public GridData getTextGridData() {
return (GridData) text.getLayoutData();
}
public void setEnabled(final boolean enabled) {
text.setEnabled(enabled);
button.setEnabled(enabled);
}
public char getType() {
return type;
}
}