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

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

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.border.LineBorder;

import org.flexdock.docking.DockingConstants;
import org.flexdock.docking.state.MinimizationManager;
import org.flexdock.view.Viewport;

import org.flexdock.view.View;
import de.javasoft.synthetica.addons.flexdock.PinAction;

/**
 * Demonstrate how to specify the dockbar edge which will be used
 * by the MinimizationManager when a view becomes minimized.  
 */
@SuppressWarnings("serial")
public class PinActionDemo extends JFrame
{
  
  public PinActionDemo()
  {
    super("Flexdock SimpleDockbarManager");
//@highlight
    add(createViewport(), BorderLayout.CENTER);
//@/highlight    
    //setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);      
    setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    setSize(640, 480);
    setLocationRelativeTo(null);        //center
    setVisible(true);    
  }
  
  /**
   * Create viewport with three different views.
   */
  private Viewport createViewport()
  {
    View mainView = new View("mainView", "MainView_right", "MainView_right");
    //mainView.setTerritoryBlocked(DockingConstants.CENTER_REGION, true);    
    mainView.addAction(DockingConstants.CLOSE_ACTION);
//@highlight
    mainView.addAction(new PinAction(MinimizationManager.RIGHT));
//@/highlight    
    
    View view2 = new View("view2", "View2_left", "View2_left");    
    view2.addAction(DockingConstants.CLOSE_ACTION);
//@highlight
    view2.addAction(new PinAction(MinimizationManager.LEFT));
//@/highlight    
    
    View view3 = new View("view3", "View3_bottom", "View3_bottom");    
    view3.addAction(DockingConstants.CLOSE_ACTION);
//@highlight
    view3.addAction(new PinAction(MinimizationManager.BOTTOM));
//@/highlight    
    
    ((JPanel)mainView.getContentPane()).setBorder(new LineBorder(UIManager.getColor("Synthetica.docking.border.color")));
    ((JPanel)view2.getContentPane()).setBorder(new LineBorder(UIManager.getColor("Synthetica.docking.border.color")));
    ((JPanel)view3.getContentPane()).setBorder(new LineBorder(UIManager.getColor("Synthetica.docking.border.color")));

    Viewport viewport = new Viewport();
    viewport.dock(mainView);    
    mainView.dock(view2, DockingConstants.WEST_REGION, .3f);
    mainView.dock(view3, DockingConstants.SOUTH_REGION, .3f);

    return viewport;
  }

  /**
   * 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 PinActionDemo();
        }
        catch (Exception e)
        {
          e.printStackTrace();
        }
      }
    });
  }
}
