Пример #1
0
  @Override
  protected Widget createMainWidget() {
    VerticalPanel panel = new VerticalPanel();
    panel.setStyleName(ThemeStyles.INSTANCE.fileUploadPanel());

    // directory panel
    HorizontalPanel directoryPanel = new HorizontalPanel();
    directoryPanel.setWidth("100%");
    directoryPanel.setStyleName(ThemeStyles.INSTANCE.fileUploadField());

    // directory name (informational field)
    panel.add(new Label("Target directory:"));
    directoryNameWidget_ = new DirectoryNameWidget();
    directoryNameWidget_.setDirectory(targetDirectory_);
    directoryPanel.add(directoryNameWidget_);

    // browse directory button
    // JJA: removed browse button (was causing confusion for users who
    // thought it was what they should press to browse local files)
    /*
    Button browseButton = new Button("Browse...",
                                     new BrowseDirectoryClickHandler());
    browseButton.getElement().getStyle().setMarginRight(5, Unit.PX);
    directoryPanel.add(browseButton);
    directoryPanel.setCellHorizontalAlignment(
                                        browseButton,
                                        HasHorizontalAlignment.ALIGN_RIGHT);
    */
    panel.add(directoryPanel);

    // filename field
    panel.add(new Label("File to upload:"));
    fileUpload_ = new FileUpload();
    fileUpload_.setStyleName(ThemeStyles.INSTANCE.fileUploadField());
    fileUpload_.setName("file");
    panel.add(fileUpload_);

    // zip file tip field
    HTML tip =
        new HTML(
            "<b>TIP</b>: To upload multiple files or a "
                + "directory, create a zip file. The zip file will "
                + "be automatically expanded after upload.");
    tip.addStyleName(ThemeStyles.INSTANCE.fileUploadField());
    tip.addStyleName(ThemeStyles.INSTANCE.fileUploadTipLabel());
    panel.add(tip);

    // target directory hidden field
    targetDirectoryHidden_ = new Hidden("targetDirectory", targetDirectory_.getPath());
    panel.add(targetDirectoryHidden_);

    return panel;
  }
  public void initialise(final Result result) {
    this.clear(); // if not cleared then updated panels are added under old ones

    TextPanel information =
        new TextPanel(
            " Here you can download the information the Molecules Tab provides.\n"
                + "The format will be TSV which can easily be handled with most word processors.");
    information.setStyleName("elv-InformationPanel-Download");
    this.addNorth(information, 25);

    // Creating ToggleButton for each possible category of molecules.
    VerticalPanel requiredType = new VerticalPanel();
    requiredType.add(new TextPanel("Please select the type of Molecules you are interested in:"));

    // Allow immediate changes to Preview by adding ClickHandler to every CheckBox.
    ClickHandler updateText =
        new ClickHandler() {
          @Override
          public void onClick(ClickEvent clickEvent) {
            textArea.setText(resultToText());
            textArea.setStyleName("elv-PreviewPanel-Download");
          }
        };

    // Checking for each category of molecules if they are present before adding Handler.
    if (result.getChemicals().size() > 0) {
      requiredType.add(chemTB);
      chemTB.addClickHandler(updateText);
    }

    if (result.getProteins().size() > 0) {
      requiredType.add(protTB);
      protTB.addClickHandler(updateText);
    }

    if (result.getSequences().size() > 0) {
      requiredType.add(sequTB);
      sequTB.addClickHandler(updateText);
    }

    if (result.getOthers().size() > 0) {
      requiredType.add(otheTB);
      otheTB.addClickHandler(updateText);
    }

    requiredType.setStyleName("elv-SelectionPanels-Download");

    // Creating ToggleButton for each available attribute of molecules and adding Handler.
    VerticalPanel requiredFields = new VerticalPanel();
    requiredFields.add(new TextPanel("Please select the fields you are interested in:"));

    typeTB.addClickHandler(updateText);
    requiredFields.add(typeTB);

    identifierTB.addClickHandler(updateText);
    requiredFields.add(identifierTB);

    nameTB.addClickHandler(updateText);
    requiredFields.add(nameTB);

    requiredFields.setStyleName("elv-SelectionPanels-Download");

    // Creating button for download.
    // Browsers that fully support Blob/Download:
    // Chrome, Chrome for Android, Firefox 20+, IE 10+, Opera 15+, Safari 6.1+
    VerticalPanel buttonField = new VerticalPanel();
    buttonField.add(startDownloadBtn);
    startDownloadBtn.setStyleName("elv-Download-Button");
    buttonField.setStyleName("elv-ButtonPanel-Download");
    startDownloadBtn.setTitle(
        "Depending on your browser you can either download your file by clicking on this button"
            + " or your will be redirected to a new tab in your browser where you can right click and"
            + " save the data.");
    startDownloadBtn.addClickHandler(
        new ClickHandler() {
          @Override
          public void onClick(ClickEvent event) {
            if ((chemTB.getValue() || protTB.getValue() || sequTB.getValue() || otheTB.getValue())
                && (typeTB.getValue() || nameTB.getValue() || identifierTB.getValue())) {
              alertDownload(textArea.getText());
            } else {
              DialogBoxFactory.alert(
                  "Molecules Download",
                  "You are trying to download an empty file.\n"
                      + "Please select at least one type of molecules AND one field for the download.");
            }
            presenter.moleculeDownloadStarted();
          }
        });
    buttonField.add(startGenomeSpaceDownloadBtn);
    startGenomeSpaceDownloadBtn.setStyleName("elv-Download-Button");
    startGenomeSpaceDownloadBtn.setTitle(
        "Clicking this button should open a window to import the data to GenomeSpace. "
            + "Depending on your browser configuration, you may have to enable popups for the Reactome website");
    startGenomeSpaceDownloadBtn.addClickHandler(
        new ClickHandler() {
          @Override
          public void onClick(ClickEvent event) {
            if ((chemTB.getValue() || protTB.getValue() || sequTB.getValue() || otheTB.getValue())
                && (typeTB.getValue() || nameTB.getValue() || identifierTB.getValue())) {
              Integer randomInt = random.nextInt(1000 - 1) + 1;
              try {
                uploadListToGenomeSpace(textArea.getText(), randomInt.toString());
              } catch (JavaScriptException exception) {
                Window.alert(exception.getMessage());
              }
            } else {
              Window.alert(
                  "You are trying to download an empty file.\n"
                      + "Please select at least one type of molecules AND one field for the download.");
            }
            presenter.moleculeDownloadStarted();
          }
        });

    // Bringing together the two panels.
    FlowPanel controlArea = new FlowPanel();
    controlArea.insert(requiredType.asWidget(), 0);
    controlArea.insert(requiredFields.asWidget(), 1);
    ScrollPanel scrollPanel = new ScrollPanel(controlArea);

    this.addWest(scrollPanel, 200);
    this.addEast(buttonField, 100);

    // Preview
    this.textArea = new TextArea();
    this.textArea.setVisible(true);
    this.textArea.setTitle("Preview of what your download file will look like.");
    this.textArea.setText(resultToText());
    this.add(textArea);
    this.textArea.setStyleName("elv-PreviewPanel-Download");

    this.addStyleName("elv-Details-OverviewPanel");
  }