001 package nl.cwi.sen1.gui.plugin.editor;
002
003 import java.awt.event.ActionEvent;
004 import java.awt.event.KeyEvent;
005
006 import javax.swing.AbstractAction;
007 import javax.swing.ActionMap;
008 import javax.swing.InputMap;
009 import javax.swing.JButton;
010 import javax.swing.JComponent;
011 import javax.swing.JLabel;
012 import javax.swing.JPanel;
013 import javax.swing.JTextField;
014 import javax.swing.KeyStroke;
015
016 public class GotoLineDialog extends BaseDialog {
017
018 private JPanel buttonPanel;
019
020 private JButton cancelButton;
021
022 private JTextField lineNumberField;
023
024 private JLabel lineNumberLabel;
025
026 private JPanel mainPanel;
027
028 private JButton okButton;
029
030 private boolean okPressed;
031
032 public int getLineNumber() {
033 if (okPressed) {
034 String line = lineNumberField.getText();
035 try {
036 return Integer.parseInt(line);
037 } catch (NumberFormatException ex) {
038 return -1;
039 }
040 }
041 return -1;
042 }
043
044 public void setLineNumber(int lineNumber) {
045 lineNumberField.setText(Integer.toString(lineNumber + 1));
046 }
047
048 public GotoLineDialog() {
049 // super(textArea.getFrame(), false);
050 super();
051 setModal(true);
052 setTitle("Goto line");
053 initComponents();
054
055 // defining key bindings
056 InputMap inputMap = this.getRootPane().getInputMap(
057 JComponent.WHEN_IN_FOCUSED_WINDOW);
058 inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "escape");
059 inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "enter");
060
061 ActionMap actionMap = this.getRootPane().getActionMap();
062 actionMap.put("escape", new AbstractAction() {
063 public void actionPerformed(ActionEvent evt) {
064 okPressed = false;
065 GotoLineDialog.this.setVisible(false);
066 }
067 });
068 actionMap.put("enter", new AbstractAction() {
069 public void actionPerformed(ActionEvent evt) {
070 okPressed = true;
071 GotoLineDialog.this.setVisible(false);
072 }
073 });
074
075 // centerDialog(parent);
076 }
077
078 private void initComponents() {
079 java.awt.GridBagConstraints gridBagConstraints;
080
081 mainPanel = new javax.swing.JPanel();
082 lineNumberLabel = new javax.swing.JLabel();
083 lineNumberField = new javax.swing.JTextField();
084 buttonPanel = new javax.swing.JPanel();
085 okButton = new javax.swing.JButton();
086 cancelButton = new javax.swing.JButton();
087
088 addWindowListener(new java.awt.event.WindowAdapter() {
089 public void windowClosing(java.awt.event.WindowEvent evt) {
090 closeDialog();
091 }
092 });
093
094 mainPanel.setLayout(new java.awt.GridBagLayout());
095
096 lineNumberLabel.setText("Line number");
097 gridBagConstraints = new java.awt.GridBagConstraints();
098 gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
099 gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
100 mainPanel.add(lineNumberLabel, gridBagConstraints);
101
102 gridBagConstraints = new java.awt.GridBagConstraints();
103 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
104 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
105 gridBagConstraints.weightx = 1.0;
106 gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
107 mainPanel.add(lineNumberField, gridBagConstraints);
108
109 getContentPane().add(mainPanel, java.awt.BorderLayout.CENTER);
110
111 buttonPanel
112 .setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT));
113
114 okButton.setText("OK");
115 okButton.addActionListener(new java.awt.event.ActionListener() {
116 public void actionPerformed(java.awt.event.ActionEvent evt) {
117 okPressed = true;
118 GotoLineDialog.this.setVisible(false);
119 }
120 });
121
122 buttonPanel.add(okButton);
123
124 cancelButton.setText("Cancel");
125 cancelButton.addActionListener(new java.awt.event.ActionListener() {
126 public void actionPerformed(java.awt.event.ActionEvent evt) {
127 okPressed = false;
128 GotoLineDialog.this.setVisible(false);
129 }
130 });
131
132 buttonPanel.add(cancelButton);
133
134 getContentPane().add(buttonPanel, java.awt.BorderLayout.SOUTH);
135
136 pack();
137 }
138 }