import javax.swing.JDialog; import javax.swing.JPanel; import javax.swing.JLabel; import javax.swing.JButton; import javax.swing.JOptionPane; import java.awt.Component; import java.awt.Toolkit; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import com.bbdsoft.LicenseEnforcer.BBDLicenseSentry; import com.bbdsoft.LicenseEnforcer.UDPLicenseSentry; import com.bbdsoft.LicenseEnforcer.BBDLicenseHandler; /** * @author BBD SOFT, UAB * * Demo user application with a floating license protection. * It implements a BBDLicenseHandler interface. * Let's say our license hash is "John Smith&DEMOLICENSEKEY" * and only one instance of a program can be run with this license * (a single user license). */ public class Demo extends JDialog implements ActionListener , WindowListener , BBDLicenseHandler { // user license name static String theLicenseName = "John Smith"; // user license key static String theLicenseKey = "DEMOLICENSEKEY"; // a single user license static int theLicenseNumber = 1; // our BBD license sentry static BBDLicenseSentry aSentry; JPanel pnMain; JLabel lbMessageLabel; JButton btClose; //------------------------------------------------------------------------------ public static void main( String args[] ) { new Demo(); } // end main() //------------------------------------------------------------------------------ public Demo() { super(); setTitle("BBD SOFT License-Enforcer DEMO"); pnMain = new JPanel(); lbMessageLabel = new JLabel( "< html>The program is licensed to < b>" + theLicenseName + "< /b>.< br>License key is < b>" + theLicenseKey + "< /b>.< br>No more than " + theLicenseNumber + " instance of this program can be run at a time.< br>" + "Try running it on another computer on your LAN.< br>" + "< b>Note:< /b> Unlimited number of program instances can be run on the same computer!" + "< /html>" ); pnMain.add( lbMessageLabel ); btClose = new JButton( "Close" ); pnMain.add( btClose ); btClose.addActionListener( this ); setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); addWindowListener(this); setContentPane( pnMain ); pack(); // create our UDP license sentry aSentry = new UDPLicenseSentry(); // register our license handler with a license sentry aSentry.setLicenseHandler(this); show(); } // end Demo() //------------------------------------------------------------------------------ public void actionPerformed(ActionEvent arg0) { System.exit(0); } // Inherited from WindowListener public void windowOpened(WindowEvent arg0) {} public void windowClosed(WindowEvent arg0) {} public void windowIconified(WindowEvent arg0) {} public void windowDeiconified(WindowEvent arg0) {} public void windowActivated(WindowEvent arg0) {} public void windowDeactivated(WindowEvent arg0){} // Inherited from WindowListener public void windowClosing(WindowEvent arg0) { System.exit(0); } //------------------------------------------------------------------------------ // Inherited from BBDLicenseHandler interface public String getLicenseHash() { // Make some unique license hash of license name and key. return theLicenseName+"&"+theLicenseKey; } //------------------------------------------------------------------------------ // Inherited from BBDLicenseHandler interface public int getLicenseNumber() { return theLicenseNumber; } //------------------------------------------------------------------------------ // Inherited from BBDLicenseHandler interface public void lock() { JOptionPane.showMessageDialog( this, "No more instances with this license can be run. Program will exit..."); System.exit(0); } } // end class Demo