/* * The MIT License (MIT) * * Copyright (c) 2007-2015 Broad Institute * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ /* * Created by JFormDesigner on Sat Mar 17 09:23:03 EDT 2012 */ package org.broad.igv.ui.color; import javax.swing.*; import javax.swing.border.LineBorder; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.io.Serializable; import java.util.ArrayList; /** * @author Jim Robinson */ public class ColorChooserPanel extends JPanel implements Serializable { Color selectedColor; java.util.List<ActionListener> listeners = new ArrayList<ActionListener>(); public ColorChooserPanel() { this(Color.white); } public ColorChooserPanel(Color selectedColor) { this.selectedColor = selectedColor; initComponents(); setSelectedColor(selectedColor); } public void setSelectedColor(Color selectedColor) { this.selectedColor = selectedColor; colorPanel.setBackground(selectedColor); } public Color getSelectedColor() { return selectedColor; } public void addActionListener(ActionListener listener) { listeners.add(listener); } private void changeButtonActionPerformed(ActionEvent e) { changeColorAction(); } private void colorPanelMouseClicked(MouseEvent e) { changeColorAction(); } private void changeColorAction() { JColorChooser colorChooser = new JColorChooser(selectedColor); JDialog dialog = JColorChooser.createDialog(this, "Select color", true, colorChooser, null, null); dialog.setVisible(true); Color c = colorChooser.getColor(); if (c != null) { setSelectedColor(c); } ActionEvent evt = new ActionEvent(this, 0, ""); for (ActionListener l : listeners) { l.actionPerformed(evt); } } private void initComponents() { colorPanel = new JPanel(); changeButton = new JButton(); //Workaround of Metal LAF bug, see http://bugs.openjdk.java.net/show_bug.cgi?id=100280 if (UIManager.getLookAndFeel().getName().toLowerCase().contains("metal")) { changeButton = new JMenuItem(); } //======== this ======== setLayout(new GridBagLayout()); ((GridBagLayout) getLayout()).columnWidths = new int[]{30, 0, 0}; ((GridBagLayout) getLayout()).rowHeights = new int[]{0, 0}; ((GridBagLayout) getLayout()).columnWeights = new double[]{1.0, 1.0, 1.0E-4}; ((GridBagLayout) getLayout()).rowWeights = new double[]{1.0, 1.0E-4}; //======== colorPanel ======== { colorPanel.setPreferredSize(new Dimension(20, 15)); colorPanel.setMinimumSize(new Dimension(20, 5)); colorPanel.setMaximumSize(new Dimension(20, 15)); colorPanel.setFocusable(false); colorPanel.setBorder(LineBorder.createBlackLineBorder()); colorPanel.setBackground(new Color(204, 204, 255)); colorPanel.setLayout(null); colorPanel.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent mouseEvent) { colorPanelMouseClicked(mouseEvent); } }); } add(colorPanel, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); //---- changeButton ---- changeButton.setHorizontalAlignment(SwingConstants.LEFT); changeButton.setIcon(UIManager.getIcon("Menu.arrowIcon")); changeButton.setToolTipText("Change color"); changeButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { changeButtonActionPerformed(e); } }); add(changeButton, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); // JFormDesigner - End of component initialization //GEN-END:initComponents } // JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables // Generated using JFormDesigner non-commercial license private JPanel colorPanel; private AbstractButton changeButton; // JFormDesigner - End of variables declaration //GEN-END:variables }