// Path: src/main/java/gitflow/GitflowInitOptions.java
// public class GitflowInitOptions {
//     private boolean useDefaults;
//     private String productionBranch;
//     private String developmentBranch;
//     private String featurePrefix;
//     private String releasePrefix;
//     private String hotfixPrefix;
//     private String bugfixPrefix;
//     private String supportPrefix;
//     private String versionPrefix;
// 
//     public boolean isUseDefaults() {
//         return useDefaults;
//     }
// 
//     public void setUseDefaults(boolean useDefaults) {
//         this.useDefaults = useDefaults;
//     }
// 
//     public String getProductionBranch() {
//         return productionBranch;
//     }
// 
//     public void setProductionBranch(String productionBranch) {
//         this.productionBranch = productionBranch;
//     }
// 
//     public String getDevelopmentBranch() {
//         return developmentBranch;
//     }
// 
//     public void setDevelopmentBranch(String developmentBranch) {
//         this.developmentBranch = developmentBranch;
//     }
// 
//     public String getFeaturePrefix() {
//         return featurePrefix;
//     }
// 
//     public void setFeaturePrefix(String featurePrefix) {
//         this.featurePrefix = featurePrefix;
//     }
// 
//     public String getReleasePrefix() {
//         return releasePrefix;
//     }
// 
//     public void setReleasePrefix(String releasePrefix) {
//         this.releasePrefix = releasePrefix;
//     }
// 
//     public String getHotfixPrefix() {
//         return hotfixPrefix;
//     }
// 
//     public void setHotfixPrefix(String hotfixPrefix) {
//         this.hotfixPrefix = hotfixPrefix;
//     }
// 
//     public String getSupportPrefix() {
//         return supportPrefix;
//     }
// 
//     public void setSupportPrefix(String supportPrefix) {
//         this.supportPrefix = supportPrefix;
//     }
// 
//     public String getBugfixPrefix() {
//         return bugfixPrefix;
//     }
// 
//     public void setBugfixPrefix(String bugfixPrefix) {
//         this.bugfixPrefix = bugfixPrefix;
//     }
// 
//     public String getVersionPrefix() {
//         return versionPrefix;
//     }
// 
//     public void setVersionPrefix(String versionPrefix) {
//         this.versionPrefix = versionPrefix;
//     }
// }


import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.DialogWrapper;
import com.intellij.openapi.ui.ValidationInfo;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.ui.CollectionComboBoxModel;
import gitflow.GitflowInitOptions;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.Arrays;
import java.util.List;
        localBranches = _localBranches;

        setTitle("Options for gitflow init");
        setLocalBranchesComboBox(false);

        init();
        useNonDefaultConfigurationCheckBox.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent e) {
                enableFields(e.getStateChange()==ItemEvent.SELECTED);
            }
        });
    }

    private void setLocalBranchesComboBox(boolean isNonDefault){
        if (isNonDefault){
            developmentBranchComboBox.setModel(new CollectionComboBoxModel(localBranches));
            productionBranchComboBox.setModel(new CollectionComboBoxModel(localBranches));
        } else {
            developmentBranchComboBox.setModel(new CollectionComboBoxModel(Arrays.asList("develop")));
            productionBranchComboBox.setModel(new CollectionComboBoxModel(Arrays.asList("master")));
        }
    }

    private void enableFields(boolean enable) {
        setLocalBranchesComboBox(enable);

        productionBranchComboBox.setEnabled(enable);
        developmentBranchComboBox.setEnabled(enable);
        featurePrefixTextField.setEnabled(enable);
// Path: src/main/java/gitflow/GitflowInitOptions.java
// public class GitflowInitOptions {
//     private boolean useDefaults;
//     private String productionBranch;
//     private String developmentBranch;
//     private String featurePrefix;
//     private String releasePrefix;
//     private String hotfixPrefix;
//     private String bugfixPrefix;
//     private String supportPrefix;
//     private String versionPrefix;
// 
//     public boolean isUseDefaults() {
//         return useDefaults;
//     }
// 
//     public void setUseDefaults(boolean useDefaults) {
//         this.useDefaults = useDefaults;
//     }
// 
//     public String getProductionBranch() {
//         return productionBranch;
//     }
// 
//     public void setProductionBranch(String productionBranch) {
//         this.productionBranch = productionBranch;
//     }
// 
//     public String getDevelopmentBranch() {
//         return developmentBranch;
//     }
// 
//     public void setDevelopmentBranch(String developmentBranch) {
//         this.developmentBranch = developmentBranch;
//     }
// 
//     public String getFeaturePrefix() {
//         return featurePrefix;
//     }
// 
//     public void setFeaturePrefix(String featurePrefix) {
//         this.featurePrefix = featurePrefix;
//     }
// 
//     public String getReleasePrefix() {
//         return releasePrefix;
//     }
// 
//     public void setReleasePrefix(String releasePrefix) {
//         this.releasePrefix = releasePrefix;
//     }
// 
//     public String getHotfixPrefix() {
//         return hotfixPrefix;
//     }
// 
//     public void setHotfixPrefix(String hotfixPrefix) {
//         this.hotfixPrefix = hotfixPrefix;
//     }
// 
//     public String getSupportPrefix() {
//         return supportPrefix;
//     }
// 
//     public void setSupportPrefix(String supportPrefix) {
//         this.supportPrefix = supportPrefix;
//     }
// 
//     public String getBugfixPrefix() {
//         return bugfixPrefix;
//     }
// 
//     public void setBugfixPrefix(String bugfixPrefix) {
//         this.bugfixPrefix = bugfixPrefix;
//     }
// 
//     public String getVersionPrefix() {
//         return versionPrefix;
//     }
// 
//     public void setVersionPrefix(String versionPrefix) {
//         this.versionPrefix = versionPrefix;
//     }
// }


// Path: src/main/java/gitflow/ui/GitflowInitOptionsDialog.java
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.DialogWrapper;
import com.intellij.openapi.ui.ValidationInfo;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.ui.CollectionComboBoxModel;
import gitflow.GitflowInitOptions;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.Arrays;
import java.util.List;

        localBranches = _localBranches;

        setTitle("Options for gitflow init");
        setLocalBranchesComboBox(false);

        init();
        useNonDefaultConfigurationCheckBox.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent e) {
                enableFields(e.getStateChange()==ItemEvent.SELECTED);
            }
        });
    }

    private void setLocalBranchesComboBox(boolean isNonDefault){
        if (isNonDefault){
            developmentBranchComboBox.setModel(new CollectionComboBoxModel(localBranches));
            productionBranchComboBox.setModel(new CollectionComboBoxModel(localBranches));
        } else {
            developmentBranchComboBox.setModel(new CollectionComboBoxModel(Arrays.asList("develop")));
            productionBranchComboBox.setModel(new CollectionComboBoxModel(Arrays.asList("master")));
        }
    }

    private void enableFields(boolean enable) {
        setLocalBranchesComboBox(enable);

        productionBranchComboBox.setEnabled(enable);
        developmentBranchComboBox.setEnabled(enable);
        featurePrefixTextField.setEnabled(enable);
        releasePrefixTextField.setEnabled(enable);