package jetbrains.mps.ide.actions; /*Generated by MPS */ import com.intellij.openapi.ui.DialogWrapper; import javax.swing.JPanel; import javax.swing.JComboBox; import jetbrains.mps.project.Project; import java.util.List; import jetbrains.mps.ide.project.ProjectHelper; import java.awt.GridBagLayout; import java.awt.GridBagConstraints; import java.awt.Insets; import javax.swing.JLabel; import javax.swing.DefaultComboBoxModel; import jetbrains.mps.internal.collections.runtime.ListSequence; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import org.jetbrains.annotations.Nullable; import javax.swing.JComponent; public class SetNodePackageDialog extends DialogWrapper { private boolean myIsCancelled = true; private JPanel myMainPanel; private JComboBox myCbPackage; private String myPackage; public SetNodePackageDialog(Project project, List<String> existingPackages) { super(ProjectHelper.toIdeaProject(project)); setTitle("Set Virtual Package"); setOKButtonText("&OK"); setCancelButtonText("Ca&ncel"); setModal(true); myMainPanel = new JPanel(); myMainPanel.setLayout(new GridBagLayout()); GridBagConstraints c = new GridBagConstraints(0, 0, 1, 1, 0, 0, GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(0, 5, 5, 5), 0, 0); myMainPanel.add(new JLabel("Enter virtual package name:"), c); myCbPackage = new JComboBox(); myCbPackage.setEditable(true); myCbPackage.setModel(new DefaultComboBoxModel(ListSequence.fromList(existingPackages).toGenericArray(String.class))); myCbPackage.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { myPackage = ((String) myCbPackage.getSelectedItem()); } }); myCbPackage.getEditor().getEditorComponent().addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_ENTER && !(myCbPackage.isPopupVisible())) { doOKAction(); } } }); c.gridy = 1; myMainPanel.add(myCbPackage, c); init(); } @Nullable @Override public JComponent getPreferredFocusedComponent() { return myCbPackage; } @Nullable @Override protected JComponent createCenterPanel() { return myMainPanel; } public String getPackage() { return myPackage; } private void updatePackage() { String pack = ((String) myCbPackage.getEditor().getItem()); if (pack != null && pack.length() == 0) { pack = null; } myPackage = pack; } public void setPackage(String pack) { if (pack == null) { pack = ""; } myCbPackage.setSelectedItem(pack); } public boolean isCancelled() { return myIsCancelled; } @Override protected void doOKAction() { updatePackage(); myIsCancelled = false; super.doOKAction(); } }