/*******************************************************************************
* Copyright (c) 2009 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is 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
*
* Contributors:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.smooks.configuration.editors.utils;
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.events.SelectionListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.forms.widgets.FormToolkit;
/**
* @author Dart (dpeng@redhat.com)
* <p>
* Apr 8, 2009
*/
public class SearchComposite extends Composite {
protected Text text;
protected Button searchButton;
public SearchComposite(Composite parent, FormToolkit toolkit, String searchName,IFieldDialog dialog, int style) {
super(parent, style);
GridData gd = new GridData(GridData.FILL_HORIZONTAL);
GridLayout gl = new GridLayout();
gl.marginWidth = 0;
gl.numColumns = 2;
gl.makeColumnsEqualWidth = false;
gl.marginHeight = 0;
this.setLayout(gl);
int textStyle = SWT.NONE;
if(SmooksUIUtils.isLinuxOS()){
textStyle = SWT.BORDER;
}
if (toolkit != null) {
text = toolkit.createText(this, "" , textStyle); //$NON-NLS-1$
} else {
text = new Text(this, SWT.BORDER);
}
gd = new GridData(GridData.FILL_HORIZONTAL);
gd.grabExcessHorizontalSpace = true;
text.setLayoutData(gd);
if (toolkit != null) {
searchButton = toolkit.createButton(this, searchName, SWT.NONE);
} else {
searchButton = new Button(this, SWT.BORDER);
searchButton.setText(searchName);
}
final IFieldDialog fieldDialog = dialog;
searchButton.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent e) {
Object value = fieldDialog.open(getShell());
if(value != null){
text.setText(getDialogResultText(value));
}
}
});
gd = new GridData(GridData.END);
searchButton.setLayoutData(gd);
if (toolkit != null) {
toolkit.paintBordersFor(this);
}
}
public String getDialogResultText(Object value){
return value.toString();
}
public void addModifyListener(ModifyListener listener) {
if (text != null) {
text.addModifyListener(listener);
}
}
public void addSelectionListener(SelectionListener listener) {
if (searchButton != null) {
searchButton.addSelectionListener(listener);
}
}
public Text getText() {
return text;
}
public Button getSearchButton() {
return searchButton;
}
}