📄 .#ui.java.1.8.2.2
字号:
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 + -