diff --git a/zxing.appspot.com/build.xml b/zxing.appspot.com/build.xml index 9d3765381..6d17750cf 100644 --- a/zxing.appspot.com/build.xml +++ b/zxing.appspot.com/build.xml @@ -60,7 +60,7 @@ limitations under the License. - + @@ -79,7 +79,7 @@ limitations under the License. - + @@ -89,7 +89,7 @@ limitations under the License. - + diff --git a/zxing.appspot.com/pom.xml b/zxing.appspot.com/pom.xml index aa443716b..d5ca4322f 100644 --- a/zxing.appspot.com/pom.xml +++ b/zxing.appspot.com/pom.xml @@ -26,11 +26,7 @@ com.google.gwt gwt-user 2.5.1 - - - com.google.gwt - gwt-incubator - 2.0.1 + provided @@ -42,6 +38,29 @@ + + + + org.apache.maven.plugins + maven-antrun-plugin + + + compile + + + + + + + + run + + + + + + + ZXing Appspot-based encoder GWT-based encoder app hosted at zxing.appspot.com diff --git a/zxing.appspot.com/src/main/java/com/google/zxing/web/generator/Generator.gwt.xml b/zxing.appspot.com/src/main/java/com/google/zxing/web/generator/Generator.gwt.xml index 1f4f19df7..e8d55717d 100644 --- a/zxing.appspot.com/src/main/java/com/google/zxing/web/generator/Generator.gwt.xml +++ b/zxing.appspot.com/src/main/java/com/google/zxing/web/generator/Generator.gwt.xml @@ -12,7 +12,6 @@ - diff --git a/zxing.appspot.com/src/main/java/com/google/zxing/web/generator/client/CalendarEventGenerator.java b/zxing.appspot.com/src/main/java/com/google/zxing/web/generator/client/CalendarEventGenerator.java index 1ea5253ff..3d6be41a4 100644 --- a/zxing.appspot.com/src/main/java/com/google/zxing/web/generator/client/CalendarEventGenerator.java +++ b/zxing.appspot.com/src/main/java/com/google/zxing/web/generator/client/CalendarEventGenerator.java @@ -23,12 +23,12 @@ import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.dom.client.KeyPressHandler; import com.google.gwt.event.logical.shared.ValueChangeEvent; import com.google.gwt.event.logical.shared.ValueChangeHandler; -import com.google.gwt.gen2.picker.client.TimePicker; import com.google.gwt.i18n.client.DateTimeFormat; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.Element; import com.google.gwt.user.client.ui.CheckBox; import com.google.gwt.user.client.ui.Grid; +import com.google.gwt.user.client.ui.HasText; import com.google.gwt.user.client.ui.ListBox; import com.google.gwt.user.client.ui.TextBox; import com.google.gwt.user.client.ui.Widget; @@ -52,12 +52,8 @@ public final class CalendarEventGenerator implements GeneratorSource { private final CheckBox fullDay = new CheckBox(); private final DatePicker datePicker1 = new DatePicker(); private final DatePicker datePicker2 = new DatePicker(); - private final TimePicker timePicker1 = new TimePicker(new Date(), DateTimeFormat - .getFormat("a"), DateTimeFormat.getFormat("hh"), DateTimeFormat - .getFormat("mm"), null); - private final TimePicker timePicker2 = new TimePicker(new Date(), DateTimeFormat - .getFormat("a"), DateTimeFormat.getFormat("hh"), DateTimeFormat - .getFormat("mm"), null); + private final TextBox timePicker1 = new TextBox(); + private final TextBox timePicker2 = new TextBox(); private final CheckBox summerTime = new CheckBox(); private final ListBox timeZones = new ListBox(); private Date timePicker1PreviousDate = null; @@ -68,25 +64,36 @@ public final class CalendarEventGenerator implements GeneratorSource { eventName.addStyleName(StylesDefs.INPUT_FIELD_REQUIRED); eventName.addChangeHandler(handler); eventName.addKeyPressHandler(keyListener); - timePicker2.setDateTime(addMilliseconds(timePicker1.getDateTime(), ONE_HOUR)); - timePicker1PreviousDate = timePicker1.getDateTime(); + setDateToTextBox(timePicker1, new Date()); + try { + setDateToTextBox(timePicker2, addMilliseconds(getDateFromTextBox(timePicker1), ONE_HOUR)); + timePicker1PreviousDate = getDateFromTextBox(timePicker1); + } catch (GeneratorException ge) { + throw new IllegalStateException(ge); + } buildTimeZoneList(); timeZones.setSelectedIndex(25); timeZones.addKeyPressHandler(keyListener); - timePicker1.addValueChangeHandler(new ValueChangeHandler() { + timePicker1.addValueChangeHandler(new ValueChangeHandler() { @Override - public void onValueChange(ValueChangeEvent dateValueChangeEvent) { + public void onValueChange(ValueChangeEvent valueChangeEvent) { Date time = timePicker1PreviousDate; - Date time1 = timePicker1.getDateTime(); - Date time2 = timePicker2.getDateTime(); + Date time1; + Date time2; + try { + time1 = getDateFromTextBox(timePicker1); + time2 = getDateFromTextBox(timePicker2); + } catch (GeneratorException e) { + return; + } if (time2.after(time)) { // keep the same time difference if the interval is valid. long diff = time2.getTime() - time.getTime(); - timePicker2.setDateTime(addMilliseconds(time1, diff)); + setDateToTextBox(timePicker2, addMilliseconds(time1, diff)); } else { // otherwise erase the end date and set it to startdate + one hour. - timePicker2.setDateTime(addMilliseconds(time, ONE_HOUR)); + setDateToTextBox(timePicker2, addMilliseconds(time1, ONE_HOUR)); } // no need to call onChange for timePicker1, since it will be called // for timePicker2 when changes are made. @@ -94,9 +101,9 @@ public final class CalendarEventGenerator implements GeneratorSource { timePicker1PreviousDate = time1; } }); - timePicker2.addValueChangeHandler(new ValueChangeHandler() { + timePicker2.addValueChangeHandler(new ValueChangeHandler() { @Override - public void onValueChange(ValueChangeEvent dateValueChangeEvent) { + public void onValueChange(ValueChangeEvent valueChangeEvent) { // Hack to stitch together these old and new APIs ChangeEvent event = new ChangeEvent() { @Override @@ -263,8 +270,8 @@ public final class CalendarEventGenerator implements GeneratorSource { private String getDateTimeValues() throws GeneratorException { Date date1 = datePicker1.getValue(); Date date2 = datePicker2.getValue(); - Date time1 = timePicker1.getDateTime(); - Date time2 = timePicker2.getDateTime(); + Date time1 = getDateFromTextBox(timePicker1); + Date time2 = getDateFromTextBox(timePicker2); if (date1 == null || date2 == null || time1 == null || time2 == null) { throw new GeneratorException("Start and end dates/times must be set."); } @@ -313,6 +320,20 @@ public final class CalendarEventGenerator implements GeneratorSource { return new Date(time1.getTime() + milliseconds); } + private static Date getDateFromTextBox(HasText textBox) throws GeneratorException { + DateTimeFormat extractTime = DateTimeFormat.getFormat("HHmm"); + try { + return extractTime.parseStrict(textBox.getText()); + } catch (IllegalArgumentException iae) { + throw new GeneratorException("Invalid time"); + } + } + + private static void setDateToTextBox(HasText textBox, Date date) { + DateTimeFormat extractTime = DateTimeFormat.getFormat("HHmm"); + textBox.setText(extractTime.format(date)); + } + @Override public void setFocus() { eventName.setFocus(true); diff --git a/zxing.appspot.com/src/war/WEB-INF/appengine-web.xml b/zxing.appspot.com/src/war/WEB-INF/appengine-web.xml index 9603e96b9..96c7b548f 100644 --- a/zxing.appspot.com/src/war/WEB-INF/appengine-web.xml +++ b/zxing.appspot.com/src/war/WEB-INF/appengine-web.xml @@ -1,5 +1,5 @@ zxing - 7 + 8 \ No newline at end of file diff --git a/zxing.appspot.com/src/war/WEB-INF/lib/gwt-incubator.jar b/zxing.appspot.com/src/war/WEB-INF/lib/gwt-incubator.jar deleted file mode 100644 index 414cd905b..000000000 Binary files a/zxing.appspot.com/src/war/WEB-INF/lib/gwt-incubator.jar and /dev/null differ diff --git a/zxing.appspot.com/src/war/app.yaml b/zxing.appspot.com/src/war/app.yaml index db2a4d93c..743c3b731 100644 --- a/zxing.appspot.com/src/war/app.yaml +++ b/zxing.appspot.com/src/war/app.yaml @@ -1,7 +1,8 @@ -application: zxing +application: zxing-hrd version: 8 -runtime: python +runtime: python27 api_version: 1 +threadsafe: true handlers: - url: /generator