001 public Node createPod(Document document, Map<String,Object> contexts) { 002 try{ 003 PodBuilder moviesPod = 004 PodBuilder.newPod(document, PODTYPE.MYFAVMOVIES); 005 moviesPod.setTextResource("sample.i18n.MyFavouriteMovies"); 006 moviesPod.setTitle("pod.title"); 007 008 MoviesDB moviesDB = new MoviesDB(); 009 010 // Create the configuration for the filter renderer. 011 RendererConfig titleFilterRenderer = 012 new RendererConfig(RendererConfigType.STYLE, "pod-text-filter"); 013 014 // Create the filter. 015 PodFilter titleFilter = 016 new PodFilter("title", document, titleFilterRenderer); 017 titleFilter.addFilterLabel("pod.filter.title.label"); 018 019 // Retrieve the saved filter value and extract to an array 020 Node titleTextNode = 021 getPodFilterById(PODTYPE.MYFAVMOVIES, "title", document); 022 ArrayList<String> titleTextArray = 023 PodFilter.convertSelectionsNodeToArrayList(titleTextNode); 024 025 // Create the Node that the filter Renderer expects and add the 026 // saved filter text to it. 027 String titleFilterText = ""; 028 if (!titleTextArray.isEmpty()) { 029 titleFilterText = titleTextArray.get(0); 030 } 031 Element titleFilterNode = document.createElement("text-filter"); 032 titleTextNode = document.createTextNode(titleFilterText); 033 titleFilterNode.appendChild(titleTextNode); 034 titleFilter.addFilter(titleFilterNode); 035 036 // Add the title filter to the Pod 037 moviesPod.addFilter(titleFilter); 038 039 // Create the configuration for the drop down filter. 040 RendererConfig filterRenderer = 041 new RendererConfig(RendererConfigType.DOMAIN, "CT_CHOICE"); 042 043 // Create the PodFitler 044 PodFilter genreFilter = 045 new PodFilter("genre", document, filterRenderer); 046 047 // Create genre list 048 HashMap<String, String> genres = new HashMap<String, String>(); 049 genres.put("all", "- All -"); 050 genres.put("horror", "Horror"); 051 genres.put("drama", "Drama"); 052 genres.put("romance", "Romance"); 053 genres.put("comedy", "Comedy"); 054 genres.put("action", "Action"); 055 056 // Create the options and selections using the ChoiceBuilder. 057 ChoiceBuilder choices = 058 ChoiceBuilder.newInstance(genres, document); 059 060 // Return the last saved selection for the filter with id "genre". 061 Node genreSelectionNode = 062 getPodFilterById(PODTYPE.MYFAVMOVIES, "genre", document); 063 064 // Convert the Node to an ArrayList. 065 ArrayList<String> selectedGenres = 066 PodFilter.convertSelectionsNodeToArrayList(genreSelectionNode); 067 068 // Create a default genre selection. 069 if (selectedGenres.isEmpty()){ 070 selectedGenres.add("all"); 071 } 072 choices.addSelection(selectedGenres.get(0)); 073 choices.setTypeOfDisplay("listdropdown"); 074 075 genreFilter.addFilter(choices.getWidgetRootNode()); 076 077 // Add a filter label 078 genreFilter.addFilterLabel("pod.filter.genre.label"); 079 genreFilter.addCSSClasses("genre-filter"); 080 moviesPod.addFilter(genreFilter); 081 082 083 Collection<MoviesDB.Movie> favMovieCollection = 084 moviesDB.getAllMovies(); 085 Iterator<MoviesDB.Movie> movieList = 086 favMovieCollection.iterator(); 087 088 // Create the list 089 ListBuilder myFavouriteMovies = 090 ListBuilder.createList(1, document); 091 myFavouriteMovies.setTextResource("sample.i18n.MoviesList"); 092 myFavouriteMovies.addColumnTitle(1, "list.col1.title"); 093 094 int row = 1; 095 while(movieList.hasNext()) { 096 Movie movie = movieList.next(); 097 String movieName = movie.title; 098 String selectedGenre = selectedGenres.get(0); 099 if (selectedGenre.equals(movie.genre) 100 || selectedGenre.equals("all")){ 101 102 if (movieName.toUpperCase().indexOf( 103 titleFilterText.toUpperCase()) != -1) { 104 myFavouriteMovies.addRow(); 105 myFavouriteMovies.addEntry(1, row++, movieName); 106 } 107 } 108 } 109 110 RendererConfig contentRenderer = new RendererConfig( 111 RendererConfigType.STYLE, "single-list"); 112 moviesPod.addContent(myFavouriteMovies, contentRenderer); 113 114 return moviesPod.getWidgetRootNode(); 115 116 }catch(Exception e){ 117 throw new RuntimeException(e); 118 } 119 }