package org.inbio.m3s.gwt.client.widgets.login.ui;
import org.inbio.m3s.gwt.client.widgets.login.LoginManager;
import org.inbio.m3s.gwt.client.widgets.login.listener.LoginListener;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.DialogBox;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.MouseListener;
import com.google.gwt.user.client.ui.Widget;
/**
* TODO: fix the languages, all the texts must be imported from a
* internationalizarion file
*/
public class LoginBar extends Composite implements MouseListener,
ClickListener, LoginListener {
// the login controller
private LoginManager loginManager;
private DialogBox loginBox;
private HorizontalPanel loginBar;
private Label loginMessage;
private String loginMessageText = "Iniciar Sesion";
private Label username;
private Label closeSession;
private String closeSessionText = "Cerrar Sesion";
public LoginBar(LoginManager login) {
loginManager = login;
loginManager.addLoginListener(this);
loginBar = new HorizontalPanel();
initLoginBar();
initWidget(loginBar);
}
/**
* Creates and loads a Horizontal Panel for the login, and logout.
*/
private void initLoginBar() {
cleanLoginBar();
loginMessage = new Label(loginMessageText);
loginMessage.setStyleName("LoginBar-LinkText");
loginMessage.addMouseListener(this);
loginMessage.addClickListener(this);
loginBar.add(loginMessage);
}
private void cleanLoginBar() {
int totalWidgets = loginBar.getWidgetCount();
for (int i = 0; i < totalWidgets; i++)
loginBar.remove(0);
}
private void UpdateLoginBar(String usrname) {
cleanLoginBar();
username = new Label(usrname);
username.setStyleName("LoginBar-NormalText");
closeSession = new Label(closeSessionText);
closeSession.setStyleName("LoginBar-LinkText");
closeSession.addClickListener(this);
closeSession.addMouseListener(this);
loginBar.add(username);
loginBar.add(closeSession);
}
// mouseListener
public void onMouseEnter(Widget sender) {
sender.addStyleName("LoginBar-LinkText-MouseOver");
}
// mouseListener
public void onMouseLeave(Widget sender) {
sender.removeStyleName("LoginBar-LinkText-MouseOver");
}
// clickListener
public void onClick(Widget sender) {
if (sender == loginMessage) {
loginBox = new LoginBox();
int x = ((Label) sender).getAbsoluteLeft() - 300;
int y = ((Label) sender).getAbsoluteTop() - 100;
loginBox.setPopupPosition(x, y);
loginBox.show();
} else if (sender == closeSession) {
LoginManager.logoutUser();
}
}
// login Listener
public void userLogin(String username) {
UpdateLoginBar(username);
if (loginBox != null) {
loginBox.hide();
loginBox = null;
}
}
// login Listener
public void userLogout() {
initLoginBar();
}
// mouseListener
public void onMouseDown(Widget sender, int x, int y) {
;
}
// mouseListener
public void onMouseMove(Widget sender, int x, int y) {
;
}
// mouseListener
public void onMouseUp(Widget sender, int x, int y) {
;
}
}