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();
}
}