From fc087b0a4c2c1961fc8efaf85863c185c943086e Mon Sep 17 00:00:00 2001 From: Alex Eng Date: Wed, 14 Dec 2011 14:59:35 +1000 Subject: [PATCH] Implement 1 sec interval validation check --- .../editor/table/InlineTargetCellEditor.java | 46 +++++++++++-------- .../editor/table/TableEditorPresenter.java | 3 ++ .../table/TableEditorTableDefinition.java | 16 +++---- .../client/events/RunValidationEvent.java | 14 ++++++ .../presenter/ValidationDetailsPresenter.java | 4 +- .../client/ui/TransUnitDetailsPanel.ui.xml | 10 ++-- .../client/ui/ValidationMessagePanel.java | 13 ++++-- .../client/ui/ValidationMessagePanel.ui.xml | 14 +++--- .../client/validation/ValidationService.java | 8 ++-- .../client/view/ValidationDetailsView.java | 4 +- .../action/HtmlXmlTagValidation.java | 6 +-- 11 files changed, 87 insertions(+), 51 deletions(-) diff --git a/server/zanata-war/src/main/java/org/zanata/webtrans/client/editor/table/InlineTargetCellEditor.java b/server/zanata-war/src/main/java/org/zanata/webtrans/client/editor/table/InlineTargetCellEditor.java index e1d29d8069..566dd193ad 100644 --- a/server/zanata-war/src/main/java/org/zanata/webtrans/client/editor/table/InlineTargetCellEditor.java +++ b/server/zanata-war/src/main/java/org/zanata/webtrans/client/editor/table/InlineTargetCellEditor.java @@ -38,7 +38,6 @@ import com.allen_sauer.gwt.log.client.Log; import com.google.gwt.core.client.GWT; -import com.google.gwt.core.client.Scheduler; import com.google.gwt.event.dom.client.BlurEvent; import com.google.gwt.event.dom.client.BlurHandler; import com.google.gwt.event.dom.client.ClickEvent; @@ -47,6 +46,8 @@ import com.google.gwt.event.dom.client.FocusHandler; import com.google.gwt.event.dom.client.KeyDownEvent; import com.google.gwt.event.dom.client.KeyDownHandler; +import com.google.gwt.event.dom.client.KeyUpEvent; +import com.google.gwt.event.dom.client.KeyUpHandler; import com.google.gwt.event.logical.shared.ValueChangeEvent; import com.google.gwt.event.logical.shared.ValueChangeHandler; import com.google.gwt.gen2.table.client.CellEditor; @@ -167,27 +168,11 @@ public void onClick(ClickEvent event) private final EventBus eventBus; - private final int REFRESH_INTERVAL = 5000; // ms - - private Timer runValidationTimer = new Timer() - { - @Override - public void run() - { - eventBus.fireEvent(new RunValidationEvent(cellValue.getId(), cellValue.getSource(), textArea.getText())); - } - }; - - /** * Construct a new {@link InlineTargetCellEditor} with the specified images. */ public InlineTargetCellEditor(final NavigationMessages messages, CancelCallback callback, EditRowCallback rowCallback, final EventBus eventBus) { - runValidationTimer.scheduleRepeating(REFRESH_INTERVAL); - runValidationTimer.cancel(); - - final CheckKey checkKey = new CheckKeyImpl(CheckKeyImpl.Context.Edit); // Wrap contents in a table @@ -229,6 +214,32 @@ public void onFocus(FocusEvent event) } }); + final int DELAY_INTERVAL = 1000; // ms + final Timer runValidationTimer = new Timer() + { + @Override + public void run() + { + if (isEditing() && isOpened() && isFocused()) + { + eventBus.fireEvent(new RunValidationEvent(cellValue.getId(), cellValue.getSource(), textArea.getText(), false)); + } + } + }; + + textArea.addKeyUpHandler(new KeyUpHandler() + { + @Override + public void onKeyUp(KeyUpEvent event) + { + checkKey.init(event.getNativeEvent()); + if (checkKey.isUserTyping()) + { + runValidationTimer.schedule(DELAY_INTERVAL); + } + } + }); + // KeyDown is used to override browser event textArea.addKeyDownHandler(new KeyDownHandler() { @@ -278,7 +289,6 @@ else if (checkKey.isCloseEditorKey(isEscKeyCloseEditor)) } else if (checkKey.isUserTyping()) { - Log.info("user typing:" + textArea.getText()); autoSize(); } } diff --git a/server/zanata-war/src/main/java/org/zanata/webtrans/client/editor/table/TableEditorPresenter.java b/server/zanata-war/src/main/java/org/zanata/webtrans/client/editor/table/TableEditorPresenter.java index b59497d010..b3b5b56404 100644 --- a/server/zanata-war/src/main/java/org/zanata/webtrans/client/editor/table/TableEditorPresenter.java +++ b/server/zanata-war/src/main/java/org/zanata/webtrans/client/editor/table/TableEditorPresenter.java @@ -47,6 +47,7 @@ import org.zanata.webtrans.client.events.NotificationEvent; import org.zanata.webtrans.client.events.NotificationEvent.Severity; import org.zanata.webtrans.client.events.RedoFailureEvent; +import org.zanata.webtrans.client.events.RunValidationEvent; import org.zanata.webtrans.client.events.TransMemoryCopyEvent; import org.zanata.webtrans.client.events.TransMemoryCopyHandler; import org.zanata.webtrans.client.events.TransUnitEditEvent; @@ -284,6 +285,7 @@ public void onSelection(SelectionEvent event) { display.setTransUnitDetails(event.getSelectedItem()); display.setValidationMessageVisible(event.getSelectedItem().getId()); + display.getTargetCellEditor().savePendingChange(true); selectTransUnit(event.getSelectedItem()); } } @@ -336,6 +338,7 @@ public void onTransUnitUpdated(TransUnitUpdatedEvent event) { Log.info("selected TU updated; clear selection"); display.getTargetCellEditor().cancelEdit(); + eventBus.fireEvent(new RunValidationEvent(event.getTransUnit().getId(), event.getTransUnit().getSource(), event.getTransUnit().getTarget())); } final Integer rowOffset = getRowOffset(event.getTransUnit().getId()); diff --git a/server/zanata-war/src/main/java/org/zanata/webtrans/client/editor/table/TableEditorTableDefinition.java b/server/zanata-war/src/main/java/org/zanata/webtrans/client/editor/table/TableEditorTableDefinition.java index ea1c8f1369..8c17722a45 100644 --- a/server/zanata-war/src/main/java/org/zanata/webtrans/client/editor/table/TableEditorTableDefinition.java +++ b/server/zanata-war/src/main/java/org/zanata/webtrans/client/editor/table/TableEditorTableDefinition.java @@ -49,7 +49,6 @@ import com.google.gwt.user.client.ui.HasVerticalAlignment; import com.google.gwt.user.client.ui.Image; import com.google.gwt.user.client.ui.Label; -import com.google.gwt.user.client.ui.LayoutPanel; import com.google.gwt.user.client.ui.VerticalPanel; public class TableEditorTableDefinition extends DefaultTableDefinition @@ -60,7 +59,7 @@ public class TableEditorTableDefinition extends DefaultTableDefinition copyButtons; private boolean showingCopyButtons; private EventBus eventBus; @@ -149,7 +148,6 @@ public void setCellValue(TransUnit rowValue, TransUnit cellValue) public void renderRowValue(final TransUnit rowValue, ColumnDefinition columnDef, AbstractCellView view) { view.setStyleName("TableEditorCell TableEditorCell-Source"); - VerticalPanel panel = new VerticalPanel(); panel.setSize("100%", "100%"); @@ -169,14 +167,14 @@ public void onClick(ClickEvent event) }); - sourcePanel = new SourcePanel(rowValue, images, messages); + topSourcePanel = new SourcePanel(rowValue, images, messages); if (findMessage != null && !findMessage.isEmpty()) { - sourcePanel.highlightSearch(findMessage); + topSourcePanel.highlightSearch(findMessage); } - sourcePanel.getLabel().sinkEvents(Event.ONCLICK); - sourcePanel.getLabel().addClickHandler(new ClickHandler() + topSourcePanel.getLabel().sinkEvents(Event.ONCLICK); + topSourcePanel.getLabel().addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) @@ -189,10 +187,10 @@ public void onClick(ClickEvent event) }); - sourcePanel.add(copyButton); + topSourcePanel.add(copyButton); copyButtons.add(copyButton); - panel.add(sourcePanel); + panel.add(topSourcePanel); sourcePanelMap.put(rowValue.getId(), panel); view.setWidget(panel); diff --git a/server/zanata-war/src/main/java/org/zanata/webtrans/client/events/RunValidationEvent.java b/server/zanata-war/src/main/java/org/zanata/webtrans/client/events/RunValidationEvent.java index 29026367ea..a699aadeb4 100644 --- a/server/zanata-war/src/main/java/org/zanata/webtrans/client/events/RunValidationEvent.java +++ b/server/zanata-war/src/main/java/org/zanata/webtrans/client/events/RunValidationEvent.java @@ -48,6 +48,7 @@ public static Type getType() private String source, target; private TransUnitId id; + private boolean fireNotification = true; public RunValidationEvent(TransUnitId id, String source, String target) { @@ -56,6 +57,14 @@ public RunValidationEvent(TransUnitId id, String source, String target) this.target = target; } + public RunValidationEvent(TransUnitId id, String source, String target, boolean fireNotification) + { + this.id = id; + this.source = source; + this.target = target; + this.fireNotification = fireNotification; + } + @Override public Type getAssociatedType() { @@ -83,6 +92,11 @@ public TransUnitId getId() { return id; } + + public boolean isFireNotification() + { + return fireNotification; + } } diff --git a/server/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/ValidationDetailsPresenter.java b/server/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/ValidationDetailsPresenter.java index 3404bd00c0..72848b7dd1 100644 --- a/server/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/ValidationDetailsPresenter.java +++ b/server/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/ValidationDetailsPresenter.java @@ -43,7 +43,7 @@ public class ValidationDetailsPresenter extends WidgetPresenter - + - + diff --git a/server/zanata-war/src/main/java/org/zanata/webtrans/client/ui/ValidationMessagePanel.java b/server/zanata-war/src/main/java/org/zanata/webtrans/client/ui/ValidationMessagePanel.java index a45e53a1b9..da0f782f15 100644 --- a/server/zanata-war/src/main/java/org/zanata/webtrans/client/ui/ValidationMessagePanel.java +++ b/server/zanata-war/src/main/java/org/zanata/webtrans/client/ui/ValidationMessagePanel.java @@ -27,6 +27,7 @@ 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.FlowPanel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.VerticalPanel; import com.google.gwt.user.client.ui.Widget; @@ -51,7 +52,9 @@ interface Styles extends CssResource Label headerLabel; @UiField - VerticalPanel contentPanel; + FlowPanel contentPanel; + + VerticalPanel contents; @UiField Styles style; @@ -62,6 +65,7 @@ interface Styles extends CssResource public ValidationMessagePanel(String header, boolean collapsible) { + contents = new VerticalPanel(); initWidget(uiBinder.createAndBindUi(this)); setCollapsible(collapsible); headerLabel.setText(header); @@ -72,10 +76,13 @@ public void setContent(List errors) { this.errors = errors; contentPanel.clear(); + contents.clear(); + for (String error : errors) { - contentPanel.add(new Label(error)); + contents.add(new Label(error)); } + contentPanel.add(contents); expand(); } @@ -97,7 +104,7 @@ else if (contentPanel.isVisible()) public void expand() { - if (contentPanel.getWidgetCount() > 0) + if (contents.getWidgetCount() > 0) { contentPanel.setHeight("95px"); contentPanel.setVisible(true); diff --git a/server/zanata-war/src/main/java/org/zanata/webtrans/client/ui/ValidationMessagePanel.ui.xml b/server/zanata-war/src/main/java/org/zanata/webtrans/client/ui/ValidationMessagePanel.ui.xml index af06e0c414..12981325f0 100644 --- a/server/zanata-war/src/main/java/org/zanata/webtrans/client/ui/ValidationMessagePanel.ui.xml +++ b/server/zanata-war/src/main/java/org/zanata/webtrans/client/ui/ValidationMessagePanel.ui.xml @@ -30,21 +30,23 @@ } .content { - border-bottom:1px solid #E0E8EE; - border-left:1px solid #E0E8EE; - border-right:1px solid #E0E8EE; height:100%; color:#686868; font-style:normal; - width:100%; + } + + .scrollSection { + border-bottom:1px solid #E0E8EE; + border-left:1px solid #E0E8EE; + border-right:1px solid #E0E8EE; } - - + + diff --git a/server/zanata-war/src/main/java/org/zanata/webtrans/client/validation/ValidationService.java b/server/zanata-war/src/main/java/org/zanata/webtrans/client/validation/ValidationService.java index 9bcf08f533..c6f7d8d61a 100644 --- a/server/zanata-war/src/main/java/org/zanata/webtrans/client/validation/ValidationService.java +++ b/server/zanata-war/src/main/java/org/zanata/webtrans/client/validation/ValidationService.java @@ -65,7 +65,7 @@ public ValidationService(final EventBus eventBus, final TableEditorMessages mess * * @param tu */ - public void execute(TransUnitId id, String source, String target) + public void execute(TransUnitId id, String source, String target, boolean fireNotification) { List errors = new ArrayList(); @@ -80,7 +80,7 @@ public void execute(TransUnitId id, String source, String target) errors.addAll(action.getError()); } } - fireErrorMessage(id, errors); + fireErrorMessage(id, errors, fireNotification); } /** @@ -117,9 +117,9 @@ public void clearAllMessage() } } - public void fireErrorMessage(TransUnitId id, List errors) + public void fireErrorMessage(TransUnitId id, List errors, boolean fireNotification) { - if (!errors.isEmpty()) + if (!errors.isEmpty() && fireNotification) { eventBus.fireEvent(new NotificationEvent(Severity.Info, messages.notifyValidationError())); } diff --git a/server/zanata-war/src/main/java/org/zanata/webtrans/client/view/ValidationDetailsView.java b/server/zanata-war/src/main/java/org/zanata/webtrans/client/view/ValidationDetailsView.java index 78b1de8579..2fa7ed6e4f 100644 --- a/server/zanata-war/src/main/java/org/zanata/webtrans/client/view/ValidationDetailsView.java +++ b/server/zanata-war/src/main/java/org/zanata/webtrans/client/view/ValidationDetailsView.java @@ -89,9 +89,9 @@ public Widget asWidget() } @Override - public void validate(TransUnitId id, String source, String target) + public void validate(TransUnitId id, String source, String target, boolean fireNotification) { - validationService.execute(id, source, target); + validationService.execute(id, source, target, fireNotification); } @Override diff --git a/server/zanata-war/src/main/java/org/zanata/webtrans/shared/validation/action/HtmlXmlTagValidation.java b/server/zanata-war/src/main/java/org/zanata/webtrans/shared/validation/action/HtmlXmlTagValidation.java index 1e6a64ed94..f5bf836e0b 100644 --- a/server/zanata-war/src/main/java/org/zanata/webtrans/shared/validation/action/HtmlXmlTagValidation.java +++ b/server/zanata-war/src/main/java/org/zanata/webtrans/shared/validation/action/HtmlXmlTagValidation.java @@ -44,14 +44,14 @@ public HtmlXmlTagValidation(String id, String description) @Override public void validate(String source, String target) { - Log.info("Source:" + source); - Log.info("target:" + target); + Log.debug("Source:" + source); + Log.debug("target:" + target); MatchResult result = regExp.exec(source); while (result != null) { String node = result.getGroup(0); - Log.info("Found Node:" + node); + Log.debug("Found Node:" + node); if (!target.contains(node)) { addError(getId() + ":" + node + " not found in target");