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

Commit

Permalink
automatically fetch replacement previews for selected search results
Browse files Browse the repository at this point in the history
  • Loading branch information
davidmason committed May 29, 2012
1 parent c69a902 commit ceb3015
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,8 @@ HasData<TransUnitReplaceInfo> addDocument(

private Map<Long, String> docPaths;

private boolean autoPreview = true;

@Inject
public SearchResultsPresenter(Display display, EventBus eventBus,
CachingDispatchAsync dispatcher,
Expand Down Expand Up @@ -317,12 +319,7 @@ public void onChange(ChangeEvent event)
@Override
public void onClick(ClickEvent event)
{
List<TransUnitReplaceInfo> selected = new ArrayList<TransUnitReplaceInfo>();
for (MultiSelectionModel<TransUnitReplaceInfo> sel : documentSelectionModels.values())
{
selected.addAll(sel.getSelectedSet());
}
firePreviewEvent(selected);
previewSelected(false, false);
}
}));

Expand Down Expand Up @@ -607,6 +604,11 @@ public void onSelectionChange(SelectionChangeEvent event)
{
int selectedFlows = countSelectedFlows();

if (autoPreview)
{
previewSelected(true, true);
}

if (selectedFlows == 0)
{
setUiForNothingSelected();
Expand All @@ -621,6 +623,36 @@ public void onSelectionChange(SelectionChangeEvent event)
};
}

/**
*
* @param skipEmptyNotification true to silently ignore the request when no rows are selected
*/
private void previewSelected(boolean skipEmptyNotification, boolean hideNonSelectedPreviews)
{
List<TransUnitReplaceInfo> selected = new ArrayList<TransUnitReplaceInfo>();
for (MultiSelectionModel<TransUnitReplaceInfo> model : documentSelectionModels.values())
{
selected.addAll(model.getSelectedSet());
}

if (!skipEmptyNotification || !selected.isEmpty())
{
firePreviewEvent(selected);
}

if (hideNonSelectedPreviews)
{
for (TransUnitReplaceInfo info : allReplaceInfos.values())
{
if (info.getPreviewState() == PreviewState.Show && !selected.contains(info))
{
info.setPreviewState(PreviewState.Hide);
}
}
}
}


/**
* Fire a {@link PreviewReplaceText} event for the given {@link TransUnit}s
* using parameters from the current history state. This will also update the
Expand All @@ -637,6 +669,13 @@ private void firePreviewEvent(List<TransUnitReplaceInfo> toPreview)
eventBus.fireEvent(new NotificationEvent(Severity.Warning, messages.noTextFlowsSelected()));
return;
}
final String replacement = currentHistoryState.getProjectSearchReplacement();
// prevent failed requests for empty replacement
if (replacement.isEmpty())
{
eventBus.fireEvent(new NotificationEvent(Severity.Warning, messages.noReplacementPhraseEntered()));
return;
}

List<TransUnit> transUnits = new ArrayList<TransUnit>();
for (TransUnitReplaceInfo replaceInfo : toPreview)
Expand All @@ -662,7 +701,6 @@ private void firePreviewEvent(List<TransUnitReplaceInfo> toPreview)
}

final String searchText = currentHistoryState.getProjectSearchText();
final String replacement = currentHistoryState.getProjectSearchReplacement();
boolean caseSensitive = currentHistoryState.getProjectSearchCaseSensitive();
ReplaceText action = new ReplaceText(transUnits, searchText, replacement, caseSensitive);
PreviewReplaceText previewAction = new PreviewReplaceText(action);
Expand Down Expand Up @@ -1054,7 +1092,8 @@ private void processHistoryToken(HistoryToken token)
}
}

if (!token.getProjectSearchReplacement().equals(currentHistoryState.getProjectSearchReplacement()))
boolean replacementTextChanged = !token.getProjectSearchReplacement().equals(currentHistoryState.getProjectSearchReplacement());
if (replacementTextChanged)
{
display.getReplacementTextBox().setValue(token.getProjectSearchReplacement(), true);
for (TransUnitReplaceInfo info : allReplaceInfos.values())
Expand All @@ -1067,6 +1106,12 @@ private void processHistoryToken(HistoryToken token)
}

currentHistoryState = token;

// uses currentHistoryState so must execute after token is updated.
if (replacementTextChanged && autoPreview)
{
previewSelected(true, false);
}
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -205,6 +205,9 @@ public interface WebTransMessages extends Messages
@DefaultMessage("Replace text failed")
String replaceTextFailure();

@DefaultMessage("No replacement text has been entered")
String noReplacementPhraseEntered();

@DefaultMessage("No replacements to make")
String noReplacementsToMake();

Expand Down

0 comments on commit ceb3015

Please sign in to comment.