Improved the tabbed results presenter

This commit is contained in:
Lennart Hensler committed 2015-07-24 15:05:39 +02:00
1 parent 1c4c6572a2
commit 190617fcf9
5 files changed
+40 -15

No files matched your search

@@ -193,6 +193,19 @@ public class ScrolledTabLayoutPanel extends TabLayoutPanel {
}
public void scrollToTab(int tabNumber) {
Widget tab = getTab(tabNumber);
if (tab == null)
return;
int oldLeft = parsePosition(tabBar.getElement().getStyle().getLeft());
int difference = getAbsoluteRightOfTabBar() - getAbsoluteRightOfWidget(tab) - SCROLL_RIGHT_TAB_MARGIN;
// Prevent over-scrolling left border
int newLeft = Math.min(oldLeft + difference, 0);
scrollTo(oldLeft, newLeft);
}
private void resetScrollPosition() {
scrollTo(0, 0);
}
@@ -259,6 +272,14 @@ public class ScrolledTabLayoutPanel extends TabLayoutPanel {
return tabBar.getWidget(tabBar.getWidgetCount() - 1);
}
private Widget getTab(int tabNumber) {
if (tabNumber < 0 || tabNumber >= tabBar.getWidgetCount()) {
return null;
}
return tabBar.getWidget(tabNumber);
}
private Widget getFirstTab() {
if (tabBar.getWidgetCount() == 0)
return null;
@@ -8,4 +8,10 @@ public interface DataMiningResources extends ClientBundle {
@Source("com/sap/sailing/gwt/ui/client/images/close.png")
ImageResource closeIcon();
@Source("com/sap/sailing/gwt/ui/client/images/arrow_left.png")
ImageResource arrowLeftIcon();
@Source("com/sap/sailing/gwt/ui/client/images/arrow_right.png")
ImageResource arrowRightIcon();
}
@@ -120,7 +120,8 @@ public class ResultsChart implements ResultsPresenter<Number> {
presentationPanel = new ResizingSimplePanel() {
@Override
public void onResize() {
updateChartSize();
chart.setSizeToMatchContainer();
chart.redraw();
}
};
mainPanel.add(presentationPanel);
@@ -138,11 +139,6 @@ public class ResultsChart implements ResultsPresenter<Number> {
showError(this.stringMessages.invalidSelection());
}
/*package*/ void updateChartSize() {
chart.setSizeToMatchContainer();
chart.redraw();
}
@Override
public void showError(String error) {
currentResult = null;
@@ -7,9 +7,9 @@ import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.TabLayoutPanel;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.client.shared.controls.ScrolledTabLayoutPanel;
import com.sap.sailing.gwt.ui.datamining.DataMiningResources;
import com.sap.sailing.gwt.ui.datamining.ResultsPresenter;
import com.sap.sse.datamining.shared.QueryResult;
@@ -20,12 +20,12 @@ public class TabResultsPresenter implements ResultsPresenter<Number> {
private final StringMessages stringMessages;
private final TabLayoutPanel tabPanel;
private final ScrolledTabLayoutPanel tabPanel;
public TabResultsPresenter(StringMessages stringMessages) {
this.stringMessages = stringMessages;
tabPanel = new TabLayoutPanel(20, Unit.PX);
tabPanel = new ScrolledTabLayoutPanel(30, Unit.PX, resources.arrowLeftIcon(), resources.arrowRightIcon());
tabPanel.setAnimationDuration(0);
tabPanel.getElement().getStyle().setMarginTop(10, Unit.PX);
}
@@ -37,19 +37,19 @@ public class TabResultsPresenter implements ResultsPresenter<Number> {
@Override
public void showResult(QueryResult<Number> result) {
ResultsPresenter<Number> tabPresenter = addTabAndFocus();
ResultsPresenter<Number> tabPresenter = addTabAndFocus(result.getResultSignifier());
tabPresenter.showResult(result);
}
@Override
public void showError(String error) {
ResultsPresenter<Number> tabPresenter = addTabAndFocus();
ResultsPresenter<Number> tabPresenter = addTabAndFocus(stringMessages.error());
tabPresenter.showError(error);
}
@Override
public void showError(String mainError, Iterable<String> detailedErrors) {
ResultsPresenter<Number> tabPresenter = addTabAndFocus();
ResultsPresenter<Number> tabPresenter = addTabAndFocus(stringMessages.error());
tabPresenter.showError(mainError, detailedErrors);
}
@@ -58,12 +58,12 @@ public class TabResultsPresenter implements ResultsPresenter<Number> {
// Do nothing here. A management of the different tabs is necessary to handle this.
}
private ResultsPresenter<Number> addTabAndFocus() {
CloseableTabHeader tabHeader = new CloseableTabHeader("Test");
private ResultsPresenter<Number> addTabAndFocus(String headerText) {
CloseableTabHeader tabHeader = new CloseableTabHeader(headerText);
ResultsChart tabPresenter = new ResultsChart(stringMessages);
tabPanel.add(tabPresenter.getWidget(), tabHeader.getWidget());
tabPanel.selectTab(tabPanel.getWidgetCount() - 1);
tabPresenter.updateChartSize();
tabPanel.scrollToTab(tabPanel.getWidgetCount() - 1);
return tabPresenter;
}
@@ -80,8 +80,10 @@ public class TabResultsPresenter implements ResultsPresenter<Number> {
closeImage.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
if (tabPanel.getWidgetCount() > 1) {
widget.removeFromParent();
}
}
});
widget.add(closeImage);
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 363 B