diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Dict.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Dict.java index df430166e4cdaf34d0c0f662fe8bf90052538369..a2dca0fa9ac73cadd0cae1bae3710d848fd59f3c 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Dict.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Dict.java @@ -383,6 +383,8 @@ public abstract class Dict public static final String MATCH_ANY = "match_any"; + public static final String BUTTON_CHANGE_QUERY = "button_change_query"; + // // Unclassified // diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/CriteriaWidget.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/CriteriaWidget.java index 0574ed092f2984812003d5f8b64574b411c0c84d..f20ad9e75f34fbdfe8af496eb9ff69b7b442cd7e 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/CriteriaWidget.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/CriteriaWidget.java @@ -34,6 +34,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SearchCriteria; */ public class CriteriaWidget extends VerticalPanel { + private final List<CriterionWidget> criteriaWidgets; private final MatchCriteriaRadio matchRadios; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/CriterionWidget.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/CriterionWidget.java index 1475580896b178caa00bb68d15fc5df8c83c9043..f91b859416fa5abe4149a91ebaaddb0556ceaac3 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/CriterionWidget.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/CriterionWidget.java @@ -110,6 +110,9 @@ public class CriterionWidget extends HorizontalPanel return idSuffix + "_" + generatedChildren; } + /** + * Adds a new {@link CriterionWidget} coping data from given the <em>name field</em>. + */ private void createNew() { CriterionWidget newCriterion = diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetSearchHitGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetSearchHitGrid.java index 4c1cf08ff94ade25bed77051c6630bf17947c11d..c40d6574a756195dea5089ac2e9b331ed53ea812 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetSearchHitGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetSearchHitGrid.java @@ -28,6 +28,8 @@ import com.extjs.gxt.ui.client.widget.button.Button; import com.extjs.gxt.ui.client.widget.button.ButtonBar; import com.extjs.gxt.ui.client.widget.layout.FitData; import com.extjs.gxt.ui.client.widget.layout.FitLayout; +import com.extjs.gxt.ui.client.widget.toolbar.FillToolItem; +import com.extjs.gxt.ui.client.widget.toolbar.SeparatorToolItem; import com.extjs.gxt.ui.client.widget.toolbar.TextToolItem; import com.extjs.gxt.ui.client.widget.toolbar.ToolBar; @@ -36,13 +38,10 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAs 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.model.AbstractEntityModel; import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.DataSetSearchHitModel; -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.AbstractSimpleBrowserGrid; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.DisposableComponent; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IColumnDefinitionKind; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IColumnDefinitionUI; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DataSetSearchHit; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.IColumnDefinition; @@ -51,12 +50,12 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableExportCriteri import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SearchCriteria; /** - * Grid with data set search hits. + * Grid with data set search results. * * @author Izabela Adamczyk */ public class DataSetSearchHitGrid extends - AbstractBrowserGrid<DataSetSearchHit, DataSetSearchHitModel> + AbstractSimpleBrowserGrid<DataSetSearchHit, DataSetSearchHitModel> { // browser consists of the grid and the paging toolbar public static final String BROWSER_ID = @@ -70,34 +69,21 @@ public class DataSetSearchHitGrid extends final IViewContext<ICommonClientServiceAsync> viewContext) { DataSetSearchHitGrid grid = new DataSetSearchHitGrid(viewContext); - return grid.asDisposableWithToolbar(new DataSetSearchToolbar(grid)); + return grid.asDisposableWithToolbar(new DataSetSearchToolbar(grid, viewContext + .getMessage(Dict.BUTTON_CHANGE_QUERY))); } private SearchCriteria criteria; private DataSetSearchHitGrid(IViewContext<ICommonClientServiceAsync> viewContext) { - super(viewContext, GRID_ID, true, true); + super(viewContext, BROWSER_ID, GRID_ID); searchWindow = new DataSetSearchWindow(); } - private static class DataSetSearchToolbar extends ToolBar - { - public DataSetSearchToolbar(final DataSetSearchHitGrid grid) - { - add(new TextToolItem("Change Query", new SelectionListener<ToolBarEvent>() - { - @Override - public void componentSelected(ToolBarEvent ce) - { - grid.showSearchDialog(); - } - })); - } - } - - private IColumnDefinitionKind<DataSetSearchHit>[] getStaticColumnsDefinition() + @Override + protected IColumnDefinitionKind<DataSetSearchHit>[] getStaticColumnsDefinition() { return DataSetSearchHitColDefKind.values(); } @@ -143,23 +129,61 @@ public class DataSetSearchHitGrid extends showSearchDialog(); return; } - super.refresh(criteria.toString(), false); + super.refresh(); } + private void showSearchDialog() + { + searchWindow.show(); + } + + // + // Helper classes + // + + /** + * Contains a button opening {@link DataSetSearchWindow}. + */ + private static class DataSetSearchToolbar extends ToolBar + { + public DataSetSearchToolbar(final DataSetSearchHitGrid grid, String buttonName) + { + add(new FillToolItem()); + add(new SeparatorToolItem()); + add(new TextToolItem(buttonName, new SelectionListener<ToolBarEvent>() + { + @Override + public void componentSelected(ToolBarEvent ce) + { + grid.showSearchDialog(); + } + })); + } + } + + /** + * Shows {@link CriteriaWidget}, allowing to specify search criteria. + * + * @author Izabela Adamczyk + */ private class DataSetSearchWindow extends Dialog { - static final int WIDTH = 550; + private static final int MARGIN = 5; + + private static final int HEIGHT = 400; + + private static final int WIDTH = 550; private CriteriaWidget criteriaWidget; public DataSetSearchWindow() { - setSize(WIDTH, 400); + setSize(WIDTH, HEIGHT); setModal(true); setScrollMode(Scroll.AUTOY); setLayout(new FitLayout()); setResizable(false); - add(criteriaWidget = new CriteriaWidget(viewContext), new FitData(5)); + add(criteriaWidget = new CriteriaWidget(viewContext), new FitData(MARGIN)); final ButtonBar bar = new ButtonBar(); bar.add(new Button(viewContext.getMessage(Dict.BUTTON_CANCEL)) { @@ -178,7 +202,7 @@ public class DataSetSearchHitGrid extends criteriaWidget.reset(); } }); - bar.add(new Button("Search") + bar.add(new Button(viewContext.getMessage(Dict.SEARCH_BUTTON)) { @Override protected void onClick(ComponentEvent ce) @@ -193,29 +217,4 @@ public class DataSetSearchHitGrid extends } } - private void showSearchDialog() - { - searchWindow.show(); - } - - @Override - protected ColumnDefsAndConfigs<DataSetSearchHit> createColumnsDefinition() - { - IColumnDefinitionKind<DataSetSearchHit>[] colDefKinds = getStaticColumnsDefinition(); - List<IColumnDefinitionUI<DataSetSearchHit>> colDefs = - AbstractEntityModel.createColumnsDefinition(colDefKinds, viewContext); - return ColumnDefsAndConfigs.create(colDefs); - } - - @Override - protected boolean isRefreshEnabled() - { - return false; - } - - @Override - protected void showEntityViewer(DataSetSearchHitModel modelData) - { - // do nothing - no viewer for datasets is available yet - } } \ No newline at end of file diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/public/common-dictionary.js b/openbis/source/java/ch/systemsx/cisd/openbis/public/common-dictionary.js index 3ba1bd43e6233f12cd8dd485abf0bb21a472079b..60a2cff7acc087e6b92c9928844bfd419116392b 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/public/common-dictionary.js +++ b/openbis/source/java/ch/systemsx/cisd/openbis/public/common-dictionary.js @@ -208,6 +208,7 @@ var common = { location: "Location", match_all: "Match all criteria", match_any: "Match any criteria", + button_change_query : "Change Query", // LAST LINE: KEEP IT AT THE END lastline: "" // we need a line without a comma