1 /* 2 * PublishCodePage.java 3 * 4 * Copyright (C) 2021 by RStudio, PBC 5 * 6 * Unless you have received this program directly from RStudio pursuant 7 * to the terms of a commercial license agreement with RStudio, then 8 * this program is licensed to you under the terms of version 3 of the 9 * GNU Affero General Public License. This program is distributed WITHOUT 10 * ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING THOSE OF NON-INFRINGEMENT, 11 * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Please refer to the 12 * AGPL (http://www.gnu.org/licenses/agpl-3.0.txt) for more details. 13 * 14 */ 15 package org.rstudio.studio.client.rsconnect.ui; 16 17 import org.rstudio.core.client.widget.OperationWithInput; 18 import org.rstudio.core.client.widget.ProgressIndicator; 19 import org.rstudio.core.client.widget.WizardPage; 20 import org.rstudio.studio.client.rsconnect.RSConnect; 21 import org.rstudio.studio.client.rsconnect.model.RSConnectPublishInput; 22 import org.rstudio.studio.client.rsconnect.model.RSConnectPublishResult; 23 import org.rstudio.studio.client.rsconnect.model.RSConnectPublishSource; 24 25 import com.google.gwt.resources.client.ImageResource; 26 import com.google.gwt.user.client.ui.Widget; 27 28 public class PublishFilesPage 29 extends WizardPage<RSConnectPublishInput, RSConnectPublishResult> 30 { PublishFilesPage(String title, String subTitle, ImageResource icon, RSConnectPublishInput input, boolean asMultiple, boolean asStatic)31 public PublishFilesPage(String title, String subTitle, ImageResource icon, 32 RSConnectPublishInput input, boolean asMultiple, boolean asStatic) 33 { 34 super(title, subTitle, "Publish", icon, null); 35 36 // createWidget is called by super() above 37 if (contents_ != null) 38 { 39 // publish the HTML file or the original R Markdown doc, as requested 40 if (asStatic) 41 { 42 RSConnectPublishSource source = null; 43 if (input.getOriginatingEvent().getFromPreview() != null) 44 { 45 source = new RSConnectPublishSource( 46 input.getOriginatingEvent().getFromPreview(), 47 input.getWebsiteDir(), 48 input.isSelfContained(), 49 asStatic, 50 input.isShiny(), 51 input.getDescription()); 52 } 53 else 54 { 55 source = new RSConnectPublishSource( 56 input.getOriginatingEvent().getPath(), 57 input.getOriginatingEvent().getHtmlFile(), 58 input.getWebsiteDir(), 59 input.getWebsiteOutputDir(), 60 input.isSelfContained(), 61 asStatic, 62 input.isShiny(), 63 input.isQuarto(), 64 input.getDescription(), 65 input.getContentType()); 66 } 67 contents_.setPublishSource(source, input.getContentType(), 68 asMultiple, true); 69 } 70 else 71 { 72 contents_.setPublishSource( 73 new RSConnectPublishSource( 74 input.getContentType() == RSConnect.CONTENT_TYPE_QUARTO_WEBSITE ? 75 input.getWebsiteDir() : 76 input.getSourceRmd().getPath(), 77 input.getWebsiteDir(), 78 input.isSelfContained(), 79 asStatic, 80 input.isShiny(), 81 input.isQuarto(), 82 input.getDescription(), 83 input.getContentType()), 84 input.getContentType(), 85 asMultiple, false); 86 } 87 } 88 } 89 90 @Override focus()91 public void focus() 92 { 93 contents_.focus(); 94 } 95 96 @Override onActivate(ProgressIndicator indicator)97 public void onActivate(ProgressIndicator indicator) 98 { 99 contents_.onActivate(indicator); 100 } 101 102 @Override createWidget()103 protected Widget createWidget() 104 { 105 contents_ = new RSConnectDeploy(null, RSConnect.CONTENT_TYPE_NONE, 106 null, true); 107 return contents_; 108 } 109 110 @Override initialize(RSConnectPublishInput initData)111 protected void initialize(RSConnectPublishInput initData) 112 { 113 } 114 115 @Override collectInput()116 protected RSConnectPublishResult collectInput() 117 { 118 return contents_.getResult(); 119 } 120 121 @Override validateAsync(RSConnectPublishResult input, OperationWithInput<Boolean> onValidated)122 protected void validateAsync(RSConnectPublishResult input, 123 OperationWithInput<Boolean> onValidated) 124 { 125 contents_.validateResult(onValidated); 126 } 127 128 private RSConnectDeploy contents_; 129 } 130