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 java.util.Date;import com.google.gwt.user.client.DOM;import com.google.gwt.user.client.Element;import com.google.gwt.user.client.ui.Button;import com.google.gwt.user.client.ui.ChangeListener;import com.google.gwt.user.client.ui.ClickListener;import com.google.gwt.user.client.ui.Composite;import com.google.gwt.user.client.ui.Grid;import com.google.gwt.user.client.ui.HTML;import com.google.gwt.user.client.ui.HorizontalPanel;import com.google.gwt.user.client.ui.KeyboardListener;import com.google.gwt.user.client.ui.PopupPanel;import com.google.gwt.user.client.ui.RootPanel;import com.google.gwt.user.client.ui.TextBox;import com.google.gwt.user.client.ui.UIObject;import com.google.gwt.user.client.ui.VerticalPanel;import com.google.gwt.user.client.ui.Widget;/*** Composite permet de wrapper des Widget pour creer un nouveau Widget cf methode initWidget()*/public class EntryPanel extends Composite implements ClickListener {private NameAssistant nameAssistant = null;private LocationAssistant locationAssistant = null;TextBox date = new TextBox();TextBox complementLocation = new TextBox();TextBox comment = new TextBox();Button dateSelector = new Button("...");boolean visible=false;Mediator mediator=null;final CalendarWidget calendar = new CalendarWidget();private PopupPanel choicesPopup = new PopupPanel(true);public EntryPanel(final Mediator med) {mediator=med;mediator.registerEntryPanel(this);mediator.registerDate(date);mediator.registerComment(comment);mediator.registerComplementLocation(complementLocation);VerticalPanel outer = new VerticalPanel();outer.add(new HTML("<b>Nouvelle observation:</b>"));Grid inner = new Grid(3,4);for (int i=0; i<3;i++) {inner.getCellFormatter().setWidth(i, 0, "3%");inner.getCellFormatter().setWidth(i, 1, "47%");inner.getCellFormatter().setWidth(i, 2, "3%");inner.getCellFormatter().setWidth(i, 3, "47%");}nameAssistant = new NameAssistant(mediator);locationAssistant = new LocationAssistant(mediator);// Saisie NomHTML labelNameAssistant = new HTML("Espèce: ");inner.setWidget(0,0,labelNameAssistant);inner.setWidget(0,1,nameAssistant);nameAssistant.setWidth("100%");// Saisie lieuHTML labelLocationAssistant= new HTML("Commune: ");inner.setWidget(1,0,labelLocationAssistant);inner.setWidget(1,1,locationAssistant);locationAssistant.setWidth("100%");// Saisie DatechoicesPopup.add(calendar);dateSelector.addClickListener(new ClickListener () {public void onClick(Widget w) {if (visible) {visible=false;choicesPopup.hide();}else {visible=true;choicesPopup.show();choicesPopup.setPopupPosition(dateSelector.getAbsoluteLeft(),dateSelector.getAbsoluteTop() + dateSelector.getOffsetHeight());choicesPopup.setWidth(dateSelector.getOffsetWidth() + "px");}}});calendar.addChangeListener(new ChangeListener() {public void onChange(Widget sender) {Date dateSelected=calendar.getDate();date.setText(dateSelected.getDate()+"/"+(dateSelected.getMonth()+1)+"/"+(dateSelected.getYear()+1900));visible=false;choicesPopup.hide();}});HTML labelDate= new HTML("Date: ");inner.setWidget(2,0,labelDate);HorizontalPanel datePanel = new HorizontalPanel();datePanel.add(date);datePanel.add(dateSelector);inner.setWidget(2,1,datePanel);date.addKeyboardListener( new KeyboardListener() {public void onKeyDown(Widget arg0, char arg1, int arg2) {if(arg1 == KEY_ENTER){mediator.onAddInventoryItem();date.setText("");}}public void onKeyUp(Widget arg0, char arg1, int arg2) {}public void onKeyPress(Widget arg0, char arg1, int arg2) {}});// Saisie Complement lieuHTML labelComplementLocation= new HTML("Station: ");inner.setWidget(1,2,labelComplementLocation);inner.setWidget(1,3,complementLocation);complementLocation.setWidth("100%");complementLocation.addKeyboardListener( new KeyboardListener() {public void onKeyDown(Widget arg0, char arg1, int arg2) {if(arg1 == KEY_ENTER){mediator.onAddInventoryItem();complementLocation.setText("");}}public void onKeyUp(Widget arg0, char arg1, int arg2) {}public void onKeyPress(Widget arg0, char arg1, int arg2) {}});// Saisie CommentaireHTML labelComment= new HTML("Notes: ");inner.setWidget(2,2,labelComment);inner.setWidget(2,3,comment);comment.setWidth("100%");comment.addKeyboardListener( new KeyboardListener() {public void onKeyDown(Widget arg0, char arg1, int arg2) {if(arg1 == KEY_ENTER){mediator.onAddInventoryItem();comment.setText("");}}public void onKeyUp(Widget arg0, char arg1, int arg2) {}public void onKeyPress(Widget arg0, char arg1, int arg2) {}});inner.setWidth("100%");outer.add(inner);outer.setCellWidth(inner, "100%");Button close = new Button("Cacher");close.addClickListener(this);outer.setHorizontalAlignment(HorizontalPanel.ALIGN_CENTER);outer.add(close);initWidget(outer);setPixelSize(1000,200);}public void onClick(Widget sender) {hide();}public void show() {DOM.setStyleAttribute(getElement(), "backgroundColor", "white");this.setOpacity(this,85);RootPanel.get().remove(this);RootPanel.get().add(this,200,200);}public void hide() {this.setOpacity(RootPanel.get(),100);RootPanel.get().remove(this);}private void setOpacity(UIObject e, int percentage) {if ( percentage > 100 ) percentage = 100;if ( percentage < 0 ) percentage = 0;String opac;if ( percentage == 100 ) opac = "1";else if ( percentage == 0 ) opac = "0";else if ( percentage < 10 ) opac = ".0" + percentage;else opac = "." + percentage;Element h = e.getElement();DOM.setStyleAttribute(h, "filter", "alpha(opacity=" + percentage + ")");DOM.setStyleAttribute(h, "opacity", opac);}}