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 }