package com.explodingpixels.macwidgets; import com.explodingpixels.macwidgets.MacButtonFactory; import com.explodingpixels.macwidgets.MacIcons; import com.explodingpixels.macwidgets.MacUtils; import com.explodingpixels.macwidgets.MacWidgetFactory; import com.explodingpixels.macwidgets.SourceList; import com.explodingpixels.macwidgets.SourceListCategory; import com.explodingpixels.macwidgets.SourceListControlBar; import com.explodingpixels.macwidgets.SourceListItem; import com.explodingpixels.macwidgets.SourceListModel; import com.explodingpixels.macwidgets.UnifiedToolBar; import com.explodingpixels.widgets.PopupMenuCustomizerUsingStrings; import com.explodingpixels.widgets.WindowUtils; import javax.swing.AbstractButton; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JSplitPane; import javax.swing.JTextArea; import javax.swing.SwingUtilities; import org.junit.After; import org.junit.Before; import org.junit.Test; import java.awt.BorderLayout; import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class DEverythingTest { private UnifiedToolBar fUnifiedToolBar; private SourceList fSourceList; public void init(JFrame frame){ fUnifiedToolBar = createUnifiedToolBar(); fUnifiedToolBar.installWindowDraggerOnWindow(frame); JSplitPane splitPane = createSourceListAndMainArea(); frame.add(fUnifiedToolBar.getComponent(), BorderLayout.NORTH); frame.add(splitPane, BorderLayout.CENTER); } private UnifiedToolBar createUnifiedToolBar() { Icon blueGlobeIcon = new ImageIcon(DEverythingTest.class.getResource( "/com/explodingpixels/macwidgets/icons/DotMac.png")); Icon greyGlobeIcon = new ImageIcon(DEverythingTest.class.getResource( "/com/explodingpixels/macwidgets/icons/Network.png")); Icon preferences = new ImageIcon(DEverythingTest.class.getResource( "/com/explodingpixels/macwidgets/icons/PreferencesGeneral.png")); Icon gear = new ImageIcon(DEverythingTest.class.getResource( "/com/explodingpixels/macwidgets/icons/Advanced.png")); AbstractButton greyGlobeButton = MacButtonFactory.makeUnifiedToolBarButton( new JButton("Network", greyGlobeIcon)); greyGlobeButton.setEnabled(false); AbstractButton blueButton = new JButton("MobileMe", blueGlobeIcon); blueButton.setEnabled(true); UnifiedToolBar toolBar = new UnifiedToolBar(); toolBar.addComponentToLeft(MacButtonFactory.makeUnifiedToolBarButton( blueButton)); toolBar.addComponentToLeft(greyGlobeButton); toolBar.addComponentToLeft(MacButtonFactory.makeUnifiedToolBarButton( new JButton("Preferences", preferences))); toolBar.addComponentToRight(MacButtonFactory.makeUnifiedToolBarButton( new JButton("Advanced", gear))); return toolBar; } private JSplitPane createSourceListAndMainArea() { Image blueGlobeImage = new ImageIcon(DEverythingTest.class.getResource( "/com/explodingpixels/macwidgets/icons/DotMac.png")).getImage().getScaledInstance(16, 16, Image.SCALE_SMOOTH); Image greyGlobeImage = new ImageIcon(DEverythingTest.class.getResource( "/com/explodingpixels/macwidgets/icons/Network.png")).getImage().getScaledInstance(16, 16, Image.SCALE_SMOOTH); Icon blueGlobeIcon = new ImageIcon(blueGlobeImage); Icon greyGlobeIcon = new ImageIcon(greyGlobeImage); SourceListCategory categoryOne = new SourceListCategory("Category 1"); final SourceListCategory categoryTwo = new SourceListCategory("Category 2"); SourceListCategory categoryThree = new SourceListCategory("Category 3"); SourceListItem itemA = new SourceListItem("SourceListItem A", blueGlobeIcon); SourceListItem itemB = new SourceListItem("SourceListItem B", greyGlobeIcon); SourceListItem itemC = new SourceListItem("SourceListItem D", greyGlobeIcon); SourceListItem itemD = new SourceListItem("SourceListItem E", greyGlobeIcon); SourceListItem itemE = new SourceListItem("Really really really really really long SourceListItem", greyGlobeIcon); final SourceListItem itemG = new SourceListItem("SourceListItem G", greyGlobeIcon); SourceListItem itemH = new SourceListItem("SourceListItem H", greyGlobeIcon); SourceListItem itemI = new SourceListItem("SourceListItem I", greyGlobeIcon); SourceListItem itemJ = new SourceListItem("SourceListItem J", greyGlobeIcon); SourceListItem itemK = new SourceListItem("SourceListItem K", greyGlobeIcon); SourceListItem itemL = new SourceListItem("SourceListItem L", greyGlobeIcon); itemA.setCounterValue(1); itemC.setCounterValue(385); itemE.setCounterValue(3); itemI.setCounterValue(17); final SourceListModel model = new SourceListModel(); model.addCategory(categoryOne); model.addItemToCategory(itemA, categoryOne); model.addItemToCategory(itemB, categoryOne); model.addCategory(categoryTwo); model.addItemToCategory(itemC, categoryTwo); model.addItemToCategory(itemD, categoryTwo); model.addItemToCategory(itemE, categoryTwo); model.addCategory(categoryThree); model.addItemToCategory(itemG, categoryThree); model.addItemToCategory(itemH, categoryThree); model.addItemToCategory(itemI, categoryThree); model.addItemToCategory(itemJ, categoryThree); model.addItemToCategory(itemK, categoryThree); model.addItemToCategory(itemL, categoryThree); fSourceList = new SourceList(model); // sourceList.setFocusable(false); SourceListControlBar controlBar = new SourceListControlBar(); controlBar.createAndAddButton(MacIcons.PLUS, new ActionListener() { public void actionPerformed(ActionEvent e) { model.addItemToItem(new SourceListItem(("Hello")), itemG); } }); controlBar.createAndAddButton(MacIcons.MINUS, null); controlBar.createAndAddPopdownButton(MacIcons.GEAR, new PopupMenuCustomizerUsingStrings(null, "Item One", "Item Two", "Item Three")); fSourceList.installSourceListControlBar(controlBar); JTextArea textArea = new JTextArea(); JSplitPane splitPane = MacWidgetFactory.createSplitPaneForSourceList(fSourceList, textArea); // TODO make SourceList a better size by default splitPane.setDividerLocation(200); controlBar.installDraggableWidgetOnSplitPane(splitPane); return splitPane; } public UnifiedToolBar getUnifiedToolBar() { return fUnifiedToolBar; } public SourceList getSourceList() { return fSourceList; } @Before public void setUp() throws Exception { } @Test public void doTest() throws Exception { SwingUtilities.invokeLater(new Runnable() { public void run() { JFrame frame = new JFrame(); MacUtils.makeWindowLeopardStyle(frame.getRootPane()); WindowUtils.createAndInstallRepaintWindowFocusListener(frame); DEverythingTest everything = new DEverythingTest(); everything.init(frame); frame.setSize(650, 450); frame.setLocationRelativeTo(null); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.setVisible(true); } }); } @After public void tearDown() throws Exception { } }