/*
* DataImportOptionsUiSav.java
*
* Copyright (C) 2009-16 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.environment.dataimport;
import org.rstudio.core.client.widget.Operation;
import org.rstudio.studio.client.common.HelpLink;
import org.rstudio.studio.client.workbench.views.environment.dataimport.model.DataImportAssembleResponse;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiFactory;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.CheckBox;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.Widget;
public class DataImportOptionsUiSav extends DataImportOptionsUi
{
private static DataImportOptionsUiSavUiBinder uiBinder = GWT
.create(DataImportOptionsUiSavUiBinder.class);
interface DataImportOptionsUiSavUiBinder
extends UiBinder<Widget, DataImportOptionsUiSav>
{
}
public DataImportOptionsUiSav(DataImportModes mode)
{
initWidget(uiBinder.createAndBindUi(this));
initDefaults(mode);
initEvents();
}
void initDefaults(DataImportModes mode)
{
formatListBox_.addItem("SAV", "sav");
formatListBox_.addItem("DTA", "dta");
formatListBox_.addItem("POR", "por");
formatListBox_.addItem("SAS", "sas");
formatListBox_.addItem("Stata", "stata");
switch(mode)
{
case SAS:
formatListBox_.setSelectedIndex(3);
break;
case Stata:
formatListBox_.setSelectedIndex(4);
break;
default:
formatListBox_.setSelectedIndex(0);
break;
}
openDataViewerCheckBox_.setValue(true);
updateEnabled();
}
@Override
public DataImportOptionsSav getOptions()
{
return DataImportOptionsSav.create(
nameTextBox_.getValue(),
!fileChooser_.getText().isEmpty() ? fileChooser_.getText() : null,
formatListBox_.getSelectedValue(),
openDataViewerCheckBox_.getValue().booleanValue()
);
}
@Override
public void setAssembleResponse(DataImportAssembleResponse response)
{
nameTextBox_.setText(response.getDataName());
updateEnabled();
}
@Override
public void clearOptions()
{
nameTextBox_.setText("");
updateEnabled();
}
@Override
public void setImportLocation(String importLocation)
{
nameTextBox_.setText("");
String[] components = importLocation.split("\\.");
if (components.length > 0)
{
String extension = components[components.length - 1].toLowerCase();
for (int idx = 0; idx < formatListBox_.getItemCount(); idx++)
{
if (formatListBox_.getValue(idx) == extension)
{
formatListBox_.setSelectedIndex(idx);
}
}
}
}
@Override
public HelpLink getHelpLink()
{
return new HelpLink(
"Reading data using haven",
"import_haven",
false,
true);
}
@UiFactory
DataImportFileChooser makeLocationChooser()
{
DataImportFileChooser dataImportFileChooser = new DataImportFileChooser(
new Operation()
{
@Override
public void execute()
{
updateEnabled();
triggerChange();
}
},
false);
return dataImportFileChooser;
}
void initEvents()
{
ValueChangeHandler<String> valueChangeHandler = new ValueChangeHandler<String>()
{
@Override
public void onValueChange(ValueChangeEvent<String> arg0)
{
updateEnabled();
triggerChange();
}
};
ChangeHandler changeHandler = new ChangeHandler()
{
@Override
public void onChange(ChangeEvent arg0)
{
updateEnabled();
triggerChange();
}
};
ValueChangeHandler<Boolean> booleanValueChangeHandler = new ValueChangeHandler<Boolean>()
{
@Override
public void onValueChange(ValueChangeEvent<Boolean> arg0)
{
updateEnabled();
triggerChange();
}
};
nameTextBox_.addValueChangeHandler(valueChangeHandler);
formatListBox_.addChangeHandler(changeHandler);
openDataViewerCheckBox_.addValueChangeHandler(booleanValueChangeHandler);
}
void updateEnabled()
{
if (formatListBox_.getSelectedValue() == "sas")
{
fileChooser_.setEnabled(true);
}
else
{
fileChooser_.setEnabled(false);
}
}
@UiField
ListBox formatListBox_;
@UiField
DataImportFileChooser fileChooser_;
@UiField
CheckBox openDataViewerCheckBox_;
}