/* * Copyright (c) 2005-2006 Substance Kirill Grouchnikov. All Rights Reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * o Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * o Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * o Neither the name of Substance Kirill Grouchnikov nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package test.check; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; import javax.swing.AbstractListModel; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JCheckBoxMenuItem; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JList; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JRadioButton; import javax.swing.JRadioButtonMenuItem; import javax.swing.JScrollPane; import javax.swing.JSplitPane; import javax.swing.JTabbedPane; import javax.swing.JTextField; import javax.swing.JTree; import javax.swing.ListSelectionModel; import javax.swing.SwingUtilities; import javax.swing.UIManager; import javax.swing.border.EmptyBorder; import javax.swing.plaf.metal.MetalLookAndFeel; import javax.swing.tree.DefaultMutableTreeNode; import org.pushingpixels.lafwidget.LafWidget; import org.pushingpixels.lafwidget.tabbed.DefaultTabPreviewPainter; import org.pushingpixels.lafwidget.tabbed.TabOverviewDialog; import org.pushingpixels.lafwidget.text.PasswordStrengthChecker; import org.pushingpixels.lafwidget.utils.LafConstants.PasswordStrength; import org.pushingpixels.lafwidget.utils.LafConstants.TabOverviewKind; public class SampleFrame extends JFrame { protected JButton prev; private static class MyListModel extends AbstractListModel { protected List model; public MyListModel() { super(); this.model = new ArrayList(); this.model.add("Ohio State [Buckeyes]"); this.model.add("Auburn [Tigers]"); this.model.add("University of South California [Trojans]"); this.model.add("West Virginia [Mountaineers]"); this.model.add("Florida [Gators]"); this.model.add("Michigan [Wolverines]"); this.model.add("Texas [Longhorns]"); this.model.add("Louisville [Cardinals]"); this.model.add("Louisiana State University [Tigers]"); this.model.add("Georgia [Bulldogs]"); this.model.add("Virginia Tech [Hokies]"); this.model.add("Notre Dame [Fighting Irish]"); this.model.add("Iowa [Hawkeyes]"); this.model.add("Oregon [Ducks]"); this.model.add("Tennessee [Volunteers]"); this.model.add("Oklahoma [Sooners]"); this.model.add("Texas Christian University [Horned Frogs]"); } public Object getElementAt(int index) { return this.model.get(index); } public int getSize() { return this.model.size(); } } public SampleFrame() { super("Test application"); this.setLayout(new BorderLayout()); final JTabbedPane tabbed = new JTabbedPane(); this.add(tabbed, BorderLayout.CENTER); tabbed.putClientProperty(LafWidget.TABBED_PANE_PREVIEW_PAINTER, new DefaultTabPreviewPainter() { @Override public TabOverviewKind getOverviewKind(JTabbedPane tabPane) { return TabOverviewKind.ROUND_CAROUSEL; } }); JPanel transPanel = new JPanel(); transPanel.setLayout(new BorderLayout()); JPanel buttons = new JPanel(new FlowLayout(FlowLayout.CENTER, 1, 1)); transPanel.add(buttons, BorderLayout.SOUTH); // for the first movie, change the following line to // use the BorderLayout final JPanel mainPanel = new JPanel(new FlowLayout()); final JPanel mainPanel2 = new JPanel(new FlowLayout()); final JPanel centerPanel = new JPanel(new GridLayout(2, 1)); centerPanel.add(mainPanel); centerPanel.add(mainPanel2); final JButton b1 = new JButton("button 1"); final JButton b2 = new JButton("button 2"); final JButton b3 = new JButton("button 3"); final JButton b4 = new JButton("button 4"); final JButton b5 = new JButton("button 5"); final JButton b6 = new JButton("button 6"); final JButton add1 = new JButton("add"); final JButton add2 = new JButton("add"); add1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { SwingUtilities.invokeLater(new Runnable() { public void run() { mainPanel.add(b1); mainPanel.add(b2); mainPanel.add(b3); mainPanel.revalidate(); add1.setVisible(false); } }); } }); add2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { SwingUtilities.invokeLater(new Runnable() { public void run() { mainPanel2.add(b4); mainPanel2.add(b5); mainPanel2.add(b6); mainPanel2.revalidate(); add2.setVisible(false); } }); } }); mainPanel.add(add1); mainPanel2.add(add2); final JCheckBox cb = new JCheckBox("border layout"); cb.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (cb.isSelected()) { mainPanel.setLayout(new BorderLayout()); mainPanel2.setLayout(new BorderLayout()); } else { mainPanel.setLayout(new FlowLayout()); mainPanel2.setLayout(new FlowLayout()); } mainPanel.revalidate(); mainPanel.doLayout(); mainPanel.repaint(); mainPanel2.revalidate(); } }); // buttons.add(cb); transPanel.add(centerPanel, BorderLayout.CENTER); final JCheckBox cb1 = new JCheckBox("1"); cb1.setSelected(true); final JCheckBox cb2 = new JCheckBox("2"); cb2.setSelected(true); final JCheckBox cb3 = new JCheckBox("3"); cb3.setSelected(true); final JCheckBox cb4 = new JCheckBox("4"); cb4.setSelected(true); final JCheckBox cb5 = new JCheckBox("5"); cb5.setSelected(true); final JCheckBox cb6 = new JCheckBox("6"); cb6.setSelected(true); buttons.add(cb1); buttons.add(cb2); buttons.add(cb3); buttons.add(cb4); buttons.add(cb5); buttons.add(cb6); JButton showHide = new JButton("Toggle"); showHide.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { b1.setVisible(cb1.isSelected()); b2.setVisible(cb2.isSelected()); b3.setVisible(cb3.isSelected()); b4.setVisible(cb4.isSelected()); b5.setVisible(cb5.isSelected()); b6.setVisible(cb6.isSelected()); mainPanel.doLayout(); mainPanel2.doLayout(); } }); buttons.add(showHide); tabbed.addTab("Regular", transPanel); JPanel samplePanel = new JPanel(new BorderLayout()); TwoColumnPanel stuff = new TwoColumnPanel(); stuff.setVerticalSpacing(4); stuff.setHorizontalSpacing(2); JCheckBox cbes = new JCheckBox("Check box"); cbes.setSelected(true); JPasswordField pf1 = new JPasswordField("aa"); JRadioButton rb1 = new JRadioButton("Radio button"); rb1.setSelected(true); JPasswordField pf2 = new JPasswordField("aaaaaaaaa"); PasswordStrengthChecker psc = new PasswordStrengthChecker() { public PasswordStrength getStrength(char[] password) { if (password == null) return PasswordStrength.WEAK; int length = password.length; if (length < 3) return PasswordStrength.WEAK; if (length < 6) return PasswordStrength.MEDIUM; return PasswordStrength.STRONG; } public String getDescription(PasswordStrength strength) { if (strength == PasswordStrength.WEAK) return "<html>This password is <b>way</b> too weak</html>"; if (strength == PasswordStrength.MEDIUM) return "<html>Come on, you can do<br> a little better than that</html>"; if (strength == PasswordStrength.STRONG) return "OK"; return null; } }; pf1.putClientProperty(LafWidget.PASSWORD_STRENGTH_CHECKER, psc); pf2.putClientProperty(LafWidget.PASSWORD_STRENGTH_CHECKER, psc); stuff.addRow(cbes, rb1); stuff.addRow(pf1, pf2); JComboBox combo = new JComboBox(new Object[] { "item1" }); combo.setSelectedIndex(0); combo.setEditable(true); JTextField text = new JTextField("Text field"); text.setEditable(false); stuff.addRow(combo, text); stuff.setPreferredSize(new Dimension(stuff.getPreferredSize().width, stuff.getPreferredSize().height + 100)); stuff.setBorder(null); stuff.setOpaque(false); JScrollPane scroll = new JScrollPane(stuff, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); scroll.setBorder(new EmptyBorder(0, 0, 0, 0)); scroll.setOpaque(false); scroll.getViewport().setOpaque(false); samplePanel.add(scroll, BorderLayout.CENTER); JPanel buttons2 = new JPanel(new FlowLayout(FlowLayout.RIGHT)); prev = new JButton("prev"); JButton cancel = new JButton("cancel"); cancel.setEnabled(false); JButton ok = new JButton("OK"); ok.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { TabOverviewDialog.getOverviewDialog(tabbed).setVisible(true); } }); buttons2.add(prev); buttons2.add(cancel); buttons2.add(ok); samplePanel.add(buttons2, BorderLayout.SOUTH); tabbed.addTab("Sample", samplePanel); JPanel samplePanel2 = new JPanel(new BorderLayout()); DefaultMutableTreeNode root = new DefaultMutableTreeNode("root"); DefaultMutableTreeNode son1 = new DefaultMutableTreeNode("son1"); DefaultMutableTreeNode son2 = new DefaultMutableTreeNode("son2"); DefaultMutableTreeNode son3 = new DefaultMutableTreeNode("son3"); DefaultMutableTreeNode gson11 = new DefaultMutableTreeNode("gson11"); DefaultMutableTreeNode gson12 = new DefaultMutableTreeNode("gson12"); DefaultMutableTreeNode gson21 = new DefaultMutableTreeNode("gson21"); DefaultMutableTreeNode gson22 = new DefaultMutableTreeNode("gson22"); DefaultMutableTreeNode gson31 = new DefaultMutableTreeNode("gson31"); DefaultMutableTreeNode gson32 = new DefaultMutableTreeNode("gson32"); DefaultMutableTreeNode ggson111 = new DefaultMutableTreeNode("ggson111"); DefaultMutableTreeNode ggson112 = new DefaultMutableTreeNode("ggson112"); DefaultMutableTreeNode ggson113 = new DefaultMutableTreeNode("ggson113"); gson11.add(ggson111); gson11.add(ggson112); gson11.add(ggson113); son1.add(gson11); son1.add(gson12); son2.add(gson21); son2.add(gson22); son3.add(gson31); son3.add(gson32); root.add(son1); root.add(son2); root.add(son3); JTree tree = new JTree(root); tree.setBorder(new EmptyBorder(0, 0, 0, 0)); JScrollPane jspTree = new JScrollPane(tree); // TransitionLayoutManager.getInstance().track(jspTree, true); // jspTree.setBorder(new EmptyBorder(0, 0, 0, 0)); JList list = new JList(new MyListModel()); list.setBorder(new EmptyBorder(0, 0, 0, 0)); list.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); JScrollPane jspList = new JScrollPane(list); // jspList.setBorder(new EmptyBorder(0, 0, 0, 0)); JSplitPane split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, jspTree, jspList); split.setDividerLocation(130); samplePanel2.add(split, BorderLayout.CENTER); tabbed.add("Renderers", samplePanel2); tabbed.setSelectedComponent(samplePanel); tabbed.setOpaque(false); tabbed.setBorder(new EmptyBorder(0, 3, 3, 3)); this.setResizable(true); this.getRootPane().setDefaultButton(ok); JMenuBar jmb = new JMenuBar(); JMenu menu = new JMenu("menu"); menu.add(new JMenuItem("test item 1")); menu.add(new JCheckBoxMenuItem("test item 2")); menu.add(new JRadioButtonMenuItem("test item 3")); menu.addSeparator(); menu.add(new JMenuItem("test menu item 4")); menu.add(new JCheckBoxMenuItem("test menu item 5")); menu.add(new JRadioButtonMenuItem("test menu item 6")); jmb.add(menu); JMenu menu2 = new JMenu("big"); for (int i = 0; i < 35; i++) menu2.add(new JMenuItem("menu item " + i)); jmb.add(menu2); this.setJMenuBar(jmb); } public static void main(String[] args) throws Exception { UIManager.setLookAndFeel(new MetalLookAndFeel()); SwingUtilities.invokeLater(() -> { JFrame.setDefaultLookAndFeelDecorated(true); SampleFrame sf = new SampleFrame(); sf.setSize(300, 200); sf.setLocationRelativeTo(null); sf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); sf.setVisible(true); }); // h(sf, 0); } }