The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Padre::Wx::TextEntryDialog::History;

use 5.008;
use strict;
use warnings;
use Params::Util ();
use Padre::DB    ();
use Padre::Wx    ();

use Class::Adapter::Builder
	ISA      => 'Wx::TextEntryDialog',
	AUTOLOAD => 1;

our $VERSION    = '1.00';
our $COMPATIBLE = '0.26';

sub new {
	my $class  = shift;
	my @params = @_;

	# Instead of using the default value directly search using it
	# as a type value in the database history table.
	my $type = $params[3];
	$params[3] = Padre::DB::History->previous($type);
	if ( Params::Util::_INSTANCE( $params[3], 'Padre::DB::History' ) ) {
		$params[3] = $params[3]->name;
	}
	unless ( defined $params[3] ) {
		$params[3] = '';
	}

	# Create the object
	my $object = Wx::TextEntryDialog->new(@params);

	# Create the adapter
	my $self = $class->SUPER::new($object);

	# Remember what we suggested to them
	$self->{type}      = $type;
	$self->{suggested} = $params[3];

	return $self;
}

sub ShowModal {
	my $self = shift;

	# Get the return value as normal
	my $rv = $self->{OBJECT}->ShowModal(@_);
	unless ( $rv == Wx::ID_OK ) {

		# They hit Cancel
		return $rv;
	}

	# Shortcut return if they didn't enter anything
	my $value = $self->GetValue;
	unless ( defined $value and $value ne '' ) {
		return $rv;
	}

	# If they entered something different add it to the history.
	unless ( defined $self->{suggested} and $self->{suggested} eq $value ) {
		Padre::DB::History->create(
			type => $self->{type},
			name => $value,
		);
	}

	return $rv;
}

1;

# Copyright 2008-2013 The Padre development team as listed in Padre.pm.
# LICENSE
# This program is free software; you can redistribute it and/or
# modify it under the same terms as Perl 5 itself.