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
+41 -16

No files matched your search

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

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 363 B