package org.limewire.ui.swing.shell;
import org.limewire.ui.swing.util.MacOSXUtils;
class OSXFileTypeAssociation implements ShellAssociation {
private final String extension;
protected OSXFileTypeAssociation(String extension) {
this.extension = extension;
}
public static boolean isNativeLibraryLoadedCorrectly() {
return MacOSXUtils.isNativeLibraryLoadedCorrectly();
}
public boolean isAvailable() {
return !MacOSXUtils.isFileTypeHandled(extension);
}
public boolean isRegistered() {
return MacOSXUtils.isLimewireDefaultFileTypeHandler(extension);
}
@Override
public void register() {
MacOSXUtils.setLimewireAsDefaultFileTypeHandler(extension);
}
public boolean canUnregister() {
return MacOSXUtils.canChangeDefaultFileTypeHandler(extension);
}
@Override
public void unregister() {
// There is no way to unregister a file type association on OS-X except
// completely destroying and recreating the registration database,
// which would wipe out ALL file associations.
// So, we'll try to set another registered handler for this file
// type as the default handler.
MacOSXUtils.tryChangingDefaultFileTypeHandler(extension);
}
}