/** * Copyright (c) 2009-2014 Câmara dos Deputados. Todos os direitos reservados. * * e-Democracia é um software livre; você pode redistribuí-lo e/ou modificá-lo dentro * dos termos da Licença Pública Geral Menor GNU como publicada pela Fundação do * Software Livre (FSF); na versão 2.1 da Licença, ou (na sua opinião) qualquer versão. * * Este programa é distribuído na esperança de que possa ser útil, mas SEM NENHUMA GARANTIA; * sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou APLICAÇÃO EM PARTICULAR. * Veja a Licença Pública Geral Menor GNU para maiores detalhes. */ package br.gov.camara.edemocracia.portlets.priorizacao.ui.components; import java.util.Collections; import java.util.List; import org.apache.wicket.markup.html.form.DropDownChoice; import org.apache.wicket.markup.html.form.IChoiceRenderer; import org.apache.wicket.model.LoadableDetachableModel; import org.apache.wicket.model.Model; import br.gov.camara.edemocracia.portlets.priorizacao.service.PriorizacaoServiceUtil; import br.gov.camara.edemocracia.portlets.priorizacao.ui.util.UIUtils; import com.liferay.portal.kernel.log.Log; import com.liferay.portal.kernel.log.LogFactoryUtil; import com.liferay.portlet.messageboards.model.MBThread; public class TopicosDropDown extends DropDownChoice<MBThread> { private static final long serialVersionUID = 1L; private static final Log LOG = LogFactoryUtil.getLog(TopicosDropDown.class); public TopicosDropDown(String id,long groupId, long categoryId) { super(id, new Model<MBThread>(), new MBThreadListModel(groupId,categoryId)); } @Override protected void onInitialize() { super.onInitialize(); init(); } private void init(){ this.setOutputMarkupId(true); this.setChoiceRenderer(new IChoiceRenderer<MBThread>() { private static final long serialVersionUID = 1L; @Override public Object getDisplayValue(MBThread object) { return UIUtils.getTituloMBThread(object); } @Override public String getIdValue(MBThread object, int index) { return Long.toString(object.getThreadId()); } }); } public void recarregar(long groupId,long categoryId){ List<MBThread> threads; try { threads = PriorizacaoServiceUtil.listarTopicosPorCategoryId(groupId, categoryId); } catch (Exception e) { LOG.error("Erro ao obter lista de topicos.Param groupId=\""+groupId+"\"",e); threads = Collections.emptyList(); } this.setChoices(threads); } private static class MBThreadListModel extends LoadableDetachableModel<List<MBThread>> { private static final long serialVersionUID = 1L; private final long groupId; private final long categoryId; private MBThreadListModel(long groupId,long categoryId) { this.groupId = groupId; this.categoryId = categoryId; } @Override protected List<MBThread> load() { if(categoryId == 0l) return Collections.emptyList(); try { return PriorizacaoServiceUtil.listarTopicosPorCategoryId(groupId, categoryId); } catch (Exception e) { LOG.error("Erro ao obter lista de topicos.Param groupId=\""+groupId+"\"",e); return Collections.emptyList(); } } } }