package es.dalocar.facturamas.swt.list;

import org.apache.log4j.Logger;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.layout.FormLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;

import com.cloudgarden.resource.SWTResourceManager;

import es.dalocar.appskeleton.swt.list.BrowseComposite;
import es.dalocar.software.Messages;

/**
 * Composite específico para elegir un Cliente de una lista
 */
public class ClienteListComposite extends org.eclipse.swt.widgets.Composite {

	// $hide>>$
	private static Logger log = Logger.getLogger(ClienteListComposite.class);
	private static boolean DEBUG = log.isDebugEnabled();
	private static boolean INFO = log.isInfoEnabled();
	// $hide<<$

	private Group grpBusqueda;
	private BrowseComposite browseComposite;
	private Button botonBusqueda;
	private Label lblIdentificador;
	private Text txtIdentificador;
	private Label lblCif;
	private Text txtCif;
	private Label lblNombre;
	private Text txtNombre;

	/**
	 * Auto-generated main method to display this
	 * org.eclipse.swt.widgets.Composite inside a new Shell.
	 */
	public static void main(String[] args) {
		showGUI();
	}

	/**
	 * Auto-generated method to display this org.eclipse.swt.widgets.Composite
	 * inside a new Shell.
	 */
	public static void showGUI() {
		Display display = Display.getDefault();
		Shell shell = new Shell(display);
		ClienteListComposite inst = new ClienteListComposite(shell, SWT.NULL);
		Point size = inst.getSize();
		shell.setLayout(new FillLayout());
		shell.setText(Messages.getString("ClienteListComposite.title"));
		shell.layout();
		if (size.x == 0 && size.y == 0) {
			inst.pack();
			shell.pack();
		} else {
			Rectangle shellBounds = shell.computeTrim(0, 0, size.x, size.y);
			shell.setSize(shellBounds.width, shellBounds.height);
		}
		shell.open();
		while (!shell.isDisposed()) {
			if (!display.readAndDispatch())
				display.sleep();
		}
	}

	/**
	 * Constructor que inicializa la GUI
	 * 
	 * @param parent
	 * @param style
	 */
	public ClienteListComposite(org.eclipse.swt.widgets.Composite parent,
			int style) {
		super(parent, style);
		initGUI();
		// TODO: Descomentar las siguiente líneas o cambiar el texto propuesto
		this.getShell().setText("Selección de Cliente");
	}

	/**
	 * Método que crea los componentes de la GUI
	 * 
	 */
	private void initGUI() {

		{
			// Register as a resource user - SWTResourceManager will
			// handle the obtaining and disposing of resources
			SWTResourceManager.registerResourceUser(getShell());
		}

		try {
			FormLayout thisLayout = new FormLayout();
			this.setLayout(thisLayout);
			this.setSize(740, 510);

			{
				grpBusqueda = new Group(this, SWT.NONE);
				FormData grpBusquedaLData = new FormData();
				grpBusquedaLData.width = 714;
				grpBusquedaLData.height = 99;
				grpBusquedaLData.left = new FormAttachment(0, 1000, 10);
				grpBusquedaLData.top = new FormAttachment(0, 1000, 0);
				grpBusquedaLData.right = new FormAttachment(1000, 1000, -10);
				grpBusqueda.setLayoutData(grpBusquedaLData);
				// TODO Cambiar por Mensaje deseado o usar internacionalización
				grpBusqueda.setText("Criterios de Búsqueda");
				grpBusqueda.setLayoutData(grpBusquedaLData);
				{
					botonBusqueda = new Button(grpBusqueda, SWT.PUSH
							| SWT.CENTER);
					botonBusqueda.setImage(SWTResourceManager
							.getImage("es/valencia/expreforma/res/Buscar.ico"));
					botonBusqueda.setBounds(665, 55, 35, 25);
				}

				{
					lblIdentificador = new Label(grpBusqueda, SWT.NONE);
					lblIdentificador.setText("Identificador");
					lblIdentificador.setBounds(10, 21, 120, 21);
				}
				{
					txtIdentificador = new Text(grpBusqueda, SWT.BORDER);
					txtIdentificador.setBounds(145, 21, 329, 21);
					txtIdentificador.setTextLimit(5);
					//SWTUtils.computeWidth(txtIdentificador);
				}
				{
					lblCif = new Label(grpBusqueda, SWT.NONE);
					lblCif.setText("Cif");
					lblCif.setBounds(10, 49, 120, 21);
				}
				{
					txtCif = new Text(grpBusqueda, SWT.BORDER);
					txtCif.setBounds(145, 49, 329, 21);
					txtCif.setTextLimit(13);
				//	SWTUtils.computeWidth(txtCif);
				}
				{
					lblNombre = new Label(grpBusqueda, SWT.NONE);
					lblNombre.setText("Nombre");
					lblNombre.setBounds(10, 77, 120, 21);
				}
				{
					txtNombre = new Text(grpBusqueda, SWT.BORDER);
					txtNombre.setBounds(145, 77, 329, 21);
					txtNombre.setTextLimit(100);
					//SWTUtils.computeWidth(txtNombre);
				}
				{
					grpBusquedaLData.height = 105;
				}
				{
					browseComposite = new BrowseComposite(this, SWT.NONE);
					FormData browseCompositeLData = new FormData();
					browseCompositeLData.width = 712;
					browseCompositeLData.height = 346;
					browseCompositeLData.top = new FormAttachment(0, 1000, 133);
					browseCompositeLData.left = new FormAttachment(0, 1000, 0);
					browseCompositeLData.bottom = new FormAttachment(1000,
							1000, -3);
					browseCompositeLData.right = new FormAttachment(1000, 1000,
							0);
					browseComposite.setLayoutData(browseCompositeLData);
				}

				grpBusqueda.setTabList(new org.eclipse.swt.widgets.Control[] {
						txtIdentificador, txtCif, txtNombre });

			}
			this.layout();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public BrowseComposite getBrowseComposite() {
		return browseComposite;
	}

	/**
	 * Devuelve el botón de búsqueda
	 * 
	 * @return Button boton de búsqueda
	 */
	public Button getBotonBusqueda() {
		return botonBusqueda;
	}

	/**
	 * Establece el botón de búsqueda
	 * 
	 * @param botonBusqueda
	 */
	public void setBotonBusqueda(Button botonBusqueda) {
		this.botonBusqueda = botonBusqueda;
	}

	/**
	 * Devuelve el campo txtIdentificador
	 * 
	 * @return Text txtIdentificador
	 */
	public Text getTxtIdentificador() {
		return txtIdentificador;
	}

	/**
	 * Devuelve el campo txtCif
	 * 
	 * @return Text txtCif
	 */
	public Text getTxtCif() {
		return txtCif;
	}

	/**
	 * Devuelve el campo txtNombre
	 * 
	 * @return Text txtNombre
	 */
	public Text getTxtNombre() {
		return txtNombre;
	}

}
