diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/AbstractTreeEntityPickerDialog.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/AbstractTreeEntityPickerDialog.java index 0daf35b55b75e23c28c316c894c34474c4d826ff..cf1bf8892c3c76d9af0870cf249b0aaeb6adae8f 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/AbstractTreeEntityPickerDialog.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/AbstractTreeEntityPickerDialog.java @@ -209,8 +209,9 @@ public abstract class AbstractTreeEntityPickerDialog extends AbstractEntityPicke FilterableMutableTreeNode category = new FilterableMutableTreeNode(Identifier.create(experiment)); category.add(UiUtilities.createWaitingNode()); - node.add(category); + node.add(category, false); } + node.filter(); } }; clientModel.listExperiments(action); @@ -231,8 +232,9 @@ public abstract class AbstractTreeEntityPickerDialog extends AbstractEntityPicke FilterableMutableTreeNode category = new FilterableMutableTreeNode(Identifier.create(sample)); category.add(UiUtilities.createWaitingNode()); - node.add(category); + node.add(category, false); } + node.filter(); } }; clientModel.listSamplesWithNoExperiments(action); diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/DataSetPickerDialog.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/DataSetPickerDialog.java index 52128a080073aedcc7afa6449d89ddd948ae8561..2553824dce0e1d89c4cfe3c320f9a7d1eb20972e 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/DataSetPickerDialog.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/DataSetPickerDialog.java @@ -62,12 +62,13 @@ public class DataSetPickerDialog extends AbstractTreeEntityPickerDialog { FilterableMutableTreeNode dataSetsNode = new FilterableMutableTreeNode(UiUtilities.DATA_SETS); - node.add(dataSetsNode); + node.add(dataSetsNode, false); for (DataSet dataSet : dataSets) { dataSetsNode.add(new FilterableMutableTreeNode(Identifier - .create(dataSet))); + .create(dataSet)), false); } + dataSetsNode.filter(); } for (Sample s : samplesDataSets.getSamples()) @@ -75,8 +76,9 @@ public class DataSetPickerDialog extends AbstractTreeEntityPickerDialog FilterableMutableTreeNode sampleNode = new FilterableMutableTreeNode(Identifier.create(s)); sampleNode.add(UiUtilities.createWaitingNode()); - node.add(sampleNode); + node.add(sampleNode, false); } + node.filter(); } }); } diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/SamplePickerDialog.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/SamplePickerDialog.java index ade5d7ac7a95d389505fb627323a20137fcd8e8c..be06696239e56c0d93dcb24e4053cba83e528283 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/SamplePickerDialog.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/SamplePickerDialog.java @@ -58,8 +58,9 @@ public class SamplePickerDialog extends AbstractTreeEntityPickerDialog FilterableMutableTreeNode sampleNode = new FilterableMutableTreeNode(Identifier.create(s)); sampleNode.add(UiUtilities.createWaitingNode()); - node.add(sampleNode); + node.add(sampleNode, false); } + node.filter(); } }; clientModel.listSamples(identifier, action); diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/tree/FilterableMutableTreeNode.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/tree/FilterableMutableTreeNode.java index 1333d257446ba3305bae4a492dbd57575ab8fac0..15e779b3a22509ca8c56ae7e539f08967af05eea 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/tree/FilterableMutableTreeNode.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/tree/FilterableMutableTreeNode.java @@ -17,6 +17,8 @@ package ch.systemsx.cisd.openbis.dss.client.api.gui.tree; import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; import java.util.Enumeration; import java.util.regex.Pattern; @@ -143,6 +145,14 @@ public class FilterableMutableTreeNode extends DefaultMutableTreeNode filtered.add(o); } } + Collections.sort(filtered, new Comparator<Object>() + { + @Override + public int compare(Object o1, Object o2) + { + return String.valueOf(o1).compareTo(String.valueOf(o2)); + } + }); setFiltered(filtered); } @@ -198,6 +208,11 @@ public class FilterableMutableTreeNode extends DefaultMutableTreeNode @Override public void add(MutableTreeNode o) + { + add(o, true); + } + + public void add(MutableTreeNode o, boolean filter) { super.add(o); if (o instanceof FilterableMutableTreeNode) @@ -205,6 +220,14 @@ public class FilterableMutableTreeNode extends DefaultMutableTreeNode FilterableMutableTreeNode filterableMutableTreeNode = (FilterableMutableTreeNode) o; filterableMutableTreeNode.setPattern(getPattern()); } + if (filter) + { + filter(); + } + } + + public void filter() + { filter(getPattern()); } @@ -223,7 +246,7 @@ public class FilterableMutableTreeNode extends DefaultMutableTreeNode public void removeAllChildren() { super.removeAllChildren(); - filter(getPattern()); + filter(); }