/*******************************************************************************
* Copyright (c) 2011-2014 Fernando Petrola
*
* This file is part of Dragome SDK.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Public License v3.0
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/gpl.html
******************************************************************************/
package ch.flashcard.gui;
import java.util.List;
import ch.flashcard.persistence.CardDeckEntity;
import ch.flashcard.service.CardDeckService;
import com.dragome.guia.GuiaVisualActivity;
import com.dragome.guia.components.VisualLabelImpl;
import com.dragome.guia.components.VisualPanelImpl;
import com.dragome.guia.components.interfaces.VisualComponent;
import com.dragome.guia.components.interfaces.VisualPanel;
import com.dragome.guia.events.listeners.interfaces.ClickListener;
import com.dragome.render.ItemProcessorImpl;
import com.dragome.templates.TemplateRepeater;
import com.dragome.templates.interfaces.Template;
import com.dragome.web.annotations.PageAlias;
@PageAlias(alias= "deck")
public class CardDeckPage extends GuiaVisualActivity
{
public void build()
{
loadMainTemplate("carddeck");
// templateManager= new HTMLTemplateManager();
// templateManager= ServiceLocator.getTemplateManager();
final Template template= mainTemplate.getChild("panel");
showCards(template);
}
private void showCards(final Template template)
{
CardDeckService cardDeckService= serviceFactory.createSyncService(CardDeckService.class);
List<CardDeckEntity> cardDecks= cardDeckService.getAllCardDecks();
new TemplateRepeater<CardDeckEntity>().repeatItems(cardDecks, new ItemProcessorImpl<CardDeckEntity>(template, "card")
{
public void fillTemplates(final CardDeckEntity cardDeck, List<Template> aRowTemplate)
{
VisualPanel rowPanel= new VisualPanelImpl(aRowTemplate.get(0));
rowPanel.addChild(new VisualLabelImpl<String>("title", cardDeck.getTitle()));
rowPanel.addChild(new VisualLabelImpl<String>("number-of-cards", cardDeck.getCards().size() + " Cards"));
VisualLabelImpl<String> image= new VisualLabelImpl<String>("image", cardDeck.getCoverImage());
image.addClickListener(new ClickListener()
{
public void clickPerformed(VisualComponent aVisualComponent)
{
openActivity(new CardDetailsPage(cardDeck));
}
});
rowPanel.addChild(image);
}
});
}
}