⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ui.java

📁 国外的j2me播放器软件
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                oneppSettings.updateMediaRendererList();
                LOG.debug("Starting to enum MR");
				for(Enumeration e = oneppSettings.getMediaRendererList();
                    e.hasMoreElements(); )
                {
                    MediaRenderer mr = (MediaRenderer)e.nextElement();
                    LOG.debug("MR Name: " + mr.getFriendlyName());
					meRenderers.addChild(
                        new MediaRendererMenuElement(
                            mr,
                            UI.getInstance()));
                }
            } catch (Exception e) {
                System.out.println("Exception occured while updating MR menu");
                e.printStackTrace();
            } finally {
                LOG.debug("Update of media renderer menu finished, one way or the other way");
                renderers = null;
                meRenderers.addChild(meRenderersRefresh);
                
                if (showAlert) {
                    Display d = Display.getDisplay(m);
                    if (d.getCurrent() == mua) {
                        LOG.debug("Current displayable is MUA");
                        d.setCurrent(mua.getPrevDisplayable());
                    } else {
                        LOG.debug("Current displayable is " + d.getCurrent());
                        LOG.debug("MUA is " + mua);
                    }
                }
            }
        }

        public void cancel() throws IOException {
            oneppSettings.cancelUpdateMediaRendererList();
        }
    }   
        
    /**
     * User navigates 'into' or 'right'.
     *
     * @param me MenuElement which is marked/selected by the user, and where 
     *           the action occurs. Notice that for MenuElementComboShift 
     *           the parent of a sub-MenuElement will be me, and not the 
     *           selected sub-element.
     */
    public int menuNavigateInto(MenuElementBase me) {
        if (me == meSetupBack) {
            return MENUACTION_DISPLAY_GRANDPARENT;
        } else if (me == meSetupRepeat) {
            oneppSettings.setRepeatSetting(!oneppSettings.getRepeatSetting());
            LOG.debug(
                "Repeat setting: " + oneppSettings.getRepeatSetting());
        } else if (me == meSetupShuffle) {
            oneppSettings.setShuffleSetting(!oneppSettings.getShuffleSetting());
            LOG.debug(
                "Shuffle setting: " + oneppSettings.getShuffleSetting());
    	} else if (me == meSetupHostingPort) {
    	    oneppSettings.toggleHostingPortSetting();
                
    	    LOG.debug(
                    "Hosting port setting: " + oneppSettings.getHostingPortSetting());
        }  else if (me == meBrowse) {
            LOG.debug("Browse (into)");
    		
            // TODO Need to detect which media server is current
            LOG.debug("" + meServers.getCurrentIndex() + " " + 
                      meServers.getCurrentChild());
    				  
            if (meServers.getCurrentChild() == meServersRefresh) {
                return MENUACTION_DO_NOTHING;
            }
    		
            currentMS = oneppSettings.getCurrentMediaServer();
        
            LOG.debug(
                "Selected server: " + currentMS.getFriendlyName());
    
            return MENUACTION_DISPLAY_CHILDREN;
        }
            
        return MENUACTION_DO_NOTHING;
    }

    /**
     * User navigates 'back' or 'left'.
     *
     * @param me MenuElement which is marked/selected by the user, and where 
     *           the action occurs. Notice that for MenuElementComboShift 
     *           the parent of a sub-MenuElement will be me, and not the 
     *           selected sub-element.
     */
    public int menuNavigateBack(MenuElementBase me) {
        if (me == meSetupBack) {
            return MENUACTION_DO_NOTHING;
        } else if (me == meSetupRepeat) {
            oneppSettings.setRepeatSetting(!oneppSettings.getRepeatSetting());
            System.out.println("Repeat setting: " + oneppSettings.getRepeatSetting());
        } else if (me == meSetupShuffle) {
            oneppSettings.setShuffleSetting(!oneppSettings.getShuffleSetting());
            System.out.println("Shuffle setting: " + oneppSettings.getShuffleSetting());
        } else if (me == meSetupHostingPort) {
            oneppSettings.toggleHostingPortSetting();
        }
	
	
        return MENUACTION_DO_NOTHING;
    }

    /**
     * User activates the marked MenuElement.
     *
     * @param me MenuElement which is marked/selected by the user, and where 
     *           the action occurs. Notice that for MenuElementComboShift 
     *           the parent of a sub-MenuElement will be me, and not the 
     *           selected sub-element.
     */
    public int menuAction(MenuElementBase me) {
        System.out.println("menuAction of UI\tme = " + me);

        int ret = MENUACTION_DO_NOTHING;

        if (me == meSetupBack) {
            ret = MENUACTION_DISPLAY_GRANDPARENT;
        } else if (me == meSetupRepeat) {
            oneppSettings.setRepeatSetting(!oneppSettings.getRepeatSetting());
            System.out.println(
                "Repeat setting: " + oneppSettings.getRepeatSetting());
            ret = MENUACTION_REPAINT;
        } else if (me == meSetupHostingPort) {
            if (oneppSettings.getHostingPortSetting() != -1) {
                // TODO Show some popup screen to input port number
            }
        } else if (me == meSetupShuffle) {
            oneppSettings.setShuffleSetting(!oneppSettings.getShuffleSetting());
            System.out.println(
                "Shuffle setting: " + oneppSettings.getShuffleSetting());
            ret = MENUACTION_REPAINT;
        } else if (me == meServersRefresh) {
            LOG.debug("Refreshing server menu");
            
            try {
                updateMediaServerMenu();
            } catch (IOException ioe) {
                System.out.println(
                    "IOException caught while updating MS list");
                ioe.printStackTrace();
            } catch (InterruptedException ie) {
                LOG.fatal("Interrupted while updating MS menu");
                LOG.fatal(ie);
            } finally {
                LOG.debug("Finished refreshing MS menu");
            }
            
            ret = MENUACTION_REPAINT;
        } else if (me instanceof MediaServerMenuElement) {
            System.out.println("MediaServerMenuElement action");
            setCurrentMediaServer();
            
            ret = MENUACTION_REPAINT;
            System.out.println("Updated current MS");
        } else if (me == meRenderersRefresh) {
            LOG.debug("Refreshing renderer menu");
            try {
                updateMediaRendererMenu();
            } catch (IOException ioe) {
                LOG.fatal("IOException caught while updating MS list");
                LOG.fatal(ioe);
            } catch (InterruptedException ie) {
                LOG.fatal("Interrupted while updating MS list");
                LOG.fatal(ie);
            } finally {
                LOG.debug("Finished refreshing MR menu");
            }

            ret = MENUACTION_REPAINT;
        } else if (me instanceof MediaRendererMenuElement) {
            setCurrentMediaRenderer();

            ret = MENUACTION_REPAINT;
        } else if (me == meExit) {
            m.quit();
        }
        
        return ret;
    }
	
    public void setCurrentMediaRenderer() {
        String udn = oneppSettings.currentMediaRendererUdn();
        String currentMediaRendererPrefix = "* ";
        
        if (udn != null) {
            for (Enumeration e = meRenderers.children.elements();
                 e.hasMoreElements();)
            {
                Object o = e.nextElement();
                
                if (!(o instanceof MediaRendererMenuElement)) {
                    continue;
                }
                
                MediaRendererMenuElement me = (MediaRendererMenuElement)o;
                if (me.udn().equals(udn) && 
                    me.name.startsWith(currentMediaRendererPrefix)) 
                {
                    me.name = me.name.substring(
                        currentMediaRendererPrefix.length());            
                    meRenderers.children.setElementAt(
                        me,
                        meRenderers.children.indexOf(me));
                    
                    break;
                }
            }
        }
        
        MediaRendererMenuElement me = (MediaRendererMenuElement)meRenderers.children.elementAt(
            meRenderers.getCurrentIndex());
        oneppSettings.setCurrentMediaRendererUdn(me.udn());
        me.name = currentMediaRendererPrefix + me.name;        
        meRenderers.children.setElementAt(
            me, 
            meRenderers.children.indexOf(me));
        LOG.debug("Name of new current media renderer: " + me.name);
    }
        
    public void setCurrentMediaServer() {
        String udn = oneppSettings.currentMediaServerUdn();
        String currentMediaServerPrefix = "* ";
        
        if (udn != null) {
            for (Enumeration e = meServers.children.elements();
                 e.hasMoreElements();)
            {
                Object o = e.nextElement();
                
                if (!(o instanceof MediaServerMenuElement)) {
                    continue;
                }

                MediaServerMenuElement me = (MediaServerMenuElement)o;
                if (me.udn().equals(udn) && 
                    me.name.startsWith(currentMediaServerPrefix)) 
                {
                    me.name = me.name.substring(
                        currentMediaServerPrefix.length());            
                    meServers.children.setElementAt(
                        me,
                        meServers.children.indexOf(me));
                }
            }
        }
        
        MediaServerMenuElement me = (MediaServerMenuElement)meServers.children.elementAt(
            meServers.getCurrentIndex());
        oneppSettings.setCurrentMediaServer(me.udn());
        meBrowse.setContentDirectoryService(
                oneppSettings.getCurrentMediaServer().getContentDirectoryService());            
        me.name = currentMediaServerPrefix + me.name;        
        meServers.children.setElementAt(
            me, 
            meServers.children.indexOf(me));        
        LOG.debug("Name of new current media server: " + me.name);
	}
	
	public void commandAction(Command c, Displayable d) {
        LOG.debug("UI::commandAction (" + c + ", " + d + ")");
        
		if (c == playCommand) {
            LOG.debug("Show playscreen");

            Display disp = Display.getDisplay(m);
            disp.setCurrent(ps);
		} else if (c == homeCommand) {
            oneppMenu.setCurrentContainer(rootMenuContainer);
		} else if (c == showLogCommand) {
            Display disp = Display.getDisplay(m);
            org.apache.log4j.LogCanvas lc = Logger.getLogCanvas();
            lc.setPreviousScreen(disp.getCurrent());
            disp.setCurrent(lc);
        } else {
            LOG.debug("Unknown command");
        }
    }
    
    public void playMediaTrack(MediaContent mc) {
        try {
            LOG.debug("Play media element: " + mc);
            MediaRenderer mr = Settings.getInstance().getCurrentMediaRenderer();
                
            AVTransportService avts = mr.getAVTransportService();
            avts.setAVTransportURI(mc);
            avts.play();

            PlayScreen ps = UI.getInstance().getPlayScreen();
            ps.setTitle(mc.getName());
            if (mc instanceof TrackInformation) {
                TrackInformation ti = (TrackInformation)mc;
                ps.setAlbum(ti.getAlbum());
                ps.setArtist(ti.getArtist());
            }
            
            ps.notifyPlay();
            // XXX Should also "tell" PlayScreen that it is in 'play' mode
            //     One possiblity:
            //     PS subscribes to the events by the current renderer, 
            //     and will therefore get all this information seamlessly by UPnP.
            //     Now it should work even if some other device chooses to change 
            //     the current URI.
        } catch (java.io.IOException ioe) {
            LOG.fatal("IOException while starting to play a  song...");
            LOG.fatal(ioe);
        } catch (Exception e) {
            LOG.fatal("Exception while starting to play");
            LOG.fatal(e);
        } finally {
            LOG.debug("Finished start to play :)");
        }
    }  
    
    private final class MediaServerMenuElement extends MenuElement {
        private MediaServer ms = null;
        
        public MediaServerMenuElement(MediaServer ms, MenuEventListener mel) {
            super(ms.getFriendlyName(), mel);
            
            this.ms = ms;
        }
        
        public String udn() {
            return ms.getDeviceUDN();
        }
    }
    
    private final class MediaRendererMenuElement extends MenuElement {
        private MediaRenderer mr = null;
        public MediaRendererMenuElement(MediaRenderer mr, MenuEventListener mel) {
            super(mr.getFriendlyName(), mel);
            
            this.mr = mr;
        }
        
        public String udn() {
            return mr.getDeviceUDN();
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -