use of org.jabref.model.entry.FieldName in project jabref by JabRef.
the class ContentSelectorDialog method setupActions.
private void setupActions() {
wordList.addListSelectionListener(e -> {
wordEditField.setText(wordList.getSelectedValue());
wordEditField.selectAll();
wordEditField.requestFocus();
});
newWord.addActionListener(e -> newWordAction());
ActionListener wordEditFieldListener = e -> actOnWordEdit();
wordEditField.addActionListener(wordEditFieldListener);
removeWord.addActionListener(e -> {
int index = wordList.getSelectedIndex();
if (index == -1) {
return;
}
wordListModel.remove(index);
wordEditField.setText("");
if (!wordListModel.isEmpty()) {
wordList.setSelectedIndex(Math.min(index, wordListModel.size() - 1));
}
});
fieldList.addListSelectionListener(e -> {
currentField = fieldList.getSelectedValue();
fieldNameField.setText("");
setupWordSelector();
});
newField.addActionListener(e -> {
if (!fieldListModel.get(0).equals(FIELD_FIRST_LINE)) {
fieldListModel.add(0, FIELD_FIRST_LINE);
}
fieldList.setSelectedIndex(0);
fPane.getVerticalScrollBar().setValue(0);
fieldNameField.setEnabled(true);
fieldNameField.setText(currentField);
fieldNameField.selectAll();
fieldNameField.requestFocus();
});
fieldNameField.addActionListener(e -> fieldNameField.transferFocus());
fieldNameField.addFocusListener(new FieldNameFocusAdapter());
removeField.addActionListener(e -> {
int index = fieldList.getSelectedIndex();
if (index == -1) {
return;
}
String fieldName = fieldListModel.get(index);
removedFields.add(fieldName);
fieldListModel.remove(index);
wordListModels.remove(fieldName);
fieldNameField.setText("");
if (!fieldListModel.isEmpty()) {
fieldList.setSelectedIndex(Math.min(index, wordListModel.size() - 1));
}
});
ok.addActionListener(e -> {
try {
applyChanges();
dispose();
} catch (Exception ex) {
LOGGER.info("Could not apply changes in \"Manage content selectors\"", ex);
JOptionPane.showMessageDialog(frame, Localization.lang("Could not apply changes."));
}
});
apply.addActionListener(e -> {
if (!"".equals(wordEditField.getText())) {
wordEditFieldListener.actionPerformed(null);
}
try {
applyChanges();
} catch (Exception ex) {
LOGGER.info("Could not apply changes in \"Manage content selectors\"", ex);
JOptionPane.showMessageDialog(frame, Localization.lang("Could not apply changes."));
}
});
Action cancelAction = new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
dispose();
}
};
cancelAction.putValue(Action.NAME, Localization.lang("Cancel"));
cancel.setAction(cancelAction);
}
use of org.jabref.model.entry.FieldName in project jabref by JabRef.
the class MainTableSelectionListener method mouseClicked.
@Override
public void mouseClicked(MouseEvent e) {
// First find the column on which the user has clicked.
final int row = table.rowAtPoint(e.getPoint());
// A double click on an entry should open the entry's editor.
if (e.getClickCount() == 2) {
BibEntry toShow = tableRows.get(row);
editSignalled(toShow);
return;
}
final int col = table.columnAtPoint(e.getPoint());
// get the MainTableColumn which is currently visible at col
int modelIndex = table.getColumnModel().getColumn(col).getModelIndex();
MainTableColumn modelColumn = table.getMainTableColumn(modelIndex);
// action will be taken when the button is released:
if (OS.WINDOWS && (modelColumn.isIconColumn()) && (e.getButton() != MouseEvent.BUTTON1)) {
return;
}
// Check if the clicked colum is a specialfield column
if (modelColumn.isIconColumn() && (SpecialField.isSpecialField(modelColumn.getColumnName()))) {
// handle specialfield
handleSpecialFieldLeftClick(e, modelColumn.getColumnName());
} else if (modelColumn.isIconColumn()) {
// left click on icon field
Object value = table.getValueAt(row, col);
if (value == null) {
// No icon here, so we do nothing.
return;
}
final BibEntry entry = tableRows.get(row);
final List<String> fieldNames = modelColumn.getBibtexFields();
// Open it now. We do this in a thread, so the program won't freeze during the wait.
JabRefExecutorService.INSTANCE.execute(() -> {
panel.output(Localization.lang("External viewer called") + '.');
// (is relevant for combinations such as "url/doi")
for (String fieldName : fieldNames) {
// Check if field is present, if not skip this field
if (entry.hasField(fieldName)) {
String link = entry.getField(fieldName).get();
// field that can specify a list of links:
if (fieldName.equals(FieldName.FILE)) {
// We use a FileListTableModel to parse the field content:
FileListTableModel fileList = new FileListTableModel();
fileList.setContent(link);
FileListEntry flEntry = null;
// If there are one or more links of the correct type, open the first one:
if (modelColumn.isFileFilter()) {
for (int i = 0; i < fileList.getRowCount(); i++) {
if (fileList.getEntry(i).getType().toString().equals(modelColumn.getColumnName())) {
flEntry = fileList.getEntry(i);
break;
}
}
} else if (fileList.getRowCount() > 0) {
//If there are no file types specified open the first file
flEntry = fileList.getEntry(0);
}
if (flEntry != null) {
ExternalFileMenuItem item = new ExternalFileMenuItem(panel.frame(), entry, "", flEntry.getLink(), flEntry.getType().map(ExternalFileType::getIcon).orElse(null), panel.getBibDatabaseContext(), flEntry.getType());
item.doClick();
}
} else {
try {
JabRefDesktop.openExternalViewer(panel.getBibDatabaseContext(), link, fieldName);
} catch (IOException ex) {
panel.output(Localization.lang("Unable to open link."));
LOGGER.info("Unable to open link", ex);
}
}
// only open the first link
break;
}
}
});
} else if (modelColumn.getBibtexFields().contains(FieldName.CROSSREF)) {
// Clicking on crossref column
tableRows.get(row).getField(FieldName.CROSSREF).ifPresent(crossref -> panel.getDatabase().getEntryByKey(crossref).ifPresent(entry -> panel.highlightEntry(entry)));
}
panel.frame().updateEnabledState();
}
Aggregations