New file |
0,0 → 1,301 |
/* |
* 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 Nom |
|
HTML labelNameAssistant = new HTML("Espèce: "); |
inner.setWidget(0,0,labelNameAssistant); |
inner.setWidget(0,1,nameAssistant); |
|
nameAssistant.setWidth("100%"); |
|
// Saisie lieu |
|
HTML labelLocationAssistant= new HTML("Commune: "); |
inner.setWidget(1,0,labelLocationAssistant); |
inner.setWidget(1,1,locationAssistant); |
|
locationAssistant.setWidth("100%"); |
|
// Saisie Date |
|
choicesPopup.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 lieu |
|
HTML 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 Commentaire |
|
HTML 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); |
} |
|
} |