NAME

Tk::IDEtabFrame - Tabbed Notebook Widget for a IDE Environment

SYNOPSIS

    use Tk::IDEtabFrame;

    $TabbedFrame = $widget->IDEtabFrame
       (
        # Tk::DynaTabFrame Options:
        -font => $font,
        -raisecmd => \&raise_callback,
        -raisecolor => 'green',
        -tabclose => sub { 
                my ($dtf, $caption) = @_; 
                $dtf->delete($caption);
                },
        -tabcolor => 'yellow',
        -tabcurve => 2,
        -tablock => undef,
        -tabpadx => 5,
        -tabpady => 5,
        -tabrotate => 1,
        -tabside => 'nw',
        -tabscroll => undef,
        -textalign => 1,
        -tiptime => 600,
        -tipcolor => 'yellow',
	
	# Additional Options added by IDEtabFrame
	-raisedfg => 'black',
	-raisedActivefg => 'red',
	
	-raisedCloseButtonfg => 'black',
	-raisedCloseButtonbg => 'lightgrey',
	-raisedCloseButtonActivefg => 'red',
	-raisedCloseButtonActivebg => 'white',
	
	-noraisedfg => 'grey60',
	-noraisedActivefg => 'black',
	
	-noraisedCloseButtonfg => 'lightgrey',
	-noraisedCloseButtonbg => 'white',
	-noraisedCloseButtonActivefg => 'red',
	-noraisedCloseButtonActivebg => 'white',
	
        [normal frame options...],
	
       );

DESCRIPTION

This is a subclass of the Tk::DynaTabFrame widget that adds some additional options that affect the appearance and behaviour for use as part of a Integrated Development Environment (IDE), similar to Eclipse, etc.

DRAG-DROP SUPPORT

Tabs can be dragged to the tab-frame area of other (or the same) IDEtabFrame widget. This will move the dragged tab and widget to the new IDEtabFrame widget.

Tabs can also be dragged outside the widget to become separate Tool-Windows. These windows can be dragged from a drag-area at the top of the Tool-Window and dropped back into a IDEtabFrame widget.

OPTIONS

In addition to the options from the parent class Tk::DynaTabFrame, this widget provides the following options:

raisedfg

Foreground color of the notebook tab that has been raised.

raisedActivefg

Active foreground color (i.e. the color when the mouse hovers over it) of the notebook tab that has been raised.

raisedCloseButtonfg

Foreground color of the Close button (i.e. the 'X') for the raised tab.

raisedCloseButtonbg

Background color of the Close button for the raised tab.

raisedCloseButtonActivefg

Active foreground color (i.e. the color when the mouse hovers over it) of the Close button for the raised tab.

raisedCloseButtonActivebg

Active background color (i.e. the color when the mouse hovers over it) of the Close button for the raised tab.

noraisedfg

Foreground color of the notebook tabs that have not been raised.

noraisedActivefg

Active foreground color (i.e. the color when the mouse hovers over it) of the notebook tabs not raised.

noraisedCloseButtonfg

Foreground color of the Close button (i.e. the 'X') for the tabs not raised.

noraisedCloseButtonbg

Background color of the Close button for tabs not raised.

noraisedCloseButtonActivefg

Active foreground color (i.e. the color when the mouse hovers over it) of the Close button for the tabs not raised.

noraisedCloseButtonActivebg

Active background color (i.e. the color when the mouse hovers over it) of the Close button for the tabs not raised.

defaultFrameConfig

Array Ref of default options used to create new tab-frames. Defaults to

(-relief => 'flat', -bg => 'steelblue4', -bd => 2)
lastTabDeleteCallback

Optional Callback (i.e. subref) to execute after when the last tab is deleted. This can be used to perform cleanup, remove/unpack the tabframe from the parent display, etc.

ATTRIBUTES

dragImage

Tk::Photo object of the image displayed when dragging data. Optional.

dropSite

Tk::DropSite object of attached to the tab frame for the notebook widget. This provides a drop target for dropping other widgets into the notebook as new tabs.

dragShadow

Tk::IDEdragShadow object used to show drag/drop drop targets.

endDragActions

Array Refs of callbacks to execute at the end of a drag operation. Typically this will be set to delete or add a tab to the dialog after a drag operation has been completed.

dragging

Flag = 1 if we are currently in a drag operation for this object.

Class Data

Dropbox

Hash of objects. Since the Tk Drag/Drop mechanism only supports passing strings around, this hash is used as a "dropbox" where the source can put a object in this hash, key'ed by a text name. This name is passed to the target (i.e. the drop location). The target can use the string to lookup the real object in this hash.

Methods

TabCreate

Over-ridden method to create tabs.

Calls the parent tabCreate, then applies extra look options

TabRaise

Over-ridden method to raise a tab

Calls the parent TabRase, then applies extra look options

startDrag

Method called with a drag operation starts. Changes drag cursor.

endDrag

Method called when a drag operation end. Clears out the currentDrag class data.

dragImage

Gets (and optionally sets) the value of the object's dragImage object

Usage:

$self->dragImage();    # Get dragImage
$self->dragImage(...); # Set dragImage

dragDropEnterLeave

Method called when dragging and the mouse pointer enters or leaves a drop area.

drop

Method called when accepting a drop from a drag-drop operation

toolWindowConfigure

Method to configure a "toolwindow" so that it can be dragged back into a tab window.

Bindings are setup so moving the window just moves a frame.

Usage:

$self->toolWindowConfigure($toolwindow);

endDragTW

Method called when a Tool-Window drag operation ends.

If not dropping back into a tab-frame, moves the toolwindow to the dragged position.

TabRemove

Overridden TabRemove method.

This calls the parent TabRemove and the calls the lastTabDeleteCallback if all the tabs have been deleted

tabclose

Overridden tabclose method.

If the tabclose option is 1, this installs a callback to our TabRemove, rather than the default Tk::DynaTabFrame::TabRemove.

Because Tk::DynaTabFrame calls its TabRemove directly (Using \&TabRemove), rather than by a method call, this tabclose method is needed to call our overriden TabRemove method.

The default code ref installed here is called when the close button pressed on the tab. It explicitly destroys the widget contained in the tab. This is needed because the widgets in IDElayout are created as childs of the main widget, and not childs of the IDEtabframe widget. This is done so the widgets can be dragged around in the GUI.

Since the widgets are created as childs of the main window, and not the IDEtabframe tabs, just deleting the tab won't delete the widget. So we delete it manually here.

1 POD Error

The following errors were encountered while parsing the POD:

Around line 180:

You forgot a '=back' before '=head1'