/**
* $RCSfile: ,v $
* $Revision: $
* $Date: $
*
* Copyright (C) 2004-2011 Jive Software. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jivesoftware.sparkimpl.preference.notifications;
import org.jivesoftware.resource.Res;
import org.jivesoftware.resource.SparkRes;
import org.jivesoftware.spark.preference.Preference;
import org.jivesoftware.spark.util.SwingWorker;
import org.jivesoftware.sparkimpl.settings.local.LocalPreferences;
import org.jivesoftware.sparkimpl.settings.local.SettingsManager;
import javax.swing.Icon;
import javax.swing.JComponent;
/**
* Handles the preferences for notification behavior within the Spark IM Client.
*
* @author Derek DeMoro
*/
public class NotificationsPreference implements Preference {
private NotificationsUI panel = new NotificationsUI();
/**
* Define the Namespace used for this preference.
*/
public static final String NAMESPACE = "http://www.jivesoftware.org/spark/notifications";
public String getTitle() {
return Res.getString("title.notifications");
}
public String getListName() {
return Res.getString("title.notifications");
}
public String getTooltip() {
return Res.getString("tooltip.notifications");
}
public Icon getIcon() {
return SparkRes.getImageIcon(SparkRes.PROFILE_ICON);
}
public void load() {
SwingWorker thread = new SwingWorker() {
LocalPreferences localPreferences;
public Object construct() {
localPreferences = SettingsManager.getLocalPreferences();
return localPreferences;
}
public void finished() {
boolean toaster = localPreferences.getShowToasterPopup();
boolean windowFocus = localPreferences.getWindowTakesFocus();
boolean offlineNotification = localPreferences
.isOfflineNotificationsOn();
boolean onlineNotification = localPreferences
.isOnlineNotificationsOn();
boolean betaChecking = localPreferences.isBetaCheckingEnabled();
boolean typingNotification = localPreferences
.isTypingNotificationShown();
boolean systemTrayNotification = localPreferences
.isSystemTrayNotificationEnabled();
panel.setShowToaster(toaster);
panel.setShowWindowPopup(windowFocus);
panel.setOfflineNotification(offlineNotification);
panel.setOnlineNotification(onlineNotification);
panel.setCheckForBeta(betaChecking);
panel.setTypingNotification(typingNotification);
panel.setSystemTrayNotification(systemTrayNotification);
// when windowFocus is selected the systemtraynotification doesn't work --> disable it
if(windowFocus) {
panel.setSystemTrayNotification(false);
panel.setSystemTrayNotificationEnabled(false);
}
else
panel.setSystemTrayNotificationEnabled(true);
if(systemTrayNotification) {
panel.setShowWindowPopup(false);
panel.setShowWindowPopupEnabled(false);
}
else
panel.setShowWindowPopupEnabled(true);
}
};
thread.start();
}
public void commit() {
LocalPreferences pref = SettingsManager.getLocalPreferences();
pref.setShowToasterPopup(panel.showToaster());
pref.setWindowTakesFocus(panel.shouldWindowPopup());
pref.setOfflineNotifications(panel.isOfflineNotificationOn());
pref.setOnlineNotifications(panel.isOnlineNotificationOn());
pref.setCheckForBeta(panel.isBetaCheckingEnabled());
pref.setTypingNotificationOn(panel.isTypingNotification());
pref.setSystemTrayNotificationEnabled(panel.isSystemTrayNotificationEnabled());
SettingsManager.saveSettings();
}
public Object getData() {
return SettingsManager.getLocalPreferences();
}
public String getErrorMessage() {
return "";
}
public boolean isDataValid() {
return true;
}
public JComponent getGUI() {
return panel;
}
public String getNamespace() {
return NAMESPACE;
}
public void shutdown() {
commit();
}
}