Ejemplo n.º 1
0
 /**
  * Return a dropdown list with the month names for fields with EXTRA_MONTH
  *
  * @param fieldEditor
  * @param entryEditor
  * @param type
  * @return
  */
 public static Optional<JComponent> getMonthExtraComponent(
     FieldEditor fieldEditor, EntryEditor entryEditor, BibDatabaseMode type) {
   final String[] options = new String[13];
   options[0] = Localization.lang("Select");
   for (int i = 1; i <= 12; i++) {
     options[i] = MonthUtil.getMonthByNumber(i).fullName;
   }
   JComboBox<String> month = new JComboBox<>(options);
   month.addActionListener(
       actionEvent -> {
         int monthnumber = month.getSelectedIndex();
         if (monthnumber >= 1) {
           if (type == BibDatabaseMode.BIBLATEX) {
             fieldEditor.setText(String.valueOf(monthnumber));
           } else {
             fieldEditor.setText(MonthUtil.getMonthByNumber(monthnumber).bibtexFormat);
           }
         } else {
           fieldEditor.setText("");
         }
         entryEditor.updateField(fieldEditor);
         month.setSelectedIndex(0);
       });
   return Optional.of(month);
 }
 public void focusLost(FocusEvent e) {
   synchronized (this) {
     if (c != null) {
       c.getDocument().removeDocumentListener(d);
       c = null;
       d = null;
     }
   }
   if (!e.isTemporary()) parent.updateField(e.getSource());
 }
Ejemplo n.º 3
0
 /**
  * Return a dropdown list containing Yes and No for fields with EXTRA_YES_NO
  *
  * @param fieldEditor
  * @param entryEditor
  * @return
  */
 public static Optional<JComponent> getYesNoExtraComponent(
     FieldEditor fieldEditor, EntryEditor entryEditor) {
   final String[] options = {"", "Yes", "No"};
   JComboBox<String> yesno = new JComboBox<>(options);
   yesno.addActionListener(
       actionEvent -> {
         fieldEditor.setText(((String) yesno.getSelectedItem()).toLowerCase());
         entryEditor.updateField(fieldEditor);
       });
   return Optional.of(yesno);
 }
Ejemplo n.º 4
0
 /**
  * Return a dropdown list with the gender alternatives for fields with GENDER
  *
  * @param fieldEditor
  * @param entryEditor
  * @return
  */
 public static Optional<JComponent> getGenderExtraComponent(
     FieldEditor fieldEditor, EntryEditor entryEditor) {
   final String[] optionValues = {"", "sf", "sm", "sp", "pf", "pm", "pn", "pp"};
   final String[] optionDescriptions = {
     Localization.lang("Select"),
     Localization.lang("Female name"),
     Localization.lang("Male name"),
     Localization.lang("Neuter name"),
     Localization.lang("Female names"),
     Localization.lang("Male names"),
     Localization.lang("Neuter names"),
     Localization.lang("Mixed names")
   };
   JComboBox<String> gender = new JComboBox<>(optionDescriptions);
   gender.addActionListener(
       actionEvent -> {
         fieldEditor.setText(optionValues[gender.getSelectedIndex()]);
         entryEditor.updateField(fieldEditor);
       });
   return Optional.of(gender);
 }
Ejemplo n.º 5
0
 /**
  * Return a dropdown list with the alternatives for pagination type fields
  *
  * @param fieldEditor
  * @param entryEditor
  * @return
  */
 public static Optional<JComponent> getPaginationExtraComponent(
     FieldEditor fieldEditor, EntryEditor entryEditor) {
   final String[] optionValues = {
     "", "page", "column", "line", "verse", "section", "paragraph", "none"
   };
   final String[] optionDescriptions = {
     Localization.lang("Select"),
     Localization.lang("Page"),
     Localization.lang("Column"),
     Localization.lang("Line"),
     Localization.lang("Verse"),
     Localization.lang("Section"),
     Localization.lang("Paragraph"),
     Localization.lang("None")
   };
   JComboBox<String> pagination = new JComboBox<>(optionDescriptions);
   pagination.addActionListener(
       actionEvent -> {
         fieldEditor.setText(optionValues[pagination.getSelectedIndex()]);
         entryEditor.updateField(fieldEditor);
       });
   return Optional.of(pagination);
 }
Ejemplo n.º 6
0
 /**
  * Return a dropdown list with the alternatives for editor type fields
  *
  * @param fieldEditor
  * @param entryEditor
  * @return
  */
 public static Optional<JComponent> getEditorTypeExtraComponent(
     FieldEditor fieldEditor, EntryEditor entryEditor) {
   final String[] optionValues = {
     "", "editor", "compiler", "founder", "continuator", "redactor", "reviser", "collaborator"
   };
   final String[] optionDescriptions = {
     Localization.lang("Select"),
     Localization.lang("Editor"),
     Localization.lang("Compiler"),
     Localization.lang("Founder"),
     Localization.lang("Continuator"),
     Localization.lang("Redactor"),
     Localization.lang("Reviser"),
     Localization.lang("Collaborator")
   };
   JComboBox<String> editorType = new JComboBox<>(optionDescriptions);
   editorType.addActionListener(
       actionEvent -> {
         fieldEditor.setText(optionValues[editorType.getSelectedIndex()]);
         entryEditor.updateField(fieldEditor);
       });
   return Optional.of(editorType);
 }
Ejemplo n.º 7
0
  public void actionPerformed(ActionEvent event) {
    int selected = editor.getSelectedRow();
    if (selected == -1) return;
    FileListEntry flEntry = editor.getTableModel().getEntry(selected);
    // Check if the current file exists:
    String ln = flEntry.getLink();
    boolean httpLink = ln.toLowerCase().startsWith("http");
    if (httpLink) {
      // TODO: notify that this operation cannot be done on remote links

    }

    // Get an absolute path representation:
    String dir = frame.basePanel().metaData().getFileDirectory(GUIGlobals.FILE_FIELD);
    if ((dir == null) || (dir.trim().length() == 0) || !(new File(dir)).exists()) {
      JOptionPane.showMessageDialog(
          frame,
          Globals.lang("File_directory_is_not_set_or_does_not_exist!"),
          Globals.lang("Move/Rename file"),
          JOptionPane.ERROR_MESSAGE);
      return;
    }
    File file = new File(ln);
    if (!file.isAbsolute()) {
      file = Util.expandFilename(ln, new String[] {dir});
    }
    if ((file != null) && file.exists()) {
      // Ok, we found the file. Now get a new name:
      String extension = null;
      if (flEntry.getType() != null) extension = "." + flEntry.getType().getExtension();

      File newFile = null;
      boolean repeat = true;
      while (repeat) {
        repeat = false;
        String chosenFile;
        if (toFileDir) {
          String suggName = eEditor.getEntry().getCiteKey() + extension;
          CheckBoxMessage cbm =
              new CheckBoxMessage(
                  Globals.lang("Move file to file directory?"),
                  Globals.lang("Rename to '%0'", suggName),
                  Globals.prefs.getBoolean("renameOnMoveFileToFileDir"));
          int answer;
          // Only ask about renaming file if the file doesn't have the proper name already:
          if (!suggName.equals(file.getName()))
            answer =
                JOptionPane.showConfirmDialog(
                    frame, cbm, Globals.lang("Move/Rename file"), JOptionPane.YES_NO_OPTION);
          else
            answer =
                JOptionPane.showConfirmDialog(
                    frame,
                    Globals.lang("Move file to file directory?"),
                    Globals.lang("Move/Rename file"),
                    JOptionPane.YES_NO_OPTION);
          if (answer != JOptionPane.YES_OPTION) return;
          Globals.prefs.putBoolean("renameOnMoveFileToFileDir", cbm.isSelected());
          StringBuilder sb = new StringBuilder(dir);
          if (!dir.endsWith(File.separator)) sb.append(File.separator);
          if (cbm.isSelected()) {
            // Rename:
            sb.append(suggName);
          } else {
            // Do not rename:
            sb.append(file.getName());
          }
          chosenFile = sb.toString();
        } else {
          chosenFile =
              FileDialogs.getNewFile(frame, file, extension, JFileChooser.SAVE_DIALOG, false);
        }
        if (chosenFile == null) {
          return; // cancelled
        }
        newFile = new File(chosenFile);
        // Check if the file already exists:
        if (newFile.exists()
            && (JOptionPane.showConfirmDialog(
                    frame,
                    "'" + newFile.getName() + "' " + Globals.lang("exists. Overwrite file?"),
                    Globals.lang("Move/Rename file"),
                    JOptionPane.OK_CANCEL_OPTION)
                != JOptionPane.OK_OPTION)) {
          if (!toFileDir) repeat = true;
          else return;
        }
      }

      if (!newFile.equals(file)) {
        try {
          boolean success = file.renameTo(newFile);
          if (!success) {
            success = Util.copyFile(file, newFile, true);
          }
          if (success) {
            // Remove the original file:
            file.delete();
            // Relativise path, if possible.
            String canPath = (new File(dir)).getCanonicalPath();
            if (newFile.getCanonicalPath().startsWith(canPath)) {
              if ((newFile.getCanonicalPath().length() > canPath.length())
                  && (newFile.getCanonicalPath().charAt(canPath.length()) == File.separatorChar))
                flEntry.setLink(newFile.getCanonicalPath().substring(1 + canPath.length()));
              else flEntry.setLink(newFile.getCanonicalPath().substring(canPath.length()));

            } else flEntry.setLink(newFile.getCanonicalPath());
            eEditor.updateField(editor);
            JOptionPane.showMessageDialog(
                frame,
                Globals.lang("File moved"),
                Globals.lang("Move/Rename file"),
                JOptionPane.INFORMATION_MESSAGE);
          } else {
            JOptionPane.showMessageDialog(
                frame,
                Globals.lang("Move file failed"),
                Globals.lang("Move/Rename file"),
                JOptionPane.ERROR_MESSAGE);
          }

        } catch (SecurityException ex) {
          ex.printStackTrace();
          JOptionPane.showMessageDialog(
              frame,
              Globals.lang("Could not move file") + ": " + ex.getMessage(),
              Globals.lang("Move/Rename file"),
              JOptionPane.ERROR_MESSAGE);
        } catch (IOException ex) {
          ex.printStackTrace();
          JOptionPane.showMessageDialog(
              frame,
              Globals.lang("Could not move file") + ": " + ex.getMessage(),
              Globals.lang("Move/Rename file"),
              JOptionPane.ERROR_MESSAGE);
        }
      }
    } else {

      // File doesn't exist, so we can't move it.
      JOptionPane.showMessageDialog(
          frame,
          Globals.lang("Could not find file '%0'.", flEntry.getLink()),
          Globals.lang("File not found"),
          JOptionPane.ERROR_MESSAGE);
    }
  }
Ejemplo n.º 8
0
 /**
  * Return a dropdown list with the alternatives for pagination type fields
  *
  * @param fieldEditor
  * @param entryEditor
  * @return
  */
 public static Optional<JComponent> getTypeExtraComponent(
     FieldEditor fieldEditor, EntryEditor entryEditor, boolean isPatent) {
   String[] optionValues;
   String[] optionDescriptions;
   if (isPatent) {
     optionValues =
         new String[] {
           "",
           "patent",
           "patentde",
           "patenteu",
           "patentfr",
           "patentuk",
           "patentus",
           "patreq",
           "patreqde",
           "patreqeu",
           "patreqfr",
           "patrequk",
           "patrequs"
         };
     optionDescriptions =
         new String[] {
           Localization.lang("Select"),
           Localization.lang("Patent"),
           Localization.lang("German patent"),
           Localization.lang("European patent"),
           Localization.lang("French patent"),
           Localization.lang("British patent"),
           Localization.lang("U.S. patent"),
           Localization.lang("Patent request"),
           Localization.lang("German patent request"),
           Localization.lang("European patent request"),
           Localization.lang("French patent request"),
           Localization.lang("British patent request"),
           Localization.lang("U.S. patent request")
         };
   } else {
     optionValues =
         new String[] {
           "",
           "mathesis",
           "phdthesis",
           "candthesis",
           "techreport",
           "resreport",
           "software",
           "datacd",
           "audiocd"
         };
     optionDescriptions =
         new String[] {
           Localization.lang("Select"),
           Localization.lang("Master's thesis"),
           Localization.lang("PhD thesis"),
           Localization.lang("Candidate thesis"),
           Localization.lang("Technical report"),
           Localization.lang("Research report"),
           Localization.lang("Software"),
           Localization.lang("Data CD"),
           Localization.lang("Audio CD")
         };
   }
   JComboBox<String> type = new JComboBox<>(optionDescriptions);
   type.addActionListener(
       actionEvent -> {
         fieldEditor.setText(optionValues[type.getSelectedIndex()]);
         entryEditor.updateField(fieldEditor);
       });
   return Optional.of(type);
 }