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

Commit

Permalink
rhbz844820 - fix save as approved and navigate causes double saving
Browse files Browse the repository at this point in the history
  • Loading branch information
Patrick Huang committed Aug 23, 2012
1 parent d1b2867 commit f9f25bf
Show file tree
Hide file tree
Showing 9 changed files with 43 additions and 33 deletions.
Expand Up @@ -72,6 +72,8 @@ interface Listener

void setFindMessage(String findMessage);

List<String> getCachedTargets();

ArrayList<String> getNewTargets();

boolean isEditing();
Expand Down
Expand Up @@ -55,7 +55,6 @@
import org.zanata.webtrans.client.keys.KeyShortcut.KeyEvent;
import org.zanata.webtrans.client.keys.Keys;
import org.zanata.webtrans.client.keys.ShortcutContext;
import org.zanata.webtrans.client.keys.SurplusKeyListener;
import org.zanata.webtrans.client.presenter.KeyShortcutPresenter;
import org.zanata.webtrans.client.presenter.SourceContentsPresenter;
import org.zanata.webtrans.client.presenter.TranslationHistoryPresenter;
Expand Down Expand Up @@ -216,6 +215,7 @@ public void onKeyShortcut(KeyShortcutEvent event)
else
{
currentEditorIndex = 0;
savePendingChangesIfApplicable();
eventBus.fireEvent(new NavTransUnitEvent(NextEntry));
}
}
Expand All @@ -234,6 +234,7 @@ public void onKeyShortcut(KeyShortcutEvent event)
else
{
currentEditorIndex = LAST_INDEX;
savePendingChangesIfApplicable();
eventBus.fireEvent(new NavTransUnitEvent(PrevEntry));
}
}
Expand All @@ -248,6 +249,7 @@ public void onKeyShortcut(KeyShortcutEvent event)
{
if (isModalNavEnabled)
{
savePendingChangesIfApplicable();
eventBus.fireEvent(new NavTransUnitEvent(NextState));
}
}
Expand All @@ -263,6 +265,7 @@ public void onKeyShortcut(KeyShortcutEvent event)
{
if (isModalNavEnabled)
{
savePendingChangesIfApplicable();
eventBus.fireEvent(new NavTransUnitEvent(PrevState));
}
}
Expand Down Expand Up @@ -348,6 +351,19 @@ private void bindEventHandlers()
eventBus.addHandler(WorkspaceContextUpdateEvent.getType(), this);
}

public void savePendingChangesIfApplicable()
{
if (currentEditorContentHasChanged())
{
eventBus.fireEvent(new TransUnitSaveEvent(getNewTargets(), ContentState.NeedReview, currentTransUnitId, display.getVerNum()));
}
}

private boolean currentEditorContentHasChanged()
{
return display != null && !Objects.equal(display.getCachedTargets(), display.getNewTargets());
}

private ToggleEditor getCurrentEditor()
{
return currentEditors.get(currentEditorIndex);
Expand Down
Expand Up @@ -76,6 +76,7 @@ interface Binder extends UiBinder<VerticalPanel, TargetContentsView>
private ArrayList<ToggleEditor> editors;
private Listener listener;
private Integer verNum;
private List<String> targets;

public TargetContentsView()
{
Expand Down Expand Up @@ -128,7 +129,7 @@ public void postUndoSuccess()
public void setValue(TransUnit transUnit)
{
verNum = transUnit.getVerNum();
List<String> targets = transUnit.getTargets();
targets = transUnit.getTargets();
editors.clear();
if (targets == null || targets.size() <= 0)
{
Expand Down Expand Up @@ -211,6 +212,12 @@ public ArrayList<String> getNewTargets()
return result;
}

@Override
public List<String> getCachedTargets()
{
return targets;
}

@Override
public boolean isEditing()
{
Expand Down
Expand Up @@ -87,12 +87,7 @@ public boolean equals(Object o)
if (o == null || getClass() != o.getClass()) return false;

TransUnitSaveEvent that = (TransUnitSaveEvent) o;
// @formatter:off
return Objects.equal(transUnitId, that.transUnitId)
&& Objects.equal(verNum, that.verNum)
&& Objects.equal(status, that.status)
&& Objects.equal(targets, that.targets);
// @formatter:on
return Objects.equal(transUnitId, that.transUnitId) && Objects.equal(verNum, that.verNum);
}

@Override
Expand Down
Expand Up @@ -141,14 +141,13 @@ public void onTransUnitSelected(TransUnitSelectionEvent event)

public void goToPage(int pageNumber)
{
pageModel.savePendingChangeIfApplicable(targetContentsPresenter.getNewTargets());
targetContentsPresenter.savePendingChangesIfApplicable();
navigationController.gotoPage(pageNumber - 1, false);
}

@Override
public void onNavTransUnit(NavTransUnitEvent event)
{
pageModel.savePendingChangeIfApplicable(targetContentsPresenter.getNewTargets());
navigationController.navigateTo(event.getRowType());
}

Expand Down Expand Up @@ -267,7 +266,7 @@ public void onRowSelected(int rowIndex)
{
if (pageModel.getCurrentRow() != rowIndex)
{
pageModel.savePendingChangeIfApplicable(targetContentsPresenter.getNewTargets());
targetContentsPresenter.savePendingChangesIfApplicable();
navigationController.selectByRowIndex(rowIndex);
}
}
Expand Down
Expand Up @@ -24,6 +24,7 @@
import net.customware.gwt.presenter.client.widget.WidgetDisplay;
import net.customware.gwt.presenter.client.widget.WidgetPresenter;

import org.zanata.webtrans.client.editor.table.TargetContentsPresenter;
import org.zanata.webtrans.client.events.NavTransUnitEvent;
import org.zanata.webtrans.client.events.NavTransUnitEvent.NavigationType;
import org.zanata.webtrans.client.events.EnableModalNavigationEvent;
Expand All @@ -43,6 +44,7 @@ public class TransUnitNavigationPresenter extends WidgetPresenter<TransUnitNavig
{

private UserConfigHolder configHolder;
private final TargetContentsPresenter targetContentsPresenter;

public interface Display extends WidgetDisplay
{
Expand All @@ -64,10 +66,11 @@ public interface Display extends WidgetDisplay
}

@Inject
public TransUnitNavigationPresenter(Display display, EventBus eventBus, UserConfigHolder configHolder)
public TransUnitNavigationPresenter(Display display, EventBus eventBus, UserConfigHolder configHolder, TargetContentsPresenter targetContentsPresenter)
{
super(display, eventBus);
this.configHolder = configHolder;
this.targetContentsPresenter = targetContentsPresenter;
}

@Override
Expand All @@ -78,6 +81,7 @@ protected void onBind()
@Override
public void onClick(ClickEvent event)
{
targetContentsPresenter.savePendingChangesIfApplicable();
fireEvent(new NavTransUnitEvent(NavigationType.PrevEntry));
}
});
Expand All @@ -87,6 +91,7 @@ public void onClick(ClickEvent event)
@Override
public void onClick(ClickEvent event)
{
targetContentsPresenter.savePendingChangesIfApplicable();
fireEvent(new NavTransUnitEvent(NavigationType.NextEntry));
}
});
Expand All @@ -96,6 +101,7 @@ public void onClick(ClickEvent event)
@Override
public void onClick(ClickEvent event)
{
targetContentsPresenter.savePendingChangesIfApplicable();
fireEvent(new NavTransUnitEvent(NavigationType.FirstEntry));
}
});
Expand All @@ -105,6 +111,7 @@ public void onClick(ClickEvent event)
@Override
public void onClick(ClickEvent event)
{
targetContentsPresenter.savePendingChangesIfApplicable();
fireEvent(new NavTransUnitEvent(NavigationType.LastEntry));
}
});
Expand All @@ -114,6 +121,7 @@ public void onClick(ClickEvent event)
@Override
public void onClick(ClickEvent event)
{
targetContentsPresenter.savePendingChangesIfApplicable();
fireEvent(new NavTransUnitEvent(NavigationType.PrevState));
}
});
Expand All @@ -123,6 +131,7 @@ public void onClick(ClickEvent event)
@Override
public void onClick(ClickEvent event)
{
targetContentsPresenter.savePendingChangesIfApplicable();
fireEvent(new NavTransUnitEvent(NavigationType.NextState));
}
});
Expand Down Expand Up @@ -150,7 +159,6 @@ public void onEnable(EnableModalNavigationEvent event)
@Override
public HandlerRegistration addNavTransUnitHandler(NavTransUnitHandler handler)
{
// TODO Auto-generated method stub
return eventBus.addHandler(NavTransUnitEvent.getType(), handler);
}

Expand Down
Expand Up @@ -263,6 +263,7 @@ public void onValueChange(ValueChangeEvent<Boolean> event)
public void onKeyShortcut(KeyShortcutEvent event)
{
// translationEditorPresenter.gotoPrevRow(false);
targetContentsPresenter.savePendingChangesIfApplicable();
eventBus.fireEvent(new NavTransUnitEvent(NavTransUnitEvent.NavigationType.PrevEntry));
}
};
Expand All @@ -273,6 +274,7 @@ public void onKeyShortcut(KeyShortcutEvent event)
public void onKeyShortcut(KeyShortcutEvent event)
{
// translationEditorPresenter.gotoNextRow(false);
targetContentsPresenter.savePendingChangesIfApplicable();
eventBus.fireEvent(new NavTransUnitEvent(NavTransUnitEvent.NavigationType.NextEntry));
}
};
Expand Down Expand Up @@ -317,7 +319,7 @@ protected void onUnbind()

public void saveEditorPendingChange()
{
pageModel.savePendingChangeIfApplicable(targetContentsPresenter.getNewTargets());
targetContentsPresenter.savePendingChangesIfApplicable();
}

/**
Expand Down
Expand Up @@ -28,8 +28,6 @@ public interface SinglePageDataModel

int findIndexById(TransUnitId id);

void savePendingChangeIfApplicable(ArrayList<String> newTargets);

TransUnit getByIdOrNull(TransUnitId transUnitId);

List<TransUnit> getData();
Expand Down
Expand Up @@ -3,7 +3,6 @@
import java.util.ArrayList;
import java.util.List;

import org.zanata.webtrans.client.events.TransUnitSaveEvent;
import org.zanata.webtrans.client.events.TransUnitSelectionEvent;
import org.zanata.webtrans.shared.auth.EditorClientId;
import org.zanata.webtrans.shared.model.TransUnit;
Expand Down Expand Up @@ -47,17 +46,6 @@ public void setSelected(int rowIndex)
}
}

@Override
public void savePendingChangeIfApplicable(ArrayList<String> newTargets)
{
TransUnit currentSelection = getSelectedOrNull();
if (hasPendingChange(newTargets, currentSelection))
{
Log.info("saving pending change:" + currentSelection.getTargets() + " new:" + newTargets);
eventBus.fireEvent(new TransUnitSaveEvent(newTargets, currentSelection.getStatus(), currentSelection.getId(), currentSelection.getVerNum()));
}
}

@Override
public TransUnit getByIdOrNull(TransUnitId transUnitId)
{
Expand All @@ -69,11 +57,6 @@ public TransUnit getByIdOrNull(TransUnitId transUnitId)
return null;
}

private boolean hasPendingChange(ArrayList<String> contentsInEditor, TransUnit currentSelection)
{
return currentSelection != null && contentsInEditor != null && !Objects.equal(currentSelection.getTargets(), contentsInEditor);
}

@Override
public void setData(List<TransUnit> data)
{
Expand Down

0 comments on commit f9f25bf

Please sign in to comment.