public void activate(final Session session, final SubscriptionRegistrar subscriptionRegistrar) { // Subscribe to session ADDED_OBJECT events (so we will see when a course is selected) session.subscribe(Session.Event.ADDED_OBJECT, this, subscriptionRegistrar); // When a problem is selected, add it to the session final SingleSelectionModel<ProblemAndSubmissionReceipt> selectionModel = new SingleSelectionModel<ProblemAndSubmissionReceipt>(); cellTable.setSelectionModel(selectionModel); selectionModel.addSelectionChangeHandler( new SelectionChangeEvent.Handler() { @Override public void onSelectionChange(SelectionChangeEvent event) { ProblemAndSubmissionReceipt selected = selectionModel.getSelectedObject(); if (selected != null) { // Add the problem to the Session session.add(selected.getProblem()); } } }); // Load the exercise when the user double-clicks cellTable.addDomHandler( new DoubleClickHandler() { @Override public void onDoubleClick(DoubleClickEvent event) { Problem problem = session.get(Problem.class); if (problem != null) { // Switch to DevelopmentPage session.get(PageStack.class).push(PageId.DEVELOPMENT); } } }, DoubleClickEvent.getType()); // If there is already a Course selected, load its problems. // Otherwise, if there are problems already in the session, display them. CourseSelection courseSelection = session.get(CourseSelection.class); ProblemAndSubmissionReceipt[] problemList = session.get(ProblemAndSubmissionReceipt[].class); if (courseSelection != null) { loadProblemsForCourse(courseSelection); } else if (problemList != null) { displayLoadedProblems(problemList); } }
private void createDataGrid() { dataGrid = new DataGrid<InputItem>(1024 * 1024, ZicoDataGridResources.INSTANCE, KEY_PROVIDER); selectionModel = new SingleSelectionModel<InputItem>(KEY_PROVIDER); dataGrid.setSelectionModel(selectionModel); recordStore = new ListDataProvider<InputItem>(KEY_PROVIDER); recordStore.addDataDisplay(dataGrid); sortHandler = new ColumnSortEvent.ListHandler<InputItem>(recordStore.getList()); Column<InputItem, InputItem> colId = new IdentityColumn<InputItem>(ID_CELL); dataGrid.addColumn(colId, new ResizableHeader<InputItem>("#", dataGrid, colId)); dataGrid.setColumnWidth(colId, 35, Style.Unit.PX); final EditTextCell cellName = new EditTextCell(); Column<InputItem, String> colName = new Column<InputItem, String>(cellName) { @Override public String getValue(InputItem rec) { return rec.getName(); } }; colName.setFieldUpdater( new FieldUpdater<InputItem, String>() { @Override public void update(int index, InputItem rec, String value) { if (!value.equals(rec.getName())) { markChange(rec); rec.setName(value); cellName.clearViewData(rec.getId()); } } }); dataGrid.addColumn(colName, new ResizableHeader<InputItem>("Name", dataGrid, colName)); dataGrid.setColumnWidth(colName, 128, Style.Unit.PX); colName.setSortable(true); sortHandler.setComparator( colName, new Comparator<InputItem>() { @Override public int compare(InputItem o1, InputItem o2) { return o1.getName().compareTo(o2.getName()); } }); // final SelectCell<String,Integer> cellActive = new SelectCell<String,Integer>( // ZicoWidgets.<String,Integer>map("NO",0,"YES",1)); // Column<InputItem,Integer> colActive = new Column<InputItem, Integer>(cellActive) { // @Override // public Integer getValue(InputItem rec) { // return rec.getActive(); // } // }; // colActive.setFieldUpdater(new FieldUpdater<InputItem, Integer>() { // @Override // public void update(int index, InputItem rec, Integer value) { // if (rec.getActive() != value) { // markChange(rec); // rec.setActive(value); // cellActive.clearViewData(rec.getId()); // } // } // }); // dataGrid.addColumn(colActive, new ResizableHeader<InputItem>("Active", dataGrid, // colActive)); // dataGrid.setColumnWidth(colActive, 128, Style.Unit.PX); // final DatePickerCell cellTstart = new DatePickerCell(ClientUtil.TSTAMP_FORMAT0); // Column<InputItem,Date> colTstart = new Column<InputItem, Date>(cellTstart) { // @Override // public Date getValue(InputItem rec) { // return ClientUtil.unix2date(rec.getTstart()); // } // }; // colTstart.setFieldUpdater(new FieldUpdater<InputItem, Date>() { // @Override // public void update(int index, InputItem rec, Date value) { // long t = ClientUtil.date2unix(value); // if (t != rec.getTstart()) { // markChange(rec); // rec.setTstart(t); // cellTstart.clearViewData(rec.getId()); // } // } // }); // colTstart.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER); // dataGrid.addColumn(colTstart, new ResizableHeader<InputItem>("TStart", dataGrid, // colTstart)); // dataGrid.setColumnWidth(colTstart, 100, Style.Unit.PX); // final DatePickerCell cellTstop = new DatePickerCell(ClientUtil.TSTAMP_FORMAT0); // Column<InputItem,Date> colTstop = new Column<InputItem, Date>(cellTstop) { // @Override // public Date getValue(InputItem rec) { // return ClientUtil.unix2date(rec.getTstop()); // } // }; // colTstop.setFieldUpdater(new FieldUpdater<InputItem, Date>() { // @Override // public void update(int index, InputItem rec, Date value) { // long t = ClientUtil.date2unix(value); // if (t != rec.getTstop()) { // markChange(rec); // rec.setTstop(t); // cellTstop.clearViewData(rec.getId()); // } // } // }); // colTstop.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER); // dataGrid.addColumn(colTstop, new ResizableHeader<InputItem>("TStop", dataGrid, // colTstop)); // dataGrid.setColumnWidth(colTstop, 100, Style.Unit.PX); Column<InputItem, Integer> colInput = new Column<InputItem, Integer>(cellInput) { @Override public Integer getValue(InputItem iitem) { return iitem.getInputId(); } }; colInput.setFieldUpdater( new FieldUpdater<InputItem, Integer>() { @Override public void update(int index, InputItem rec, Integer value) { if (rec.getInputId() != value) { markChange(rec); rec.setInputId(value); cellInput.clearViewData(rec.getId()); } } }); dataGrid.addColumn(colInput, new ResizableHeader<InputItem>("Input", dataGrid, colInput)); dataGrid.setColumnWidth(colInput, 128, Style.Unit.PX); Column<InputItem, Integer> colTxForm = new Column<InputItem, Integer>(cellTxForm) { @Override public Integer getValue(InputItem rec) { return rec.getTxFormid(); } }; colTxForm.setFieldUpdater( new FieldUpdater<InputItem, Integer>() { @Override public void update(int index, InputItem iitem, Integer value) { if (iitem.getTxFormid() != value) { markChange(iitem); iitem.setTxFormid(value); cellTxForm.clearViewData(iitem.getId()); } } }); dataGrid.addColumn(colTxForm, new ResizableHeader<InputItem>("TxForm", dataGrid, colTxForm)); dataGrid.setColumnWidth(colTxForm, 128, Style.Unit.PX); final EditTextCell cellComment = new EditTextCell(); Column<InputItem, String> colComment = new Column<InputItem, String>(cellComment) { @Override public String getValue(InputItem rec) { return rec.getComment(); } }; colComment.setFieldUpdater( new FieldUpdater<InputItem, String>() { @Override public void update(int index, InputItem rec, String value) { if (!value.equals(rec.getComment())) { markChange(rec); rec.setComment(value); cellComment.clearViewData(rec.getId()); } } }); dataGrid.addColumn(colComment, new ResizableHeader<InputItem>("Comment", dataGrid, colComment)); colComment.setSortable(true); sortHandler.setComparator( colComment, new Comparator<InputItem>() { @Override public int compare(InputItem o1, InputItem o2) { return o1.getComment().compareTo(o2.getComment()); } }); dataGrid.addCellPreviewHandler( new CellPreviewEvent.Handler<InputItem>() { @Override public void onCellPreview(CellPreviewEvent<InputItem> event) { NativeEvent nev = event.getNativeEvent(); String eventType = nev.getType(); if (BrowserEvents.CONTEXTMENU.equals(eventType)) { selectionModel.setSelected(event.getValue(), true); if (event.getValue() != null) { contextMenu.setPopupPosition( event.getNativeEvent().getClientX(), event.getNativeEvent().getClientY()); contextMenu.show(); } } } }); dataGrid.setKeyboardSelectionPolicy( HasKeyboardSelectionPolicy.KeyboardSelectionPolicy.DISABLED); dataGrid.addDomHandler( new DoubleClickHandler() { @Override public void onDoubleClick(DoubleClickEvent event) { event.preventDefault(); } }, DoubleClickEvent.getType()); dataGrid.addDomHandler( new ContextMenuHandler() { @Override public void onContextMenu(ContextMenuEvent event) { event.preventDefault(); } }, ContextMenuEvent.getType()); }
public OrganismPanel() { initWidget(ourUiBinder.createAndBindUi(this)); loadingDialog = new LoadingDialog("Processing ...", null, false); TextColumn<OrganismInfo> organismNameColumn = new TextColumn<OrganismInfo>() { @Override public String getValue(OrganismInfo organism) { return organism.getName(); } }; Column<OrganismInfo, Number> annotationsNameColumn = new Column<OrganismInfo, Number>(new NumberCell()) { @Override public Integer getValue(OrganismInfo object) { return object.getNumFeatures(); } }; Column<OrganismInfo, Number> sequenceColumn = new Column<OrganismInfo, Number>(new NumberCell()) { @Override public Integer getValue(OrganismInfo object) { return object.getNumSequences(); } }; sequenceColumn.setSortable(true); organismNameColumn.setSortable(true); annotationsNameColumn.setSortable(true); Annotator.eventBus.addHandler( OrganismChangeEvent.TYPE, new OrganismChangeEventHandler() { @Override public void onOrganismChanged(OrganismChangeEvent organismChangeEvent) { organismInfoList.clear(); organismInfoList.addAll(MainPanel.getInstance().getOrganismInfoList()); } }); dataGrid.setLoadingIndicator(new HTML("Calculating Annotations ... ")); dataGrid.addColumn(organismNameColumn, "Name"); dataGrid.addColumn(annotationsNameColumn, "Annotations"); dataGrid.addColumn(sequenceColumn, "Ref Sequences"); dataGrid.setEmptyTableWidget( new Label("No organisms available. Add new organisms using the form field.")); singleSelectionModel.addSelectionChangeHandler( new SelectionChangeEvent.Handler() { @Override public void onSelectionChange(SelectionChangeEvent event) { if (!creatingNewOrganism) { loadOrganismInfo(); changeButtonSelection(); } else { creatingNewOrganism = false; } } }); dataGrid.setSelectionModel(singleSelectionModel); dataProvider.addDataDisplay(dataGrid); dataGrid.addDomHandler( new DoubleClickHandler() { @Override public void onDoubleClick(DoubleClickEvent event) { if (singleSelectionModel.getSelectedObject() != null) { String orgId = singleSelectionModel.getSelectedObject().getId(); if (!MainPanel.getInstance().getCurrentOrganism().getId().equals(orgId)) { OrganismRestService.switchOrganismById(orgId); } } } }, DoubleClickEvent.getType()); List<OrganismInfo> trackInfoList = dataProvider.getList(); ColumnSortEvent.ListHandler<OrganismInfo> sortHandler = new ColumnSortEvent.ListHandler<OrganismInfo>(trackInfoList); dataGrid.addColumnSortHandler(sortHandler); sortHandler.setComparator( organismNameColumn, new Comparator<OrganismInfo>() { @Override public int compare(OrganismInfo o1, OrganismInfo o2) { return o1.getName().compareTo(o2.getName()); } }); sortHandler.setComparator( annotationsNameColumn, new Comparator<OrganismInfo>() { @Override public int compare(OrganismInfo o1, OrganismInfo o2) { return o1.getNumFeatures() - o2.getNumFeatures(); } }); sortHandler.setComparator( sequenceColumn, new Comparator<OrganismInfo>() { @Override public int compare(OrganismInfo o1, OrganismInfo o2) { return o1.getNumSequences() - o2.getNumSequences(); } }); }