boolean selectionExists = c.getSelectionStart() != c.getSelectionEnd();
boolean enabled = c.isEnabled();
boolean editable = c.isEditable();
boolean pwd = (c instanceof JPasswordField);
KongaPopupMenu pm = new KongaPopupMenu();
Action a = actions.get(DefaultEditorKit.cutAction);
a.setEnabled(selectionExists && enabled && editable && !pwd);
JMenuItem mi = new JMenuItem(a);
mi.setText(UiResourceBundle.getString("Cut"));
pm.add(mi);
a = new DefaultEditorKit.CopyAction();
a.setEnabled(selectionExists && !pwd);
mi = new JMenuItem(a);
mi.setText(UiResourceBundle.getString("Copy"));
pm.add(mi);
a = new DefaultEditorKit.PasteAction();
a.setEnabled(enabled && editable);
mi = new JMenuItem(a);
mi.setText(UiResourceBundle.getString("Paste"));
pm.add(mi);
a = new DeleteAction(c);
a.setEnabled(selectionExists && enabled && editable);
pm.add(a);
pm.addSeparator();
pm.add(new SelectAllAction(c));
return pm;
}