From 1f06bb0abab06abc30ba00d0215344a047c44cc3 Mon Sep 17 00:00:00 2001 From: Patrick Huang Date: Mon, 5 Nov 2012 09:24:11 +1000 Subject: [PATCH] rhbz872384 - add spell check support with code mirror - Code mirror 2 does not support browser spell check. - Add option to toggle between code mirror and plain textarea to have spell check. --- .../webtrans/client/events/RefreshPageEvent.java | 9 ++++++++- .../webtrans/client/presenter/AppPresenter.java | 2 +- .../client/presenter/EditorOptionsPresenter.java | 2 +- .../client/presenter/TransUnitsTablePresenter.java | 11 ++++++++++- .../client/presenter/TranslationEditorPresenter.java | 2 +- .../webtrans/client/resources/WebTransMessages.java | 2 +- .../org/zanata/webtrans/client/ui/EditorTextArea.java | 11 +++++++++++ .../webtrans/client/view/EditorOptionsView.java | 2 +- .../webtrans/client/view/EditorOptionsView.ui.xml | 2 +- .../presenter/TransUnitsTablePresenterTest.java | 2 +- .../presenter/TranslationEditorPresenterTest.java | 2 +- 11 files changed, 37 insertions(+), 10 deletions(-) diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/events/RefreshPageEvent.java b/zanata-war/src/main/java/org/zanata/webtrans/client/events/RefreshPageEvent.java index 23dbb08fcf..4639edb2d9 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/events/RefreshPageEvent.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/events/RefreshPageEvent.java @@ -5,7 +5,14 @@ public class RefreshPageEvent extends GwtEvent { public static Type TYPE = new Type(); - public static final RefreshPageEvent EVENT = new RefreshPageEvent(); + /** + * When firing this event, code mirror instances will be refreshed. + */ + public static final RefreshPageEvent REFRESH_CODEMIRROR_EVENT = new RefreshPageEvent(); + /** + * When firing this event, we are switching from code mirror to plain textarea. + */ + public static final RefreshPageEvent REDRAW_PAGE_EVENT = new RefreshPageEvent(); private RefreshPageEvent() { diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/AppPresenter.java b/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/AppPresenter.java index da922acb63..3ed9d5fb72 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/AppPresenter.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/AppPresenter.java @@ -251,7 +251,7 @@ public void showView(MainView viewToShow) currentView = viewToShow; if (currentView == MainView.Editor) { - eventBus.fireEvent(RefreshPageEvent.EVENT); + eventBus.fireEvent(RefreshPageEvent.REFRESH_CODEMIRROR_EVENT); } } diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/EditorOptionsPresenter.java b/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/EditorOptionsPresenter.java index 66e2238977..4e47046c24 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/EditorOptionsPresenter.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/EditorOptionsPresenter.java @@ -164,7 +164,7 @@ public void onUseCodeMirrorOptionChanged(Boolean useCodeMirrorChkValue) if (configHolder.isUseCodeMirrorEditor() != useCodeMirrorChkValue) { configHolder.setUseCodeMirrorEditor(useCodeMirrorChkValue); - eventBus.fireEvent(RefreshPageEvent.EVENT); + eventBus.fireEvent(RefreshPageEvent.REDRAW_PAGE_EVENT); } } diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/TransUnitsTablePresenter.java b/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/TransUnitsTablePresenter.java index 23c06440dd..183792fc8a 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/TransUnitsTablePresenter.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/TransUnitsTablePresenter.java @@ -231,7 +231,16 @@ public void showDataForCurrentPage(List transUnits) @Override public void onRefreshPage(RefreshPageEvent event) { - display.delayRefresh(); + if (event == RefreshPageEvent.REFRESH_CODEMIRROR_EVENT) + { + display.delayRefresh(); + } + else if (event == RefreshPageEvent.REDRAW_PAGE_EVENT) + { + List currentPageValues = navigationService.getCurrentPageValues(); + targetContentsPresenter.showData(currentPageValues); + display.buildTable(sourceContentsPresenter.getDisplays(), targetContentsPresenter.getDisplays()); + } } @Override diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/TranslationEditorPresenter.java b/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/TranslationEditorPresenter.java index 0f9db999dc..bc2195757c 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/TranslationEditorPresenter.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/TranslationEditorPresenter.java @@ -94,7 +94,7 @@ public void onPageCountChange(PageCountChangeEvent event) @Override public void refreshCurrentPage() { - eventBus.fireEvent(RefreshPageEvent.EVENT); + eventBus.fireEvent(RefreshPageEvent.REFRESH_CODEMIRROR_EVENT); } @Override diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/resources/WebTransMessages.java b/zanata-war/src/main/java/org/zanata/webtrans/client/resources/WebTransMessages.java index 0afdafc50e..0904b51540 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/resources/WebTransMessages.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/resources/WebTransMessages.java @@ -410,7 +410,7 @@ public interface WebTransMessages extends Messages @DefaultMessage("When unexpected error happens, a popup window will display and show it") String showErrorsTooltip(); - @DefaultMessage("Switch between CodeMirror Editor (supports syntax highlight) and plain textarea (no syntax highlight)") + @DefaultMessage("Switch between CodeMirror Editor (supports syntax highlight but no spell check) and plain textarea (no syntax highlight but with spell check)") String useCodeMirrorEditorTooltip(); @DefaultMessage("Go to row if on current page") diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/EditorTextArea.java b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/EditorTextArea.java index 2e14fb2886..01d6ef12f7 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/EditorTextArea.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/EditorTextArea.java @@ -21,7 +21,10 @@ package org.zanata.webtrans.client.ui; import com.allen_sauer.gwt.log.client.Log; +import com.google.common.base.Joiner; +import com.google.common.base.Splitter; import com.google.common.base.Strings; +import com.google.common.collect.Iterables; import com.google.gwt.core.client.JavaScriptObject; import com.google.gwt.dom.client.Document; import com.google.gwt.dom.client.NativeEvent; @@ -50,6 +53,7 @@ public native JavaScriptObject initCodeMirror(Element element) /*-{ var codeMirrorEditor = $wnd.CodeMirror.fromTextArea(element, { lineNumbers: true, lineWrapping: true, + disableSpellcheck: false, mode: "visibleSpace", value: element.value, onFocus: function() { @@ -77,6 +81,13 @@ public void setText(String text) { setCodeMirrorContent(text); } + else + { + // if we are not using code mirror, we will try to hide text area scroll bar. + Splitter splitter = Splitter.on("\n"); + Iterable split = splitter.split(text); + setVisibleLines(Iterables.size(split)); + } } @Override diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/view/EditorOptionsView.java b/zanata-war/src/main/java/org/zanata/webtrans/client/view/EditorOptionsView.java index 5b0feb1bfa..5a8da19274 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/view/EditorOptionsView.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/view/EditorOptionsView.java @@ -78,7 +78,7 @@ public class EditorOptionsView extends Composite implements EditorOptionsDisplay @UiField CheckBox showErrorChk; @UiField - CheckBox useCodeMirrorChk; // TODO this is disabled and invisible to user. If codemirror works fine then remove this option. + CheckBox useCodeMirrorChk; private Listener listener; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/view/EditorOptionsView.ui.xml b/zanata-war/src/main/java/org/zanata/webtrans/client/view/EditorOptionsView.ui.xml index 98f365076b..0e15f200c3 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/view/EditorOptionsView.ui.xml +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/view/EditorOptionsView.ui.xml @@ -91,7 +91,7 @@ Show System Errors - Use CodeMirror Editor + Use CodeMirror Editor diff --git a/zanata-war/src/test/java/org/zanata/webtrans/client/presenter/TransUnitsTablePresenterTest.java b/zanata-war/src/test/java/org/zanata/webtrans/client/presenter/TransUnitsTablePresenterTest.java index 707172e413..df2d7edd5d 100644 --- a/zanata-war/src/test/java/org/zanata/webtrans/client/presenter/TransUnitsTablePresenterTest.java +++ b/zanata-war/src/test/java/org/zanata/webtrans/client/presenter/TransUnitsTablePresenterTest.java @@ -461,7 +461,7 @@ public void canRefreshViewWithNoSearch() @Test public void onRefreshPageEvent() { - presenter.onRefreshPage(RefreshPageEvent.EVENT); + presenter.onRefreshPage(RefreshPageEvent.REFRESH_CODEMIRROR_EVENT); verify(display).delayRefresh(); } diff --git a/zanata-war/src/test/java/org/zanata/webtrans/client/presenter/TranslationEditorPresenterTest.java b/zanata-war/src/test/java/org/zanata/webtrans/client/presenter/TranslationEditorPresenterTest.java index 90ca185c42..ec89020f18 100644 --- a/zanata-war/src/test/java/org/zanata/webtrans/client/presenter/TranslationEditorPresenterTest.java +++ b/zanata-war/src/test/java/org/zanata/webtrans/client/presenter/TranslationEditorPresenterTest.java @@ -140,7 +140,7 @@ public void onRefreshCurrentPage() { presenter.refreshCurrentPage(); - verify(eventBus).fireEvent(RefreshPageEvent.EVENT); + verify(eventBus).fireEvent(RefreshPageEvent.REFRESH_CODEMIRROR_EVENT); } @Test