Search in sources :

Example 11 with ListDownLayout

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

the class Tweed method addUI.

public void addUI(JPanel panel) {
    panel.setLayout(new ListDownLayout());
    ButtonGroup bg = new ButtonGroup();
    panel.add(new JLabel("tools:"));
    for (Tool t : tools) {
        JToggleButton tb = new JToggleButton(t.getName());
        bg.add(tb);
        tb.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                Tweed.this.setTool(t);
            }
        });
        panel.add(tb);
    }
    ((JToggleButton) panel.getComponent(1)).setSelected(true);
}
Also used : ListDownLayout(org.twak.utils.ui.ListDownLayout) JToggleButton(javax.swing.JToggleButton) ActionListener(java.awt.event.ActionListener) ButtonGroup(javax.swing.ButtonGroup) ActionEvent(java.awt.event.ActionEvent) JLabel(javax.swing.JLabel) PlaneTool(org.twak.tweed.tools.PlaneTool) HandleTool(org.twak.tweed.tools.HandleTool) FacadeTool(org.twak.tweed.tools.FacadeTool) Tool(org.twak.tweed.tools.Tool) SelectTool(org.twak.tweed.tools.SelectTool) HouseTool(org.twak.tweed.tools.HouseTool)

Example 12 with ListDownLayout

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

the class MiniGen method getUI.

@Override
public JComponent getUI() {
    JPanel out = new JPanel(new ListDownLayout());
    JButton clear = new JButton("hide all");
    clear.addActionListener(new ActionListener() {

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

                public void run() {
                    calculate();
                }
            });
        }
    });
    JButton all = new JButton("load all");
    all.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            bounds.clear();
            bounds.add(new double[] { -Double.MAX_VALUE, Double.MAX_VALUE, -Double.MAX_VALUE, Double.MAX_VALUE });
            tweed.enqueue(new Runnable() {

                public void run() {
                    calculate();
                }
            });
        }
    });
    final JCheckBox renderLines = new JCheckBox("wireframe");
    renderLines.setSelected(this.renderLines);
    renderLines.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            tweed.enqueue(new Callable<Spatial>() {

                public Spatial call() throws Exception {
                    MiniGen.this.renderLines = renderLines.isSelected();
                    calculate();
                    return null;
                }
            });
        }
    });
    final JSlider renderTransparent = new JSlider(0, MAX, (int) (MAX * transparency));
    renderTransparent.addChangeListener(new ChangeListener() {

        @Override
        public void stateChanged(ChangeEvent e) {
            tweed.enqueue(new Callable<Spatial>() {

                public Spatial call() throws Exception {
                    MiniGen.this.transparency = (renderTransparent.getValue() / (float) MAX);
                    calculate();
                    return null;
                }
            });
        }
    });
    JButton align = new JButton("align tool");
    align.addActionListener(e -> tweed.setTool(new AlignTool(tweed)));
    out.add(all);
    out.add(clear);
    out.add(renderLines);
    out.add(renderTransparent);
    out.add(align);
    return out;
}
Also used : JPanel(javax.swing.JPanel) ListDownLayout(org.twak.utils.ui.ListDownLayout) ActionEvent(java.awt.event.ActionEvent) JButton(javax.swing.JButton) Callable(java.util.concurrent.Callable) JCheckBox(javax.swing.JCheckBox) ActionListener(java.awt.event.ActionListener) ChangeEvent(javax.swing.event.ChangeEvent) JSlider(javax.swing.JSlider) ChangeListener(javax.swing.event.ChangeListener) AlignTool(org.twak.tweed.tools.AlignTool)

Example 13 with ListDownLayout

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

the class ObjGen method getUI.

@Override
public JComponent getUI() {
    JPanel out = new JPanel(new ListDownLayout());
    final JCheckBox renderLines = new JCheckBox("wireframe");
    renderLines.setSelected(this.renderLines);
    renderLines.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            tweed.enqueue(new Callable<Spatial>() {

                public Spatial call() throws Exception {
                    ObjGen.this.renderLines = renderLines.isSelected();
                    calculate();
                    return null;
                }
            });
        }
    });
    final JSlider renderTransparent = new JSlider(0, MAX, (int) (MAX * transparency));
    renderTransparent.addChangeListener(new ChangeListener() {

        @Override
        public void stateChanged(ChangeEvent e) {
            tweed.enqueue(new Callable<Spatial>() {

                public Spatial call() throws Exception {
                    ObjGen.this.transparency = (renderTransparent.getValue() / (float) MAX);
                    calculate();
                    return null;
                }
            });
        }
    });
    out.add(renderLines);
    out.add(renderTransparent);
    return out;
}
Also used : JCheckBox(javax.swing.JCheckBox) JPanel(javax.swing.JPanel) ListDownLayout(org.twak.utils.ui.ListDownLayout) ActionListener(java.awt.event.ActionListener) ChangeEvent(javax.swing.event.ChangeEvent) ActionEvent(java.awt.event.ActionEvent) JSlider(javax.swing.JSlider) ChangeListener(javax.swing.event.ChangeListener) Callable(java.util.concurrent.Callable)

Example 14 with ListDownLayout

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

the class PanoGen method getUI.

@Override
public JComponent getUI() {
    ui.removeAll();
    ui.setLayout(new ListDownLayout());
    if (new File(Tweed.toWorkspace(folder), TO_DOWNLOAD).exists()) {
        JButton download = new JButton("download");
        download.addActionListener(e -> downloadPanos());
        ui.add(download);
    }
    JButton align = new JButton("facade tool");
    align.addActionListener(e -> tweed.setTool(new FacadeTool(tweed)));
    ui.add(align);
    JButton plane = new JButton("plane tool");
    plane.addActionListener(e -> tweed.setTool(new PlaneTool(tweed)));
    ui.add(plane);
    return ui;
}
Also used : ListDownLayout(org.twak.utils.ui.ListDownLayout) JButton(javax.swing.JButton) File(java.io.File) FacadeTool(org.twak.tweed.tools.FacadeTool) PlaneTool(org.twak.tweed.tools.PlaneTool)

Example 15 with ListDownLayout

use of org.twak.utils.ui.ListDownLayout 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

ListDownLayout (org.twak.utils.ui.ListDownLayout)15 JButton (javax.swing.JButton)12 ActionEvent (java.awt.event.ActionEvent)11 ActionListener (java.awt.event.ActionListener)10 JPanel (javax.swing.JPanel)10 JLabel (javax.swing.JLabel)7 File (java.io.File)4 JSlider (javax.swing.JSlider)4 ChangeEvent (javax.swing.event.ChangeEvent)4 ChangeListener (javax.swing.event.ChangeListener)4 Dimension (java.awt.Dimension)3 JCheckBox (javax.swing.JCheckBox)3 Vector3f (com.jme3.math.Vector3f)2 Node (com.jme3.scene.Node)2 BorderLayout (java.awt.BorderLayout)2 Color (java.awt.Color)2 WindowAdapter (java.awt.event.WindowAdapter)2 WindowEvent (java.awt.event.WindowEvent)2 BufferedImage (java.awt.image.BufferedImage)2 ArrayList (java.util.ArrayList)2