source: trunk/gli/src/org/greenstone/gatherer/gems/OpenMetadataSetPrompt.java@ 12680

Last change on this file since 12680 was 12680, checked in by kjdon, 18 years ago

added in a cancelled variable, and a method isCancelled, so we know if it was cancelled or not

  • Property svn:keywords set to Author Date Id Revision
File size: 8.7 KB
Line 
1/**
2 *#########################################################################
3 *
4 * A component of the Gatherer application, part of the Greenstone digital
5 * library suite from the New Zealand Digital Library Project at the
6 * University of Waikato, New Zealand.
7 *
8 * <BR><BR>
9 *
10 * Author: Shaoqun Wu, Greenstone Digital Library, University of Waikato
11 *
12 * <BR><BR>
13 *
14 * Copyright (C) 2006 New Zealand Digital Library Project
15 *
16 * <BR><BR>
17 *
18 * This program is free software; you can redistribute it and/or modify
19 * it under the terms of the GNU General Public License as published by
20 * the Free Software Foundation; either version 2 of the License, or
21 * (at your option) any later version.
22 *
23 * <BR><BR>
24 *
25 * This program is distributed in the hope that it will be useful,
26 * but WITHOUT ANY WARRANTY; without even the implied warranty of
27 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
28 * GNU General Public License for more details.
29 *
30 * <BR><BR>
31 *
32 * You should have received a copy of the GNU General Public License
33 * along with this program; if not, write to the Free Software
34 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
35 *########################################################################
36 */
37package org.greenstone.gatherer.gems;
38
39import java.awt.*;
40import java.awt.event.*;
41import javax.swing.*;
42import javax.swing.event.*;
43import java.util.ArrayList;
44import java.util.HashMap;
45import java.util.Collection;
46import java.util.Vector;
47import java.io.File;
48
49
50import org.greenstone.gatherer.Configuration;
51import org.greenstone.gatherer.Dictionary;
52import org.greenstone.gatherer.gui.ModalDialog;
53import org.greenstone.gatherer.gui.GLIButton;
54
55public class OpenMetadataSetPrompt
56 extends ModalDialog {
57
58 static private Dimension SIZE = new Dimension(500, 500);
59
60 private ArrayList available_metadata_sets;
61 private ArrayList listeners;
62
63 private JButton open_button = null;
64 private JButton cancel_button = null;
65 private JButton browse_button = null;
66 private JList available_set_list = null;
67 private OpenMetadataSetPrompt self;
68 private MetadataSetManager meta_manager;
69 private JTextArea description_textarea = null;
70
71 private boolean cancelled = false;
72
73 public OpenMetadataSetPrompt(Frame parent,MetadataSetManager msm) {
74 super(parent, true);
75
76 self = this;
77 meta_manager = msm;
78 setSize(SIZE);
79 setTitle(Dictionary.get("GEMS.OpenMetadataSetPrompt.Title"));
80 listeners = new ArrayList();
81
82 JPanel content_pane = (JPanel) getContentPane();
83 content_pane.setOpaque(true);
84
85 JLabel available_metadata_sets_label = new JLabel(Dictionary.get("GEMS.OpenMetadataSetPrompt.Available_Sets"));
86 available_metadata_sets_label.setOpaque(true);
87
88 available_set_list = new JList();
89 available_set_list.setCellRenderer(new MetadatSetListCellRenderer());
90 available_set_list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
91 available_set_list.setFixedCellHeight(20);
92 available_set_list.addListSelectionListener(new MetadataSetListSelectionListener());
93
94 JPanel set_pane = new JPanel();
95 set_pane.setLayout(new BorderLayout());
96 set_pane.add(available_metadata_sets_label,BorderLayout.NORTH);
97 set_pane.add(new JScrollPane(available_set_list),BorderLayout.CENTER);
98
99
100 JLabel metadata_set_des_label = new JLabel(Dictionary.get("GEMS.Set_Description"));
101 metadata_set_des_label.setOpaque(true);
102
103 description_textarea = new JTextArea();
104 description_textarea.setOpaque(true);
105 description_textarea.setEditable(false);
106 description_textarea.setLineWrap(true);
107 description_textarea.setWrapStyleWord(true);
108
109 JPanel des_pane = new JPanel();
110 des_pane.setLayout(new BorderLayout());
111 des_pane.add(metadata_set_des_label,BorderLayout.NORTH);
112 des_pane.add(new JScrollPane(description_textarea),BorderLayout.CENTER);
113
114 JPanel button_pane = new JPanel();
115 open_button = new GLIButton(Dictionary.get("GEMS.OpenMetadataSetPrompt.Open"), Dictionary.get("GEMS.OpenMetadataSetPrompt.Open_Tooltip"));
116 open_button.setEnabled(true);
117
118 browse_button = new GLIButton(Dictionary.get("General.Browse"));
119 browse_button.setEnabled(true);
120
121 cancel_button = new GLIButton(Dictionary.get("General.Cancel"), Dictionary.get("General.Cancel_Tooltip"));
122 cancel_button.setEnabled(true);
123
124
125 // Add listeners
126 open_button.addActionListener(new ActionListener() {
127 public void actionPerformed(ActionEvent event) {
128 notifyListeners();
129 self.dispose();
130 }
131 });
132
133 browse_button.addActionListener(new ActionListener() {
134 public void actionPerformed(ActionEvent event) {
135 String collect_dir = meta_manager.getCollectionPath();
136 JFileChooser file_chooser = new JFileChooser(new File(collect_dir));
137 file_chooser.setMultiSelectionEnabled(false);
138 int result = file_chooser.showOpenDialog(null);
139 if (result == JFileChooser.APPROVE_OPTION){
140 String file_path = file_chooser.getSelectedFile().toString();
141 MetadataSetInfo meta_info = meta_manager.getMetadataSet(file_path);
142 meta_info.setNew(false);
143 MetadataSetEvent mse = new MetadataSetEvent(meta_info);
144 for(int i=0;i<listeners.size();i++){
145 MetadataSetListener msl = (MetadataSetListener)listeners.get(i);
146 msl.metadataSetChanged(mse);
147 }
148
149 }
150 notifyListeners();
151 self.dispose();
152 }
153 });
154
155
156
157 cancel_button.addActionListener(new ActionListener() {
158 public void actionPerformed(ActionEvent event) {
159 cancelled = true;
160 self.dispose();
161 }
162 });
163
164
165 button_pane.setLayout(new GridLayout(1,3));
166 button_pane.add(open_button);
167 button_pane.add(browse_button);
168 button_pane.add(cancel_button);
169
170
171 content_pane.setLayout(new BorderLayout());
172 content_pane.add(set_pane, BorderLayout.NORTH);
173 content_pane.add(des_pane, BorderLayout.CENTER);
174 content_pane.add(button_pane, BorderLayout.SOUTH);
175
176 // Show
177 Dimension screen_size = Configuration.screen_size;
178 setLocation((screen_size.width - SIZE.width) / 2, (screen_size.height - SIZE.height) / 2);
179 setVisible(false);
180
181 }
182
183
184 public void display(){
185 cancelled = false;
186 available_metadata_sets = meta_manager.getAvailableMetadataSets();
187 available_set_list.setListData(new Vector((Collection)available_metadata_sets));
188 setVisible(true);
189 }
190
191 public void addMetadataSetListener(MetadataSetListener msl){
192 listeners.add(msl);
193
194 }
195
196 public boolean isCancelled() {
197 return cancelled;
198 }
199
200 private void notifyListeners(){
201 Object selectedValue = available_set_list.getSelectedValue();
202
203 if (selectedValue !=null && (selectedValue instanceof MetadataSetInfo)){
204 MetadataSetEvent mse = new MetadataSetEvent((MetadataSetInfo)selectedValue);
205 for(int i=0;i<listeners.size();i++){
206 MetadataSetListener msl = (MetadataSetListener)listeners.get(i);
207 msl.metadataSetChanged(mse);
208 }
209 }
210 }
211
212 public void openMetadataSet(String metadata_path){
213 MetadataSetInfo set_info = meta_manager.getMetadataSet(metadata_path);
214 notifyListeners(set_info);
215 }
216
217 private void notifyListeners(MetadataSetInfo set_info){
218 MetadataSetEvent mse = new MetadataSetEvent(set_info);
219 for(int i=0;i<listeners.size();i++){
220 MetadataSetListener msl = (MetadataSetListener)listeners.get(i);
221 msl.metadataSetChanged(mse);
222 }
223 }
224
225 private class MetadatSetListCellRenderer extends JLabel implements ListCellRenderer {
226 public MetadatSetListCellRenderer() {
227 setOpaque(true);
228 }
229
230 public Component getListCellRendererComponent(
231 JList list,
232 Object value,
233 int index,
234 boolean isSelected,
235 boolean cellHasFocus)
236 {
237 String name= "unknown";
238
239 if (value instanceof MetadataSetInfo){
240 MetadataSetInfo meta_info = (MetadataSetInfo) value;
241 name = meta_info.getMetadataSetName(); //get the name of metadata set
242 }
243
244 setText(name);
245 if (isSelected) {
246 setBackground(list.getSelectionBackground());
247 setForeground(list.getSelectionForeground());
248 }
249 else {
250 setBackground(list.getBackground());
251 setForeground(list.getForeground());
252 }
253
254 return this;
255 }
256 }
257
258
259 private class MetadataSetListSelectionListener implements ListSelectionListener {
260 public void valueChanged(ListSelectionEvent lse){
261 if (lse.getValueIsAdjusting()) return;
262
263 Object selectedValue = available_set_list.getSelectedValue();
264
265 if (selectedValue !=null && (selectedValue instanceof MetadataSetInfo)){
266 MetadataSetInfo meta_info = (MetadataSetInfo)selectedValue;
267 String des = meta_info.getMetadataSetDescription(); //get the description of the metadata set
268 description_textarea.setText(des);
269 }
270
271 }
272 }
273
274
275}
Note: See TracBrowser for help on using the repository browser.