/**
*#########################################################################
*
* 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: Shaoqun Wu, Greenstone Digital Library, University of Waikato
*
*
*
* Copyright (C) 2006 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.gems;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Vector;
import java.util.HashMap;
import org.greenstone.gatherer.Configuration;
import org.greenstone.gatherer.Dictionary;
import org.greenstone.gatherer.gui.ModalDialog;
import org.greenstone.gatherer.gui.GLIButton;
public class DeleteMetadataSetPrompt
extends ModalDialog {
static private Dimension SIZE = new Dimension(500, 500);
private ArrayList available_metadata_sets;
private ArrayList listeners;
private JCheckBox confirmation = null;
private JButton delete_button = null;
private JButton close_button = null;
private JList available_set_list = null;
/** The model behind the list. */
private DefaultListModel list_model = null;
private JTextArea description_textarea = null;
private DeleteMetadataSetPrompt self;
private MetadataSetManager meta_manager;
public DeleteMetadataSetPrompt(Frame parent,MetadataSetManager msm) {
super(parent, true);
self = this;
meta_manager = msm;
listeners = new ArrayList();
setSize(SIZE);
setTitle(Dictionary.get("GEMS.DeleteMetadataSetPrompt.Title"));
JPanel content_pane = (JPanel) getContentPane();
content_pane.setOpaque(true);
content_pane.setComponentOrientation(Dictionary.getOrientation());
JLabel available_metadata_sets_label = new JLabel(Dictionary.get("GEMS.DeleteMetadataSetPrompt.Available_Sets"));
available_metadata_sets_label.setOpaque(true);
available_metadata_sets_label.setComponentOrientation(Dictionary.getOrientation());
list_model = new DefaultListModel();
available_set_list = new JList();
available_set_list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
available_set_list.setModel(list_model);
available_set_list.setCellRenderer(new MetadatSetListCellRenderer());
available_set_list.setFixedCellHeight(20);
available_set_list.addListSelectionListener(new MetadataSetListSelectionListener());
available_set_list.setComponentOrientation(Dictionary.getOrientation());
JPanel set_pane = new JPanel();
set_pane.setComponentOrientation(Dictionary.getOrientation());
set_pane.setLayout(new BorderLayout());
set_pane.add(available_metadata_sets_label,BorderLayout.NORTH);
set_pane.add(new JScrollPane(available_set_list),BorderLayout.CENTER);
JLabel metadata_set_des_label = new JLabel(Dictionary.get("GEMS.Set_Description"));
metadata_set_des_label.setOpaque(true);
description_textarea = new JTextArea();
description_textarea.setOpaque(true);
description_textarea.setEditable(false);
description_textarea.setLineWrap(true);
description_textarea.setWrapStyleWord(true);
description_textarea.setComponentOrientation(Dictionary.getOrientation());
JPanel des_pane = new JPanel();
des_pane.setComponentOrientation(Dictionary.getOrientation());
des_pane.setLayout(new BorderLayout());
des_pane.add(metadata_set_des_label,BorderLayout.NORTH);
des_pane.add(new JScrollPane(description_textarea),BorderLayout.CENTER);
JPanel button_pane = new JPanel();
button_pane.setComponentOrientation(Dictionary.getOrientation());
delete_button = new GLIButton(Dictionary.get("GEMS.DeleteMetadataSetPrompt.Delete"), Dictionary.get("GEMS.DeleteMetadataSetPrompt.Delete_Tooltip"));
delete_button.setEnabled(false);
confirmation = new JCheckBox(Dictionary.get("GEMS.DeleteMetadataSetPrompt.Confirm_Delete"));
confirmation.setEnabled(false);
confirmation.setSelected(false);
confirmation.setComponentOrientation(Dictionary.getOrientation());
close_button = new GLIButton(Dictionary.get("General.Close"), Dictionary.get("General.Close_Tooltip"));
close_button.setEnabled(true);
confirmation.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
delete_button.setEnabled(confirmation.isSelected());
//confirmation.setEnabled(false);
//confirmation.setSelected(false);
}
});
// Add listeners
delete_button.addActionListener(new DeleteButtonListener());
close_button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
self.dispose();
}
});
button_pane.setLayout(new GridLayout(1,2));
button_pane.add(delete_button);
button_pane.add(close_button);
JPanel bottom_pane = new JPanel();
bottom_pane.setComponentOrientation(Dictionary.getOrientation());
bottom_pane.setLayout(new BorderLayout());
bottom_pane.add(confirmation,BorderLayout.NORTH);
bottom_pane.add(button_pane, BorderLayout.CENTER);
content_pane.setLayout(new BorderLayout());
content_pane.add(set_pane, BorderLayout.NORTH);
content_pane.add(des_pane, BorderLayout.CENTER);
content_pane.add(bottom_pane, BorderLayout.SOUTH);
// Show
Dimension screen_size = Configuration.screen_size;
setLocation((screen_size.width - SIZE.width) / 2, (screen_size.height - SIZE.height) / 2);
setVisible(false);
}
public void display() {
available_metadata_sets = meta_manager.getAvailableMetadataSets();
for (int i=0; iActionEvent containing all the relevant information garnered from the event itself.
* @see org.greenstone.gatherer.Configuration
* @see org.greenstone.gatherer.Gatherer
* @see org.greenstone.gatherer.util.Utility
*/
public void actionPerformed(ActionEvent event) {
// Delete the selected MetadataSet.
Object selectedValue = available_set_list.getSelectedValue();
if (selectedValue !=null && (selectedValue instanceof MetadataSetInfo)){
((MetadataSetInfo)selectedValue).deleteMetadataSet();
list_model.removeElement(selectedValue);
}
delete_button.setEnabled(false);
confirmation.setEnabled(false);
confirmation.setSelected(false);
description_textarea.setText(Dictionary.get("GEMS.DeleteMetadataSetPrompt.No_Set"));
//self.dispose();
}
}
private class MetadatSetListCellRenderer extends JLabel implements ListCellRenderer {
public MetadatSetListCellRenderer() {
setOpaque(true);
this.setComponentOrientation(Dictionary.getOrientation());
}
public Component getListCellRendererComponent(JList list,
Object value,
int index,
boolean isSelected,
boolean cellHasFocus)
{
String name= "unknown";
if (value instanceof MetadataSetInfo){
MetadataSetInfo meta_info = (MetadataSetInfo) value;
name = meta_info.getMetadataSetName();
}
setText(name);
if (isSelected) {
setBackground(list.getSelectionBackground());
setForeground(list.getSelectionForeground());
}
else {
setBackground(list.getBackground());
setForeground(list.getForeground());
}
return this;
}
}
private class MetadataSetListSelectionListener implements ListSelectionListener {
public void valueChanged(ListSelectionEvent lse){
if (lse.getValueIsAdjusting()) return;
delete_button.setEnabled(false);
Object selectedValue = available_set_list.getSelectedValue();
if (selectedValue !=null && (selectedValue instanceof MetadataSetInfo)){
MetadataSetInfo meta_info = (MetadataSetInfo)selectedValue;
description_textarea.setText(meta_info.getMetadataSetDescription());
confirmation.setEnabled(true);
confirmation.setSelected(false);
}
else {
confirmation.setEnabled(false);
description_textarea.setText(Dictionary.get("GEMS.DeleteMetadataSetPrompt.No_Set"));
}
}
}
public void addMetadataSetListener(MetadataSetListener msl){
listeners.add(msl);
}
}