/*
* Copyright 2003-2010 Tufts University  Licensed under the
 * Educational Community 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.osedu.org/licenses/ECL-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.
 */

/*******
**  ObjectInspectorPanel
**
**
*********/

package tufts.vue;


import java.io.*;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;


	/**
	 * ExpandPanel
	 * This is the panel for dis\playing Resource info
	 *
	 **/
	public class ExpandPanel extends JPanel implements ActionListener{
	
		
		//////////////
		// Fields
		/////////////
		
		
		/** the hide/show component **/
		Component mComponent = null;
		
		/** the toggle button **/
		JToggleButton mExpandButton = null;
		
		/** the title display **/
		JLabel mTitle = null;
		
		
		//////////////////
		// Constructors
		//////////////////
		
		/**
		 * 
		 **/
		public ExpandPanel( String pTitle, Component pComponent, boolean pShow) {
			
			setLayout( new BorderLayout() );
			
			mComponent = pComponent;
			mTitle = new JLabel();
			mTitle.setText( pTitle);
			
			JPanel titlePanel = new JPanel();
			titlePanel.setLayout( new BorderLayout() );
			titlePanel.add( BorderLayout.WEST, mTitle);
			
			mExpandButton = new JToggleButton();
			mExpandButton.setIcon( VueResources.getImageIcon( "assetExpandOff" ));
			mExpandButton.setSelectedIcon( VueResources.getImageIcon("assetExapndOn") );
			mExpandButton.setSelected( pShow);
			mExpandButton.addActionListener( this);
			titlePanel.add( BorderLayout.EAST, mExpandButton);
			
			add( BorderLayout.NORTH, titlePanel);
			if( pShow) {
				if( mComponent  != null) {
					add( BorderLayout.CENTER, mComponent);
					}
				}
			
		}
		
		
		/**
		 * getTitle
		 * This returns the title string
		 * @return String the name
		 **/
		public String getTitle() {
			return mTitle.getText();
		}
		
		
		
		////////////////
		// Methods
		////////////////
		
		
		public void setTitle( String pTitle) {
			mTitle.setText( pTitle);
		}
		
		public void setIcon( Icon pIcon) {
			mTitle.setIcon( pIcon);
		}
		 
		
		
	public void setBodyComponent( Component pComponent) {
		if( isExpanded() ) {
			if( mComponent != null) {
				remove( mComponent);
				}
			}
		
		mComponent = pComponent;
		
		if( isExpanded() ) {
			if( mComponent != null) {
				add( BorderLayout.CENTER, mComponent);
				}
			validate();
			}
	}
	
	public boolean isExpanded() {
		return mExpandButton.isSelected();
	}
	
	
	public void setIsExapnded( boolean pExpand) {
		
			
		if( pExpand) {
			System.out.println("  trying to add and expand");
			add( BorderLayout.CENTER, mComponent);
			}
		else {
			System.out.println("  ...removing item (Hiding) ");
			remove( mComponent);
			}
		validate();
	}
	
	
	public void actionPerformed( ActionEvent pEvent) {
		Object source = pEvent.getSource();
		if( source == mExpandButton) {
			System.out.println("Expand Toggle!");
			setIsExapnded( mExpandButton.isSelected() );
			}
	}
}
	
	
