diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/GenericConstants.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/GenericConstants.java index 1e3025c0832f6861add0219916616497a8d58d02..b71e52a13cd9aeaf675f663a8fa00d60b9c5c884 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/GenericConstants.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/GenericConstants.java @@ -19,10 +19,17 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application; import com.google.gwt.core.client.GWT; /** + * Some generic constants. + * * @author Franz-Josef Elmer */ -public class GenericConstants +public final class GenericConstants { + private GenericConstants() + { + // Can not be instantiated. + } + /** * Prefix all widget IDs have to start with. */ diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ISampleViewClientPlugin.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ISampleViewClientPlugin.java index 625d329247a32cab2943bd709d1799c28c60e617..2d2e4dbeaf829c307ab1db2b6958814b8edf4033 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ISampleViewClientPlugin.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ISampleViewClientPlugin.java @@ -35,7 +35,12 @@ public interface ISampleViewClientPlugin public ITabItem createSampleViewer(final String sampleIdentifier); /** - * Shows a registration form for samples of type <var>sampleTypeCode</var>. + * Shows a registration form for samples of given <var>sampleType</var>. */ - public Widget createRegistrationClientForSampleType(SampleType sampleTypeCode); + public Widget createRegistrationForSampleType(final SampleType sampleType); + + /** + * Shows a batch registration form for samples of given <var>sampleType</var>. + */ + public Widget createBatchRegistrationForSampleType(final SampleType sampleType); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/ComponentProvider.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/ComponentProvider.java index 755894ac2de0f853783327b0577877f97b3e8d6c..3bda86ea03699d0a09e44414e8b9fdff7207e774 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/ComponentProvider.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/ComponentProvider.java @@ -20,7 +20,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.CommonView import ch.systemsx.cisd.openbis.generic.client.web.client.application.GroupsView; import ch.systemsx.cisd.openbis.generic.client.web.client.application.PersonsView; import ch.systemsx.cisd.openbis.generic.client.web.client.application.RolesView; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.SampleBatchRegistrationMock; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.SampleBatchRegistrationPanel; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.SampleRegistrationPanel; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.experiment_browser.ExperimentBrowser; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample_browser.SampleBrowser; @@ -47,7 +47,7 @@ final class ComponentProvider private final SampleRegistrationPanel sampleRegistration; - private final SampleBatchRegistrationMock sampleBatchRegistration; + private final SampleBatchRegistrationPanel sampleBatchRegistration; private final ExperimentBrowser experimentBrowser; @@ -59,7 +59,7 @@ final class ComponentProvider rolesView = new RolesView(viewContext); personsView = new PersonsView(viewContext); sampleRegistration = new SampleRegistrationPanel(viewContext); - sampleBatchRegistration = new SampleBatchRegistrationMock(viewContext); + sampleBatchRegistration = new SampleBatchRegistrationPanel(viewContext); experimentBrowser = new ExperimentBrowser(viewContext); } @@ -90,12 +90,12 @@ final class ComponentProvider public final ITabItem getSampleRegistration() { - return new ContentPanelAdapter(sampleRegistration); + return new DefaultTabItem("Sample registration", sampleRegistration); } - public ITabItem getSampleBatchRegistration() + public final ITabItem getSampleBatchRegistration() { - return new ContentPanelAdapter(sampleBatchRegistration); + return new DefaultTabItem("Sample batch registration", sampleBatchRegistration); } public ITabItem getExperimentBrowser() diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/ContentPanelAdapter.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/ContentPanelAdapter.java index 5cc3a111b7922ea06da2dcdd215e8957df403976..c7dd0b33b0ab42620d0cd21f694c88240a26efbc 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/ContentPanelAdapter.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/ContentPanelAdapter.java @@ -22,6 +22,8 @@ import com.extjs.gxt.ui.client.widget.Component; import com.extjs.gxt.ui.client.widget.ContentPanel; import com.extjs.gxt.ui.client.widget.Header; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants; + /** * A {@link ITabItem} implementation to adapt a {@link ContentPanel}. * @@ -41,6 +43,9 @@ public final class ContentPanelAdapter implements ITabItem public ContentPanelAdapter(final ContentPanel contentPanel, final Listener<TabPanelEvent> tabPanelEventListener) { + // Note that if not set, is then automatically generated. So this is why we test for + // 'ID_PREFIX'. We want the user to set an unique id. + assert contentPanel.getId().startsWith(GenericConstants.ID_PREFIX) : "Unspecified component id."; this.contentPanel = contentPanel; this.tabPanelEventListener = tabPanelEventListener; } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/SampleBatchRegistrationMock.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/SampleBatchRegistrationMock.java deleted file mode 100644 index b21c921001f92f1865cff85fb6eb6cdcc80812d3..0000000000000000000000000000000000000000 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/SampleBatchRegistrationMock.java +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright 2008 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; - -import com.extjs.gxt.ui.client.Style.HorizontalAlignment; -import com.extjs.gxt.ui.client.data.ModelData; -import com.extjs.gxt.ui.client.event.ComponentEvent; -import com.extjs.gxt.ui.client.event.SelectionChangedEvent; -import com.extjs.gxt.ui.client.event.SelectionChangedListener; -import com.extjs.gxt.ui.client.event.SelectionListener; -import com.extjs.gxt.ui.client.widget.ContentPanel; -import com.extjs.gxt.ui.client.widget.MessageBox; -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.toolbar.AdapterToolItem; -import com.extjs.gxt.ui.client.widget.toolbar.LabelToolItem; -import com.extjs.gxt.ui.client.widget.toolbar.ToolBar; -import com.google.gwt.user.client.Element; -import com.google.gwt.user.client.ui.FileUpload; - -import ch.systemsx.cisd.openbis.generic.client.web.client.application.CommonViewContext; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample_browser.SampleTypeSelectionWidget; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SampleType; - -/** - * @author Izabela Adamczyk - */ -public class SampleBatchRegistrationMock extends ContentPanel -{ - - private final SampleTypeSelectionWidget sampleTypeSelection; - - public SampleBatchRegistrationMock(final CommonViewContext viewContext) - { - setHeading("Sample batch registration mock"); - setBodyBorder(false); - sampleTypeSelection = - new SampleTypeSelectionWidget(viewContext, true, "sample-batch-registration"); - sampleTypeSelection.addSelectionChangedListener(new SelectionChangedListener<ModelData>() - { - @Override - public void selectionChanged(final SelectionChangedEvent<ModelData> se) - { - final SampleType selectedType = sampleTypeSelection.tryGetSelected(); - if (selectedType != null) - { - removeAll(); - add(new SampleBatchRegistrationForm(viewContext, selectedType)); - layout(); - } - } - }); - final ToolBar toolBar = new ToolBar(); - toolBar.add(new LabelToolItem("Sample type:")); - toolBar.add(new AdapterToolItem(sampleTypeSelection)); - setTopComponent(toolBar); - } - - @Override - protected void onRender(final Element parent, final int pos) - { - super.onRender(parent, pos); - createUI(); - } - - void createUI() - { - - } - - static class SampleBatchRegistrationForm extends ContentPanel - { - - SampleBatchRegistrationForm(final CommonViewContext viewContext, final SampleType sampleType) - { - setStyleAttribute("margin", "30"); - setHeaderVisible(false); - setBodyBorder(false); - setButtonAlign(HorizontalAlignment.LEFT); - final ButtonBar bb = new ButtonBar(); - bb.setCellSpacing(20); - - bb.add(new Button("View & Register", new SelectionListener<ComponentEvent>() - { - - @Override - public void componentSelected(final ComponentEvent ce) - { - MessageBox - .alert( - "Samples to be registered", - "List of samples which will be registered and REGISTER button (or parsing error message) will be shown.", - null); - } - })); - - bb.add(new Button("Register", new SelectionListener<ComponentEvent>() - { - - @Override - public void componentSelected(final ComponentEvent ce) - { - MessageBox.alert("Registration finished", - "List of registered samples is displayed or error message", null); - } - })); - setButtonBar(bb); - - } - - @Override - protected void onRender(final Element target, final int index) - { - super.onRender(target, index); - refresh(); - } - - public void refresh() - { - - final FileUpload upload = new FileUpload(); - add(upload); - - } - } -} diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/SampleBatchRegistrationPanel.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/SampleBatchRegistrationPanel.java new file mode 100644 index 0000000000000000000000000000000000000000..a14a11ddb8b1aafbd97e59e71eb328e68b080f4f --- /dev/null +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/SampleBatchRegistrationPanel.java @@ -0,0 +1,83 @@ +/* + * Copyright 2008 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; + +import com.extjs.gxt.ui.client.Style.Scroll; +import com.extjs.gxt.ui.client.data.ModelData; +import com.extjs.gxt.ui.client.event.SelectionChangedEvent; +import com.extjs.gxt.ui.client.event.SelectionChangedListener; +import com.extjs.gxt.ui.client.widget.LayoutContainer; +import com.extjs.gxt.ui.client.widget.toolbar.AdapterToolItem; +import com.extjs.gxt.ui.client.widget.toolbar.LabelToolItem; +import com.extjs.gxt.ui.client.widget.toolbar.ToolBar; + +import ch.systemsx.cisd.openbis.generic.client.web.client.application.CommonViewContext; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample_browser.SampleTypeSelectionWidget; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SampleType; + +/** + * The {@link LayoutContainer} extension for batch registering a sample. + * + * @author Christian Ribeaud + */ +public final class SampleBatchRegistrationPanel extends LayoutContainer +{ + private static final String ID = "sample-batch-registration"; + + private final SampleTypeSelectionWidget sampleTypeSelection; + + public SampleBatchRegistrationPanel(final CommonViewContext viewContext) + { + setId(GenericConstants.ID_PREFIX + ID); + setScrollMode(Scroll.AUTO); + sampleTypeSelection = new SampleTypeSelectionWidget(viewContext, true, ID); + final ToolBar toolBar = createToolBar(); + add(toolBar); + sampleTypeSelection.addSelectionChangedListener(new SelectionChangedListener<ModelData>() + { + + // + // SelectionChangedListener + // + + @Override + public final void selectionChanged(final SelectionChangedEvent<ModelData> se) + { + final SampleType sampleType = sampleTypeSelection.tryGetSelected(); + if (sampleType != null) + { + removeAll(); + add(toolBar); + add(viewContext.getClientPluginFactoryProvider().getClientPluginFactory( + sampleType.getCode()).createViewClientForSampleType( + sampleType.getCode()).createBatchRegistrationForSampleType( + sampleType)); + layout(); + } + } + }); + } + + private final ToolBar createToolBar() + { + final ToolBar toolBar = new ToolBar(); + toolBar.add(new LabelToolItem("Sample type:")); + toolBar.add(new AdapterToolItem(sampleTypeSelection)); + return toolBar; + } +} diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/SampleRegistrationPanel.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/SampleRegistrationPanel.java index 773944ebefeb3dbf2c279c52750133d03c1090c2..0c1770e432326cd73d43d49a3fa1b5791da400a2 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/SampleRegistrationPanel.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/SampleRegistrationPanel.java @@ -20,31 +20,30 @@ import com.extjs.gxt.ui.client.Style.Scroll; import com.extjs.gxt.ui.client.data.ModelData; import com.extjs.gxt.ui.client.event.SelectionChangedEvent; import com.extjs.gxt.ui.client.event.SelectionChangedListener; -import com.extjs.gxt.ui.client.widget.ContentPanel; +import com.extjs.gxt.ui.client.widget.LayoutContainer; import com.extjs.gxt.ui.client.widget.toolbar.AdapterToolItem; import com.extjs.gxt.ui.client.widget.toolbar.LabelToolItem; import com.extjs.gxt.ui.client.widget.toolbar.ToolBar; -import com.google.gwt.user.client.Element; import ch.systemsx.cisd.openbis.generic.client.web.client.application.CommonViewContext; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample_browser.SampleTypeSelectionWidget; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SampleType; /** + * The {@link LayoutContainer} extension for registering a sample. + * * @author Izabela Adamczyk */ -public class SampleRegistrationPanel extends ContentPanel +public final class SampleRegistrationPanel extends LayoutContainer { - private final SampleTypeSelectionWidget sampleTypeSelection; public static final String ID = "sample-registration"; public SampleRegistrationPanel(final CommonViewContext viewContext) { - setHeading("Sample registration"); - setHeaderVisible(false); - setBodyBorder(false); + setId(GenericConstants.ID_PREFIX + ID); setScrollMode(Scroll.AUTO); sampleTypeSelection = new SampleTypeSelectionWidget(viewContext, true, ID); final ToolBar toolBar = new ToolBar(); @@ -53,6 +52,11 @@ public class SampleRegistrationPanel extends ContentPanel add(toolBar); sampleTypeSelection.addSelectionChangedListener(new SelectionChangedListener<ModelData>() { + + // + // SelectionChangedListener + // + @Override public void selectionChanged(final SelectionChangedEvent<ModelData> se) { @@ -63,23 +67,11 @@ public class SampleRegistrationPanel extends ContentPanel add(toolBar); add(viewContext.getClientPluginFactoryProvider().getClientPluginFactory( selectedType.getCode()).createViewClientForSampleType( - selectedType.getCode()).createRegistrationClientForSampleType( + selectedType.getCode()).createRegistrationForSampleType( selectedType)); layout(); } } }); } - - @Override - protected void onRender(final Element parent, final int pos) - { - super.onRender(parent, pos); - createUI(); - } - - void createUI() - { - - } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/ClientPluginFactory.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/ClientPluginFactory.java index 2a913c62566a475b05b3b12443898d5192a9e2e5..68cef5113a196a88022d1e63a0e6917a2faf6775 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/ClientPluginFactory.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/ClientPluginFactory.java @@ -29,6 +29,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework. import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItem; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SampleType; import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.IGenericClientServiceAsync; +import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.sample.GenericSampleBatchRegistrationForm; import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.sample.GenericSampleRegistrationForm; import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.sample.GenericSampleViewer; @@ -107,9 +108,15 @@ public final class ClientPluginFactory extends }; } - public Widget createRegistrationClientForSampleType(SampleType sampleType) + public final Widget createRegistrationForSampleType(final SampleType sampleType) { return new GenericSampleRegistrationForm(getViewContext(), sampleType); } + + public final Widget createBatchRegistrationForSampleType(final SampleType sampleType) + { + return new GenericSampleBatchRegistrationForm(getViewContext(), sampleType); + } + } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleBatchRegistrationForm.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleBatchRegistrationForm.java new file mode 100644 index 0000000000000000000000000000000000000000..bd504e5f3d098625df8786cb2259b95fbcaf68db --- /dev/null +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleBatchRegistrationForm.java @@ -0,0 +1,155 @@ +/* + * Copyright 2008 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.plugin.generic.client.web.client.application.sample; + +import com.extjs.gxt.ui.client.Style.HorizontalAlignment; +import com.extjs.gxt.ui.client.event.ButtonEvent; +import com.extjs.gxt.ui.client.event.SelectionListener; +import com.extjs.gxt.ui.client.util.Format; +import com.extjs.gxt.ui.client.widget.Component; +import com.extjs.gxt.ui.client.widget.LayoutContainer; +import com.extjs.gxt.ui.client.widget.button.Button; +import com.extjs.gxt.ui.client.widget.form.FieldSet; +import com.extjs.gxt.ui.client.widget.form.FileUploadField; +import com.extjs.gxt.ui.client.widget.form.FormPanel; +import com.extjs.gxt.ui.client.widget.form.FormPanel.Encoding; +import com.extjs.gxt.ui.client.widget.form.FormPanel.Method; +import com.extjs.gxt.ui.client.widget.layout.FlowLayout; +import com.extjs.gxt.ui.client.widget.layout.FormLayout; +import com.extjs.gxt.ui.client.widget.layout.TableLayout; + +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.dto.SampleType; +import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.IGenericClientServiceAsync; + +/** + * The <i>generic</i> sample batch registration panel. + * + * @author Christian Ribeaud + */ +public final class GenericSampleBatchRegistrationForm extends LayoutContainer +{ + private static final String FIELD_LABEL_TEMPLATE = "File {0}"; + + private static final String FIELD_NAME_TEMPLATE = "sample_batch_registration_{0}"; + + private static final int NUMBER_OF_FIELDS = 1; + + private final IViewContext<IGenericClientServiceAsync> viewContext; + + private final SampleType sampleType; + + private FormPanel formPanel; + + private Button submitButton; + + public GenericSampleBatchRegistrationForm( + final IViewContext<IGenericClientServiceAsync> viewContext, final SampleType sampleType) + { + super(createLayout()); + this.viewContext = viewContext; + this.sampleType = sampleType; + add(createUI()); + } + + private final static TableLayout createLayout() + { + final TableLayout tableLayout = new TableLayout(); + tableLayout.setCellSpacing(10); + return tableLayout; + } + + private final Component createUI() + { + submitButton = createButton(); + formPanel = createFormPanel(submitButton); + final FieldSet fieldSet = createFieldSet(); + for (int i = 0; i < NUMBER_OF_FIELDS; i++) + { + fieldSet.add(createFileUploadField(i)); + } + formPanel.add(fieldSet); + return formPanel; + } + + private final static FieldSet createFieldSet() + { + final FieldSet fieldSet = new FieldSet(); + fieldSet.setHeading("Upload files"); + fieldSet.setLayout(createFormLayout()); + return fieldSet; + } + + private final static FormLayout createFormLayout() + { + final FormLayout formLayout = new FormLayout(); + formLayout.setLabelWidth(GenericSampleRegistrationForm.LABEL_WIDTH); + formLayout.setDefaultWidth(GenericSampleRegistrationForm.FIELD_WIDTH); + return formLayout; + } + + private final static FormPanel createFormPanel(final Button button) + { + final FormPanel panel = new FormPanel(); + panel.setLayout(new FlowLayout()); + panel.setWidth(GenericSampleRegistrationForm.LABEL_WIDTH + + GenericSampleRegistrationForm.FIELD_WIDTH + 50); + panel.setHeaderVisible(false); + panel.setBodyBorder(false); + panel.setAction(GenericConstants.createServicePath("upload")); + panel.setEncoding(Encoding.MULTIPART); + panel.setMethod(Method.POST); + panel.setButtonAlign(HorizontalAlignment.RIGHT); + panel.addButton(button); + return panel; + } + + private final Button createButton() + { + final Button button = + new Button(viewContext.getMessageProvider().getMessage("button_submit")); + button.addSelectionListener(new SelectionListener<ButtonEvent>() + { + + // + // SelectionListener + // + + @Override + public final void componentSelected(final ButtonEvent ce) + { + if (formPanel.isValid()) + { + submitButton.setEnabled(false); + formPanel.submit(); + } + } + }); + return button; + } + + private final static FileUploadField createFileUploadField(final int counter) + { + final FileUploadField file = new FileUploadField(); + file.setAllowBlank(counter > 0); + final int number = counter + 1; + file.setFieldLabel(Format.substitute(FIELD_LABEL_TEMPLATE, number)); + file.setName(Format.substitute(FIELD_NAME_TEMPLATE, number)); + return file; + } +} diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleRegistrationForm.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleRegistrationForm.java index 8a94693c19fbc85091704ef21d26a37084e4798c..fc5c6326ec9b2d28c4fd7843668164b832684f65 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleRegistrationForm.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleRegistrationForm.java @@ -102,9 +102,9 @@ public final class GenericSampleRegistrationForm extends FormPanel private static final String MANDATORY_LABEL_SEPARATOR = ": *"; - private static final int LABEL_WIDTH = 150; + static final int LABEL_WIDTH = 100; - private static final int FIELD_WIDTH = 400; + static final int FIELD_WIDTH = 400; public GenericSampleRegistrationForm( final IViewContext<IGenericClientServiceAsync> viewContext, final SampleType sampleType) @@ -204,6 +204,7 @@ public final class GenericSampleRegistrationForm extends FormPanel setButtonAlign(HorizontalAlignment.RIGHT); final Button saveButton = new Button(viewContext.getMessageProvider().getMessage("button_save")); + saveButton.setStyleAttribute("marginRight", "20px"); saveButton.setId(SAVE_BUTTON_ID); saveButton.addSelectionListener(new SelectionListener<ComponentEvent>() { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/ClientPluginFactory.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/ClientPluginFactory.java index 773ae23260809ae70da68407754d46d6be4ab630..fb5c87755c242dddb93742823f8d33c83b2787cf 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/ClientPluginFactory.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/ClientPluginFactory.java @@ -110,7 +110,12 @@ public final class ClientPluginFactory extends }; } - public Widget createRegistrationClientForSampleType(final SampleType sampleTypeCode) + public final Widget createRegistrationForSampleType(final SampleType sampleTypeCode) + { + return new DummyComponent(); + } + + public final Widget createBatchRegistrationForSampleType(SampleType sampleType) { return new DummyComponent(); } 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 eaaf950e68d89d2ace5f9937dc142104e8e79bc6..b933728773d1e01781c52f37228b73af41a1e0dd 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 @@ -26,6 +26,7 @@ var common = { // button_save: "save", + button_submit: "submit", // // LoginWidget