package org.fandev.module.wizard.ui;
import com.intellij.ide.util.projectWizard.ModuleWizardStep;
import com.intellij.openapi.options.ConfigurationException;
import javax.swing.*;
import org.fandev.module.wizard.FanModuleBuilder;
import org.fandev.module.pod.PodModel;
import org.fandev.icons.Icons;
import org.fandev.utils.TextUtil;
import org.fandev.utils.VirtualFileUtil;
import org.fandev.lang.fan.FanBundle;
import org.fandev.sdk.FanSdkType;
import org.jetbrains.annotations.NotNull;
/**
* @author Dror Bereznitsky
* @date Jan 26, 2009 1:42:19 PM
*/
public class FanPodCreateStep extends ModuleWizardStep {
protected final FanModuleBuilder mySettingsHolder;
protected final FanPodCreatePanel podCreatePanel;
protected PodModel pod;
public FanPodCreateStep(@NotNull final FanModuleBuilder settingsHolder) {
super();
mySettingsHolder = settingsHolder;
if (null == settingsHolder.getModulePod())
{
pod = new PodModel();
settingsHolder.setModulePod(pod);
}
// hackery
if (settingsHolder.getContentEntryPath() != null ) {
pod.setBuildScriptFile(
VirtualFileUtil.refreshAndFindFileByLocalPath(
VirtualFileUtil.buildUrl(settingsHolder.getContentEntryPath(), PodModel.BUILD_FAN)));
}
pod.setBuildScriptName(PodModel.BUILD_FAN);
podCreatePanel = new FanPodCreatePanel(settingsHolder);
}
public JComponent getComponent() {
return podCreatePanel;
}
public void updateDataModel() {
mySettingsHolder.setModulePod(pod);
}
@Override
public boolean validate() throws ConfigurationException {
super.validate();
podCreatePanel.updateModel();
String message = "";
String fieldsName = "";
fieldsName += TextUtil.isEmpty(pod.getName()) ? FanBundle.message("pod.name") + ", " : "";
fieldsName += TextUtil.isEmpty(pod.getVersion()) ? FanBundle.message("pod.version") + ", " : "";
fieldsName += TextUtil.isEmpty(pod.getBuildScriptName()) ? FanBundle.message("build.script.name") : "";
if (!TextUtil.isEmpty(fieldsName)) {
message += FanBundle.message("validation.field.not.empty", fieldsName) + "\n";
}
if (!TextUtil.isEmpty(message)) {
podCreatePanel.setMessage(message);
return false;
}
return true;
}
@Override
public void updateStep() {
super.updateStep();
pod.setName(mySettingsHolder.getName());
podCreatePanel.setModel(pod);
}
@Override
public Icon getIcon() {
return Icons.FAN_16;
}
}