public TreeGrid getInstance(final GridDataToolsPortlet portlet, GridConfiguration gridConfiguration, List criterions) { final long startTime = new Date().getTime(); this.criterions = criterions; this.portlet = portlet; this.gridConfiguration = gridConfiguration; columnMenuItem = bulidMenu(); TreeGrid treeGrid = new TreeGrid() { @Override protected MenuItem[] getHeaderContextMenuItems(Integer fieldNum) { /* * Modify the default menu's columns item, so that it contains themes and then * attributes as children of themes. All the information needed to display this is * stored in the grid configuration. */ MenuItem[] menuItems = super.getHeaderContextMenuItems(fieldNum); // columnMenuItem = bulidMenu(); /* * if (columnMenuItem == null) { columnMenuItem = bulidMenu(); } */ for (MenuItem menuItem : menuItems) { if ("Columns".equals(menuItem.getTitle())) { menuItem.setTitle(DVConstants.CUSTOMIZE_GRID_TITLE); menuItem.setSubmenu(columnMenuItem); } } return menuItems; } @Override public void setModalEditing(Boolean modalEditing) { super.setModalEditing(modalEditing); setAutoFitHeaderHeights(true); setFilterButtonPrompt(DVConstants.GRID_FILTERS_PROMPT); setBaseStyle("myBoxedGridCell"); /* setHeaderBarStyle("sorterButton"); setLoadingDataMessageStyle("loadingDataMessage"); setEmptyMessageStyle("emptyMessage"); setSortNumeralStyle("sortNumeral"); setOfflineMessageStyle("offlineMessage");*/ setLoadDataOnDemand(false); setShowRollOver(true); setUseCellRollOvers(false); setUseAdvancedFieldPicker(false); setFieldPickerFieldProperties("frozen"); // as discussed with AJ setFieldPickerShowSampleValues(false); setAutoFetchData(true); // works to hide highlight button in field picker String fieldPickerWindowProperties = "{fieldPickerProperties:{showHilitesButton:false}}"; setAttribute("fieldPickerWindowProperties", JSOHelper.eval(fieldPickerWindowProperties), true); } }; this.instance = treeGrid; /* * this.portlet = portlet; this.gridConfiguration = gridConfiguration; */ treeGrid.setHeight("90%"); treeGrid.setWidth100(); Map treeGridColumns = gridConfiguration.getTreeGridColumns(); treeGrid.setFetchOperation("Linear"); // ---- down and bookmark criteria saving if (portlet.isCalledFromBookmark()) { String visibleColumnNames = (String) BookmarkDataWidget.getBookmarkedValues().get( BookmarkEnum.GRID_COLUMNS); String allColumnNames = (String) BookmarkDataWidget.getBookmarkedValues().get( BookmarkEnum.GRID_ORDERED_COLUMNS); if (visibleColumnNames != null) { String[] visibleColumnNamearray = visibleColumnNames.split(","); List visibleColumnlist = Arrays.asList(visibleColumnNamearray); List defaultColumnNames = new ArrayList(gridConfiguration .getDefaultColumnNames().keySet()); defaultColumnNames.removeAll(visibleColumnlist); List hiddenColumnNames = new ArrayList(defaultColumnNames); gridConfiguration.getHideColumn().clear(); gridConfiguration.getHideColumn().addAll(hiddenColumnNames); } if (allColumnNames != null) { String[] orderedColumnsArray = allColumnNames.split(","); List orderedColumnList = Arrays.asList(orderedColumnsArray); Map defaultColumnNames = new LinkedHashMap( gridConfiguration.getDefaultColumnNames()); Map orderModifiedColumnNames = new LinkedHashMap(); for (String eachOrderedField : orderedColumnList) { if (defaultColumnNames.keySet().contains(eachOrderedField)) { orderModifiedColumnNames.put(eachOrderedField, defaultColumnNames.get(eachOrderedField)); } gridConfiguration.getDefaultColumnNames().clear(); gridConfiguration.getDefaultColumnNames().putAll(orderModifiedColumnNames); } } } if (portlet.isDataDownloadGrid() && portlet.getLocalGridDownloadCriteria() != null) { this.criteria = portlet.getLocalGridDownloadCriteria(); // remove dimension from grid, no data appears in download treeGrid.setSort(portlet.getLocalGridOrderBy()); } else { this.criteria = new AdvancedCriteria("select_clause", OperatorId.EQUALS, "distinct(" + treeGridColumns.get("Parent Name") + "), FIELD_PARENT_ID"); criteria.addCriteria(new Criterion("DIM_FIELD_ID", OperatorId.GREATER_THAN, "0")); criteria.addCriteria(new Criterion("group_by", OperatorId.EQUALS, "FIELD_PARENT_ID,FIELD_NAME")); this.criteria.addCriteria(GridUtility.buildAdvanceCriteria(criterions, portlet, gridConfiguration)); portlet.setLocalGridDownloadCriteria(this.criteria); // remove dimension from grid, no data appears in download // Expanded bookmark functionality SortSpecifier[] orderBySortSpecifiers = null; if (portlet.isCalledFromBookmark() && BookmarkDataWidget.getBookmarkedValues().get(BookmarkEnum.GRID_SORTBY) != null) { orderBySortSpecifiers = (SortSpecifier[]) BookmarkDataWidget.getBookmarkedValues() .get(BookmarkEnum.GRID_SORTBY); } else { orderBySortSpecifiers = GridUtility.getOrderByClause(gridConfiguration); } for (SortSpecifier ss : orderBySortSpecifiers) { // System.out.println("sorting sorting" + ss.getField() + ":" + ss.getSortDirection().getValue()); } treeGrid.setSort(orderBySortSpecifiers[0]); portlet.setLocalGridOrderBy(orderBySortSpecifiers); } // ---- download and bookmark criteria saving int pageSize = Integer.parseInt(ConfigurationDataSources.getDataToolProperties().get( DVConstants.GRID_PAGE_SIZE)); treeGrid.setDataPageSize(pageSize); treeGrid.setCanHover(true); treeGrid.setShowHover(true); treeGrid.setCanDragSelect(true); treeGrid.setWrapCells(false); // treeGrid.setNodeIcon("[SKIN]/headerIcons/print.png"); // treeGrid.setFolderIcon(""); /* * treeGrid.setShowOpenIcons(false); treeGrid.setShowDropIcons(false); * treeGrid.setClosedIconSuffix(""); */ treeGrid.setMinFieldWidth(DVConstants.GRID_HEADER_MIN_WIDTH_PX); treeGrid.setUseCopyPasteShortcuts(true); treeGrid.setContextMenu(GridUtility.createMenu(portlet)); treeGrid.setSelectionType(SelectionStyle.MULTIPLE); // treeGrid.setm treeGrid.setEmptyCellValue("--"); // treeGrid.setAutoFetchTextMatchStyle(TextMatchStyle.SUBSTRING); treeGrid.addDataArrivedHandler(new DataArrivedHandler() { @Override public void onDataArrived(DataArrivedEvent event) { portlet.resetCalledFromBookmark(); portlet.getModelWindow().setPercentDone(100); GridUtility.setTimeInformation(event, portlet); long endTime = new Date().getTime(); logger.logPerf("DataArrivedHandler()", startTime, endTime); int totalRows = instance.getTotalRows(); portlet.getGridHeader().getGridTotalLabel() .setContents("Total grid rows : " + totalRows); } }); DataSource dataSource = DataSource.get("bpk_field_calc_attr_view_base"); treeGrid.setDataSource(dataSource); treeGrid.addFieldStateChangedHandler(new FieldStateChangedHandler() { @Override public void onFieldStateChanged(FieldStateChangedEvent event) { updateHiddenVisible(); } }); treeGrid.setCriteria(criteria); treeGrid.setFields(setEmptyListGridFields(dataSource)); treeGrid.addFilterEditorSubmitHandler(new FilterEditorSubmitHandler() { @Override public void onFilterEditorSubmit(FilterEditorSubmitEvent event) { String downloadID = portlet.getRandomDownloadID(); criteria.addCriteria(new Criterion("DATA_VISUAL_ID", OperatorId.EQUALS, portlet .getData_visual_id())); criteria.addCriteria(new Criterion("downloadID", OperatorId.EQUALS, downloadID)); portlet.getTreeGrid().fetchData(criteria); } }); portlet.getGridHeader().setToggleOffImage(); return treeGrid; }