📄 playerpanelprefs.java
字号:
package net.sf.fmj.ui.application;import java.io.File;import java.io.IOException;import java.io.Reader;import java.io.Writer;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.logging.Logger;import javax.media.protocol.ContentDescriptor;import net.sf.fmj.ui.wizards.ProcessorWizardConfig;import net.sf.fmj.ui.wizards.RTPTransmitWizardConfig;import net.sf.fmj.ui.wizards.TrackConfig;import net.sf.fmj.ui.wizards.TranscodeWizardConfig;import net.sf.fmj.utility.LoggerSingleton;import net.sf.fmj.utility.SerializationUtils;import org.jdom.Document;import org.jdom.Element;import org.jdom.JDOMException;import org.jdom.input.SAXBuilder;import org.jdom.output.Format;import org.jdom.output.XMLOutputter;/** * * @author Ken Larson * */public class PlayerPanelPrefs{ private static final Logger logger = LoggerSingleton.logger; /** versio of the xml file format */ private static final String version = "0.1"; public List recentUrls = new ArrayList(); public boolean autoPlay = true; public boolean autoLoop = false; public RTPTransmitWizardConfig rtpTransmitWizardConfig = new RTPTransmitWizardConfig(); public TranscodeWizardConfig transcodeWizardConfig = new TranscodeWizardConfig(); public static File getFile() { /** the name of the file used to store the prefs */ final String filename = ".fmjstudio.prefs.xml"; String home = System.getProperty("user.home"); return new File(home + File.separator + filename); } /* ---------------------- XML operations --------------------- */ private static final String ELEMENT_REGISTRY = "fmj-studio-prefs"; private static final String ATTR_VERSION = "version"; private static final String ELEMENT_RECENT_URLS = "recent-urls"; private static final String ELEMENT_RECENT_URL = "url"; private static final String ELEMENT_RTP_TRANSMIT_WIZARD_CONFIG = "rtp-transmit-wizard-config"; private static final String ELEMENT_TRANSCODE_WIZARD_CONFIG = "transcode-wizard-config"; /** * Load the Registry data from a Reader/ */ public void load(Reader reader) throws IOException { // read the registry try { SAXBuilder saxBuilder = new SAXBuilder(); Document document = saxBuilder.build(reader); // read all the data from the document and place into data structures. loadDocument(document); } catch (JDOMException e) { // problem parsing XML. throw new IOException(e.getMessage()); } } /** * Write the registry data to the Writer. * * @param writer destination for the registry data. * @throws IOException */ public void write(Writer writer) throws IOException { // build document from registry data structures Document document = buildDocument(); XMLOutputter xmlOutputter = new XMLOutputter(); xmlOutputter.setFormat(Format.getPrettyFormat()); xmlOutputter.output(document, writer); } private void loadDocument(Document document) throws IOException { Element rootElement = document.getRootElement(); String versionString = rootElement.getAttributeValue(ATTR_VERSION); // TODO use version String logger.info("FMJStudio preferences document version " + versionString); Element element_RecentUrls = rootElement.getChild(ELEMENT_RECENT_URLS); parseElement_RecentUrls(element_RecentUrls); // auto-start { Element e = rootElement.getChild("auto-play"); if (e != null) autoPlay = e.getTextTrim().equals("" + true); } // auto-loop { Element e = rootElement.getChild("auto-loop"); if (e != null) autoLoop = e.getTextTrim().equals("" + true); } parseElement_RTPTransmitWizardConfig(rootElement.getChild(ELEMENT_RTP_TRANSMIT_WIZARD_CONFIG)); parseElement_TranscodeWizardConfig(rootElement.getChild(ELEMENT_TRANSCODE_WIZARD_CONFIG)); } /** * Builds a Document from the registry data structures. * * @return the Document. * @throws IOException */ private Document buildDocument() throws IOException { Document document = new Document(); Element rootElement = new Element(ELEMENT_REGISTRY); rootElement.setAttribute(ATTR_VERSION, version); document.setRootElement(rootElement); rootElement.addContent(buildElement_RecentUrls()); // auto-start { Element e = new Element("auto-play"); e.setText("" + autoPlay); rootElement.addContent(e); } // auto-loop { Element e = new Element("auto-loop"); e.setText("" + autoLoop); rootElement.addContent(e); } rootElement.addContent(buildElement_RTPTransmitWizardConfig()); rootElement.addContent(buildElement_TranscodeWizardConfig()); return document; } private void parseElement_RecentUrls(Element element) { recentUrls.clear(); List list = element.getChildren(ELEMENT_RECENT_URL); for (int i=0; i<list.size(); i++) { Element stringElement = (Element) list.get(i); recentUrls.add(stringElement.getTextTrim()); } } private Element buildElement_RecentUrls() { Element element = new Element(ELEMENT_RECENT_URLS); Iterator iterator = recentUrls.iterator(); while (iterator.hasNext()) { String s = (String) iterator.next(); Element element_RecentUrl = new Element(ELEMENT_RECENT_URL); element_RecentUrl.setText(s); element.addContent(element_RecentUrl); } return element; } private static void parseElement_ProcessorWizardConfig(Element element, ProcessorWizardConfig processorWizardConfig) { { final Element e = element.getChild("source-url"); if (e != null) processorWizardConfig.url = e.getTextTrim(); } { final Element e = element.getChild("content-descriptor-encoding"); if (e != null) processorWizardConfig.contentDescriptor = new ContentDescriptor(e.getTextTrim()); } { final Element e = element.getChild("track-configs"); if (e != null) { final List trackConfigElements = e.getChildren("track-config"); final TrackConfig[] trackConfigs = new TrackConfig[trackConfigElements.size()]; for (int j = 0; j < trackConfigElements.size(); ++j) { trackConfigs[j] = new TrackConfig(); final Element e2 = (Element) trackConfigElements.get(j); // enabled { final Element e3 = e2.getChild("enabled"); if (e3 != null) { trackConfigs[j].enabled = e3.getTextTrim().equals("" + true); } } // format: { final Element e3 = e2.getChild("format"); if (e3 != null) { try { trackConfigs[j].format = SerializationUtils.deserialize(e3.getTextTrim()); } catch (IOException e1) { logger.warning("Unable to deserialize format: " + e3.getTextTrim() + ": " + e1); } catch (ClassNotFoundException e1) { logger.warning("Unable to deserialize format: " + e3.getTextTrim() + ": " + e1); } } } } } } { final Element e = element.getChild("dest-url"); if (e != null) { final String destUrlStr = e.getTextTrim(); processorWizardConfig.destUrl = destUrlStr;// try// {// // rtpTransmitWizardConfig.destUrl = RTPUrlParser.parse(destUrlStr);// } catch (RTPUrlParserException ex)// {// logger.warning("Unable to parse RTP URL: " + destUrlStr + ": " + e);// // } } } } private void parseElement_RTPTransmitWizardConfig(Element element) { rtpTransmitWizardConfig = new RTPTransmitWizardConfig(); if (element != null) parseElement_ProcessorWizardConfig(element, rtpTransmitWizardConfig); } private void parseElement_TranscodeWizardConfig(Element element) { transcodeWizardConfig = new TranscodeWizardConfig(); if (element != null) parseElement_ProcessorWizardConfig(element, transcodeWizardConfig); } private static Element buildElement_ProcessorWizardConfig(ProcessorWizardConfig processorWizardConfig, String elementStr) { Element element = new Element(elementStr); if (processorWizardConfig.url != null) { final Element e = new Element("source-url"); e.setText(processorWizardConfig.url); element.addContent(e); } if (processorWizardConfig.contentDescriptor != null) { final Element e = new Element("content-descriptor-encoding"); e.setText(processorWizardConfig.contentDescriptor.getEncoding()); element.addContent(e); } if (processorWizardConfig.trackConfigs != null) { final Element e = new Element("track-configs"); element.addContent(e); for (int i = 0; i < processorWizardConfig.trackConfigs.length; ++i) { final TrackConfig trackConfig = processorWizardConfig.trackConfigs[i]; final Element e2 = new Element("track-config"); e.addContent(e2); // enabled: { final Element e3 = new Element("enabled"); e2.addContent(e3); e3.setText("" + trackConfig.enabled); } // format: if (trackConfig.format != null) { final Element e3 = new Element("format-serialized"); try { e3.setText(SerializationUtils.serialize(trackConfig.format)); e2.addContent(e3); } catch (IOException e1) { logger.warning("Unable to serialize format: " + trackConfig.format + ": " + e); } } } } if (processorWizardConfig.destUrl != null) { final Element e = new Element("dest-url"); e.setText(processorWizardConfig.destUrl.toString()); element.addContent(e); } return element; } private Element buildElement_RTPTransmitWizardConfig() { return buildElement_ProcessorWizardConfig(rtpTransmitWizardConfig, ELEMENT_RTP_TRANSMIT_WIZARD_CONFIG); } private Element buildElement_TranscodeWizardConfig() { return buildElement_ProcessorWizardConfig(transcodeWizardConfig, ELEMENT_TRANSCODE_WIZARD_CONFIG); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -