package com.project1.client;
import com.project1.client.ui.BuscarLibros;
import com.project1.client.ui.VenderLibros;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.TabPanel;
import com.google.gwt.user.client.ui.VerticalPanel;
/**
* BENBooks.java
* @author Oscar Casta�eda 11086
* @author Jorge Lainfiesta 11142
* @author Benito Maza 11088
* @author Luis Valdeavellano 11218
* @since 03/08/2012
* @lastModified 03/08/2012
* @version 0.5
* Descripci�n: Clase que act�a como EntryPoint, mostrando la interfaz de usuario y permitiendo interactuar con el servidor.
*/
public class BENBooks implements EntryPoint {
//TODO Crear Timer para actualizar el servicio cada cierto tiempo.
/**
* Mensaje mostrado al usuario cuando no se completa una comunicaci�n exitosa con el servidor.
*/
private static final String SERVER_ERROR = "A ocurrido un error mientras se intentaba comunicar "
+ "con el servidor. Revise su conexi�n a internet e intente de nuevo.";
/**
* Crea un servicio remoto para comunicarse con el Book service del lado del servidor.
*/
// private final BookServiceAsync bookService = GWT
// .create(BookService.class);
private LoginInfo loginInfo = null;
private VerticalPanel loginPanel = new VerticalPanel();
private Label loginLabel = new Label("Por favor inicie sesi�n con su cuenta de Google para poder utilizar la aplicaci�n BENBooks.");
private Anchor signInLink = new Anchor("Iniciar sesi�n");
private Anchor signOutLink = new Anchor("Cerrar sesi�n");
private BuscarLibros buscarLibros = new BuscarLibros();
private VenderLibros venderLibros = new VenderLibros();
/**
* Este es el m�todo de Entry Point.
*/
public void onModuleLoad() {
//Se revisa el estado de inicio de sesi�n.
LoginServiceAsync loginService = GWT.create(LoginService.class);
loginService.login(GWT.getHostPageBaseURL(), new AsyncCallback<LoginInfo>() {
public void onFailure(Throwable error) {
//Indicar que no se ha logrado el inicio de sesi�n.
}
public void onSuccess(LoginInfo result) {
loginInfo = result;
if(loginInfo.isLoggedIn()) {
//A�adiendo elementos al RootPanel
RootPanel rootPanel = RootPanel.get();
TabPanel tabpanel = new TabPanel();
signOutLink.setHref(loginInfo.getLogoutUrl());
buscarLibros = new BuscarLibros();
tabpanel.add(buscarLibros, "Buscar Libros");
tabpanel.add(venderLibros, "Vender Libros");
tabpanel.selectTab(0);
rootPanel.add(new HTML(loginInfo.getNickname()));
rootPanel.add(signOutLink);
rootPanel.add(tabpanel);
} else {
//A�adiendo elementos al RootPanel
RootPanel rootPanel = RootPanel.get();
TabPanel tabpanel = new TabPanel();
buscarLibros = new BuscarLibros();
loadLogin();
tabpanel.add(buscarLibros, "Buscar Libros");
tabpanel.add(loginPanel, "Inicia Sesion");
tabpanel.selectTab(0);
rootPanel.add(tabpanel);
}
}
});
//test
// Libro libro1 = new Libro("Titulo", "Autor", "Edici�n", "2010", "Nuevo", "310", "Curso", "Profesor");
// Vendedor vendedor1 = new Vendedor("Due�o", "mail@gmail.com");
// libro1.setVendedor(vendedor1);
// ArrayList<Libro> librolist = new ArrayList<Libro>();
// librolist.add(libro1);
// Libro libro2 = new Libro("Titulo 2", "Autor", "Ed 2", "2010", "Nuevo", "310", "Curso", "Profesor");
// libro1.setTitulo("LOLOL TITULO");
// libro2.setVendedor(vendedor1);
// librolist.add(libro2);
// buscarLibros.mostrarLibros(librolist);
/**
* A partir de ahora, lo dem�s es c�digo del ejemplo. Puede servir de referencia.
final Button sendButton = new Button("Send");
final TextBox nameField = new TextBox();
nameField.setText("GWT User");
final Label errorLabel = new Label();
// We can add style names to widgets
sendButton.addStyleName("sendButton");
// Add the nameField and sendButton to the RootPanel
// Use RootPanel.get() to get the entire body element
RootPanel.get("nameFieldContainer").add(nameField);
RootPanel.get("sendButtonContainer").add(sendButton);
RootPanel.get("errorLabelContainer").add(errorLabel);
// Focus the cursor on the name field when the app loads
nameField.setFocus(true);
nameField.selectAll();
// Create the popup dialog box
final DialogBox dialogBox = new DialogBox();
dialogBox.setText("Remote Procedure Call");
dialogBox.setAnimationEnabled(true);
final Button closeButton = new Button("Close");
// We can set the id of a widget by accessing its Element
closeButton.getElement().setId("closeButton");
final Label textToServerLabel = new Label();
final HTML serverResponseLabel = new HTML();
VerticalPanel dialogVPanel = new VerticalPanel();
dialogVPanel.addStyleName("dialogVPanel");
dialogVPanel.add(new HTML("<b>Sending name to the server:</b>"));
dialogVPanel.add(textToServerLabel);
dialogVPanel.add(new HTML("<br><b>Server replies:</b>"));
dialogVPanel.add(serverResponseLabel);
dialogVPanel.setHorizontalAlignment(VerticalPanel.ALIGN_RIGHT);
dialogVPanel.add(closeButton);
dialogBox.setWidget(dialogVPanel);
// Add a handler to close the DialogBox
closeButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
dialogBox.hide();
sendButton.setEnabled(true);
sendButton.setFocus(true);
}
});
*/
/**
// Create a handler for the sendButton and nameField
class MyHandler implements ClickHandler, KeyUpHandler {
*/
/**
* Fired when the user clicks on the sendButton.
*/
/**
public void onClick(ClickEvent event) {
sendNameToServer();
}
*/
/**
* Fired when the user types in the nameField.
*/
/**
public void onKeyUp(KeyUpEvent event) {
if (event.getNativeKeyCode() == KeyCodes.KEY_ENTER) {
sendNameToServer();
}
}
*/
/**
* Send the name from the nameField to the server and wait for a response.
*/
/**
private void sendNameToServer() {
// First, we validate the input.
errorLabel.setText("");
String textToServer = nameField.getText();
if (!FieldVerifier.isValidName(textToServer)) {
errorLabel.setText("Please enter at least four characters");
return;
}
// Then, we send the input to the server.
sendButton.setEnabled(false);
textToServerLabel.setText(textToServer);
serverResponseLabel.setText("");
greetingService.greetServer(textToServer,
new AsyncCallback<String>() {
public void onFailure(Throwable caught) {
// Show the RPC error message to the user
dialogBox
.setText("Remote Procedure Call - Failure");
serverResponseLabel
.addStyleName("serverResponseLabelError");
serverResponseLabel.setHTML(SERVER_ERROR);
dialogBox.center();
closeButton.setFocus(true);
}
public void onSuccess(String result) {
dialogBox.setText("Remote Procedure Call");
serverResponseLabel
.removeStyleName("serverResponseLabelError");
serverResponseLabel.setHTML(result);
dialogBox.center();
closeButton.setFocus(true);
}
});
}
}
// Add a handler to send the name to the server
MyHandler handler = new MyHandler();
sendButton.addClickHandler(handler);
nameField.addKeyUpHandler(handler);
*/
}
private void loadLogin() {
//Se arma el loginPanel.
signInLink.setHref(loginInfo.getLoginUrl());
loginPanel.add(loginLabel);
loginPanel.add(signInLink);
//TODO Colocarlo en el contenedor.
}
}