package org.docear.plugin.bibtex.jabref;
import java.util.List;
import net.sf.jabref.BasePanel;
import net.sf.jabref.JabRefFrame;
import net.sf.jabref.gui.MainTable;
import spl.JabRefDraggedFilesEvent;
import spl.JabRefEvent;
import spl.JabRefEventListener;
public class JabrefChangeEventListener implements JabRefEventListener {
public void processEvent(JabRefEvent event) {
// if a file was dropped onto the jabref entry table
if (event instanceof JabRefDraggedFilesEvent) {
JabRefDraggedFilesEvent evt = (JabRefDraggedFilesEvent) event;
// check if supposed to be dropped file list is not empty
String[] fileNames = evt.getFileNames();
int dropRow = evt.getDropRow();
JabRefFrame jabRefFrame = evt.getJabRefFrame();
BasePanel basePanel = evt.getBasePanel();
MainTable entryTable = evt.getEntryTable();
List<String> unhandledFileNames = JabRefCommons.addOrUpdateRefenceEntry(fileNames, dropRow, jabRefFrame, basePanel, entryTable, false);
if (unhandledFileNames != null && unhandledFileNames.size() > 0 && evt.getHandler() != null) {
for (int i = 0; i < unhandledFileNames.size(); i++) {
String file = unhandledFileNames.get(i);
if(file.toLowerCase().endsWith(".bib")) {
unhandledFileNames.remove(i);
}
}
if(unhandledFileNames.size() > 0) {
// apply default handling to all left over files
evt.getHandler().loadOrImportFiles(unhandledFileNames.toArray(new String[0]), dropRow);
}
}
// prevent this event from further processing
event.consume();
}
}
}