sippreference.java.svn-base

来自「开源项目openfire的完整源程序」· SVN-BASE 代码 · 共 228 行

SVN-BASE
228
字号
/**
 * $Revision: $
 * $Date: $
 *
 * Copyright (C) 2007 Jive Software. All rights reserved.
 *
 * This software is published under the terms of the GNU Lesser Public License (LGPL),
 * a copy of which is included in this distribution.
 */

package org.jivesoftware.sparkplugin.preferences;

import org.jivesoftware.spark.plugin.phone.resource.PhoneRes;
import net.java.sipmack.softphone.SoftPhoneManager;
import com.thoughtworks.xstream.XStream;
import net.java.sipmack.common.Log;
import net.java.sipmack.sip.SIPConfig;
import org.jivesoftware.Spark;
import org.jivesoftware.spark.preference.Preference;
import org.jivesoftware.spark.util.SwingWorker;

import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;

import javax.swing.Icon;
import javax.swing.JComponent;

/**
 * Title: SIPark
 * Description:JAIN-SIP Audio/Video phone application
 *
 * @author Thiago Rocha Camargo (thiago@jivesoftware.com)
 *         <p/>
 *         The <code>SipPreference</code> class manage the Spark Preferences
 * @version 1.0, 28/09/2006
 */

public class SipPreference implements Preference {
    private SipPreferencePanel panel;

    private boolean showGUI = true;

    private boolean commitSettings = true;

    private XStream xstream;

    private SipPreferences preferences;

    public SipPreference() {
        loadFromFile();
        panel = new SipPreferencePanel();
    }

    public void setData(SipPreferences sipPreferences) {
        this.preferences = sipPreferences;
    }

    public Object getData() {
        return preferences;
    }

    public String getErrorMessage() {
        return "Invalid SIP Settings";
    }

    public JComponent getGUI() {
        return panel;
    }

    public Icon getIcon() {
        return PhoneRes.getImageIcon("ANSWER_PHONE_IMAGE");
    }

    public String getListName() {
        return "Phone";
    }

    public String getNamespace() {
        return "SIP";
    }

    public String getTitle() {
        return "Phone Settings";
    }

    public String getTooltip() {
        return "Phone Settings";
    }

    public boolean isDataValid() {
        return true;
    }

    public void loadFromFile() {
        if (preferences != null) {
            return;
        }

        if (!getSipSettingsFile().exists()) {
            preferences = new SipPreferences();
        }
        else {

            // Do Initial Load from FileSystem.
            File settingsFile = getSipSettingsFile();
            try {
                FileReader reader = new FileReader(settingsFile);
                preferences = (SipPreferences)getXStream().fromXML(reader);
            }
            catch (Exception e) {
                Log.error("Error loading Sound Preferences.", e);
                preferences = new SipPreferences();
            }
        }
    }

    public void load() {
        SwingWorker worker = new SwingWorker() {

            public Object construct() {
                loadFromFile();
                return preferences;
            }

            public void finished() {

                panel
                    .setUserName(preferences.getUserName() != null ? preferences
                        .getUserName()
                        : "");
                panel
                    .setAuthUserName(preferences.getAuthUserName() != null ? preferences
                        .getAuthUserName()
                        : "");
                panel.setServer(preferences.getServer() != null ? preferences
                    .getServer() : "");

                panel
                    .setPassword(preferences.getPassword() != null ? preferences
                        .getPassword()
                        : "");

                panel.setRegister(preferences.isRegisterAtStart());

                panel.setStunServer(preferences.getStunServer());

                panel.setStunPort(preferences.getStunPort());

                panel.setUseStun(preferences.isUseStun());
            }
        };

        worker.start();

    }

    public void commit() {
        if (commitSettings) {
            preferences.setUserName(panel.getUserName());
            preferences.setAuthUserName(panel.getAuthUserName());
            preferences.setServer(panel.getServer());
            preferences.setPassword(panel.getPassword());
            preferences.setRegisterAtStart(panel.getRegister());
            preferences.setPreferredAddress(SIPConfig
                .getPreferredNetworkAddress());

            preferences.setUseStun(panel.getUseStun());
            preferences.setStunServer(panel.getStunServer());
            preferences.setStunPort(panel.getStunPort());

            saveSipFile();
            SoftPhoneManager.getInstance().handleUnregisterRequest();
            SoftPhoneManager.getInstance().register();
        }


    }

    public void shutdown() {
        preferences.setPreferredAddress(SIPConfig.getPreferredNetworkAddress());
        saveSipFile();
    }

    public boolean isShowGUI() {
        return showGUI;
    }

    public void setShowGUI(boolean showGUI) {
        this.showGUI = showGUI;
    }

    public boolean isCommitSettings() {
        return commitSettings;
    }

    public void setCommitSettings(boolean commitSettings) {
        this.commitSettings = commitSettings;
    }

    private File getSipSettingsFile() {
        File file = new File(Spark.getSparkUserHome());
        if (!file.exists()) {
            file.mkdirs();
        }
        return new File(file, "sip-settings.xml");
    }

    public void saveSipFile() {
        try {
            FileWriter writer = new FileWriter(getSipSettingsFile());
            getXStream().toXML(preferences, writer);
        }
        catch (Exception e) {
            Log.error("Error saving sound settings.", e);
        }
    }

    private XStream getXStream() {
        if (xstream == null) {
            xstream = new XStream();
            xstream.alias("sip", SipPreferences.class);
        }
        return xstream;
    }

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?