15,32 → 15,117 |
*/ |
package org.tela_botanica.client; |
|
import com.google.gwt.json.client.JSONArray; |
import com.google.gwt.json.client.JSONBoolean; |
import com.google.gwt.json.client.JSONParser; |
import com.google.gwt.json.client.JSONString; |
import com.google.gwt.json.client.JSONValue; |
import com.google.gwt.user.client.HTTPRequest; |
import com.google.gwt.user.client.ResponseTextHandler; |
import com.google.gwt.user.client.Window; |
import com.google.gwt.user.client.ui.ClickListener; |
import com.google.gwt.user.client.ui.Composite; |
import com.google.gwt.user.client.ui.HTML; |
import com.google.gwt.user.client.ui.HorizontalPanel; |
import com.google.gwt.user.client.ui.VerticalPanel; |
import com.google.gwt.user.client.ui.Label; |
import com.google.gwt.user.client.ui.Widget; |
|
/** |
* Composite permet de wrapper des Widget pour creer un nouveau Widget cf methode initWidget() |
*/ |
|
|
public class TopPanel extends Composite { |
|
|
private Mediator mediator=null; |
|
private String user =null; |
private Label signLabel = new Label() ; |
|
private String serviceBaseUrl = null; |
|
public TopPanel(final Mediator med) { |
|
|
mediator=med; |
|
mediator.registerTopPanel(this); |
|
user=mediator.getUser(); |
|
signLabel.setStyleName("selection_label"); |
|
serviceBaseUrl = mediator.getServiceBaseUrl(); |
|
if (!mediator.getConnected()) { |
signLabel.setText("Connexion"); |
} |
else { |
signLabel.setText(user+ " (deconnexion)"); |
} |
|
HorizontalPanel outer = new HorizontalPanel(); |
HorizontalPanel inner = new HorizontalPanel(); |
|
VerticalPanel outer = new VerticalPanel(); |
|
|
outer.setHorizontalAlignment(HorizontalPanel.ALIGN_RIGHT); |
|
outer.add(new HTML("<b>Carnet en ligne</b>")); |
inner.add(signLabel); |
inner.add(new HTML("<b>Carnet en ligne</b>")); |
|
inner.setSpacing(3); |
outer.add(inner); |
|
signLabel.addClickListener( |
new ClickListener() { |
public void onClick(Widget sender) { |
|
if (!mediator.getConnected()) { |
LoginDialog loginDialog = new LoginDialog(med); |
|
// Position it roughly in the middle of the screen. |
int left = (Window.getClientWidth() - 512) / 2; |
int top = (Window.getClientHeight() - 256) / 2; |
loginDialog.setPopupPosition(left, top); |
loginDialog.show(); |
} |
|
else { |
|
HTTPRequest.asyncGet(serviceBaseUrl + "/User/" + user , |
new ResponseTextHandler() { |
|
public void onCompletion(String str) { |
|
JSONValue jsonValue = JSONParser.parse(str); |
JSONArray jsonArray; |
if ((jsonArray = jsonValue.isArray()) != null) { |
user = ((JSONString) jsonArray.get(0)).stringValue(); |
mediator.setConnected(((JSONBoolean) jsonArray.get(1)).booleanValue()); |
} |
|
if (!mediator.getConnected()) { |
mediator.onLogoff(user); |
} |
} |
}); |
|
|
} |
|
} |
} |
); |
|
initWidget(outer); |
|
} |
|
public Label getSignLabel() { |
return signLabel; |
} |
|
|
|
|
} |