package org.andrewberman.ui;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import org.andrewberman.ui.menu.MenuTimer;
import org.andrewberman.ui.tools.ToolManager;
import processing.core.PApplet;
import processing.core.PFont;
public class UIContext
{
private final PApplet applet;
private EventManager eventManager;
private FocusManager focusManager;
private FontLoader fontLoader;
private ShortcutManager shortcutManager;
private MenuTimer menuTimer;
private ToolManager toolManager;
private ThreadLocal threadLocalId;
private int myContextID = 0;
private ThreadGroup threadGroup = null;
private static int nextContextID = 0;
private boolean inited;
public UIContext(PApplet p)
{
this.applet = p;
}
public void init()
{
// getThreadGroup();
// nextContextID++;
System.out.println("Initting "+this);
System.out.println(Thread.currentThread().getName()+" "+Thread.currentThread().getThreadGroup().getName());
eventManager = new EventManager(this);
focusManager = new FocusManager(this);
fontLoader = new FontLoader(this.applet);
shortcutManager = new ShortcutManager(this);
menuTimer = new MenuTimer();
menuTimer.start();
toolManager = new ToolManager(this);
inited = true;
}
public ThreadGroup getThreadGroup()
{
if (threadGroup == null || threadGroup.isDestroyed())
{
threadGroup = new ThreadGroup("UIContextThreadGroup" + nextContextID);
myContextID = nextContextID;
nextContextID++;
}
return threadGroup;
}
public Thread createThread(Runnable r)
{
return new Thread(getThreadGroup(),r,"UIContextThread"+myContextID);
}
public PApplet getApplet()
{
return applet;
}
public PApplet p()
{
return applet;
}
public MenuTimer getMenuTimer()
{
return menuTimer;
}
public EventManager getEventManager()
{
return eventManager;
}
public FocusManager getFocusManager()
{
return focusManager;
}
public ShortcutManager getShortcutManager()
{
return shortcutManager;
}
public ToolManager getToolManager()
{
return toolManager;
}
public ShortcutManager shortcuts()
{
return getShortcutManager();
}
public ToolManager tools()
{
return getToolManager();
}
public EventManager event()
{
return getEventManager();
}
public FocusManager focus()
{
return getFocusManager();
}
public PFont getPFont()
{
return fontLoader.getPFont();
}
public void destroy()
{
this.eventManager = null;
this.fontLoader = null;
this.focusManager = null;
this.menuTimer.stop();
this.toolManager = null;
this.shortcutManager = null;
}
public boolean isInited()
{
return inited;
}
}