Discussion:
issue on the online tutorial
ADEYEMI Oluseyi Bolarin Prince
2014-10-20 02:44:21 UTC
Permalink
package org.yourorg.usermanagement;

import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import javax.swing.JComponent;
import javax.swing.SwingUtilities;
import org.netbeans.spi.options.OptionsPanelController;
import org.openide.util.HelpCtx;
import org.openide.util.Lookup;

@OptionsPanelController.SubRegistration(
displayName = "#AdvancedOption_DisplayName_UserManagement",
keywords = "#AdvancedOption_Keywords_UserManagement",
keywordsCategory = "Advanced/UserManagement"
)
@org.openide.util.NbBundle.Messages({"AdvancedOption_DisplayName_UserManagement=User Management", "AdvancedOption_Keywords_UserManagement=Tool to manage username and password."})
public final class UserManagementOptionsPanelController extends OptionsPanelController {

private UserManagementPanel panel;
private final PropertyChangeSupport pcs = new PropertyChangeSupport(this);
private boolean changed;

public void update() {
getPanel().load();
changed = false;
}

public void applyChanges() {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
getPanel().store();
changed = false;
}
});
}

public void cancel() {
// need not do anything special, if no changes have been persisted yet
}

public boolean isValid() {
return getPanel().valid();
}

public boolean isChanged() {
return changed;
}

public HelpCtx getHelpCtx() {
return null; // new HelpCtx("...ID") if you have a help set
}

public JComponent getComponent(Lookup masterLookup) {
return getPanel();
}

public void addPropertyChangeListener(PropertyChangeListener l) {
pcs.addPropertyChangeListener(l);
}

public void removePropertyChangeListener(PropertyChangeListener l) {
pcs.removePropertyChangeListener(l);
}

private UserManagementPanel getPanel() {
if (panel == null) {
panel = new UserManagementPanel(this);
}
return panel;
}

void changed() {
if (!changed) {
changed = true;
pcs.firePropertyChange(OptionsPanelController.PROP_CHANGED, false, true);
}
pcs.firePropertyChange(OptionsPanelController.PROP_VALID, null, null);
}

}






package org.yourorghere.login;

public class LoginFrame extends javax.swing.JPanel {


public LoginFrame() {
initComponents();
}


@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
user = new javax.swing.JTextField();
pass = new javax.swing.JPasswordField();

jLabel1.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(jLabel1, org.openide.util.NbBundle.getMessage(LoginFrame.class, "LoginFrame.jLabel1.text")); // NOI18N

jLabel2.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(jLabel2, org.openide.util.NbBundle.getMessage(LoginFrame.class, "LoginFrame.jLabel2.text")); // NOI18N

user.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
user.setText(org.openide.util.NbBundle.getMessage(LoginFrame.class, "LoginFrame.user.text")); // NOI18N

pass.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
pass.setText(org.openide.util.NbBundle.getMessage(LoginFrame.class, "LoginFrame.pass.text")); // NOI18N

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(user, javax.swing.GroupLayout.PREFERRED_SIZE, 166, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(pass)))
.addContainerGap(23, Short.MAX_VALUE))
);

layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel1, jLabel2});

layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(user, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel2)
.addComponent(pass, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(60, Short.MAX_VALUE))
);

layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {pass, user});

layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {jLabel1, jLabel2});

}// </editor-fold>
public String getUsername(){
return this.user.getText();
}

public char[] getPassword(){
return this.pass.getPassword();
}

// Variables declaration - do not modify
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JPasswordField pass;
private javax.swing.JTextField user;
// End of variables declaration
}





package org.yourorghere.login;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import javax.swing.JButton;
import org.openide.DialogDisplayer;
import org.openide.LifecycleManager;
import org.openide.NotifyDescriptor;
import org.openide.modules.ModuleInstall;
import org.openide.util.Exceptions;
import org.openide.util.NbPreferences;
import org.yourorghere.usermanagement.UsermanagementPanel;

public class Installer extends ModuleInstall {
private LoginForm form = new LoginForm();
@Override
public void restored() {
createLoginDialog();

}

private void createLoginDialog(){
JButton ok = new JButton();
ok.setText("OK");

JButton cancel = new JButton();
cancel.setText("Cancel");

cancel.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
exit();
}
});

ok.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
authenticate();
}
});

NotifyDescriptor nd = new NotifyDescriptor.Confirmation(form, "Login");
nd.setOptions(new Object[]{ok, cancel});
DialogDisplayer.getDefault().notifyLater(nd);

nd.addPropertyChangeListener(new PropertyChangeListener(){
public void propertyChange(PropertyChangeEvent evt){
if(NotifyDescriptor.CLOSED_OPTION.equals(evt.getNewValue())){
exit();
}
}
});
}

private void authenticate(){
if(NbPreferences.forModule(UsermanagementPanel.class).get("user", "").equals(this.form.getUsername())){
try {
char[] passwordFromForm = null;
char[] passwordFromPref = NbPreferences.forModule(UsermanagementPanel.class).get("pass", "").toCharArray();

String passwordPref = new String(this.form.getPassword());
MessageDigest MD5 = MessageDigest.getInstance("MD5");
byte[] tmp = passwordPref.getBytes();
MD5.update(tmp);
passwordFromForm = byteArrToString(MD5.digest()).toCharArray();
int correctCount = 0;
if(passwordFromForm.length != passwordFromPref.length){
exit();
}
for (int i = 0; i < passwordFromPref.length; i++) {
if (passwordFromPref[i] == passwordFromForm[i]) {
correctCount++;
}
}
if (passwordFromPref.length == correctCount) {
//do nothing here
} else {
exit();
}
} catch (NoSuchAlgorithmException ex) {
Exceptions.printStackTrace(ex);
}
} else {
exit();
}
}

private static String byteArrToString(byte[] b){
String res = null;
StringBuffer sb = new StringBuffer(b.length * 2);
for (int i = 0; i < b.length; i++){
int j = b[i] & 0xff;
if (j < 16) {
sb.append('0');
}
sb.append(Integer.toHexString(j));
}
res = sb.toString();
return res.toUpperCase();
}

final private void exit(){
LifecycleManager.getDefault().exit();
}
}

Base on the online tutorial am following for Login form with username and password using netbeans
am having issue on the import and till unable to solve it my self here are the line am having issue with in the code

import org.yourorghere.usermanagement.UsermanagementPanel;
and
private LoginForm form = new LoginForm();
please help me out i need to know how to create a login page using username and password.
thanks.

Loading...