diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/DataSetMetadataPanel.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/DataSetMetadataPanel.java index e8abfb33bef368ccbe026968e8039e9e4cc99702..cec1a6385112cf3e4929a384a8f72b47a0e37cf5 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/DataSetMetadataPanel.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/DataSetMetadataPanel.java @@ -21,8 +21,10 @@ import static ch.systemsx.cisd.openbis.dss.client.api.gui.DataSetUploadClient.BU import static ch.systemsx.cisd.openbis.dss.client.api.gui.DataSetUploadClient.LABEL_WIDTH; import java.awt.CardLayout; +import java.awt.Color; import java.awt.Component; import java.awt.Dimension; +import java.awt.Font; import java.awt.Frame; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; @@ -40,6 +42,7 @@ import java.util.HashMap; import java.util.List; import javax.swing.AbstractButton; +import javax.swing.BorderFactory; import javax.swing.ButtonGroup; import javax.swing.JButton; import javax.swing.JComboBox; @@ -48,7 +51,10 @@ import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; +import javax.swing.JScrollPane; +import javax.swing.JTextArea; import javax.swing.JTextField; +import javax.swing.ScrollPaneConstants; import ch.systemsx.cisd.openbis.dss.client.api.gui.DataSetUploadClientModel.NewDataSetInfo; import ch.systemsx.cisd.openbis.dss.generic.shared.api.v1.NewDataSetDTO.DataSetOwnerType; @@ -92,6 +98,10 @@ public class DataSetMetadataPanel extends JPanel private final HashMap<String, DataSetPropertiesPanel> propertiesPanels = new HashMap<String, DataSetPropertiesPanel>(); + private final JTextArea validationErrors = new JTextArea("Błędy"); + + private final JScrollPane validationErrorsPane = new JScrollPane(validationErrors); + private NewDataSetInfo newDataSetInfo; public DataSetMetadataPanel(DataSetUploadClientModel clientModel, JFrame mainWindow) @@ -121,6 +131,16 @@ public class DataSetMetadataPanel extends JPanel dataSetFileButton = new JButton("Browse..."); dataSetFileLabel = new JLabel("File:", JLabel.TRAILING); + validationErrors.setEditable(false); + validationErrors.setBackground(getBackground()); + validationErrors.setFont(new Font(getFont().getName(), Font.BOLD, getFont().getSize())); + validationErrors.setForeground(Color.RED); + validationErrors.setLineWrap(true); + validationErrors.setWrapStyleWord(true); + validationErrorsPane.setBorder(BorderFactory.createEmptyBorder()); + validationErrorsPane + .setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); + createGui(); } @@ -329,6 +349,7 @@ public class DataSetMetadataPanel extends JPanel createDataSetTypePanel(); addRow(4, dataSetTypePanel); + addRow(5, validationErrorsPane); } private void setDataSetType(String dataSetType) @@ -455,7 +476,7 @@ public class DataSetMetadataPanel extends JPanel c.gridy = rowy; c.gridwidth = GridBagConstraints.REMAINDER; c.weightx = 0; - c.weighty = 0; + c.weighty = 1; c.insets = new Insets((rowy > 0) ? 5 : 0, 0, 0, 5); add(comp, c); } @@ -504,8 +525,8 @@ public class DataSetMetadataPanel extends JPanel public void syncErrors() { // Clear all errors first - clearError(ownerIdLabel, ownerIdText); - clearError(dataSetFileLabel, dataSetFileComboBox); + clearError(ownerIdLabel, ownerIdText, null); + clearError(dataSetFileLabel, dataSetFileComboBox, validationErrors); List<ValidationError> errors = newDataSetInfo.getValidationErrors(); for (ValidationError error : errors) @@ -513,7 +534,7 @@ public class DataSetMetadataPanel extends JPanel switch (error.getTarget()) { case DATA_SET_OWNER: - displayError(ownerIdLabel, ownerIdText, error); + displayError(ownerIdLabel, ownerIdText, null, error); break; case DATA_SET_TYPE: @@ -521,7 +542,7 @@ public class DataSetMetadataPanel extends JPanel break; case DATA_SET_FILE: - displayError(dataSetFileLabel, dataSetFileComboBox, error); + displayError(dataSetFileLabel, dataSetFileComboBox, validationErrors, error); break; case DATA_SET_PROPERTY: @@ -536,19 +557,20 @@ public class DataSetMetadataPanel extends JPanel } } - private void displayError(JLabel label, JComponent component, ValidationError error) + private void displayError(JLabel label, JComponent component, JTextArea errorAreaOrNull, + ValidationError error) { // Not all errors are applicable to this panel if (null == label || null == component) { return; } - UiUtilities.displayError(label, component, error); + UiUtilities.displayError(label, component, errorAreaOrNull, error); } - private void clearError(JLabel label, JComponent component) + private void clearError(JLabel label, JComponent component, JTextArea errorAreaOrNull) { - UiUtilities.clearError(label, component); + UiUtilities.clearError(label, component, errorAreaOrNull); component.setToolTipText(label.getToolTipText()); } diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/DataSetPropertiesPanel.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/DataSetPropertiesPanel.java index 62aa5ba3ec1d87955c0a989afe7ff10c498d4c57..c2ee87197a99039b803cc236f39cd51f41526144 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/DataSetPropertiesPanel.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/DataSetPropertiesPanel.java @@ -358,12 +358,12 @@ public class DataSetPropertiesPanel extends JPanel { return; } - UiUtilities.displayError(label, component, error); + UiUtilities.displayError(label, component, null, error); } private void clearError(JLabel label, JComponent component) { - UiUtilities.clearError(label, component); + UiUtilities.clearError(label, component, null); component.setToolTipText(label.getToolTipText()); } diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/DataSetUploadClient.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/DataSetUploadClient.java index 41e18b6f58348017d28442ebbc58d1bd79a04222..d57e31d92713420ace4dcbd4514a80b073ae81ea 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/DataSetUploadClient.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/DataSetUploadClient.java @@ -270,7 +270,7 @@ public class DataSetUploadClient extends AbstractSwingGUI spacer.setPreferredSize(new Dimension(15, 15)); window.add(spacer, BorderLayout.SOUTH); window.pack(); - window.setBounds(20, 40, 600, 400); + window.setBounds(20, 40, 600, 450); window.setLocationByPlatform(true); window.setVisible(true); diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/UiUtilities.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/UiUtilities.java index 19fcaa9cbb038b1aaa6eb8b6aaaaea8d9b6929d6..988ace56119665b79858058f60764d7941c1d715 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/UiUtilities.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/UiUtilities.java @@ -20,6 +20,7 @@ import java.awt.Color; import javax.swing.JComponent; import javax.swing.JLabel; +import javax.swing.JTextArea; import ch.systemsx.cisd.openbis.dss.generic.shared.api.v1.validation.ValidationError; @@ -29,16 +30,27 @@ import ch.systemsx.cisd.openbis.dss.generic.shared.api.v1.validation.ValidationE public class UiUtilities { - public static void displayError(JLabel label, JComponent component, ValidationError error) + public static void displayError(JLabel label, JComponent component, JTextArea errorAreaOrNull, + ValidationError error) { component.setToolTipText(error.getErrorMessage()); label.setForeground(Color.RED); + if (errorAreaOrNull != null) + { + errorAreaOrNull.setText("File validation error: " + error.getErrorMessage()); + errorAreaOrNull.setToolTipText(error.getErrorMessage()); + } } - public static void clearError(JLabel label, JComponent component) + public static void clearError(JLabel label, JComponent component, JTextArea errorAreaOrNull) { component.setToolTipText(null); label.setForeground(Color.BLACK); + if (errorAreaOrNull != null) + { + errorAreaOrNull.setText(null); + errorAreaOrNull.setToolTipText(null); + } } }