Package org.apache.felix.upnp.tester.gui

Source Code of org.apache.felix.upnp.tester.gui.SubscriptionPanel

/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  The ASF licenses this file
* to you 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.apache.felix.upnp.tester.gui;



import java.awt.event.ActionEvent;
import java.util.Dictionary;
import java.util.Enumeration;

import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JTree;
import javax.swing.SwingUtilities;

import org.osgi.service.upnp.UPnPDevice;
import org.osgi.service.upnp.UPnPEventListener;
import org.osgi.service.upnp.UPnPService;

import org.apache.felix.upnp.tester.Activator;
import org.apache.felix.upnp.tester.Mediator;
import org.apache.felix.upnp.tester.UPnPSubscriber;
import org.apache.felix.upnp.tester.discovery.DeviceNode;
/*
* @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
*/
public class SubscriptionPanel extends JPanel implements UPnPEventListener{
  public SubscriptionPanel() {
    super();
    buildButtonPanel();
  }

  private void buildButtonPanel(){
    JButton subscribeBtn = new JButton("Subscribe");
    subscribeBtn.addActionListener(new AbstractAction(){
      public void actionPerformed(ActionEvent e) {
          //System.out.println("subscribing ...");
          doSubscribe();
      }
    });   
    JButton unsubscribeBtn = new JButton("Unsubscribe");
    unsubscribeBtn.addActionListener(new AbstractAction(){
      public void actionPerformed(ActionEvent e) {
          //System.out.println("unsubscribing ...");
          doUnsubscribe();
        }
    });   
      add(subscribeBtn);
      add(unsubscribeBtn);
  }
 
  UPnPSubscriber subscriber;
  public void doSubscribe()
  {
    if (subscriber == null)
        subscriber = new UPnPSubscriber(Activator.context,this);
   
    UPnPDeviceTreeNode selectedNode = getSelectedNode();
    String serviceId = getServiceId(selectedNode);
    String parentId = getDeviceId(selectedNode);
    LogPanel.log("subscribing ... "+ "ServiceId ["+serviceId+"] of DeviceId ["+parentId +"]");
    subscriber.subscribe(parentId,serviceId);
    setSubscribedVariableOf(selectedNode);
  }
 
  public void doUnsubscribe(){
    UPnPDeviceTreeNode selectedNode = getSelectedNode();
    String serviceId = getServiceId(selectedNode);
    String parentId = getDeviceId(selectedNode);
    LogPanel.log("unsubscribing ... "+ "ServiceId ["+serviceId+"] of DeviceId ["+parentId +"]");
    subscriber.unsubscribe(parentId,serviceId);
    setUnubscribedVariableOf(selectedNode);
    }
 
  public void notifyUPnPEvent(final String deviceId, final String serviceId, final Dictionary events) {
        // UPnP base driver notify are synchronous !!
    Runnable doShowMsg = new Runnable() {
          public void run() {
      LogPanel.log("notifyUPnPEvent::[DeviceID "+deviceId+"][ServiceId "+serviceId+"]");
      Enumeration elements = events.keys();
      while (elements.hasMoreElements()){
          Object key = elements.nextElement();
          Object value = events.get(key);
          LogPanel.log("["+key+"][value "+value+"]");
      }
          }
        };
        SwingUtilities.invokeLater(doShowMsg);
   
  }
 
  private void setSubscribedVariableOf(UPnPDeviceTreeNode selectedNode){
      Enumeration list = selectedNode.children();
      while (list.hasMoreElements()){
          UPnPDeviceTreeNode node =  (UPnPDeviceTreeNode) list.nextElement();
          if (node.category == UPnPDeviceTreeNode.EVENTED_STATE)
              node.category = UPnPDeviceTreeNode.SUBSCRIBED_STATE;
      }
      JTree tree = Mediator.getUPnPDeviceTree();
      tree.validate();
      tree.repaint();
  }
 
  private void setUnubscribedVariableOf(UPnPDeviceTreeNode selectedNode){
      Enumeration list = selectedNode.children();
      while (list.hasMoreElements()){
          UPnPDeviceTreeNode node =  (UPnPDeviceTreeNode) list.nextElement();
          if (node.category == UPnPDeviceTreeNode.SUBSCRIBED_STATE)
              node.category = UPnPDeviceTreeNode.EVENTED_STATE;
      }
      JTree tree = Mediator.getUPnPDeviceTree();
      tree.validate();
      tree.repaint();
  }
 
  private  UPnPDeviceTreeNode getSelectedNode(){
    JTree tree = Mediator.getUPnPDeviceTree();
    UPnPDeviceTreeNode selectedNode = (UPnPDeviceTreeNode)tree.getLastSelectedPathComponent();
      return selectedNode;
  }
  private  String getServiceId (UPnPDeviceTreeNode selectedNode){
    Object userObj = selectedNode.getUserObject();
      String serviceId = ((UPnPService) userObj).getId();
      return serviceId;
  }
  private String getDeviceId (UPnPDeviceTreeNode selectedNode){
       UPnPDeviceTreeNode parent = (UPnPDeviceTreeNode)selectedNode.getParent();
       DeviceNode node =(DeviceNode)parent.getUserObject();
       String parentId = (String) node.getReference().getProperty(UPnPDevice.ID);
      return parentId;
  }
 
 
 
}

TOP

Related Classes of org.apache.felix.upnp.tester.gui.SubscriptionPanel

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.