📄 rtpdestpaneldescriptor.java
字号:
package net.sf.fmj.ui.wizards;import java.util.logging.Logger;import javax.media.control.TrackControl;import net.sf.fmj.media.datasink.rtp.ParsedRTPUrl;import net.sf.fmj.media.datasink.rtp.ParsedRTPUrlElement;import net.sf.fmj.media.datasink.rtp.RTPUrlParser;import net.sf.fmj.media.datasink.rtp.RTPUrlParserException;import net.sf.fmj.ui.objeditor.ComponentValidationException;import net.sf.fmj.ui.objeditor.ComponentValidator;import net.sf.fmj.ui.utils.ErrorDialog;import net.sf.fmj.ui.wizard.WizardPanelDescriptor;import net.sf.fmj.utility.LoggerSingleton;/** * * @author Ken Larson * */public class RTPDestPanelDescriptor extends WizardPanelDescriptor { private static final Logger logger = LoggerSingleton.logger; public static final String IDENTIFIER = RTPDestPanelDescriptor.class.getName(); private final RTPDestPanel panel; private final RTPTransmitWizardConfig config; private final RTPTransmitWizardResult result; public RTPDestPanelDescriptor(final RTPTransmitWizardConfig config, RTPTransmitWizardResult result) { panel = new RTPDestPanel(); setPanelDescriptorIdentifier(IDENTIFIER); setPanelComponent(panel); this.config = config; this.result = result; } public Object getNextPanelDescriptor() { return FINISH; } public Object getBackPanelDescriptor() { return ContentAndTrackFormatPanelDescriptor.IDENTIFIER; } public RTPDestPanel getRTPDestPanel() { return (RTPDestPanel) getPanelComponent(); } public boolean aboutToDisplayPanel(Object prevId) { if (prevId == getBackPanelDescriptor()) { // TODO: remove old tracks // forward transition int numEnabled = 0; TrackControl[] trackControls = result.processor.getTrackControls(); if (trackControls.length == 0) { showError("No tracks available"); return false; } for (int i = 0; i < trackControls.length; ++i) { if (!trackControls[i].isEnabled()) continue; ++numEnabled; } if (numEnabled < 1) { showError("At least 1 track must be enabled"); return false; } for (int i = 0; i < trackControls.length; ++i) { if (!trackControls[i].isEnabled()) continue; boolean audio = true; // TODO getRTPDestPanel().addTrack(i, audio); if (config.destUrl != null) { try { ParsedRTPUrl parsedRTPUrl = RTPUrlParser.parse(config.destUrl); // TODO: check type and index getRTPDestPanel().getTextSessionAddress(i).setText(parsedRTPUrl.elements[i].host); getRTPDestPanel().getTextPort(i).setText("" + parsedRTPUrl.elements[i].port); getRTPDestPanel().getComboTTL(i).setSelectedItem("" + parsedRTPUrl.elements[i].ttl); } catch (RTPUrlParserException ex) { logger.warning("Unable to parse RTP URL: " + config.destUrl + ": " + ex); } } } }// panel3.setProgressValue(0);// panel3.setProgressText("Connecting to Server...");//// getWizard().setNextFinishButtonEnabled(false);// getWizard().setBackButtonEnabled(false); return true; } public boolean aboutToHidePanel(Object idOfNext) { if (idOfNext == getNextPanelDescriptor()) { // finish transition ParsedRTPUrl destUrl = null; TrackControl[] trackControls = result.processor.getTrackControls(); for (int i = 0; i < trackControls.length; ++i) { if (!trackControls[i].isEnabled()) continue; boolean audio = true; // TODO ComponentValidator v = new ComponentValidator(); try { v.validateNotEmpty(getRTPDestPanel().getTextSessionAddress(i), getRTPDestPanel().getLabelSessionAddress()); v.validateNotEmpty(getRTPDestPanel().getTextPort(i), getRTPDestPanel().getLabelPort()); v.validateInteger(getRTPDestPanel().getTextPort(i), getRTPDestPanel().getLabelPort()); v.validateNotEmpty(getRTPDestPanel().getComboTTL(i), getRTPDestPanel().getLabelTTL()); v.validateInteger(getRTPDestPanel().getComboTTL(i), getRTPDestPanel().getLabelTTL()); } catch (ComponentValidationException e) { ErrorDialog.showError(getRTPDestPanel(), e.getMessage()); return false; } final String sessionAddress = getRTPDestPanel().getTextSessionAddress(i).getText(); final int port = Integer.parseInt(getRTPDestPanel().getTextPort(i).getText()); final int ttl = Integer.parseInt((String) getRTPDestPanel().getComboTTL(i).getSelectedItem()); ParsedRTPUrlElement e = new ParsedRTPUrlElement(); e.host = sessionAddress; e.port = port; e.ttl = ttl; e.type = audio ? ParsedRTPUrlElement.AUDIO : ParsedRTPUrlElement.VIDEO; logger.fine("ParsedRTPUrlElement: " + e); destUrl = new ParsedRTPUrl(e); // TODO: other tracks } try { config.destUrl = destUrl.toString(); result.step4_setDestUrlAndStart(config); } catch (WizardStepException e) { showError(e); return false; } } return true; } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -