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    }