/*
* eXist Open Source Native XML Database
* Copyright (C) 2001-2012 The eXist Project
* http://exist-db.org
*
* This program 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
* 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 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
*
* $Id$
*/
package org.exist.client;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Observable;
import java.util.Observer;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JProgressBar;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import org.exist.storage.ElementIndex;
import org.exist.storage.TextSearchEngine;
import org.exist.util.ProgressIndicator;
class UploadDialog extends JFrame {
private static final long serialVersionUID = 1L;
JTextField currentFile;
JTextField currentDir;
JLabel currentSize;
JTextArea messages;
JProgressBar progress;
JProgressBar byDirProgress;
boolean cancelled = false;
final JButton closeBtn;
public UploadDialog() {
super(Messages.getString("UploadDialog.0")); //$NON-NLS-1$
final GridBagLayout grid = new GridBagLayout();
getContentPane().setLayout(grid);
final GridBagConstraints c = new GridBagConstraints();
c.insets = new Insets(5, 5, 5, 5);
JLabel label = new JLabel(Messages.getString("UploadDialog.1")); //$NON-NLS-1$
this.setIconImage(InteractiveClient.getExistIcon(getClass()).getImage());
c.gridx = 0;
c.gridy = 0;
c.anchor = GridBagConstraints.WEST;
c.fill = GridBagConstraints.NONE;
c.weightx = 0;
grid.setConstraints(label, c);
getContentPane().add(label);
byDirProgress = new JProgressBar();
byDirProgress.setStringPainted(true);
byDirProgress.setString(Messages.getString("UploadDialog.2")); //$NON-NLS-1$
byDirProgress.setIndeterminate(true);
c.gridx = 1;
c.gridy = 0;
c.anchor = GridBagConstraints.EAST;
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 1;
grid.setConstraints(byDirProgress, c);
getContentPane().add(byDirProgress);
label = new JLabel(Messages.getString("UploadDialog.3")); //$NON-NLS-1$
c.gridx = 0;
c.gridy = 1;
c.anchor = GridBagConstraints.WEST;
c.fill = GridBagConstraints.NONE;
c.weightx = 0;
grid.setConstraints(label, c);
getContentPane().add(label);
currentDir = new JTextField(30);
currentDir.setEditable(false);
c.gridx = 1;
c.gridy = 1;
c.anchor = GridBagConstraints.EAST;
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 1;
grid.setConstraints(currentDir, c);
getContentPane().add(currentDir);
label = new JLabel(Messages.getString("UploadDialog.4")); //$NON-NLS-1$
c.gridx = 0;
c.gridy = 2;
c.anchor = GridBagConstraints.WEST;
c.fill = GridBagConstraints.NONE;
c.weightx = 0;
grid.setConstraints(label, c);
getContentPane().add(label);
currentFile = new JTextField(30);
currentFile.setEditable(false);
c.gridx = 1;
c.gridy = 2;
c.anchor = GridBagConstraints.EAST;
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 1;
grid.setConstraints(currentFile, c);
getContentPane().add(currentFile);
label = new JLabel(Messages.getString("UploadDialog.5")); //$NON-NLS-1$
c.gridx = 0;
c.gridy = 3;
c.anchor = GridBagConstraints.WEST;
c.fill = GridBagConstraints.NONE;
c.weightx = 0;
grid.setConstraints(label, c);
getContentPane().add(label);
currentSize = new JLabel(Messages.getString("UploadDialog.6")); //$NON-NLS-1$
c.gridx = 1;
c.gridy = 3;
c.anchor = GridBagConstraints.EAST;
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 1;
grid.setConstraints(currentSize, c);
getContentPane().add(currentSize);
final JLabel status = new JLabel(Messages.getString("UploadDialog.7")); //$NON-NLS-1$
c.gridx = 0;
c.gridy = 4;
c.anchor = GridBagConstraints.WEST;
c.fill = GridBagConstraints.NONE;
c.weightx = 0;
grid.setConstraints(status, c);
getContentPane().add(status);
progress = new JProgressBar();
progress.setIndeterminate(true);
progress.setStringPainted(true);
c.gridx = 1;
c.gridy = 4;
c.anchor = GridBagConstraints.EAST;
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 1;
grid.setConstraints(progress, c);
getContentPane().add(progress);
messages = new JTextArea(5, 50);
messages.setEditable(false);
messages.setLineWrap(true);
final JScrollPane scroll =
new JScrollPane(
messages,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
scroll.setBorder(BorderFactory.createTitledBorder("Messages")); //$NON-NLS-1$
c.gridx = 0;
c.gridy = 5;
c.gridwidth = 2;
c.anchor = GridBagConstraints.WEST;
c.fill = GridBagConstraints.BOTH;
c.weightx = 1;
c.weighty = 1;
grid.setConstraints(scroll, c);
getContentPane().add(scroll);
closeBtn = new JButton(Messages.getString("UploadDialog.9")); //$NON-NLS-1$
closeBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (Messages.getString("UploadDialog.20").equals(closeBtn.getText())) //$NON-NLS-1$
{setVisible(false);}
else {
cancelled = true;
closeBtn.setText(Messages.getString("UploadDialog.11")); //$NON-NLS-1$
}
}
});
c.gridx = 0;
c.gridy = 6;
c.gridwidth = 2;
c.anchor = GridBagConstraints.EAST;
c.fill = GridBagConstraints.NONE;
c.weightx = 0;
c.weighty = 0;
grid.setConstraints(closeBtn, c);
getContentPane().add(closeBtn);
pack();
}
public Observer getObserver() {
return new UploadProgressObserver();
}
public void setCurrent(String label) {
currentFile.setText(label);
}
public void setCurrentDir(String dir) {
currentDir.setText(dir);
}
public void setCurrentSize(long size) {
if (size >= 1024)
{currentSize.setText(String.valueOf(size / 1024) + Messages.getString("UploadDialog.12"));} //$NON-NLS-1$
else
{currentSize.setText(String.valueOf(size));}
}
public void setTotalSize(long size) {
byDirProgress.setIndeterminate(false);
byDirProgress.setString(null);
byDirProgress.setMinimum(0);
byDirProgress.setValue(0);
byDirProgress.setMaximum((int) (size / 1024));
}
public void setStoredSize(long count) {
byDirProgress.setValue((int) (count / 1024));
}
public boolean isCancelled() {
return cancelled;
}
public void uploadCompleted() {
closeBtn.setText(Messages.getString("UploadDialog.13")); //$NON-NLS-1$
progress.setIndeterminate(false);
progress.setValue(100);
progress.setString(Messages.getString("UploadDialog.14")); //$NON-NLS-1$
byDirProgress.setIndeterminate(false);
byDirProgress.setString(null);
byDirProgress.setValue(byDirProgress.getMaximum());
}
public void showMessage(String msg) {
messages.append(msg + Messages.getString("UploadDialog.15")); //$NON-NLS-1$
messages.setCaretPosition(messages.getDocument().getLength());
}
public void reset() {
progress.setString(Messages.getString("UploadDialog.16")); //$NON-NLS-1$
progress.setIndeterminate(true);
}
class UploadProgressObserver implements Observer {
int mode = 0;
public void update(Observable o, Object arg) {
progress.setIndeterminate(false);
final ProgressIndicator ind = (ProgressIndicator) arg;
progress.setValue(ind.getPercentage());
if (o instanceof TextSearchEngine)
{progress.setString(Messages.getString("UploadDialog.17"));} //$NON-NLS-1$
else if (o instanceof ElementIndex)
{progress.setString(Messages.getString("UploadDialog.18"));} //$NON-NLS-1$
else
{progress.setString(Messages.getString("UploadDialog.19"));} //$NON-NLS-1$
}
}
}