package net.sourceforge.squirrel_sql.client.gui.desktopcontainer;
import net.sourceforge.squirrel_sql.client.gui.desktopcontainer.docktabdesktop.*;
import javax.swing.*;
import javax.swing.border.Border;
import java.awt.*;
import java.awt.event.FocusListener;
import java.beans.VetoableChangeListener;
import java.beans.PropertyVetoException;
import java.util.HashMap;
public class TabDelegate implements ITabDelegate
{
private TabWidget _widget;
private String _title;
private TabHandle _tabHandle;
private WidgetEventCaster _eventCaster = new WidgetEventCaster();
private JPanel _contentPane = new JPanel();
private int _defaultCloseOperation = WindowConstants.DISPOSE_ON_CLOSE;
private Icon _frameIcon;
private boolean _visible;
private HashMap<Object, Object> _clientProperties = new HashMap<Object, Object>();
public TabDelegate(TabWidget widget, String title)
{
_widget = widget;
_title = title;
}
public void setTabHandle(TabHandle tabHandle)
{
_tabHandle = tabHandle;
_tabHandle.addTabHandleListener(new TabHandleListener()
{
public void tabClosing(TabHandleEvent tabHandleEvent)
{
onTabClosing(tabHandleEvent);
}
public void tabClosed(TabHandleEvent tabHandleEvent)
{
onTabClosed(tabHandleEvent);
}
public void tabAdded(TabHandleEvent tabHandleEvent)
{
onTabAdded(tabHandleEvent);
}
public void tabSelected(TabHandleEvent tabHandleEvent)
{
_eventCaster.fireWidgetActivated(new WidgetEvent(tabHandleEvent, _widget));
}
public void tabDeselected(TabHandleEvent tabHandleEvent)
{
_eventCaster.fireWidgetDeactivated(new WidgetEvent(tabHandleEvent, _widget));
}
});
}
private void onTabAdded(TabHandleEvent tabHandleEvent)
{
_tabHandle.setTitle(_title);
_tabHandle.setIcon(_frameIcon);
_widget.setVisible(true);
_eventCaster.fireWidgetOpened(new WidgetEvent(tabHandleEvent, _widget));
}
private void onTabClosed(TabHandleEvent tabHandleEvent)
{
if (WindowConstants.DO_NOTHING_ON_CLOSE != _defaultCloseOperation)
{
_eventCaster.fireWidgetClosed(new WidgetEvent(tabHandleEvent, _widget));
_widget.dispose();
}
}
private void onTabClosing(TabHandleEvent tabHandleEvent)
{
_eventCaster.fireWidgetClosing(new WidgetEvent(tabHandleEvent, _widget));
if (WindowConstants.DO_NOTHING_ON_CLOSE != _defaultCloseOperation)
{
_eventCaster.fireWidgetDeactivated(new WidgetEvent(tabHandleEvent, _widget));
_widget.setVisible(false);
}
}
public void addTabWidgetListener(WidgetListener widgetListener)
{
_eventCaster.addTabWidgetListener(widgetListener);
}
public void removeTabWidgetListener(WidgetListener widgetListener)
{
_eventCaster.removeTabWidgetListener(widgetListener);
}
@Override
public int getDefaultCloseOperation()
{
return _defaultCloseOperation;
}
public boolean isVisible()
{
return _visible;
}
public void _moveToFront()
{
_tabHandle.select();
}
public void setDefaultCloseOperation(int operation)
{
_defaultCloseOperation = operation;
}
public Container getContentPane()
{
return _contentPane; //To change body of implemented methods use File | Settings | File Templates.
}
public void pack()
{
//To change body of implemented methods use File | Settings | File Templates.
}
public String getTitle()
{
return _title;
}
public void makeToolWindow(boolean isToolWindow)
{
//To change body of implemented methods use File | Settings | File Templates.
}
public void _dispose()
{
_tabHandle.removeTab(DockTabDesktopPane.TabClosingMode.DISPOSE);
_eventCaster.fireWidgetClosed(new WidgetEvent(new TabHandleEvent(_tabHandle,null), _widget));
}
public void _setTitle(String title)
{
_title = title;
if(null != _tabHandle)
{
_tabHandle.setTitle(title);
}
}
@Override
public void addSmallTabButton(SmallTabButton smallTabButton)
{
_tabHandle.addSmallTabButton(smallTabButton);
}
@Override
public void removeSmallTabButton(SmallTabButton smallTabButton)
{
_tabHandle.removeSmallTabButton(smallTabButton);
}
public void _updateUI()
{
//To change body of implemented methods use File | Settings | File Templates.
}
public void _setVisible(boolean aFlag)
{
_visible = aFlag;
}
public void _addNotify()
{
//To change body of implemented methods use File | Settings | File Templates.
}
public void centerWithinDesktop()
{
//To change body of implemented methods use File | Settings | File Templates.
}
public Container getAwtContainer()
{
return null; //To change body of implemented methods use File | Settings | File Templates.
}
public void setContentPane(JPanel contentPane)
{
_contentPane = contentPane;
}
public void showOk(String msg)
{
//To change body of implemented methods use File | Settings | File Templates.
}
public Dimension getSize()
{
return null; //To change body of implemented methods use File | Settings | File Templates.
}
public void setSize(Dimension size)
{
//To change body of implemented methods use File | Settings | File Templates.
}
public void addFocusListener(FocusListener focusListener)
{
//To change body of implemented methods use File | Settings | File Templates.
}
public void removeFocusListener(FocusListener focusListener)
{
//To change body of implemented methods use File | Settings | File Templates.
}
public void addVetoableChangeListener(VetoableChangeListener vetoableChangeListener)
{
//To change body of implemented methods use File | Settings | File Templates.
}
public void removeVetoableChangeListener(VetoableChangeListener vetoableChangeListener)
{
//To change body of implemented methods use File | Settings | File Templates.
}
public JInternalFrame getInternalFrame()
{
return null; //To change body of implemented methods use File | Settings | File Templates.
}
public void setBounds(Rectangle rectangle)
{
_widget.setBounds(rectangle);
}
@Override
public Rectangle getBounds()
{
return _widget.getBounds();
}
public void setSelected(boolean b) throws PropertyVetoException
{
//To change body of implemented methods use File | Settings | File Templates.
}
public void setLayer(Integer layer)
{
//To change body of implemented methods use File | Settings | File Templates.
}
public void putClientProperty(Object key, Object prop)
{
_clientProperties.put(key, prop);
}
public Object getClientProperty(Object key)
{
return _clientProperties.get(key);
}
public void fireWidgetClosing()
{
_eventCaster.fireWidgetClosing(new WidgetEvent(new TabHandleEvent(_tabHandle, null), _widget));
}
public void fireWidgetClosed()
{
_eventCaster.fireWidgetClosed(new WidgetEvent(new TabHandleEvent(_tabHandle, null), _widget));
}
public void validate()
{
_contentPane.validate();
}
public void setFrameIcon(Icon icon)
{
_frameIcon = icon;
if(null != _tabHandle)
{
_tabHandle.setIcon(_frameIcon);
}
}
public void toFront()
{
//To change body of implemented methods use File | Settings | File Templates.
}
public void requestFocus()
{
//To change body of implemented methods use File | Settings | File Templates.
}
public void setMaximum(boolean b) throws PropertyVetoException
{
//To change body of implemented methods use File | Settings | File Templates.
}
public void setBorder(Border border)
{
//To change body of implemented methods use File | Settings | File Templates.
}
public void setPreferredSize(Dimension dimension)
{
//To change body of implemented methods use File | Settings | File Templates.
}
public boolean isToolWindow()
{
return false; //To change body of implemented methods use File | Settings | File Templates.
}
public boolean isClosed()
{
return false; //To change body of implemented methods use File | Settings | File Templates.
}
public boolean isIcon()
{
return false; //To change body of implemented methods use File | Settings | File Templates.
}
}