mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-28 14:57:12 +00:00
Improved the tabbed results presenter
This commit is contained in:
1 parent
1c4c6572a2
commit
190617fcf9
5 files changed
+41
-16
No files matched your search
+21
@@ -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() {
|
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;
|
||||||
|
|||||||
+6
@@ -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();
|
||||||
|
|
||||||
}
|
}
|
||||||
+2
-6
@@ -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;
|
||||||
|
|||||||
+12
-10
@@ -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);
|
||||||
|
|||||||
BIN
Binary file not shown.
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 363 B |
Reference in new issue
Block a user