package de.javasoft.synthetica.democenter.examples.tips.imageprocessing;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.EventQueue;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.UIManager;

import de.javasoft.synthetica.addons.SyntheticaAddonsUtilities;


/**
 * Demonstrates how to change opacity (alpha) of an existing image.  
 */
@SuppressWarnings("serial")
public class AlphaIcon extends JFrame
{

  public AlphaIcon()
  {
    super("AlphaIcon");

    JPanel panel = new JPanel();
    panel.setBackground(Color.YELLOW);

    Icon icon = UIManager.getIcon("OptionPane.informationIcon");
    for (float i = 1.0f; i > 0; i -= 0.25f)
    {  
      JLabel label = new JLabel(String.format("Icon-Opacity: %.2f", i));
      label.setHorizontalTextPosition(JLabel.CENTER);
      label.setVerticalTextPosition(JLabel.BOTTOM);
//@highlight
      ImageIcon alphaIcon = SyntheticaAddonsUtilities.createAlphaIcon(icon, i); 
//@/highlight
      label.setIcon(alphaIcon);
      panel.add(label);
    }
    getContentPane().add(panel);
    
    JPanel buttonPanel = new JPanel();    
    JButton b = new JButton("Enabled Button", icon);
    buttonPanel.add(b);

    JButton b1 = new JButton("Disabled Button", icon);
//@highlight
    b1.setEnabled(false);
    b1.setDisabledIcon(SyntheticaAddonsUtilities.createAlphaIcon(icon, 0.5f));
//@/highlight
    buttonPanel.add(b1);
    
    getContentPane().add(buttonPanel, BorderLayout.SOUTH);
    
    //setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);      
    setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    pack();
    setLocationRelativeTo(null);        //center
    setVisible(true);
  }
  
  /**
   * Static main method for application startup. 
   */
  public static void main(String[] args)
  {
    EventQueue.invokeLater(new Runnable()
    {
      public void run()
      {
        try
        {
          UIManager.setLookAndFeel("de.javasoft.plaf.synthetica.SyntheticaStandardLookAndFeel");
          new AlphaIcon();
        }
        catch (Exception e)
        {
          e.printStackTrace();
        }
      }
    });
  }

}
