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

📄 .#ui.java.1.8.2.2

📁 国外的j2me播放器软件
💻 2
📖 第 1 页 / 共 3 页
字号:
        if (d.getCurrent() == mua) {
            LOG.debug("Current displayable is MUA");
            d.setCurrent(mua.getPrevDisplayable());
        } else {
            LOG.debug("Current displayable is " + d.getCurrent());
        }

        LOG.debug("updateMediaRendererMenu finished");
        */
    }

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

        public void run() {
            try {
                mua = new MenuUpdateAlert(
                    "Updating media renderers",
                    (CancelAction)this,
                    this);
                mua.start();

                renderers = new MediaRenderer();
                renderers.updateMediaRendererList();
                LOG.debug("Starting to enum MR");
                for(Enumeration e = renderers.getMediaRenderers();
                    e.hasMoreElements(); ) 
                {   
                    MediaRenderer mr = (MediaRenderer)e.nextElement();
                    meRenderers.addChild(new MenuElement(mr.getFriendlyName()));
                    LOG.debug("MR Name: " + mr.getFriendlyName());
                }
            } catch (/*IO*/Exception e) {
                LOG.fatal(
                    "IOException occured while updating media server 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 (renderers != null) {
                renderers.cancel();
            } 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 == meServers) {
            //setCurrentMediaServer();
            return MENUACTION_REPAINT;
        } else if (me == meRenderers) {
            //setCurrentMediaRenderer();
            return MENUACTION_REPAINT;
*/            
        } 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 == 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 {
                MediaServer ms = new MediaServer();
                currentMS = ms.getMediaServer(meServers.getCurrentIndex());
            
                LOG.debug(
                    "Selected server: " + currentMS.getFriendlyName());
                
                ContentDirectoryService cds = 
                    currentMS.getContentDirectoryService();

                MediaContent[] mc = cds.browseContentContainer(
                    0, 
                    ContentDirectoryService.REQUEST_ALL);

                if (mc == null || mc.length == 0) {
                    LOG.debug("mc=0/null - Returning nothing!");
                    return MENUACTION_DO_NOTHING;
                }
                
                for(int i = 0; i < mc.length; i++) {
                    meBrowse.addChild(
                        new MediaContentMenuElement(
                            cds, 
                            mc[i]));
                }

                return MENUACTION_DISPLAY_CHILDREN;
            } catch (IOException ioe) {
                LOG.fatal("IOException while getting the current server");
                LOG.fatal(ioe);
            }
        }
        
        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(MenuElement me) {
        if (me == meSetupBack) {
            return MENUACTION_DO_NOTHING;
/*
        } else if (me == meServers) {
            //setCurrentMediaServer();
            return MENUACTION_REPAINT;
        } else if (me == meRenderers) {
            //setCurrentMediaRenderer();
            return MENUACTION_REPAINT;
*/
        } 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());
        }

        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(MenuElement me) {
        if (me == meSetupBack) {
            return MENUACTION_DISPLAY_GRANDPARENT;
        } 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 == meServers) {
            if (meServers.getCurrentChild() == meServersRefresh) {
                LOG.debug("Refreshing server menu");
                try {
                    updateMediaServerMenu();
                } catch (IOException ioe) {
                    System.out.println("IOException caught while updating MS list");

⌨️ 快捷键说明

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