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

📄 .#ui.java.1.8.2.3

📁 国外的j2me播放器软件
💻 3
📖 第 1 页 / 共 3 页
字号:
        MediaServer servers = null;
        MenuUpdateAlert mua = null;
       
        public void run() {
            try {
                mua = new MenuUpdateAlert(
                    "Updating media servers",
                    (CancelAction)this,
                    this);
                mua.start();
				
				oneppSettings.updateMediaServerList();
                LOG.debug("Starting to enum MS");
				MediaServer[] msList = oneppSettings.getMediaServerList();
				System.out.println("msList.length: " + msList.length);
                for(int i = 0; i < msList.length; i++) {
                    LOG.debug("MS Name: " + msList[i].getFriendlyName());
					meServers.addChild(new MenuElement(msList[i].getFriendlyName()));
                }
            } catch (/*IO*/Exception e) {
                LOG.fatal(
                    "Exception occured while updating media server menu");
                LOG.fatal(e);
				e.printStackTrace();
            } finally {
                LOG.debug("Finished updating media server menu");
                servers = null;
                meServers.addChild(meServersRefresh);
                
                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());
                }
            }
			oneppMenu.repaint();
        }

        public void cancel() throws IOException {
            if (oneppSettings.isUpdatingMediaServerList()) {
                oneppSettings.cancelUpdateMediaServerList();
            } else {
                throw new IllegalStateException("Currently no discovery going on");
            }
        }
    }
	
	
	public void favouriteMediaRendererUpdate(String locationUrl, String UDN) {
		
		LOG.debug("updateMediaRendererMenu");
        meRenderers.removeAllChildren();
        
        FavouriteMediaRendererUpdate fmrupdateThread = new FavouriteMediaRendererUpdate();
        fmrupdateThread.setLocationUrl(locationUrl);
		fmrupdateThread.setUDN(UDN);
		fmrupdateThread.start();
		
	}
	
	private class FavouriteMediaRendererUpdate extends Thread implements CancelAction {
		
		String locationUrl = "";
		String UDN = "";
		
		public void setLocationUrl(String locationUrl) {
			this.locationUrl = locationUrl;
		}
		
		public void setUDN(String UDN) {
			this.UDN = UDN;
		}
		
		public void run () {
			MenuUpdateAlert mua = null;
			
			try {
				oneppSettings.addMediaRendererByLocationUrl(locationUrl);
			}
			catch (/*IO*/Exception e) {
                LOG.fatal(
                    "Exception occured while adding mediarenderer by device description");
                LOG.fatal(e);
				e.printStackTrace();
            }
			
			
            try {
                
				MediaRenderer[] mrList = oneppSettings.getMediaRendererList();
				System.out.println("mrList.length: " + mrList.length);
                
				if (mrList == null || mrList.length == 0) {
					mua = new MenuUpdateAlert(
                    "Finding favourite media renderers",
                    (CancelAction)this,
                    this);
					mua.start();
					oneppSettings.addMediaRendererByUDN(UDN);
				}
				
				for(int i = 0; i < mrList.length; i++) {
                    LOG.debug("MR Name: " + mrList[i].getFriendlyName());
					meRenderers.addChild(new MenuElement(mrList[i].getFriendlyName()));
                }
            } catch (/*IO*/Exception e) {
                LOG.fatal(
                    "Exception occured while updating (favourite) media renderer menu");
                LOG.fatal(e);
				e.printStackTrace();
            } finally {
                LOG.debug("Finished updating media renderer menu");
                meRenderers.addChild(meRenderersRefresh);
                
                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());
                }
            }
			oneppMenu.repaint();
		}
		
		public void cancel() throws IOException {
			
			if (oneppSettings.isUpdatingMediaServerList()) {
                oneppSettings.cancelUpdateMediaServerList();
            } else {
                throw new IllegalStateException("Currently not discovery going on");
            }
			
		}
		
	}
	
	
        
    private void updateMediaRendererMenu() throws IOException, InterruptedException {
        LOG.debug("updateMediaRendererMenu");
        meRenderers.removeAllChildren();

        MediaRendererMenuUpdate mrupdateThread = new MediaRendererMenuUpdate();
        
        mrupdateThread.start();
        LOG.debug("updateMediaRendererMenu waiting for thread to finish");
    }

    private class MediaRendererMenuUpdate extends Thread implements CancelAction {
        MenuUpdateAlert mua = null;
		MediaRenderer renderers = null;

        public void run() {
            try {
                mua = new MenuUpdateAlert(
                    "Updating media renderers",
                    (CancelAction)this,
                    this);
                mua.start();
				
                oneppSettings.updateMediaRendererList();
                LOG.debug("Starting to enum MR");
				MediaRenderer[] mrList = oneppSettings.getMediaRendererList();
				System.out.println("mrList.length: " + mrList.length);
                for(int i = 0; i < mrList.length; i++) {   
					meRenderers.addChild(new MenuElement(mrList[i].getFriendlyName()));
					LOG.debug("MR Name: " + mrList[i].getFriendlyName());
                }
            } catch (/*IO*/Exception e) {
                LOG.fatal(
                    "Exception occured while updating media renderer menu");
                LOG.fatal(e);
            } finally {
                LOG.debug("Update of media renderer menu finished, one way or the other way");
                renderers = null;
                meRenderers.addChild(meRenderersRefresh);
                
                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 {
            if (oneppSettings.isUpdatingMediaRendererList()) {
                oneppSettings.cancelUpdateMediaRendererList();
            } else {
                throw new IllegalStateException("Currently no discovery going on");
            }
        }
    }

    private class MenuUpdateAlert extends Alert implements Runnable, CommandListener {
        private final Logger LOGMUA = Logger.getLogger("MUA");
        Displayable prevDisp;
        Gauge progress;
        Command stop;
        CancelAction action;
        Thread owner;
        
        public MenuUpdateAlert(String title, CancelAction cancelAction, Thread ownerThread) {
            super(title);

            try {
                action = cancelAction;
                owner = ownerThread;

                progress = new Gauge(
                    null, 
                    false, 
                    Gauge.INDEFINITE, 
                    Gauge.CONTINUOUS_RUNNING);

                stop = new Command("Stop", Command.STOP, 1);
                
                addCommand(stop);
                setCommandListener(this);

                setString("Please wait...");
                setTimeout(Alert.FOREVER); // XXX Or something more 'sophisticated'?
                setType(AlertType.INFO);
                setIndicator(progress);
                setImage(Image.createImage("/aml_noalpha.png"));
            } catch (IOException ioe) {
                LOGMUA.debug("Probably error loading aml_noalpha.png for MenuUpdateAlert");
                LOGMUA.debug(ioe);
            }
        }

        public void start() {
            LOG.debug("Starting a new thread for this MUA");
            Thread t = new Thread(this);
            t.start();
            LOG.debug("Thread should now be running....");
        }   

        public void run() {
            LOG.debug("Running thread. Switching current display to: " + toString());
            Display d = Display.getDisplay(m);
            prevDisp = d.getCurrent();
            d.setCurrent(this);
        }

        public void commandAction(Command c, Displayable d) {
            if (c == stop) {
                try {
                    setString("Stop was pressed. Cancel disco");
                    LOGMUA.debug("Stop was pressed. Cancel disco");
                    action.cancel();
                    owner.interrupt();
                } catch (IllegalStateException ise) {
                    setString(getString() + "\nIllegalStateException while stopping discovery.");
                    LOGMUA.fatal("IllegalStateException while stopping discovery");
                    LOGMUA.fatal(ise);
                } catch (IOException ioe) {
                    setString(getString() + "\nIOException while stopping disco");
                    LOGMUA.fatal("IOException while stopping the discovery");
                    LOGMUA.fatal(ioe);

                    // TODO What to do next?
                    // 1) Change text of this alert to something like 
                    // 'could not stop disco'
                    // 2) Do the removeCommand anyways...
                } finally {
                    setString(getString() + "\nCleaning up...");
                    removeCommand(stop);
                    setCommandListener(null);
                    addCommand(Alert.DISMISS_COMMAND);
                    setTimeout(1);
                    setString(getString() + "\nWhat happends now?!?!?");
                    setString(getString() + "\nPrevDisp = " + prevDisp);
                    //disp.setCurrent(LOG.getLogCanvas());
                    Display disp = Display.getDisplay(m);
                    disp.setCurrent(prevDisp);
                }
            } else {
                LOGMUA.debug("Unknown command pressed");
                setString(getString() + "\r\nUnknown command pressed");
            }
        }

        public Displayable getPrevDisplayable() {
            return prevDisp;
        }

        public String toString() {
            return getTitle() + "@" + hashCode();
        }
    }
        
    /**
     * 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(MenuElement 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;
            }
			
            try {
                currentMS = oneppSettings.getCurrentMediaServer();

⌨️ 快捷键说明

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