Package fr.openwide.maven.artifact.notifier.web.application.navigation.component

Source Code of fr.openwide.maven.artifact.notifier.web.application.navigation.component.DashboardNotificationListViewPanel

package fr.openwide.maven.artifact.notifier.web.application.navigation.component;

import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.spring.injection.annot.SpringBean;

import com.google.inject.internal.Sets;

import fr.openwide.core.wicket.markup.html.panel.GenericPanel;
import fr.openwide.core.wicket.more.markup.html.basic.DateLabel;
import fr.openwide.core.wicket.more.model.BindingModel;
import fr.openwide.core.wicket.more.model.CollectionToListWrapperModel;
import fr.openwide.core.wicket.more.util.DatePattern;
import fr.openwide.maven.artifact.notifier.core.business.artifact.model.Artifact;
import fr.openwide.maven.artifact.notifier.core.business.artifact.model.ArtifactVersionNotification;
import fr.openwide.maven.artifact.notifier.core.business.search.service.IMavenCentralSearchUrlService;
import fr.openwide.maven.artifact.notifier.core.util.binding.Binding;
import fr.openwide.maven.artifact.notifier.web.application.artifact.component.ArtifactVersionLinksPanel;
import fr.openwide.maven.artifact.notifier.web.application.artifact.component.ArtifactVersionTagPanel;
import fr.openwide.maven.artifact.notifier.web.application.artifact.page.ArtifactDescriptionPage;

public class DashboardNotificationListViewPanel extends GenericPanel<Map<Date, Set<ArtifactVersionNotification>>>{

  private static final long serialVersionUID = 5554256047779428515L;
 
  @SpringBean
  private IMavenCentralSearchUrlService mavenCentralSearchUrlService;
 
  public DashboardNotificationListViewPanel(String id, IModel<? extends Map<Date, Set<ArtifactVersionNotification>>> mapModel) {
    super(id, mapModel);
    setOutputMarkupId(true);
   
    IModel<List<Date>> wrapperModel = CollectionToListWrapperModel.of(getModelObject().keySet());
    add(new ListView<Date>("dayList", wrapperModel) {
      private static final long serialVersionUID = 1L;

      @Override
      protected void populateItem(ListItem<Date> item) {
        Date day = item.getModelObject();
        Set<ArtifactVersionNotification> notifSet = DashboardNotificationListViewPanel.this.getModelObject().get(day);
       
        Label dayLabel = new DateLabel("day", Model.of(day), DatePattern.SHORT_DATE);
        if (notifSet == null) {
          dayLabel = new Label("day");
          notifSet = Sets.newHashSet();
        }
       
        // Day label
        item.add(dayLabel);
        item.add(new ListView<ArtifactVersionNotification>("notificationList", CollectionToListWrapperModel.of(notifSet)) {
          private static final long serialVersionUID = 1L;
         
          @Override
          protected void populateItem(ListItem<ArtifactVersionNotification> item) {
            final IModel<ArtifactVersionNotification> notificationModel = item.getModel();
            final IModel<Artifact> artifactModel = BindingModel.of(notificationModel,
                Binding.artifactVersionNotification().artifactVersion().artifact());
           
            // Artifact link
            Link<Void> artifactLink = ArtifactDescriptionPage
                .linkDescriptor(artifactModel)
                .link("artifactLink");
            artifactLink.add(new Label("id", BindingModel.of(artifactModel, Binding.artifact().artifactKey().key())));
            item.add(artifactLink);
           
            // Version tag
            item.add(new ArtifactVersionTagPanel("version", BindingModel.of(notificationModel,  Binding.artifactVersionNotification().artifactVersion().version())));
           
            // Version links
            item.add(new ArtifactVersionLinksPanel("links", BindingModel.of(notificationModel,
                Binding.artifactVersionNotification().artifactVersion())));
          }
        });
      }
    });
   
    add(new WebMarkupContainer("emptyList") {
      private static final long serialVersionUID = 6700720373087584498L;
     
      @Override
      public void onConfigure() {
        super.onConfigure();
        setVisible(getModelObject().size() == 0);
      }
    });
  }
}
TOP

Related Classes of fr.openwide.maven.artifact.notifier.web.application.navigation.component.DashboardNotificationListViewPanel

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.