From 6e6cb47f16d478a2cd4fb638e46cf33026e8ed62 Mon Sep 17 00:00:00 2001 From: buczekp <buczekp> Date: Tue, 18 Jan 2011 10:02:57 +0000 Subject: [PATCH] [LMS-1949] added edit button and usage of input widgets (button action is broken) SVN: 19459 --- .../application/ManagedPropertySection.java | 15 ++- .../client/application/ui/AbstractViewer.java | 13 +- .../ui/AuthorizationGroupGrid.java | 2 +- .../web/client/application/ui/PersonGrid.java | 2 +- .../web/client/application/ui/SpaceGrid.java | 2 +- .../ui/attachment/AttachmentBrowser.java | 2 +- .../ui/data/AbstractExternalDataGrid.java | 2 +- .../ui/experiment/ExperimentBrowserGrid.java | 2 +- .../ui/grid/AbstractBrowserGrid.java | 12 +- .../column/GridCustomColumnGrid.java | 2 +- .../filter/GridCustomFilterGrid.java | 2 +- .../managed_property/ManagedPropertyGrid.java | 54 ++++++++- .../ManagedPropertyGridActionDialog.java | 114 ++++++++++++++++++ .../ManagedPropertyGridGeneratedCallback.java | 12 +- .../ui/material/MaterialBrowserGrid.java | 2 +- .../application/ui/project/ProjectGrid.java | 2 +- .../ui/property_type/PropertyTypeGrid.java | 2 +- .../ui/sample/SampleBrowserGrid.java | 2 +- .../application/ui/script/ScriptGrid.java | 2 +- .../ui/vocabulary/VocabularyGrid.java | 2 +- .../web/client/application/util/GWTUtils.java | 43 +++++-- .../basic/dto/ManagedUiDescription.java | 11 +- .../basic/dto/api/IManagedEntityProperty.java | 2 + .../basic/dto/api/IManagedUiDescription.java | 5 +- .../ManagedPropertyEvaluator.java | 9 +- .../application/module/QueryBrowserGrid.java | 2 +- .../SampleAbundanceBrowserGrid.java | 2 +- 27 files changed, 258 insertions(+), 64 deletions(-) create mode 100644 openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/managed_property/ManagedPropertyGridActionDialog.java diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ManagedPropertySection.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ManagedPropertySection.java index f9ef0a62269..1bab85cb8c9 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ManagedPropertySection.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ManagedPropertySection.java @@ -35,6 +35,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.IManagedPropertyGridInforma import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ManagedTableWidgetDescription; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ManagedWidgetType; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedEntityProperty; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedUiDescription; /** @@ -69,18 +70,19 @@ public class ManagedPropertySection extends DisposableTabContent private static String ID_PREFIX = "managed_property_section_"; - private final IManagedUiDescription uiDescription; - private final String gridIdSuffix; private final IDelegatedAction refreshAction; + private final IManagedEntityProperty managedProperty; + public ManagedPropertySection(final String header, IViewContext<?> viewContext, - IIdHolder ownerId, IManagedUiDescription uiDescription, IDelegatedAction refreshAction) + IIdHolder ownerId, IManagedEntityProperty managedProperty, + IDelegatedAction refreshAction) { super(header, viewContext, ownerId); + this.managedProperty = managedProperty; this.gridIdSuffix = Format.hyphenize(header); - this.uiDescription = uiDescription; this.refreshAction = refreshAction; setIds(new IDisplayTypeIDGenerator() { @@ -134,8 +136,8 @@ public class ManagedPropertySection extends DisposableTabContent { AsyncCallback<TableModelReference> callback = ManagedPropertyGridGeneratedCallback.create( - viewContext.getCommonViewContext(), gridInfo, - gridGeneratedAction, refreshAction); + viewContext.getCommonViewContext(), managedProperty, + gridInfo, gridGeneratedAction, refreshAction); viewContext.getCommonService().createReportForManagedProperty( tableDescriptionOrNull, callback); } @@ -149,6 +151,7 @@ public class ManagedPropertySection extends DisposableTabContent private ManagedTableWidgetDescription tryGetTableDescription() { + final IManagedUiDescription uiDescription = managedProperty.getUiDescription(); if (uiDescription.getOutputWidgetDescription() != null && uiDescription.getOutputWidgetDescription().getManagedWidgetType() == ManagedWidgetType.TABLE && uiDescription.getOutputWidgetDescription() instanceof ManagedTableWidgetDescription) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/AbstractViewer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/AbstractViewer.java index 007a78acaa9..f39f47c04c5 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/AbstractViewer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/AbstractViewer.java @@ -49,8 +49,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.ICodeHolder; import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolder; import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolderWithProperties; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ManagedEntityProperty; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedUiDescription; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedEntityProperty; /** * @author Franz-Josef Elmer @@ -248,14 +247,14 @@ public abstract class AbstractViewer<D extends IEntityInformationHolder> extends boolean sectionsAdded = false; for (final IEntityProperty property : entity.getProperties()) { - if (property instanceof ManagedEntityProperty) + if (property instanceof IManagedEntityProperty) { - ManagedEntityProperty managedProperty = (ManagedEntityProperty) property; + IManagedEntityProperty managedProperty = (IManagedEntityProperty) property; if (managedProperty.isOwnTab()) { TabContent managedSection = createManagedPropertySection(property.getPropertyType().getLabel(), - entity, managedProperty.getUiDescription()); + entity, managedProperty); container.addSection(managedSection); sectionsAdded = true; } @@ -268,7 +267,7 @@ public abstract class AbstractViewer<D extends IEntityInformationHolder> extends } protected TabContent createManagedPropertySection(final String header, - final IEntityInformationHolder ownerId, final IManagedUiDescription uiDescription) + final IEntityInformationHolder ownerId, final IManagedEntityProperty managedProperty) { IDelegatedAction refreshAction = new IDelegatedAction() { @@ -277,7 +276,7 @@ public abstract class AbstractViewer<D extends IEntityInformationHolder> extends reloadAllData(); } }; - return new ManagedPropertySection(header, viewContext, ownerId, uiDescription, + return new ManagedPropertySection(header, viewContext, ownerId, managedProperty, refreshAction); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/AuthorizationGroupGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/AuthorizationGroupGrid.java index 60df0b21029..6b479389cd4 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/AuthorizationGroupGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/AuthorizationGroupGrid.java @@ -152,7 +152,7 @@ public class AuthorizationGroupGrid extends AbstractSimpleBrowserGrid<Authorizat IBrowserGridActionInvoker invoker) { return new GroupListDeletionConfirmationDialog(viewContext, - selected, createDeletionCallback(invoker)); + selected, createRefreshCallback(invoker)); } }); deleteButton.setId(DELETE_BUTTON_ID); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/PersonGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/PersonGrid.java index 205bbe06040..119dccf50dc 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/PersonGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/PersonGrid.java @@ -156,7 +156,7 @@ public class PersonGrid extends AbstractSimpleBrowserGrid<Person> { return new PersonListDeletionConfirmationDialog( viewContext, selected, authorizationGroupOrNull, - createDeletionCallback(invoker)); + createRefreshCallback(invoker)); } }); deleteButton.setId(createRemoveButtonId(authorizationGroupOrNull)); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/SpaceGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/SpaceGrid.java index 481f4fa9879..3caf7d61037 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/SpaceGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/SpaceGrid.java @@ -129,7 +129,7 @@ public class SpaceGrid extends TypedTableGrid<Space> IBrowserGridActionInvoker invoker) { return new GroupListDeletionConfirmationDialog(viewContext, - groups, createDeletionCallback(invoker)); + groups, createRefreshCallback(invoker)); } }); addButton(deleteButton); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/attachment/AttachmentBrowser.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/attachment/AttachmentBrowser.java index 71a597860e4..0d9feb288fb 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/attachment/AttachmentBrowser.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/attachment/AttachmentBrowser.java @@ -304,7 +304,7 @@ public class AttachmentBrowser extends AbstractSimpleBrowserGrid<AttachmentVersi IBrowserGridActionInvoker invoker) { return new AttachmentListDeletionConfirmationDialog(viewContext, - attachmentVersions, createDeletionCallback(invoker), + attachmentVersions, createRefreshCallback(invoker), attachmentHolder); } })); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/AbstractExternalDataGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/AbstractExternalDataGrid.java index 59cc2eb2f0c..35fad9abce4 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/AbstractExternalDataGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/AbstractExternalDataGrid.java @@ -147,7 +147,7 @@ public abstract class AbstractExternalDataGrid IBrowserGridActionInvoker invoker) { return new DataSetListDeletionConfirmationDialog(viewContext, - createDeletionCallback(invoker), + createRefreshCallback(invoker), getSelectedAndDisplayedItemsAction().execute()); } }); 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 559220334f6..57c1be5fe27 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 @@ -207,7 +207,7 @@ public class ExperimentBrowserGrid extends IBrowserGridActionInvoker invoker) { return new ExperimentListDeletionConfirmationDialog(viewContext, - createDeletionCallback(invoker), getDisplayedAndSelectedItemsAction() + createRefreshCallback(invoker), getDisplayedAndSelectedItemsAction() .execute()); } }); 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 af01943174d..e8593eea522 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 @@ -1695,19 +1695,19 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends BaseEntityMod return selectedColumnDefs; } - /** Creates deletion callback that refreshes the grid. */ - protected final AbstractAsyncCallback<Void> createDeletionCallback( + /** Creates callback that refreshes the grid. */ + protected final AbstractAsyncCallback<Void> createRefreshCallback( IBrowserGridActionInvoker invoker) { - return new DeletionCallback(viewContext, invoker); + return new RefreshCallback(viewContext, invoker); } - /** Deletion callback that refreshes the grid. */ - private static final class DeletionCallback extends AbstractAsyncCallback<Void> + /** Callback that refreshes the grid. */ + private static final class RefreshCallback extends AbstractAsyncCallback<Void> { private final IBrowserGridActionInvoker invoker; - public DeletionCallback(IViewContext<?> viewContext, IBrowserGridActionInvoker invoker) + public RefreshCallback(IViewContext<?> viewContext, IBrowserGridActionInvoker invoker) { super(viewContext); this.invoker = invoker; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/expressions/column/GridCustomColumnGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/expressions/column/GridCustomColumnGrid.java index 6b31ad47ea2..e5fb71ed2f9 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/expressions/column/GridCustomColumnGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/expressions/column/GridCustomColumnGrid.java @@ -131,7 +131,7 @@ public class GridCustomColumnGrid extends AbstractSimpleBrowserGrid<GridCustomCo IBrowserGridActionInvoker invoker) { return new DeletionConfirmationDialog(viewContext, selected, - createDeletionCallback(invoker)); + createRefreshCallback(invoker)); } }); addButton(deleteButton); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/expressions/filter/GridCustomFilterGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/expressions/filter/GridCustomFilterGrid.java index 17b250e726e..418b90d8413 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/expressions/filter/GridCustomFilterGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/expressions/filter/GridCustomFilterGrid.java @@ -127,7 +127,7 @@ public class GridCustomFilterGrid extends AbstractSimpleBrowserGrid<GridCustomFi IBrowserGridActionInvoker invoker) { return new DeletionConfirmationDialog(viewContext, selected, - createDeletionCallback(invoker)); + createRefreshCallback(invoker)); } }); addButton(deleteButton); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/managed_property/ManagedPropertyGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/managed_property/ManagedPropertyGrid.java index 4e25891aa8e..410608b37f4 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/managed_property/ManagedPropertyGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/managed_property/ManagedPropertyGrid.java @@ -16,13 +16,17 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.managed_property; +import java.util.List; import java.util.Set; +import com.extjs.gxt.ui.client.widget.Dialog; import com.extjs.gxt.ui.client.widget.Info; +import com.extjs.gxt.ui.client.widget.button.Button; import com.google.gwt.user.client.rpc.AsyncCallback; import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync; import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback; +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.DisplayTypeIDGenerator; @@ -40,6 +44,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKin import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.ObjectKind; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Null; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedEntityProperty; /** * @author Piotr Buczek @@ -51,13 +56,13 @@ public class ManagedPropertyGrid extends TypedTableGrid<Null> public static IDisposableComponent create( final IViewContext<ICommonClientServiceAsync> viewContext, - TableModelReference tableModelReference, + IManagedEntityProperty managedProperty, TableModelReference tableModelReference, IManagedPropertyGridInformationProvider gridInformation, IDelegatedAction onRefreshAction) { final ManagedPropertyGrid grid = - new ManagedPropertyGrid(viewContext, tableModelReference, gridInformation, - onRefreshAction); + new ManagedPropertyGrid(viewContext, managedProperty, tableModelReference, + gridInformation, onRefreshAction); return grid.asDisposableWithoutToolbar(); } @@ -72,17 +77,55 @@ public class ManagedPropertyGrid extends TypedTableGrid<Null> private final IDelegatedAction onRefreshAction; + private final IManagedEntityProperty managedProperty; + private ManagedPropertyGrid(IViewContext<ICommonClientServiceAsync> viewContext, - TableModelReference tableModelReference, + IManagedEntityProperty managedProperty, TableModelReference tableModelReference, IManagedPropertyGridInformationProvider gridInformation, IDelegatedAction onRefreshAction) { super(viewContext, BROWSER_ID, true, DisplayTypeIDGenerator.DATA_SET_REPORTING_GRID); + this.managedProperty = managedProperty; this.onRefreshAction = onRefreshAction; setId(BROWSER_ID); this.resultSetKey = tableModelReference.getResultSetKey(); this.gridKind = gridInformation.getKey(); updateDefaultRefreshButton(); + extendBottomToolbar(); + } + + // adds action buttons + private void extendBottomToolbar() + { + if (viewContext.isSimpleMode()) + { + return; + } + addEntityOperationsLabel(); + addEntityOperationButtons(); + addEntityOperationsSeparator(); + } + + private void addEntityOperationButtons() + { + // For now we have only one fixed action to modify + // but in future we want to support different actions (create/update/delete). + + final String editTitle = viewContext.getMessage(Dict.BUTTON_EDIT); + Button editButton = new Button(editTitle, new AbstractCreateDialogListener() + { + + @Override + protected Dialog createDialog(List<TableModelRowWithObject<Null>> data, + IBrowserGridActionInvoker invoker) + { + AsyncCallback<Void> callback = createRefreshCallback(invoker); + return new ManagedPropertyGridActionDialog(viewContext, data, callback, + managedProperty, editTitle); + } + }); + + addButton(editButton); } @Override @@ -111,6 +154,8 @@ public class ManagedPropertyGrid extends TypedTableGrid<Null> viewContext.getService().prepareExportReport(exportCriteria, callback); } + // FIXME auto refresh doesn't work + @Override public DatabaseModificationKind[] getRelevantModifications() { @@ -160,4 +205,5 @@ public class ManagedPropertyGrid extends TypedTableGrid<Null> } }; } + } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/managed_property/ManagedPropertyGridActionDialog.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/managed_property/ManagedPropertyGridActionDialog.java new file mode 100644 index 00000000000..b802435b538 --- /dev/null +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/managed_property/ManagedPropertyGridActionDialog.java @@ -0,0 +1,114 @@ +/* + * Copyright 2009 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.managed_property; + +import java.util.List; + +import com.extjs.gxt.ui.client.widget.Info; +import com.extjs.gxt.ui.client.widget.form.TextField; +import com.google.gwt.user.client.rpc.AsyncCallback; + + +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.ui.widget.AbstractDataConfirmationDialog; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Null; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedEntityProperty; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedInputWidgetDescription; + + +public final class ManagedPropertyGridActionDialog extends + AbstractDataConfirmationDialog<List<TableModelRowWithObject<Null>>> +{ + + @SuppressWarnings("unused") + private final IViewContext<ICommonClientServiceAsync> viewContext; + + @SuppressWarnings("unused") + private final List<TableModelRowWithObject<Null>> data; + + @SuppressWarnings("unused") + private final AsyncCallback<Void> callback; + + private final IManagedEntityProperty managedProperty; + + private List<TextField<String>> inputFields; + + public ManagedPropertyGridActionDialog(IViewContext<ICommonClientServiceAsync> viewContext, + List<TableModelRowWithObject<Null>> data, AsyncCallback<Void> callback, + IManagedEntityProperty managedProperty, String title) + { + super(viewContext, data, title); + this.viewContext = viewContext; + this.data = data; + this.managedProperty = managedProperty; + this.callback = callback; + setWidth(400); + } + + @Override + protected String createMessage() + { + return "Update property"; // TODO + } + + @Override + protected void executeConfirmedAction() + { + StringBuilder sb = new StringBuilder(); + for (TextField<String> inputField : inputFields) + { + sb.append(inputField.getFieldLabel() + ": " + inputField.getValue() + "\n"); + } + Info.display("confirmed", sb.toString()); + // TODO + // AsyncCallback<Void> callbackWithProgressBar = + // AsyncCallbackWithProgressBar.decorate(callback, "Deleting samples..."); + // if (selectedAndDisplayedItemsOrNull != null) + // { + // final DisplayedOrSelectedIdHolderCriteria<T> uploadCriteria = + // selectedAndDisplayedItemsOrNull.createCriteria(isOnlySelected()); + // viewContext.getCommonService().deleteSamples(uploadCriteria, reason.getValue(), + // callbackWithProgressBar); + // } else + // { + // viewContext.getCommonService().deleteSample(TechId.create(singleDataOrNull), + // reason.getValue(), callbackWithProgressBar); + // } + } + + @Override + protected void extendForm() + { + formPanel.setLabelWidth(100); + formPanel.setFieldWidth(200); + for (IManagedInputWidgetDescription inputDescription : managedProperty.getUiDescription() + .getInputWidgetDescriptions()) + { + final TextField<String> field = new TextField<String>(); + field.setFieldLabel(inputDescription.getLabel()); + if (inputDescription.getValue() != null) + { + field.setValue(inputDescription.getValue()); + } + inputFields.add(field); + formPanel.add(field); + } + } + +} diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/managed_property/ManagedPropertyGridGeneratedCallback.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/managed_property/ManagedPropertyGridGeneratedCallback.java index 7c7603e236d..474a23e4f03 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/managed_property/ManagedPropertyGridGeneratedCallback.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/managed_property/ManagedPropertyGridGeneratedCallback.java @@ -28,6 +28,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ID import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IDelegatedAction; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableModelReference; import ch.systemsx.cisd.openbis.generic.shared.basic.IManagedPropertyGridInformationProvider; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedEntityProperty; /** * @author Piotr Buczek @@ -48,23 +49,28 @@ public class ManagedPropertyGridGeneratedCallback extends private final IDelegatedAction onRefreshAction; + private final IManagedEntityProperty managedProperty; + public static AsyncCallback<TableModelReference> create( IViewContext<ICommonClientServiceAsync> viewContext, + IManagedEntityProperty managedProperty, IManagedPropertyGridInformationProvider gridInfo, IOnGridComponentGeneratedAction onGridGeneratedAction, IDelegatedAction onRefreshAction) { return AsyncCallbackWithProgressBar.decorate(new ManagedPropertyGridGeneratedCallback( - viewContext, gridInfo, onGridGeneratedAction, onRefreshAction), + viewContext, managedProperty, gridInfo, onGridGeneratedAction, onRefreshAction), "Generating the table..."); } private ManagedPropertyGridGeneratedCallback( IViewContext<ICommonClientServiceAsync> viewContext, + IManagedEntityProperty managedProperty, IManagedPropertyGridInformationProvider gridInfo, IOnGridComponentGeneratedAction onGridGeneratedAction, IDelegatedAction onRefreshAction) { super(viewContext); this.viewContext = viewContext; + this.managedProperty = managedProperty; this.gridInfo = gridInfo; this.onGridGeneratedAction = onGridGeneratedAction; this.onRefreshAction = onRefreshAction; @@ -74,8 +80,8 @@ public class ManagedPropertyGridGeneratedCallback extends protected void process(final TableModelReference tableModelReference) { final IDisposableComponent reportComponent = - ManagedPropertyGrid.create(viewContext, tableModelReference, gridInfo, - onRefreshAction); + ManagedPropertyGrid.create(viewContext, managedProperty, tableModelReference, + gridInfo, onRefreshAction); onGridGeneratedAction.execute(reportComponent); if (StringUtils.isBlank(tableModelReference.tryGetMessage()) == false) { 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 057f2b8e0be..6d555f45058 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 @@ -194,7 +194,7 @@ public class MaterialBrowserGrid extends IBrowserGridActionInvoker invoker) { return new MaterialListDeletionConfirmationDialog(viewContext, materials, - createDeletionCallback(invoker), getDisplayedAndSelectedItemsAction() + createRefreshCallback(invoker), getDisplayedAndSelectedItemsAction() .execute()); } }); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/project/ProjectGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/project/ProjectGrid.java index 08ec5caeb4f..5bec4ac0cb4 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/project/ProjectGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/project/ProjectGrid.java @@ -152,7 +152,7 @@ public class ProjectGrid extends TypedTableGrid<Project> projects.add(row.getObjectOrNull()); } return new ProjectListDeletionConfirmationDialog(viewContext, - projects , createDeletionCallback(invoker)); + projects , createRefreshCallback(invoker)); } }); addButton(deleteButton); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeGrid.java index 5e6ed8f8cef..b5827209c5c 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeGrid.java @@ -133,7 +133,7 @@ public class PropertyTypeGrid extends AbstractSimpleBrowserGrid<PropertyType> IBrowserGridActionInvoker invoker) { return new PropertyTypeListDeletionConfirmationDialog(viewContext, - propertyTypes, createDeletionCallback(invoker)); + propertyTypes, createRefreshCallback(invoker)); } @Override 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 46723308627..2a2b24c3c94 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 @@ -661,7 +661,7 @@ public class SampleBrowserGrid extends TypedTableGrid<Sample> protected Dialog createDialog(List<TableModelRowWithObject<Sample>> samples, IBrowserGridActionInvoker invoker) { - AsyncCallback<Void> callback = createDeletionCallback(invoker); + AsyncCallback<Void> callback = createRefreshCallback(invoker); DisplayedAndSelectedEntities<TableModelRowWithObject<Sample>> s = getDisplayedAndSelectedItemsAction().execute(); return new SampleListDeletionConfirmationDialog<TableModelRowWithObject<Sample>>( diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/script/ScriptGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/script/ScriptGrid.java index 8f0589668de..11673e85765 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/script/ScriptGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/script/ScriptGrid.java @@ -137,7 +137,7 @@ public class ScriptGrid extends AbstractSimpleBrowserGrid<Script> IBrowserGridActionInvoker invoker) { return new ScriptListDeletionConfirmationDialog(viewContext, - scripts, createDeletionCallback(invoker)); + scripts, createRefreshCallback(invoker)); } }); addButton(deleteButton); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/vocabulary/VocabularyGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/vocabulary/VocabularyGrid.java index 3f3267295bd..f9efdd92c28 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/vocabulary/VocabularyGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/vocabulary/VocabularyGrid.java @@ -244,7 +244,7 @@ public class VocabularyGrid extends TypedTableGrid<Vocabulary> IBrowserGridActionInvoker invoker) { return new VocabularyListDeletionConfirmationDialog(viewContext, - vocabularies, createDeletionCallback(invoker)); + vocabularies, createRefreshCallback(invoker)); } @Override diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/util/GWTUtils.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/util/GWTUtils.java index 32c6cc49439..3bb4f5b929b 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/util/GWTUtils.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/util/GWTUtils.java @@ -27,6 +27,8 @@ import com.extjs.gxt.ui.client.event.Listener; import com.extjs.gxt.ui.client.store.ListStore; import com.extjs.gxt.ui.client.util.TextMetrics; import com.extjs.gxt.ui.client.widget.Component; +import com.extjs.gxt.ui.client.widget.Info; +import com.extjs.gxt.ui.client.widget.InfoConfig; import com.extjs.gxt.ui.client.widget.form.ComboBox; import com.extjs.gxt.ui.client.widget.form.Field; import com.extjs.gxt.ui.client.widget.grid.GridSelectionModel; @@ -405,10 +407,6 @@ public final class GWTUtils }); } - // - // native JavaScript - // - /** * Returns the <i>search</i> of a <i>Javascript</i> window location (without the starting * <code>?</code> if any). @@ -420,6 +418,35 @@ public final class GWTUtils return Location.getQueryString(); } + /** + * Whether this application is deployed. + */ + public final static boolean isDeployed() + { + return GWT.isScript(); + } + + public final static void displayInfo(String title) + { + displayInfo(title, ""); + } + + public final static void displayInfo(String title, String text) + { + displayInfo(title, text, 10000); // 10s + } + + public final static void displayInfo(String title, String text, int displayTime) + { + InfoConfig config = new InfoConfig(title, text); + config.display = displayTime; + Info.display(config); + } + + // + // native JavaScript + // + /** * Tooltip template displayed when mouse is over drop down list. */ @@ -436,12 +463,4 @@ public final class GWTUtils ].join(""); }-*/; - /** - * Whether this application is deployed. - */ - public final static boolean isDeployed() - { - return GWT.isScript(); - } - } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ManagedUiDescription.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ManagedUiDescription.java index 36284f9385b..04b39dac555 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ManagedUiDescription.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ManagedUiDescription.java @@ -16,10 +16,12 @@ package ch.systemsx.cisd.openbis.generic.shared.basic.dto; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import ch.systemsx.cisd.openbis.generic.shared.basic.ISerializable; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedInputWidgetDescription; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedUiDescription; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedWidgetDescription; @@ -34,7 +36,8 @@ public class ManagedUiDescription implements IManagedUiDescription, ISerializabl private IManagedWidgetDescription outputWidgetDescription; - private List<ManagedInputWidgetDescription> inputWidgetDescriptions; + private List<IManagedInputWidgetDescription> inputWidgetDescriptions = + new ArrayList<IManagedInputWidgetDescription>(); public ManagedUiDescription() { @@ -50,17 +53,17 @@ public class ManagedUiDescription implements IManagedUiDescription, ISerializabl this.outputWidgetDescription = outputWidgetDescription; } - public List<ManagedInputWidgetDescription> getInputWidgetDescriptions() + public List<IManagedInputWidgetDescription> getInputWidgetDescriptions() { return inputWidgetDescriptions; } - public void setInputWidgetDescriptions(List<ManagedInputWidgetDescription> widgetDescriptions) + public void setInputWidgetDescriptions(List<IManagedInputWidgetDescription> widgetDescriptions) { this.inputWidgetDescriptions = widgetDescriptions; } - public void addInputWidgetDescription(ManagedInputWidgetDescription widgetDescription) + public void addInputWidgetDescription(IManagedInputWidgetDescription widgetDescription) { inputWidgetDescriptions.add(widgetDescription); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/api/IManagedEntityProperty.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/api/IManagedEntityProperty.java index adc13ffe23c..d202c5cc392 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/api/IManagedEntityProperty.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/api/IManagedEntityProperty.java @@ -25,6 +25,8 @@ public interface IManagedEntityProperty { boolean isOwnTab(); + void setOwnTab(boolean ownTab); + IManagedUiDescription getUiDescription(); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/api/IManagedUiDescription.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/api/IManagedUiDescription.java index 9b7beff0932..81a4d12545d 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/api/IManagedUiDescription.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/api/IManagedUiDescription.java @@ -16,8 +16,9 @@ package ch.systemsx.cisd.openbis.generic.shared.basic.dto.api; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModel; +import java.util.List; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModel; /** * The interface exposed to the Managed Property script. @@ -33,4 +34,6 @@ public interface IManagedUiDescription public void addComboBoxInputField(String labels, String[] values); public IManagedWidgetDescription getOutputWidgetDescription(); + + public List<IManagedInputWidgetDescription> getInputWidgetDescriptions(); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/managed_property/ManagedPropertyEvaluator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/managed_property/ManagedPropertyEvaluator.java index b63cdd85127..0c9cc5ae233 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/managed_property/ManagedPropertyEvaluator.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/managed_property/ManagedPropertyEvaluator.java @@ -21,7 +21,7 @@ import org.apache.log4j.Logger; import ch.systemsx.cisd.common.evaluator.Evaluator; import ch.systemsx.cisd.common.logging.LogCategory; import ch.systemsx.cisd.common.logging.LogFactory; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ManagedEntityProperty; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedEntityProperty; import ch.systemsx.cisd.openbis.generic.shared.util.SimpleTableModelBuilder; /** @@ -40,7 +40,7 @@ public class ManagedPropertyEvaluator /** * The name of the script that expects the property to be there and updates it. */ - private static final String CONFIGURE_OUTPUT_EXPRESSION = "configure_output()"; + private static final String CONFIGURE_UI_EXPRESSION = "configure_ui()"; private static final String PROPERTY_VARIABLE_NAME = "property"; @@ -49,7 +49,7 @@ public class ManagedPropertyEvaluator this.scriptExpression = scriptExpression; } - public void evalConfigureProperty(ManagedEntityProperty managedProperty) + public void evalConfigureProperty(IManagedEntityProperty managedProperty) { if (operationLog.isDebugEnabled()) { @@ -57,8 +57,7 @@ public class ManagedPropertyEvaluator } Evaluator evaluator = - new Evaluator(CONFIGURE_OUTPUT_EXPRESSION, ScriptUtilityFactory.class, - scriptExpression); + new Evaluator(CONFIGURE_UI_EXPRESSION, ScriptUtilityFactory.class, scriptExpression); evaluator.set(PROPERTY_VARIABLE_NAME, managedProperty); evaluator.eval(); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/client/application/module/QueryBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/client/application/module/QueryBrowserGrid.java index 8fdb2b9dfba..6300eab8ee1 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/client/application/module/QueryBrowserGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/client/application/module/QueryBrowserGrid.java @@ -156,7 +156,7 @@ public class QueryBrowserGrid extends AbstractSimpleBrowserGrid<QueryExpression> IBrowserGridActionInvoker invoker) { return new DeletionConfirmationDialog(viewContext, selected, - createDeletionCallback(invoker)); + createRefreshCallback(invoker)); } }); addButton(deleteButton); diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/SampleAbundanceBrowserGrid.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/SampleAbundanceBrowserGrid.java index 50a882c7cd9..00f6c087858 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/SampleAbundanceBrowserGrid.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/SampleAbundanceBrowserGrid.java @@ -213,7 +213,7 @@ public class SampleAbundanceBrowserGrid IBrowserGridActionInvoker invoker) { return new SampleListDeletionConfirmationDialog(viewContext, samples, - createDeletionCallback(invoker)); + createRefreshCallback(invoker)); } })); allowMultipleSelection(); // we allow deletion of multiple samples -- GitLab