mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-21 19:50:01 +00:00
Fixed the filter table visibility bug
This commit is contained in:
1 parent
5fdd04581f
commit
a52917b437
4 files changed
+26
-76
No files matched your search
+2
-9
@@ -74,6 +74,7 @@ class DimensionFilterSelectionProvider {
|
||||
return function.getDisplayName();
|
||||
}
|
||||
});
|
||||
dimensionListBox.setWidth("100%");
|
||||
dimensionChangedHandler = new DimensionChangedHandler();
|
||||
dimensionListBox.addValueChangeHandler(dimensionChangedHandler);
|
||||
controlsPanel.add(dimensionListBox);
|
||||
@@ -100,7 +101,7 @@ class DimensionFilterSelectionProvider {
|
||||
}
|
||||
});
|
||||
selectionTable.setVisible(false);
|
||||
mainPanel.add(selectionTable);
|
||||
mainPanel.add(selectionTable.getWidget());
|
||||
}
|
||||
|
||||
private class DimensionChangedHandler implements ValueChangeHandler<FunctionDTO> {
|
||||
@@ -237,13 +238,5 @@ class DimensionFilterSelectionProvider {
|
||||
public Widget getEntryWidget() {
|
||||
return mainPanel;
|
||||
}
|
||||
|
||||
public void resizeToHeight(int heightInPX) {
|
||||
int widthInPX = controlsPanel.getOffsetWidth();
|
||||
mainPanel.setSize(widthInPX + "px", heightInPX + "px");
|
||||
|
||||
int remainingHeightInPX = Math.max(0, heightInPX - controlsPanel.getOffsetHeight());
|
||||
selectionTable.resizeTo(widthInPX, remainingHeightInPX);
|
||||
}
|
||||
|
||||
}
|
||||
+16
-22
@@ -6,26 +6,27 @@ import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import com.google.gwt.user.cellview.client.DataGrid;
|
||||
import com.google.gwt.user.cellview.client.CellTable;
|
||||
import com.google.gwt.user.cellview.client.TextColumn;
|
||||
import com.google.gwt.user.client.ui.FlowPanel;
|
||||
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.google.gwt.view.client.ListDataProvider;
|
||||
import com.google.gwt.view.client.ProvidesKey;
|
||||
import com.google.gwt.view.client.SelectionChangeEvent;
|
||||
import com.sap.sailing.gwt.ui.datamining.FilterSelectionChangedListener;
|
||||
import com.sap.sse.gwt.client.panels.AbstractFilterablePanel;
|
||||
|
||||
public class FilterableSelectionTable<ContentType extends Serializable> extends FlowPanel {
|
||||
public class FilterableSelectionTable<ContentType extends Serializable> {
|
||||
|
||||
private final Set<FilterSelectionChangedListener> listeners;
|
||||
|
||||
private final Collection<ContentType> allData;
|
||||
private int width;
|
||||
private int height;
|
||||
|
||||
private final FlowPanel mainPanel;
|
||||
private final AbstractFilterablePanel<ContentType> filterPanel;
|
||||
private String filterText;
|
||||
private final DataGrid<ContentType> table;
|
||||
private final CellTable<ContentType> table;
|
||||
private final ControllableMultiSelectionModel<ContentType> selectionModel;
|
||||
private final ListDataProvider<ContentType> dataProvider;
|
||||
|
||||
@@ -34,7 +35,8 @@ public class FilterableSelectionTable<ContentType extends Serializable> extends
|
||||
|
||||
allData = new ArrayList<ContentType>();
|
||||
|
||||
table = new DataGrid<ContentType>();
|
||||
table = new CellTable<>();
|
||||
table.setWidth("100%");
|
||||
table.setAutoHeaderRefreshDisabled(true);
|
||||
table.setAutoFooterRefreshDisabled(true);
|
||||
|
||||
@@ -44,6 +46,7 @@ public class FilterableSelectionTable<ContentType extends Serializable> extends
|
||||
return FilterableSelectionTable.this.getElementAsString(content);
|
||||
}
|
||||
};
|
||||
contentColumn.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
|
||||
table.addColumn(contentColumn);
|
||||
|
||||
selectionModel = new ControllableMultiSelectionModel<ContentType>();
|
||||
@@ -77,8 +80,9 @@ public class FilterableSelectionTable<ContentType extends Serializable> extends
|
||||
filterPanel.setVisible(false);
|
||||
filterText = "";
|
||||
|
||||
add(filterPanel);
|
||||
add(table);
|
||||
mainPanel = new FlowPanel();
|
||||
mainPanel.add(filterPanel);
|
||||
mainPanel.add(table);
|
||||
}
|
||||
|
||||
private String getElementAsString(ContentType element) {
|
||||
@@ -214,24 +218,14 @@ public class FilterableSelectionTable<ContentType extends Serializable> extends
|
||||
}
|
||||
|
||||
filterPanel.setVisible(visible);
|
||||
resizeTo(width, height);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setVisible(boolean visible) {
|
||||
super.setVisible(visible);
|
||||
//FIXME Force a rerendering of the table. Switching the retriever level fixes the display
|
||||
mainPanel.setVisible(visible);
|
||||
}
|
||||
|
||||
public void resizeTo(int widthInPX, int heightInPX) {
|
||||
width = widthInPX;
|
||||
height = heightInPX;
|
||||
|
||||
setSize(width + "px", height+ "px");
|
||||
filterPanel.setWidth(width + "px");
|
||||
int tableHeight = filterPanel.isVisible() ? Math.max(0, height - filterPanel.getOffsetHeight()) : height;
|
||||
table.setSize(width + "px", tableHeight + "px");
|
||||
//FIXME Force a rerendering of the table. Switching the retriever level fixes the display
|
||||
|
||||
public Widget getWidget() {
|
||||
return mainPanel;
|
||||
}
|
||||
|
||||
}
|
||||
+3
-16
@@ -17,7 +17,6 @@ import com.google.gwt.i18n.client.LocaleInfo;
|
||||
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
|
||||
import com.google.gwt.user.cellview.client.CellList;
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.ui.CustomScrollPanel;
|
||||
import com.google.gwt.user.client.ui.DockLayoutPanel;
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
import com.google.gwt.user.client.ui.ScrollPanel;
|
||||
@@ -58,7 +57,7 @@ public class ListRetrieverChainFilterSelectionProvider implements FilterSelectio
|
||||
private final CellList<LocalizedTypeDTO> retrieverLevelList;
|
||||
private final SingleSelectionModel<LocalizedTypeDTO> retrieverLevelSelectionModel;
|
||||
private final ListDataProvider<LocalizedTypeDTO> retrieverLevelDataProvider;
|
||||
private final SizeProvidingScrollPanel selectionPanel;
|
||||
private final ScrollPanel selectionPanel;
|
||||
private final FilterSelectionPresenter selectionPresenter;
|
||||
private final ScrollPanel selectionPresenterScrollPanel;
|
||||
|
||||
@@ -86,7 +85,7 @@ public class ListRetrieverChainFilterSelectionProvider implements FilterSelectio
|
||||
|
||||
DockLayoutPanel selectionDockLayoutPanel = new DockLayoutPanel(Unit.PX);
|
||||
selectionDockLayoutPanel.addNorth(new Label(this.stringMessages.filterBy()), 18);
|
||||
selectionPanel = new SizeProvidingScrollPanel();
|
||||
selectionPanel = new ScrollPanel();
|
||||
selectionDockLayoutPanel.add(selectionPanel);
|
||||
|
||||
selectionPresenter = new PlainFilterSelectionPresenter(stringMessages, retrieverChainProvider, this);
|
||||
@@ -149,7 +148,7 @@ public class ListRetrieverChainFilterSelectionProvider implements FilterSelectio
|
||||
LocalizedTypeDTO retrievedDataType = retrieverChain.getRetrievedDataType(retrieverLevel);
|
||||
RetrieverLevelFilterSelectionProvider selectionProvider =
|
||||
new RetrieverLevelFilterSelectionProvider(session, dataMiningService, errorReporter, ListRetrieverChainFilterSelectionProvider.this, retrieverChain,
|
||||
retrievedDataType, retrieverLevel, selectionPanel);
|
||||
retrievedDataType, retrieverLevel);
|
||||
selectionProvider.setAvailableDimensions(dimensionsEntry.getValue());
|
||||
selectionProvidersMappedByRetrievedDataType.put(retrievedDataType, selectionProvider);
|
||||
|
||||
@@ -337,18 +336,6 @@ public class ListRetrieverChainFilterSelectionProvider implements FilterSelectio
|
||||
super.setSelected(item, selected);
|
||||
}
|
||||
}
|
||||
|
||||
private class SizeProvidingScrollPanel extends CustomScrollPanel implements RetrieverLevelFilterSelectionProvider.SizeProvider {
|
||||
@Override
|
||||
public int getFreeWidthInPX() {
|
||||
return getOffsetWidth() - getVerticalScrollbar().asWidget().getOffsetWidth();
|
||||
}
|
||||
@Override
|
||||
public int getFreeHeightInPX() {
|
||||
//Subtracting a value prevents weird scroll behavior
|
||||
return getOffsetHeight() - getHorizontalScrollbar().asWidget().getOffsetHeight() - 3;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getLocalizedShortName() {
|
||||
|
||||
+5
-29
@@ -9,9 +9,8 @@ import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.google.gwt.dom.client.Style.Display;
|
||||
import com.google.gwt.user.client.ui.HorizontalPanel;
|
||||
import com.google.gwt.user.client.ui.ProvidesResize;
|
||||
import com.google.gwt.user.client.ui.RequiresResize;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.gwt.ui.datamining.DataMiningServiceAsync;
|
||||
import com.sap.sse.common.settings.AbstractSettings;
|
||||
@@ -35,13 +34,12 @@ public class RetrieverLevelFilterSelectionProvider implements Component<Abstract
|
||||
private final int retrieverLevel;
|
||||
private final Collection<FunctionDTO> availableDimensions;
|
||||
|
||||
private final HorizontalLayoutPanel mainPanel;
|
||||
private final HorizontalPanel mainPanel;
|
||||
private final Collection<DimensionFilterSelectionProvider> dimensionSelectionProviders;
|
||||
private final SizeProvider sizeProvider;
|
||||
|
||||
public RetrieverLevelFilterSelectionProvider(DataMiningSession session, DataMiningServiceAsync dataMiningService,
|
||||
ErrorReporter errorReporter, ListRetrieverChainFilterSelectionProvider retrieverChainSelectionProvider, DataRetrieverChainDefinitionDTO retrieverChain,
|
||||
LocalizedTypeDTO retrievedDataType, int retrieverLevel, SizeProvider sizeProvider) {
|
||||
LocalizedTypeDTO retrievedDataType, int retrieverLevel) {
|
||||
this.dataMiningService = dataMiningService;
|
||||
this.errorReporter = errorReporter;
|
||||
|
||||
@@ -52,10 +50,8 @@ public class RetrieverLevelFilterSelectionProvider implements Component<Abstract
|
||||
this.retrieverLevel = retrieverLevel;
|
||||
availableDimensions = new ArrayList<>();
|
||||
|
||||
mainPanel = new HorizontalLayoutPanel();
|
||||
mainPanel = new HorizontalPanel();
|
||||
dimensionSelectionProviders = new ArrayList<>();
|
||||
|
||||
this.sizeProvider = sizeProvider;
|
||||
}
|
||||
|
||||
public void setAvailableDimensions(Collection<FunctionDTO> dimensions) {
|
||||
@@ -87,8 +83,8 @@ public class RetrieverLevelFilterSelectionProvider implements Component<Abstract
|
||||
|
||||
private void addDimensionSelectionProvider(DimensionFilterSelectionProvider dimensionFilter) {
|
||||
dimensionSelectionProviders.add(dimensionFilter);
|
||||
dimensionFilter.getEntryWidget().getElement().getStyle().setDisplay(Display.INLINE);
|
||||
mainPanel.add(dimensionFilter.getEntryWidget());
|
||||
mainPanel.onResize();
|
||||
}
|
||||
|
||||
boolean shouldRemoveDimensionSelectionProvider() {
|
||||
@@ -99,7 +95,6 @@ public class RetrieverLevelFilterSelectionProvider implements Component<Abstract
|
||||
dimensionFilter.clearSelection(); // Notifies the listeners, if values were selected
|
||||
dimensionSelectionProviders.remove(dimensionFilter);
|
||||
mainPanel.remove(dimensionFilter.getEntryWidget());
|
||||
mainPanel.onResize();
|
||||
}
|
||||
|
||||
void updateAvailableDimensions() {
|
||||
@@ -115,7 +110,6 @@ public class RetrieverLevelFilterSelectionProvider implements Component<Abstract
|
||||
remainingDimensions.add(null);
|
||||
dimensionFilter.setAvailableDimensions(remainingDimensions);
|
||||
}
|
||||
mainPanel.onResize();
|
||||
}
|
||||
|
||||
private Collection<FunctionDTO> getSelectedDimensions() {
|
||||
@@ -245,23 +239,5 @@ public class RetrieverLevelFilterSelectionProvider implements Component<Abstract
|
||||
public String getDependentCssClassName() {
|
||||
return "singleRetrieverLevelSelectionPanel";
|
||||
}
|
||||
|
||||
interface SizeProvider {
|
||||
|
||||
public int getFreeWidthInPX();
|
||||
public int getFreeHeightInPX();
|
||||
|
||||
}
|
||||
|
||||
private class HorizontalLayoutPanel extends HorizontalPanel implements RequiresResize, ProvidesResize {
|
||||
@Override
|
||||
public void onResize() {
|
||||
int heightInPX = sizeProvider.getFreeHeightInPX();
|
||||
setHeight(heightInPX + "px");
|
||||
for (DimensionFilterSelectionProvider selectionProvider : dimensionSelectionProviders) {
|
||||
selectionProvider.resizeToHeight(heightInPX);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user