content: /******************************************************************************
  * Copyright 2013-2016 LASIGE                                                  *
  *                                                                             *
  * Licensed under the Apache License, Version 2.0 (the "License"); you may     *
  * not use this file except in compliance with the License. You may obtain a   *
  * copy of the License at http://www.apache.org/licenses/LICENSE-2.0           *
  *                                                                             *
  * Unless required by applicable law or agreed to in writing, software         *
  * distributed under the License is distributed on an "AS IS" BASIS,           *
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.    *
  * See the License for the specific language governing permissions and         *
  * limitations under the License.                                              *
  *                                                                             *
  *******************************************************************************
  * AgreementMakerLight Graphic User Interface.                                 *
  *                                                                             *
  * @author Daniel Faria                                                        *
  ******************************************************************************/
  package aml.ui;
  
  import java.awt.BorderLayout;
  import java.awt.Dimension;
  import java.awt.GraphicsEnvironment;
  import java.awt.Insets;
  
  import javax.swing.JDesktopPane;
  import javax.swing.JFrame;
  
  public class GUI extends JFrame
  {
  
  //Attributes
  	
  	private static final long serialVersionUID = 4515937956299538275L;
  	private AMLMenuBar amlMenuBar;
  	private JDesktopPane desktop;
  	private ResourcePanel resourcePanel;
  	private	AlignmentPanel alignPanel;
  	private Dimension panelMin, panelMax, viewerMin, viewerMax;
  	
  //Constructors
  	
      public GUI()
      {
      	setTitle("AgreementMakerLight");
      	setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
      	setDefaultLookAndFeelDecorated(true);
      	
          amlMenuBar = new AMLMenuBar();
          setJMenuBar(amlMenuBar);
  
  		desktop = new JDesktopPane();
  		desktop.setLayout(new BorderLayout());
  		
  		//Get the effective screen size
  		GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
  		Dimension screenSize = env.getMaximumWindowBounds().getSize();
  		//Get the insets (shouldn't be necessary, but just in case)
  		Insets insets = this.getInsets();
  		int w = insets.left + insets.right + 10;
  		int h = insets.top + insets.bottom;
  		//Determine width and height of the panels
  		int width = screenSize.width - w;
  		int panel = 85;
  		int viewer = screenSize.height - h - panel - (4*amlMenuBar.getPreferredSize().height);
  		//Set their dimensions
  		panelMin = new Dimension(width - 20, panel);
  		panelMax = new Dimension(width, panel);
  		viewerMin = new Dimension(width, viewer);
  		viewerMax = new Dimension(width, viewer);
  		resourcePanel = new ResourcePanel(panelMax,panelMin);
      	desktop.add(resourcePanel,BorderLayout.NORTH);
          alignPanel = new AlignmentPanel(viewerMax,viewerMin);
      	
          desktop.add(alignPanel);
  		setContentPane(desktop);
  
  		this.pack();
  		setExtendedState(JFrame.MAXIMIZED_BOTH);
  		setVisible(true);
      }
      
  //Public Methods (to refresh GUI)
  
      public void refresh()
      {
      	amlMenuBar.refresh();
      	resourcePanel.refresh();
          alignPanel.refresh();
      	this.pack();
      	setExtendedState(JFrame.MAXIMIZED_BOTH);
      	setVisible(true);
      }
      
      public void refresh(int index)
      {
          alignPanel.refresh(index);
      }
      
      public void goTo(int index)
      {
      	alignPanel.goTo(index);
      }
  }