/*
* Copyright 2011, The gwtquery team.
*
* 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 gwtquery.samples.client;
import static com.google.gwt.query.client.GQuery.$;
import static com.google.gwt.query.client.plugins.Effects.Effects;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.Node;
import com.google.gwt.dom.client.NodeList;
import com.google.gwt.query.client.Function;
import com.google.gwt.query.client.GQuery;
import com.google.gwt.query.client.Selector;
import com.google.gwt.query.client.Selectors;
import com.google.gwt.query.client.plugins.Effects.Speed;
import com.google.gwt.user.client.Event;
/**
*
*/
public class GwtQueryDemoModule implements EntryPoint {
// Compile-time Selectors!
public interface Slide extends Selectors {
// find all LI elements in DIV.slide elements
@Selector("div.slide li")
NodeList<Element> allSlideBullets();
// Find all DIV elements with class 'slide'
@Selector("div.slide")
NodeList<Element> allSlides();
// find all LI elements rooted at ctx
@Selector("li")
NodeList<Element> slideBulletsCtx(Node ctx);
}
public void onModuleLoad() {
// Ask GWT compiler to generate our interface
final Slide s = GWT.create(Slide.class);
final GQuery slides = $(s.allSlides());
// we initially hide all slides and bullets
slides.hide().eq(0).as(Effects).clipAppear();
$(s.allSlideBullets()).hide();
// add onclick handler to body element
$(slides).click(new Function() {
// two state variables to note current slide being shown
// and current bullet
int curSlide = 0;
int curBullets = 0;
// query and store all bullets of current slide
GQuery bullets = $(s.slideBulletsCtx(slides.get(curSlide)));
public boolean f(Event e) {
// onclick, if not all bullets shown, show a bullet and increment
if (curBullets < bullets.size()) {
bullets.eq(curBullets++).as(Effects).fadeIn(Speed.SLOW);
} else {
// all bullets shown, hide them and current slide
bullets.hide();
// move to next slide, checking for wrap around
int lastSlide = curSlide++;
if (curSlide == slides.size()) {
curSlide = 0;
}
// query for new set of bullets, and show next slide
curBullets = 0;
bullets = $(s.slideBulletsCtx(slides.get(curSlide)));
// Hide the last slide and show the next when the effects finishes
slides.eq(lastSlide).as(Effects).fadeOut(new Function() {
public void f(Element e) {
slides.eq(curSlide).as(Effects).clipAppear();
}
});
}
return true;
}
});
}
}