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;}}