private void applyChanges() { boolean changedFieldSet = false; // Watch if we need to rebuild entry editors // First remove the mappings for fields that have been deleted. // If these were re-added, they will be added below, so it doesn't // cause any harm to remove them here. for (Iterator<String> i = removedFields.iterator(); i.hasNext(); ) { String fieldName = i.next(); metaData.remove(Globals.SELECTOR_META_PREFIX + fieldName); changedFieldSet = true; } // Cycle through all fields that we have created listmodels for: loop: for (Iterator<String> i = wordListModels.keySet().iterator(); i.hasNext(); ) { // For each field name, store the values: String fieldName = i.next(); if ((fieldName == null) || FIELD_FIRST_LINE.equals(fieldName)) continue loop; DefaultListModel lm = wordListModels.get(fieldName); int start = 0; // Avoid storing the <new word> marker if it is there: if (lm.size() > 0) while ((start < lm.size()) && (lm.get(start)).equals(WORD_FIRSTLINE_TEXT)) start++; Vector<String> data = metaData.getData(Globals.SELECTOR_META_PREFIX + fieldName); boolean newField = false; if (data == null) { newField = true; data = new Vector<String>(); changedFieldSet = true; } else data.clear(); for (int wrd = start; wrd < lm.size(); wrd++) { String word = (String) lm.get(wrd); data.add(word); } if (newField) metaData.putData(Globals.SELECTOR_META_PREFIX + fieldName, data); } // System.out.println("TODO: remove metadata for removed selector field."); panel.markNonUndoableBaseChanged(); // Update all selectors in the current BasePanel. if (changedFieldSet) { panel.rebuildAllEntryEditors(); } else { panel.updateAllContentSelectors(); } panel.addContentSelectorValuesToAutoCompleters(); }
private JMenu buildGroupMenu(BibtexEntry[] bes, boolean add, boolean move) { if (bes == null) { return null; } JMenu groupMenu = new JMenu(); GroupTreeNode groups = metaData.getGroups(); if (groups == null) { groupAddMenu.setEnabled(false); groupMoveMenu.setEnabled(false); groupRemoveMenu.setEnabled(false); return null; } /*groupAddMenu.setEnabled(true); groupMoveMenu.setEnabled(true); groupRemoveMenu.setEnabled(true); groupAddMenu.removeAll(); groupMoveMenu.removeAll(); groupRemoveMenu.removeAll(); add(groupAddMenu); add(groupMoveMenu); add(groupRemoveMenu); groupAddMenu.setEnabled(false); groupMoveMenu.setEnabled(false); groupRemoveMenu.setEnabled(false);*/ /*insertNodes(groupAddMenu,metaData.getGroups(),bes,true,false); insertNodes(groupMoveMenu,metaData.getGroups(),bes,true,true); insertNodes(groupRemoveMenu,metaData.getGroups(),bes,false,false);*/ insertNodes(groupMenu, metaData.getGroups(), bes, add, move); return groupMenu; }
private void setupWordSelector() { // Have we already created a listmodel for this field? wordListModel = wordListModels.get(currentField); if (wordListModel != null) { wordList.setModel(wordListModel); } else { wordListModel = new DefaultListModel(); wordList.setModel(wordListModel); wordListModels.put(currentField, wordListModel); // wordListModel.addElement(WORD_FIRSTLINE_TEXT); Vector<String> items = metaData.getData(Globals.SELECTOR_META_PREFIX + currentField); if (items != null) { wordSet = new TreeSet<String>(items); int index = 0; for (String s : wordSet) { wordListModel.add(index, s); index++; } } } }