Package com.explodingpixels.macwidgets

Source Code of com.explodingpixels.macwidgets.DSourceList

package com.explodingpixels.macwidgets;

import com.explodingpixels.widgets.PopupMenuCustomizerUsingStrings;
import com.explodingpixels.widgets.WindowUtils;
import com.jgoodies.forms.builder.PanelBuilder;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.FormLayout;

import javax.swing.BorderFactory;
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.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.plaf.basic.BasicSplitPaneUI;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class DSourceList {

    public static void main(String[] args) {

        Image blueGlobeImage = new ImageIcon(DEverything.class.getResource(
                "/com/explodingpixels/macwidgets/icons/DotMac.png")).getImage().getScaledInstance(16, 16, Image.SCALE_SMOOTH);
        Image greyGlobeImage = new ImageIcon(DEverything.class.getResource(
                "/com/explodingpixels/macwidgets/icons/Network.png")).getImage().getScaledInstance(16, 16, Image.SCALE_SMOOTH);

        Icon blueGlobeIcon = new ImageIcon(blueGlobeImage);
        final Icon greyGlobeIcon = new ImageIcon(greyGlobeImage);

        SourceListCategory categoryOne = new SourceListCategory("Category 1");
        SourceListCategory categoryTwo = new SourceListCategory("Category 2");
        final SourceListCategory categoryThree = new SourceListCategory("Category 3");

        SourceListItem itemA = new SourceListItem("SourceListItem A", blueGlobeIcon);
        final SourceListItem itemB = new SourceListItem("SourceListItem B", greyGlobeIcon);

        SourceListItem itemC = new SourceListItem("SourceListItem C", greyGlobeIcon);
        SourceListItem itemD = new SourceListItem("SourceListItem D", greyGlobeIcon);
        SourceListItem itemE = new SourceListItem("Really really really really really long SourceListItem", greyGlobeIcon);

        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.addItemToItem(itemD, itemC);
        model.addItemToItem(itemE, itemD);

        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, 0);

        SwingUtilities.invokeLater(new Runnable() {
            public void run() {

                SourceList sourceList = new SourceList(model);
//        sourceList.setFocusable(false);

                sourceList.setSelectedItem(itemB);

                final JTextField textField = new JTextField("");
                JButton button = new JButton("Add");
                button.putClientProperty("JButton.buttonType", "textured");
                button.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                        model.addCategory(new SourceListCategory(textField.getText()));
                    }
                });

                SourceListControlBar controlBar = new SourceListControlBar();
                controlBar.createAndAddButton(MacIcons.PLUS, null);
                controlBar.createAndAddButton(MacIcons.MINUS, null);
                controlBar.createAndAddPopdownButton(MacIcons.GEAR,
                        new PopupMenuCustomizerUsingStrings(null, "Item One", "Item Two", "Item Three"));

                sourceList.installSourceListControlBar(controlBar);

                JTextArea textArea = new JTextArea();

                JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
                        sourceList.getComponent(), textArea);
                splitPane.setDividerLocation(200);
                splitPane.setContinuousLayout(true);
                splitPane.setDividerSize(1);
                ((BasicSplitPaneUI) splitPane.getUI()).getDivider().setBorder(
                        BorderFactory.createMatteBorder(0, 1, 0, 0, new Color(0xa5a5a5)));
                splitPane.setBorder(BorderFactory.createEmptyBorder());

                controlBar.installDraggableWidgetOnSplitPane(splitPane);

                // definte the FormLayout columns and rows.
                FormLayout layout = new FormLayout(
                        "fill:p:grow, 0dlu, p", "p");
                // create the cell constraints to use in the layout.
                CellConstraints cc = new CellConstraints();
                // create the builder with our panel as the component to be filled.
                PanelBuilder builder = new PanelBuilder(layout);

//        builder.add(textField, cc.xy(1,1));
//        builder.add(button, cc.xy(3,1));

                JFrame frame = new JFrame();
                WindowUtils.createAndInstallRepaintWindowFocusListener(frame);
                frame.add(builder.getPanel(), BorderLayout.NORTH);
                frame.add(splitPane, BorderLayout.CENTER);
                frame.setSize(500, 350);
                frame.setLocationRelativeTo(null);
                frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                frame.setVisible(true);

                SourceListItem itemM = new SourceListItem("SourceListItem M", greyGlobeIcon);
                model.addItemToCategory(itemM, categoryThree, 0);

                sourceList.setExpanded(categoryThree, true);
            }
        });

    }

}
TOP

Related Classes of com.explodingpixels.macwidgets.DSourceList

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.