package aliview.gui;
import java.awt.Dialog.ModalityType;
import java.awt.Dimension;
import java.awt.Point;
import java.awt.Rectangle;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.JCheckBox;
import javax.swing.JDialog;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import aliview.AliViewWindow;
public class TextEditDialog {
private static final String LF = System.getProperty("line.separator");
public static final String EDIT_SEQUENCE_NAME_TEXT = "Rename sequence";
private static JTextField textEdit;
protected Integer selectedValue = -1;
private Point preferredPos;
public TextEditDialog(Point pos) {
this.preferredPos = pos;
}
public void showOKCancelTextEditor(String editString, String title, AliViewWindow aliViewWindow) {
final JDialog dialog = new JDialog(aliViewWindow);
dialog.setTitle(title);
dialog.setModal(true);
dialog.setAlwaysOnTop(true);
dialog.setModalityType(ModalityType.DOCUMENT_MODAL);
textEdit = new JTextField(editString);
textEdit.setEditable(true);
textEdit.setMaximumSize(new Dimension(800,30));
textEdit.setPreferredSize(new Dimension(350,30));
JPanel messagePanel = new JPanel();
// testPanel.setPreferredSize(new Dimension(350,10));
// testPanel.setMaximumSize(new Dimension(350,10));
// testPanel.add(textEdit);
Object[] messageAndEditor = new Object[]{messagePanel,textEdit};
//Object[] messageAndEditor = new Object[]{textEdit};
JOptionPane optPane = new JOptionPane(messageAndEditor,JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION);
optPane.addPropertyChangeListener(new PropertyChangeListener()
{
public void propertyChange(PropertyChangeEvent e)
{
if (e.getPropertyName().equals("value"))
{
selectedValue = (Integer) e.getNewValue();
switch (selectedValue)
{
case JOptionPane.OK_OPTION:
break;
case JOptionPane.CANCEL_OPTION:
//user clicks CANCEL
break;
}
dialog.dispose();
}
}
});
dialog.setContentPane(optPane);
dialog.pack();
if(preferredPos != null){
dialog.setLocation(preferredPos);
makeSureWithinBounds(dialog, aliViewWindow);
}
else{
dialog.setLocationRelativeTo(aliViewWindow);
}
dialog.setVisible(true);
}
private void makeSureWithinBounds(JDialog dialog, AliViewWindow aliViewWindow) {
Rectangle smaller = dialog.getBounds();
Rectangle larger = aliViewWindow.getBounds();
int topDiff = larger.x - smaller.x;
int bottomDiff = larger.y + larger.height - (smaller.y + smaller.height);
if(topDiff > 0){
dialog.setLocation(smaller.x, larger.y);
}
if(bottomDiff < 0){
dialog.setLocation(smaller.x, smaller.y + bottomDiff);
}
}
public Integer getSelectedValue() {
return selectedValue;
}
public String getEditText() {
return textEdit.getText();
}
}