/*
* RestoreDialog.java - Jun 16, 2003
*
* @author wolf
*/
package org.exist.backup;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.HeadlessException;
import java.awt.Insets;
import java.util.Observable;
import java.util.Observer;
import javax.swing.BorderFactory;
import javax.swing.JDialog;
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;
public class RestoreDialog extends JDialog {
JTextField currentCollection;
JTextField currentBackup;
JTextField resource;
JTextArea messages;
JProgressBar progress;
Observer progressObserver = new UploadProgressObserver();
/**
* @param owner
* @param title
* @param modal
* @throws java.awt.HeadlessException
*/
public RestoreDialog(Frame owner, String title, boolean modal) throws HeadlessException {
super(owner, title, modal);
setupComponents();
setSize(new Dimension(350, 200));
pack();
}
private void setupComponents() {
GridBagLayout grid = new GridBagLayout();
getContentPane().setLayout(grid);
GridBagConstraints c = new GridBagConstraints();
c.insets = new Insets(5, 5, 5, 5);
JLabel label = new JLabel("Backup:");
c.gridx = 0;
c.gridy = 0;
c.anchor = GridBagConstraints.WEST;
c.fill = GridBagConstraints.NONE;
grid.setConstraints(label, c);
getContentPane().add(label);
currentBackup = new JTextField(50);
currentBackup.setEditable(false);
c.gridx = 1;
c.gridy = 0;
c.anchor = GridBagConstraints.WEST;
c.fill = GridBagConstraints.HORIZONTAL;
grid.setConstraints(currentBackup, c);
getContentPane().add(currentBackup);
label = new JLabel("Collection:");
c.gridx = 0;
c.gridy = 1;
c.anchor = GridBagConstraints.WEST;
c.fill = GridBagConstraints.NONE;
grid.setConstraints(label, c);
getContentPane().add(label);
currentCollection = new JTextField(50);
currentCollection.setEditable(false);
c.gridx = 1;
c.gridy = 1;
c.anchor = GridBagConstraints.WEST;
c.fill = GridBagConstraints.HORIZONTAL;
grid.setConstraints(currentCollection, c);
getContentPane().add(currentCollection);
label = new JLabel("Restoring:");
c.gridx = 0;
c.gridy = 2;
c.anchor = GridBagConstraints.WEST;
c.fill = GridBagConstraints.NONE;
grid.setConstraints(label, c);
getContentPane().add(label);
resource = new JTextField(40);
resource.setEditable(false);
c.gridx = 1;
c.gridy = 2;
c.anchor = GridBagConstraints.WEST;
c.fill = GridBagConstraints.HORIZONTAL;
grid.setConstraints(resource, c);
getContentPane().add(resource);
label = new JLabel("Progress:");
c.gridx = 0;
c.gridy = 3;
c.anchor = GridBagConstraints.WEST;
c.fill = GridBagConstraints.NONE;
grid.setConstraints(label, c);
getContentPane().add(label);
progress = new JProgressBar();
progress.setStringPainted(true);
progress.setString("");
c.gridx = 1;
c.gridy = 3;
c.anchor = GridBagConstraints.EAST;
c.fill = GridBagConstraints.HORIZONTAL;
grid.setConstraints(progress, c);
getContentPane().add(progress);
messages = new JTextArea(5, 50);
messages.setEditable(false);
JScrollPane scroll =
new JScrollPane(
messages,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
scroll.setBorder(BorderFactory.createTitledBorder("Messages"));
c.gridx = 0;
c.gridy = 4;
c.gridwidth = 2;
c.anchor = GridBagConstraints.WEST;
c.fill = GridBagConstraints.HORIZONTAL;
grid.setConstraints(scroll, c);
getContentPane().add(scroll);
}
public void setBackup(String backup) {
currentBackup.setText(backup);
}
public void setCollection(String collection) {
currentCollection.setText(collection);
}
public void setResource(String current) {
resource.setText(current);
}
public void displayMessage(String message) {
messages.append(message + '\n');
messages.setCaretPosition(messages.getDocument().getLength());
}
public Observer getObserver() {
return progressObserver;
}
class UploadProgressObserver implements Observer {
int mode = 0;
public void update(Observable o, Object arg) {
progress.setIndeterminate(false);
ProgressIndicator ind = (ProgressIndicator) arg;
progress.setValue(ind.getPercentage());
if (o instanceof TextSearchEngine)
progress.setString("Storing words");
else if (o instanceof ElementIndex)
progress.setString("Storing elements");
else
progress.setString("Storing nodes");
}
}
}