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();
  }
Example #2
0
  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++;
        }
      }
    }
  }