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

Commit

Permalink
User config options change will affect button title
Browse files Browse the repository at this point in the history
  • Loading branch information
Patrick Huang committed Mar 27, 2012
1 parent 73678c7 commit 11ecdd9
Show file tree
Hide file tree
Showing 8 changed files with 197 additions and 87 deletions.
Expand Up @@ -27,6 +27,8 @@ public interface TargetContentsDisplay extends WidgetDisplay, Iterable<ToggleEdi

void openEditorAndCloseOthers(int currentEditor);

void setSaveButtonTitle(String title);

interface Listener
{
void validate(ToggleEditor editor);
Expand Down
Expand Up @@ -33,7 +33,11 @@
import org.zanata.webtrans.client.events.RunValidationEvent;
import org.zanata.webtrans.client.events.UpdateValidationWarningsEvent;
import org.zanata.webtrans.client.events.UpdateValidationWarningsEventHandler;
import org.zanata.webtrans.client.events.UserConfigChangeEvent;
import org.zanata.webtrans.client.events.UserConfigChangeHandler;
import org.zanata.webtrans.client.presenter.SourceContentsPresenter;
import org.zanata.webtrans.client.presenter.UserConfigHolder;
import org.zanata.webtrans.client.resources.NavigationMessages;
import org.zanata.webtrans.client.resources.TableEditorMessages;
import org.zanata.webtrans.client.ui.ToggleEditor;
import org.zanata.webtrans.client.ui.ToggleEditor.ViewMode;
Expand All @@ -47,12 +51,19 @@
import com.google.inject.Singleton;

@Singleton
public class TargetContentsPresenter implements TargetContentsDisplay.Listener
public class TargetContentsPresenter implements TargetContentsDisplay.Listener,
UserConfigChangeHandler,
UpdateValidationWarningsEventHandler,
RequestValidationEventHandler,
InsertStringInEditorHandler,
CopyDataToEditorHandler
{
private static final int NO_OPEN_EDITOR = -1;
private final EventBus eventBus;
private final TableEditorMessages messages;
private final SourceContentsPresenter sourceContentsPresenter;
private final UserConfigHolder configHolder;
private NavigationMessages navMessages;
private final ValidationMessagePanel validationMessagePanel;

private TargetContentsDisplay currentDisplay;
Expand All @@ -63,70 +74,24 @@ public class TargetContentsPresenter implements TargetContentsDisplay.Listener
private TransUnitsEditModel cellEditor;

@Inject
public TargetContentsPresenter(Provider<TargetContentsDisplay> displayProvider, final EventBus eventBus, final TableEditorMessages messages, final SourceContentsPresenter sourceContentsPresenter)
public TargetContentsPresenter(Provider<TargetContentsDisplay> displayProvider, final EventBus eventBus,
final TableEditorMessages messages,
final SourceContentsPresenter sourceContentsPresenter, UserConfigHolder configHolder,
NavigationMessages navMessages)
{
this.displayProvider = displayProvider;
this.eventBus = eventBus;
this.messages = messages;
this.sourceContentsPresenter = sourceContentsPresenter;
this.configHolder = configHolder;
this.navMessages = navMessages;

validationMessagePanel = new ValidationMessagePanel(true, messages);

eventBus.addHandler(UpdateValidationWarningsEvent.getType(), new UpdateValidationWarningsEventHandler()
{
@Override
public void onUpdate(UpdateValidationWarningsEvent event)
{
validationMessagePanel.setContent(event.getErrors());
}
});

eventBus.addHandler(RequestValidationEvent.getType(), new RequestValidationEventHandler()
{
@Override
public void onRequestValidation(RequestValidationEvent event)
{
if (isEditing())
{
eventBus.fireEvent(new RunValidationEvent(sourceContentsPresenter.getSelectedSource(),
getCurrentEditor().getText(), false));
}
}
});

eventBus.addHandler(InsertStringInEditorEvent.getType(), new InsertStringInEditorHandler()
{
@Override
public void onInsertString(InsertStringInEditorEvent event)
{
if (isEditing())
{
getCurrentEditor().insertTextInCursorPosition(event.getSuggestion());
eventBus.fireEvent(new NotificationEvent(Severity.Info, messages.notifyCopied()));
}
else
{
eventBus.fireEvent(new NotificationEvent(Severity.Error, messages.notifyUnopened()));
}
}
});

eventBus.addHandler(CopyDataToEditorEvent.getType(), new CopyDataToEditorHandler()
{
@Override
public void onTransMemoryCopy(CopyDataToEditorEvent event)
{
if (isEditing())
{
getCurrentEditor().setText(event.getTargetResult());
eventBus.fireEvent(new NotificationEvent(Severity.Info, messages.notifyCopied()));
}
else
{
eventBus.fireEvent(new NotificationEvent(Severity.Error, messages.notifyUnopened()));
}
}
});
eventBus.addHandler(UserConfigChangeEvent.getType(), this);
eventBus.addHandler(UpdateValidationWarningsEvent.getType(), this);
eventBus.addHandler(RequestValidationEvent.getType(), this);
eventBus.addHandler(InsertStringInEditorEvent.getType(), this);
eventBus.addHandler(CopyDataToEditorEvent.getType(), this);
}

private ToggleEditor getCurrentEditor()
Expand Down Expand Up @@ -186,9 +151,15 @@ public TargetContentsDisplay getNextTargetContentsDisplay(int rowIndex, TransUni
}

result.setTargets(transUnit.getTargets());
result.setSaveButtonTitle(decideButtonTitle());
return result;
}

private String decideButtonTitle()
{
return (configHolder.isButtonEnter()) ? navMessages.editSaveWithEnterShortcut() : navMessages.editSaveShortcut();
}

public void initWidgets(int pageSize)
{
displayList = Lists.newArrayList();
Expand Down Expand Up @@ -277,4 +248,58 @@ public void setCellEditor(TransUnitsEditModel cellEditor)
{
this.cellEditor = cellEditor;
}

@Override
public void onValueChanged(UserConfigChangeEvent event)
{
String title = decideButtonTitle();
for (TargetContentsDisplay display : displayList)
{
display.setSaveButtonTitle(title);
}
}

@Override
public void onUpdate(UpdateValidationWarningsEvent event)
{
validationMessagePanel.setContent(event.getErrors());
}

@Override
public void onRequestValidation(RequestValidationEvent event)
{
if (isEditing())
{
eventBus.fireEvent(new RunValidationEvent(sourceContentsPresenter.getSelectedSource(),
getCurrentEditor().getText(), false));
}
}

@Override
public void onInsertString(InsertStringInEditorEvent event)
{
if (isEditing())
{
getCurrentEditor().insertTextInCursorPosition(event.getSuggestion());
eventBus.fireEvent(new NotificationEvent(Severity.Info, messages.notifyCopied()));
}
else
{
eventBus.fireEvent(new NotificationEvent(Severity.Error, messages.notifyUnopened()));
}
}

@Override
public void onTransMemoryCopy(CopyDataToEditorEvent event)
{
if (isEditing())
{
getCurrentEditor().setText(event.getTargetResult());
eventBus.fireEvent(new NotificationEvent(Severity.Info, messages.notifyCopied()));
}
else
{
eventBus.fireEvent(new NotificationEvent(Severity.Error, messages.notifyUnopened()));
}
}
}
Expand Up @@ -18,6 +18,7 @@
import java.util.Iterator;
import java.util.List;

import com.google.common.base.Preconditions;
import org.zanata.webtrans.client.ui.Editor;
import org.zanata.webtrans.client.ui.ToggleEditor;

Expand Down Expand Up @@ -53,6 +54,13 @@ public void openEditorAndCloseOthers(int currentEditor)
editors.get(currentEditor).setViewMode(ToggleEditor.ViewMode.EDIT);
}

@Override
public void setSaveButtonTitle(String title)
{
Preconditions.checkState(editors.size() > 0);
editors.get(editors.size() - 1).setSaveButtonTitle(title);
}

@Override
public void setTargets(List<String> targets)
{
Expand All @@ -67,7 +75,6 @@ public void setTargets(List<String> targets)
editor.setText("");
editorGrid.setWidget(rowIndex, 0, editor);
editors.add(editor);
editor.setSaveButtonTitle("Save as approved");
}
else
{
Expand All @@ -79,10 +86,6 @@ public void setTargets(List<String> targets)
editors.add(editor);
rowIndex++;
}

// TODO last one has different title. The title should be in
// NavigationMessages not hardcoded string
editors.get(editors.size() - 1).setSaveButtonTitle("Save and go to next");
}
}

Expand Down
Expand Up @@ -27,11 +27,12 @@ public static Type<UserConfigChangeHandler> getType()
return TYPE;
}

private HashMap<String, Boolean> configMap;
private Map<String, Boolean> configMap;

public UserConfigChangeEvent(Map<String, Boolean> configMap)
{
this.configMap = (HashMap<String, Boolean>) configMap;
//TODO instead of passing config map around, all receiver should directly reference UserConfigHolder to get value
this.configMap = configMap;
}

public Map<String, Boolean> getConfigMap()
Expand Down
Expand Up @@ -80,20 +80,16 @@ public interface Display extends WidgetDisplay

private final ValidationOptionsPresenter validationOptionsPresenter;

private Map<String, Boolean> configMap = new HashMap<String, Boolean>();
private final WorkspaceContext workspaceContext;
private UserConfigHolder configHolder;

@Inject
public OptionsPanelPresenter(final Display display, final EventBus eventBus, final ValidationOptionsPresenter validationDetailsPresenter, final WorkspaceContext workspaceContext)
public OptionsPanelPresenter(final Display display, final EventBus eventBus, final ValidationOptionsPresenter validationDetailsPresenter, final WorkspaceContext workspaceContext, UserConfigHolder configHolder)
{
super(display, eventBus);
this.validationOptionsPresenter = validationDetailsPresenter;
this.workspaceContext = workspaceContext;

configMap.put(EditorConfigConstants.BUTTON_ENTER, false);
configMap.put(EditorConfigConstants.BUTTON_ESC, false);
configMap.put(EditorConfigConstants.BUTTON_FUZZY, true);
configMap.put(EditorConfigConstants.BUTTON_UNTRANSLATED, true);
this.configHolder = configHolder;
}

private final ValueChangeHandler<Boolean> filterChangeHandler = new ValueChangeHandler<Boolean>()
Expand Down Expand Up @@ -163,8 +159,8 @@ public void onValueChange(ValueChangeEvent<Boolean> event)
public void onValueChange(ValueChangeEvent<Boolean> event)
{
Log.info("Enable 'Enter' Key to save and move to next string: " + event.getValue());
configMap.put(EditorConfigConstants.BUTTON_ENTER, event.getValue());
eventBus.fireEvent(new UserConfigChangeEvent(configMap));
configHolder.setButtonEnter(event.getValue());
eventBus.fireEvent(new UserConfigChangeEvent(configHolder.getConfigMap()));
}
}));

Expand All @@ -174,15 +170,15 @@ public void onValueChange(ValueChangeEvent<Boolean> event)
public void onValueChange(ValueChangeEvent<Boolean> event)
{
Log.info("Enable 'Esc' Key to close editor: " + event.getValue());
configMap.put(EditorConfigConstants.BUTTON_ESC, event.getValue());
eventBus.fireEvent(new UserConfigChangeEvent(configMap));
configHolder.setButtonEsc(event.getValue());
eventBus.fireEvent(new UserConfigChangeEvent(configHolder.getConfigMap()));
}
}));

// editor buttons always shown by default
display.getEditorButtonsChk().setValue(true, false);
display.getEnterChk().setValue(configMap.get(EditorConfigConstants.BUTTON_ENTER), false);
display.getEscChk().setValue(configMap.get(EditorConfigConstants.BUTTON_ESC), false);
display.getEnterChk().setValue(configHolder.isButtonEnter(), false);
display.getEscChk().setValue(configHolder.isButtonEsc(), false);

registerHandler(display.getModalNavigationOptionsSelect().addChangeHandler(new ChangeHandler()
{
Expand All @@ -192,20 +188,20 @@ public void onChange(ChangeEvent event)
String selectedOption = display.getSelectedFilter();
if (selectedOption.equals(Display.KEY_FUZZY_UNTRANSLATED))
{
configMap.put(EditorConfigConstants.BUTTON_UNTRANSLATED, true);
configMap.put(EditorConfigConstants.BUTTON_FUZZY, true);
configHolder.setButtonUntranslated(true);
configHolder.setButtonFuzzy(true);
}
else if (selectedOption.equals(Display.KEY_FUZZY))
{
configMap.put(EditorConfigConstants.BUTTON_FUZZY, true);
configMap.put(EditorConfigConstants.BUTTON_UNTRANSLATED, false);
configHolder.setButtonFuzzy(true);
configHolder.setButtonUntranslated(false);
}
else if (selectedOption.equals(Display.KEY_UNTRANSLATED))
{
configMap.put(EditorConfigConstants.BUTTON_FUZZY, false);
configMap.put(EditorConfigConstants.BUTTON_UNTRANSLATED, true);
configHolder.setButtonFuzzy(false);
configHolder.setButtonUntranslated(true);
}
eventBus.fireEvent(new UserConfigChangeEvent(configMap));
eventBus.fireEvent(new UserConfigChangeEvent(configHolder.getConfigMap()));
}
}));

Expand Down

0 comments on commit 11ecdd9

Please sign in to comment.