Package org.apache.felix.upnp.tester

Source Code of org.apache.felix.upnp.tester.ControlPoint

/*
* 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;


import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.net.URL;

import javax.swing.AbstractAction;
import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JSplitPane;
import javax.swing.event.PopupMenuEvent;
import javax.swing.event.PopupMenuListener;

import org.osgi.framework.BundleException;

import org.apache.felix.upnp.tester.discovery.DriverProxy;
import org.apache.felix.upnp.tester.discovery.RootDeviceListener;
import org.apache.felix.upnp.tester.gui.LogPanel;
import org.apache.felix.upnp.tester.gui.PropertiesViewer;
import org.apache.felix.upnp.tester.gui.TreeViewer;
import org.apache.felix.upnp.tester.gui.Util;
/*
* @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
*/
public class ControlPoint implements PopupMenuListener {
  RootDeviceListener listener;
  TreeViewer viewer;
  PropertiesViewer properties;
  JFrame frame;
 
 
  public ControlPoint() {
    frame = new JFrame("Felix UPnPDevice Tester");
       try {
            URL eventIconUrl = Util.class.getResource("IMAGES/logo.gif");          
            ImageIcon icon=  new ImageIcon(eventIconUrl,"logo");
            frame.setIconImage(icon.getImage());
       }
        catch (Exception ex){
                System.out.println("Resource: IMAGES/logo.gif not found : " + ex.toString());
        }
    //frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       
    frame.addWindowListener(new WindowAdapter(){
      public void windowClosing(WindowEvent e){
        try {
          Activator.context.getBundle().stop();
        } catch (BundleException ex) {
          ex.printStackTrace();
        }
      }

    });      
    frame.setBounds(0,0,300,200);
       
       
        doMenuBar(frame);
    doControlPanel();
        Mediator.setControlPoint(this);
        Mediator.setMainFrame(frame);
    listener = new RootDeviceListener();
        Mediator.setRootDeviceListener(listener);
    listener.setDeviceNodeListener(viewer);
   
    frame.pack();
    frame.setVisible(true);
       
    DriverProxy driverProxy = new DriverProxy();
        Mediator.setDriverProxy(driverProxy);
       
    listener.activate();
  }
 
  public void close(){
    listener.deactive();
    frame.dispose();
        Mediator.getDriverProxy().close();          
  }
 
  private void doControlPanel(){
    JPanel panel = new JPanel(new BorderLayout());
    viewer = new TreeViewer();
    viewer.setPreferredSize(new Dimension(180,450));
    properties = new PropertiesViewer();
    Mediator.setPropertiesViewer(properties);
 
    JSplitPane treeSplitter = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,viewer,properties);
    JPanel logPanel = new LogPanel();
    logPanel.setPreferredSize(new Dimension(180,100));
    JSplitPane logSplitter = new JSplitPane(JSplitPane.VERTICAL_SPLIT,treeSplitter,logPanel);
    panel.add(logSplitter);
    frame.getContentPane().add(panel);
   
   
  }
 
      /////////////////////////// MENU /////////////////////////////
    JMenu searchMenu,loggerMenu,cyberMenu; 
    public void doMenuBar(JFrame frame) {

        JMenuBar menuBar = new JMenuBar();
       
        //////////////// FILE
        JMenu file_menu = new JMenu("File");
        file_menu.setMnemonic(KeyEvent.VK_F);

        searchMenu = new JMenu("Search");
        final String ALL_DEVICE = "ssdp:all";
        final String ROOT_DEVICE = "upnp:rootdevice";
        searchMenu.setMnemonic(KeyEvent.VK_L);
        searchMenu.setEnabled(false);
        AbstractAction searchAction = new AbstractAction(){
            public void actionPerformed(ActionEvent e) {
                DriverProxy controller = Mediator.getDriverProxy();
                if (e.getActionCommand().equals(ALL_DEVICE))
                    controller.doSearch(ALL_DEVICE);
                else if (e.getActionCommand().equals(ROOT_DEVICE))
                    controller.doSearch(ROOT_DEVICE);
            }
        };
       
        JMenuItem rootDeviceItem = new JMenuItem("Root Devices");
        rootDeviceItem.setMnemonic(KeyEvent.VK_R);
        rootDeviceItem.addActionListener(searchAction);
        rootDeviceItem.setActionCommand(ROOT_DEVICE);
        searchMenu.add(rootDeviceItem);
       
        JMenuItem allDeviceItem = new JMenuItem("All Devices");
        allDeviceItem .setMnemonic(KeyEvent.VK_A);
        allDeviceItem .addActionListener(searchAction);
        allDeviceItem .setActionCommand(ALL_DEVICE);
        searchMenu.add(allDeviceItem);
       
       
        JMenuItem checkIncompleteItem = new JMenuItem("Print Pending Devices");
        checkIncompleteItem.setMnemonic(KeyEvent.VK_I);
        checkIncompleteItem.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    Mediator.getRootDeviceListener().checkIncompleteDevice();
                }
            });
       
        JMenuItem checkErrataItem = new JMenuItem("Check Errata UPnPDevices");
        checkErrataItem.setMnemonic(KeyEvent.VK_E);
        checkErrataItem.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {                   
                    RootDeviceListener.checkErrataDevice();}
            });
       
       
        loggerMenu = new JMenu("Felix Logger");
        final String NO_LOGGING ="No Logging";
        final String ERROR ="Error";
        final String WARNING ="Warning";
        final String INFO ="Info";
        final String DEBUG ="Debug";

        loggerMenu.getPopupMenu().addPopupMenuListener(this);
        loggerMenu.setMnemonic(KeyEvent.VK_L);
        loggerMenu.setEnabled(false);
        AbstractAction loggerAction = new AbstractAction(){
            public void actionPerformed(ActionEvent e) {
                DriverProxy controller = Mediator.getDriverProxy();
                if (e.getActionCommand().equals(NO_LOGGING))
                    controller.setLogLevel(0);
                else if (e.getActionCommand().equals(ERROR))
                    controller.setLogLevel(1);
                else if (e.getActionCommand().equals(WARNING))
                    controller.setLogLevel(2);
                else if (e.getActionCommand().equals(INFO))
                    controller.setLogLevel(3);
                else if (e.getActionCommand().equals(DEBUG))
                    controller.setLogLevel(4);
            }
        };
      
        ButtonGroup group = new ButtonGroup();
       
        JRadioButtonMenuItem rbMenuItem = new JRadioButtonMenuItem(NO_LOGGING);
        rbMenuItem.setSelected(true);
        rbMenuItem.setMnemonic(KeyEvent.VK_N);
        rbMenuItem.setActionCommand(NO_LOGGING);
        rbMenuItem.addActionListener(loggerAction);
        group.add(rbMenuItem);
        loggerMenu.add(rbMenuItem);
        loggerMenu.addSeparator();
       
        rbMenuItem = new JRadioButtonMenuItem(ERROR);
        rbMenuItem.setMnemonic(KeyEvent.VK_E);
        rbMenuItem.setActionCommand(ERROR);
        rbMenuItem.addActionListener(loggerAction);
        group.add(rbMenuItem);
        loggerMenu.add(rbMenuItem);

        rbMenuItem = new JRadioButtonMenuItem(WARNING);
        rbMenuItem.setMnemonic(KeyEvent.VK_W);
        rbMenuItem.setActionCommand(WARNING);
        rbMenuItem.addActionListener(loggerAction);
        group.add(rbMenuItem);
        loggerMenu.add(rbMenuItem);
       
        rbMenuItem = new JRadioButtonMenuItem(INFO);
        rbMenuItem.setMnemonic(KeyEvent.VK_I);
        rbMenuItem.setActionCommand(INFO);
        rbMenuItem.addActionListener(loggerAction);
        group.add(rbMenuItem);
        loggerMenu.add(rbMenuItem);
       
        rbMenuItem = new JRadioButtonMenuItem(DEBUG);
        rbMenuItem.setMnemonic(KeyEvent.VK_D);
        rbMenuItem.setActionCommand(DEBUG);
        rbMenuItem.addActionListener(loggerAction);
        group.add(rbMenuItem);
        loggerMenu.add(rbMenuItem);

        final String ON ="On";
        final String OFF ="Off";
        cyberMenu = new JMenu("Cyber Debugger");
        cyberMenu.getPopupMenu().addPopupMenuListener(this);
        cyberMenu.setMnemonic(KeyEvent.VK_C);
        cyberMenu.setEnabled(false);
        AbstractAction cyberAction = new AbstractAction(){
            public void actionPerformed(ActionEvent e) {
                DriverProxy controller = Mediator.getDriverProxy();
                if (e.getActionCommand().equals(ON))
                    controller.setCyberDebug(true);
                else if (e.getActionCommand().equals(OFF))
                    controller.setCyberDebug(false);
            }
        };

      
        ButtonGroup cyberGroup = new ButtonGroup();
        rbMenuItem = new JRadioButtonMenuItem(ON);
        rbMenuItem.setSelected(true);
        rbMenuItem.setMnemonic(KeyEvent.VK_O);
        rbMenuItem.setActionCommand(ON);
        rbMenuItem.addActionListener(cyberAction);
        cyberGroup.add(rbMenuItem);
        cyberMenu.add(rbMenuItem);

        rbMenuItem = new JRadioButtonMenuItem(OFF);
        rbMenuItem.setMnemonic(KeyEvent.VK_F);
        rbMenuItem.setActionCommand(OFF);
        rbMenuItem.addActionListener(cyberAction);
        cyberGroup.add(rbMenuItem);
        cyberMenu.add(rbMenuItem);
       
        /*
        JMenuItem clearSubscriptionItem = new JMenuItem("Clear Subscriptions");
        clearSubscriptionItem.setMnemonic(KeyEvent.VK_S);
        clearSubscriptionItem.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
// to do
                    }
            });
        */
       
        JMenuItem exitItem = new JMenuItem("Exit");
        exitItem.setMnemonic(KeyEvent.VK_X);
        exitItem.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    try {
                        Activator.context.getBundle().stop();
                    }catch (Exception ex){
                        ex.printStackTrace();
                    }
                }
            });
       

        file_menu.add(searchMenu);
        file_menu.addSeparator();
        file_menu.add(loggerMenu);
        file_menu.add(cyberMenu);
        file_menu.addSeparator();
        file_menu.add(checkIncompleteItem);
        file_menu.add(checkErrataItem);
        //file_menu.addSeparator();
        //file_menu.add(clearSubscriptionItem);
        file_menu.addSeparator();
        file_menu.add(exitItem);

        menuBar.add(file_menu);                  
        frame.setJMenuBar(menuBar);

    }

    public void enableMenus(boolean driverAvailable,int logLevel,boolean cyberDebug) {
        searchMenu.setEnabled(driverAvailable);
        Component[] items = searchMenu.getPopupMenu().getComponents();
        for (int i=0;i < items.length;i++)
            items[i].setEnabled(driverAvailable);

        loggerMenu.setEnabled(driverAvailable);
        items = loggerMenu.getPopupMenu().getComponents();
        for (int i=0;i < items.length;i++)
            items[i].setEnabled(driverAvailable);
        if (driverAvailable){
                ((JRadioButtonMenuItem)items[logLevel>0?logLevel+1:0]).setSelected(true);
        }
        cyberMenu.setEnabled(driverAvailable);          
        items = cyberMenu.getPopupMenu().getComponents();
        for (int i=0;i < items.length;i++)
            items[i].setEnabled(driverAvailable);
        if (driverAvailable){
            if (cyberDebug)
                ((JRadioButtonMenuItem)items[0]).setSelected(true);
            else
                ((JRadioButtonMenuItem)items[1]).setSelected(true);
        }
   }

    public void popupMenuCanceled(PopupMenuEvent e) { }
    public void popupMenuWillBecomeInvisible(PopupMenuEvent e) { }

    public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
        JPopupMenu loggerPopup = loggerMenu.getPopupMenu();
        JPopupMenu cyberPopup = cyberMenu.getPopupMenu();
        if (e.getSource()==loggerPopup){
            int logLevel = Mediator.getDriverProxy().getLogLevel();
            Component[] items = loggerPopup.getComponents();
            ((JRadioButtonMenuItem)items[logLevel>0?logLevel+1:0]).setSelected(true);         
        }
        else if (e.getSource()==cyberPopup){
            boolean cyberDebug = Mediator.getDriverProxy().getCyberDebug();
            Component[] items = cyberPopup.getComponents();
            if (cyberDebug)
                ((JRadioButtonMenuItem)items[0]).setSelected(true);
            else
                ((JRadioButtonMenuItem)items[1]).setSelected(true);           
        }
      
       
    }



 
}
TOP

Related Classes of org.apache.felix.upnp.tester.ControlPoint

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.