Skip to content
Snippets Groups Projects
Commit f536726a authored by tpylak's avatar tpylak
Browse files

LMS-700 "cleaner" widget id handling in sample browser

SVN: 9663
parent b7e3ada2
No related branches found
No related tags found
No related merge requests found
......@@ -56,45 +56,73 @@ public final class SampleBrowserGrid extends AbstractBrowserGrid<Sample, SampleM
{
private static final String PREFIX = GenericConstants.ID_PREFIX + "sample-browser";
// browser consists of the grid and the paging toolbar
// browser consists of the grid and additional toolbars (paging, filtering)
public static final String BROWSER_ID = PREFIX + "_main";
public static final String GRID_ID = PREFIX + "_grid";
private final SampleBrowserToolbar topToolbar;
private final ICriteriaProvider criteriaProvider;
// criteria used in the previous refresh operation or null if it has not occurred yet
private ListSampleCriteria criteria;
private interface ICriteriaProvider
{
ListSampleCriteria tryGetCriteria();
}
public static DisposableComponent create(
final IViewContext<ICommonClientServiceAsync> viewContext)
{
final SampleBrowserToolbar toolbar = new SampleBrowserToolbar(viewContext);
final SampleBrowserGrid browserGrid = new SampleBrowserGrid(viewContext, toolbar);
ICriteriaProvider criteriaProvider = asCriteriaProvider(toolbar);
final SampleBrowserGrid browserGrid =
new SampleBrowserGrid(viewContext, criteriaProvider, GRID_ID, true, false);
browserGrid.extendTopToolbar(toolbar);
return browserGrid.asDisposableWithToolbar(toolbar);
}
private static ICriteriaProvider asCriteriaProvider(final SampleBrowserToolbar toolbar)
{
return new ICriteriaProvider()
{
public ListSampleCriteria tryGetCriteria()
{
return toolbar.tryGetCriteria();
}
};
}
public static DisposableComponent create(
final IViewContext<ICommonClientServiceAsync> viewContext, String experimentIdentifier,
String idSuffix)
final IViewContext<ICommonClientServiceAsync> viewContext,
final String experimentIdentifier, String gridId)
{
ListSampleCriteria criteria = new ListSampleCriteria();
criteria.setExperimentIdentifier(experimentIdentifier);
ICriteriaProvider criteriaProvider = new ICriteriaProvider()
{
public ListSampleCriteria tryGetCriteria()
{
ListSampleCriteria criteria = new ListSampleCriteria();
criteria.setExperimentIdentifier(experimentIdentifier);
return criteria;
}
};
final SampleBrowserGrid browserGrid =
new SampleBrowserGrid(viewContext, criteria, idSuffix);
new SampleBrowserGrid(viewContext, criteriaProvider, gridId, false, true);
return browserGrid.asDisposableWithoutToolbar();
}
private SampleBrowserGrid(final IViewContext<ICommonClientServiceAsync> viewContext,
SampleBrowserToolbar topToolbar)
ICriteriaProvider criteriaProvider, String gridId, boolean showHeader,
boolean refreshAutomatically)
{
super(viewContext, GRID_ID);
this.topToolbar = topToolbar;
extendToolbar();
super(viewContext, gridId, showHeader, refreshAutomatically);
this.criteriaProvider = criteriaProvider;
setId(BROWSER_ID);
}
private void extendToolbar()
// adds show, show-details and invalidate buttons
private void extendTopToolbar(SampleBrowserToolbar toolbar)
{
String showDetailsTitle = viewContext.getMessage(Dict.BUTTON_SHOW_DETAILS);
Button showDetailsButton =
......@@ -103,39 +131,19 @@ public final class SampleBrowserGrid extends AbstractBrowserGrid<Sample, SampleM
String invalidateTitle = viewContext.getMessage(Dict.BUTTON_INVALIDATE);
Button invalidateButton = createSelectedItemDummyButton(invalidateTitle);
SelectionChangedListener<?> refreshButtonListener = addRefreshButton(topToolbar);
this.topToolbar.setCriteriaChangedListener(refreshButtonListener);
SelectionChangedListener<?> refreshButtonListener = addRefreshButton(toolbar);
toolbar.setCriteriaChangedListener(refreshButtonListener);
this.topToolbar.add(new FillToolItem());
this.topToolbar.add(new AdapterToolItem(showDetailsButton));
this.topToolbar.add(new SeparatorToolItem());
this.topToolbar.add(new AdapterToolItem(invalidateButton));
}
private SampleBrowserGrid(final IViewContext<ICommonClientServiceAsync> viewContext,
ListSampleCriteria criteria, String idSuffix)
{
super(viewContext, GRID_ID + idSuffix, false, true);
this.criteria = criteria;
this.topToolbar = null;
setId(BROWSER_ID);
toolbar.add(new FillToolItem());
toolbar.add(new AdapterToolItem(showDetailsButton));
toolbar.add(new SeparatorToolItem());
toolbar.add(new AdapterToolItem(invalidateButton));
}
@Override
protected boolean isRefreshEnabled()
{
return tryGetCriteria() != null;
}
private ListSampleCriteria tryGetCriteria()
{
if (topToolbar != null)
{
return topToolbar.tryGetCriteria();
} else
{
return criteria;
}
return criteriaProvider.tryGetCriteria() != null;
}
@Override
......@@ -221,7 +229,7 @@ public final class SampleBrowserGrid extends AbstractBrowserGrid<Sample, SampleM
@Override
protected final void refresh()
{
ListSampleCriteria newCriteria = tryGetCriteria();
ListSampleCriteria newCriteria = criteriaProvider.tryGetCriteria();
if (newCriteria == null)
{
return;
......
......@@ -31,7 +31,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Experiment;
*/
public class ExperimentSamplesSection extends SectionPanel
{
static final String PREFIX = "experiment-samples-section_";
private static final String PREFIX = "experiment-samples-section_";
private DisposableComponent sampleDisposableGrid;
......@@ -42,10 +42,16 @@ public class ExperimentSamplesSection extends SectionPanel
String experimentIdentifier = experiment.getIdentifier();
sampleDisposableGrid =
SampleBrowserGrid.create(viewContext.getCommonViewContext(), experimentIdentifier,
PREFIX + experimentIdentifier);
createId(experimentIdentifier));
add(sampleDisposableGrid.getComponent(), new RowData(-1, 200));
}
// @Private
static String createId(String experimentIdentifier)
{
return SampleBrowserGrid.GRID_ID + PREFIX + experimentIdentifier;
}
@Override
protected void onDetach()
{
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment