package auctionsniper; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.SwingUtilities; import auctionsniper.ui.MainWindow; import auctionsniper.xmpp.XMPPAuctionHouse; public class Main { private static final int ARG_HOSTNAME = 0; private static final int ARG_USERNAME = 1; private static final int ARG_PASSWORD = 2; private final SniperPortfolio portfolio = new SniperPortfolio(); private MainWindow ui; public Main() throws Exception { startUserInterface(); } public static void main(String... args) throws Exception { Main main = new Main(); XMPPAuctionHouse auctionHouse = XMPPAuctionHouse.connect(args[ARG_HOSTNAME], args[ARG_USERNAME], args[ARG_PASSWORD]); main.disconnectWhenUICloses(auctionHouse); main.addUserRequestListenerFor(auctionHouse); } private void startUserInterface() throws Exception { SwingUtilities.invokeAndWait(new Runnable() { public void run() { ui = new MainWindow(portfolio); } }); } private void disconnectWhenUICloses(final XMPPAuctionHouse auctionHouse) { ui.addWindowListener(new WindowAdapter() { @Override public void windowClosed(WindowEvent e) { auctionHouse.disconnect(); } }); } private void addUserRequestListenerFor(final AuctionHouse auctionHouse) { ui.addUserRequestListener(new SniperLauncher(auctionHouse, portfolio)); } }