Color Menu : Menu « Swing JFC « Java






Color Menu

    
/*
** Salsa - Swing Add-On Suite
** Copyright (c) 2001, 2002 by Gerald Bauer
**
** This program is free software.
**
** You may redistribute it and/or modify it under the terms of the GNU
** General Public License as published by the Free Software Foundation.
** Version 2 of the license should be included with this distribution in
** the file LICENSE, as well as License.html. If the license is not
** included with this distribution, you may find a copy at the FSF web
** site at 'www.gnu.org' or 'www.fsf.org', or you may write to the
** Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139 USA.
**
** THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY OF ANY KIND,
** NOT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY. THE AUTHOR
** OF THIS SOFTWARE, ASSUMES _NO_ RESPONSIBILITY FOR ANY
** CONSEQUENCE RESULTING FROM THE USE, MODIFICATION, OR
** REDISTRIBUTION OF THIS SOFTWARE.
**
*/


import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;

public class ColorMenu extends JMenu
{
   Border _activeBorder;

   Map _colorPanes;
   Border _selectedBorder;
   ColorPane _selectedColorPane;
   Border _unselectedBorder;

   public ColorMenu( String name )
   {
      super( name );

      _unselectedBorder = new CompoundBorder(
            new MatteBorder( 1, 1, 1, 1, getBackground() ),
            new BevelBorder( BevelBorder.LOWERED, Color.WHITE, Color.GRAY ) );

      _selectedBorder = new CompoundBorder(
            new MatteBorder( 2, 2, 2, 2, Color.RED ),
            new MatteBorder( 1, 1, 1, 1, getBackground() ) );

      _activeBorder = new CompoundBorder(
            new MatteBorder( 2, 2, 2, 2, Color.BLUE ),
            new MatteBorder( 1, 1, 1, 1, getBackground() ) );

      JPanel p = new JPanel();
      p.setBorder( new EmptyBorder( 5, 5, 5, 5 ) );
      p.setLayout( new GridLayout( 8, 8 ) );
      _colorPanes = new HashMap();

      int values[] = new int[]{0, 128, 192, 255};

      for( int r = 0; r < values.length; r++ )
         for( int g = 0; g < values.length; g++ )
            for( int b = 0; b < values.length; b++ )
            {
               Color color = new Color( values[r], values[g], values[b] );
               ColorPane colorPane = new ColorPane( color );
               p.add( colorPane );
               _colorPanes.put( color, colorPane );
            }

      add( p );

   }

   public void setColor( Color c )
   {
      Object obj = _colorPanes.get( c );
      if( obj == null )
         return;

      if( _selectedColorPane != null )
         _selectedColorPane.setSelected( false );

      _selectedColorPane = ( ColorPane ) obj;
      _selectedColorPane.setSelected( true );

   }

   public Color getColor()
   {
      if( _selectedColorPane == null )
         return null;

      return _selectedColorPane.getColor();
   }

   public void doSelection()
   {
      fireActionPerformed( new ActionEvent( this,
            ActionEvent.ACTION_PERFORMED, getActionCommand() ) );
   }

   class ColorPane extends JPanel implements MouseListener
   {
      Color _color;
      boolean _isSelected;

      public ColorPane( Color color )
      {
         _color = color;
         setBackground( color );
         setBorder( _unselectedBorder );
         String msg = "rgb( " + color.getRed() + ", "
                + color.getGreen() + ", "
                + color.getBlue() + " )";
         setToolTipText( msg );
         addMouseListener( this );
      }

      public void setSelected( boolean isSelected )
      {
         _isSelected = isSelected;
         if( _isSelected )
            setBorder( _selectedBorder );
         else
            setBorder( _unselectedBorder );
      }

      public Color getColor()
      {
         return _color;
      }

      public Dimension getMaximumSize()
      {
         return getPreferredSize();
      }

      public Dimension getMinimumSize()
      {
         return getPreferredSize();
      }

      public Dimension getPreferredSize()
      {
         return new Dimension( 15, 15 );
      }

      public boolean isSelected()
      {
         return _isSelected;
      }

      public void mouseClicked( MouseEvent ev ) { }

      public void mouseEntered( MouseEvent ev )
      {
         setBorder( _activeBorder );
      }

      public void mouseExited( MouseEvent ev )
      {
         setBorder( _isSelected ? _selectedBorder : _unselectedBorder );
      }

      public void mousePressed( MouseEvent ev ) { }

      public void mouseReleased( MouseEvent ev )
      {
         setColor( _color );
         MenuSelectionManager.defaultManager().clearSelectedPath();
         doSelection();
      }
   }
}

   
    
    
    
  








Related examples in the same category

1.Simple MenusSimple Menus
2.Creating popup menus with SwingCreating popup menus with Swing
3.Create a main menu.
4.Creating a menubar
5.Creating a JMenuBar, JMenu, and JMenuItem Component
6.Submenus, checkbox menu items, swapping menus,mnemonics (shortcuts) and action commandsSubmenus, checkbox menu items, swapping menus,mnemonics (shortcuts) and action commands
7.Separating Menu Items in a Menu
8.This example create a menubar and toolbar both populated with ActionThis example create a menubar and toolbar both populated with Action
9.A simple example of JPopupMenuA simple example of JPopupMenu
10.A quick demonstration of checkbox menu itemsA quick demonstration of checkbox menu items
11.Building menus and menu items: Accelerators and mnemonicsBuilding menus and menu items: Accelerators and mnemonics
12.An example of the JPopupMenu in actionAn example of the JPopupMenu in action
13.A simple example of constructing and using menus.A simple example of constructing and using menus.
14.PopupMenu and Mouse EventPopupMenu and Mouse Event
15.Menu YMenu Y
16.Menu XMenu X
17.Action MenuAction Menu
18.Menu Action Screen Dump DemoMenu Action Screen Dump Demo
19.Toggle Menu ItemToggle Menu Item
20.CheckBox Menu SampleCheckBox Menu Sample
21.Menu Demo 4Menu Demo 4
22.Comprehensive Menu DemoComprehensive Menu Demo
23.Menu Sample 3Menu Sample 3
24.How to create customized menuHow to create customized menu
25.Radio menu itemRadio menu item
26.React to menu action and checkbox menuReact to menu action and checkbox menu
27.Menu created from property file
28.Simple Menu and Window interface - not InternationalizedSimple Menu and Window interface - not Internationalized
29.Provide a pop-up menu using a FrameProvide a pop-up menu using a Frame
30.Demonstrate Menus and the MenuBar classDemonstrate Menus and the MenuBar class
31.Demonstrate JMenu shortcuts and accelerators
32.Demonstrate Cascading MenusDemonstrate Cascading Menus
33.Popup Menu DemoPopup Menu Demo
34.Menu DemoMenu Demo
35.Menu Layout DemoMenu Layout Demo
36.Actions MenuBarActions MenuBar
37.UseActions: MenuUseActions: Menu
38.PopupMenu SamplePopupMenu Sample
39.RadioButton Menu SampleRadioButton Menu Sample
40.Menu Look Demo, except the menu items actually doMenu Look Demo, except the menu items actually do
41.Menu Glue DemoMenu Glue Demo
42.Add PopupMenuAdd PopupMenu
43.Listening for Changes to the Currently Selected Menu or Menu Item
44.Menu item that can be selected or deselected
45.Place commands that hide/show various toolbars
46.Getting the Currently Selected Menu or Menu Item
47.Creating a Menu Item That Listens for Changes to Its Selection Status
48.Create a change listener and register with the menu selection manager
49.Menu Selection Manager DemoMenu Selection Manager Demo
50.MenuBar, menu item, action, icon acceleratorMenuBar, menu item, action, icon accelerator