Changeset 9997 for trunk/gli/src
- Timestamp:
- 2005-06-01T14:14:45+12:00 (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/gli/src/org/greenstone/gatherer/cdm/IndexManager.java
r9552 r9997 112 112 if(!levels_model.contains(level)) { 113 113 CollectionDesignManager.collectionmeta_manager.addMetadatum(metadatum); 114 // Retrieve the currently last index114 // Retrieve the currently last level 115 115 if(levels_model.getSize() > 0) { 116 116 Level last_level = (Level)levels_model.getElementAt(levels_model.getSize() - 1); … … 193 193 for(int i = 0; i < levels_model_size; i++) { 194 194 Level level = (Level) levels_model.getElementAt(i); 195 if(level.get Name().equals(name)) {195 if(level.getLevel().equals(name)) { 196 196 return level; 197 197 } … … 205 205 // Determine the current position of the index 206 206 int position = indexOf(index); 207 if (position == -1) { 207 // Determine if it can be moved, ie if its not already at the top trying to move up, or at the bottom trying to move down. 208 if(position == -1) { 208 209 return; 209 210 } 210 211 // Attempt to move the index up 211 if(position == 0 && move_up) { 212 return; 213 } 214 if(position == (getSize()) - 1 && !move_up) { 215 return; 216 } 217 218 // Ok, move up 212 219 if (move_up) { 213 // Check it's not already at the top 214 if (position == 0) { 215 return; 216 } 217 218 // Retrieve the index at position - 1 219 Index preceeding_index = (Index) getElementAt(position - 1); 220 221 // This automatically removes the index first, as an Element can only exist once in a particular document 222 addBefore(index, preceeding_index); 223 } 224 225 // Attempt to move the index down 220 position--; 221 remove(index); 222 add(position, index); 223 } 224 225 // Or move down 226 226 else { 227 // Check it's not already at the bottom 228 if (position == (getSize()) - 1) { 229 return; 230 } 231 232 // Retrieve the index at position + 1 233 Index following_index = (Index) getElementAt(position + 1); 234 235 // This automatically removes the index first, as an Element can only exist once in a particular document 236 addAfter(index, following_index); 227 position++; 228 remove(index); 229 add(position, index); 237 230 } 238 231 … … 255 248 return; 256 249 } 257 // Ok, move the level250 // Ok, move up 258 251 if(move_up) { 259 // Retrieve the level at position - 1260 Level previous_level = (Level) levels_model.getElementAt(position - 1);261 // And add before. This will automatically remove the level first, as an Element can only exist once in a particular document262 levels_model.addBefore(level, previous_level);263 }252 position--; 253 levels_model.remove(level); 254 levels_model.add(position, level); 255 } 256 // Or move down 264 257 else { 265 // Retrieve the level at position + 1 266 Level next_level = (Level) levels_model.getElementAt(position + 1); 267 // And add after. This will automatically remove the level first, as an Element can only exist once in a particular document 268 levels_model.addAfter(level, next_level); 258 position++; 259 levels_model.remove(level); 260 levels_model.add(position, level); 269 261 } 270 262 // Schedule the collection for saving 271 263 Gatherer.c_man.configurationChanged(); 272 264 } 273 265 274 266 /** Method to remove a certain index. 275 267 * @param index the Index to remove. … … 304 296 if(level != null) { 305 297 // Remove any current metadata from this level 306 CollectionDesignManager.collectionmeta_manager.removeMetadata(CollectionConfiguration.STOP_CHARACTER + level.get Name());298 CollectionDesignManager.collectionmeta_manager.removeMetadata(CollectionConfiguration.STOP_CHARACTER + level.getLevel()); 307 299 // Remove the level 308 300 levels_model.remove(level); … … 346 338 */ 347 339 public void setMGPPEnabled(boolean state) { 348 if(state != root.getAttribute(CollectionConfiguration.MGPP_ATTRIBUTE).equals(CollectionConfiguration.TRUE_STR)) { 349 if(state) { 350 Element mg_element = root; 351 // Retrieve and assign the MGPP indexes element. 352 Element mgpp_element = CollectionDesignManager.collect_config.getMGPPIndexes(); 353 mgpp_element.setAttribute(CollectionConfiguration.ASSIGNED_ATTRIBUTE, CollectionConfiguration.TRUE_STR); 354 levels_model.root.setAttribute(CollectionConfiguration.ASSIGNED_ATTRIBUTE, CollectionConfiguration.TRUE_STR); 355 // If the MGPP indexes element is empty (ie was created by CollectionConfiguration), generate new MGPP index from the existing index 356 NodeList indexes = mgpp_element.getElementsByTagName(CollectionConfiguration.INDEX_ELEMENT); 357 if(indexes.getLength() == 0) { 358 ArrayList levels_list = new ArrayList(); 359 ArrayList sources_list = new ArrayList(); 360 // We first use details from the default index if any 361 if(default_index != null) { 362 int level_int = default_index.getLevel(); 363 if(0 <= level_int && level_int < 3) { 364 String level = Index.LEVEL[level_int]; 365 if(!levels_list.contains(level)) { 366 levels_list.add(level); 367 } 368 level = null; 340 if(state == root.getAttribute(CollectionConfiguration.MGPP_ATTRIBUTE).equals(CollectionConfiguration.TRUE_STR)) { 341 // we are not changing state 342 return; 343 344 } 345 // change MG -> MGPP 346 if(state) { 347 Element mg_element = root; 348 // Retrieve and assign the MGPP indexes element. 349 Element mgpp_element = CollectionDesignManager.collect_config.getMGPPIndexes(); 350 mgpp_element.setAttribute(CollectionConfiguration.ASSIGNED_ATTRIBUTE, CollectionConfiguration.TRUE_STR); 351 levels_model.root.setAttribute(CollectionConfiguration.ASSIGNED_ATTRIBUTE, CollectionConfiguration.TRUE_STR); 352 // If the MGPP indexes element is empty (ie was created by CollectionConfiguration), generate new MGPP index from the existing index 353 NodeList indexes = mgpp_element.getElementsByTagName(CollectionConfiguration.INDEX_ELEMENT); 354 if(indexes.getLength() == 0) { 355 ArrayList levels_list = new ArrayList(); 356 ArrayList sources_list = new ArrayList(); 357 // We first use details from the default index if any 358 if(default_index != null) { 359 int level_int = default_index.getLevel(); 360 if(0 <= level_int && level_int < 3) { 361 String level = Index.LEVEL[level_int]; 362 if(!levels_list.contains(level)) { 363 levels_list.add(level); 369 364 } 370 ArrayList sources = default_index.getSources();371 sources.removeAll(sources_list);372 sources_list.addAll(sources);373 }374 int size = getSize();375 for(int i = 0; i < size; i++) {376 Index index = (Index) getElementAt(i);377 int level_int = index.getLevel();378 if(0 <= level_int && level_int < 3) {379 String level = Index.LEVEL[level_int];380 if(!levels_list.contains(level)) {381 levels_list.add(level);382 }383 level = null;365 level = null; 366 } 367 ArrayList sources = default_index.getSources(); 368 sources.removeAll(sources_list); 369 sources_list.addAll(sources); 370 } 371 int size = getSize(); 372 for(int i = 0; i < size; i++) { 373 Index index = (Index) getElementAt(i); 374 int level_int = index.getLevel(); 375 if(0 <= level_int && level_int < 3) { 376 String level = Index.LEVEL[level_int]; 377 if(!levels_list.contains(level)) { 378 levels_list.add(level); 384 379 } 385 ArrayList sources = index.getSources(); 386 sources.removeAll(sources_list); 387 sources_list.addAll(sources); 388 index = null; 389 } 390 // Replace mg element with mgpp element 391 setRoot(mgpp_element); 392 393 // We now have a list of sources and a list of levels, so create new indexes and levels based on these 394 int sources_list_size = sources_list.size(); 395 for(int j = 0; j < sources_list_size; j++) { 396 Object source_object = sources_list.get(j); 397 String source_str = null; 398 if(source_object instanceof MetadataElement) { 399 source_str = ((MetadataElement) source_object).getFullName(); 400 } 401 else { 402 source_str = source_object.toString(); 403 } 404 ArrayList new_sources = new ArrayList(); 405 new_sources.add(source_object); 406 source_object = null; 407 Index new_index = new Index(new_sources); 380 level = null; 381 } 382 ArrayList sources = index.getSources(); 383 sources.removeAll(sources_list); 384 sources_list.addAll(sources); 385 index = null; 386 } 387 // Replace mg element with mgpp element 388 setRoot(mgpp_element); 389 390 // We now have a list of sources and a list of levels, so create new indexes and levels based on these 391 int sources_list_size = sources_list.size(); 392 for(int j = 0; j < sources_list_size; j++) { 393 Object source_object = sources_list.get(j); 394 String source_str = null; 395 if(source_object instanceof MetadataElement) { 396 source_str = ((MetadataElement) source_object).getFullName(); 397 } 398 else { 399 source_str = source_object.toString(); 400 } 401 ArrayList new_sources = new ArrayList(); 402 new_sources.add(source_object); 403 source_object = null; 404 Index new_index = new Index(new_sources); 405 // Try to retrieve existing metadatum 406 source_str = new_index.getID(); 407 CollectionMeta metadatum = CollectionDesignManager.collectionmeta_manager.getMetadatum(CollectionConfiguration.STOP_CHARACTER + source_str, false); 408 // If no metadata was found, add new pseudo metadata using the id 409 if(metadatum == null) { 410 metadatum = new CollectionMeta(CollectionConfiguration.STOP_CHARACTER + source_str); 411 metadatum.setAssigned(true); 412 metadatum.setValue(source_str); 413 } 414 // If it was found, ensure it is assigned 415 else { 416 metadatum.setAssigned(true); 417 } 418 source_str = null; 419 addIndex(new_index, metadatum); 420 metadatum = null; 421 new_index = null; 422 new_sources = null; 423 source_str = null; 424 } 425 int levels_list_size = levels_list.size(); 426 for(int k = 0; k < levels_list_size; k++) { 427 Level new_level = new Level((String)levels_list.get(k)); 428 if(!levels_model.contains(new_level)) { 429 levels_model.add(levels_model.getSize(), new_level); 430 } 431 new_level = null; 432 } 433 } 434 else { 435 // Replace mg element with mgpp element 436 setRoot(mgpp_element); 437 } 438 // Unassign MG element and default index 439 mg_element.setAttribute(CollectionConfiguration.ASSIGNED_ATTRIBUTE, CollectionConfiguration.FALSE_STR); 440 mg_element = null; 441 if(default_index != null) { 442 default_index.setAssigned(false); 443 } 444 } 445 // change MGPP -> MG 446 else { 447 Element mgpp_element = root; 448 // Retrieve and assign MG element and default index element 449 Element mg_element = CollectionDesignManager.collect_config.getMGIndexes(); 450 mg_element.setAttribute(CollectionConfiguration.ASSIGNED_ATTRIBUTE, CollectionConfiguration.TRUE_STR); 451 if(default_index != null) { 452 default_index.setAssigned(true); 453 } 454 // If mg element has no indexes, and the current mgpp index include a text one, then generate text indexes for each of the registered levels. 455 NodeList indexes = mgpp_element.getElementsByTagName(CollectionConfiguration.INDEX_ELEMENT); 456 if(indexes.getLength() == 0) { 457 Index index = getIndex(CollectionConfiguration.TEXT_STR); 458 if(index != null) { 459 // Replace mgpp element with mg element 460 setRoot(mg_element); 461 int level_size = levels_model.getSize(); 462 for(int i = 0; i < level_size; i++) { 463 Level level = (Level) levels_model.getElementAt(i); 464 Index new_index = new Index(level.getLevel(), index.getSources()); 408 465 // Try to retrieve existing metadatum 409 source_str = new_index.getID();466 String source_str = new_index.getID(); 410 467 CollectionMeta metadatum = CollectionDesignManager.collectionmeta_manager.getMetadatum(CollectionConfiguration.STOP_CHARACTER + source_str, false); 411 468 // If no metadata was found, add new pseudo metadata using the id … … 421 478 source_str = null; 422 479 addIndex(new_index, metadatum); 423 metadatum = null;424 480 new_index = null; 425 new_sources = null; 426 source_str = null; 427 } 428 int levels_list_size = levels_list.size(); 429 for(int k = 0; k < levels_list_size; k++) { 430 Level new_level = new Level((String)levels_list.get(k)); 431 if(!levels_model.contains(new_level)) { 432 levels_model.add(levels_model.getSize(), new_level); 433 } 434 new_level = null; 435 } 436 } 437 else { 438 // Replace mg element with mgpp element 439 setRoot(mgpp_element); 440 } 441 // Unassign MG element and default index 442 mg_element.setAttribute(CollectionConfiguration.ASSIGNED_ATTRIBUTE, CollectionConfiguration.FALSE_STR); 443 mg_element = null; 444 if(default_index != null) { 445 default_index.setAssigned(false); 481 level = null; 482 } 446 483 } 447 484 } 448 485 else { 449 Element mgpp_element = root; 450 // Retrieve and assign MG element and default index element 451 Element mg_element = CollectionDesignManager.collect_config.getMGIndexes(); 452 mg_element.setAttribute(CollectionConfiguration.ASSIGNED_ATTRIBUTE, CollectionConfiguration.TRUE_STR); 453 if(default_index != null) { 454 default_index.setAssigned(true); 455 } 456 // If mg element has no indexes, and the current mgpp index include a text one, then generate text indexes for each of the registered levels. 457 NodeList indexes = mgpp_element.getElementsByTagName(CollectionConfiguration.INDEX_ELEMENT); 458 if(indexes.getLength() == 0) { 459 Index index = getIndex(CollectionConfiguration.TEXT_STR); 460 if(index != null) { 461 // Replace mgpp element with mg element 462 setRoot(mg_element); 463 int level_size = levels_model.getSize(); 464 for(int i = 0; i < level_size; i++) { 465 Level level = (Level) levels_model.getElementAt(i); 466 Index new_index = new Index(level.getName(), index.getSources()); 467 // Try to retrieve existing metadatum 468 String source_str = new_index.getID(); 469 CollectionMeta metadatum = CollectionDesignManager.collectionmeta_manager.getMetadatum(CollectionConfiguration.STOP_CHARACTER + source_str, false); 470 // If no metadata was found, add new pseudo metadata using the id 471 if(metadatum == null) { 472 metadatum = new CollectionMeta(CollectionConfiguration.STOP_CHARACTER + source_str); 473 metadatum.setAssigned(true); 474 metadatum.setValue(source_str); 475 } 476 // If it was found, ensure it is assigned 477 else { 478 metadatum.setAssigned(true); 479 } 480 source_str = null; 481 addIndex(new_index, metadatum); 482 new_index = null; 483 level = null; 484 } 485 } 486 } 487 else { 488 // Replace mgpp element with mg element 489 setRoot(mg_element); 490 } 491 // Unassign mgpp element and levels 492 mgpp_element.setAttribute(CollectionConfiguration.ASSIGNED_ATTRIBUTE, CollectionConfiguration.FALSE_STR); 493 levels_model.root.setAttribute(CollectionConfiguration.ASSIGNED_ATTRIBUTE, CollectionConfiguration.FALSE_STR); 494 } 495 } 486 // Replace mgpp element with mg element 487 setRoot(mg_element); 488 } 489 // Unassign mgpp element and levels 490 mgpp_element.setAttribute(CollectionConfiguration.ASSIGNED_ATTRIBUTE, CollectionConfiguration.FALSE_STR); 491 levels_model.root.setAttribute(CollectionConfiguration.ASSIGNED_ATTRIBUTE, CollectionConfiguration.FALSE_STR); 492 } 493 496 494 } 497 495 498 496 499 497 /** This class creates a set of controls for editing the indexes. */ … … 514 512 private JTextArea instruction_textarea; 515 513 private JTextField name_textfield ; 516 514 // when we are in mgpp mode, we want to remove the mg listener 515 // the underlying model is the same between the two JLists, and 516 // both listeners get notified when the model changes, but the mg 517 // listener doesn't care about mgpp events 518 private ListSelectionListener index_list_listener; 519 517 520 private MGPPControl mgppindexes_control; 518 521 … … 630 633 name_textfield.getDocument().addDocumentListener(new NameListener()); 631 634 level_combobox.addItemListener(new LevelListener()); 632 index_list.addListSelectionListener(new IndexListListener()); 635 // Create the index_list_listener but don't add in to the list - this gets done in gainFocus, we don't want it twice. 636 index_list_listener = new IndexListListener(); 633 637 source_list.addListSelectionListener(new SourceListListener()); 634 638 … … 689 693 } 690 694 695 691 696 /* Destructor, removes persistant listeners from the Dictionary. 692 697 */ … … 702 707 } 703 708 if(mgpp_enabled) { 709 // remove the mg index list listener first 710 index_list.removeListSelectionListener(index_list_listener); 704 711 mgppindexes_control.gainFocus(); 705 712 } 706 713 else { 714 // remove the mgpp listener first 715 mgppindexes_control.removeIndexListListener(); 716 // add the mg listener back in 717 index_list.addListSelectionListener(index_list_listener); 707 718 // Reload the assigned indexes list. 708 719 ArrayList new_data = new ArrayList(); … … 945 956 removeIndex((Index) index_list.getSelectedValue()); 946 957 } 947 948 958 int size = index_list.getModel().getSize(); 949 959 if (i == size) { … … 1019 1029 private JButton move_index_up_button; 1020 1030 private JButton move_level_up_button; 1021 private JButton replace_ button;1031 private JButton replace_index_button; 1022 1032 private JButton remove_index_button; 1023 1033 private JButton remove_level_button; … … 1039 1049 private JTextField index_name_field; 1040 1050 private JTextField level_name_field; 1041 1051 1052 // when we are in mg mode, we want to remove the mgpp listener 1053 // the underlying model is the same between the two JLists, and 1054 // both listeners get notified when the model changes, but the mgpp 1055 // listener doesn't care about mg events 1056 private ListSelectionListener mgpp_index_list_listener; 1057 1042 1058 public MGPPControl() { 1043 1059 // Create Indexes … … 1050 1066 current_indexes_list = new JList(model); 1051 1067 current_indexes_list.setVisibleRowCount(5); 1068 current_indexes_list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 1052 1069 1053 1070 JPanel index_movement_panel = new JPanel(); … … 1101 1118 Dictionary.registerBoth(add_all_button, "CDM.IndexManager.MGPP.Add_All_Metadata", "CDM.IndexManager.MGPP.Add_All_Metadata_Tooltip"); 1102 1119 1103 replace_ button = new GLIButton();1104 replace_ button.setEnabled(false);1105 replace_ button.setMnemonic(KeyEvent.VK_C);1106 Dictionary.registerBoth(replace_ button, "CDM.IndexManager.MGPP.Replace_Index", "CDM.IndexManager.MGPP.Replace_Index_Tooltip");1120 replace_index_button = new GLIButton(); 1121 replace_index_button.setEnabled(false); 1122 replace_index_button.setMnemonic(KeyEvent.VK_C); 1123 Dictionary.registerBoth(replace_index_button, "CDM.IndexManager.MGPP.Replace_Index", "CDM.IndexManager.MGPP.Replace_Index_Tooltip"); 1107 1124 1108 1125 remove_index_button = new GLIButton(); … … 1117 1134 add_index_button.addActionListener(new AddIndexActionListener()); 1118 1135 add_all_button.addActionListener(new AddAllActionListener()); 1119 current_indexes_list.addListSelectionListener(new CurrentIndexesListSelectionListener()); 1136 1137 // Create the index_list_listener but don't add in to the list - this gets done in gainFocus, we don't want it twice. 1138 mgpp_index_list_listener = new CurrentIndexesListSelectionListener(); 1120 1139 index_combobox.addActionListener(index_eal); 1121 1140 ((JTextField)index_combobox.getEditor().getEditorComponent()).getDocument().addDocumentListener(index_eal); … … 1123 1142 move_index_down_button.addActionListener(new MoveIndexDownListener()); 1124 1143 move_index_up_button.addActionListener(new MoveIndexUpListener()); 1125 replace_ button.addActionListener(new ReplaceIndexActionListener());1144 replace_index_button.addActionListener(new ReplaceIndexActionListener()); 1126 1145 remove_index_button.addActionListener(new RemoveIndexActionListener(index_eal)); 1127 1146 … … 1153 1172 index_button_panel.add(add_index_button); 1154 1173 index_button_panel.add(add_all_button); 1155 index_button_panel.add(replace_ button);1174 index_button_panel.add(replace_index_button); 1156 1175 index_button_panel.add(remove_index_button); 1157 1176 … … 1180 1199 current_levels_list = new JList(levels_model); 1181 1200 current_levels_list.setVisibleRowCount(5); 1182 1201 current_levels_list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 1183 1202 JPanel level_movement_panel = new JPanel(); 1184 1203 … … 1216 1235 level_combobox.setBackgroundNonSelectionColor(Configuration.getColor("coloring.editable_background", false)); 1217 1236 level_combobox.setBackgroundSelectionColor(Configuration.getColor("coloring.collection_selection_background", false)); 1218 level_combobox.setEditable( true);1237 level_combobox.setEditable(false); 1219 1238 level_combobox.setTextNonSelectionColor(Configuration.getColor("coloring.workspace_tree_foreground", false)); 1220 1239 level_combobox.setTextSelectionColor(Configuration.getColor("coloring.collection_selection_foreground", false)); … … 1322 1341 1323 1342 public void gainFocus() { 1343 // add in the mgpp listener 1344 current_indexes_list.addListSelectionListener(mgpp_index_list_listener); 1324 1345 // Reload the assigned indexes list. 1325 1346 index_combobox.removeAllItems(); … … 1345 1366 current_indexes_list.updateUI(); 1346 1367 } 1347 1368 1369 public void removeIndexListListener() { 1370 1371 current_indexes_list.removeListSelectionListener(mgpp_index_list_listener); 1372 } 1373 1348 1374 private class AddIndexActionListener 1349 1375 implements ActionListener { … … 1368 1394 // Assign new index 1369 1395 addIndex(index, metadatum); 1396 current_indexes_list.setSelectedValue(index, true); 1370 1397 } 1371 1398 // Done. Disable add … … 1413 1440 // Retrieve the source 1414 1441 String source = (String)level_combobox.getSelectedItem(); 1415 // If this object isn't yet in the combobox add it.1416 if(level_combobox.getSelectedIndex() == -1) {1417 level_combobox.insertItemAt(source, level_combobox.getItemCount());1418 }1419 1442 Level level = new Level(source); 1420 1443 // Create new metadatum … … 1422 1445 metadatum.setValue(name); 1423 1446 // Assign new level 1447 int size = levels_model.getSize(); 1424 1448 addLevel(level, metadatum); 1425 // Done. Disable add1449 current_levels_list.setSelectedValue(level, true); 1426 1450 add_level_button.setEnabled(false); 1427 1451 } … … 1431 1455 implements ListSelectionListener { 1432 1456 public void valueChanged(ListSelectionEvent event) { 1433 if(!event.getValueIsAdjusting()) { 1434 Index index = (Index)current_indexes_list.getSelectedValue(); 1435 Object[] selected_objects = current_indexes_list.getSelectedValues(); 1436 if(selected_objects.length == 1) { 1437 String full_text = index.toString(); 1438 if(full_text.indexOf("\"") != -1) { 1439 index_name_field.setText(index.getName()); 1440 } 1441 ArrayList sources = index.getSources(); 1442 index_combobox.setSelectedItem(sources.get(0)); 1443 } 1444 if(index != null) { 1445 move_index_down_button.setEnabled((model.indexOf(index) < model.getSize() - 1)); 1446 move_index_up_button.setEnabled((model.indexOf(index) > 0)); 1447 remove_index_button.setEnabled(true); 1448 } 1449 else { 1450 move_index_down_button.setEnabled(false); 1451 move_index_up_button.setEnabled(false); 1452 remove_index_button.setEnabled(false); 1453 } 1454 } 1455 } 1457 if(event.getValueIsAdjusting()) { 1458 return; 1459 } 1460 1461 Index index = (Index)current_indexes_list.getSelectedValue(); 1462 if(index != null) { 1463 String full_text = index.toString(); 1464 if(full_text.indexOf("\"") != -1) { 1465 index_name_field.setText(index.getName()); 1466 } 1467 ArrayList sources = index.getSources(); 1468 index_combobox.setSelectedItem(sources.get(0)); 1469 1470 1471 move_index_down_button.setEnabled((model.indexOf(index) < model.getSize() - 1)); 1472 move_index_up_button.setEnabled((model.indexOf(index) > 0)); 1473 remove_index_button.setEnabled(true); 1474 } 1475 else { 1476 move_index_down_button.setEnabled(false); 1477 move_index_up_button.setEnabled(false); 1478 remove_index_button.setEnabled(false); 1479 } 1480 } 1456 1481 } 1457 1482 … … 1459 1484 implements ListSelectionListener { 1460 1485 public void valueChanged(ListSelectionEvent event) { 1461 if(!event.getValueIsAdjusting()) { 1462 Level level = (Level)current_levels_list.getSelectedValue(); 1463 if(level != null) { 1464 move_level_down_button.setEnabled((levels_model.indexOf(level) < levels_model.getSize() - 1)); 1465 move_level_up_button.setEnabled((levels_model.indexOf(level) > 0)); 1466 remove_level_button.setEnabled(!level.getName().equals(CollectionConfiguration.DOCUMENT_STR) || levels_model.getSize() > 1); 1467 } 1468 else { 1469 move_level_down_button.setEnabled(false); 1470 move_level_up_button.setEnabled(false); 1471 remove_level_button.setEnabled(false); 1472 } 1486 1487 if(event.getValueIsAdjusting()) { 1488 return; 1489 } 1490 1491 Level level = (Level)current_levels_list.getSelectedValue(); 1492 if(level != null) { 1493 String full_text = level.toString(); 1494 if(full_text.indexOf("\"") != -1) { 1495 level_name_field.setText(level.getName()); 1496 } 1497 String level_id = level.getLevel(); 1498 level_combobox.setSelectedItem(level_id); 1499 move_level_down_button.setEnabled((levels_model.indexOf(level) < levels_model.getSize() - 1)); 1500 move_level_up_button.setEnabled((levels_model.indexOf(level) > 0)); 1501 remove_level_button.setEnabled(true); 1502 } 1503 else { 1504 move_level_down_button.setEnabled(false); 1505 move_level_up_button.setEnabled(false); 1506 remove_level_button.setEnabled(false); 1473 1507 } 1474 1508 } … … 1509 1543 String name = index_name_field.getText(); 1510 1544 Object selected_object = index_combobox.getSelectedItem(); 1545 boolean add_enabled = false; 1546 boolean replace_enabled = false; 1547 1511 1548 if(name.length() > 0 && selected_object != null) { 1512 1549 // Unfortunately we have to generate a valid id … … 1526 1563 id = id.substring(StaticStrings.EXTRACTED_NAMESPACE.length()); 1527 1564 } 1565 1528 1566 Index index = getIndex(id); 1529 1567 if(index == null) { 1530 add_index_button.setEnabled(true); 1531 replace_button.setEnabled(false); 1568 add_enabled = true; 1569 // we have a new index. is something selected? if so, we can replace 1570 if (current_indexes_list.getSelectedIndex() != -1) { 1571 replace_enabled = true; 1572 } 1532 1573 } 1533 1574 else { 1534 add_index_button.setEnabled(false); 1535 replace_button.setEnabled(!name.equals(index.getName())); 1575 // the index is already there 1576 add_enabled = false; 1577 // but if the name is changed, we can do a replace 1578 if(!name.equals(index.getName())) { 1579 replace_enabled = true; 1580 } 1581 1536 1582 } 1537 1583 } 1538 1584 else { 1539 add_index_button.setEnabled(false); 1540 } 1585 add_enabled = false; 1586 replace_enabled = false; 1587 1588 } 1589 1590 // We should now know the button state 1591 add_index_button.setEnabled(add_enabled); 1592 replace_index_button.setEnabled(replace_enabled); 1593 1541 1594 } 1542 1595 } … … 1630 1683 1631 1684 public void actionPerformed(ActionEvent event) { 1632 Object[] selected_objects = current_indexes_list.getSelectedValues(); 1633 if(selected_objects.length == 1) { 1634 Index index = (Index) selected_objects[0]; 1685 // We'll just remove the old one and add the new one 1686 removeIndex((Index) current_indexes_list.getSelectedValue()); 1687 replace_index_button.setEnabled(false); 1688 add_index_button.setEnabled(true); 1689 add_index_button.doClick(); // this adds the new one 1690 add_index_button.setEnabled(false); 1691 1692 //Object[] selected_objects = current_indexes_list.getSelectedValues(); 1693 //if(selected_objects.length == 1) { 1694 Index index = (Index)current_indexes_list.getSelectedValue(); 1695 if (index != null) { 1696 //Index index = (Index) selected_objects[0]; 1635 1697 // Remove old name 1636 1698 CollectionDesignManager.collectionmeta_manager.removeMetadata(CollectionConfiguration.STOP_CHARACTER + index.getID()); … … 1639 1701 // Create new metadatum 1640 1702 CollectionMeta metadatum = new CollectionMeta(CollectionConfiguration.STOP_CHARACTER + index.getID()); 1641 index = null;1703 //index = null; 1642 1704 metadatum.setValue(name); 1643 1705 name = null; … … 1646 1708 metadatum = null; 1647 1709 } 1648 current_indexes_list.setSelectedValue(selected_objects[0], true); 1710 //current_indexes_list.setSelectedValue(selected_objects[0], true); 1711 current_indexes_list.setSelectedValue(index, true); 1649 1712 // Done. Disable add 1650 1713 add_index_button.setEnabled(false); 1651 replace_ button.setEnabled(false);1714 replace_index_button.setEnabled(false); 1652 1715 } 1653 1716 } … … 1664 1727 public void actionPerformed(ActionEvent event) { 1665 1728 // Retrieve the selected items 1666 Object[] selected_objects = current_indexes_list.getSelectedValues();1729 //Object[] selected_objects = current_indexes_list.getSelectedValues(); 1667 1730 // Clear selection 1668 current_indexes_list.clearSelection(); 1669 for(int i = 0; i < selected_objects.length; i++) { 1670 Index index = (Index) selected_objects[i]; 1731 //current_indexes_list.clearSelection(); 1732 //for(int i = 0; i < selected_objects.length; i++) { 1733 // Index index = (Index) selected_objects[i]; 1734 // Remove any related metadata 1735 // CollectionDesignManager.collectionmeta_manager.removeMetadata(CollectionConfiguration.STOP_CHARACTER + index.getID()); 1736 // Remove the index 1737 // removeIndex(index); 1738 //} 1739 // Disable remove button 1740 //remove_index_button.setEnabled(false); 1741 // Check if add should be reenabled 1742 //eal.validateAddButtonIndex(); 1743 int i = current_indexes_list.getSelectedIndex(); 1744 if (i != -1) { 1745 Index index = (Index) current_indexes_list.getSelectedValue(); 1671 1746 // Remove any related metadata 1672 1747 CollectionDesignManager.collectionmeta_manager.removeMetadata(CollectionConfiguration.STOP_CHARACTER + index.getID()); 1673 // Remove the index1674 1748 removeIndex(index); 1675 } 1676 // Disable remove button 1677 remove_index_button.setEnabled(false); 1749 1750 //if (i != -1) { 1751 //removeIndex((Index) index_list.getSelectedValue()); 1752 //} 1753 int size = current_indexes_list.getModel().getSize(); 1754 if (i == size) { 1755 i--; 1756 } 1757 current_indexes_list.setSelectedIndex(i); 1758 } 1759 if (i==-1) { 1760 // empty list, disable remove button 1761 remove_index_button.setEnabled(false); 1762 } 1678 1763 // Check if add should be reenabled 1679 1764 eal.validateAddButtonIndex(); 1765 1766 // This will produce an event on the list, updating the other buttons 1767 //if (size == 0) { 1768 // We have removed the last index, should be able to add what's filled in currently, if valid 1769 // validateAddButton(); 1770 // } 1680 1771 } 1681 1772 } … … 1691 1782 1692 1783 public void actionPerformed(ActionEvent event) { 1784 1785 int i = current_levels_list.getSelectedIndex(); 1786 if (i != -1) { 1787 Level level = (Level) current_levels_list.getSelectedValue(); 1788 CollectionDesignManager.collectionmeta_manager.removeMetadata(CollectionConfiguration.STOP_CHARACTER + level.getLevel()); 1789 removeLevel(level); 1790 if (i == current_levels_list.getModel().getSize()) { 1791 i--; 1792 } 1793 current_levels_list.setSelectedIndex(i); 1794 } 1693 1795 // Retrieve the selected items 1694 Object[] selected_objects = current_levels_list.getSelectedValues();1796 //Object[] selected_objects = current_levels_list.getSelectedValues(); 1695 1797 // Clear selection 1696 current_levels_list.clearSelection(); 1697 for(int i = 0; i < selected_objects.length; i++) { 1698 Level level = (Level) selected_objects[i]; 1798 //current_levels_list.clearSelection(); 1799 //for(int i = 0; i < selected_objects.length; i++) { 1800 1801 //Level level = (Level) selected_objects[i]; 1699 1802 // Remove any related metadata 1700 CollectionDesignManager.collectionmeta_manager.removeMetadata(CollectionConfiguration.STOP_CHARACTER + level.getName());1803 //CollectionDesignManager.collectionmeta_manager.removeMetadata(CollectionConfiguration.STOP_CHARACTER + level.getLevel()); 1701 1804 // Remove the index 1702 removeLevel(level); 1703 } 1704 // Disable remove button 1705 remove_level_button.setEnabled(false); 1805 //removeLevel(level); 1806 //} 1807 1808 if (i==-1) { 1809 // Disable remove button 1810 remove_level_button.setEnabled(false); 1811 } 1706 1812 // If there are no levels left, put document back in 1707 if(levels_model.getSize() == 0) {1708 Level level = new Level(CollectionConfiguration.DOCUMENT_STR);1709 // Create new metadatum1710 CollectionMeta metadatum = new CollectionMeta(CollectionConfiguration.STOP_CHARACTER + CollectionConfiguration.DOCUMENT_STR);1711 metadatum.setValue(CollectionConfiguration.DOCUMENT_STR);1712 // Assign new level1713 addLevel(level, metadatum);1714 level = null;1715 }1813 // if(levels_model.getSize() == 0) { 1814 // Level level = new Level(CollectionConfiguration.DOCUMENT_STR); 1815 // // Create new metadatum 1816 // CollectionMeta metadatum = new CollectionMeta(CollectionConfiguration.STOP_CHARACTER + CollectionConfiguration.DOCUMENT_STR); 1817 // metadatum.setValue(CollectionConfiguration.DOCUMENT_STR); 1818 // // Assign new level 1819 // addLevel(level, metadatum); 1820 // level = null; 1821 // } 1716 1822 // Check if add should be reenabled 1717 1823 eal.validateAddButtonLevel();
Note:
See TracChangeset
for help on using the changeset viewer.