blob: 3a214b8bc1be6216e05023054213ef7127da3f84 [file] [log] [blame]
/*
* @(#)CompViewer.java 1.5 07/07/13
*
* Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* - Neither the name of Sun Microsystems nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
import java.awt.*;
import java.beans.*;
import java.lang.reflect.Method;
import java.io.*;
import java.awt.event.*;
/**
* Class <code>CompViewer</code> creates a 'viewer' component
* that implements the CommandObject interface.
*
*/
public class CompViewer extends Frame implements WindowListener {
/**
* Our constructor...
*/
public CompViewer(){
super("Component");
this.initCompViewer(null);
}
public CompViewer(String name){
super(name);
this.initCompViewer(name);
}
public void initCompViewer(String name){
if (name != null)
setTitle(name);
setSize(400,400);
setLayout(new BorderLayout());
this.addWindowListener(this);
}
////////////////////////////////////////////////////////////////////////
// we got our bean as a component display it!
void setBean(Component new_bean)
{
Dimension start_dim = null;
add((Component)new_bean, "Center");
start_dim = ((Component)new_bean).getPreferredSize();
if(start_dim.width != 0 && start_dim.height != 0) {
// this is what we do under normal conditions
start_dim.height += 40;
start_dim.width += 15;
this.setSize( start_dim );
((Component)new_bean).invalidate();
((Component)new_bean).validate();
((Component)new_bean).doLayout();
show();
}
else {
// we get here if for some reason our child's
// getPref size needs to have it's peer created
// first...
show();
start_dim = ((Component)new_bean).getPreferredSize();
start_dim.height += 40;
start_dim.width += 15;
this.setSize( start_dim );
((Component)new_bean).validate();
}
this.setSize(this.getSize());
validate();
}
/**
* Make the bean based on it's class loader and name
*/
private Object makeBean(ClassLoader cls, String beanName) {
Object new_bean = null;
try {
try {
new_bean = java.beans.Beans.instantiate(cls, beanName);
}
catch(IOException e) {
System.out.println("CompViewer:Beans.instantiate:IOException " + beanName + ".");
System.out.println(e);
System.exit(1);
}
}
catch (ClassNotFoundException e) {
System.out.println("CompViewer:Beans.instantiate:ClassNotFoundException " + beanName + ".");
System.out.println(e);
System.exit(1);
}
if( !(new_bean instanceof Component) ) {
System.out.println("CompViewer: " + beanName + " not instance of awt.Component exiting");
System.exit(1);
}
return new_bean;
}
public void windowOpened(WindowEvent e) {}
public void windowClosing(WindowEvent e) {
this.setVisible(false);
}
public void windowClosed(WindowEvent e) {}
public void windowIconified(WindowEvent e) {}
public void windowDeiconified(WindowEvent e) {}
public void windowActivated(WindowEvent e) {}
public void windowDeactivated(WindowEvent e) {}
}