From 8ac566626793f20263c2a8d448862db73b108a6b Mon Sep 17 00:00:00 2001 From: David Mason Date: Thu, 17 May 2012 17:02:03 +1000 Subject: [PATCH] use history properly for source-and-target search, enable 'search in document' link from project-wide search --- .../editor/filter/TransFilterPresenter.java | 37 +++++++++++++++- .../client/editor/filter/TransFilterView.java | 43 ++++++++++++++++--- .../editor/filter/TransFilterView.ui.xml | 2 +- .../presenter/TranslationEditorPresenter.java | 2 +- .../client/resources/WebTransMessages.java | 6 +++ .../client/view/SearchResultsView.java | 14 +++--- .../zanata/webtrans/public/Application.css | 16 +++++++ 7 files changed, 101 insertions(+), 19 deletions(-) diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/editor/filter/TransFilterPresenter.java b/zanata-war/src/main/java/org/zanata/webtrans/client/editor/filter/TransFilterPresenter.java index 33d608dcd3..96f389c623 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/editor/filter/TransFilterPresenter.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/editor/filter/TransFilterPresenter.java @@ -25,6 +25,8 @@ import net.customware.gwt.presenter.client.widget.WidgetPresenter; import org.zanata.webtrans.client.events.FindMessageEvent; +import org.zanata.webtrans.client.history.History; +import org.zanata.webtrans.client.history.HistoryToken; import com.google.gwt.event.logical.shared.ValueChangeEvent; import com.google.gwt.event.logical.shared.ValueChangeHandler; @@ -40,10 +42,15 @@ public interface Display extends WidgetDisplay boolean isFocused(); } + private final History history; + private HistoryToken currentState; + @Inject - public TransFilterPresenter(final Display display, final EventBus eventBus) + public TransFilterPresenter(final Display display, final EventBus eventBus, final History history) { super(display, eventBus); + this.history = history; + currentState = new HistoryToken();; } @Override @@ -55,10 +62,31 @@ protected void onBind() @Override public void onValueChange(ValueChangeEvent event) { - eventBus.fireEvent(new FindMessageEvent(event.getValue())); + if (event.getValue() != currentState.getSearchText()) + { + HistoryToken newToken = history.getHistoryToken(); + newToken.setSearchText(event.getValue()); + history.newItem(newToken); + } } }); + registerHandler(history.addValueChangeHandler(new ValueChangeHandler() + { + + @Override + public void onValueChange(ValueChangeEvent event) + { + HistoryToken token = history.getHistoryToken(); + if (token.getSearchText() != currentState.getSearchText()) + { + eventBus.fireEvent(new FindMessageEvent(token.getSearchText())); + display.getFilterText().setValue(token.getSearchText(), false); + } + currentState = token; + } + })); + } @Override @@ -75,4 +103,9 @@ public void onRevealDisplay() } + public boolean isFocused() + { + return display.isFocused(); + } + } diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/editor/filter/TransFilterView.java b/zanata-war/src/main/java/org/zanata/webtrans/client/editor/filter/TransFilterView.java index 8280d06e45..1125fef2ae 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/editor/filter/TransFilterView.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/editor/filter/TransFilterView.java @@ -22,11 +22,13 @@ import org.zanata.webtrans.client.resources.Resources; import org.zanata.webtrans.client.resources.UiMessages; -import org.zanata.webtrans.client.ui.ClearableTextBox; import com.google.gwt.core.client.GWT; +import com.google.gwt.event.dom.client.BlurEvent; +import com.google.gwt.event.dom.client.FocusEvent; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.uibinder.client.UiHandler; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.TextBox; import com.google.gwt.user.client.ui.Widget; @@ -41,15 +43,19 @@ interface TransFilterViewUiBinder extends UiBinder { } + // TODO deal with showing greyed-out text - @UiField(provided = true) - ClearableTextBox filterTextBox; + @UiField + TextBox filterTextBox; + + private String hintMessage; + + private boolean focused = false; @Inject public TransFilterView(final Resources resources, final TransFilterMessages messages, final UiMessages uiMessages) { - this.filterTextBox = new ClearableTextBox(resources, uiMessages); - filterTextBox.setEmptyText(messages.findSourceOrTargetString()); + hintMessage = messages.findSourceOrTargetString(); initWidget(uiBinder.createAndBindUi(this)); getElement().setId("TransFilterView"); } @@ -63,13 +69,36 @@ public Widget asWidget() @Override public TextBox getFilterText() { - return filterTextBox.getTextBox(); + return filterTextBox; + } + + @UiHandler("filterTextBox") + public void onFilterTextBoxFocus(FocusEvent event) + { + focused = true; + if (filterTextBox.getStyleName().contains("transFilterTextBoxEmpty")) + { + filterTextBox.setValue(""); + filterTextBox.removeStyleName("transFilterTextBoxEmpty"); + } + } + + @UiHandler("filterTextBox") + public void onFilterTextBoxBlur(BlurEvent event) + { + focused = false; + if (filterTextBox.getText().isEmpty()) + { + filterTextBox.setValue(""); + filterTextBox.addStyleName("transFilterTextBoxEmpty"); + filterTextBox.setValue(hintMessage); + } } @Override public boolean isFocused() { - return filterTextBox.isFocused(); + return focused; } } diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/editor/filter/TransFilterView.ui.xml b/zanata-war/src/main/java/org/zanata/webtrans/client/editor/filter/TransFilterView.ui.xml index 982cbc1c60..3ee5e08f70 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/editor/filter/TransFilterView.ui.xml +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/editor/filter/TransFilterView.ui.xml @@ -5,7 +5,7 @@ - + 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 dd2aaf4775..f17cc59b03 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 @@ -159,7 +159,7 @@ public void setCancelButtonFocused(boolean isCancelButtonFocused) public boolean isTransFilterFocused() { - return transFilterPresenter.getDisplay().isFocused(); + return transFilterPresenter.isFocused(); } public void gotoCurrentRow() 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 3b77cf0eb9..93617f0c22 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 @@ -151,6 +151,12 @@ public interface WebTransMessages extends Messages @DefaultMessage("Show this document in editor view") String viewDocInEditorDetailed(); + @DefaultMessage("Search document in editor") + String searchDocInEditor(); + + @DefaultMessage("Show this document in the editor with the current search active") + String searchDocInEditorDetailed(); + @DefaultMessage("Index") String rowIndex(); diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/view/SearchResultsView.java b/zanata-war/src/main/java/org/zanata/webtrans/client/view/SearchResultsView.java index 272b208448..0b0737894d 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/view/SearchResultsView.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/view/SearchResultsView.java @@ -231,14 +231,12 @@ public void addDocumentLabel(String docName, ClickHandler viewDocClickHandler, C selectWholeDocCheckBox.addValueChangeHandler(selectAllHandler); docHeading.add(selectWholeDocCheckBox); - // TODO disabled until source-and-target search in editor responds properly to history - // TODO localizable strings -// InlineLabel searchDocLabel = new InlineLabel("Search document in editor"); -// searchDocLabel.setTitle("Show this document in the editor with the current search active"); -// searchDocLabel.addClickHandler(searchDocClickHandler); -// searchDocLabel.addStyleName("linkLabel"); -// searchDocLabel.addStyleName("projectWideSearchResultsDocumentLink"); -// docHeading.add(searchDocLabel); + InlineLabel searchDocLabel = new InlineLabel(messages.searchDocInEditor()); + searchDocLabel.setTitle(messages.searchDocInEditorDetailed()); + searchDocLabel.addClickHandler(searchDocClickHandler); + searchDocLabel.addStyleName("linkLabel"); + searchDocLabel.addStyleName("projectWideSearchResultsDocumentLink"); + docHeading.add(searchDocLabel); InlineLabel showDocLabel = new InlineLabel(messages.viewDocInEditor()); showDocLabel.setTitle(messages.viewDocInEditorDetailed()); diff --git a/zanata-war/src/main/resources/org/zanata/webtrans/public/Application.css b/zanata-war/src/main/resources/org/zanata/webtrans/public/Application.css index 0c7be6c0b5..dab461084e 100644 --- a/zanata-war/src/main/resources/org/zanata/webtrans/public/Application.css +++ b/zanata-war/src/main/resources/org/zanata/webtrans/public/Application.css @@ -443,6 +443,22 @@ tr.ApprovedStateDecoration td.TableEditorCell-Target .TableEditorContent-Edit width: 99%; } +.transFilterTextBox +{ + margin: 0px; + font-size: 1.15em; + border: 2px solid lightgrey; + border-radius: 6px; + -moz-border-radius: 6px; + padding-right: 4px; +} + +.transFilterTextBoxEmpty +{ + color: grey; + font-style: italic; +} + /* Search-replace page * TODO arrange for these to share styles with editor table */