/*
* NewRdDialog.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.workbench.views.source.editors.text.ui;
import org.rstudio.core.client.widget.ModalDialog;
import org.rstudio.core.client.widget.OperationWithInput;
import org.rstudio.studio.client.RStudioGinjector;
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Widget;
public class NewRdDialog extends ModalDialog<NewRdDialog.Result>
{
public static class Result
{
public static final String TYPE_NONE = "none";
public Result(String name, String type)
{
this.name = name;
this.type = type;
}
public final String name;
public final String type;
}
public interface Binder extends UiBinder<Widget, NewRdDialog>
{
}
public NewRdDialog(OperationWithInput<Result> operation)
{
super("New R Documentation File", operation);
mainWidget_ = GWT.<Binder>create(Binder.class).createAndBindUi(this);
}
@Override
protected Widget createMainWidget()
{
return mainWidget_;
}
@Override
protected void onDialogShown()
{
txtName_.setFocus(true);
}
@Override
protected Result collectInput()
{
return new Result(txtName_.getText().trim(),
listDocType_.getValue(listDocType_.getSelectedIndex()));
}
@Override
protected boolean validate(Result input)
{
if (input.name.length() == 0)
{
RStudioGinjector.INSTANCE.getGlobalDisplay().showErrorMessage(
"Name Not Specified",
"You must specify a topic name for the new Rd file.",
txtName_);
return false;
}
else
{
return true;
}
}
@UiField
TextBox txtName_;
@UiField
ListBox listDocType_;
private Widget mainWidget_;
}