package de.javasoft.synthetica.democenter.examples.multilevelbar;

import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Insets;

import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.UIManager;
import javax.swing.border.EmptyBorder;

import de.javasoft.swing.MultiLevelBar;

/**
 * A simple MultiLevelBar application used to demonstrate and explain  
 * basic functionality.
 */
@SuppressWarnings("serial")
public class SimpleMultiLevelBar extends JFrame
{
  /**
   * Constructor for the main application.  
   */
  public SimpleMultiLevelBar()
  {
    super("Simple MultiLevelBar Demo");    
    
    JPanel panel = new JPanel();
    panel.setLayout(new BoxLayout(panel, BoxLayout.PAGE_AXIS));
    String resourcePath = "/de/javasoft/synthetica/democenter/examples/multilevelbar/";
    
//@highlight
    //create first MultiLevelBar with an initial value of 100
    MultiLevelBar mlb = new MultiLevelBar("MultiLevelBar 1", resourcePath + "multiLevelGray.png", new Insets(3,3,3,3), 100, true);
    //add an additional bar with the id "level1"
    mlb.addBar("level1", resourcePath + "multiLevelRed.png", new Insets(3,3,3,3), 50);
    mlb.setForeground(Color.WHITE);
//@/highlight
    panel.add(mlb);
    
    panel.add(Box.createVerticalStrut(10));    
    
    MultiLevelBar mlb2 = new MultiLevelBar("MultiLevelBar 2", resourcePath + "multiLevelGray.png", new Insets(3,3,3,3), 100, true);
    mlb2.addBar("level1", resourcePath + "multiLevelRed.png", new Insets(3,3,3,3), 30);
    mlb2.addBar("level2", resourcePath + "multiLevelGreen.png", new Insets(3,3,3,3), 50);
//@highlight
    //change value for "level2"-bar
    mlb2.setValue("level2", 10);
//@/highlight
    mlb2.setForeground(Color.YELLOW);
    mlb2.setHorizontalAlignment(SwingConstants.LEFT);
    panel.add(mlb2);
    
    panel.add(Box.createVerticalStrut(10));
    
    //create MultiLevelBar without dropShadow for text
    MultiLevelBar mlb3 = new MultiLevelBar("MultiLevelBar 3", resourcePath + "multiLevelGray.png", new Insets(3,3,3,3), 100, false);
    mlb3.addBar("level2", resourcePath + "multiLevelRed.png", new Insets(3,3,3,3), 60);
    mlb3.addBar("level1", resourcePath + "multiLevelOrange.png", new Insets(3,3,3,3), 45);
    mlb3.addBar("level3", resourcePath + "multiLevelGreen.png", new Insets(3,3,3,3), 30);
    //set text-color and text-alignment
    mlb3.setForeground(Color.LIGHT_GRAY);
//@highlight
    mlb3.setHorizontalAlignment(SwingConstants.RIGHT);
    mlb3.setVerticalAlignment(SwingConstants.BOTTOM);
//@/highlight
    panel.add(mlb3);                
    
    panel.setBorder(new EmptyBorder(10, 10, 10, 10));        
    add(panel);
    //setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    setSize(400, 180);
    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 SimpleMultiLevelBar();
        }
        catch (Exception e)
        {
          e.printStackTrace();
        }
      }
    });
  }

}
