SideBySide2: Add preferences button in header
Replace the unicode arrows for previous/up/next with arrows from the
Tango Icon Library[1]. These are green arrows 16x16 and are installed
into the DOM using CSS sprites managed by GWT.
Add to the right of the navigation cluster a new gear icon that opens
the panel. This icon lets mouse driven users adjust values quickly.
[1] http://tango.freedesktop.org/Tango_Icon_Library
Bug: issue 2225
Change-Id: Iaaea288990ed80431a4e44374530facffac4b842
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/CommentBoxUi.css b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/CommentBoxUi.css
index 351442b..df39467 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/CommentBoxUi.css
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/CommentBoxUi.css
@@ -80,3 +80,16 @@
white-space: nowrap;
color: #fff;
}
+
+@sprite .go_prev {
+ gwt-image: "go_prev";
+ display: inline-block;
+}
+@sprite .go_next {
+ gwt-image: "go_next";
+ display: inline-block;
+}
+@sprite .go_up {
+ gwt-image: "go_up";
+ display: inline-block;
+}
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/Header.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/Header.java
index b2a6fd9..9292463 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/Header.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/Header.java
@@ -34,6 +34,7 @@
import com.google.gwt.core.client.JsArrayString;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.Style.Visibility;
+import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.KeyPressEvent;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.uibinder.client.UiBinder;
@@ -43,6 +44,7 @@
import com.google.gwt.user.client.ui.CheckBox;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTMLPanel;
+import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.UIObject;
import com.google.gwtexpui.globalkey.client.KeyCommand;
import com.google.gwtexpui.globalkey.client.KeyCommandSet;
@@ -52,6 +54,9 @@
class Header extends Composite {
interface Binder extends UiBinder<HTMLPanel, Header> {}
private static final Binder uiBinder = GWT.create(Binder.class);
+ static {
+ Resources.I.style().ensureInjected();
+ }
@UiField CheckBox reviewed;
@UiField Element project;
@@ -62,6 +67,7 @@
@UiField InlineHyperlink prev;
@UiField InlineHyperlink up;
@UiField InlineHyperlink next;
+ @UiField Image preferences;
private final KeyCommandSet keys;
private final PatchSet.Id base;
@@ -70,6 +76,7 @@
private boolean hasPrev;
private boolean hasNext;
private String nextPath;
+ private PreferencesAction prefsAction;
Header(KeyCommandSet keys, PatchSet.Id base, PatchSet.Id patchSetId,
String path) {
@@ -151,10 +158,15 @@
}
}
- void set(ChangeInfo info) {
+ void setChangeInfo(ChangeInfo info) {
project.setInnerText(info.project());
}
+ void init(PreferencesAction pa) {
+ prefsAction = pa;
+ prefsAction.setPartner(preferences);
+ }
+
void setReviewed(boolean r) {
reviewed.setValue(r, true);
}
@@ -176,6 +188,11 @@
}
}
+ @UiHandler("preferences")
+ void onPreferences(ClickEvent e) {
+ prefsAction.show();
+ }
+
private String url(FileInfo info) {
return info.binary()
? Dispatcher.toUnified(base, patchSetId, info.path())
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/Header.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/Header.ui.xml
index 306109c7..add93d1 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/Header.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/Header.ui.xml
@@ -18,9 +18,12 @@
xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui'
xmlns:x='urn:import:com.google.gerrit.client.ui'>
+ <ui:with field='res' type='com.google.gerrit.client.diff.Resources'/>
<ui:style>
.header {
position: relative;
+ height: 16px;
+ line-height: 16px;
max-width: 1484px;
}
.reviewed input {
@@ -35,6 +38,7 @@
position: absolute;
top: 0;
right: 15px;
+ height: 16px;
font-family: Arial Unicode MS, sans-serif;
}
.nodiff {
@@ -56,12 +60,18 @@
</span>
<div class='{style.navigation}'>
- <x:InlineHyperlink ui:field='prev'>⇦</x:InlineHyperlink>
- <x:InlineHyperlink ui:field='up' title='Up to change (Shortcut: u)'>
+ <x:InlineHyperlink ui:field='prev' styleName='{res.style.go_prev}'/>
+ <x:InlineHyperlink ui:field='up'
+ styleName='{res.style.go_up}'
+ title='Up to change (Shortcut: u)'>
<ui:attribute name='title'/>
- ⇧
</x:InlineHyperlink>
- <x:InlineHyperlink ui:field='next'>⇨</x:InlineHyperlink>
+ <x:InlineHyperlink ui:field='next' styleName='{res.style.go_next}'/>
+ <g:Image ui:field='preferences'
+ resource='{res.gear}'
+ title='Diff preferences (Shortcut: ,)'>
+ <ui:attribute name='title'/>
+ </g:Image>
</div>
</g:HTMLPanel>
</ui:UiBinder>
\ No newline at end of file
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/PreferencesAction.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/PreferencesAction.java
index 68a24f5..f96127f 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/PreferencesAction.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/PreferencesAction.java
@@ -19,12 +19,14 @@
import com.google.gwt.event.logical.shared.CloseHandler;
import com.google.gwt.user.client.ui.PopupPanel;
import com.google.gwt.user.client.ui.PopupPanel.PositionCallback;
+import com.google.gwt.user.client.ui.Widget;
class PreferencesAction {
private final SideBySide2 view;
private final DiffPreferences prefs;
private PopupPanel popup;
private PreferencesBox current;
+ private Widget partner;
PreferencesAction(SideBySide2 view, DiffPreferences prefs) {
this.view = view;
@@ -50,6 +52,7 @@
popup = new PopupPanel(true, false);
popup.setStyleName(current.style.dialog());
popup.add(current);
+ popup.addAutoHidePartner(partner.getElement());
popup.addCloseHandler(new CloseHandler<PopupPanel>() {
@Override
public void onClose(CloseEvent<PopupPanel> event) {
@@ -74,4 +77,8 @@
current = null;
}
}
+
+ void setPartner(Widget w) {
+ partner = w;
+ }
}
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/Resources.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/Resources.java
index b7840c2..5356f2c 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/Resources.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/Resources.java
@@ -17,12 +17,17 @@
import com.google.gwt.core.client.GWT;
import com.google.gwt.resources.client.ClientBundle;
import com.google.gwt.resources.client.CssResource;
+import com.google.gwt.resources.client.ImageResource;
/** Resources used by diff. */
interface Resources extends ClientBundle {
static final Resources I = GWT.create(Resources.class);
@Source("CommentBoxUi.css") Style style();
+ @Source("go-prev.png") ImageResource go_prev();
+ @Source("go-next.png") ImageResource go_next();
+ @Source("go-up.png") ImageResource go_up();
+ @Source("gear.png") ImageResource gear();
interface Style extends CssResource {
String commentBox();
@@ -30,5 +35,9 @@
String header();
String summary();
String date();
+
+ String go_prev();
+ String go_next();
+ String go_up();
}
}
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/SideBySide2.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/SideBySide2.java
index fea1909..11dd602 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/SideBySide2.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/SideBySide2.java
@@ -226,7 +226,7 @@
JsArray<RevisionInfo> list = info.revisions().values();
RevisionInfo.sortRevisionInfoByNumber(list);
diffTable.setUpPatchSetNav(list, diff);
- header.set(info);
+ header.setChangeInfo(info);
}}));
ConfigInfoCache.get(changeId, group.addFinal(
@@ -533,6 +533,7 @@
prefsAction = new PreferencesAction(this, prefs);
scrollingGlue = GWT.create(ScrollSynchronizer.class);
scrollingGlue.init(diffTable, cmA, cmB, mapper);
+ header.init(prefsAction);
resizeHandler = Window.addResizeHandler(new ResizeHandler() {
@Override
public void onResize(ResizeEvent event) {
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/gear.png b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/gear.png
new file mode 100644
index 0000000..d90ab66
--- /dev/null
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/gear.png
Binary files differ
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/go-next.png b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/go-next.png
new file mode 100644
index 0000000..6ef8de7
--- /dev/null
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/go-next.png
Binary files differ
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/go-prev.png b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/go-prev.png
new file mode 100644
index 0000000..659cd90
--- /dev/null
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/go-prev.png
Binary files differ
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/go-up.png b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/go-up.png
new file mode 100644
index 0000000..fa9a7d7
--- /dev/null
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/go-up.png
Binary files differ