Example usage for com.google.gwt.event.logical.shared SelectionEvent getAssociatedType

List of usage examples for com.google.gwt.event.logical.shared SelectionEvent getAssociatedType

Introduction

In this page you can find the example usage for com.google.gwt.event.logical.shared SelectionEvent getAssociatedType.

Prototype

@SuppressWarnings("unchecked")
    @Override
    public final Type<SelectionHandler<T>> getAssociatedType() 

Source Link

Usage

From source file:org.zanata.webtrans.client.editor.table.TableEditorPresenter.java

License:Open Source License

@Override
protected void onBind() {
    display.setTableModelHandler(tableModelHandler);
    display.setPageSize(TableConstants.PAGE_SIZE);
    registerHandler(display.getSelectionHandlers().addSelectionHandler(new SelectionHandler<TransUnit>() {
        @Override// w w w  .  ja  v  a 2 s .  com
        public void onSelection(SelectionEvent<TransUnit> event) {
            if (selectedTransUnit == null
                    || !event.getSelectedItem().getId().equals(selectedTransUnit.getId())) {
                selectedTransUnit = event.getSelectedItem();
                Log.info("SelectedTransUnit " + selectedTransUnit.getId());
                // Clean the cache when we click the new entry
                if (!transIdNextFuzzyCache.isEmpty())
                    transIdNextFuzzyCache.clear();
                if (!transIdPrevFuzzyCache.isEmpty())
                    transIdPrevFuzzyCache.clear();
                eventBus.fireEvent(new TransUnitSelectionEvent(selectedTransUnit));
            }
        }
    }));

    registerHandler(eventBus.addHandler(DocumentSelectionEvent.getType(), new DocumentSelectionHandler() {
        @Override
        public void onDocumentSelected(DocumentSelectionEvent event) {
            if (!event.getDocument().getId().equals(documentId)) {
                display.startProcessing();
                documentId = event.getDocument().getId();
                display.getTableModel().clearCache();
                display.getTableModel().setRowCount(TableModel.UNKNOWN_ROW_COUNT);
                display.gotoPage(0, true);
                display.stopProcessing();
            }
        }
    }));

    registerHandler(eventBus.addHandler(FindMessageEvent.getType(), new FindMessageHandler() {

        @Override
        public void onFindMessage(FindMessageEvent event) {
            Log.info("Find Message Event: " + event.getMessage());
            if (selectedTransUnit != null) {
                Log.info("cancelling selection");
                display.getTargetCellEditor().clearSelection();
            }
            display.startProcessing();
            findMessage = event.getMessage();
            display.setFindMessage(findMessage);
            display.getTableModel().clearCache();
            display.getTableModel().setRowCount(TableModel.UNKNOWN_ROW_COUNT);
            display.gotoPage(0, true);
            display.stopProcessing();
        }

    }));

    registerHandler(eventBus.addHandler(TransUnitUpdatedEvent.getType(), new TransUnitUpdatedEventHandler() {
        @Override
        public void onTransUnitUpdated(TransUnitUpdatedEvent event) {
            if (documentId != null && documentId.equals(event.getDocumentId())) {
                // Clear the cache
                if (!transIdNextFuzzyCache.isEmpty())
                    transIdNextFuzzyCache.clear();
                if (!transIdPrevFuzzyCache.isEmpty())
                    transIdPrevFuzzyCache.clear();
                // TODO this test never succeeds
                if (selectedTransUnit != null
                        && selectedTransUnit.getId().equals(event.getTransUnit().getId())) {
                    // handle change in current selection
                    // eventBus.fireEvent(new NotificationEvent(Severity.Warning,
                    // "Someone else updated this translation unit. you're in trouble..."));
                    // display.getTableModel().setRowValue(row, rowValue);
                    Log.info("selected TU updated; cancelling edit");
                    display.getTargetCellEditor().cancelEdit();

                    // TODO reload page and return
                }

                boolean reloadPage = false;
                if (reloadPage) {
                    display.getTargetCellEditor().cancelEdit();
                    display.getTableModel().clearCache();
                    display.reloadPage();
                } else {
                    final Integer rowOffset = getRowOffset(event.getTransUnit().getId());
                    // - add TU index to model
                    if (rowOffset != null) {
                        final int row = display.getCurrentPage() * display.getPageSize() + rowOffset;
                        Log.info("row calculated as " + row);
                        display.getTableModel().setRowValueOverride(row, event.getTransUnit());
                        if (undoInProcessing != null) {
                            Log.info("check current undo");
                            if (undoInProcessing instanceof UndoableTransUnitUpdateAction) {
                                TransUnit tu = ((UndoableTransUnitUpdateAction) undoInProcessing)
                                        .getPreviousState();
                                Log.info("" + tu.getId() + " " + event.getTransUnit().getId());
                                if (tu.getId().equals(event.getTransUnit().getId())) {
                                    Log.info("go to row:" + row);
                                    tableModelHandler.gotoRow(row);
                                    undoInProcessing = null;
                                }
                            }
                        }
                    } else {
                        display.getTableModel().clearCache();
                        display.getTargetCellEditor().cancelEdit();
                        if (undoInProcessing != null) {
                            Log.info("check current undo");
                            if (undoInProcessing instanceof UndoableTransUnitUpdateAction) {
                                TransUnit tu = ((UndoableTransUnitUpdateAction) undoInProcessing)
                                        .getPreviousState();
                                Log.info("" + tu.getId() + " " + event.getTransUnit().getId());
                                if (tu.getId().equals(event.getTransUnit().getId())) {
                                    int pageNum = ((UndoableTransUnitUpdateAction) undoInProcessing)
                                            .getCurrentPage();
                                    int rowNum = ((UndoableTransUnitUpdateAction) undoInProcessing).getRowNum();
                                    int row = pageNum * PAGE_SIZE + rowNum;
                                    Log.info("go to row:" + row);
                                    Log.info("go to page:" + pageNum);
                                    tableModelHandler.gotoRow(row);
                                    undoInProcessing = null;
                                }
                            }
                        }
                    }
                }
            }
        }
    }));

    registerHandler(eventBus.addHandler(TransUnitEditEvent.getType(), new TransUnitEditEventHandler() {
        @Override
        public void onTransUnitEdit(TransUnitEditEvent event) {
            if (documentId != null && documentId.equals(event.getDocumentId())) {
                if (selectedTransUnit != null && selectedTransUnit.getId().equals(event.getTransUnitId())) {
                    // handle change in current selection
                    if (!event.getSessionId().equals(identity.getSessionId()))
                        eventBus.fireEvent(new NotificationEvent(Severity.Warning, messages.notifyInEdit()));
                }
                // display.getTableModel().clearCache();
                // display.reloadPage();
            }
        }
    }));

    registerHandler(eventBus.addHandler(NavTransUnitEvent.getType(), new NavTransUnitHandler() {
        @Override
        public void onNavTransUnit(NavTransUnitEvent event) {
            if (selectedTransUnit != null) {
                int step = event.getStep();
                Log.info("Step " + step);
                // Send message to server to stop editing current selection
                // stopEditing(selectedTransUnit);

                InlineTargetCellEditor editor = display.getTargetCellEditor();

                // If goto Next or Prev Fuzzy/New Trans Unit
                if (event.getRowType() == NavigationType.PrevEntry) {
                    editor.handlePrev();
                }

                if (event.getRowType() == NavigationType.NextEntry) {
                    editor.handleNext();
                }

                if (event.getRowType() == NavigationType.PrevFuzzyOrUntranslated) {
                    editor.handlePrevState();
                }

                if (event.getRowType() == NavigationType.NextFuzzyOrUntranslated) {
                    editor.handleNextState();
                }

            }
        }
    }));

    registerHandler(eventBus.addHandler(TransMemoryCopyEvent.getType(), new TransMemoryCopyHandler() {
        @Override
        public void onTransMemoryCopy(TransMemoryCopyEvent event) {
            // When user clicked on copy-to-target anchor, it checks
            // if user is editing any target. Notifies if not.
            if (display.getTargetCellEditor().isEditing()) {
                display.getTargetCellEditor().setText(event.getTargetResult());
                eventBus.fireEvent(new NotificationEvent(Severity.Info, messages.notifyCopied()));
            } else
                eventBus.fireEvent(new NotificationEvent(Severity.Error, messages.notifyUnopened()));
        }
    }));

    Event.addNativePreviewHandler(new NativePreviewHandler() {
        @Override
        public void onPreviewNativeEvent(NativePreviewEvent event) {
            // Only when the Table is showed and editor is closed, the keyboard
            // event will be processed.
            if (display.asWidget().isVisible() && !display.getTargetCellEditor().isFocused()) {
                NativeEvent nativeEvent = event.getNativeEvent();
                String nativeEventType = nativeEvent.getType();
                int keyCode = nativeEvent.getKeyCode();
                boolean shiftKey = nativeEvent.getShiftKey();
                boolean altKey = nativeEvent.getAltKey();
                boolean ctrlKey = nativeEvent.getCtrlKey();
                if (nativeEventType.equals("keypress") && !shiftKey && !altKey && !ctrlKey) {
                    // PageDown key
                    switch (keyCode) {
                    case KeyCodes.KEY_PAGEDOWN:
                        Log.info("fired event of type " + event.getAssociatedType().getClass().getName());
                        if (!display.isLastPage())
                            gotoNextPage();
                        event.cancel();
                        break;
                    // PageUp key
                    case KeyCodes.KEY_PAGEUP:
                        Log.info("fired event of type " + event.getAssociatedType().getClass().getName());
                        if (!display.isFirstPage())
                            gotoPreviousPage();
                        event.cancel();
                        break;
                    // Home
                    case KeyCodes.KEY_HOME:
                        Log.info("fired event of type " + event.getAssociatedType().getClass().getName());
                        display.gotoFirstPage();
                        event.cancel();
                        break;
                    // End
                    case KeyCodes.KEY_END:
                        Log.info("fired event of type " + event.getAssociatedType().getClass().getName());
                        display.gotoLastPage();
                        event.cancel();
                        break;
                    default:
                        break;
                    }
                }
            }
        }
    });

    display.gotoFirstPage();
}