/**
*
* Copyright (c) 2009-2016 Freedomotic team http://freedomotic.com
*
* This file is part of Freedomotic
*
* This Program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation; either version 2, or (at your option) any later version.
*
* This Program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* Freedomotic; see the file COPYING. If not, see
* <http://www.gnu.org/licenses/>.
*/
package com.freedomotic.jfrontend.utils;
import com.freedomotic.api.API;
import com.freedomotic.events.GenericEvent;
import com.freedomotic.jfrontend.JavaDesktopFrontend;
import com.freedomotic.i18n.I18n;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Timer;
/**
*
* @author Matteo Mazzoni
*/
public class SplashLogin extends javax.swing.JFrame {
private API api;
private I18n I18n;
private JavaDesktopFrontend master;
/**
*
* @param jd
*/
public SplashLogin(JavaDesktopFrontend jd) {
this.master = jd;
this.api = jd.getApi();
this.I18n = api.getI18n();
initComponents();
logo.setIcon(new javax.swing.ImageIcon(api.getResource("Freedomotic_noBack.png")));
// center window on screen
setLocationRelativeTo(null);
this.setAutoRequestFocus(true);
this.getRootPane().setDefaultButton(btnLogin);
// as a tip for first login attempts
setDefaultLoginData();
setVisible(true);
btnLogin.requestFocus();
}
@Deprecated
private void setDefaultLoginData() {
username.setText("admin");
password.setText("admin");
}
/**
*
*/
public void trySSO() {
username.setEnabled(false);
password.setEnabled(false);
msgBox.setText(I18n.msg("trying_sso_msg"));
ActionListener taskPerformer = new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
if (api.getConfig().getBooleanProperty("KEY_ENABLE_SSO", false)
&& api.getAuth().bindFakeUser(System.getProperty("user.name"))) {
master.createMainWindow();
} else {
msgBox.setText(api.getI18n().msg("login_disclaimer"));
username.setEnabled(true);
password.setEnabled(true);
}
}
};
Timer doSSO = new Timer(3000, taskPerformer);
doSSO.setRepeats(false);
doSSO.start();
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
btnLogin = new javax.swing.JButton();
btnExit = new javax.swing.JButton();
username = new javax.swing.JTextField();
password = new javax.swing.JPasswordField();
logo = new javax.swing.JLabel();
loginLbl = new javax.swing.JLabel();
msgBox = new javax.swing.JLabel();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setUndecorated(true);
setResizable(false);
btnLogin.setText(I18n .msg("login"));
btnLogin.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnLoginActionPerformed(evt);
}
});
btnExit.setText(I18n.msg("exit"));
btnExit.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnExitActionPerformed(evt);
}
});
username.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
usernameActionPerformed(evt);
}
});
logo.setToolTipText("");
logo.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
loginLbl.setText(I18n.msg("login_msg"));
msgBox.setForeground(new java.awt.Color(255, 0, 0));
jLabel1.setFont(new java.awt.Font("Arial", 0, 18)); // NOI18N
jLabel1.setText("Open IoT Framework");
jLabel2.setFont(new java.awt.Font("Arial", 1, 12)); // NOI18N
jLabel2.setForeground(new java.awt.Color(207, 7, 7));
jLabel2.setText("THING WIDER");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(msgBox, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(loginLbl)
.addGap(0, 0, Short.MAX_VALUE))
.addComponent(username))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(password, javax.swing.GroupLayout.PREFERRED_SIZE, 150, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(btnLogin)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnExit))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addComponent(logo, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGap(56, 56, 56))
.addGroup(layout.createSequentialGroup()
.addGap(12, 12, 12)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap()
.addComponent(logo, javax.swing.GroupLayout.DEFAULT_SIZE, 68, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(msgBox, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(loginLbl)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(username, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(password, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btnLogin)
.addComponent(btnExit))
.addContainerGap())
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void btnLoginActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnLoginActionPerformed
// TODO add your handling code here:
boolean loginSuccessfull = api.getAuth().login(username.getText(), password.getPassword(), true);
if (loginSuccessfull) {
master.createMainWindow();
} else {
username.setText(null);
username.setEnabled(false);
password.setText(null);
password.setEnabled(false);
msgBox.setText(I18n.msg("incorrect_login_msg"));
ActionListener taskPerformer = new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
setDefaultLoginData();
msgBox.setText(api.getI18n().msg("login_disclaimer"));
username.setEnabled(true);
password.setEnabled(true);
}
};
Timer doWaitForNewLogin = new Timer(4000, taskPerformer);
doWaitForNewLogin.setRepeats(false);
doWaitForNewLogin.start();
}
}//GEN-LAST:event_btnLoginActionPerformed
private void usernameActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_usernameActionPerformed
// TODO add your handling code here:
}//GEN-LAST:event_usernameActionPerformed
private void btnExitActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnExitActionPerformed
GenericEvent exitSignal = new GenericEvent(this);
exitSignal.setDestination("app.event.system.exit");
master.notifyEvent(exitSignal);
}//GEN-LAST:event_btnExitActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton btnExit;
private javax.swing.JButton btnLogin;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel loginLbl;
private javax.swing.JLabel logo;
private javax.swing.JLabel msgBox;
private javax.swing.JPasswordField password;
private javax.swing.JTextField username;
// End of variables declaration//GEN-END:variables
}