source: trunk/gli/src/org/greenstone/gatherer/gui/MetadataImportMappingPrompt.java@ 11444

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

check to see if there are elements in the set, if not, disable merge. this happens with exploding into the exp metadata set

  • Property svn:keywords set to Author Date Id Revision
File size: 6.1 KB
Line 
1package org.greenstone.gatherer.gui;
2
3
4import java.awt.*;
5import java.awt.event.*;
6import java.util.*;
7import javax.swing.*;
8import org.greenstone.gatherer.Configuration;
9import org.greenstone.gatherer.Dictionary;
10import org.greenstone.gatherer.Gatherer;
11import org.greenstone.gatherer.metadata.MetadataElement;
12import org.greenstone.gatherer.metadata.MetadataSet;
13import org.greenstone.gatherer.metadata.MetadataSetManager;
14import org.greenstone.gatherer.metadata.MetadataTools;
15
16
17public class MetadataImportMappingPrompt
18 implements ActionListener
19{
20 final static public int ADD_BUTTON_PRESSED = 0;
21 final static public int MERGE_BUTTON_PRESSED = 1;
22 final static public int IGNORE_BUTTON_PRESSED = 2;
23 final static private Dimension DIALOG_SIZE = new Dimension(640, 180);
24
25 private int result;
26 private String metadata_element_name_full = null;
27 private GComboBox metadata_sets_combobox = null;
28 private GComboBox metadata_elements_combobox = null;
29 private JButton add_button = null;
30 private JButton merge_button = null;
31 private JButton ignore_button = null;
32 private JDialog on_screen = null;
33
34
35 public MetadataImportMappingPrompt(String metadata_element_name_full)
36 {
37 this.metadata_element_name_full = metadata_element_name_full;
38
39 // Construction and configuration
40 JDialog dialog = new ModalDialog(Gatherer.g_man);
41 dialog.setModal(true);
42 dialog.setSize(DIALOG_SIZE);
43 dialog.setJMenuBar(new SimpleMenuBar("importingpreviouslyassignedmetadata"));
44 Dictionary.setText(dialog, "MIMP.Title");
45
46 // All the loaded metadata sets except the extracted metadata set are applicable
47 ArrayList metadata_sets = MetadataSetManager.getMetadataSets();
48 for (int i = metadata_sets.size() - 1; i >= 0; i--) {
49 if (((MetadataSet) metadata_sets.get(i)).getNamespace().equals(MetadataSetManager.EXTRACTED_METADATA_NAMESPACE)) {
50 metadata_sets.remove(i);
51 }
52 }
53
54 add_button = new GLIButton();
55 add_button.addActionListener(this);
56 add_button.setMnemonic(KeyEvent.VK_A);
57 Dictionary.registerBoth(add_button, "MIMP.Add", "MIMP.Add_Tooltip");
58
59 merge_button = new GLIButton();
60 merge_button.addActionListener(this);
61 merge_button.setEnabled(true);
62 merge_button.setMnemonic(KeyEvent.VK_M);
63 Dictionary.registerBoth(merge_button, "MIMP.Merge", "MIMP.Merge_Tooltip");
64
65 ignore_button = new GLIButton();
66 ignore_button.addActionListener(this);
67 ignore_button.setEnabled(true);
68 ignore_button.setMnemonic(KeyEvent.VK_S);
69 Dictionary.registerBoth(ignore_button, "MIMP.Ignore", "MIMP.Ignore_Tooltip");
70
71 // !! Need to add instructions: "MIMP.Instructions", args: source elem
72 metadata_elements_combobox = new GComboBox();
73
74 metadata_sets_combobox = new GComboBox(metadata_sets);
75 metadata_sets_combobox.addActionListener(new MetadataSetListSelectionListener());
76 metadata_sets_combobox.setSelectedIndex(0);
77
78 // Layout
79 JPanel left_pane = new JPanel();
80 left_pane.setLayout(new GridLayout(3,1));
81 left_pane.add(new JLabel(Dictionary.get("MIMP.Source_Element")));
82 left_pane.add(new JLabel(Dictionary.get("MIMP.Target_Set")));
83 left_pane.add(new JLabel(Dictionary.get("MIMP.Target_Element")));
84
85 JPanel right_pane = new JPanel();
86 right_pane.setLayout(new GridLayout(3,1));
87 right_pane.add(new JLabel(metadata_element_name_full));
88 right_pane.add(metadata_sets_combobox);
89 right_pane.add(metadata_elements_combobox);
90
91 JPanel button_pane = new JPanel();
92 button_pane.setBorder(BorderFactory.createEmptyBorder(0,5,5,5));
93 button_pane.setLayout(new GridLayout(1,3));
94 button_pane.add(add_button);
95 button_pane.add(merge_button);
96 button_pane.add(ignore_button);
97
98 JPanel content_pane = (JPanel) dialog.getContentPane();
99 content_pane.setLayout(new BorderLayout());
100 content_pane.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
101 content_pane.add(left_pane, BorderLayout.WEST);
102 content_pane.add(right_pane, BorderLayout.CENTER);
103 content_pane.add(button_pane, BorderLayout.SOUTH);
104
105 // Display
106 Dimension screen_size = Configuration.screen_size;
107 dialog.setLocation((screen_size.width - DIALOG_SIZE.width) / 2, (screen_size.height - DIALOG_SIZE.height) / 2);
108 on_screen = dialog;
109 on_screen.setVisible(true); // Blocks until hidden.
110 on_screen.dispose();
111 on_screen = null;
112 }
113
114
115 /** Any implementation of <i>ActionListener</i> must include this method so that we can be informed when an action has occured.
116 * @param event An <strong>ActionEvent</strong> containing information gatherer when this event occured.
117 */
118 public void actionPerformed(ActionEvent event)
119 {
120 Object esrc = event.getSource();
121
122 if (esrc == add_button) {
123 result = ADD_BUTTON_PRESSED;
124 }
125 if (esrc == merge_button) {
126 result = MERGE_BUTTON_PRESSED;
127 }
128 if (esrc == ignore_button) {
129 result = IGNORE_BUTTON_PRESSED;
130 }
131
132 on_screen.setVisible(false);
133 }
134
135
136 public MetadataElement getSelectedMetadataElement()
137 {
138 return (MetadataElement) metadata_elements_combobox.getSelectedItem();
139 }
140
141
142 public MetadataSet getSelectedMetadataSet()
143 {
144 return (MetadataSet) metadata_sets_combobox.getSelectedItem();
145 }
146
147
148 public int getResult()
149 {
150 return result;
151 }
152
153
154 private class MetadataSetListSelectionListener
155 implements ActionListener
156 {
157 public void actionPerformed(ActionEvent event)
158 {
159 boolean enable_add_button = true;
160 String metadata_element_name = MetadataTools.getMetadataElementName(metadata_element_name_full);
161
162 MetadataSet metadata_set = (MetadataSet) metadata_sets_combobox.getSelectedItem();
163 ArrayList metadata_elements = metadata_set.getMetadataSetElements();
164
165 metadata_elements_combobox.removeAllItems();
166 for (int i = 0; i < metadata_elements.size(); i++) {
167 MetadataElement metadata_element = (MetadataElement) metadata_elements.get(i);
168 metadata_elements_combobox.addItem(metadata_element);
169 if (metadata_element.getName().equals(metadata_element_name)) {
170 metadata_elements_combobox.setSelectedIndex(i);
171 enable_add_button = false;
172 }
173 }
174
175 add_button.setEnabled(enable_add_button);
176
177 // are there any elements in the set? if not (e.g. with exp set),
178 // disable merge
179 if (metadata_elements.size()==0) {
180 merge_button.setEnabled(false);
181 }
182 }
183 }
184}
Note: See TracBrowser for help on using the repository browser.