diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java index 70a35b1237a26c2eb2a3ee564166ce38fa8266e8..fc9eb7269eedb1e773b760a320ca4ab3abacc974 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java @@ -81,6 +81,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ex import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.IDataRefreshCallback; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IDelegatedAction; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IMessageProvider; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.WidgetUtils; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.WindowUtils; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.GridCustomColumnInfo; @@ -199,6 +200,8 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends BaseEntityMod private IDataRefreshCallback refreshCallback; + private LayoutContainer bottomToolbars; + protected AbstractBrowserGrid(final IViewContext<ICommonClientServiceAsync> viewContext, String gridId, IDisplayTypeIDGenerator displayTypeIDGenerator) { @@ -230,7 +233,7 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends BaseEntityMod pagingToolbar.bind(pagingLoader); this.filterToolbar = new FilterToolbar<T>(viewContext, gridId, this, createApplyFiltersDelagator()); - final LayoutContainer bottomToolbars = createBottomToolbars(filterToolbar, pagingToolbar); + bottomToolbars = createBottomToolbars(filterToolbar, pagingToolbar); this.contentPanel = createEmptyContentPanel(); contentPanel.add(grid); contentPanel.setBottomComponent(bottomToolbars); @@ -249,6 +252,9 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends BaseEntityMod add(contentPanel); addRefreshDisplaySettingsListener(); + + WidgetUtils.setVisibleByStyle(bottomToolbars, false); + } private void addRefreshDisplaySettingsListener() @@ -644,6 +650,7 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends BaseEntityMod { pendingFetchConfigOrNull = null; refreshCallback.postRefresh(wasSuccessful); + WidgetUtils.setVisibleByStyle(bottomToolbars, true); } @Override @@ -877,14 +884,16 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends BaseEntityMod pagingToolbar.disableExportButton(); pagingToolbar.updateDefaultConfigButton(false); - // Need to reset filter fields *before* refreshing the gridso the list can be correctly + // Need to reset filter fields *before* refreshing the gridso the list can be + // correctly // retrieved filterToolbar.resetFilterFields(); // export and config buttons are enabled when ListEntitiesCallback is complete refresh(); - // Need to refresh the filter toolbar *after* refreshing the grid, because it has + // Need to refresh the filter toolbar *after* refreshing the grid, because it + // has // a dependency on information from the grid that gets updated with the refesh filterToolbar.refresh(); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/util/WidgetUtils.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/util/WidgetUtils.java index 1de135e617f93c190196049e46257436b74f71ea..c53fb6a79f60d01ab12b092efd2d2a47228830ef 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/util/WidgetUtils.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/util/WidgetUtils.java @@ -20,6 +20,7 @@ import com.extjs.gxt.ui.client.Style.Orientation; import com.extjs.gxt.ui.client.event.BaseEvent; import com.extjs.gxt.ui.client.event.Events; import com.extjs.gxt.ui.client.event.Listener; +import com.extjs.gxt.ui.client.widget.Component; import com.extjs.gxt.ui.client.widget.form.Radio; import com.extjs.gxt.ui.client.widget.form.RadioGroup; @@ -80,4 +81,19 @@ public class WidgetUtils return radioOrNull.getValue(); } } + + /** Allows to hide a component before rendering and render correctly later */ + public static void setVisibleByStyle(Component component, boolean visible) + { + if (visible) + { + component.removeStyleName("cisd-hidden"); + component.addStyleName("cisd-visible"); + } else + { + component.removeStyleName("cisd-visible"); + component.addStyleName("cisd-hidden"); + } + + } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/public/css/openbis.css b/openbis/source/java/ch/systemsx/cisd/openbis/public/css/openbis.css index 1221072aebfc3b03172d07ecd6ff7e9603aacf90..17dcd47b6405030498ceef4adafb9a449e52d64f 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/public/css/openbis.css +++ b/openbis/source/java/ch/systemsx/cisd/openbis/public/css/openbis.css @@ -220,4 +220,12 @@ body,div,td { .x-form-trigger-generate { background-image: url(../images/generate-trigger.gif) !important; cursor: pointer; +} + +.cisd-visible { + visibility: visible !important; +} + +.cisd-hidden { + visibility: hidden !important; } \ No newline at end of file