/* * $Id$ * * Copyright 2009 Sun Microsystems, Inc., 4150 Network Circle, * Santa Clara, California 95054, U.S.A. All rights reserved. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ package org.jdesktop.swingx.demos.loginpane; import static org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JToggleButton; import javax.swing.SwingUtilities; import org.jdesktop.application.Application; import org.jdesktop.beansbinding.BeanProperty; import org.jdesktop.beansbinding.Bindings; import org.jdesktop.swingx.JXLoginPane; import org.jdesktop.swingx.VerticalLayout; import com.sun.swingset3.DemoProperties; /** * A demo for the {@code JXLoginPane}. * * @author Karl George Schaefer * @author rah003 (original JXLoginPaneDemo) */ @DemoProperties( value = "JXLoginPane Demo", category = "Controls", description = "Demonstrates JXLoginPane, a security login control.", sourceFiles = { "org/jdesktop/swingx/demos/loginpane/LoginPaneDemo.java", "org/jdesktop/swingx/demos/loginpane/resources/LoginPaneDemo.properties", "org/jdesktop/swingx/demos/loginpane/resources/LoginPaneDemo.html", "org/jdesktop/swingx/demos/loginpane/resources/images/LoginPaneDemo.png", "org/jdesktop/swingx/demos/loginpane/DemoLoginService.java" } ) @SuppressWarnings("serial") public class LoginPaneDemo extends JPanel { private DemoLoginService service; private JXLoginPane loginPane; private JButton loginLauncher; private JToggleButton allowLogin; /** * main method allows us to run as a standalone demo. */ public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { JFrame frame = new JFrame(LoginPaneDemo.class.getAnnotation(DemoProperties.class).value()); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().add(new LoginPaneDemo()); frame.setPreferredSize(new Dimension(800, 600)); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); } }); } public LoginPaneDemo() { super(new BorderLayout()); createLoginPaneDemo(); Application.getInstance().getContext().getResourceMap(getClass()).injectComponents(this); bind(); } private void createLoginPaneDemo() { service = new DemoLoginService(); loginPane = new JXLoginPane(service); loginLauncher = new JButton(); loginLauncher.setName("launcher"); add(loginLauncher, BorderLayout.NORTH); JPanel p = new JPanel(new VerticalLayout()); add(p); allowLogin = new JToggleButton(); allowLogin.setName("allowLogin"); p.add(allowLogin); } private void bind() { loginLauncher.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JXLoginPane.showLoginDialog(LoginPaneDemo.this, loginPane); } }); Bindings.createAutoBinding(READ, allowLogin, BeanProperty.create("selected"), service, BeanProperty.create("validLogin")).bind(); } }