/** *######################################################################### * * A component of the Gatherer application, part of the Greenstone digital * library suite from the New Zealand Digital Library Project at the * University of Waikato, New Zealand. * *

* * Author: John Thompson, Greenstone Digital Library, University of Waikato * *

* * Copyright (C) 1999 New Zealand Digital Library Project * *

* * 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., 675 Mass Ave, Cambridge, MA 02139, USA. *######################################################################## */ package org.greenstone.gatherer.gui; import java.awt.*; import java.awt.event.*; import java.io.*; import javax.swing.*; import org.greenstone.gatherer.Configuration; import org.greenstone.gatherer.Dictionary; import org.greenstone.gatherer.util.JarTools; import org.greenstone.gatherer.util.XMLTools; import org.w3c.dom.*; /** A lock file dialog is shown whenever GLI detects an existing lock on a collection it is trying to open. The user can look at the details provided with the dialog, and decide whether to 'steal' the lock or to cancel the loading. */ public class LockFileDialog extends ModalDialog { private int choice; private Document document; private JButton cancel_button; private JButton ok_button; private LockFileDialog self; static final public int NO_OPTION = 0; static final public int YES_OPTION = 1; static final private Dimension LABEL_SIZE = new Dimension(100, 25); static final private Dimension SIZE = new Dimension(500, 250); static final private int ICON_SIZE = 30; public LockFileDialog(JFrame parent, String name, File lock_file) { super(parent, Dictionary.get("LockFileDialog.Title"), true); setSize(SIZE); setJMenuBar(new SimpleMenuBar("openingacollection")); this.self = this; // Parse the lock file document = XMLTools.parseXMLFile(lock_file); // Creation JPanel content_pane = (JPanel) getContentPane(); JPanel upper_pane = new JPanel(); ImageIcon icon = JarTools.getImage("lcolicn.gif"); ImageIcon scaled_icon = new ImageIcon(icon.getImage().getScaledInstance(ICON_SIZE, ICON_SIZE, Image.SCALE_DEFAULT)); JLabel icon_label = new JLabel(scaled_icon); JPanel title_pane = new JPanel(); JLabel title_one_label = new JLabel(Dictionary.get("General.Warning")); JTextArea title_two_textarea = new JTextArea(Dictionary.get("LockFileDialog.Lockfile_Message_One")); title_two_textarea.setEditable(false); title_two_textarea.setLineWrap(true); title_two_textarea.setOpaque(false); title_two_textarea.setRows(3); title_two_textarea.setWrapStyleWord(true); JPanel central_pane = new JPanel(); JPanel name_pane = new JPanel(); JLabel name_label = new JLabel(Dictionary.get("LockFileDialog.Name")); name_label.setPreferredSize(LABEL_SIZE); JTextField name_field = new JTextField(name); name_field.setEditable(false); name_field.setBackground(Configuration.getColor("coloring.collection_tree_background", false)); JPanel person_pane = new JPanel(); JLabel person_label = new JLabel(Dictionary.get("LockFileDialog.User")); person_label.setPreferredSize(LABEL_SIZE); JTextField person_field = new JTextField(getValue("User")); person_field.setEditable(false); person_field.setBackground(Configuration.getColor("coloring.collection_tree_background", false)); JPanel machine_pane = new JPanel(); JLabel machine_label = new JLabel(Dictionary.get("LockFileDialog.Machine")); machine_label.setPreferredSize(LABEL_SIZE); JTextField machine_field = new JTextField(getValue("Machine")); machine_field.setEditable(false); machine_field.setBackground(Configuration.getColor("coloring.collection_tree_background", false)); JPanel created_pane = new JPanel(); JLabel created_label = new JLabel(Dictionary.get("LockFileDialog.Date")); created_label.setPreferredSize(LABEL_SIZE); JTextField created_field = new JTextField(getValue("Date")); created_field.setEditable(false); created_field.setBackground(Configuration.getColor("coloring.collection_tree_background", false)); JLabel central_label = new JLabel(Dictionary.get("LockFileDialog.Lockfile_Message_Two")); JPanel button_pane = new JPanel(); ok_button = new GLIButton(Dictionary.get("General.OK"), Dictionary.get("LockFileDialog.OK_Tooltip")); cancel_button = new GLIButton(Dictionary.get("General.Cancel"), Dictionary.get("LockFileDialog.Cancel_Tooltip")); // Connection ok_button.addActionListener(new MyActionListener()); cancel_button.addActionListener(new MyActionListener()); // Layout icon_label.setBorder(BorderFactory.createEmptyBorder(0,0,0,10)); title_pane.setLayout(new BorderLayout()); title_pane.add(title_one_label, BorderLayout.NORTH); title_pane.add(title_two_textarea, BorderLayout.CENTER); upper_pane.setLayout(new BorderLayout()); upper_pane.add(icon_label, BorderLayout.WEST); upper_pane.add(title_pane, BorderLayout.CENTER); name_pane.setLayout(new BorderLayout()); name_pane.add(name_label, BorderLayout.WEST); name_pane.add(name_field, BorderLayout.CENTER); person_pane.setLayout(new BorderLayout()); person_pane.add(person_label, BorderLayout.WEST); person_pane.add(person_field, BorderLayout.CENTER); machine_pane.setLayout(new BorderLayout()); machine_pane.add(machine_label, BorderLayout.WEST); machine_pane.add(machine_field, BorderLayout.CENTER); created_pane.setLayout(new BorderLayout()); created_pane.add(created_label, BorderLayout.WEST); created_pane.add(created_field, BorderLayout.CENTER); central_pane.setLayout(new GridLayout(5,1,0,5)); central_pane.add(name_pane); central_pane.add(person_pane); central_pane.add(machine_pane); central_pane.add(created_pane); central_pane.add(central_label); button_pane.setLayout(new GridLayout(1,2,5,0)); button_pane.add(ok_button); button_pane.add(cancel_button); content_pane.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); content_pane.setLayout(new BorderLayout()); content_pane.add(upper_pane, BorderLayout.NORTH); content_pane.add(central_pane, BorderLayout.CENTER); content_pane.add(button_pane, BorderLayout.SOUTH); // Display if (parent != null) { Rectangle frame_bounds = parent.getBounds(); setLocation(frame_bounds.x + (frame_bounds.width - SIZE.width) / 2, frame_bounds.y + (frame_bounds.height - SIZE.height) / 2); } else { Dimension screen_size = Toolkit.getDefaultToolkit().getScreenSize(); setLocation((screen_size.width - SIZE.width) / 2, (screen_size.height - SIZE.height) / 2); } } public int getChoice() { setVisible(true); return choice; } private String getValue(String name) { String value = ""; if(document != null) { try { Element value_element = (Element) XMLTools.getNodeFromNamed(document.getDocumentElement(), name); value = XMLTools.getValue(value_element); } catch (Exception error) { } } else { value = Dictionary.get("LockFileDialog.Error"); } return value; } private class MyActionListener implements ActionListener { public void actionPerformed(ActionEvent event) { if(event.getSource() == ok_button) { choice = YES_OPTION; } else { choice = NO_OPTION; } self.dispose(); } } }