Skip to content
This repository has been archived by the owner on Nov 9, 2017. It is now read-only.

Commit

Permalink
Merge pull request #56 from zanata/rhbz983782
Browse files Browse the repository at this point in the history
Filtering that drops the last page causes unexpected behaviour
  • Loading branch information
davidmason committed Jul 19, 2013
2 parents 6778a62 + 3799cde commit 0e26920
Show file tree
Hide file tree
Showing 9 changed files with 238 additions and 140 deletions.
Expand Up @@ -31,14 +31,10 @@
import org.zanata.webtrans.client.events.RefreshPageEvent;
import org.zanata.webtrans.client.view.TranslationEditorDisplay;

import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.inject.Inject;

public class TranslationEditorPresenter extends WidgetPresenter<TranslationEditorDisplay> implements PageChangeEventHandler, PageCountChangeEventHandler, TranslationEditorDisplay.Listener
{


private final TransUnitNavigationPresenter transUnitNavigationPresenter;
private final TransFilterPresenter transFilterPresenter;
private final TransUnitsTablePresenter transUnitsTablePresenter;
Expand Down Expand Up @@ -68,14 +64,6 @@ protected void onBind()
transUnitNavigationPresenter.bind();
display.setTransUnitNavigation(transUnitNavigationPresenter.getDisplay().asWidget());

registerHandler(display.getPageNavigation().addValueChangeHandler(new ValueChangeHandler<Integer>()
{
@Override
public void onValueChange(ValueChangeEvent<Integer> event)
{
transUnitsTablePresenter.goToPage(event.getValue());
}
}));
registerHandler(eventBus.addHandler(PageChangeEvent.TYPE, this));
registerHandler(eventBus.addHandler(PageCountChangeEvent.TYPE, this));
}
Expand All @@ -91,7 +79,7 @@ public void onPageCountChange(PageCountChangeEvent event)
{
display.getPageNavigation().setPageCount(event.getPageCount());
}

@Override
public void refreshCurrentPage()
{
Expand Down Expand Up @@ -134,8 +122,15 @@ public void onPagerBlurred()
editorKeyShortcuts.enableEditContext();
}

@Override
public void onPagerValueChanged(Integer pageNumber)
{
transUnitsTablePresenter.goToPage(pageNumber);
}

public void setReadOnly(boolean isReadOnly)
{
display.getResizeButton().setVisible(isReadOnly);
}

}
Expand Up @@ -144,7 +144,7 @@ public void onSuccess(GetTransUnitListResult result)
navigationStateHolder.init(result.getNavigationIndex().getTransIdStateList(), result.getNavigationIndex().getIdIndexList());
eventBus.fireEvent(new PageCountChangeEvent(navigationStateHolder.getPageCount()));
}
navigationStateHolder.updateCurrentPage(result.getTargetPage());
navigationStateHolder.updateCurrentPage(result.getTargetPageIndex());

if (!units.isEmpty())
{
Expand All @@ -153,7 +153,7 @@ public void onSuccess(GetTransUnitListResult result)
// in case there is pending save (as fuzzy) happening, we do not want to trigger another pending save
eventBus.fireEvent(new TableRowSelectedEvent(selectedId).setSuppressSavePending(true));
}
eventBus.fireEvent(new PageChangeEvent(result.getTargetPage()));
eventBus.fireEvent(new PageChangeEvent(result.getTargetPageIndex()));
highlightSearch();

// run validation on TransUnit and display error message
Expand Down Expand Up @@ -202,27 +202,27 @@ public void onNavTransUnit(NavTransUnitEvent event)
TransUnitId targetId;
switch (event.getRowType())
{
case PrevEntry:
targetId = navigationStateHolder.getPrevId();
break;
case NextEntry:
targetId = navigationStateHolder.getNextId();
break;
case PrevState:
targetId = navigationStateHolder.getPreviousStateId();
break;
case NextState:
targetId = navigationStateHolder.getNextStateId();
break;
case FirstEntry:
targetId = navigationStateHolder.getFirstId();
break;
case LastEntry:
targetId = navigationStateHolder.getLastId();
break;
default:
Log.warn("ignore unknown navigation type:" + event.getRowType());
return;
case PrevEntry:
targetId = navigationStateHolder.getPrevId();
break;
case NextEntry:
targetId = navigationStateHolder.getNextId();
break;
case PrevState:
targetId = navigationStateHolder.getPreviousStateId();
break;
case NextState:
targetId = navigationStateHolder.getNextStateId();
break;
case FirstEntry:
targetId = navigationStateHolder.getFirstId();
break;
case LastEntry:
targetId = navigationStateHolder.getLastId();
break;
default:
Log.warn("ignore unknown navigation type:" + event.getRowType());
return;
}
int targetPage = navigationStateHolder.getTargetPage(targetId);
Log.info("target page : [" + targetPage + "] target TU id: " + targetId);
Expand All @@ -249,7 +249,7 @@ private void loadPageAndGoToRow(int pageIndex, TransUnitId transUnitId)
@Override
public void onTransUnitUpdated(TransUnitUpdatedEvent event)
{
if(contextHolder.isContextInitialized())
if (contextHolder.isContextInitialized())
{
if (Objects.equal(event.getUpdateInfo().getDocumentId(), contextHolder.getContext().getDocument().getId()))
{
Expand Down
107 changes: 67 additions & 40 deletions zanata-war/src/main/java/org/zanata/webtrans/client/ui/Pager.java
@@ -1,3 +1,23 @@
/*
* Copyright 2013, Red Hat, Inc. and individual contributors as indicated by the
* @author tags. See the copyright.txt file in the distribution for a full
* listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This software is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this software; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF
* site: http://www.fsf.org.
*/
package org.zanata.webtrans.client.ui;

import org.zanata.webtrans.client.resources.Resources;
Expand All @@ -13,7 +33,6 @@
import com.google.gwt.event.dom.client.FocusHandler;
import com.google.gwt.event.dom.client.KeyCodes;
import com.google.gwt.event.dom.client.KeyDownEvent;
import com.google.gwt.event.dom.client.KeyDownHandler;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.event.shared.HandlerRegistration;
Expand All @@ -27,8 +46,13 @@
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Widget;

/**
* @author Alex Eng <a href="mailto:aeng@redhat.com">aeng@redhat.com</a>
*
*/
public class Pager extends Composite implements HasPager
{
public static final int PAGECOUNT_UNKNOWN = -1;

private static PagerUiBinder uiBinder = GWT.create(PagerUiBinder.class);

Expand Down Expand Up @@ -59,11 +83,10 @@ interface Styles extends CssResource
Styles style;

private int pageCount = PAGECOUNT_UNKNOWN;
private int minPageCount = 0;
private int currentPage;
private boolean isFocused;

public static final int PAGECOUNT_UNKNOWN = -1;

public Pager(final WebTransMessages messages, final Resources resources)
{
this.resources = resources;
Expand All @@ -88,28 +111,40 @@ public void onGotoPageBlur(BlurEvent event)
isFocused = false;
}

@Override
protected void onLoad()
@UiHandler("gotoPage")
public void onGotoPageKeyDown(KeyDownEvent event)
{
super.onLoad();
gotoPage.addKeyDownHandler(new KeyDownHandler()
if (event.getNativeKeyCode() == KeyCodes.KEY_ENTER)
{
@Override
public void onKeyDown(KeyDownEvent event)
try
{
if (event.getNativeKeyCode() == KeyCodes.KEY_ENTER)
{
try
{
int newValue = Integer.parseInt(gotoPage.getText());
setValue(newValue);
}
catch (NumberFormatException nfe)
{
}
}
setValue(getCorrectedGotoPage());
}
catch (NumberFormatException nfe)
{
Log.error("Invalid page number entered");
}
});
}
}

private int getCorrectedGotoPage()
{
int page = Integer.parseInt(gotoPage.getText());
if (page < minPageCount)
{
page = minPageCount;
}
else if (page > pageCount)
{
page = pageCount;
}
return page;
}

@Override
protected void onLoad()
{
super.onLoad();

firstPage.addClickHandler(clickHandler);
lastPage.addClickHandler(clickHandler);
Expand All @@ -122,8 +157,8 @@ private void refresh()
{
String page = pageCount == PAGECOUNT_UNKNOWN ? "" : "of " + pageCount;
pageCountLabel.setText(page);
setEnabled(firstPage, currentPage != 1);
setEnabled(prevPage, currentPage != 1);
setEnabled(firstPage, currentPage > minPageCount);
setEnabled(prevPage, currentPage > minPageCount);
setEnabled(nextPage, currentPage != pageCount);
setEnabled(lastPage, currentPage != pageCount && pageCount != PAGECOUNT_UNKNOWN);

Expand All @@ -134,6 +169,7 @@ private void refresh()
public void setPageCount(int pageCount)
{
this.pageCount = pageCount;
this.minPageCount = pageCount <= 0 ? 0 : 1;
refresh();
}

Expand All @@ -158,7 +194,7 @@ public void setValue(Integer value)
@Override
public void setValue(Integer value, boolean fireEvents)
{
if (value != this.currentPage && (value > 0 && value <= pageCount))
if (value >= minPageCount && value <= pageCount)
{
this.currentPage = value;
if (fireEvents)
Expand All @@ -177,42 +213,33 @@ public HandlerRegistration addValueChangeHandler(ValueChangeHandler<Integer> han

private final ClickHandler clickHandler = new ClickHandler()
{

@Override
public void onClick(ClickEvent event)
{
if (event.getSource() == firstPage)
Widget clickedButton = (Widget) event.getSource();
if (isButtonEnabled(clickedButton))
{
if (isButtonEnabled(firstPage))
if (clickedButton == firstPage)
{
setValue(1);
}
}
else if (event.getSource() == lastPage)
{
if (isButtonEnabled(lastPage))
else if (clickedButton == lastPage)
{
setValue(pageCount);
}
}
else if (event.getSource() == nextPage)
{
if (isButtonEnabled(nextPage))
else if (clickedButton == nextPage)
{
setValue(currentPage + 1);
}
}
else if (event.getSource() == prevPage)
{
if (isButtonEnabled(prevPage))
else if (clickedButton == prevPage)
{
setValue(currentPage - 1);
}
}
}
};

private boolean isButtonEnabled(InlineLabel button)
private boolean isButtonEnabled(Widget button)
{
return button.getStyleName().contains(style.enabled());
}
Expand Down
Expand Up @@ -6,11 +6,9 @@

import com.google.gwt.user.client.ui.HasVisibility;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.Widget;


/**
* @author aeng
* @author Alex Eng <a href="mailto:aeng@redhat.com">aeng@redhat.com</a>
*
*/
public interface TranslationEditorDisplay extends WidgetDisplay
Expand All @@ -24,7 +22,7 @@ public interface TranslationEditorDisplay extends WidgetDisplay
HasPager getPageNavigation();

boolean isPagerFocused();

void setListener(Listener listener);

boolean getAndToggleResizeButton();
Expand All @@ -38,6 +36,8 @@ interface Listener
void onPagerFocused();

void onPagerBlurred();

void onPagerValueChanged(Integer pageNumber);
}

HasVisibility getResizeButton();
Expand Down

0 comments on commit 0e26920

Please sign in to comment.