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

Commit

Permalink
Work in progress: implement glossary editing in workspace
Browse files Browse the repository at this point in the history
  • Loading branch information
Alex Eng committed Sep 5, 2012
1 parent d4ead63 commit ad55098
Show file tree
Hide file tree
Showing 12 changed files with 422 additions and 123 deletions.
@@ -1,9 +1,13 @@
package org.zanata.webtrans.client.presenter;

import java.util.List;

import net.customware.gwt.presenter.client.EventBus;
import net.customware.gwt.presenter.client.widget.WidgetDisplay;
import net.customware.gwt.presenter.client.widget.WidgetPresenter;

import org.zanata.webtrans.client.events.NotificationEvent;
import org.zanata.webtrans.client.events.NotificationEvent.Severity;
import org.zanata.webtrans.client.resources.UiMessages;
import org.zanata.webtrans.client.rpc.CachingDispatchAsync;
import org.zanata.webtrans.shared.model.GlossaryDetails;
Expand All @@ -14,6 +18,7 @@
import org.zanata.webtrans.shared.rpc.UpdateGlossaryTermResult;

import com.allen_sauer.gwt.log.client.Log;
import com.google.common.base.Strings;
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.event.dom.client.ClickEvent;
Expand All @@ -36,9 +41,9 @@ public interface Display extends WidgetDisplay

HasText getTargetText();

HasText getSourceComment();
void setSourceComment(List<String> comments);

HasText getTargetComment();
void setTargetComment(List<String> comments);

HasText getSourceLabel();

Expand All @@ -59,6 +64,18 @@ public interface Display extends WidgetDisplay
void addEntry(String text);

HasText getLastModified();

HasClickHandlers getAddNewCommentButton();

void addRowIntoTargetComment(int row, String comment);

HasText getNewCommentText();

int getTargetCommentRowCount();

List<String> getCurrentTargetComments();

void showLoading(boolean visible);
}

private GetGlossaryDetailsResult glossaryDetails;
Expand All @@ -69,8 +86,10 @@ public interface Display extends WidgetDisplay

private final CachingDispatchAsync dispatcher;

private HasGlossaryEvent glossaryListener;

@Inject
public GlossaryDetailsPresenter(final Display display, EventBus eventBus, UiMessages messages, final CachingDispatchAsync dispatcher)
public GlossaryDetailsPresenter(final Display display, final EventBus eventBus, final UiMessages messages, final CachingDispatchAsync dispatcher)
{
super(display, eventBus);
this.dispatcher = dispatcher;
Expand All @@ -93,27 +112,51 @@ public void onClick(ClickEvent event)
{
if (selectedDetailEntry != null)
{
// check if there's any changes and save
if(!display.getTargetText().getText().equals(selectedDetailEntry.getTarget()))
// check if there's any changes on the target term or the target
// comments and save
if (!display.getTargetText().getText().equals(selectedDetailEntry.getTarget()))
{
dispatcher.execute(new UpdateGlossaryTermAction(selectedDetailEntry.getSrcLocale(), selectedDetailEntry.getTargetLocale(), selectedDetailEntry.getSource(), display.getTargetText().getText(), selectedDetailEntry.getTargetVersionNum()), new AsyncCallback<UpdateGlossaryTermResult>()
display.showLoading(true);
UpdateGlossaryTermAction action = new UpdateGlossaryTermAction(selectedDetailEntry, display.getTargetText().getText(), display.getCurrentTargetComments());

dispatcher.execute(action, new AsyncCallback<UpdateGlossaryTermResult>()
{
@Override
public void onFailure(Throwable caught)
{
Log.error(caught.getMessage(), caught);
eventBus.fireEvent(new NotificationEvent(Severity.Error, messages.saveGlossaryFailed()));
display.showLoading(false);
}

@Override
public void onSuccess(UpdateGlossaryTermResult result)
{
Log.info("Glossary term updated:" + result.getDetail().getTarget());
glossaryListener.fireSearchEvent();
selectedDetailEntry = result.getDetail();
populateDisplayData();
display.showLoading(false);
}
});
}
}
}
}));

registerHandler(display.getAddNewCommentButton().addClickHandler(new ClickHandler()
{
@Override
public void onClick(ClickEvent event)
{
if (!Strings.isNullOrEmpty(display.getNewCommentText().getText()))
{
display.addRowIntoTargetComment(display.getTargetCommentRowCount(), display.getNewCommentText().getText());
display.getNewCommentText().setText("");
}
}
}));

registerHandler(display.getEntryListBox().addChangeHandler(new ChangeHandler()
{
@Override
Expand Down Expand Up @@ -157,33 +200,21 @@ public void onSuccess(GetGlossaryDetailsResult result)
});
}

protected void selectEntry(int selected)
private void populateDisplayData()
{
display.getSrcRef().setText(selectedDetailEntry.getSourceRef());
display.setSourceComment(selectedDetailEntry.getSourceComment());
display.setTargetComment(selectedDetailEntry.getTargetComment());
display.getLastModified().setText(messages.lastModifiedOn(selectedDetailEntry.getLastModified()));
}

private void selectEntry(int selected)
{
StringBuilder srcComments = new StringBuilder();
StringBuilder targetComments = new StringBuilder();
String srcRef = "";
if (selected >= 0)
{
selectedDetailEntry = glossaryDetails.getGlossaryDetails().get(selected);
srcRef = selectedDetailEntry.getSourceRef();
for (String srcComment : selectedDetailEntry.getSourceComment())
{
srcComments.append(srcComment);
srcComments.append("\n");
}

for (String targetComment : selectedDetailEntry.getTargetComment())
{
targetComments.append(targetComment);
targetComments.append("\n");
}
}

display.getSrcRef().setText(srcRef);
display.getSourceComment().setText(srcComments.toString());
display.getTargetComment().setText(targetComments.toString());
display.getLastModified().setText(messages.lastModifiedOn(selectedDetailEntry.getLastModified()));

populateDisplayData();
}

@Override
Expand All @@ -200,4 +231,9 @@ protected void onUnbind()
public void onRevealDisplay()
{
}

public void setGlossaryListener(HasGlossaryEvent glossaryListener)
{
this.glossaryListener = glossaryListener;
}
}
Expand Up @@ -158,9 +158,11 @@ public void onBlur(BlurEvent event)
});

display.setListener(this);
glossaryDetailsPresenter.setGlossaryListener(this);
}

private void fireSearchEvent()
@Override
public void fireSearchEvent()
{
String query = display.getGlossaryTextBox().getText();
createGlossaryRequest(query, display.getSearchType().getValue());
Expand Down
Expand Up @@ -7,4 +7,6 @@ public interface HasGlossaryEvent
void fireCopyEvent(GlossaryResultItem item);

void showGlossaryDetail(GlossaryResultItem item);

void fireSearchEvent();
}
Expand Up @@ -149,4 +149,6 @@ public interface UiMessages extends Messages
@DefaultMessage("Found no glossary results")
String foundNoGlossaryResults();

@DefaultMessage("Glossary save fail")
String saveGlossaryFailed();
}

0 comments on commit ad55098

Please sign in to comment.