package org.jetbrains.plugins.ruby.motion.ui; import com.intellij.openapi.projectRoots.ProjectJdkTable; import com.intellij.openapi.projectRoots.Sdk; import com.intellij.openapi.ui.ComboBox; import com.intellij.ui.EnumComboBoxModel; import com.intellij.util.PlatformUtils; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NotNull; import org.jetbrains.plugins.ruby.RBundle; import org.jetbrains.plugins.ruby.wizard.RubySdkPanel; import org.jetbrains.plugins.ruby.motion.RubyMotionUtilImpl; import org.jetbrains.plugins.ruby.rails.facet.ui.wizard.ui.RubyFacetEditorTab; import org.jetbrains.plugins.ruby.remote.RubyRemoteInterpreterManager; import org.jetbrains.plugins.ruby.ruby.sdk.RubySdkType; import org.jetbrains.plugins.ruby.ruby.sdk.RubySdkUtil; import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; /** * @author Dennis.Ushakov */ public class RubyMotionGeneratorTabBase extends RubyFacetEditorTab { private static final int COMBO_WIDTH = PlatformUtils.isRubyMine() ? 320 : 150; private final RubyMotionSettingsHolder mySettingsHolder; private JPanel mySettingsPane; private ComboBox myProjectType; private JLabel myProjectTypeLabel; private RubySdkPanel mySdkPanel; public RubyMotionGeneratorTabBase(final RubyMotionSettingsHolder settingsHolder) { super(settingsHolder); mySettingsHolder = settingsHolder; myProjectTypeLabel.setDisplayedMnemonic('T'); myProjectType.setModel(new EnumComboBoxModel<>(RubyMotionUtilImpl.ProjectType.class)); myProjectType.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent event) { final RubyMotionUtilImpl.ProjectType projectType = (RubyMotionUtilImpl.ProjectType)myProjectType.getSelectedItem(); mySettingsHolder.setProjectType(projectType); } }); myProjectType.setSelectedIndex(0); mySdkPanel = new SdkPanel(); init(); } @Nls @Override public String getDisplayName() { return RBundle.message("ruby.motion.wizard.tab.project.generator.title"); } @Override protected JComponent getSettingsComp() { return mySettingsPane; } @Override protected RubySdkPanel getSdkComboPanel() { return mySdkPanel; } @NotNull @Override public JComponent createComponent() { return getMainPanel(); } @Override public boolean isModified() { return true; } @Override public void reset() {} private void createUIComponents() { myProjectType = new ComboBox(COMBO_WIDTH); } static class SdkPanel extends RubySdkPanel { @Override protected List<Sdk> getSdks() { List<Sdk> sdkList = new ArrayList<>(); for (Sdk sdk : ProjectJdkTable.getInstance().getSdksOfType(RubySdkType.getInstance())) { final RubyRemoteInterpreterManager manager = RubyRemoteInterpreterManager.getInstance(); if (!RubySdkUtil.isRuby18(sdk) && !manager.isRemoteSdk(sdk)) { sdkList.add(sdk); } } return sdkList; } } }