/src/main/java/org/isatools/isacreator/validateconvert/ui/ENASubmissionUI.java
Java | 837 lines | 627 code | 178 blank | 32 comment | 35 complexity | b30fba7e3b881ee8d72a650e98277c9b MD5 | raw file
- package org.isatools.isacreator.validateconvert.ui;
- import com.explodingpixels.macwidgets.IAppWidgetFactory;
- import com.sun.awt.AWTUtilities;
- import org.apache.log4j.Logger;
- import org.isatools.errorreporter.model.ErrorLevel;
- import org.isatools.errorreporter.model.ErrorMessage;
- import org.isatools.isacreator.common.CommonMouseAdapter;
- import org.isatools.isacreator.common.UIHelper;
- import org.isatools.isacreator.common.button.ButtonType;
- import org.isatools.isacreator.common.button.FlatButton;
- import org.isatools.isacreator.effects.GraphicsUtils;
- import org.isatools.isacreator.effects.HUDTitleBar;
- import org.isatools.isacreator.effects.SimpleListCellRenderer;
- import org.isatools.isacreator.launch.ISAcreatorGUIProperties;
- import org.isatools.isacreator.managers.ApplicationManager;
- import org.isatools.isacreator.model.Investigation;
- import org.isatools.isacreator.model.Study;
- import org.isatools.isacreator.settings.ISAcreatorProperties;
- import org.isatools.isacreator.validateconvert.ui.ENAReceipt.ENAReceipt;
- import org.isatools.isacreator.validateconvert.ui.ENAReceipt.ENAReceiptParser;
- import org.isatools.isatab.export.sra.submission.ENAResponse;
- import org.isatools.isatab.export.sra.submission.ENARestServer;
- import org.isatools.isatab.export.sra.submission.SRASubmitter;
- import org.isatools.isatab.gui_invokers.AllowedConversions;
- import org.isatools.isatab.gui_invokers.GUIISATABValidator;
- import org.isatools.isatab.gui_invokers.GUIInvokerResult;
- import org.isatools.isatab.isaconfigurator.ISAConfigurationSet;
- import org.jdesktop.fuse.InjectedResource;
- import org.jdesktop.fuse.ResourceInjector;
- import javax.swing.*;
- import javax.swing.border.EmptyBorder;
- import javax.swing.border.EtchedBorder;
- import javax.swing.event.HyperlinkEvent;
- import javax.swing.event.HyperlinkListener;
- import javax.swing.text.html.HTMLEditorKit;
- import java.awt.*;
- import java.awt.event.FocusEvent;
- import java.awt.event.FocusListener;
- import java.awt.event.MouseEvent;
- import java.io.*;
- import java.net.URISyntaxException;
- import java.util.*;
- import java.util.List;
- /**
- * User intereface for ENA submission.
- */
- public class ENASubmissionUI extends CommonValidationConversionUI {
- @InjectedResource
- private ImageIcon submitIcon, created_by, new_sub, new_sub_over, update_sub, update_sub_over,
- box_icon, metadata_icon, submission_complete, submission_failed, dev_server, dev_server_over, prod_server,
- prod_server_over, test_server, test_server_over;
- public static final float DESIRED_OPACITY = .98f;
- private static Logger log = Logger.getLogger(ENASubmissionUI.class.getName());
- private Container metadataPanel, menuPanel, serverPanel;
- private JTextField username, centerName, labName, brokerName, studyIdentifier;
- private JPasswordField password;
- private JLabel status;
- private ENARestServer server = ENARestServer.TEST;
- private String sraAction;
- protected static ImageIcon submitENAAnimation = new ImageIcon(ENASubmissionUI.class.getResource("/images/submission/submitting.gif"));
- protected static ImageIcon convertISAAnimation = new ImageIcon(ENASubmissionUI.class.getResource("/images/validator/converting.gif"));
- public static ENASubmissionUI createENASubmissionUI() {
- return new ENASubmissionUI();
- }
- private ENASubmissionUI() {
- ResourceInjector.get("submission-package.style").inject(true, new Object[]{this});
- }
- public void createGUI() {
- setTitle("Submit to ENA");
- setUndecorated(true);
- setBackground(UIHelper.BG_COLOR);
- if (GraphicsUtils.isWindowTransparencySupported()) {
- AWTUtilities.setWindowOpacity(this, DESIRED_OPACITY);
- }
- HUDTitleBar titlePanel = new HUDTitleBar(null, null);
- add(titlePanel, BorderLayout.NORTH);
- titlePanel.installListeners();
- ((JComponent) getContentPane()).setBorder(new EtchedBorder(UIHelper.LIGHT_GREEN_COLOR, UIHelper.LIGHT_GREEN_COLOR));
- swappableContainer = new JPanel();
- swappableContainer.add(createMenu());
- swappableContainer.setBorder(new EmptyBorder(1, 1, 1, 1));
- swappableContainer.setPreferredSize(new Dimension(750, 450));
- add(swappableContainer, BorderLayout.CENTER);
- pack();
- }
- public Container createMenu() {
- menuPanel = Box.createVerticalBox();
- addHeaderImageToContainer(menuPanel);
- final JLabel newSubmission = new JLabel(new_sub);
- newSubmission.addMouseListener(new CommonMouseAdapter() {
- @Override
- public void mouseEntered(MouseEvent mouseEvent) {
- super.mouseEntered(mouseEvent);
- newSubmission.setIcon(new_sub_over);
- }
- @Override
- public void mouseExited(MouseEvent mouseEvent) {
- super.mouseExited(mouseEvent); //To change body of overridden methods use File | Settings | File Templates.
- newSubmission.setIcon(new_sub);
- }
- @Override
- public void mouseReleased(MouseEvent mouseEvent) {
- super.mouseReleased(mouseEvent);
- newSubmission.setIcon(new_sub);
- sraAction = "ADD";
- swapContainers(chooseServerUI());
- }
- });
- final JLabel updateSubmission = new JLabel(update_sub);
- updateSubmission.addMouseListener(new CommonMouseAdapter() {
- @Override
- public void mouseEntered(MouseEvent mouseEvent) {
- super.mouseEntered(mouseEvent);
- updateSubmission.setIcon(update_sub_over);
- }
- @Override
- public void mouseExited(MouseEvent mouseEvent) {
- super.mouseExited(mouseEvent); //To change body of overridden methods use File | Settings | File Templates.
- updateSubmission.setIcon(update_sub);
- }
- @Override
- public void mouseReleased(MouseEvent mouseEvent) {
- super.mouseReleased(mouseEvent);
- updateSubmission.setIcon(update_sub);
- sraAction = "MODIFY";
- swapContainers(chooseServerUI());
- }
- });
- Box menuContainer = Box.createHorizontalBox();
- menuContainer.add(newSubmission);
- menuContainer.add(updateSubmission);
- menuPanel.add(menuContainer);
- JPanel created_by_panel = new JPanel();
- created_by_panel.setBackground(new Color(236, 240, 241));
- menuPanel.add(UIHelper.wrapComponentInPanel(new JLabel(created_by)));
- menuPanel.add(Box.createVerticalStrut(20));
- return menuPanel;
- }
- /**
- * Screen to choose the ENA server (test, dev, prod)
- * @return
- */
- private Container chooseServerUI() {
- serverPanel = Box.createVerticalBox();
- serverPanel.setPreferredSize(new Dimension(530, 390));
- addHeaderImageToContainer(serverPanel);
- serverPanel.add(UIHelper.wrapComponentInPanel(UIHelper.createLabel("Please choose a server to upload to: ", UIHelper.VER_14_PLAIN, UIHelper.EMERALD)));
- serverPanel.add(Box.createVerticalStrut(10));
- final JLabel testServer = new JLabel(test_server);
- testServer.addMouseListener(new CommonMouseAdapter() {
- @Override
- public void mouseEntered(MouseEvent mouseEvent) {
- super.mouseEntered(mouseEvent);
- testServer.setIcon(test_server_over);
- }
- @Override
- public void mouseExited(MouseEvent mouseEvent) {
- super.mouseExited(mouseEvent); //To change body of overridden methods use File | Settings | File Templates.
- testServer.setIcon(test_server);
- }
- @Override
- public void mouseReleased(MouseEvent mouseEvent) {
- super.mouseReleased(mouseEvent);
- testServer.setIcon(test_server);
- server = ENARestServer.TEST;
- swapContainers(createMetadataEntryUI());
- }
- });
- final JLabel devServer = new JLabel(dev_server);
- devServer.addMouseListener(new CommonMouseAdapter() {
- @Override
- public void mouseEntered(MouseEvent mouseEvent) {
- super.mouseEntered(mouseEvent);
- devServer.setIcon(dev_server_over);
- }
- @Override
- public void mouseExited(MouseEvent mouseEvent) {
- super.mouseExited(mouseEvent); //To change body of overridden methods use File | Settings | File Templates.
- devServer.setIcon(dev_server);
- }
- @Override
- public void mouseReleased(MouseEvent mouseEvent) {
- super.mouseReleased(mouseEvent);
- devServer.setIcon(dev_server);
- server = ENARestServer.DEV;
- swapContainers(createMetadataEntryUI());
- }
- });
- final JLabel prodServer = new JLabel(prod_server);
- prodServer.addMouseListener(new CommonMouseAdapter() {
- @Override
- public void mouseEntered(MouseEvent mouseEvent) {
- super.mouseEntered(mouseEvent);
- prodServer.setIcon(prod_server_over);
- }
- @Override
- public void mouseExited(MouseEvent mouseEvent) {
- super.mouseExited(mouseEvent); //To change body of overridden methods use File | Settings | File Templates.
- prodServer.setIcon(prod_server);
- }
- @Override
- public void mouseReleased(MouseEvent mouseEvent) {
- super.mouseReleased(mouseEvent);
- prodServer.setIcon(prod_server);
- server = ENARestServer.PROD;
- swapContainers(createMetadataEntryUI());
- }
- });
- Box menuContainer = Box.createHorizontalBox();
- menuContainer.add(testServer);
- menuContainer.add(Box.createHorizontalStrut(5));
- menuContainer.add(devServer);
- menuContainer.add(Box.createHorizontalStrut(5));
- menuContainer.add(prodServer);
- serverPanel.add(menuContainer);
- serverPanel.add(Box.createVerticalStrut(70));
- return serverPanel;
- }
- private Container createMetadataEntryUI() {
- metadataPanel = Box.createVerticalBox();
- addHeaderImageToContainer(metadataPanel);
- Box leftAndRightSections = Box.createHorizontalBox();
- Box userLoginSection = createUserLoginSection();
- leftAndRightSections.add(userLoginSection);
- leftAndRightSections.add(Box.createHorizontalStrut(10));
- Box metadataSection = createMetadataSection();
- leftAndRightSections.add(metadataSection);
- metadataPanel.add(leftAndRightSections);
- Box buttonContainer = Box.createHorizontalBox();
- FlatButton backButton = new FlatButton(ButtonType.RED, "Back");
- backButton.addMouseListener(new CommonMouseAdapter() {
- @Override
- public void mousePressed(MouseEvent mouseEvent) {
- super.mousePressed(mouseEvent);
- swapContainers(menuPanel);
- }
- });
- FlatButton nextButton = new FlatButton(ButtonType.EMERALD, "Next");
- nextButton.addMouseListener(new CommonMouseAdapter() {
- @Override
- public void mousePressed(MouseEvent mouseEvent) {
- super.mousePressed(mouseEvent);
- if (username.getText().equals("") || username.equals("Username") || password.getPassword().length==0){
- status.setText("<html><font size=\"2\">Please complete username and password! </font></html>");
- } else {
- validateConvertAndSubmitFiles();
- }
- }
- });
- buttonContainer.add(backButton);
- buttonContainer.add(Box.createHorizontalGlue());
- buttonContainer.add(nextButton);
- metadataPanel.add(Box.createVerticalStrut(sraAction.equals("MODIFY") ? 20 : 30));
- metadataPanel.add(buttonContainer);
- return metadataPanel;
- }
- private void clearStatus(){
- status.setText("");
- }
- /**
- * Creates a Box for the user login
- * @return Box
- */
- private Box createUserLoginSection() {
- Box userLoginSection = Box.createVerticalBox();
- JLabel enaBoxDetails = new JLabel("ENA Dropbox Credentials", box_icon, JLabel.LEFT);
- enaBoxDetails.setHorizontalAlignment(SwingConstants.LEFT);
- UIHelper.renderComponent(enaBoxDetails, UIHelper.VER_12_BOLD, UIHelper.EMERALD, false);
- userLoginSection.add(UIHelper.wrapComponentInPanel(enaBoxDetails));
- String sra_username = ISAcreatorProperties.getProperty("sra_username");
- username = new JTextField(sra_username.isEmpty() ? "Username" : sra_username);
- username.addFocusListener(new FocusListener() {
- public void focusGained(FocusEvent focusEvent) {
- clearStatus();
- }
- public void focusLost(FocusEvent focusEvent) {
- clearStatus();
- }
- });
- password = new JPasswordField("");
- password.addFocusListener(new FocusListener() {
- public void focusGained(FocusEvent focusEvent) {
- clearStatus();
- }
- public void focusLost(FocusEvent focusEvent) {
- clearStatus();
- }
- });
- status = new JLabel();
- status.setText("");
- status.setForeground(UIHelper.RED_COLOR);
- status.setSize(new Dimension(200, 25));
- status.setOpaque(true);
- userLoginSection.add(createMetadataFieldContainer(username, "Username"));
- userLoginSection.add(Box.createVerticalStrut(5));
- userLoginSection.add(createMetadataFieldContainer(password, "Password", 1, 10));
- userLoginSection.add(Box.createVerticalStrut(5));
- userLoginSection.add(UIHelper.wrapComponentInPanel(status));
- userLoginSection.add(sraAction.equals("MODIFY")
- ? Box.createVerticalStrut(75) :
- Box.createVerticalStrut(45));
- JEditorPane registerInfo = new JEditorPane();
- registerInfo.setPreferredSize(new Dimension(230, 50));
- registerInfo.setContentType("text/html");
- registerInfo.setEditable(false);
- String label = "<html><p style=\"color: #888888; font-family: 'Verdana'; font-size: 9px\">Don’t have an account? <span style=\"color:#4FBA6F\">Create one in <a href=\"https://www.ebi.ac.uk/metagenomics/register\">EBI metagenomics</a> or <a href=\"https://www.ebi.ac.uk/ena/submit/sra/#registration\">EBI ENA</a></span></p></html>";
- registerInfo.setText(label);
- registerInfo.setVisible(true);
- registerInfo.addHyperlinkListener(new HyperlinkListener() {
- public void hyperlinkUpdate(HyperlinkEvent e) {
- if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
- if (Desktop.isDesktopSupported()) {
- try {
- Desktop.getDesktop().browse(e.getURL().toURI());
- } catch (IOException e1) {
- e1.printStackTrace();
- } catch (URISyntaxException e1) {
- e1.printStackTrace();
- }
- }
- }
- }
- });
- userLoginSection.add(Box.createVerticalStrut(30));
- userLoginSection.add(registerInfo);
- return userLoginSection;
- }
- private Box createMetadataSection() {
- Box metadataSection = Box.createVerticalBox();
- JLabel metadataDetails = new JLabel("Additional Metadata", metadata_icon, JLabel.LEFT);
- UIHelper.renderComponent(metadataDetails, UIHelper.VER_12_BOLD, UIHelper.EMERALD, false);
- metadataSection.add(UIHelper.wrapComponentInPanel(metadataDetails));
- if (sraAction.equals("MODIFY")) {
- studyIdentifier = new JTextField("e.g. ERAxxxxxx");
- metadataSection.add(createMetadataFieldContainer(studyIdentifier, "Study Accession"));
- metadataSection.add(Box.createVerticalStrut(5));
- }
- centerName = new JTextField("OXFORD");
- metadataSection.add(createMetadataFieldContainer(centerName, "SRA Centre Name"));
- metadataSection.add(Box.createVerticalStrut(5));
- brokerName = new JTextField("OXFORD");
- metadataSection.add(createMetadataFieldContainer(brokerName, "Broker Name", 0, 35));
- metadataSection.add(Box.createVerticalStrut(5));
- labName = new JTextField("Oxford e-Research Centre");
- metadataSection.add(createMetadataFieldContainer(labName, "SRA Lab Name", 0, 30));
- metadataSection.add(Box.createVerticalStrut(50));
- // metadataSection.add(Box.createVerticalGlue());
- JEditorPane submissionInfo = new JEditorPane();
- submissionInfo.setPreferredSize(new Dimension(350, 40));
- //UIHelper.renderComponent(submissionInfo, UIHelper.VER_9_PLAIN, new Color(127, 140, 141), false);
- submissionInfo.setContentType("text/html");
- submissionInfo.setEditable(false);
- submissionInfo.setEditorKit(new HTMLEditorKit());
- String label = "<html><p style=\"color: #888888; font-family: 'Verdana'; font-size: 9px\"><span style=\"color:#4FBA6F; \"><a href=\"http://www.ebi.ac.uk/ena/about/sra_rest_submissions\">Read more</a></span> about ENA Submission Requirements...</p></html>";
- submissionInfo.setText(label);
- submissionInfo.setVisible(true);
- submissionInfo.addHyperlinkListener(new HyperlinkListener() {
- public void hyperlinkUpdate(HyperlinkEvent e) {
- if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
- if (Desktop.isDesktopSupported()) {
- try {
- Desktop.getDesktop().browse(e.getURL().toURI());
- } catch (IOException e1) {
- e1.printStackTrace();
- } catch (URISyntaxException e1) {
- e1.printStackTrace();
- }
- }
- }
- }
- });
- metadataSection.add(submissionInfo);
- return metadataSection;
- }
- private Container createMetadataFieldContainer(JTextField field, String fieldName) {
- return createMetadataFieldContainer(field, fieldName, 0, 10);
- }
- /**
- * Creates a Container for a metadata field
- *
- * @param field - Field to be created and added
- * @param fieldName - Name to be given to the field
- * @param type - 0 for JTextField, 1 for JPasswordField
- * @return a container with the field and it's label in a grey box.
- */
- private Container createMetadataFieldContainer(JTextField field, String fieldName, int type, int padding) {
- field.setSize(new Dimension(200, 25));
- field.setOpaque(true);
- UIHelper.renderComponent(field, UIHelper.VER_10_PLAIN, UIHelper.EMERALD, UIHelper.VERY_LIGHT_GREY_COLOR);
- field.setBorder(null);
- Box fieldContainer = createFieldDetailWrapper(null, fieldName, padding);
- fieldContainer.add(field);
- return fieldContainer;
- }
- private Box createFieldDetailWrapper(ImageIcon image_icon, String text, int padding) {
- Box fieldContainer = Box.createHorizontalBox();
- fieldContainer.setOpaque(true);
- fieldContainer.setBackground(UIHelper.VERY_LIGHT_GREY_COLOR);
- fieldContainer.setBorder(BorderFactory.createLineBorder(UIHelper.VERY_LIGHT_GREY_COLOR, 8));
- if (image_icon != null) {
- JLabel icon = new JLabel(image_icon);
- icon.setOpaque(true);
- icon.setBackground(UIHelper.VERY_LIGHT_GREY_COLOR);
- fieldContainer.add(icon);
- }
- if (text != null) {
- JLabel label = UIHelper.createLabel(text, UIHelper.VER_10_BOLD, new Color(127, 140, 141));
- label.setOpaque(true);
- label.setBackground(UIHelper.VERY_LIGHT_GREY_COLOR);
- fieldContainer.add(UIHelper.wrapComponentInPanel(label));
- }
- Component space = Box.createHorizontalStrut(padding);
- ((JComponent) space).setOpaque(true);
- space.setBackground(UIHelper.VERY_LIGHT_GREY_COLOR);
- fieldContainer.add(space);
- return fieldContainer;
- }
- private void submit(final String sraFolder) {
- Thread performer = new Thread(new Runnable() {
- public void run() {
- log.info("Current ISA-Tab is: " + ISAcreatorProperties.getProperty(ISAcreatorProperties.CURRENT_ISATAB));
- Box submitProgressContainer = createSubmitProgressContainer();
- swapContainers(submitProgressContainer);
- SRASubmitter submitter = new SRASubmitter();
- ENAResponse response = submitter.submit(server, username.getText(), new String(password.getPassword()), sraFolder);
- if (response!=null){
- int status = response.getStatus_code();
- String message = response.getReceipt();
- System.out.println("STATUS is " + status);
- System.out.println("RECEIPT/MESSAGE is " + message);
- ENAReceipt receipt = null;
- if (status == 406) {
- swapContainers(createSubmitFailed(message));
- } else if (status != 200) {
- receipt = ENAReceiptParser.parseReceipt(message);
- swapContainers(createSubmitFailed(receipt));
- } else {
- receipt = ENAReceiptParser.parseReceipt(message);
- if (receipt.getErrors().size() > 0) {
- swapContainers(createSubmitFailed(receipt));
- } else {
- swapContainers(createSubmitComplete(receipt));
- }
- }
- }
- }
- });
- performer.start();
- }
- private void validateConvertAndSubmitFiles() {
- log.info("Current ISA-Tab is: " + ISAcreatorProperties.getProperty(ISAcreatorProperties.CURRENT_ISATAB));
- ISAConfigurationSet.setConfigPath(ISAcreatorProperties.getProperty(ISAcreatorProperties.CURRENT_CONFIGURATION));
- Investigation investigation = ApplicationManager.getCurrentApplicationInstance().getDataEntryEnvironment().getInvestigation();
- ApplicationManager.getCurrentApplicationInstance().saveISATab();
- ISAcreatorProperties.setProperty("sra_username", username.getText());
- final Set<String> studies = new HashSet<String>();
- for (Study study : investigation.getStudies().values()) {
- studies.add(study.getStudyId());
- study.addComment("Comment[SRA Submission Action]", sraAction);
- study.addComment("Comment[SRA Broker Name]", brokerName.getText());
- study.addComment("Comment[SRA Lab Name]", labName.getText());
- study.addComment("Comment[SRA Center Name]", centerName.getText());
- study.addComment("Comment[Study Accession]", sraAction.equals("MODIFY") ? studyIdentifier.getText() : "");
- }
- // We're changing the study comments programmatically, so to avoid saving with values currently in the interface,
- // we save by forcing the UI to not update. This preserves the comment values we've specified above.
- ISAcreatorProperties.setProperty("DO_NOT_UPDATE_FROM_GUI", "true");
- ApplicationManager.getCurrentApplicationInstance().saveISATab();
- ISAcreatorProperties.setProperty("DO_NOT_UPDATE_FROM_GUI", "false");
- swapContainers(UIHelper.padComponentVerticalBox(100, new JLabel(convertISAAnimation)));
- SwingUtilities.invokeLater(new Runnable() {
- public void run() {
- final GUIISATABValidator isatabValidator = new GUIISATABValidator();
- GUIInvokerResult result = isatabValidator.validate(ISAcreatorProperties.getProperty(ISAcreatorProperties.CURRENT_ISATAB));
- final Map<String, List<ErrorMessage>> errorMessages = getErrorMessages(isatabValidator.getLog());
- boolean strictValidationEnabled = Boolean.valueOf(ISAcreatorProperties.getProperty(ISAcreatorProperties.STRICT_VALIDATION));
- log.info("Strict validation on? " + strictValidationEnabled);
- boolean shouldShowErrors = strictValidationEnabled && errorMessages.size() > 0;
- if (result == GUIInvokerResult.SUCCESS && !shouldShowErrors) {
- String outputLocation = System.getProperty("java.io.tmpdir") + "sra/" + System.currentTimeMillis() + "/";
- new File(outputLocation).mkdirs();
- result = convertISAtab(isatabValidator.getStore(), AllowedConversions.SRA,
- ISAcreatorProperties.getProperty(ISAcreatorProperties.CURRENT_ISATAB),
- outputLocation);
- if (result == GUIInvokerResult.SUCCESS || result == GUIInvokerResult.WARNING) {
- for (String study : studies) {
- submit(outputLocation + "sra/" + study + "/");
- }
- }
- } else
- {
- log.info("Showing errors and warnings...");
- SwingUtilities.invokeLater(new Runnable() {
- public void run() {
- displayValidationErrorsAndWarnings(errorMessages);
- }
- });
- }
- }
- });
- }
- private Box createSubmitProgressContainer() {
- Box submitProgressContainer = Box.createVerticalBox();
- submitProgressContainer.add(Box.createVerticalStrut(40));
- submitProgressContainer.add(UIHelper.wrapComponentInPanel(new JLabel(submitENAAnimation)));
- return submitProgressContainer;
- }
- private Container createSubmitComplete(ENAReceipt receipt) {
- JPanel submitProgressContainer = new JPanel(new BorderLayout());
- submitProgressContainer.setPreferredSize(new Dimension(600, 420));
- submitProgressContainer.add(UIHelper.wrapComponentInPanel(new JLabel(submission_complete)), BorderLayout.NORTH);
- // create 4 lists with the Study, Sample, Experiment and Runs accessions
- JPanel listPanel = new JPanel(new GridLayout(1, 3));
- listPanel.setBorder(BorderFactory.createLineBorder(Color.WHITE, 20));
- listPanel.setSize(new Dimension(600, 420));
- JList studyList = new JList(receipt.getStudyAccessions().toArray());
- JList experimentList = new JList(receipt.getExperimentAccessions().toArray());
- JList runList = new JList(receipt.getRunAccessions().toArray());
- JList sampleList = new JList(receipt.getSampleAccessions().toArray());
- Box studyListContainer = Box.createVerticalBox();
- JScrollPane studyScroller = createScrollerForList(studyList);
- JLabel studies = UIHelper.createLabel("Studies", UIHelper.VER_11_BOLD, UIHelper.NEPHRITIS);
- studies.setToolTipText("ENA accession numbers for the submitted studies");
- studyListContainer.add(UIHelper.wrapComponentInPanel(studies));
- studyListContainer.add(studyScroller);
- listPanel.add(studyListContainer);
- Box experimentListContainer = Box.createVerticalBox();
- JScrollPane experimentController = createScrollerForList(experimentList);
- JLabel experiments = UIHelper.createLabel("Experiments", UIHelper.VER_11_BOLD, UIHelper.NEPHRITIS);
- experiments.setToolTipText("ENA accession numbers for the submitted experiments");
- experimentListContainer.add(UIHelper.wrapComponentInPanel(experiments));
- experimentListContainer.add(experimentController);
- listPanel.add(experimentListContainer);
- Box runListContainer = Box.createVerticalBox();
- JLabel runs = UIHelper.createLabel("Runs", UIHelper.VER_11_BOLD, UIHelper.NEPHRITIS);
- runs.setToolTipText("ENA accession numbers for the submitted runs");
- runListContainer.add(UIHelper.wrapComponentInPanel(runs));
- JScrollPane runScroller = createScrollerForList(runList);
- runListContainer.add(runScroller);
- listPanel.add(runListContainer);
- Box sampleListContainer = Box.createVerticalBox();
- JLabel samples = UIHelper.createLabel("Samples", UIHelper.VER_11_BOLD, UIHelper.NEPHRITIS);
- samples.setToolTipText("ENA accession numbers for the submitted samples");
- sampleListContainer.add(UIHelper.wrapComponentInPanel(samples));
- JScrollPane sampleScroller = createScrollerForList(sampleList);
- sampleListContainer.add(sampleScroller);
- listPanel.add(sampleListContainer);
- submitProgressContainer.add(listPanel);
- FlatButton nextButton = new FlatButton(ButtonType.RED, "Close");
- nextButton.addMouseListener(new CommonMouseAdapter() {
- @Override
- public void mousePressed(MouseEvent mouseEvent) {
- super.mousePressed(mouseEvent);
- setVisible(false);
- ENASubmissionUI.this.dispose();
- }
- });
- submitProgressContainer.add(UIHelper.wrapComponentInPanel(nextButton), BorderLayout.SOUTH);
- return submitProgressContainer;
- }
- private JScrollPane createScrollerForList(JList experimentList) {
- experimentList.setCellRenderer(new SimpleListCellRenderer());
- JScrollPane experimentScroller = new JScrollPane(experimentList,
- JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
- JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
- experimentScroller.setBorder(new EmptyBorder(0, 0, 0, 0));
- IAppWidgetFactory.makeIAppScrollPane(experimentScroller);
- return experimentScroller;
- }
- private Box createSubmitFailed(String message) {
- Box submitProgressContainer = Box.createVerticalBox();
- submitProgressContainer.add(UIHelper.wrapComponentInPanel(new JLabel(submission_failed)));
- ErrorUI errorContainer = new ErrorUI();
- List<ErrorMessage> errorMessages = new ArrayList();
- errorMessages.add(new ErrorMessage(ErrorLevel.ERROR, message));
- errorContainer.constructErrorPane(errorMessages, "Submission");
- errorContainer.setPreferredSize(new Dimension(650, 300));
- submitProgressContainer.add(errorContainer);
- // SUBMIT ANOTHER, OR BACK
- FlatButton nextButton = new FlatButton(ButtonType.RED, "Back to Submission Screen");
- nextButton.addMouseListener(new CommonMouseAdapter() {
- @Override
- public void mousePressed(MouseEvent mouseEvent) {
- super.mousePressed(mouseEvent);
- swapContainers(metadataPanel);
- }
- });
- submitProgressContainer.add(Box.createVerticalStrut(20));
- submitProgressContainer.add(UIHelper.wrapComponentInPanel(nextButton));
- return submitProgressContainer;
- }
- /**
- * Creates a box when submission failed
- *
- * @param receipt
- * @return
- */
- private Box createSubmitFailed(ENAReceipt receipt) {
- Box submitProgressContainer = Box.createVerticalBox();
- submitProgressContainer.add(UIHelper.wrapComponentInPanel(new JLabel(submission_failed)));
- ErrorUI errorContainer = new ErrorUI();
- errorContainer.constructErrorPane(receipt.getMessagesForDisplay("Submission Errors"), "Submission");
- errorContainer.setPreferredSize(new Dimension(650, 300));
- submitProgressContainer.add(errorContainer);
- // SUBMIT ANOTHER, OR BACK
- FlatButton nextButton = new FlatButton(ButtonType.RED, "Back to Submission Screen");
- nextButton.addMouseListener(new CommonMouseAdapter() {
- @Override
- public void mousePressed(MouseEvent mouseEvent) {
- super.mousePressed(mouseEvent);
- swapContainers(metadataPanel);
- }
- });
- submitProgressContainer.add(Box.createVerticalStrut(20));
- submitProgressContainer.add(UIHelper.wrapComponentInPanel(nextButton));
- return submitProgressContainer;
- }
- private void addHeaderImageToContainer(Container submitProgressContainer) {
- submitProgressContainer.add(UIHelper.wrapComponentInPanel(new JLabel(submitIcon)));
- submitProgressContainer.add(Box.createVerticalStrut(20));
- }
- public static void main(String[] args) {
- ISAcreatorGUIProperties.setProperties();
- ENASubmissionUI ui = new ENASubmissionUI();
- ui.createGUI();
- ui.setVisible(true);
- Set<String> experiments = new HashSet<String>();
- experiments.add("ERX546955");
- experiments.add("ERX546956");
- experiments.add("ERX546957");
- experiments.add("ERX546958");
- experiments.add("ERX546959");
- experiments.add("ERX546960");
- experiments.add("ERX546961");
- experiments.add("ERX546962");
- Set<String> runs = new HashSet<String>();
- runs.add("ERR546955");
- runs.add("ERR546956");
- runs.add("ERR546957");
- runs.add("ERR546958");
- runs.add("ERR546959");
- runs.add("ERR546960");
- runs.add("ERR546961");
- runs.add("ERR546962");
- Set<String> samples = new HashSet<String>();
- samples.add("ERS546955");
- samples.add("ERS546956");
- samples.add("ERS546957");
- samples.add("ERS546958");
- samples.add("ERS546959");
- samples.add("ERS546960");
- samples.add("ERS546961");
- samples.add("ERS546962");
- Set<String> studies = new HashSet<String>();
- studies.add("ERP006700");
- ENAReceipt receipt = new ENAReceipt(experiments, samples, runs, studies, new HashSet<String>(), new HashSet<String>());
- ui.swapContainers(ui.createSubmitComplete(receipt));
- }
- }