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

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;
import javax.swing.UIManager;

import de.javasoft.swing.JYDockingPort;
import de.javasoft.swing.JYDockingView;
import de.javasoft.swing.jydocking.DockingManager;
import de.javasoft.swing.plaf.jydocking.DefaultCloseAction;
import de.javasoft.swing.plaf.jydocking.DefaultMinimizeAction;

/**
 * Demonstrates how to specify the preferred minimized view placement.
 */
@SuppressWarnings("serial")
public class MinimizeActionDemo extends JFrame
{
  
  public MinimizeActionDemo()
  {
    super("MinimizeActionDemo");
//@highlight
    add(createViewport(), BorderLayout.CENTER);
//@/highlight

    //clean up resources, recommended when Docking framework is used 
    //for a separate window just like the examples in the DemoCenter
    addWindowListener(new WindowAdapter()
    {
      @Override
      public void windowClosed(WindowEvent evt)
      {
        DockingManager.unregisterDockable("mainView");
        DockingManager.unregisterDockable("view2");
        DockingManager.unregisterDockable("view3");
      }
    });
    
    //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 JYDockingPort createViewport()
  {
    JYDockingView mainView = new JYDockingView("mainView", "MainView_right", "MainView_right");
    //mainView.setTerritoryBlocked(DockingManager.CENTER_REGION, true);    
//@highlight
    //minimize always to the right
    mainView.addAction(new DefaultMinimizeAction(mainView, DockingManager.RIGHT));
//@/highlight
    mainView.addAction(new DefaultCloseAction(mainView));
    
    JYDockingView  view2 = new JYDockingView ("view2", "View2_left", "View2_left");    
//@highlight
    //minimize always to the left
    view2.addAction(new DefaultMinimizeAction(view2, DockingManager.LEFT));
//@/highlight
    view2.addAction(new DefaultCloseAction(view2));
    
    JYDockingView  view3 = new JYDockingView ("view3", "View3_bottom", "View3_bottom");    
//@highlight
    //minimize always to the bottom
    view3.addAction(new DefaultMinimizeAction(view3, DockingManager.BOTTOM));
//@/highlight
    view3.addAction(new DefaultCloseAction(view3));
    
    JYDockingPort viewport = new JYDockingPort();
    viewport.dock(mainView);    
    mainView.dock(view2, DockingManager.WEST_REGION, .3f);
    mainView.dock(view3, DockingManager.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 MinimizeActionDemo();
        }
        catch (Exception e)
        {
          e.printStackTrace();
        }
      }
    });
  }
}
