diff --git a/src/main/java/at/windesign/application/movie/movieListSelectorComposer.java b/src/main/java/at/windesign/application/movie/movieListSelectorComposer.java index d52c3b9..b6e4608 100644 --- a/src/main/java/at/windesign/application/movie/movieListSelectorComposer.java +++ b/src/main/java/at/windesign/application/movie/movieListSelectorComposer.java @@ -50,4 +50,17 @@ public class movieListSelectorComposer extends SelectorComposer window.doModal(); } + + @Listen("onClick = #searchMovie") + public void onSearchMovie() + { + Map arguments = new HashMap(); + + arguments.put("movieList", movieList); + + String template = "/movie/searchMovie.zul"; + Window window = (Window) Executions.createComponents(template, null, arguments); + + window.doModal(); + } } diff --git a/src/main/java/at/windesign/application/movie/movieSearchForwardComposer.java b/src/main/java/at/windesign/application/movie/movieSearchForwardComposer.java new file mode 100644 index 0000000..196c758 --- /dev/null +++ b/src/main/java/at/windesign/application/movie/movieSearchForwardComposer.java @@ -0,0 +1,78 @@ +package at.windesign.application.movie; + +import org.zkoss.image.AImage; +import org.zkoss.zk.ui.Component; +import org.zkoss.zk.ui.select.annotation.Wire; +import org.zkoss.zk.ui.util.GenericForwardComposer; +import org.zkoss.zul.*; + +import java.net.URL; +import java.sql.ResultSet; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.List; +import java.util.SortedMap; +import java.util.TreeMap; + +public class movieSearchForwardComposer extends GenericForwardComposer +{ + private static final long serialVersionUID = 1L; + private final movieDataSource ds = movieDataSource.INSTANCE; + private int opacity = 80; + + @Wire + private Window searchMovie; + + @Wire + protected Textbox searchText; + + @Wire + protected Textbox searchYear; + + @Wire + protected Listbox resultList; + + @Wire + protected Button searchButton; + + @Wire + protected Button cancelButton; + + @Override + public void doAfterCompose(Component comp) throws Exception + { + super.doAfterCompose(comp); + + int hD = (int) self.getDesktop().getAttribute("desktopHeight"); + int wD = (int) self.getDesktop().getAttribute("desktopWidth"); + + searchMovie.setWidth(wD - 10 + "px"); + searchMovie.setHeight(hD - 10 + "px"); + + SortedMap listHeader = new TreeMap<>(); + + ListModelList resultListModel = new ListModelList(); + resultList.setModel(resultListModel); + resultList.setAttribute("listModelList", resultListModel); + + resultList.getListhead().getChildren().clear(); + Listhead head = resultList.getListhead(); + Listheader selected = new Listheader(""); + Listheader movieName = new Listheader("Movie Name"); + Listheader firstAired = new Listheader("First Aired"); + Listheader overview = new Listheader("Overview"); + + selected.setHflex("min"); + movieName.setHflex("min"); + firstAired.setHflex("min"); + overview.setHflex("min"); + + head.appendChild(selected); + head.appendChild(movieName); + head.appendChild(firstAired); + head.appendChild(overview); + + resultRenderer renderer = new resultRenderer(); + resultList.setItemRenderer(renderer); + } +} diff --git a/src/main/java/at/windesign/application/movie/movieSearchSelectorComposer.java b/src/main/java/at/windesign/application/movie/movieSearchSelectorComposer.java new file mode 100644 index 0000000..60ea976 --- /dev/null +++ b/src/main/java/at/windesign/application/movie/movieSearchSelectorComposer.java @@ -0,0 +1,191 @@ +package at.windesign.application.movie; + +import com.omertron.themoviedbapi.MovieDbException; +import com.omertron.themoviedbapi.TheMovieDbApi; +import com.omertron.themoviedbapi.enumeration.SearchType; +import com.omertron.themoviedbapi.model.movie.MovieInfo; +import com.omertron.themoviedbapi.results.ResultList; +import com.omertron.themoviedbapi.tools.HttpTools; +import org.apache.http.client.HttpClient; +import org.yamj.api.common.http.SimpleHttpClientBuilder; +import org.zkoss.zk.ui.Component; +import org.zkoss.zk.ui.Execution; +import org.zkoss.zk.ui.Executions; +import org.zkoss.zk.ui.event.Event; +import org.zkoss.zk.ui.event.Events; +import org.zkoss.zk.ui.select.SelectorComposer; +import org.zkoss.zk.ui.select.annotation.Listen; +import org.zkoss.zk.ui.select.annotation.Wire; +import org.zkoss.zul.*; + +import java.sql.Date; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.List; +import java.util.SortedMap; +import java.util.TreeMap; + +public class movieSearchSelectorComposer extends SelectorComposer +{ + private static final long serialVersionUID = 1L; + private Listbox m_movieList; + + @Wire + private Window searchMovie; + + @Wire + protected Textbox searchText; + + @Wire + protected Textbox searchYear; + + @Wire + protected Listbox resultList; + + @Override + public void doAfterCompose(Component comp) throws Exception + { + super.doAfterCompose(comp); + + final Execution execution = Executions.getCurrent(); + + if(execution.getArg().containsKey("movieList")) + m_movieList = (Listbox) execution.getArg().get("movieList"); + } + + @Listen("onClick = #searchButton") + public void doSearch() + { + try + { + search(); + } + catch(Exception e) + { + } + } + + @Listen("onClick = #saveButton") + public void save() + { + ListModelList resultListModel = (ListModelList) resultList.getModel(); + List dataList = resultListModel.getInnerList(); + + for(int index = 0; index < resultListModel.size(); index++) + { + Listitem item = resultList.getItemAtIndex(index); + + if(item != null) + { + Listcell cell = (Listcell) item.getChildren().get(0); + + if(cell != null) + { + Checkbox box = (Checkbox) cell.getChildren().get(0); + + if(box != null) + { + if(box.isChecked()) + { + movieData data = dataList.get(index); + movieData newMovie = new movieData(); + + try + { + newMovie.fromTMDB(data.getMovieID()); + Messagebox.show(newMovie.getMovieTitle()); + } + catch(Exception e) + { + } + } + } + } + } + } + searchMovie.onClose(); + } + + @Listen("onClick = #cancelButton") + public void cancel() + { + searchMovie.onClose(); + } + + public void search() throws MovieDbException + { + int maxPage = 2; + int page; + + HttpClient httpClient; + + httpClient = new SimpleHttpClientBuilder().build(); + + TheMovieDbApi api = new TheMovieDbApi("a33271b9e54cdcb9a80680eaf5522f1b", httpClient); + + String sText = searchText.getText(); + String sYearT = searchYear.getText(); + int sYear; + + if(sYearT.isEmpty()) + sYear = 0; + else + sYear = Integer.parseInt(sYearT); + + if(sText.isEmpty()) + return; + + movieData movie; + ListModelList resultListModel = (ListModelList) resultList.getModel(); + + resultListModel.clear(); + + for(page = 1; page <= maxPage; page++) + { + ResultList movies = api.searchMovie(sText, page, "de-DE", true, sYear, 0, SearchType.PHRASE); + if(movies.getResults().size() == 0) + break; + + for(MovieInfo resultMovie : movies.getResults()) + { + if(!exist(resultMovie.getId())) + { + movie = new movieData(); + + movie.setMovieID(resultMovie.getId()); + movie.setMovieTitle(resultMovie.getTitle()); + movie.setReleaseDate(string2Date(resultMovie.getReleaseDate())); + movie.setOverview(resultMovie.getOverview()); + + resultListModel.add(movie); + movie.setModel(resultListModel); + } + } + } + } + + Date string2Date(String strDate) + { + if(strDate == null) + return new Date(1900, 1, 1); + else if(strDate.isEmpty()) + return new Date(1900, 1, 1); + else + return Date.valueOf(strDate); + } + + boolean exist(int id) + { + ListModelList list = (ListModelList) m_movieList.getModel(); + List dataList = list.getInnerList(); + + for(movieData data : dataList) + { + if(id == data.getMovieID()) + return true; + } + return false; + } +} diff --git a/src/main/java/at/windesign/application/movie/resultRenderer.java b/src/main/java/at/windesign/application/movie/resultRenderer.java new file mode 100644 index 0000000..1d943bb --- /dev/null +++ b/src/main/java/at/windesign/application/movie/resultRenderer.java @@ -0,0 +1,28 @@ +package at.windesign.application.movie; + +import org.zkoss.zul.*; + +public class resultRenderer implements ListitemRenderer +{ + private Listbox movieList; + + @Override + public void render(Listitem item, Object o, int i) throws Exception + { + final movieData data = (movieData) o; + + Listcell selectedCell = new Listcell(); + Listcell movieNameCell = new Listcell(data.getMovieTitle()); + Listcell movieFirstAiredCell = new Listcell(String.valueOf(data.getReleaseDate())); + Listcell movieOverviewCell = new Listcell(data.getOverview()); + + Checkbox checkbox = new Checkbox(); + checkbox.setParent(selectedCell); + selectedCell.setParent(item); + movieNameCell.setParent(item); + movieFirstAiredCell.setParent(item); + movieOverviewCell.setParent(item); + + item.setValue(data); + } +} \ No newline at end of file diff --git a/src/main/webapp/movie/centerMovie.zul b/src/main/webapp/movie/centerMovie.zul index 03177db..4d06d8d 100644 --- a/src/main/webapp/movie/centerMovie.zul +++ b/src/main/webapp/movie/centerMovie.zul @@ -2,12 +2,22 @@ vflex="true" apply="at.windesign.application.movie.movieListForwardComposer, at.windesign.application.movie.movieListSelectorComposer" > - + + + + + + + +
+
+
+
+ + + + + + - -
+ + + + + + + + - @@ -21,6 +21,9 @@ + + + diff --git a/target/multimedia/movie/centerMovie.zul b/target/multimedia/movie/centerMovie.zul new file mode 100644 index 0000000..03177db --- /dev/null +++ b/target/multimedia/movie/centerMovie.zul @@ -0,0 +1,22 @@ +
+ + + + + + + + + +
diff --git a/target/multimedia/movie/detailsMovie.zul b/target/multimedia/movie/detailsMovie.zul new file mode 100644 index 0000000..bd2712d --- /dev/null +++ b/target/multimedia/movie/detailsMovie.zul @@ -0,0 +1,61 @@ + + + + + + Overview + + + + Settings + + +
+
+
+
+ + +