diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/editor/filter/TransFilterView.ui.xml b/zanata-war/src/main/java/org/zanata/webtrans/client/editor/filter/TransFilterView.ui.xml
index 40a0e23ef2..a08e88f7e6 100644
--- a/zanata-war/src/main/java/org/zanata/webtrans/client/editor/filter/TransFilterView.ui.xml
+++ b/zanata-war/src/main/java/org/zanata/webtrans/client/editor/filter/TransFilterView.ui.xml
@@ -5,11 +5,11 @@
.transFilterTextBox {
margin: 0px;
- font-size: 12px;
+ font-size: 16px;
border: 2px solid #C5C5C5;
border-radius: 3px;
outline: none;
- width:388px;
+ width:440px;
}
.transFilterTextBoxEmpty {
diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/AppPresenter.java b/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/AppPresenter.java
index ab0e487b70..931c886e41 100644
--- a/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/AppPresenter.java
+++ b/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/AppPresenter.java
@@ -211,6 +211,10 @@ public void showView(MainView viewToShow)
{
display.setDocumentLabel(selectedDocument.getPath(), selectedDocument.getName());
}
+ else
+ {
+ display.setDocumentLabel("", messages.noDocumentSelected());
+ }
currentDisplayStats = selectedDocumentStats;
translationPresenter.revealDisplay();
searchResultsPresenter.concealDisplay();
@@ -230,14 +234,7 @@ public void showView(MainView viewToShow)
break;
case Documents:
default:
- if (selectedDocument != null)
- {
- display.setDocumentLabel(selectedDocument.getPath(), selectedDocument.getName());
- }
- else
- {
- display.setDocumentLabel("", messages.noDocumentSelected());
- }
+ display.setDocumentLabel("", messages.documentListTitle());
currentDisplayStats = projectStats;
translationPresenter.concealDisplay();
searchResultsPresenter.concealDisplay();
@@ -356,23 +353,26 @@ public void onSearchAndReplaceClicked()
}
@Override
- public void onDocumentListClicked()
+ public void onEditorClicked()
{
HistoryToken token = HistoryToken.fromTokenString(history.getToken());
-
- if (token.getView().equals(MainView.Documents))
+ if (!token.getView().equals(MainView.Editor))
{
- if (selectedDocument == null)
- {
- return; // abort if no doc to edit
- }
token.setView(MainView.Editor);
+ history.newItem(token.toTokenString());
}
- else
+ }
+
+ @Override
+ public void onDocumentListClicked()
+ {
+
+ HistoryToken token = HistoryToken.fromTokenString(history.getToken());
+ if (!token.getView().equals(MainView.Documents))
{
token.setView(MainView.Documents);
+ history.newItem(token.toTokenString());
}
- history.newItem(token.toTokenString());
}
@Override
diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/resources/WebTransMessages.java b/zanata-war/src/main/java/org/zanata/webtrans/client/resources/WebTransMessages.java
index 6d8cb438e6..16d3c44524 100644
--- a/zanata-war/src/main/java/org/zanata/webtrans/client/resources/WebTransMessages.java
+++ b/zanata-war/src/main/java/org/zanata/webtrans/client/resources/WebTransMessages.java
@@ -95,10 +95,10 @@ public interface WebTransMessages extends Messages
@DefaultMessage("No document selected")
String noDocumentSelected();
- @DefaultMessage("Project-wide Search and Replace")
+ @DefaultMessage("Project-wide Search & Replace")
String projectWideSearchAndReplace();
- @DefaultMessage("Document list")
+ @DefaultMessage("Documents")
String documentListTitle();
@DefaultMessage("{0} has quit workspace")
@@ -452,4 +452,7 @@ public interface WebTransMessages extends Messages
@DefaultMessage("Concurrent edit detected. Reset value for current row. Your change will be lost.")
String concurrentEdit();
+ @DefaultMessage("Editor")
+ String editor();
+
}
diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/service/HistoryEventHandlerService.java b/zanata-war/src/main/java/org/zanata/webtrans/client/service/HistoryEventHandlerService.java
index 44f7ca206d..c89d3d9a60 100644
--- a/zanata-war/src/main/java/org/zanata/webtrans/client/service/HistoryEventHandlerService.java
+++ b/zanata-war/src/main/java/org/zanata/webtrans/client/service/HistoryEventHandlerService.java
@@ -1,23 +1,22 @@
package org.zanata.webtrans.client.service;
+import static com.google.common.base.Objects.equal;
+import net.customware.gwt.presenter.client.EventBus;
+
import org.zanata.webtrans.client.events.DocumentSelectionEvent;
import org.zanata.webtrans.client.events.FindMessageEvent;
import org.zanata.webtrans.client.history.HistoryToken;
import org.zanata.webtrans.client.presenter.AppPresenter;
import org.zanata.webtrans.client.presenter.DocumentListPresenter;
-import org.zanata.webtrans.client.presenter.MainView;
import org.zanata.webtrans.client.presenter.SearchResultsPresenter;
import org.zanata.webtrans.shared.model.DocumentId;
+
import com.allen_sauer.gwt.log.client.Log;
-import com.google.common.base.Objects;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.inject.Inject;
import com.google.inject.Singleton;
-import net.customware.gwt.presenter.client.EventBus;
-import static com.google.common.base.Objects.equal;
-
/**
* @author Patrick Huang pahuang@redhat.com
*/
@@ -79,14 +78,6 @@ private void processForAppPresenter(HistoryToken token)
}
Log.info("[gwt-history] document id: " + docId);
- // if there is no valid document, don't show the editor
- // default to document list instead
- if (docId == null && token.getView() == MainView.Editor)
- {
- Log.warn("[gwt-history] access editor view with invalid document id. Showing document list view instead");
- token.setView(MainView.Documents);
- }
-
if (docId != null)
{
eventBus.fireEvent(new DocumentSelectionEvent(docId, token.getSearchText()));
diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/Pager.ui.xml b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/Pager.ui.xml
index ffa5b47fff..ca6a0bbb95 100644
--- a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/Pager.ui.xml
+++ b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/Pager.ui.xml
@@ -6,7 +6,7 @@
.nav-button {
- padding:0 6px 1px 6px;
+ padding:0 6px;
font-size:14px;
margin:0;
}
diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/view/AppDisplay.java b/zanata-war/src/main/java/org/zanata/webtrans/client/view/AppDisplay.java
index c7a86fb287..9145c6a3ea 100644
--- a/zanata-war/src/main/java/org/zanata/webtrans/client/view/AppDisplay.java
+++ b/zanata-war/src/main/java/org/zanata/webtrans/client/view/AppDisplay.java
@@ -1,10 +1,9 @@
package org.zanata.webtrans.client.view;
+import net.customware.gwt.presenter.client.widget.WidgetDisplay;
+
import org.zanata.common.TranslationStats;
import org.zanata.webtrans.client.presenter.MainView;
-import com.google.gwt.event.dom.client.HasClickHandlers;
-
-import net.customware.gwt.presenter.client.widget.WidgetDisplay;
/**
* @author Patrick Huang pahuang@redhat.com
@@ -45,5 +44,7 @@ interface Listener
void onKeyShortcutsClicked();
void onResizeClicked();
+
+ void onEditorClicked();
}
}
diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/view/AppView.java b/zanata-war/src/main/java/org/zanata/webtrans/client/view/AppView.java
index c68f8771ff..24efc78804 100644
--- a/zanata-war/src/main/java/org/zanata/webtrans/client/view/AppView.java
+++ b/zanata-war/src/main/java/org/zanata/webtrans/client/view/AppView.java
@@ -36,6 +36,7 @@
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.dom.client.StyleInjector;
import com.google.gwt.event.dom.client.ClickEvent;
+import com.google.gwt.event.logical.shared.SelectionEvent;
import com.google.gwt.resources.client.CssResource;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
@@ -44,6 +45,7 @@
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.InlineLabel;
import com.google.gwt.user.client.ui.LayoutPanel;
+import com.google.gwt.user.client.ui.TabLayoutPanel;
import com.google.gwt.user.client.ui.Widget;
import com.google.inject.Inject;
@@ -64,35 +66,35 @@ interface Styles extends CssResource
TransUnitCountBar translationStatsBar;
@UiField
- InlineLabel projectLink, iterationFilesLink, resize, keyShortcuts;
+ InlineLabel projectLink, iterationFilesLink, readOnlyLabel, resize, keyShortcuts;
- @UiField
- InlineLabel readOnlyLabel, searchAndReplace, documentList;
-
@UiField
SpanElement selectedDocumentSpan, selectedDocumentPathSpan;
@UiField
- LayoutPanel editorContainer, sideMenuContainer, rootContainer;
+ LayoutPanel sideMenuContainer, rootContainer;
@UiField(provided = true)
final Resources resources;
+ @UiField
+ TabLayoutPanel contentBody;
+
@UiField
Styles style;
private Listener listener;
- // TODO may be able to make these provided=true widgets
- private Widget documentListView;
- private Widget translationView;
- private Widget searchResultsView;
-
private final WebTransMessages messages;
private final static String STYLE_MAXIMIZE = "icon-resize-full-3";
private final static String STYLE_MINIMIZE = "icon-resize-small-2";
+ // Order of the tab
+ private final static int DOCUMENT_VIEW = 0;
+ private final static int EDITOR_VIEW = 1;
+ private final static int SEARCH_AND_REPLACE_VIEW = 2;
+
@Inject
public AppView(Resources resources, WebTransMessages messages, DocumentListPresenter.Display documentListView, SearchResultsPresenter.Display searchResultsView, TranslationPresenter.Display translationView, SideMenuPresenter.Display sideMenuView, final Identity identity)
{
@@ -111,26 +113,27 @@ public AppView(Resources resources, WebTransMessages messages, DocumentListPrese
readOnlyLabel.setText("[" + messages.readOnly() + "]");
keyShortcuts.setTitle(messages.availableKeyShortcutsTitle());
- searchAndReplace.setTitle(messages.projectWideSearchAndReplace());
- documentList.setTitle(messages.documentListTitle());
resize.setTitle(messages.maximize());
resize.addStyleName(STYLE_MAXIMIZE);
- this.searchResultsView = searchResultsView.asWidget();
- this.editorContainer.add(this.searchResultsView);
+ sideMenuContainer.add(sideMenuView.asWidget());
- this.translationView = translationView.asWidget();
- this.editorContainer.add(this.translationView);
+ InlineLabel searchAndReplaceTab = new InlineLabel();
+ searchAndReplaceTab.addStyleName("icon-search");
+ searchAndReplaceTab.setText(messages.projectWideSearchAndReplace());
- this.documentListView = documentListView.asWidget();
- this.editorContainer.add(this.documentListView);
+ InlineLabel documentListTab = new InlineLabel();
+ documentListTab.addStyleName("icon-list");
+ documentListTab.setText(messages.documentListTitle());
- sideMenuContainer.add(sideMenuView.asWidget());
+ InlineLabel editorTab = new InlineLabel();
+ editorTab.addStyleName("icon-edit");
+ editorTab.setText(messages.editor());
- setWidgetVisible(this.documentListView, false);
- setWidgetVisible(this.searchResultsView, false);
- setWidgetVisible(this.translationView, false);
+ contentBody.add(documentListView.asWidget(), documentListTab);
+ contentBody.add(translationView.asWidget(), editorTab);
+ contentBody.add(searchResultsView.asWidget(), searchAndReplaceTab);
Window.enableScrolling(false);
}
@@ -141,41 +144,24 @@ public Widget asWidget()
return this;
}
+
@Override
public void showInMainView(MainView view)
{
switch (view)
{
case Documents:
- setWidgetVisible(documentListView, true);
- setWidgetVisible(searchResultsView, false);
- setWidgetVisible(translationView, false);
+ contentBody.selectTab(DOCUMENT_VIEW);
break;
case Search:
- setWidgetVisible(documentListView, false);
- setWidgetVisible(searchResultsView, true);
- setWidgetVisible(translationView, false);
+ contentBody.selectTab(SEARCH_AND_REPLACE_VIEW);
break;
case Editor:
- setWidgetVisible(documentListView, false);
- setWidgetVisible(searchResultsView, false);
- setWidgetVisible(translationView, true);
+ contentBody.selectTab(EDITOR_VIEW);
break;
}
}
- private void setWidgetVisible(Widget widget, boolean visible)
- {
- if (visible)
- {
- editorContainer.setWidgetTopBottom(widget, 0, Unit.PX, 0, Unit.PX);
- }
- else
- {
- editorContainer.setWidgetTopHeight(widget, 0, Unit.PX, 0, Unit.PX);
- }
- }
-
@Override
public void setProjectLinkLabel(String workspaceNameLabel)
{
@@ -255,12 +241,12 @@ public void showSideMenu(boolean isShowing)
rootContainer.forceLayout();
if (isShowing)
{
- rootContainer.setWidgetLeftRight(editorContainer, 0.0, Unit.PX, MINIMISED_EDITOR_RIGHT, Unit.PX);
+ rootContainer.setWidgetLeftRight(contentBody, 0.0, Unit.PX, MINIMISED_EDITOR_RIGHT, Unit.PX);
rootContainer.setWidgetRightWidth(sideMenuContainer, 0.0, Unit.PX, EXPENDED_MENU_RIGHT, Unit.PX);
}
else
{
- rootContainer.setWidgetLeftRight(editorContainer, 0.0, Unit.PX, 0.0, Unit.PX);
+ rootContainer.setWidgetLeftRight(contentBody, 0.0, Unit.PX, 0.0, Unit.PX);
rootContainer.setWidgetRightWidth(sideMenuContainer, 0.0, Unit.PX, MIN_MENU_WIDTH, Unit.PX);
}
rootContainer.animate(ANIMATE_DURATION);
@@ -278,18 +264,6 @@ public void onIterationFilesLinkClick(ClickEvent event)
listener.onIterationFilesLinkClicked();
}
- @UiHandler("searchAndReplace")
- public void onSearchAndReplaceClick(ClickEvent event)
- {
- listener.onSearchAndReplaceClicked();
- }
-
- @UiHandler("documentList")
- public void onDocumentListIconClick(ClickEvent event)
- {
- listener.onDocumentListClicked();
- }
-
@UiHandler("keyShortcuts")
public void onKeyShortcutsIconClick(ClickEvent event)
{
@@ -302,4 +276,25 @@ public void onResizeIconClick(ClickEvent event)
listener.onResizeClicked();
}
+ @UiHandler("contentBody")
+ public void onSelectionChanged(SelectionEvent event)
+ {
+ if (listener != null)
+ {
+ switch (event.getSelectedItem())
+ {
+ case SEARCH_AND_REPLACE_VIEW:
+ listener.onSearchAndReplaceClicked();
+ break;
+ case DOCUMENT_VIEW:
+ listener.onDocumentListClicked();
+ break;
+ case EDITOR_VIEW:
+ listener.onEditorClicked();
+ break;
+ }
+ }
+
+ }
+
}
diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/view/AppView.ui.xml b/zanata-war/src/main/java/org/zanata/webtrans/client/view/AppView.ui.xml
index 860850e5a1..131f41c775 100644
--- a/zanata-war/src/main/java/org/zanata/webtrans/client/view/AppView.ui.xml
+++ b/zanata-war/src/main/java/org/zanata/webtrans/client/view/AppView.ui.xml
@@ -18,7 +18,7 @@
height:100%;
}
- .editorContainer
+ .contentBody
{
margin:5px 25px 3px 25px;
}
@@ -60,7 +60,6 @@
.topMenuButton
{
cursor: pointer;
- vertical-align:bottom;
font-size:20px;
color:#4E4E4E;
}
@@ -107,12 +106,8 @@
-
-
-
-
-
-
+
+
@@ -124,7 +119,9 @@
-
+
+
+
diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/view/DocumentListView.ui.xml b/zanata-war/src/main/java/org/zanata/webtrans/client/view/DocumentListView.ui.xml
index 87a9140220..fad7774c34 100644
--- a/zanata-war/src/main/java/org/zanata/webtrans/client/view/DocumentListView.ui.xml
+++ b/zanata-war/src/main/java/org/zanata/webtrans/client/view/DocumentListView.ui.xml
@@ -23,12 +23,12 @@
.filterTextBox
{
- font-size:18px;
- padding: 3px;
+ font-size:16px;
+ padding: 2px;
margin: 0px;
border: 2px solid #C5C5C5;
border-radius: 3px;
- width:98%;
+ width:440px;
}
.topBar
@@ -39,27 +39,27 @@
.listContainer
{
- padding:15px;
+ padding:10px;
}
-
+
-
+
-
+
Case sensitive
-
+
Exact match only
-
+
diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/view/TransUnitEditView.ui.xml b/zanata-war/src/main/java/org/zanata/webtrans/client/view/TransUnitEditView.ui.xml
index 680ba39012..0808962dd6 100644
--- a/zanata-war/src/main/java/org/zanata/webtrans/client/view/TransUnitEditView.ui.xml
+++ b/zanata-war/src/main/java/org/zanata/webtrans/client/view/TransUnitEditView.ui.xml
@@ -20,7 +20,7 @@
border-collapse: collapse;
/* setting width to 99% to leave some space from the scroll bar */
width: 99%;
- margin: 5px;
+ margin: 0 5px;
table-layout: fixed;
}
@@ -30,6 +30,7 @@
color: grey;
font-size: 1.5em;
}
+
diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/view/TranslationEditorView.java b/zanata-war/src/main/java/org/zanata/webtrans/client/view/TranslationEditorView.java
index 45f273f87e..cbd1c42fa7 100644
--- a/zanata-war/src/main/java/org/zanata/webtrans/client/view/TranslationEditorView.java
+++ b/zanata-war/src/main/java/org/zanata/webtrans/client/view/TranslationEditorView.java
@@ -31,7 +31,7 @@
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
-import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.LayoutPanel;
import com.google.gwt.user.client.ui.Widget;
import com.google.inject.Inject;
@@ -46,7 +46,7 @@ interface TranslationEditorViewUiBinder extends UiBinder
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
+
+
+
diff --git a/zanata-war/src/main/resources/org/zanata/webtrans/public/Application.css b/zanata-war/src/main/resources/org/zanata/webtrans/public/Application.css
index 9f187c3c41..7ecd31e899 100644
--- a/zanata-war/src/main/resources/org/zanata/webtrans/public/Application.css
+++ b/zanata-war/src/main/resources/org/zanata/webtrans/public/Application.css
@@ -906,3 +906,25 @@ td.ApprovedStateDecoration div div div
padding:2px;
}
+.gwt-TabLayoutPanelTab
+{
+ padding:3px 5px;
+ background:darkgray;
+ color:#595959;
+ border-top-left-radius:3px;
+ border-top-right-radius:3px;
+ margin:0 1px;
+ border:1px solid #C9C9C9;
+ cursor:pointer;
+
+ font-weight:bold;
+ background:-webkit-linear-gradient(top, #F1F1F1 0%, lightGrey 100%);
+
+}
+
+.gwt-TabLayoutPanelTab-selected,.gwt-TabLayoutPanelTab:hover
+{
+ background:#7E91A9;
+ color:#FFFFFF;
+}
+