package org.fandev.sdk.ui; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.MultiLineLabelUI; import com.intellij.openapi.projectRoots.SdkType; import com.intellij.openapi.projectRoots.Sdk; import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.ide.util.projectWizard.JdkChooserPanel; import com.intellij.util.ui.UIUtil; import javax.swing.*; import java.awt.*; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import org.fandev.lang.fan.FanBundle; import org.fandev.sdk.FanSdkType; import org.jetbrains.annotations.Nullable; /** * @author Dror Bereznitsky * @date Jan 19, 2009 2:57:10 PM */ public class FanSdkChooserPanel extends JComponent { private JdkChooserPanel myJdkChooser; public FanSdkChooserPanel(final Project project) { myJdkChooser = new JdkChooserPanel(project); setLayout(new GridBagLayout()); setBorder(BorderFactory.createEtchedBorder()); final JLabel label = new JLabel(FanBundle.message("module.fan.select.sdk")); label.setUI(new MultiLineLabelUI()); add(label, new GridBagConstraints(0, GridBagConstraints.RELATIVE, 2, 1, 1.0, 0.0, GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(8, 10, 8, 10), 0, 0)); final JLabel jdklabel = new JLabel(FanBundle.message("module.fan.prompt.label.project.sdk")); jdklabel.setFont(UIUtil.getLabelFont().deriveFont(Font.BOLD)); add(jdklabel, new GridBagConstraints(0, GridBagConstraints.RELATIVE, 2, 1, 1.0, 0.0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(8, 10, 0, 10), 0, 0)); add(myJdkChooser, new GridBagConstraints(0, GridBagConstraints.RELATIVE, 1, 1, 1.0, 1.0, GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH, new Insets(2, 10, 10, 5), 0, 0)); final JButton configureButton = new JButton(FanBundle.message("button.configure")); add(configureButton, new GridBagConstraints(1, GridBagConstraints.RELATIVE, 1, 1, 0.0, 1.0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(2, 0, 10, 5), 0, 0)); configureButton.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent e) { myJdkChooser.editJdkTable(); } }); myJdkChooser.setAllowedJdkTypes(new SdkType[]{FanSdkType.getInstance()}); final Sdk selectedJdk = project == null ? null : ProjectRootManager.getInstance(project).getProjectJdk(); myJdkChooser.updateList(selectedJdk, null); } @Nullable public Sdk getChosenJdk() { return myJdkChooser.getChosenJdk(); } public JComponent getPreferredFocusedComponent() { return myJdkChooser; } public void selectSdk(@Nullable final Sdk sdk) { myJdkChooser.selectJdk(sdk); } }