From da0c5174bc99119021fb08183de7b9278d4c92d9 Mon Sep 17 00:00:00 2001 From: tpylak <tpylak> Date: Wed, 1 Apr 2009 12:31:05 +0000 Subject: [PATCH] LMS-751 Automatic refresh: sample and material browser SVN: 10522 --- .../application/MatchingEntitiesPanel.java | 6 ++ .../LastModificationStateUpdater.java | 7 -- .../ui/experiment/ExperimentBrowserGrid.java | 1 - .../ui/grid/AbstractBrowserGrid.java | 8 --- .../ui/grid/AbstractSimpleBrowserGrid.java | 8 +++ .../ui/material/MaterialBrowserGrid.java | 67 ++++++++++++++++--- .../ui/material/MaterialBrowserToolbar.java | 23 ++++++- .../ui/sample/SampleBrowserGrid.java | 55 +++++++++++++-- .../ui/sample/SampleBrowserToolbar.java | 28 +++++++- 9 files changed, 172 insertions(+), 31 deletions(-) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/MatchingEntitiesPanel.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/MatchingEntitiesPanel.java index 4d75b1909c2..1231eb9606d 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/MatchingEntitiesPanel.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/MatchingEntitiesPanel.java @@ -20,6 +20,7 @@ import static ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModifica import static ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.edit; import java.util.List; +import java.util.Set; import com.extjs.gxt.ui.client.XDOM; import com.extjs.gxt.ui.client.widget.LayoutContainer; @@ -164,4 +165,9 @@ final class MatchingEntitiesPanel extends AbstractBrowserGrid<MatchingEntity, Ma createOrDelete(ObjectKind.PROPERTY_TYPE_ASSIGNMENT), createOrDelete(ObjectKind.VOCABULARY_TERM) }; } + + public void update(Set<DatabaseModificationKind> observedModifications) + { + refreshGridSilently(); + } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/LastModificationStateUpdater.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/LastModificationStateUpdater.java index d2024432c67..b231e678597 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/LastModificationStateUpdater.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/LastModificationStateUpdater.java @@ -52,12 +52,6 @@ class LastModificationStateUpdater extends AbstractAsyncCallback<LastModificatio this.lastSeenModificationStateOrNull = null; } - private void debug(String msg) - { - // TODO 2009-03-26, Tomasz Pylak: add proper logging - System.out.println("LMS Updater: " + msg); - } - public void update() { commonService.getLastModificationState(this); @@ -84,7 +78,6 @@ class LastModificationStateUpdater extends AbstractAsyncCallback<LastModificatio lastSeenModificationStateOrNull); if (unseenModifications.size() > 0) { - debug("new modifications detected: " + unseenModifications); modificationObserver.update(unseenModifications); } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserGrid.java index 7ae930dbfb8..14040b8d2a9 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserGrid.java @@ -281,7 +281,6 @@ public class ExperimentBrowserGrid extends AbstractBrowserGrid<Experiment, Exper return result; } - @Override public void update(Set<DatabaseModificationKind> observedModifications) { topToolbar.update(observedModifications); 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 b95c19434ce..e46c6e19d6e 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 @@ -207,14 +207,6 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends BaseEntityMod add(contentPanel); } - // TODO 2009-03-26, Tomasz Pylak: delete this and implement in subclasses - // !!!!!!!!!!!!!!!!!!!!!!!!! - public void update(Set<DatabaseModificationKind> observedModifications) - { - System.out.println("generic grid refresh requested: " + observedModifications); - refreshGridSilently(); - } - /** Refreshes the grid without showing the loading progress bar */ protected void refreshGridSilently() { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractSimpleBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractSimpleBrowserGrid.java index bcbe14093c5..912dc80df6c 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractSimpleBrowserGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractSimpleBrowserGrid.java @@ -16,10 +16,13 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid; +import java.util.Set; + import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync; import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.BaseEntityModel; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.IColumnDefinitionKind; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind; /** * Grid displaying all the entities without any criteria (useful when there is no specific toolbar). @@ -68,4 +71,9 @@ abstract public class AbstractSimpleBrowserGrid<T/* Entity */> extends { return new BaseEntityModel<T>(entity, getStaticColumnsDefinition()); } + + public void update(Set<DatabaseModificationKind> observedModifications) + { + refreshGridSilently(); + } } \ No newline at end of file diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/material/MaterialBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/material/MaterialBrowserGrid.java index ea491a5d04a..354364a5085 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/material/MaterialBrowserGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/material/MaterialBrowserGrid.java @@ -19,7 +19,10 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.materi import static ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.createOrDelete; import static ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.edit; +import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Set; import com.extjs.gxt.ui.client.event.SelectionChangedListener; import com.extjs.gxt.ui.client.widget.LayoutContainer; @@ -33,6 +36,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict; import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants; import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DispatcherHelper; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.IDatabaseModificationObserver; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItemFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.MaterialModel; import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.IClientPlugin; @@ -43,6 +47,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.AbstractBrowserGrid; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ColumnDefsAndConfigs; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.DisposableEntityChooser; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.SetUtils; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.IColumnDefinition; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ListMaterialCriteria; @@ -85,6 +90,8 @@ public class MaterialBrowserGrid extends AbstractBrowserGrid<Material, MaterialM * set. */ ListMaterialCriteria tryGetCriteria(); + + IDatabaseModificationObserver tryGetModificationObserver(); } /** @@ -107,10 +114,15 @@ public class MaterialBrowserGrid extends AbstractBrowserGrid<Material, MaterialM { return toolbar.tryGetCriteria(); } + + public IDatabaseModificationObserver tryGetModificationObserver() + { + return toolbar; + } }; final MaterialBrowserGrid browserGrid = createBrowserGrid(viewContext, criteriaProvider, detailsAvailable); - browserGrid.extendTopToolbar(toolbar); + browserGrid.extendTopToolbar(toolbar, detailsAvailable); return browserGrid.asDisposableWithToolbar(toolbar); } @@ -142,6 +154,11 @@ public class MaterialBrowserGrid extends AbstractBrowserGrid<Material, MaterialM { return new ListMaterialCriteria(initValue); } + + public IDatabaseModificationObserver tryGetModificationObserver() + { + return null; + } }; boolean detailsAvailable = false; final MaterialBrowserGrid browserGrid = @@ -178,16 +195,18 @@ public class MaterialBrowserGrid extends AbstractBrowserGrid<Material, MaterialM setId(BROWSER_ID); } - private void extendTopToolbar(MaterialBrowserToolbar toolbar) + private void extendTopToolbar(MaterialBrowserToolbar toolbar, boolean detailsAvailable) { SelectionChangedListener<?> refreshButtonListener = addRefreshButton(toolbar); toolbar.setCriteriaChangedListener(refreshButtonListener); toolbar.add(new FillToolItem()); - String editTitle = viewContext.getMessage(Dict.BUTTON_EDIT); - Button editButton = createSelectedItemButton(editTitle, asShowEntityInvoker(true)); - toolbar.add(new AdapterToolItem(editButton)); - + if (detailsAvailable) + { + String editTitle = viewContext.getMessage(Dict.BUTTON_EDIT); + Button editButton = createSelectedItemButton(editTitle, asShowEntityInvoker(true)); + toolbar.add(new AdapterToolItem(editButton)); + } } @Override @@ -304,8 +323,38 @@ public class MaterialBrowserGrid extends AbstractBrowserGrid<Material, MaterialM public DatabaseModificationKind[] getRelevantModifications() { - return new DatabaseModificationKind[] - { createOrDelete(ObjectKind.MATERIAL_TYPE), createOrDelete(ObjectKind.MATERIAL), - edit(ObjectKind.MATERIAL) }; + List<DatabaseModificationKind> relevantModifications = + new ArrayList<DatabaseModificationKind>(); + IDatabaseModificationObserver criteriaModificationObserver = + criteriaProvider.tryGetModificationObserver(); + if (criteriaModificationObserver != null) + { + SetUtils.addAll(relevantModifications, criteriaModificationObserver + .getRelevantModifications()); + } + relevantModifications.addAll(getGridRelevantModifications()); + return relevantModifications.toArray(DatabaseModificationKind.EMPTY_ARRAY); + } + + private static Set<DatabaseModificationKind> getGridRelevantModifications() + { + Set<DatabaseModificationKind> result = new HashSet<DatabaseModificationKind>(); + result.add(createOrDelete(ObjectKind.MATERIAL)); + result.add(edit(ObjectKind.MATERIAL)); + return result; + } + + public void update(Set<DatabaseModificationKind> observedModifications) + { + IDatabaseModificationObserver criteriaModificationObserver = + criteriaProvider.tryGetModificationObserver(); + if (criteriaModificationObserver != null) + { + criteriaModificationObserver.update(observedModifications); + } + if (SetUtils.containsAny(observedModifications, getGridRelevantModifications())) + { + refreshGridSilently(); + } } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/material/MaterialBrowserToolbar.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/material/MaterialBrowserToolbar.java index 0cb6f2d95be..67b632cb365 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/material/MaterialBrowserToolbar.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/material/MaterialBrowserToolbar.java @@ -16,6 +16,10 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.material; +import static ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.createOrDelete; + +import java.util.Set; + import com.extjs.gxt.ui.client.event.SelectionChangedListener; import com.extjs.gxt.ui.client.widget.toolbar.AdapterToolItem; import com.extjs.gxt.ui.client.widget.toolbar.LabelToolItem; @@ -26,15 +30,18 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAs import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict; import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants; import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.IDatabaseModificationObserver; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ListMaterialCriteria; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MaterialType; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.ObjectKind; /** * The toolbar of material browser. * * @author Izabela Adamczyk */ -class MaterialBrowserToolbar extends ToolBar +class MaterialBrowserToolbar extends ToolBar implements IDatabaseModificationObserver { public static final String ID = "material-browser-toolbar"; @@ -81,4 +88,18 @@ class MaterialBrowserToolbar extends ToolBar super.onRender(parent, pos); } + public DatabaseModificationKind[] getRelevantModifications() + { + return new DatabaseModificationKind[] + { createOrDelete(ObjectKind.MATERIAL_TYPE) }; + } + + public void update(Set<DatabaseModificationKind> observedModifications) + { + if (observedModifications.contains(createOrDelete(ObjectKind.MATERIAL_TYPE))) + { + selectMaterialTypeCombo.update(observedModifications); + } + } + } \ No newline at end of file diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserGrid.java index 618945ccdbd..41838a324e1 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserGrid.java @@ -19,7 +19,10 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample import static ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.createOrDelete; import static ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.edit; +import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Set; import com.extjs.gxt.ui.client.event.SelectionChangedListener; import com.extjs.gxt.ui.client.widget.LayoutContainer; @@ -34,6 +37,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict; import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants; import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DispatcherHelper; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.IDatabaseModificationObserver; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItemFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.SampleModel; import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.IClientPlugin; @@ -43,9 +47,10 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.IEditab import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.sample.CommonSampleColDefKind; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.AbstractBrowserGrid; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ColumnDefsAndConfigs; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IDisposableComponent; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ICellListener; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IDisposableComponent; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.listener.OpenEntityDetailsTabAction; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.SetUtils; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Experiment; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.IColumnDefinition; @@ -89,6 +94,8 @@ public final class SampleBrowserGrid extends AbstractBrowserGrid<Sample, SampleM private interface ICriteriaProvider { ListSampleCriteria tryGetCriteria(); + + IDatabaseModificationObserver tryGetModificationObserver(); } public static IDisposableComponent create( @@ -110,6 +117,11 @@ public final class SampleBrowserGrid extends AbstractBrowserGrid<Sample, SampleM { return toolbar.tryGetCriteria(); } + + public IDatabaseModificationObserver tryGetModificationObserver() + { + return toolbar; + } }; } @@ -125,6 +137,11 @@ public final class SampleBrowserGrid extends AbstractBrowserGrid<Sample, SampleM criteria.setExperimentIdentifier(experimentIdentifier); return criteria; } + + public IDatabaseModificationObserver tryGetModificationObserver() + { + return null; + } }; final SampleBrowserGrid browserGrid = @@ -313,8 +330,38 @@ public final class SampleBrowserGrid extends AbstractBrowserGrid<Sample, SampleM public DatabaseModificationKind[] getRelevantModifications() { - return new DatabaseModificationKind[] - { edit(ObjectKind.SAMPLE), createOrDelete(ObjectKind.SAMPLE), - createOrDelete(ObjectKind.SAMPLE_TYPE), createOrDelete(ObjectKind.GROUP) }; + List<DatabaseModificationKind> relevantModifications = + new ArrayList<DatabaseModificationKind>(); + IDatabaseModificationObserver criteriaModificationObserver = + criteriaProvider.tryGetModificationObserver(); + if (criteriaModificationObserver != null) + { + SetUtils.addAll(relevantModifications, criteriaModificationObserver + .getRelevantModifications()); + } + relevantModifications.addAll(getGridRelevantModifications()); + return relevantModifications.toArray(DatabaseModificationKind.EMPTY_ARRAY); + } + + private static Set<DatabaseModificationKind> getGridRelevantModifications() + { + Set<DatabaseModificationKind> result = new HashSet<DatabaseModificationKind>(); + result.add(createOrDelete(ObjectKind.SAMPLE)); + result.add(edit(ObjectKind.SAMPLE)); + return result; + } + + public void update(Set<DatabaseModificationKind> observedModifications) + { + IDatabaseModificationObserver criteriaModificationObserver = + criteriaProvider.tryGetModificationObserver(); + if (criteriaModificationObserver != null) + { + criteriaModificationObserver.update(observedModifications); + } + if (SetUtils.containsAny(observedModifications, getGridRelevantModifications())) + { + refreshGridSilently(); + } } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserToolbar.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserToolbar.java index c481c3b3223..c02c04beb71 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserToolbar.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserToolbar.java @@ -16,6 +16,10 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample; +import static ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.createOrDelete; + +import java.util.Set; + import com.extjs.gxt.ui.client.event.SelectionChangedListener; import com.extjs.gxt.ui.client.widget.toolbar.AdapterToolItem; import com.extjs.gxt.ui.client.widget.toolbar.LabelToolItem; @@ -26,10 +30,13 @@ import com.google.gwt.user.client.Element; import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict; import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants; import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.IDatabaseModificationObserver; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.GroupSelectionWidget; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Group; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ListSampleCriteria; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.ObjectKind; /** * The toolbar of sample browser. @@ -37,7 +44,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType; * @author Izabela Adamczyk * @author Christian Ribeaud */ -final class SampleBrowserToolbar extends ToolBar +final class SampleBrowserToolbar extends ToolBar implements IDatabaseModificationObserver { public static final String ID = "sample-browser-toolbar"; @@ -110,4 +117,23 @@ final class SampleBrowserToolbar extends ToolBar super.onRender(parent, pos); } + public DatabaseModificationKind[] getRelevantModifications() + { + return new DatabaseModificationKind[] + { createOrDelete(ObjectKind.SAMPLE_TYPE), createOrDelete(ObjectKind.GROUP) }; + } + + public void update(Set<DatabaseModificationKind> observedModifications) + { + if (observedModifications.contains(createOrDelete(ObjectKind.SAMPLE_TYPE))) + { + selectSampleTypeCombo.refreshStore(); + } + if (observedModifications.contains(createOrDelete(ObjectKind.GROUP))) + { + selectGroupCombo.refreshStore(); + } + + } + } \ No newline at end of file -- GitLab