2026-08-25 14:47:05 -04:00
|
|
|
package org.homebrew;
|
|
|
|
|
|
|
|
|
|
import java.awt.BorderLayout;
|
|
|
|
|
import javax.tv.xlet.Xlet;
|
|
|
|
|
import javax.tv.xlet.XletContext;
|
|
|
|
|
import javax.tv.xlet.XletStateChangeException;
|
|
|
|
|
import org.havi.ui.HScene;
|
|
|
|
|
import org.havi.ui.HSceneFactory;
|
|
|
|
|
|
|
|
|
|
public class MyXlet extends Thread implements Xlet {
|
|
|
|
|
private HScene scene;
|
|
|
|
|
private AdjustmentsMenu menu;
|
|
|
|
|
private boolean running;
|
|
|
|
|
|
|
|
|
|
public void initXlet(XletContext context) throws XletStateChangeException {
|
|
|
|
|
menu = new AdjustmentsMenu();
|
|
|
|
|
menu.setSize(1280, 720);
|
|
|
|
|
|
|
|
|
|
scene = HSceneFactory.getInstance().getDefaultHScene();
|
|
|
|
|
scene.add(menu, BorderLayout.CENTER);
|
|
|
|
|
scene.addKeyListener(menu);
|
|
|
|
|
scene.validate();
|
|
|
|
|
scene.repaint();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void startXlet() throws XletStateChangeException {
|
|
|
|
|
running = true;
|
|
|
|
|
menu.setVisible(true);
|
|
|
|
|
scene.setVisible(true);
|
|
|
|
|
menu.requestFocus();
|
|
|
|
|
scene.requestFocus();
|
2026-08-25 16:25:42 -04:00
|
|
|
// Start the feature immediately so VLC always has a live playlist behind
|
|
|
|
|
// the menu (avoids the background->playlist transition it botches).
|
|
|
|
|
menu.startPlayback();
|
2026-08-25 14:47:05 -04:00
|
|
|
start();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void pauseXlet() {
|
|
|
|
|
if (menu != null) {
|
|
|
|
|
menu.setVisible(false);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void destroyXlet(boolean unconditional) {
|
|
|
|
|
running = false;
|
|
|
|
|
interrupt();
|
|
|
|
|
|
|
|
|
|
if (scene != null && menu != null) {
|
|
|
|
|
menu.setVisible(false);
|
|
|
|
|
scene.remove(menu);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
scene = null;
|
|
|
|
|
menu = null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void run() {
|
|
|
|
|
while (running) {
|
|
|
|
|
try {
|
|
|
|
|
Thread.sleep(1000);
|
|
|
|
|
} catch (InterruptedException e) {
|
|
|
|
|
running = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|