Search in sources :

Example 1 with JLazyMenu

use of org.twak.utils.ui.JLazyMenu in project chordatlas by twak.

the class TweedFrame method buildUI.

public JComponent buildUI() {
    JPanel out = new JPanel(new BorderLayout());
    JMenuBar menuBar = new JMenuBar();
    frame.setJMenuBar(menuBar);
    // Build the first menu.
    JMenu menu = new JMenu("File");
    menuBar.add(menu);
    JMenuItem save = new JMenuItem("save", KeyEvent.VK_S);
    save.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK));
    menu.add(save);
    save.addActionListener(new java.awt.event.ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            if (TweedSettings.folder == null) {
                new SimpleFileChooser(frame) {

                    @Override
                    public void heresTheFile(File f) throws Throwable {
                        TweedSettings.folder = f;
                        TweedSettings.save(false);
                    }
                };
            } else
                TweedSettings.save(false);
        }
    });
    JMenuItem load = new JMenuItem("open...", KeyEvent.VK_O);
    load.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK));
    menu.add(load);
    load.addActionListener(new java.awt.event.ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            new SimpleFileChooser(frame, false, "select a tweed.xml", Tweed.DATA == null ? null : new File(Tweed.DATA), TWEED_XML) {

                @Override
                public void heresTheFile(File f) throws Throwable {
                    TweedSettings.load(f);
                }
            };
        }
    });
    JMenuItem recent = new JLazyMenu("open recent") {

        @Override
        public List<Runnable> getEntries() {
            List<Runnable> out = new ArrayList();
            for (File r : TweedSettings.recentFiles.f) {
                out.add(new Runnable() {

                    @Override
                    public void run() {
                        if (!r.exists())
                            JOptionPane.showMessageDialog(frame, "Location " + r.getName() + "not found (is it still there?)");
                        else
                            TweedSettings.load(r);
                    }

                    @Override
                    public String toString() {
                        return r.getName();
                    }
                });
            }
            return out;
        }
    };
    menu.add(recent);
    JMenuItem neu = new JMenuItem("new...", KeyEvent.VK_N);
    neu.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.CTRL_MASK));
    menu.add(neu);
    neu.addActionListener(new java.awt.event.ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            new SimpleFileChooser(frame, false, "select a file in the root of the workspace") {

                @Override
                public void heresTheFile(File f) throws Throwable {
                    TweedSettings.folder = f.getParentFile();
                    if (new File(TweedSettings.folder, TWEED_XML).exists()) {
                        JOptionPane.showMessageDialog(frame, TWEED_XML + " already exists at this location, pick another (or delete...)");
                        return;
                    }
                    TweedSettings.load(TweedSettings.folder);
                }
            };
        }
    });
    // JMenuItem remove = new JMenuItem( "delete layer", KeyEvent.VK_MINUS );
    // remove.setAccelerator( KeyStroke.getKeyStroke( KeyEvent.VK_MINUS, ActionEvent.CTRL_MASK ) );
    // menu.add( remove );
    // remove.addActionListener( new java.awt.event.ActionListener() {
    // @Override
    // public void actionPerformed( ActionEvent e ) {
    // if ( selectedGen != null )
    // removeGen( selectedGen );
    // };
    // } );
    JMenuItem resetCam = new JMenuItem("reset view", KeyEvent.VK_R);
    resetCam.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R, ActionEvent.CTRL_MASK));
    menu.add(resetCam);
    resetCam.addActionListener(new java.awt.event.ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            tweed.resetCamera();
        }
    });
    JMenuItem settings = new JMenuItem("settings...", KeyEvent.VK_R);
    settings.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E, ActionEvent.CTRL_MASK));
    menu.add(settings);
    settings.addActionListener(new java.awt.event.ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            new Auto(TweedSettings.settings).frame();
        }
    });
    JMenuItem resetBG = new JMenuItem("reset background", KeyEvent.VK_MINUS);
    resetBG.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_MINUS, ActionEvent.CTRL_MASK));
    menu.add(resetBG);
    resetBG.addActionListener(new java.awt.event.ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            tweed.enqueue(new Runnable() {

                @Override
                public void run() {
                    TweedFrame.this.tweed.clearBackground();
                }
            });
        }
    });
    JMenuItem obj = new JMenuItem("export obj...", KeyEvent.VK_E);
    obj.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E, ActionEvent.CTRL_MASK));
    menu.add(obj);
    obj.addActionListener(new java.awt.event.ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            ObjDump dump = new ObjDump();
            for (Gen g : genList) if (g.visible && g instanceof IDumpObjs)
                ((IDumpObjs) g).dumpObj(dump);
            new SimpleFileChooser(frame, true, "save all as obj", new File(Tweed.SCRATCH, "all.obj"), "obj") {

                @Override
                public void heresTheFile(File f) throws Throwable {
                    dump.dump(f);
                }
            };
        }
    });
    layerList = new JPanel(new ListDownLayout());
    JPanel layers = new JPanel();
    layers.setLayout(new BorderLayout());
    layers.add(new JLabel("layers:"), BorderLayout.NORTH);
    JScrollPane listScroll = new JScrollPane(layerList);
    listScroll.getVerticalScrollBar().setUnitIncrement(50);
    listScroll.setPreferredSize(new Dimension(200, 300));
    layers.add(listScroll, BorderLayout.CENTER);
    JPanel addRemoveLayer = new JPanel();
    {
        addRemoveLayer.setLayout(new GridLayout(1, 2));
        layers.add(addRemoveLayer, BorderLayout.SOUTH);
        JButton addLayer = new JButton("+");
        addLayer.addMouseListener(new MouseAdapter() {

            @Override
            public void mousePressed(MouseEvent e) {
                addLayer(e);
            }
        });
        JButton removeLayer = new JButton("-");
        removeLayer.addActionListener(e -> removeGen(selectedGen));
        addRemoveLayer.add(addLayer);
        addRemoveLayer.add(removeLayer);
    }
    JPanel options = new JPanel(new BorderLayout());
    {
        options.add(new JLabel("options:"), BorderLayout.NORTH);
        options.add(genUI, BorderLayout.CENTER);
    }
    JSplitPane pane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, layers, options);
    out.add(pane, BorderLayout.CENTER);
    JPanel toolPanel = new JPanel(new ListRightLayout());
    tweed.addUI(toolPanel);
    coordLabel = new JLabel("");
    coordLabel.setHorizontalAlignment(SwingConstants.CENTER);
    worldLabel = new JLabel("");
    worldLabel.setHorizontalAlignment(SwingConstants.CENTER);
    crsLabel = new JLabel("none");
    crsLabel.setHorizontalAlignment(SwingConstants.CENTER);
    out.add(toolPanel, BorderLayout.NORTH);
    JPanel coords = new JPanel(new ListDownLayout());
    coords.add(worldLabel);
    coords.add(coordLabel);
    coords.add(crsLabel);
    out.add(coords, BorderLayout.SOUTH);
    out.setPreferredSize(new Dimension(300, frame.getHeight()));
    return out;
}
Also used : UIManager(javax.swing.UIManager) MiniGen(org.twak.tweed.gen.MiniGen) JLazyMenu(org.twak.utils.ui.JLazyMenu) ListRightLayout(org.twak.utils.ui.ListRightLayout) MiniTransform(org.twak.readTrace.MiniTransform) Node(com.jme3.scene.Node) MouseAdapter(java.awt.event.MouseAdapter) BorderLayout(java.awt.BorderLayout) JFrame(javax.swing.JFrame) JMenuBar(javax.swing.JMenuBar) KeyStroke(javax.swing.KeyStroke) AppSettings(com.jme3.system.AppSettings) ToolTipManager(javax.swing.ToolTipManager) ListDownLayout(org.twak.utils.ui.ListDownLayout) Auto(org.twak.utils.ui.auto.Auto) JMenu(javax.swing.JMenu) HalfMesh2(org.twak.utils.geom.HalfMesh2) KeyEvent(java.awt.event.KeyEvent) WindowAdapter(java.awt.event.WindowAdapter) Canvas(java.awt.Canvas) Component(java.awt.Component) Collectors(java.util.stream.Collectors) WindowEvent(java.awt.event.WindowEvent) Executors(java.util.concurrent.Executors) Dimension(java.awt.Dimension) List(java.util.List) PlanesGen(org.twak.tweed.gen.PlanesGen) GISGen(org.twak.tweed.gen.GISGen) JPanel(javax.swing.JPanel) Gen(org.twak.tweed.gen.Gen) JSplitPane(javax.swing.JSplitPane) JmeCanvasContext(com.jme3.system.JmeCanvasContext) MeshGen(org.twak.tweed.gen.MeshGen) SwingConstants(javax.swing.SwingConstants) Vector3d(javax.vecmath.Vector3d) WindowManager(org.twak.utils.ui.WindowManager) ArrayList(java.util.ArrayList) GridLayout(java.awt.GridLayout) JMenuItem(javax.swing.JMenuItem) ObjGen(org.twak.tweed.gen.ObjGen) SimpleFileChooser(org.twak.utils.ui.SimpleFileChooser) ScheduledExecutorService(java.util.concurrent.ScheduledExecutorService) PaintThing(org.twak.utils.PaintThing) JComponent(javax.swing.JComponent) FlowLayout(java.awt.FlowLayout) JButton(javax.swing.JButton) JPopupMenu(javax.swing.JPopupMenu) JOptionPane(javax.swing.JOptionPane) ActionEvent(java.awt.event.ActionEvent) MouseEvent(java.awt.event.MouseEvent) File(java.io.File) TimeUnit(java.util.concurrent.TimeUnit) JScrollPane(javax.swing.JScrollPane) WeakListener(org.twak.utils.WeakListener) JLabel(javax.swing.JLabel) ObjDump(org.twak.utils.geom.ObjDump) SuperMeshPainter(org.twak.viewTrace.SuperMeshPainter) SimplePopup2(org.twak.utils.ui.SimplePopup2) PanoGen(org.twak.tweed.gen.PanoGen) JPanel(javax.swing.JPanel) ListDownLayout(org.twak.utils.ui.ListDownLayout) ActionEvent(java.awt.event.ActionEvent) JLazyMenu(org.twak.utils.ui.JLazyMenu) ArrayList(java.util.ArrayList) JButton(javax.swing.JButton) SimpleFileChooser(org.twak.utils.ui.SimpleFileChooser) Auto(org.twak.utils.ui.auto.Auto) GridLayout(java.awt.GridLayout) BorderLayout(java.awt.BorderLayout) ObjDump(org.twak.utils.geom.ObjDump) JMenuItem(javax.swing.JMenuItem) JScrollPane(javax.swing.JScrollPane) MouseEvent(java.awt.event.MouseEvent) ListRightLayout(org.twak.utils.ui.ListRightLayout) MouseAdapter(java.awt.event.MouseAdapter) JLabel(javax.swing.JLabel) Dimension(java.awt.Dimension) MiniGen(org.twak.tweed.gen.MiniGen) PlanesGen(org.twak.tweed.gen.PlanesGen) GISGen(org.twak.tweed.gen.GISGen) Gen(org.twak.tweed.gen.Gen) MeshGen(org.twak.tweed.gen.MeshGen) ObjGen(org.twak.tweed.gen.ObjGen) PanoGen(org.twak.tweed.gen.PanoGen) JSplitPane(javax.swing.JSplitPane) File(java.io.File) JMenuBar(javax.swing.JMenuBar) JMenu(javax.swing.JMenu)

Aggregations

Node (com.jme3.scene.Node)1 AppSettings (com.jme3.system.AppSettings)1 JmeCanvasContext (com.jme3.system.JmeCanvasContext)1 BorderLayout (java.awt.BorderLayout)1 Canvas (java.awt.Canvas)1 Component (java.awt.Component)1 Dimension (java.awt.Dimension)1 FlowLayout (java.awt.FlowLayout)1 GridLayout (java.awt.GridLayout)1 ActionEvent (java.awt.event.ActionEvent)1 KeyEvent (java.awt.event.KeyEvent)1 MouseAdapter (java.awt.event.MouseAdapter)1 MouseEvent (java.awt.event.MouseEvent)1 WindowAdapter (java.awt.event.WindowAdapter)1 WindowEvent (java.awt.event.WindowEvent)1 File (java.io.File)1 ArrayList (java.util.ArrayList)1 List (java.util.List)1 Executors (java.util.concurrent.Executors)1 ScheduledExecutorService (java.util.concurrent.ScheduledExecutorService)1