Package net.sf.fmj.ui.wizards

Source Code of net.sf.fmj.ui.wizards.RTPDestPanelDescriptor

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;
    }   
           
}
TOP

Related Classes of net.sf.fmj.ui.wizards.RTPDestPanelDescriptor

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.