/*
* NewProjectWizardPage.java
*
* Copyright (C) 2009-12 by RStudio, Inc.
*
* Unless you have received this program directly from RStudio pursuant
* to the terms of a commercial license agreement with RStudio, then
* this program is licensed to you under the terms of version 3 of the
* GNU Affero General Public License. This program is distributed WITHOUT
* ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING THOSE OF NON-INFRINGEMENT,
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Please refer to the
* AGPL (http://www.gnu.org/licenses/agpl-3.0.txt) for more details.
*
*/
package org.rstudio.studio.client.projects.ui.newproject;
import org.rstudio.core.client.files.FileSystemItem;
import org.rstudio.core.client.widget.WizardPage;
import org.rstudio.studio.client.RStudioGinjector;
import org.rstudio.studio.client.common.GlobalDisplay;
import org.rstudio.studio.client.projects.model.NewProjectInput;
import org.rstudio.studio.client.projects.model.NewProjectResult;
import org.rstudio.studio.client.workbench.model.SessionInfo;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Widget;
public abstract class NewProjectWizardPage
extends WizardPage<NewProjectInput,NewProjectResult>
{
public NewProjectWizardPage(String title,
String subTitle,
String pageCaption,
ImageResource image,
ImageResource largeImage)
{
super(title, subTitle, pageCaption, image, largeImage);
}
@Override
protected Widget createWidget()
{
flowPanel_ = new FlowPanel();
flowPanel_.setWidth("100%");
onAddWidgets();
return flowPanel_;
}
protected abstract void onAddWidgets();
@Override
protected void initialize(NewProjectInput input)
{
defaultNewProjectLocation_ = input.getDefaultNewProjectLocation();
}
protected void addWidget(Widget widget)
{
widget.addStyleName(NewProjectResources.INSTANCE.styles().wizardWidget());
flowPanel_.add(widget);
}
protected SessionInfo getSessionInfo()
{
return RStudioGinjector.INSTANCE.getSession().getSessionInfo();
}
protected void addSpacer()
{
Label spacerLabel = new Label();
spacerLabel.addStyleName(
NewProjectResources.INSTANCE.styles().wizardSpacer());
flowPanel_.add(spacerLabel);
}
protected String projFileFromDir(String dir)
{
FileSystemItem dirItem = FileSystemItem.createDir(dir);
return FileSystemItem.createFile(
dirItem.completePath(dirItem.getName() + ".Rproj")).getPath();
}
protected FileSystemItem defaultNewProjectLocation_;
protected final GlobalDisplay globalDisplay_ =
RStudioGinjector.INSTANCE.getGlobalDisplay();
private FlowPanel flowPanel_;
}