source: trunk/gli/src/org/greenstone/gatherer/gui/NewCollectionMetadataPrompt.java@ 4448

Last change on this file since 4448 was 4428, checked in by kjdon, 21 years ago

the modal dialog now is one of our special ModalDialogs which only block the parent, enabling the use of help files while the dialog is open. A SimpleMenuBar with help on it has been added to the dialog.

  • Property svn:keywords set to Author Date Id Revision
File size: 6.2 KB
Line 
1package org.greenstone.gatherer.gui;
2
3import java.awt.*;
4import java.awt.event.*;
5import java.io.*;
6import java.util.*;
7import javax.swing.*;
8import javax.swing.event.*;
9import org.greenstone.gatherer.Gatherer;
10import org.greenstone.gatherer.checklist.CheckList;
11import org.greenstone.gatherer.checklist.Entry;
12import org.greenstone.gatherer.gui.GUIManager;
13import org.greenstone.gatherer.gui.SimpleMenuBar;
14import org.greenstone.gatherer.gui.ModalDialog;
15import org.greenstone.gatherer.cdm.ElementWrapper;
16import org.greenstone.gatherer.msm.MetadataSet;
17import org.greenstone.gatherer.msm.MetadataSetManager;
18import org.greenstone.gatherer.util.Utility;
19import org.w3c.dom.*;
20
21public class NewCollectionMetadataPrompt
22 extends ModalDialog {
23
24 private boolean cancelled = true;
25 private CheckList sets_list;
26 private JDialog self;
27 private JList elements_list;
28 static private Dimension size = new Dimension(700, 380);
29
30 public NewCollectionMetadataPrompt() {
31 super(Gatherer.g_man, true);
32 this.self = this;
33 setJMenuBar(new SimpleMenuBar("2.1"));
34 setModal(true);
35 setSize(size);
36 setTitle(get("Title"));
37
38 // And the remaining metadata sets.
39 ArrayList sets = new ArrayList();
40 // Determine what collections are available.
41 File metadata_directory = new File(Utility.METADATA_DIR);
42 File[] possible_mdses = metadata_directory.listFiles();
43 for(int i = 0; i < possible_mdses.length; i++) {
44 String name = possible_mdses[i].getName();
45 if(name.endsWith(".mds")) {
46 sets.add(new MetadataSet(possible_mdses[i]));
47 }
48 }
49
50 // Creation
51 JPanel content_pane = (JPanel) getContentPane();
52
53 JLabel instructions_label = new JLabel(get("Metadata_Instructions"));
54
55 JPanel center_pane = new JPanel();
56
57 JPanel sets_list_pane = new JPanel();
58 JLabel sets_list_label = new JLabel(get("Select_MDS"));
59 sets_list_label.setOpaque(false);
60 sets_list = new CheckList(sets);
61
62 JPanel elements_list_pane = new JPanel();
63 JLabel elements_list_label = new JLabel(get("Metadata_Elements"));
64 elements_list = new JList();
65 elements_list.setBackground(Gatherer.config.getColor("coloring.collection_tree_background", false));
66 elements_list.setForeground(Gatherer.config.getColor("coloring.collection_tree_foreground", false));
67 elements_list.setSelectionBackground(Gatherer.config.getColor("coloring.collection_tree_background", false));
68 elements_list.setSelectionForeground(Gatherer.config.getColor("coloring.collection_tree_foreground", false));
69
70 JPanel button_pane = new JPanel();
71 JButton ok_button = new JButton(get("General.OK"));
72 JButton cancel_button = new JButton(get("General.Cancel"));
73 // Connection
74 ok_button.addActionListener(new OKButtonListener());
75 cancel_button.addActionListener(new CancelButtonListener());
76 sets_list.addListSelectionListener(new MetadataListSelectionListener());
77 // Display
78 sets_list_pane.setLayout(new BorderLayout());
79 sets_list_pane.add(sets_list_label, BorderLayout.NORTH);
80 sets_list_pane.add(new JScrollPane(sets_list), BorderLayout.CENTER);
81
82 elements_list_pane.setLayout(new BorderLayout());
83 elements_list_pane.add(elements_list_label, BorderLayout.NORTH);
84 elements_list_pane.add(new JScrollPane(elements_list), BorderLayout.CENTER);
85
86 center_pane.setBorder(BorderFactory.createEmptyBorder(5,0,0,0));
87 center_pane.setLayout(new GridLayout(2,1,0,5));
88 center_pane.add(sets_list_pane);
89 center_pane.add(elements_list_pane);
90
91 button_pane.setBorder(BorderFactory.createEmptyBorder(5,0,0,0));
92 button_pane.setLayout(new GridLayout(1,2,5,0));
93 button_pane.add(ok_button);
94 button_pane.add(cancel_button);
95
96 content_pane.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
97 content_pane.setLayout(new BorderLayout());
98 content_pane.add(instructions_label, BorderLayout.NORTH);
99 content_pane.add(center_pane, BorderLayout.CENTER);
100 content_pane.add(button_pane, BorderLayout.SOUTH);
101 // Show
102 Dimension screen_size = Gatherer.config.screen_size;
103 setLocation((screen_size.width - size.width) / 2, (screen_size.height - size.height) / 2);
104 setVisible(true);
105 }
106
107 public ArrayList getSets() {
108 return sets_list.getSelected();
109 }
110
111 public boolean isCancelled() {
112 return cancelled;
113 }
114
115 private void determineMetadataElements(MetadataSet extracted_metadata) {
116 // Hardcoded...
117 extracted_metadata.addElement("Encoding");
118 extracted_metadata.addElement("Language");
119 extracted_metadata.addElement("Source");
120 extracted_metadata.addElement("Title");
121 }
122
123 /** Gets a phrase from the dictionary based on key.
124 * @param key A <strong>String</strong> which serves as the unique identifier of a phrase.
125 * @return The desired phrase as a <strong>String</strong> or at least a meaningful error message.
126 */
127 private String get(String key) {
128 if(key.indexOf(".") == -1) {
129 key = "NewCollectionPrompt." + key;
130 }
131 return Gatherer.dictionary.get(key);
132 }
133
134 private class CancelButtonListener
135 implements ActionListener {
136 public void actionPerformed(ActionEvent event) {
137 cancelled = true;
138 self.dispose();
139 }
140 }
141
142 public class MetadataListSelectionListener
143 implements ListSelectionListener {
144 public void valueChanged(ListSelectionEvent event) {
145 if(!sets_list.isSelectionEmpty()) {
146 // Retrieve the selected set.
147 Entry entry = (Entry) sets_list.getSelectedValue();
148 MetadataSet set = (MetadataSet) entry.getObject();
149 entry = null;
150 // Build a model from its elements.
151 NodeList elements = set.getElements();
152 set = null;
153 Vector elements_model = new Vector();
154 for(int i = 0; i < elements.getLength(); i++) {
155 elements_model.add(new ElementWrapper(elements.item(i)));
156 }
157 elements = null;
158 Collections.sort(elements_model);
159 elements_list.setListData(elements_model);
160 elements_model = null;
161 }
162 else {
163 elements_list.setListData(new String[0]);
164 }
165 }
166 }
167
168 public class OKButtonListener
169 implements ActionListener {
170 public void actionPerformed(ActionEvent event) {
171 // See if the user has selected no metadata sets, and if so confirm thats what they really want.
172 ArrayList selected_sets = sets_list.getSelected();
173 cancelled = false;
174 if(selected_sets.size() == 0) {
175 WarningDialog dialog = new WarningDialog("warning.NoMetadataSetsSelected", true);
176 if(dialog.display() == JOptionPane.OK_OPTION) {
177 // Otherwise we are free to go
178 self.dispose();
179 }
180 }
181 else {
182 self.dispose();
183 }
184 }
185 }
186}
Note: See TracBrowser for help on using the repository browser.