Rev 12 | Blame | Last modification | View Log | RSS feed
/*
* Copyright 2006 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
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.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();
outer.setHorizontalAlignment(HorizontalPanel.ALIGN_RIGHT);
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;
}
}