/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package automenta.spacenet.run.old.swing; import automenta.spacenet.run.old.story.SwingWindow; import automenta.spacenet.run.old.ArdorPanel; import automenta.spacenet.run.old.bio.DemoCell; import automenta.spacenet.run.control.DemoDragRectSketching; import automenta.spacenet.run.control.DemoDraggable; import automenta.spacenet.run.control.DemoFirstPerson; import automenta.spacenet.run.geom.DemoBox; import automenta.spacenet.run.geom.DemoLine3D; import automenta.spacenet.run.geom.DemoRectAspect; import automenta.spacenet.run.geom.layout.DemoRowCol; import automenta.spacenet.run.geom.text.DemoChar2D; import automenta.spacenet.run.geom.text.DemoChar3D; import automenta.spacenet.run.geom.text.DemoText1; import automenta.spacenet.run.geom.text.DemoText3D; import automenta.spacenet.run.old.graph.neural.DemoBrainz; import automenta.spacenet.run.old.graph.neural.DemoHyperassociativeMap; import automenta.spacenet.run.old.graph.neural.DemoNeuroph; import automenta.spacenet.run.old.physics.DemoAnimatedConvexHullBlob; import automenta.spacenet.run.old.physics.DemoFallingObjects; import automenta.spacenet.run.old.physics.DemoShootingBoxes; import automenta.spacenet.run.old.bio.DemoSnake; import automenta.spacenet.run.old.surface.DemoBitmapSurface; import automenta.spacenet.run.widget.DemoButton; import automenta.spacenet.run.widget.DemoDesktop; import automenta.spacenet.run.widget.DemoMetaBox; import automenta.spacenet.run.widget.DemoPanel; import automenta.spacenet.run.widget.DemoSpinner; import automenta.spacenet.run.widget.DemoTextPanel; import automenta.spacenet.run.widget.DemoWindow; import automenta.spacenet.space.geom.ProcessBox; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Collection; import java.util.LinkedList; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JPanel; import javax.swing.JScrollPane; /** * * @author seh */ public class DemoDemos { private final JPanel xp; private ArdorPanel jp; public DemoDemos() { super(); List<Class<? extends ProcessBox>> demoClasses = new LinkedList(); initDemos(demoClasses); xp = new JPanel(new BorderLayout()); xp.add(newMenuPanel(demoClasses), BorderLayout.WEST); new SwingWindow(xp, 800, 600, true); } public static void main(String[] args) { new DemoDemos(); } protected void initDemos(List<Class<? extends ProcessBox>> c) { c.add(DemoButton.class); c.add(DemoNeuroph.class); c.add(DemoFirstPerson.class); c.add(DemoDraggable.class); c.add(DemoDragRectSketching.class); c.add(DemoLine3D.class); c.add(DemoBox.class); c.add(DemoRectAspect.class); c.add(DemoRowCol.class); c.add(DemoChar2D.class); c.add(DemoChar3D.class); c.add(DemoText1.class); c.add(DemoText3D.class); c.add(DemoBrainz.class); c.add(DemoHyperassociativeMap.class); c.add(DemoCell.class); c.add(DemoSnake.class); c.add(DemoShootingBoxes.class); c.add(DemoFallingObjects.class); c.add(DemoAnimatedConvexHullBlob.class); c.add(DemoBitmapSurface.class); c.add(DemoDesktop.class); c.add(DemoMetaBox.class); c.add(DemoSpinner.class); c.add(DemoPanel.class); c.add(DemoWindow.class); c.add(DemoTextPanel.class); } protected JScrollPane newMenuPanel(Collection<Class<? extends ProcessBox>> demoClasses) { JPanel m = new JPanel(); m.setLayout(new BoxLayout(m, BoxLayout.PAGE_AXIS)); for (Class<? extends ProcessBox> c : demoClasses) { addButton(m, c); } return new JScrollPane(m); } protected void addButton(JPanel j, final Class<? extends ProcessBox> c) { JButton jb = new JButton(c.getSimpleName()); j.add(jb); jb.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { showDemo(c); } }); } protected void showDemo(Class<? extends ProcessBox> c) { try { if (jp!=null) { xp.remove(jp); } jp = new ArdorPanel(c.newInstance()); xp.add(jp, BorderLayout.CENTER); xp.updateUI(); } catch (InstantiationException ex) { Logger.getLogger(DemoDemos.class.getName()).log(Level.SEVERE, null, ex); } catch (IllegalAccessException ex) { Logger.getLogger(DemoDemos.class.getName()).log(Level.SEVERE, null, ex); } } }