/*
personaeTab.java
This class manages the admin personae tab (for User objects) in the
Ganymede client.
Created: 17 November 2006
Module By: Jonathan Abbey
-----------------------------------------------------------------------
Ganymede Directory Management System
Copyright (C) 1996 - 2008
The University of Texas at Austin
Contact information
Author Email: ganymede_author@arlut.utexas.edu
Email mailing list: ganymede@arlut.utexas.edu
US Mail:
Computer Science Division
Applied Research Laboratories
The University of Texas at Austin
PO Box 8029, Austin TX 78713-8029
Telephone: (512) 835-3200
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package arlut.csd.ganymede.client;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.rmi.RemoteException;
import java.awt.Image;
import java.net.URL;
import java.io.IOException;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.SwingConstants;
import arlut.csd.ganymede.common.SchemaConstants;
import arlut.csd.ganymede.rmi.invid_field;
import arlut.csd.Util.PackageResources;
/*------------------------------------------------------------------------------
class
imageTab
------------------------------------------------------------------------------*/
/**
* This class manages the image tab (for User objects) in the Ganymede
* client.
*/
public class imageTab extends clientTab {
private JPanel contentPane;
private String url_string;
private Image icon = null;
private JLabel image = null;
/* -- */
public imageTab(framePanel parent, JTabbedPane pane, String tabName, String imageUrl)
{
super(parent, pane, tabName);
this.url_string = imageUrl;
}
public JComponent getComponent()
{
if (contentPane == null)
{
contentPane = new JPanel(false);
contentPane.setLayout(new FlowLayout());
}
return contentPane;
}
public void initialize()
{
loadImage();
image = new JLabel(new ImageIcon(icon), SwingConstants.TRAILING);
image.setOpaque(true);
image.setBorder(BorderFactory.createEtchedBorder());
contentPane.add(image);
}
public void update()
{
}
public void loadImage()
{
if (icon != null)
{
return;
}
try
{
icon = PackageResources.getImageResource(contentPane, new URL(url_string));
if (icon == null || icon.getWidth(null) <= 0)
{
icon = PackageResources.getImageResource(contentPane, "unknown.png", getClass());
}
else
{
icon = icon.getScaledInstance(200, -1, Image.SCALE_SMOOTH);
}
}
catch (Exception ex)
{
// couldn't get the image for some reason
ex.printStackTrace();
}
}
public synchronized void dispose()
{
if (contentPane != null)
{
contentPane.removeAll();
contentPane = null;
}
if (icon != null)
{
icon.flush();
icon = null;
}
super.dispose();
}
}