1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 package org.eclipse.jgit.awtui;
46
47 import java.awt.Container;
48 import java.awt.GridBagConstraints;
49 import java.awt.GridBagLayout;
50 import java.awt.Insets;
51 import java.net.PasswordAuthentication;
52
53 import javax.swing.JLabel;
54 import javax.swing.JOptionPane;
55 import javax.swing.JPanel;
56 import javax.swing.JPasswordField;
57 import javax.swing.JTextField;
58
59 import org.eclipse.jgit.util.CachedAuthenticator;
60
61
62 public class AwtAuthenticator extends CachedAuthenticator {
63
64 public static void install() {
65 setDefault(new AwtAuthenticator());
66 }
67
68 @Override
69 protected PasswordAuthentication promptPasswordAuthentication() {
70 final GridBagConstraints gbc = new GridBagConstraints(0, 0, 1, 1, 1, 1,
71 GridBagConstraints.NORTHWEST, GridBagConstraints.NONE,
72 new Insets(0, 0, 0, 0), 0, 0);
73 final Container panel = new JPanel();
74 panel.setLayout(new GridBagLayout());
75
76 final StringBuilder instruction = new StringBuilder();
77 instruction.append(UIText.get().enterUsernameAndPasswordFor);
78 instruction.append(" ");
79 if (getRequestorType() == RequestorType.PROXY) {
80 instruction.append(getRequestorType());
81 instruction.append(" ");
82 instruction.append(getRequestingHost());
83 if (getRequestingPort() > 0) {
84 instruction.append(":");
85 instruction.append(getRequestingPort());
86 }
87 } else {
88 instruction.append(getRequestingURL());
89 }
90
91 gbc.weightx = 1.0;
92 gbc.gridwidth = GridBagConstraints.REMAINDER;
93 gbc.gridx = 0;
94 panel.add(new JLabel(instruction.toString()), gbc);
95 gbc.gridy++;
96
97 gbc.gridwidth = GridBagConstraints.RELATIVE;
98
99
100
101 final JTextField username;
102 gbc.fill = GridBagConstraints.NONE;
103 gbc.gridx = 0;
104 gbc.weightx = 1;
105 panel.add(new JLabel(UIText.get().username), gbc);
106
107 gbc.gridx = 1;
108 gbc.fill = GridBagConstraints.HORIZONTAL;
109 gbc.weighty = 1;
110 username = new JTextField(20);
111 panel.add(username, gbc);
112 gbc.gridy++;
113
114
115
116 final JPasswordField password;
117 gbc.fill = GridBagConstraints.NONE;
118 gbc.gridx = 0;
119 gbc.weightx = 1;
120 panel.add(new JLabel(UIText.get().password), gbc);
121
122 gbc.gridx = 1;
123 gbc.fill = GridBagConstraints.HORIZONTAL;
124 gbc.weighty = 1;
125 password = new JPasswordField(20);
126 panel.add(password, gbc);
127 gbc.gridy++;
128
129 if (JOptionPane.showConfirmDialog(null, panel,
130 UIText.get().authenticationRequired, JOptionPane.OK_CANCEL_OPTION,
131 JOptionPane.QUESTION_MESSAGE) == JOptionPane.OK_OPTION) {
132 return new PasswordAuthentication(username.getText(), password
133 .getPassword());
134 }
135
136 return null;
137 }
138 }