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