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

Last change on this file since 4367 was 4367, checked in by mdewsnip, 21 years ago

Fixed tabbing.

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