--- /dev/null
+package tim.prune.threedee;
+
+import javax.swing.JFrame;
+
+/**
+ * Factory class for getting a Window
+ */
+public abstract class WindowFactory
+{
+ private static Java3DWindow _window = null;
+
+ /**
+ * Get a Window object
+ * @param inFrame parent frame
+ * @return object if available, otherwise null
+ */
+ public static ThreeDWindow getWindow(JFrame inFrame)
+ {
+ if (isJava3dEnabled())
+ {
+ if (_window == null) {
+ _window = new Java3DWindow(inFrame);
+ }
+ else {
+ _window.dispose();
+ }
+ return _window;
+ }
+ return null;
+ }
+
+
+ /**
+ * @return true if 3d capability is installed
+ */
+ public static boolean isJava3dEnabled()
+ {
+ boolean has3d = false;
+ try
+ {
+ Class<?> universeClass = Class.forName("com.sun.j3d.utils.universe.SimpleUniverse");
+ has3d = (universeClass != null);
+ }
+ catch (ClassNotFoundException e)
+ {
+ // no java3d classes available
+ }
+ catch (NoClassDefFoundError nfe)
+ {
+ // no java3d classes available
+ }
+ catch (UnsatisfiedLinkError ule)
+ {
+ // java3d classes found but no native components
+ }
+ return has3d;
+ }
+
+}