import org.zkoss.zk.ui.event.EventListener;\r
import org.zkoss.zk.ui.event.Events;\r
import org.zkoss.zk.ui.event.KeyEvent;\r
-import org.zkoss.zk.ui.event.MouseEvent;\r
import org.zkoss.zk.ui.event.SortEvent;\r
import org.zkoss.zk.ui.select.Selectors;\r
import org.zkoss.zk.ui.select.annotation.Wire;\r
import org.zkoss.zul.Checkbox;\r
import org.zkoss.zul.Column;\r
import org.zkoss.zul.Combobox;\r
+import org.zkoss.zul.Div;\r
import org.zkoss.zul.Hbox;\r
import org.zkoss.zul.ListModelList;\r
import org.zkoss.zul.Listbox;\r
+import org.zkoss.zul.Listhead;\r
+import org.zkoss.zul.Listheader;\r
import org.zkoss.zul.Listitem;\r
import org.zkoss.zul.Menuitem;\r
import org.zkoss.zul.Menupopup;\r
import org.zkoss.zul.Vlayout;\r
import org.zkoss.zul.West;\r
import org.zkoss.zul.Window;\r
+import org.zkoss.zul.event.ZulEvents;\r
\r
import user.commons.ListUtils;\r
import user.commons.StoreUri;\r
private boolean itemSelected;\r
private int descLength;\r
private Map<String, Long> tags = null;\r
- private List<Long> searchTags = new ArrayList<>();\r
+ private List<Long> searchTags = new ArrayList<Long>();\r
protected IItemManager itemManager = null;\r
+ private List<String> columnSizes = new ArrayList<String>();\r
\r
@Wire\r
Timer timer;\r
\r
private String orderBy;\r
\r
- private boolean orderAscending;\r
+ private boolean isOrderAscending;\r
private Map<String, String> topColorClasses;\r
private int selectedListItemIndex = -1;\r
private volatile boolean preventAfterRender;\r
public ListSearchModel() {\r
this.itemManager = ItemManager.getInstance();\r
\r
- typeFilters = new LinkedHashMap<>();\r
+ typeFilters = new LinkedHashMap<String, TypeFilter>();\r
MediaCubeConfig mediaCubeConfig = SessionUtil.getMediaCubeConfig();\r
setTopTypeFilters(mediaCubeConfig.getTopTypeFilters());\r
setBottomTypeFilters(mediaCubeConfig.getBottomTypeFilters());\r
\r
- columnHeaders = new LinkedHashMap<>();\r
+ columnHeaders = new LinkedHashMap<String, String>();\r
columnHeaders.put("ID", "mediahouseid");\r
columnHeaders.put("Cím", "mediatitle");\r
columnHeaders.put("Hossz", "length");\r
}\r
};\r
\r
- // searchHistory = new ListModelList<>(SessionUtil.getUserSearchHistory());\r
+ // searchHistory = new\r
+ // ListModelList<String>(SessionUtil.getUserSearchHistory());\r
// setColumnOrder();\r
// setUserSelectedFilters();\r
}\r
// A MediaFileServlet a services/proxy alatt szolgal ki\r
// Clients.evalJavaScript("setSource('http://localhost:9080/services/proxy/20209535_1-20205617.mp4',\r
// 'video/mp4')");\r
+ logger.info("afterCompose");\r
\r
try {\r
-\r
Selectors.wireComponents(view, this, false);\r
Selectors.wireEventListeners(view, this);\r
\r
configureSearchResultListbox();\r
showExternalMediaID();\r
\r
- searchHistory = new ListModelList<>(SessionUtil.getUserSearchHistory());\r
+ searchHistory = new ListModelList<String>(SessionUtil.getUserSearchHistory());\r
setColumnOrder();\r
+ logger.info("columnOrder: {}", columnOrder);\r
setUserSelectedFilters();\r
\r
if (SessionUtil.getUserPageSize() != 0) {\r
else\r
setSearchTags();\r
\r
+ Listhead head = itemsListbox.getListhead();\r
+ head.addEventListener(ZulEvents.ON_COL_SIZE, new ColumnSizeListener(this));\r
+// setColumnSizes(columnSizes);\r
} catch (Exception e) {\r
handleSearchError(e);\r
}\r
\r
}\r
\r
- private void clearAllFilters() {\r
+ private void unsetAllFilters() {\r
for (String filter : typeFilters.keySet()) {\r
typeFilters.get(filter).setChecked(false);\r
}\r
}\r
\r
private void configureSearchResultListbox() {\r
+ logger.info("configureSearchResultListbox");\r
if (itemsListbox != null) {\r
if (itemsListbox.getItemCount() > 0) {\r
Paging paging = itemsListbox.getPagingChild();\r
paging.setAutohide(false);\r
\r
for (Component header : itemsListbox.getHeads()) {\r
- Column column = (Column) header;\r
+ Listhead column = (Listhead) header;\r
if (columnOrder != null)\r
- if (column.getLabel().equals(columnOrder.entrySet().iterator().next().getKey()))\r
- column.setSortDirection(columnOrder.entrySet().iterator().next().getValue());\r
+ if (column.getAttribute("label").equals(columnOrder.entrySet().iterator().next().getKey()))\r
+ column.setAttribute("label", columnOrder.entrySet().iterator().next().getValue());\r
column.addEventListener("onSort", evt -> doSort(evt));\r
}\r
}\r
@Command\r
@NotifyChange({ "searchResult", "selectedObject", "hasTSMMediaFile", "hasLowresMediaFile", "lowresMediaFilePath" })\r
public void doSearch() {\r
+ logger.info("doSearch");\r
try {\r
search.close();\r
search.select();\r
SessionUtil.putUserSearchHistory(searchHistory);\r
}\r
\r
- List<String> searchFilters = getColumnOrder();\r
+ List<String> searchFilters = getSearchFilters();\r
\r
if (searchFilters == null || searchFilters.size() == 0)\r
throw new Exception("Anyag típus kiválasztása kötelező!");\r
\r
SearchOptions options = SearchOptions.create().setText(searchValue).setTypes(selectedTypeIds)\r
.setTags(searchTags).setFrom(searchFrom).setTo(searchTo).setMissingProxy(missingProxy)\r
- .setDescLength(descLength).setOrder(orderBy, orderAscending);\r
+ .setDescLength(descLength).setOrder(orderBy, isOrderAscending);\r
\r
validateSearchOptions(options);\r
searchResult = new CachedListModel(options);\r
"Legalább egy keresési opció használata kötelező: 3 karakter, hiányzó proxy, dátum, típus, cimke!");\r
}\r
\r
- private List<String> getColumnOrder() {\r
+ private List<String> getSearchFilters() {\r
List<String> searchFilters = getSelectedFilters();\r
SessionUtil.putUserSearchFilter(searchFilters);\r
\r
if (SessionUtil.getUserColumnOrder() != null) {\r
orderBy = columnHeaders.get(columnOrder.entrySet().iterator().next().getKey());\r
- orderAscending = columnOrder.entrySet().iterator().next().getValue().equals("ascending");\r
+ isOrderAscending = columnOrder.entrySet().iterator().next().getValue().equals("ascending");\r
}\r
\r
return searchFilters;\r
}\r
\r
public void doSort(Event event) throws Exception {\r
+ logger.info("doSort");\r
if (itemsListbox.getItemCount() > 0) {\r
itemsListbox.getHeads().forEach(c -> ((Column) c).setSortDirection("natural"));\r
SortEvent evt = (SortEvent) event;\r
column.setSortDirection(evt.isAscending() ? "ascending" : "descending");\r
logger.info("{} {}", column.getLabel(), evt.isAscending());\r
\r
- columnOrder = new HashMap<>();\r
+ columnOrder = new HashMap<String, String>();\r
columnOrder.put(column.getLabel(), column.getSortDirection());\r
SessionUtil.putUserColumnOrder(columnOrder);\r
\r
orderBy = columnHeaders.get(column.getLabel());\r
- orderAscending = evt.isAscending();\r
+ isOrderAscending = evt.isAscending();\r
doSearch();\r
+\r
notifyChange("searchResult", "selectedObject", "hasLowresMediaFile", "lowresMediaFilePath");\r
evt.stopPropagation();\r
}\r
Clients.showNotification("Database query error!", "error", btnSearch, "start_center", 3000);\r
else\r
Clients.showNotification(e.getMessage(), "error", btnSearch, "start_center", 3000);\r
- logger.error(e);\r
+ logger.error(e.getMessage());\r
}\r
\r
private void highlight(ArchivedMedia am, boolean highlight) {\r
logger.info("onAfterRenderList begin");\r
// aszinkron fut le, kulon kezelendo a hiba\r
try {\r
-\r
- if (searchResult != null)\r
+ if (searchResult != null) {\r
logger.info("isEmpty {}", searchResult.isEmpty());\r
+ }\r
+ setColumnSizes(columnSizes);\r
+ refreshColumns();\r
\r
String mediaID = SessionUtil.getQueryParameter(MEDIA_ID);\r
+ logger.info("mediaID: {}", mediaID);\r
if (mediaID != null) {\r
selectedObject = searchResult.getElementAt(0);\r
highlight(selectedObject, true);\r
if (positionToScroll != -1) {\r
ensureVisible(positionToScroll);\r
}\r
+\r
} catch (Exception e) {\r
handleSearchError(e);\r
}\r
}\r
}\r
\r
- @Command\r
- public void rowMouseOut(@BindingParam("evt") MouseEvent event) {\r
- logger.info(event);\r
- }\r
-\r
- // public void rowSelected(@BindingParam("item") Object media,\r
- // @BindingParam("isChecked") boolean isChecked) {\r
- @Command\r
- public void rowMouseOver(@BindingParam("evt") MouseEvent event) {\r
- logger.info(event);\r
- }\r
-\r
@Command\r
@NotifyChange({ "selectedObject", "hasLowresMediaFile", "hasTSMMediaFile", "lowresMediaFilePath" })\r
public void select(@BindingParam("selectedObject") ArchivedMedia selectedObject,\r
}\r
\r
private void setColumnOrder() {\r
+ columnOrder = new HashMap<String, String>();\r
if (SessionUtil.getUserColumnOrder() != null) {\r
- columnOrder = new HashMap<>();\r
columnOrder.put(SessionUtil.getUserColumnOrder().entrySet().iterator().next().getKey(),\r
(String) SessionUtil.getUserColumnOrder().entrySet().iterator().next().getValue());\r
+ } else {\r
+ columnOrder.putAll(columnHeaders);\r
}\r
}\r
\r
private void setUserSelectedFilters() {\r
List<String> selectedFilters = SessionUtil.getUserSearchFilter();\r
if (selectedFilters != null) {\r
- clearAllFilters();\r
+ unsetAllFilters();\r
for (String filter : selectedFilters) {\r
if (typeFilters.containsKey(filter)) {\r
TypeFilter typeFilter = typeFilters.get(filter);\r
timer.start();\r
}\r
\r
+ public void refreshColumns() {\r
+ refreshListboxItems();\r
+ }\r
+\r
+ private void refreshListboxItems() {\r
+ for (Listitem listitem : itemsListbox.getItems()) {\r
+ for (int i = 0; i < 5; i++) {\r
+ ((Div) listitem.getFirstChild().getFirstChild().getFirstChild().getChildren().get(i))\r
+ .setWidth(columnSizes.get(i));\r
+ }\r
+ }\r
+ }\r
+\r
+ public void setColumnSizes(List<String> newColumnSizes) {\r
+ if (columnSizes.isEmpty()) {\r
+ Listhead head = itemsListbox.getListhead();\r
+ for (int i = 0; i < 5; i++) {\r
+ Listheader header = (Listheader) head.getChildren().get(i);\r
+ if (header.getWidth() != null) {\r
+ columnSizes.add(header.getWidth());\r
+ } else {\r
+ columnSizes.add("174px");\r
+ }\r
+ }\r
+ } else {\r
+ for (int i = 0; i < newColumnSizes.size(); i++) {\r
+ columnSizes.set(i, newColumnSizes.get(i));\r
+ }\r
+ }\r
+ logger.info("columnSizes: {}", columnSizes);\r
+ }\r
}\r