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

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

Changed dictionary get()s to have the whole key.

  • Property svn:keywords set to Author Date Id Revision
File size: 6.5 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.StaticStrings;
19import org.greenstone.gatherer.util.Utility;
20import org.w3c.dom.*;
21
22public class NewCollectionMetadataPrompt
23 extends ModalDialog {
24
25 private boolean cancelled = true;
26 private CheckList sets_list;
27 private JDialog self;
28 private JList elements_list;
29 static private Dimension size = new Dimension(700, 380);
30
31 public NewCollectionMetadataPrompt() {
32 super(Gatherer.g_man, true);
33 this.self = this;
34 setJMenuBar(new SimpleMenuBar("2.1"));
35 setModal(true);
36 setSize(size);
37 setTitle(get("NewCollectionPrompt.Title"));
38
39 // And the remaining metadata sets.
40 ArrayList sets = new ArrayList();
41 // Determine what collections are available.
42 File metadata_directory = new File(Utility.METADATA_DIR);
43 File[] possible_mdses = metadata_directory.listFiles();
44 for(int i = 0; i < possible_mdses.length; i++) {
45 String name = possible_mdses[i].getName();
46 if(name.endsWith(StaticStrings.METADATA_SET_EXTENSION) && !name.equals(Utility.EXTRACTED_METADATA_NAMESPACE + StaticStrings.METADATA_SET_EXTENSION)) {
47 sets.add(new MetadataSet(possible_mdses[i]));
48 }
49 }
50
51 // Creation
52 JPanel content_pane = (JPanel) getContentPane();
53
54 JPanel instructions_panel = new JPanel();
55 JLabel instructions_label1 = new JLabel(get("NewCollectionPrompt.Metadata_Instructions1"));
56 JLabel instructions_label2 = new JLabel(get("NewCollectionPrompt.Metadata_Instructions2"));
57
58 JPanel center_pane = new JPanel();
59
60 JPanel sets_list_pane = new JPanel();
61 JLabel sets_list_label = new JLabel(get("NewCollectionPrompt.Select_MDS"));
62 sets_list_label.setOpaque(false);
63 sets_list = new CheckList(sets, true);
64
65 JPanel elements_list_pane = new JPanel();
66 JLabel elements_list_label = new JLabel(get("NewCollectionPrompt.Metadata_Elements"));
67 elements_list = new JList();
68 elements_list.setBackground(Gatherer.config.getColor("coloring.collection_tree_background", false));
69 elements_list.setForeground(Gatherer.config.getColor("coloring.collection_tree_foreground", false));
70 elements_list.setSelectionBackground(Gatherer.config.getColor("coloring.collection_tree_background", false));
71 elements_list.setSelectionForeground(Gatherer.config.getColor("coloring.collection_tree_foreground", false));
72
73 JPanel button_pane = new JPanel();
74 JButton ok_button = new JButton(get("General.OK"));
75 JButton cancel_button = new JButton(get("General.Cancel"));
76 // Connection
77 ok_button.addActionListener(new OKButtonListener());
78 cancel_button.addActionListener(new CancelButtonListener());
79 sets_list.addListSelectionListener(new MetadataListSelectionListener());
80 // Display
81 instructions_panel.setLayout(new GridLayout(2,1));
82 instructions_panel.add(instructions_label1);
83 instructions_panel.add(instructions_label2);
84
85 sets_list_pane.setLayout(new BorderLayout());
86 sets_list_pane.add(sets_list_label, BorderLayout.NORTH);
87 sets_list_pane.add(new JScrollPane(sets_list), BorderLayout.CENTER);
88
89 elements_list_pane.setLayout(new BorderLayout());
90 elements_list_pane.add(elements_list_label, BorderLayout.NORTH);
91 elements_list_pane.add(new JScrollPane(elements_list), BorderLayout.CENTER);
92
93 center_pane.setBorder(BorderFactory.createEmptyBorder(5,0,0,0));
94 center_pane.setLayout(new GridLayout(2,1,0,5));
95 center_pane.add(sets_list_pane);
96 center_pane.add(elements_list_pane);
97
98 button_pane.setBorder(BorderFactory.createEmptyBorder(5,0,0,0));
99 button_pane.setLayout(new GridLayout(1,2,5,0));
100 button_pane.add(ok_button);
101 button_pane.add(cancel_button);
102
103 content_pane.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
104 content_pane.setLayout(new BorderLayout());
105 content_pane.add(instructions_panel, BorderLayout.NORTH);
106 content_pane.add(center_pane, BorderLayout.CENTER);
107 content_pane.add(button_pane, BorderLayout.SOUTH);
108 // Show
109 Dimension screen_size = Gatherer.config.screen_size;
110 setLocation((screen_size.width - size.width) / 2, (screen_size.height - size.height) / 2);
111 setVisible(true);
112 }
113
114 public ArrayList getSets() {
115 return sets_list.getSelected();
116 }
117
118 public boolean isCancelled() {
119 return cancelled;
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.