// BlogBridge -- RSS feed reader, manager, and web based service // Copyright (C) 2002-2006 by R. Pito Salas // // 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 of the License, 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 this program; // if not, write to the Free Software Foundation, Inc., 59 Temple Place, // Suite 330, Boston, MA 02111-1307 USA // // Contact: R. Pito Salas // mailto:pitosalas@users.sourceforge.net // More information: about BlogBridge // http://www.blogbridge.com // http://sourceforge.net/projects/blogbridge // // $Id: LoaderProgressDialog.java,v 1.8 2006/05/31 11:28:31 spyromus Exp $ // package com.salas.bb.utils.loader; import com.jgoodies.uif.AbstractDialog; import com.jgoodies.forms.factories.Borders; import com.salas.bb.utils.i18n.Strings; import javax.swing.*; import java.awt.*; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; /** * Progress dialog box. */ class LoaderProgressDialog extends AbstractDialog { private boolean canceled; private String message; private Object watcher; /** * Creates progress dialog box with message. * * @param aMessage message to display. * @param aWatcher watcher thread to notify on cancel. */ public LoaderProgressDialog(String aMessage, Object aWatcher) { super((Frame)null, Strings.message("loader.dialog.title")); setModal(false); this.message = aMessage; this.watcher = aWatcher; } /** * Builds content. * * @return content of dialog. */ protected JComponent buildContent() { JPanel content = new JPanel(new BorderLayout()); content.add(buildBody(), BorderLayout.CENTER); content.add(buildButtonBar(), BorderLayout.SOUTH); return content; } /** * Builds button bar. * * @return button bar. */ private Component buildButtonBar() { final JPanel panel = new JPanel(); final JButton btnCancel = new JButton(Strings.message("loader.cancel")); panel.add(btnCancel); btnCancel.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { canceled = true; close(); } }); panel.setBorder(Borders.BUTTON_BAR_GAP_BORDER); return panel; } /** * Builds body of dialog. * * @return body. */ private Component buildBody() { JPanel panel = new JPanel(); panel.add(new JLabel(message)); return panel; } /** * Returns true if was canceled. * * @return true if canceled. */ public boolean isCanceled() { return canceled; } /** * Opens dialog. */ public void open() { canceled = false; super.open(); } public void close() { super.close(); synchronized (watcher) { watcher.notifyAll(); } } }