/src/mpv5/ui/dialogs/LoginToInstanceScreen.java

http://mp-rechnungs-und-kundenverwaltung.googlecode.com/ · Java · 347 lines · 281 code · 46 blank · 20 comment · 13 complexity · c9e4f6e5c2f5b6b866d36703f5b0f745 MD5 · raw file

  1. /*
  2. * login.java
  3. *
  4. * Created on 7. August 2008, 21:47
  5. */
  6. package mpv5.ui.dialogs;
  7. import java.awt.event.WindowAdapter;
  8. import java.awt.event.WindowEvent;
  9. import java.security.NoSuchAlgorithmException;
  10. import java.util.List;
  11. import java.util.logging.Level;
  12. import java.util.logging.Logger;
  13. import mpv5.Main;
  14. import mpv5.db.common.NodataFoundException;
  15. import mpv5.globals.LocalSettings;
  16. import mpv5.globals.Messages;
  17. import mpv5.logging.Log;
  18. import mpv5.ui.misc.Position;
  19. import mpv5.db.objects.User;
  20. import mpv5.ui.dialogs.subcomponents.wizard_DBSettings_manage_1;
  21. import mpv5.utils.text.MD5HashGenerator;
  22. /**
  23. *
  24. *
  25. */
  26. public class LoginToInstanceScreen extends javax.swing.JDialog {
  27. private java.util.ResourceBundle bundle = mpv5.i18n.LanguageManager.getBundle();
  28. /**
  29. * Show the instance login screen, modal
  30. */
  31. public static void load() {
  32. LoginToInstanceScreen s = new LoginToInstanceScreen();
  33. s.requestFocus();
  34. s.dispose();
  35. }
  36. private LoginToInstanceScreen() {
  37. super();
  38. initComponents();
  39. setModalityType(ModalityType.APPLICATION_MODAL);
  40. setList();
  41. if (!LocalSettings.getProperty("lastuser").equals("null")) {
  42. jCheckBox1.setSelected(true);
  43. try {
  44. jTextField1.setText(new User(Integer.valueOf(LocalSettings.getProperty("lastuser"))).getName());
  45. jPasswordField1.requestFocus();
  46. } catch (Exception ex) {
  47. Log.Debug(this, ex.getMessage());
  48. jTextField1.requestFocus();
  49. }
  50. }
  51. this.addWindowListener(new WindowAdapter() {
  52. @Override
  53. public void windowClosing(WindowEvent e) {
  54. close();
  55. }
  56. private void close() {
  57. dispose();
  58. }
  59. });
  60. Position position = new Position(this);
  61. this.setVisible(true);
  62. }
  63. private void ddispose() {
  64. this.dispose();
  65. }
  66. /** This method is called from within the constructor to
  67. * initialize the form.
  68. * WARNING: Do NOT modify this code. The content of this method is
  69. * always regenerated by the Form Editor.
  70. */
  71. @SuppressWarnings("unchecked")
  72. // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
  73. private void initComponents() {
  74. jPanel1 = new javax.swing.JPanel();
  75. jLabel1 = new javax.swing.JLabel();
  76. jTextField1 = new javax.swing.JTextField();
  77. jLabel2 = new javax.swing.JLabel();
  78. jButton1 = new javax.swing.JButton();
  79. jPasswordField1 = new javax.swing.JPasswordField();
  80. jLabel3 = new javax.swing.JLabel();
  81. jCheckBox1 = new javax.swing.JCheckBox();
  82. jCheckBox2 = new javax.swing.JCheckBox();
  83. jLabel4 = new javax.swing.JLabel();
  84. jLabel5 = new javax.swing.JLabel();
  85. mPCombobox1 = new mpv5.ui.beans.MPCombobox();
  86. jButton2 = new javax.swing.JButton();
  87. jButton3 = new javax.swing.JButton();
  88. setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
  89. java.util.ResourceBundle bundle = mpv5.i18n.LanguageManager.getBundle(); // NOI18N
  90. setTitle(bundle.getString("LoginToInstanceScreen.title")); // NOI18N
  91. setAlwaysOnTop(true);
  92. setFocusTraversalPolicyProvider(true);
  93. setResizable(false);
  94. jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(bundle.getString("LoginToInstanceScreen.jPanel1.border.title"))); // NOI18N
  95. jLabel1.setText(bundle.getString("LoginToInstanceScreen.jLabel1.text")); // NOI18N
  96. jLabel2.setText(bundle.getString("LoginToInstanceScreen.jLabel2.text")); // NOI18N
  97. jButton1.setText(bundle.getString("LoginToInstanceScreen.jButton1.text")); // NOI18N
  98. jButton1.addActionListener(new java.awt.event.ActionListener() {
  99. public void actionPerformed(java.awt.event.ActionEvent evt) {
  100. jButton1ActionPerformed(evt);
  101. }
  102. });
  103. jPasswordField1.setToolTipText(bundle.getString("LoginToInstanceScreen.jPasswordField1.toolTipText")); // NOI18N
  104. jPasswordField1.addActionListener(new java.awt.event.ActionListener() {
  105. public void actionPerformed(java.awt.event.ActionEvent evt) {
  106. jPasswordField1ActionPerformed(evt);
  107. }
  108. });
  109. jLabel3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/mpv5/resources/images/32/lock.png"))); // NOI18N
  110. jCheckBox1.setText(bundle.getString("LoginToInstanceScreen.jCheckBox1.text")); // NOI18N
  111. jCheckBox2.setText(bundle.getString("LoginToInstanceScreen.jCheckBox2.text")); // NOI18N
  112. jLabel4.setFont(new java.awt.Font("Tahoma", 2, 11));
  113. jLabel4.setText(bundle.getString("LoginToInstanceScreen.jLabel4.text")); // NOI18N
  114. jLabel5.setText(bundle.getString("LoginToInstanceScreen.jLabel5.text")); // NOI18N
  115. mPCombobox1.setOpaque(true);
  116. jButton2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/mpv5/resources/images/16/add.png"))); // NOI18N
  117. jButton2.setText(bundle.getString("LoginToInstanceScreen.jButton2.text")); // NOI18N
  118. jButton2.setAlignmentY(0.0F);
  119. jButton2.setIconTextGap(0);
  120. jButton2.setMargin(new java.awt.Insets(2, 2, 2, 2));
  121. jButton2.addActionListener(new java.awt.event.ActionListener() {
  122. public void actionPerformed(java.awt.event.ActionEvent evt) {
  123. jButton2ActionPerformed(evt);
  124. }
  125. });
  126. jButton3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/mpv5/resources/images/16/remove.png"))); // NOI18N
  127. jButton3.setText(bundle.getString("LoginToInstanceScreen.jButton3.text")); // NOI18N
  128. jButton3.setAlignmentY(0.0F);
  129. jButton3.setIconTextGap(0);
  130. jButton3.setMargin(new java.awt.Insets(2, 2, 2, 2));
  131. jButton3.addActionListener(new java.awt.event.ActionListener() {
  132. public void actionPerformed(java.awt.event.ActionEvent evt) {
  133. jButton3ActionPerformed(evt);
  134. }
  135. });
  136. javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
  137. jPanel1.setLayout(jPanel1Layout);
  138. jPanel1Layout.setHorizontalGroup(
  139. jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  140. .addGroup(jPanel1Layout.createSequentialGroup()
  141. .addContainerGap()
  142. .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  143. .addComponent(jLabel2)
  144. .addComponent(jLabel5)
  145. .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
  146. .addComponent(jLabel1)
  147. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  148. .addComponent(jLabel4, javax.swing.GroupLayout.DEFAULT_SIZE, 179, Short.MAX_VALUE)
  149. .addGap(55, 55, 55))
  150. .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
  151. .addComponent(jPasswordField1, javax.swing.GroupLayout.Alignment.LEADING)
  152. .addComponent(jTextField1, javax.swing.GroupLayout.Alignment.LEADING)
  153. .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout.createSequentialGroup()
  154. .addComponent(mPCombobox1, javax.swing.GroupLayout.PREFERRED_SIZE, 215, javax.swing.GroupLayout.PREFERRED_SIZE)
  155. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  156. .addComponent(jButton3, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE)
  157. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  158. .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE)))
  159. .addGroup(jPanel1Layout.createSequentialGroup()
  160. .addComponent(jLabel3)
  161. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  162. .addComponent(jCheckBox1)
  163. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  164. .addComponent(jCheckBox2)
  165. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  166. .addComponent(jButton1)))
  167. .addContainerGap())
  168. );
  169. jPanel1Layout.setVerticalGroup(
  170. jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  171. .addGroup(jPanel1Layout.createSequentialGroup()
  172. .addComponent(jLabel5)
  173. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  174. .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
  175. .addComponent(jButton2, javax.swing.GroupLayout.Alignment.TRAILING, 0, 0, Short.MAX_VALUE)
  176. .addComponent(jButton3, javax.swing.GroupLayout.Alignment.TRAILING, 0, 0, Short.MAX_VALUE)
  177. .addComponent(mPCombobox1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
  178. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  179. .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
  180. .addComponent(jLabel1)
  181. .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE))
  182. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  183. .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  184. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  185. .addComponent(jLabel2)
  186. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  187. .addComponent(jPasswordField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  188. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
  189. .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
  190. .addComponent(jCheckBox2)
  191. .addComponent(jCheckBox1)
  192. .addComponent(jButton1)
  193. .addComponent(jLabel3))
  194. .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
  195. );
  196. javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
  197. getContentPane().setLayout(layout);
  198. layout.setHorizontalGroup(
  199. layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  200. .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  201. );
  202. layout.setVerticalGroup(
  203. layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  204. .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  205. );
  206. pack();
  207. }// </editor-fold>//GEN-END:initComponents
  208. private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
  209. login();
  210. }//GEN-LAST:event_jButton1ActionPerformed
  211. private void jPasswordField1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jPasswordField1ActionPerformed
  212. login();
  213. }//GEN-LAST:event_jPasswordField1ActionPerformed
  214. private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
  215. Wizard w = new Wizard(false);
  216. w.setModalityType(w.getModalityType().APPLICATION_MODAL);
  217. w.addPanel(new wizard_DBSettings_manage_1(w));
  218. w.showWiz();
  219. setList();
  220. }//GEN-LAST:event_jButton2ActionPerformed
  221. private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed
  222. Object idobj = mPCombobox1.getSelectedItemId();
  223. if (idobj != null) {
  224. Integer id = Integer.valueOf(idobj.toString());
  225. try {
  226. LocalSettings.removeInstance(id);
  227. } catch (Exception ex) {
  228. Log.Debug(ex);
  229. }
  230. setList();
  231. }
  232. }//GEN-LAST:event_jButton3ActionPerformed
  233. // Variables declaration - do not modify//GEN-BEGIN:variables
  234. private javax.swing.JButton jButton1;
  235. private javax.swing.JButton jButton2;
  236. private javax.swing.JButton jButton3;
  237. private javax.swing.JCheckBox jCheckBox1;
  238. private javax.swing.JCheckBox jCheckBox2;
  239. private javax.swing.JLabel jLabel1;
  240. private javax.swing.JLabel jLabel2;
  241. private javax.swing.JLabel jLabel3;
  242. private javax.swing.JLabel jLabel4;
  243. private javax.swing.JLabel jLabel5;
  244. private javax.swing.JPanel jPanel1;
  245. private javax.swing.JPasswordField jPasswordField1;
  246. private javax.swing.JTextField jTextField1;
  247. private mpv5.ui.beans.MPCombobox mPCombobox1;
  248. // End of variables declaration//GEN-END:variables
  249. private void login() {
  250. Object idobj = mPCombobox1.getSelectedItemId();
  251. if (idobj != null) {
  252. Integer id = Integer.valueOf(idobj.toString());
  253. Log.Debug(Main.class, "Switching connection id to: " + id);
  254. LocalSettings.setConnectionID(id);
  255. try {
  256. LocalSettings.read();
  257. LocalSettings.apply();
  258. } catch (Exception ex) {
  259. Log.Debug(Main.class, ex.getMessage());
  260. Popup.error(this, "Local settings file not readable: " + LocalSettings.getLocalFile() + "\n" + ex);
  261. }
  262. User user = mpv5.usermanagement.MPSecurityManager.checkAuth(jTextField1.getText(), new String(jPasswordField1.getPassword()));
  263. if (user != null) {
  264. user.login();
  265. this.setVisible(false);
  266. if (jCheckBox1.isSelected()) {
  267. LocalSettings.setProperty("lastuser", mpv5.db.objects.User.getCurrentUser().__getIDS().toString());
  268. } else {
  269. LocalSettings.setProperty("lastuser", "INSTANCE");
  270. }
  271. if (jCheckBox2.isSelected()) {
  272. try {
  273. LocalSettings.setProperty("lastuserpw", MD5HashGenerator.getInstance().hashData(jPasswordField1.getPassword()));
  274. } catch (NoSuchAlgorithmException ex) {
  275. Log.Debug(ex);
  276. }
  277. } else {
  278. LocalSettings.setProperty("lastuserpw", "fdgdfDDRDFGFGFCVGEDgefg45g");
  279. }
  280. LocalSettings.save();
  281. this.dispose();
  282. } else {
  283. jLabel4.setText(Messages.ACCESS_DENIED.getValue());
  284. }
  285. }
  286. }
  287. private void setList() {
  288. try {
  289. List<Integer> list = LocalSettings.getConnectionIDs();
  290. Object[][] data = new Object[list.size()][2];
  291. for (int i = 0; i < list.size(); i++) {
  292. Integer integer = list.get(i);
  293. data[i][0] = integer;
  294. data[i][1] = "Connection ID " + integer;
  295. }
  296. mPCombobox1.setModel(data);
  297. } catch (Exception ex) {
  298. Log.Debug(ex);
  299. }
  300. }
  301. }