/** *######################################################################### * * 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: Katherine Don, 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 org.greenstone.gatherer.Configuration; import org.greenstone.gatherer.Dictionary; import org.greenstone.gatherer.gui.GLIButton; import org.greenstone.gatherer.gui.ModalDialog; public class NewMetadataElementNamePrompt extends ModalDialog { private Dimension SIZE = new Dimension(350, 120); private boolean cancelled = false; private String element_name = null; private JTextField name_textfield = null; private JDialog prompt; private Object model; public NewMetadataElementNamePrompt(Frame parent, boolean subelement, Object model) { super(parent, true); setSize(SIZE); prompt = this; this.model = model; JPanel content_pane = (JPanel) getContentPane(); content_pane.setOpaque(true); JLabel name_label = new JLabel(); if (subelement) { setTitle(Dictionary.get("GEMS.NewMetadataElementNamePrompt.SubTitle")); name_label.setText(Dictionary.get("GEMS.NewMetadataElementNamePrompt.SubName")); } else { setTitle(Dictionary.get("GEMS.NewMetadataElementNamePrompt.Title")); name_label.setText(Dictionary.get("GEMS.NewMetadataElementNamePrompt.Name")); } name_textfield = new JTextField(); name_textfield.addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_ENTER) { //same as clicking OK button validateElementName(); } } }); JPanel details_pane = new JPanel(); details_pane.setLayout(new GridLayout(2,1)); details_pane.add(name_label); details_pane.add(name_textfield); JPanel button_pane = new JPanel(); button_pane.setLayout(new GridLayout(1,2)); GLIButton ok_button = new GLIButton(Dictionary.get("General.OK"), Dictionary.get("General.OK_Tooltip")); GLIButton cancel_button = new GLIButton(Dictionary.get("General.Cancel"), Dictionary.get("General.Cancel_Tooltip")); button_pane.add(ok_button); button_pane.add(cancel_button); // Add listeners ok_button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { validateElementName(); } }); cancel_button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { cancelled = true; prompt.dispose(); } }); content_pane.setLayout(new BorderLayout(5,5)); content_pane.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); content_pane.add(details_pane, BorderLayout.CENTER); content_pane.add(button_pane, BorderLayout.SOUTH); Dimension screen_size = Configuration.screen_size; setLocation((screen_size.width - SIZE.width) / 2, (screen_size.height - SIZE.height) / 2); setVisible(true); } public String getName() { return element_name; } public boolean isCancelled() { return cancelled; } private void validateElementName() { String name = name_textfield.getText(); if (name.equals("")) { JOptionPane.showMessageDialog(prompt,Dictionary.get("GEMS.NewMetadataElementNamePrompt.EmptyName_Error_Message"), Dictionary.get("GEMS.NewMetadataElementNamePrompt.Name_Error"), JOptionPane.ERROR_MESSAGE); return; } boolean already_used = false; if (model instanceof MetadataSetModel) { already_used = ((MetadataSetModel)model).doesChildWithThisNameExist(name); } else if (model instanceof MetadataElementModel) { already_used = ((MetadataElementModel)model).doesChildWithThisNameExist(name); } if (!already_used) { element_name = name; prompt.dispose(); } else { JOptionPane.showMessageDialog(prompt,Dictionary.get("GEMS.NewMetadataElementNamePrompt.Name_Error_Message"), Dictionary.get("GEMS.NewMetadataElementNamePrompt.Name_Error"), JOptionPane.ERROR_MESSAGE); } } }