package osx.macadapter;
import java.io.File;
import java.util.List;
import org.jabref.gui.JabRefFrame;
import com.apple.eawt.AboutHandler;
import com.apple.eawt.AppEvent;
import com.apple.eawt.AppEvent.AboutEvent;
import com.apple.eawt.AppEvent.OpenFilesEvent;
import com.apple.eawt.AppEvent.PreferencesEvent;
import com.apple.eawt.AppEvent.QuitEvent;
import com.apple.eawt.AppReOpenedListener;
import com.apple.eawt.Application;
import com.apple.eawt.FullScreenUtilities;
import com.apple.eawt.OpenFilesHandler;
import com.apple.eawt.PreferencesHandler;
import com.apple.eawt.QuitHandler;
import com.apple.eawt.QuitResponse;
public class MacAdapter implements PreferencesHandler, AboutHandler, QuitHandler, OpenFilesHandler, AppReOpenedListener {
private JabRefFrame parentFrame;
public void registerMacEvents(JabRefFrame inputFrame) {
parentFrame = inputFrame;
Application.getApplication().setOpenFileHandler(this);
Application.getApplication().setAboutHandler(this);
Application.getApplication().setPreferencesHandler(this);
Application.getApplication().setQuitHandler(this);
Application.getApplication().addAppEventListener(this);
FullScreenUtilities.setWindowCanFullScreen(parentFrame, true);
}
@Override
// The OSXAdapter calls this method when a ".bib" file has been double-clicked from the Finder.
public void openFiles(OpenFilesEvent event) {
if (parentFrame == null) {
return;
}
List<File> files = event.getFiles();
for (File file : files) {
parentFrame.openAction(file.getAbsolutePath());
}
}
@Override
public void handleQuitRequestWith(QuitEvent evt, QuitResponse resp) {
if (parentFrame == null) {
return;
}
if (parentFrame.quit()) {
resp.performQuit();
} else {
resp.cancelQuit();
}
}
@Override
public void handleAbout(AboutEvent arg0) {
if (parentFrame == null) {
return;
}
parentFrame.about();
}
@Override
public void handlePreferences(PreferencesEvent arg0) {
if (parentFrame == null) {
return;
}
parentFrame.showPreferencesDialog();
}
@Override
public void appReOpened(AppEvent.AppReOpenedEvent appReOpenedEvent) {
parentFrame.setVisible(true);
}
}