REOPENED - bug 356790: configure all projects for Unix file endings 
https://bugs.eclipse.org/bugs/show_bug.cgi?id=356790
diff --git a/connector-tutorial/org.eclipse.mylyn.xml1.core/.settings/org.eclipse.core.runtime.prefs b/connector-tutorial/org.eclipse.mylyn.xml1.core/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/connector-tutorial/org.eclipse.mylyn.xml1.core/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/connector-tutorial/org.eclipse.mylyn.xml1.ui/.settings/org.eclipse.core.runtime.prefs b/connector-tutorial/org.eclipse.mylyn.xml1.ui/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/connector-tutorial/org.eclipse.mylyn.xml1.ui/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/connector-tutorial/org.eclipse.mylyn.xml2.core/.settings/org.eclipse.core.runtime.prefs b/connector-tutorial/org.eclipse.mylyn.xml2.core/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/connector-tutorial/org.eclipse.mylyn.xml2.core/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/connector-tutorial/org.eclipse.mylyn.xml2.ui/.settings/org.eclipse.core.runtime.prefs b/connector-tutorial/org.eclipse.mylyn.xml2.ui/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/connector-tutorial/org.eclipse.mylyn.xml2.ui/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/connector-tutorial/org.eclipse.mylyn.xml3.core/.settings/org.eclipse.core.runtime.prefs b/connector-tutorial/org.eclipse.mylyn.xml3.core/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/connector-tutorial/org.eclipse.mylyn.xml3.core/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/connector-tutorial/org.eclipse.mylyn.xml3.ui/.settings/org.eclipse.core.runtime.prefs b/connector-tutorial/org.eclipse.mylyn.xml3.ui/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/connector-tutorial/org.eclipse.mylyn.xml3.ui/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/org.eclipse.mylyn.examples.bugzilla/.settings/org.eclipse.core.runtime.prefs b/org.eclipse.mylyn.examples.bugzilla/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/org.eclipse.mylyn.examples.bugzilla/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/org.eclipse.mylyn.examples.hudson.standalone/.settings/org.eclipse.core.runtime.prefs b/org.eclipse.mylyn.examples.hudson.standalone/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/org.eclipse.mylyn.examples.hudson.standalone/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/org.eclipse.mylyn.examples.monitor.study/.settings/org.eclipse.core.runtime.prefs b/org.eclipse.mylyn.examples.monitor.study/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/org.eclipse.mylyn.examples.monitor.study/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/org.eclipse.mylyn.examples.monitor.study/META-INF/MANIFEST.MF b/org.eclipse.mylyn.examples.monitor.study/META-INF/MANIFEST.MF
index fdf66b4..5297ea1 100644
--- a/org.eclipse.mylyn.examples.monitor.study/META-INF/MANIFEST.MF
+++ b/org.eclipse.mylyn.examples.monitor.study/META-INF/MANIFEST.MF
@@ -1,25 +1,25 @@
-Manifest-Version: 1.0

-Bundle-ManifestVersion: 2

-Bundle-Name: Mylyn User Monitor (Incubation)

-Bundle-SymbolicName: org.eclipse.mylyn.monitor.study;singleton:=true

-Bundle-Version: 1.0.0

-Bundle-Activator: org.eclipse.mylyn.examples.monitor.study.MylynUserStudyExamplePlugin

-Require-Bundle: org.eclipse.ui,

- org.eclipse.core.runtime,

- org.eclipse.mylyn.context.core,

- org.eclipse.core.resources,

- org.eclipse.jdt.ui,

- org.eclipse.pde.ui,

- org.eclipse.ui.editors,

- org.eclipse.jdt.core,

- org.eclipse.jface.text,

- org.eclipse.ui.workbench.texteditor,

- org.eclipse.mylyn.monitor.usage,

- org.eclipse.mylyn.monitor.ui,

- org.eclipse.mylyn.monitor.core,

- org.eclipse.mylyn.commons.net,

- org.eclipse.mylyn.commons.core;bundle-version="[3.0.0,4.0.0)"

-Eclipse-AutoStart: true

-Export-Package: org.eclipse.mylyn.examples.monitor.study

-Bundle-Vendor: Eclipse Mylyn

-Bundle-RequiredExecutionEnvironment: J2SE-1.5

+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Mylyn User Monitor (Incubation)
+Bundle-SymbolicName: org.eclipse.mylyn.monitor.study;singleton:=true
+Bundle-Version: 1.0.0
+Bundle-Activator: org.eclipse.mylyn.examples.monitor.study.MylynUserStudyExamplePlugin
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.mylyn.context.core,
+ org.eclipse.core.resources,
+ org.eclipse.jdt.ui,
+ org.eclipse.pde.ui,
+ org.eclipse.ui.editors,
+ org.eclipse.jdt.core,
+ org.eclipse.jface.text,
+ org.eclipse.ui.workbench.texteditor,
+ org.eclipse.mylyn.monitor.usage,
+ org.eclipse.mylyn.monitor.ui,
+ org.eclipse.mylyn.monitor.core,
+ org.eclipse.mylyn.commons.net,
+ org.eclipse.mylyn.commons.core;bundle-version="[3.0.0,4.0.0)"
+Eclipse-AutoStart: true
+Export-Package: org.eclipse.mylyn.examples.monitor.study
+Bundle-Vendor: Eclipse Mylyn
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/org.eclipse.mylyn.examples.monitor.study/scripts/getUID.cgi b/org.eclipse.mylyn.examples.monitor.study/scripts/getUID.cgi
index b70a409..b2ac4ee 100644
--- a/org.eclipse.mylyn.examples.monitor.study/scripts/getUID.cgi
+++ b/org.eclipse.mylyn.examples.monitor.study/scripts/getUID.cgi
@@ -1,526 +1,526 @@
-#!/usr/bin/perl -wT

-

-use Fcntl ':flock';

-

-# START USER EDITS

-

-# absolute path to folder files will be uploaded to.

-# WINDOWS users, your path would like something like : images\\uploads

-# UNIX    users, your path would like something like : /home/www/images/uploads

-# do not end the path with any slashes and if you're on a UNIX serv, make sure

-# you CHMOD each folder in the path to 777

-

-$lockfileName = ".lock";

-$logFile = "/.../uploadLog.txt";

-$uidMapFile = "/.../mylarUidMap.txt";

-$nextUidFile = "/.../mylarNextUid.txt";

-$allConsentedUsers = "/.../mylarUsers.txt";

-

-# if you would like to be notified of uploads, enter your email address

-# between the SINGLE quotes. leave this blank if you would not like to be notified

-#$notify = '';

-

-# UNIX users, if you entered a value for $notify, you must also enter your

-# server's sendmail path. It usually looks something like : /usr/sbin/sendmail

-#$send_mail_path = "";

-

-# WINDOWS users, if you entered a value for $notify, you must also enter your

-# server's SMTP path. It usually looks something like : mail.servername.com

-#$smtp_path = "";

-

-

-####################################################################

-#    END USER EDITS

-####################################################################

-

-$OS = $^O; # operating system name

-if($OS =~ /darwin/i) { $isUNIX = 1; }

-elsif($OS =~ /win/i) { $isWIN = 1; }

-else {$isUNIX = 1;}

-	

-if($isWIN){ $S{S} = "\\\\"; }

-else { $S{S} = "/";} # seperator used in paths

-

-use CGI; # load the CGI.pm module

-my $GET = new CGI; # create a new object

-my @VAL = $GET->param; #get all form field names

-

-my($query_string) = "";

-$query_string = $ENV{'QUERY_STRING'};

-

-my($firstName);

-my($lastName);

-my($email_address);

-my($job_function);

-my($company_size);

-my($company_buisness);

-my($anonymousStr);

-my($uid) = -1;

-my($anonymous) = 0;

-my($first);

-my($second);

-my($third);

-my($fourth);

-my($fifth);

-my($sixth);

-my($seventh);

-	

-if($query_string =~ m/^(.+)\&(.+)\&(.+)\&(.+)\&(.+)\&(.+)\&(.+)$/)

-{

-	$first = $1;

-	$second = $2;

-	$third = $3;

-	$fourth = $4;

-	$fifth = $5;

-	$sixth = $6;

-	$seventh = $7;

-}

-else

-{

-	# error, query string is wrong

-	print "Content-type: text/plain", "\n";

-	print "Status: 501 Not Implemented", "\n\n";

-	exit;

-}

-

-if($first =~ m/^firstName\=(.+)$/){

-	$firstName = $1;

-}

-elsif($second =~ m/^firstName\=(.+)$/){

-	$firstName = $1;

-}

-elsif ($third =~ m/^firstName\=(.+)$/){

-	$firstName = $1;

-}

-elsif ($fourth =~ m/^firstName\=(.+)$/){

-	$firstName = $1;

-}

-elsif ($fifth =~ m/^firstName\=(.+)$/){

-	$firstName = $1;

-}

-elsif ($sixth =~ m/^firstName\=(.+)$/){

-	$firstName = $1;

-}

-elsif ($seventh =~ m/^firstName\=(.+)$/){

-	$firstName = $1;

-}

-

-if($first =~ m/^lastName\=(.+)$/){

-	$lastName = $1;

-}

-elsif($second =~ m/^lastName\=(.+)$/){

-	$lastName = $1;

-}

-elsif ($third =~ m/^lastName\=(.+)$/){

-	$lastName = $1;

-}

-elsif ($fourth =~ m/^lastName\=(.+)$/){

-	$lastName = $1;

-}

-elsif ($fifth =~ m/^lastName\=(.+)$/){

-	$lastName = $1;

-}

-elsif ($sixth =~ m/^lastName\=(.+)$/){

-	$lastName = $1;

-}

-elsif ($seventh =~ m/^lastName\=(.+)$/){

-	$lastName = $1;

-}

-

-if($first =~ m/^email\=(.+)$/){

-	$email_address = $1;

-}

-elsif($second =~ m/^email\=(.+)$/){

-	$email_address = $1;

-}

-elsif ($third =~ m/^email\=(.+)$/){

-	$email_address = $1;

-}

-elsif ($fourth =~ m/^email\=(.+)$/){

-	$email_address= $1;

-}

-elsif ($fifth =~ m/^email\=(.+)$/){

-	$email_address= $1;

-}

-elsif ($sixth =~ m/^email\=(.+)$/){

-	$email_address = $1;

-}

-elsif ($seventh =~ m/^email\=(.+)$/){

-	$email_address= $1;

-}

-

-if($first =~ m/^jobFunction\=(.+)$/){

-	$job_function = $1;

-}

-elsif($second =~ m/^jobFunction\=(.+)$/){

-	$job_function = $1;

-}

-elsif ($third =~ m/^jobFunction\=(.+)$/){

-	$job_function = $1;

-}

-elsif ($fourth =~ m/^jobFunction\=(.+)$/){

-	$job_function= $1;

-}

-elsif ($fifth =~ m/^jobFunction\=(.+)$/){

-	$job_function = $1;

-}

-elsif ($sixth =~ m/^jobFunction\=(.+)$/){

-	$job_function = $1;

-}

-elsif ($seventh =~ m/^jobFunction\=(.+)$/){

-	$job_function = $1;

-}

-

-if($first =~ m/^companySize\=(.+)$/){

-	$company_size = $1;

-}

-elsif($second =~ m/^companySize\=(.+)$/){

-	$company_size = $1;

-}

-elsif ($third =~ m/^companySize\=(.+)$/){

-	$company_size = $1;

-}

-elsif ($fourth =~ m/^companySize\=(.+)$/){

-	$company_size = $1;

-}

-elsif ($fifth =~ m/^companySize\=(.+)$/){

-	$company_size = $1;

-}

-elsif ($sixth =~ m/^companySize\=(.+)$/){

-	$company_size = $1;

-}

-elsif ($seventh =~ m/^companySize\=(.+)$/){

-	$company_size = $1;

-}

-

-if($first =~ m/^companyBuisness\=(.+)$/){

-	$company_buisness = $1;

-}

-elsif($second =~ m/^companyBuisness\=(.+)$/){

-	$company_buisness = $1;

-}

-elsif ($third =~ m/^companyBuisness\=(.+)$/){

-	$company_buisness = $1;

-}

-elsif ($fourth =~ m/^companyBuisness\=(.+)$/){

-	$company_buisness = $1;

-}

-elsif ($fifth =~ m/^companyBuisness\=(.+)$/){

-	$company_buisness = $1;

-}

-elsif ($sixth =~ m/^companyBuisness\=(.+)$/){

-	$company_buisness = $1;

-}

-elsif ($seventh =~ m/^companyBuisness\=(.+)$/){

-	$company_buisness = $1;

-}

-

-

-if($first =~ m/^anonymous\=(.+)$/){

-	$anonymousStr = $1;

-}

-elsif($second =~ m/^anonymous\=(.+)$/){

-	$anonymousStr = $1;

-}

-elsif ($third =~ m/^anonymous\=(.+)$/){

-	$anonymousStr = $1;

-}

-elsif ($fourth =~ m/^anonymous\=(.+)$/){

-	$anonymousStr = $1;

-}

-elsif ($fifth =~ m/^anonymous\=(.+)$/){

-	$anonymousStr = $1;

-}

-elsif ($sixth =~ m/^anonymous\=(.+)$/){

-	$anonymousStr = $1;

-}

-elsif ($seventh =~ m/^anonymous\=(.+)$/){

-	$anonymousStr = $1;

-}

-

-if ($anonymousStr =~ "true") {

-	$anonymous = 1;

-}

-

-open(USERS, "+<$allConsentedUsers ") || die "Can't open Log File: $!\n"; 

-seek USERS, 0, 2;

-print USERS "$firstName\t$lastName\t$email_address\t$job_function\t$company_size\t$company_buisness\n";

-close USERS;

-

-if($anonymous != 1){

-	# give them the same id as before

-	my($old) = &checkExistance($firstName, $lastName, $email_address);

-	if($old == -1){

-		$uid = &getNewUID($firstName, $lastName, $email_address);

-	}

-	else{

-		$uid = $old;

-	}

-}

-else

-{

-	$uid = &getNewUID("anonymous", "anonymous", "anonymous");

-}

-

-if($uid != -1)

-{

-	print "Content-type: text/plain", "\n";

-	print "Status: 200 OK", "\n\n";

-	print "UID: $uid" . "\n";

-	exit;

-}

-else

-{

-	print "Content-type: text/plain", "\n";

-	print "Status: 501 Not Implemented", "\n\n";

-	print "COULD NOT GET UID" . "\n";

-	exit;

-}

-

-

-#################################################################### 

-

-#################################################################### 

-

-sub send_mail {

-	my ($from_email, $from_name, $to_email, $to_name, $subject, $message ) = @_;

-	

-	if(open(MAIL, "|$CONFIG{mailprogram} -t")) {

-		print MAIL "From: $from_email ($from_name)\n";

-		print MAIL "To: $to_email ($to_name)\n";

-		print MAIL "Subject: $subject\n";

-		print MAIL "$message\n\nSubmitter's IP Address : $ENV{REMOTE_ADDR}";

-		close MAIL;

-		return(1);

-	} else {

-		return;

-	}

-}

-

-#################################################################### 

-

-#################################################################### 

-

-sub send_mail_NT {

-	

-	my ($from_email, $from_name, $to_email, $to_name, $subject, $message ) = @_;

-	

-	my ($SMTP_SERVER, $WEB_SERVER, $status, $err_message);

-	use Socket; 

-    $SMTP_SERVER = "$CONFIG{smtppath}";                                 

-	

-	# correct format for "\n"

-    local($CRLF) = "\015\012";

-    local($SMTP_SERVER_PORT) = 25;

-    local($AF_INET) = ($] > 5 ? AF_INET : 2);

-    local($SOCK_STREAM) = ($] > 5 ? SOCK_STREAM : 1);

-#    local(@bad_addresses) = ();

-    $, = ', ';

-    $" = ', ';

-

-    $WEB_SERVER = "$CONFIG{smtppath}\n";

-    chop ($WEB_SERVER);

-

-    local($local_address) = (gethostbyname($WEB_SERVER))[4];

-    local($local_socket_address) = pack('S n a4 x8', $AF_INET, 0, $local_address);

-

-    local($server_address) = (gethostbyname($SMTP_SERVER))[4];

-    local($server_socket_address) = pack('S n a4 x8', $AF_INET, $SMTP_SERVER_PORT, $server_address);

-

-    # Translate protocol name to corresponding number

-    local($protocol) = (getprotobyname('tcp'))[2];

-

-    # Make the socket filehandle

-    if (!socket(SMTP, $AF_INET, $SOCK_STREAM, $protocol)) {

-        return;

-    }

-

-	# Give the socket an address

-	bind(SMTP, $local_socket_address);

-	

-	# Connect to the server

-	if (!(connect(SMTP, $server_socket_address))) {

-		return;

-	}

-	

-	# Set the socket to be line buffered

-	local($old_selected) = select(SMTP);

-	$| = 1;

-	select($old_selected);

-	

-	# Set regex to handle multiple line strings

-	$* = 1;

-

-    # Read first response from server (wait for .75 seconds first)

-    select(undef, undef, undef, .75);

-    sysread(SMTP, $_, 1024);

-	#print "<P>1:$_";

-

-    print SMTP "HELO $WEB_SERVER$CRLF";

-    sysread(SMTP, $_, 1024);

-	#print "<P>2:$_";

-

-	while (/(^|(\r?\n))[^0-9]*((\d\d\d).*)$/g) { $status = $4; $err_message = $3}

-	if ($status != 250) {

-		return;

-	}

-

-	print SMTP "MAIL FROM:<$from_email>$CRLF";

-

-	sysread(SMTP, $_, 1024);

-	#print "<P>3:$_";

-	if (!/[^0-9]*250/) {

-		return;

-	}

-

-    # Tell the server where we're sending to

-	print SMTP "RCPT TO:<$to_email>$CRLF";

-	sysread(SMTP, $_, 1024);

-	#print "<P>4:$_";

-	/[^0-9]*(\d\d\d)/;

-

-	# Give the server the message header

-	print SMTP "DATA$CRLF";

-	sysread(SMTP, $_, 1024);

-	#print "<P>5:$_";

-	if (!/[^0-9]*354/) {

-		return;

-	}

-

-	$message =~ s/\n/$CRLF/ig;

-	

-	print SMTP qq~From: $from_email ($from_name)$CRLF~;

-	print SMTP qq~To: $to_email ($to_name)$CRLF~;

-#	if($cc){

-#		print SMTP "CC: $cc ($cc_name)\n";

-#	}

-	print SMTP qq~Subject: $subject$CRLF$CRLF~;

-	print SMTP qq~$message~;

-

-	print SMTP "$CRLF.$CRLF";

-	sysread(SMTP, $_, 1024);

-	#print "<P>6:$_";

-	if (!/[^0-9]*250/) {

-		return;

-	} else {

-		return(1);

-	}

-

-	if (!shutdown(SMTP, 2)) {

-		return;

-    } 

-}

-

-#################################################################### 

-

-#################################################################### 

-

-sub check_email {

-	my($fe_email) = $_[0];

-	if($fe_email) {

-		if(($fe_email =~ /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)|(\.$)/) ||

-		($fe_email !~ /^.+@\[?(\w|[-.])+\.[a-zA-Z]{2,3}|[0-9]{1,3}\]?$/)) {

-			return;

-		} else { return(1) }

-	} else {

-		return;

-	}

-}

-#################################################################### 

-

-#################################################################### 

-

-sub getNewUID {

-	my($firstName, $lastName, $email_address) = @_;

-

-	open(LOCKFILE, $lockfileName);

-    	flock(LOCKFILE, LOCK_EX);

-

-	open(NEXTUID, "<$nextUidFile") || die "Can't open Log File: $!\n"; 

-	my($uid) = -1;

-	my(@lines) = <NEXTUID>;

-	my($line) = "";

-	foreach $line (@lines)

-	{

-		if($line =~ m/^(\d+)$/)

-		{

-			$uid = $1;		   

-			last;

-		}

-	}		

-	close NEXTUID;

-

-	my($nextUid) = $uid + 17;

-	open(NEXTUID, ">$nextUidFile") || die "Can't open Log File: $!\n"; 

-	print NEXTUID $nextUid;		

-	close NEXTUID;

-	    	

-

-	open(UIDMAP, "+<$uidMapFile") || die "Can't open Log File: $!\n"; 	

-	seek UIDMAP, 0, 2;

-	print UIDMAP "$uid\t$firstName\t$lastName\t$email_address\n";	

-	close UIDMAP;

-

-	flock(LOCKFILE, LOCK_UN);

-	close LOCKFILE;

-	return $uid;

-

-}

-#################################################################### 

-

-#################################################################### 

-

-sub checkExistance {

-	my($firstName, $lastName, $email_address) = @_;

-	my($uid) = -1;

-

-	open(LOCKFILE, $lockfileName);

-    	flock(LOCKFILE, LOCK_EX);

-    	

-	open(UIDMAP, $uidMapFile) || die "Can't open Log File: $!\n"; 

-	my(@lines) = <UIDMAP>;

-	my($line) = "";

-	foreach $line (@lines)

-	{

-		if($line =~ m/^(\d+)\t$firstName\t$lastName\t$email_address$/)

-		{

-			$uid = $1;

-			last;

-		}

-	}

-	close UIDMAP;

-

-	flock(LOCKFILE, LOCK_UN);

-	close LOCKFILE;

-	return $uid;

-}

-

-#################################################################### 

-

-#################################################################### 

-

-sub log {

-	open(LOCKFILE, $lockfileName);

-	flock(LOCKFILE, LOCK_EX);

-    	

-	open(LOG, "+<$logFile") || die "Can't open Log File: $!\n"; 

-    

-	seek LOG, 0, 2;

-	print LOG $_[0] . "\t\t";	

-

-	my ($sec,$min,$hour,$mday,$mon,$year, $wday,$yday,$isdst) = localtime time;

-

-	# update the year so that it is correct since it perl

-	# has a 1900 yr offset	

-	$year += 1900;

-

-	# update the month since it is 0 based in perl	

-	$mon += 1;

-	

-	printf LOG "%02d/%02d/%04d %02d:%02d:%02d\n", $mday, $mon, $year, $hour, $min, $sec;

-	

-	close LOG;

-	

-	flock(LOCKFILE, LOCK_UN);

-    close LOCKFILE;

-}

+#!/usr/bin/perl -wT
+
+use Fcntl ':flock';
+
+# START USER EDITS
+
+# absolute path to folder files will be uploaded to.
+# WINDOWS users, your path would like something like : images\\uploads
+# UNIX    users, your path would like something like : /home/www/images/uploads
+# do not end the path with any slashes and if you're on a UNIX serv, make sure
+# you CHMOD each folder in the path to 777
+
+$lockfileName = ".lock";
+$logFile = "/.../uploadLog.txt";
+$uidMapFile = "/.../mylarUidMap.txt";
+$nextUidFile = "/.../mylarNextUid.txt";
+$allConsentedUsers = "/.../mylarUsers.txt";
+
+# if you would like to be notified of uploads, enter your email address
+# between the SINGLE quotes. leave this blank if you would not like to be notified
+#$notify = '';
+
+# UNIX users, if you entered a value for $notify, you must also enter your
+# server's sendmail path. It usually looks something like : /usr/sbin/sendmail
+#$send_mail_path = "";
+
+# WINDOWS users, if you entered a value for $notify, you must also enter your
+# server's SMTP path. It usually looks something like : mail.servername.com
+#$smtp_path = "";
+
+
+####################################################################
+#    END USER EDITS
+####################################################################
+
+$OS = $^O; # operating system name
+if($OS =~ /darwin/i) { $isUNIX = 1; }
+elsif($OS =~ /win/i) { $isWIN = 1; }
+else {$isUNIX = 1;}
+	
+if($isWIN){ $S{S} = "\\\\"; }
+else { $S{S} = "/";} # seperator used in paths
+
+use CGI; # load the CGI.pm module
+my $GET = new CGI; # create a new object
+my @VAL = $GET->param; #get all form field names
+
+my($query_string) = "";
+$query_string = $ENV{'QUERY_STRING'};
+
+my($firstName);
+my($lastName);
+my($email_address);
+my($job_function);
+my($company_size);
+my($company_buisness);
+my($anonymousStr);
+my($uid) = -1;
+my($anonymous) = 0;
+my($first);
+my($second);
+my($third);
+my($fourth);
+my($fifth);
+my($sixth);
+my($seventh);
+	
+if($query_string =~ m/^(.+)\&(.+)\&(.+)\&(.+)\&(.+)\&(.+)\&(.+)$/)
+{
+	$first = $1;
+	$second = $2;
+	$third = $3;
+	$fourth = $4;
+	$fifth = $5;
+	$sixth = $6;
+	$seventh = $7;
+}
+else
+{
+	# error, query string is wrong
+	print "Content-type: text/plain", "\n";
+	print "Status: 501 Not Implemented", "\n\n";
+	exit;
+}
+
+if($first =~ m/^firstName\=(.+)$/){
+	$firstName = $1;
+}
+elsif($second =~ m/^firstName\=(.+)$/){
+	$firstName = $1;
+}
+elsif ($third =~ m/^firstName\=(.+)$/){
+	$firstName = $1;
+}
+elsif ($fourth =~ m/^firstName\=(.+)$/){
+	$firstName = $1;
+}
+elsif ($fifth =~ m/^firstName\=(.+)$/){
+	$firstName = $1;
+}
+elsif ($sixth =~ m/^firstName\=(.+)$/){
+	$firstName = $1;
+}
+elsif ($seventh =~ m/^firstName\=(.+)$/){
+	$firstName = $1;
+}
+
+if($first =~ m/^lastName\=(.+)$/){
+	$lastName = $1;
+}
+elsif($second =~ m/^lastName\=(.+)$/){
+	$lastName = $1;
+}
+elsif ($third =~ m/^lastName\=(.+)$/){
+	$lastName = $1;
+}
+elsif ($fourth =~ m/^lastName\=(.+)$/){
+	$lastName = $1;
+}
+elsif ($fifth =~ m/^lastName\=(.+)$/){
+	$lastName = $1;
+}
+elsif ($sixth =~ m/^lastName\=(.+)$/){
+	$lastName = $1;
+}
+elsif ($seventh =~ m/^lastName\=(.+)$/){
+	$lastName = $1;
+}
+
+if($first =~ m/^email\=(.+)$/){
+	$email_address = $1;
+}
+elsif($second =~ m/^email\=(.+)$/){
+	$email_address = $1;
+}
+elsif ($third =~ m/^email\=(.+)$/){
+	$email_address = $1;
+}
+elsif ($fourth =~ m/^email\=(.+)$/){
+	$email_address= $1;
+}
+elsif ($fifth =~ m/^email\=(.+)$/){
+	$email_address= $1;
+}
+elsif ($sixth =~ m/^email\=(.+)$/){
+	$email_address = $1;
+}
+elsif ($seventh =~ m/^email\=(.+)$/){
+	$email_address= $1;
+}
+
+if($first =~ m/^jobFunction\=(.+)$/){
+	$job_function = $1;
+}
+elsif($second =~ m/^jobFunction\=(.+)$/){
+	$job_function = $1;
+}
+elsif ($third =~ m/^jobFunction\=(.+)$/){
+	$job_function = $1;
+}
+elsif ($fourth =~ m/^jobFunction\=(.+)$/){
+	$job_function= $1;
+}
+elsif ($fifth =~ m/^jobFunction\=(.+)$/){
+	$job_function = $1;
+}
+elsif ($sixth =~ m/^jobFunction\=(.+)$/){
+	$job_function = $1;
+}
+elsif ($seventh =~ m/^jobFunction\=(.+)$/){
+	$job_function = $1;
+}
+
+if($first =~ m/^companySize\=(.+)$/){
+	$company_size = $1;
+}
+elsif($second =~ m/^companySize\=(.+)$/){
+	$company_size = $1;
+}
+elsif ($third =~ m/^companySize\=(.+)$/){
+	$company_size = $1;
+}
+elsif ($fourth =~ m/^companySize\=(.+)$/){
+	$company_size = $1;
+}
+elsif ($fifth =~ m/^companySize\=(.+)$/){
+	$company_size = $1;
+}
+elsif ($sixth =~ m/^companySize\=(.+)$/){
+	$company_size = $1;
+}
+elsif ($seventh =~ m/^companySize\=(.+)$/){
+	$company_size = $1;
+}
+
+if($first =~ m/^companyBuisness\=(.+)$/){
+	$company_buisness = $1;
+}
+elsif($second =~ m/^companyBuisness\=(.+)$/){
+	$company_buisness = $1;
+}
+elsif ($third =~ m/^companyBuisness\=(.+)$/){
+	$company_buisness = $1;
+}
+elsif ($fourth =~ m/^companyBuisness\=(.+)$/){
+	$company_buisness = $1;
+}
+elsif ($fifth =~ m/^companyBuisness\=(.+)$/){
+	$company_buisness = $1;
+}
+elsif ($sixth =~ m/^companyBuisness\=(.+)$/){
+	$company_buisness = $1;
+}
+elsif ($seventh =~ m/^companyBuisness\=(.+)$/){
+	$company_buisness = $1;
+}
+
+
+if($first =~ m/^anonymous\=(.+)$/){
+	$anonymousStr = $1;
+}
+elsif($second =~ m/^anonymous\=(.+)$/){
+	$anonymousStr = $1;
+}
+elsif ($third =~ m/^anonymous\=(.+)$/){
+	$anonymousStr = $1;
+}
+elsif ($fourth =~ m/^anonymous\=(.+)$/){
+	$anonymousStr = $1;
+}
+elsif ($fifth =~ m/^anonymous\=(.+)$/){
+	$anonymousStr = $1;
+}
+elsif ($sixth =~ m/^anonymous\=(.+)$/){
+	$anonymousStr = $1;
+}
+elsif ($seventh =~ m/^anonymous\=(.+)$/){
+	$anonymousStr = $1;
+}
+
+if ($anonymousStr =~ "true") {
+	$anonymous = 1;
+}
+
+open(USERS, "+<$allConsentedUsers ") || die "Can't open Log File: $!\n"; 
+seek USERS, 0, 2;
+print USERS "$firstName\t$lastName\t$email_address\t$job_function\t$company_size\t$company_buisness\n";
+close USERS;
+
+if($anonymous != 1){
+	# give them the same id as before
+	my($old) = &checkExistance($firstName, $lastName, $email_address);
+	if($old == -1){
+		$uid = &getNewUID($firstName, $lastName, $email_address);
+	}
+	else{
+		$uid = $old;
+	}
+}
+else
+{
+	$uid = &getNewUID("anonymous", "anonymous", "anonymous");
+}
+
+if($uid != -1)
+{
+	print "Content-type: text/plain", "\n";
+	print "Status: 200 OK", "\n\n";
+	print "UID: $uid" . "\n";
+	exit;
+}
+else
+{
+	print "Content-type: text/plain", "\n";
+	print "Status: 501 Not Implemented", "\n\n";
+	print "COULD NOT GET UID" . "\n";
+	exit;
+}
+
+
+#################################################################### 
+
+#################################################################### 
+
+sub send_mail {
+	my ($from_email, $from_name, $to_email, $to_name, $subject, $message ) = @_;
+	
+	if(open(MAIL, "|$CONFIG{mailprogram} -t")) {
+		print MAIL "From: $from_email ($from_name)\n";
+		print MAIL "To: $to_email ($to_name)\n";
+		print MAIL "Subject: $subject\n";
+		print MAIL "$message\n\nSubmitter's IP Address : $ENV{REMOTE_ADDR}";
+		close MAIL;
+		return(1);
+	} else {
+		return;
+	}
+}
+
+#################################################################### 
+
+#################################################################### 
+
+sub send_mail_NT {
+	
+	my ($from_email, $from_name, $to_email, $to_name, $subject, $message ) = @_;
+	
+	my ($SMTP_SERVER, $WEB_SERVER, $status, $err_message);
+	use Socket; 
+    $SMTP_SERVER = "$CONFIG{smtppath}";                                 
+	
+	# correct format for "\n"
+    local($CRLF) = "\015\012";
+    local($SMTP_SERVER_PORT) = 25;
+    local($AF_INET) = ($] > 5 ? AF_INET : 2);
+    local($SOCK_STREAM) = ($] > 5 ? SOCK_STREAM : 1);
+#    local(@bad_addresses) = ();
+    $, = ', ';
+    $" = ', ';
+
+    $WEB_SERVER = "$CONFIG{smtppath}\n";
+    chop ($WEB_SERVER);
+
+    local($local_address) = (gethostbyname($WEB_SERVER))[4];
+    local($local_socket_address) = pack('S n a4 x8', $AF_INET, 0, $local_address);
+
+    local($server_address) = (gethostbyname($SMTP_SERVER))[4];
+    local($server_socket_address) = pack('S n a4 x8', $AF_INET, $SMTP_SERVER_PORT, $server_address);
+
+    # Translate protocol name to corresponding number
+    local($protocol) = (getprotobyname('tcp'))[2];
+
+    # Make the socket filehandle
+    if (!socket(SMTP, $AF_INET, $SOCK_STREAM, $protocol)) {
+        return;
+    }
+
+	# Give the socket an address
+	bind(SMTP, $local_socket_address);
+	
+	# Connect to the server
+	if (!(connect(SMTP, $server_socket_address))) {
+		return;
+	}
+	
+	# Set the socket to be line buffered
+	local($old_selected) = select(SMTP);
+	$| = 1;
+	select($old_selected);
+	
+	# Set regex to handle multiple line strings
+	$* = 1;
+
+    # Read first response from server (wait for .75 seconds first)
+    select(undef, undef, undef, .75);
+    sysread(SMTP, $_, 1024);
+	#print "<P>1:$_";
+
+    print SMTP "HELO $WEB_SERVER$CRLF";
+    sysread(SMTP, $_, 1024);
+	#print "<P>2:$_";
+
+	while (/(^|(\r?\n))[^0-9]*((\d\d\d).*)$/g) { $status = $4; $err_message = $3}
+	if ($status != 250) {
+		return;
+	}
+
+	print SMTP "MAIL FROM:<$from_email>$CRLF";
+
+	sysread(SMTP, $_, 1024);
+	#print "<P>3:$_";
+	if (!/[^0-9]*250/) {
+		return;
+	}
+
+    # Tell the server where we're sending to
+	print SMTP "RCPT TO:<$to_email>$CRLF";
+	sysread(SMTP, $_, 1024);
+	#print "<P>4:$_";
+	/[^0-9]*(\d\d\d)/;
+
+	# Give the server the message header
+	print SMTP "DATA$CRLF";
+	sysread(SMTP, $_, 1024);
+	#print "<P>5:$_";
+	if (!/[^0-9]*354/) {
+		return;
+	}
+
+	$message =~ s/\n/$CRLF/ig;
+	
+	print SMTP qq~From: $from_email ($from_name)$CRLF~;
+	print SMTP qq~To: $to_email ($to_name)$CRLF~;
+#	if($cc){
+#		print SMTP "CC: $cc ($cc_name)\n";
+#	}
+	print SMTP qq~Subject: $subject$CRLF$CRLF~;
+	print SMTP qq~$message~;
+
+	print SMTP "$CRLF.$CRLF";
+	sysread(SMTP, $_, 1024);
+	#print "<P>6:$_";
+	if (!/[^0-9]*250/) {
+		return;
+	} else {
+		return(1);
+	}
+
+	if (!shutdown(SMTP, 2)) {
+		return;
+    } 
+}
+
+#################################################################### 
+
+#################################################################### 
+
+sub check_email {
+	my($fe_email) = $_[0];
+	if($fe_email) {
+		if(($fe_email =~ /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)|(\.$)/) ||
+		($fe_email !~ /^.+@\[?(\w|[-.])+\.[a-zA-Z]{2,3}|[0-9]{1,3}\]?$/)) {
+			return;
+		} else { return(1) }
+	} else {
+		return;
+	}
+}
+#################################################################### 
+
+#################################################################### 
+
+sub getNewUID {
+	my($firstName, $lastName, $email_address) = @_;
+
+	open(LOCKFILE, $lockfileName);
+    	flock(LOCKFILE, LOCK_EX);
+
+	open(NEXTUID, "<$nextUidFile") || die "Can't open Log File: $!\n"; 
+	my($uid) = -1;
+	my(@lines) = <NEXTUID>;
+	my($line) = "";
+	foreach $line (@lines)
+	{
+		if($line =~ m/^(\d+)$/)
+		{
+			$uid = $1;		   
+			last;
+		}
+	}		
+	close NEXTUID;
+
+	my($nextUid) = $uid + 17;
+	open(NEXTUID, ">$nextUidFile") || die "Can't open Log File: $!\n"; 
+	print NEXTUID $nextUid;		
+	close NEXTUID;
+	    	
+
+	open(UIDMAP, "+<$uidMapFile") || die "Can't open Log File: $!\n"; 	
+	seek UIDMAP, 0, 2;
+	print UIDMAP "$uid\t$firstName\t$lastName\t$email_address\n";	
+	close UIDMAP;
+
+	flock(LOCKFILE, LOCK_UN);
+	close LOCKFILE;
+	return $uid;
+
+}
+#################################################################### 
+
+#################################################################### 
+
+sub checkExistance {
+	my($firstName, $lastName, $email_address) = @_;
+	my($uid) = -1;
+
+	open(LOCKFILE, $lockfileName);
+    	flock(LOCKFILE, LOCK_EX);
+    	
+	open(UIDMAP, $uidMapFile) || die "Can't open Log File: $!\n"; 
+	my(@lines) = <UIDMAP>;
+	my($line) = "";
+	foreach $line (@lines)
+	{
+		if($line =~ m/^(\d+)\t$firstName\t$lastName\t$email_address$/)
+		{
+			$uid = $1;
+			last;
+		}
+	}
+	close UIDMAP;
+
+	flock(LOCKFILE, LOCK_UN);
+	close LOCKFILE;
+	return $uid;
+}
+
+#################################################################### 
+
+#################################################################### 
+
+sub log {
+	open(LOCKFILE, $lockfileName);
+	flock(LOCKFILE, LOCK_EX);
+    	
+	open(LOG, "+<$logFile") || die "Can't open Log File: $!\n"; 
+    
+	seek LOG, 0, 2;
+	print LOG $_[0] . "\t\t";	
+
+	my ($sec,$min,$hour,$mday,$mon,$year, $wday,$yday,$isdst) = localtime time;
+
+	# update the year so that it is correct since it perl
+	# has a 1900 yr offset	
+	$year += 1900;
+
+	# update the month since it is 0 based in perl	
+	$mon += 1;
+	
+	printf LOG "%02d/%02d/%04d %02d:%02d:%02d\n", $mday, $mon, $year, $hour, $min, $sec;
+	
+	close LOG;
+	
+	flock(LOCKFILE, LOCK_UN);
+    close LOCKFILE;
+}
diff --git a/org.eclipse.mylyn.examples.monitor.study/scripts/questionnaire.cgi b/org.eclipse.mylyn.examples.monitor.study/scripts/questionnaire.cgi
index a9d9c4c..2065a4f 100644
--- a/org.eclipse.mylyn.examples.monitor.study/scripts/questionnaire.cgi
+++ b/org.eclipse.mylyn.examples.monitor.study/scripts/questionnaire.cgi
@@ -1,450 +1,450 @@
-#!/usr/bin/perl -w

-

-# START USER EDITS

-

-# absolute path to folder files will be uploaded to.

-# WINDOWS users, your path would like something like : images\\uploads

-# UNIX    users, your path would like something like : /home/www/images/uploads

-# do not end the path with any slashes and if you're on a UNIX serv, make sure

-# you CHMOD each folder in the path to 777

-

-$dir = "/.../upload";  

-$logFile =    "/.../questionnaireLog.txt";

-

-# if you would like to be notified of uploads, enter your email address

-# between the SINGLE quotes. leave this blank if you would not like to be notified

-$notify = '';

-

-# UNIX users, if you entered a value for $notify, you must also enter your

-# server's sendmail path. It usually looks something like : /usr/sbin/sendmail

-$send_mail_path = "";

-

-# WINDOWS users, if you entered a value for $notify, you must also enter your

-# server's SMTP path. It usually looks something like : mail.servername.com

-$smtp_path = "";

-

-# file types allowed, enter each type on a new line

-# Enter the word "ALL" in uppercase, to accept all file types.

-@types = qw~

-txt

-~;

-

-####################################################################

-#    END USER EDITS

-####################################################################

-

-$OS = $^O; # operating system name

-if($OS =~ /darwin/i) { $isUNIX = 1; }

-elsif($OS =~ /win/i) { $isWIN = 1; }

-else {$isUNIX = 1;}

-	

-if($isWIN){ $S{S} = "\\\\"; }

-else { $S{S} = "/";} # seperator used in paths

-

-unless (-d "$dir"){

-	mkdir ("$dir", 0777); # unless the dir exists, make it ( and chmod it on UNIX )

-	chmod(0777, "$dir");

-}

-

-

-unless (-d "$dir"){

-	# if there still is no dir, the path entered by the user is wrong and the upload will fail

-	# send back an error code

-	# unauthorized, uid not correct

-	exit;

-}

-

-use CGI; # load the CGI.pm module

-my $GET = new CGI; # create a new object

-my @VAL = $GET->param; #get all form field names

-

-foreach(@VAL){

-	$FORM{$_} = $GET->param($_); # put all fields and values in hash 

-}

-

-my @files;

-foreach(keys %FORM){

-    # check for the parameter name

-    # This must be MYLARa where is a a number

-    if($_ =~ /^MYLAR/){

-        push(@files, $_); # place the field NAME in an array

-    } else {

-	&log( "Filenamed not named MYLARa: ".$_);

-	exit;

-    }

-}

-

-

-if(!$VAL[0]){

-	# no file to upload so exit with an error

-	print "Content-type: text/plain", "\n";

-	print "Status: 501 Not Implemented", "\n\n";

-	print "Upload Failed - no file to upload","\n";

-	&log("Upload Failed - no file to upload\n");

-	exit;

-}

-

-

-my $failed; # results string = false

-my $selected; # num of files selected by user

-

-#################################################################### 

-

-#################################################################### 

-

-foreach (@files){

-	# upload each file, pass the form field NAME if it has a value

-	if($GET->param($_)){

-		# if the form field contains a file name &psjs_upload subroutine

-		# the file's name and path are passed to the subroutine 

-		$returned = &psjs_upload($_); 

-		if($returned =~ /^Success/i){

-			# if the $returned message begins with "Success" the upload was succssful

-			# remove the word "Success" and any spaces and we're left with the filename   

-			$returned =~ s/^Success\s+//;

-			push(@success, $returned);

-		} else {

-			# else if the word "success" is not returned, the message is the error encountered. 

-			# add the error to the $failed scalar

-			$failed .= $returned;

-		}

-		$selected++; # increment num of files selected for uploading by user

-	}

-}

-

-if(!$selected){

-	# no files were selected by user, so nothing is returned to either variable

-	$failed .= qq~No files were selected for uploading~;

-}

-

-# if no error message is return ed, the upload was successful

-

-my ($fNames, $aa, $bb, @current, @currentfiles );

-

-if($failed){

-

-	# file failed to upload return error

-	print "Content-type: text/plain", "\n";

-	print "Status: 501 Not Implemented", "\n\n";

-	print "Upload Failed","\n";

-	

-} else {

-	# upload was successful

-	# log the success and return success code

-	

-	# send email if valid email was entered

-	if(check_email($notify)){

-		

-		# TODO send an appropriate message

-		

-		# enter the message you would like to receive

-		my $message = qq~

-		The following files were uploaded to your server :

-		~; 

-		

-		foreach(@success){

-			$message .= qq~

-			$dir/$_	

-			~;

-		}

-		

-		if($isUNIX){

-			$CONFIG{mailprogram} = $send_mail_path;

-			# enter your e-mail name here if you like

-			# from e-mail, from name, to e-mail, to name, subject, body

-			&send_mail($notify, 'Demo Upload', $notify, 'Demo Upload', 'Upload Notification', $message);

-			

-		} else {

-			$CONFIG{smtppath} = $smtp_path;

-			&send_mail_NT($notify, 'Your Name', $notify, 'Your Name', 'Upload Notification', $message);

-		}

-	}

-	

-	# NEED TO LOG THE UPLOAD

-	foreach(@success){

-		&log("NONE" . "\t" . "$dir/$_");

-	}

-	

-	

-	print "Content-type: text/plain". "\n";

-	print "Status: 200 OK", "\n\n";

-	print "Upload Success","\n";

-}

-

-#################################################################### 

-

-#################################################################### 

-

-sub psjs_upload {

-

-	my $filename = $GET->param($_[0]); 

-	$filename =~ s/.*[\/\\](.*)/$1/; 

-	my $upload_filehandle = $GET->upload($_[0]); 

-	# if $file_type matchs one of the types specified, make the $type_ok var true

-	for($b = 0; $b < @types; $b++){

-		if($filename =~ /^.*\.$types[$b]$/i){

-			$type_ok++;

-		}

-		if($types[$b] eq "ALL"){

-			$type_ok++; # if ALL keyword is found, increment $type_ok var.

-		}

-	}

-	

-	# if ok, check if overwrite is allowed

-	if($type_ok){

-	    if(open UPLOADFILE, ">$dir/$filename"){

-

-	    	binmode UPLOADFILE; 

-

-	    	while ( <$upload_filehandle> ) 

-	    	{

-				print UPLOADFILE; 

-	    	} 

-   		    close UPLOADFILE; 

-	    }else {

-	    	return qq~Error opening file on the server~; 

-	    }

-	} else {

-		return qq~Bad file type~; 

-	}

-			

-	# check if file has actually been uploaded, by checking the file has a size

-	if(-s "$dir/$filename"){

-		return qq~Success $filename~; #success 

-	} else {

-		# delete the file as it has no content

-		# user probably entered an incorrect path to file

-		return qq~Upload failed : No data in $filename. No size on server's copy of file. 

-		Check the path entered.~; 

-	}

-}

-

-#################################################################### 

-

-#################################################################### 

-

-sub check_existence {

-	# $dir,$filename,$newnum are the args passed to this sub

-	my ($dir,$filename,$newnum) = @_;

-	

-	my (@file_type, $file_type, $exists, $bareName); 

-	# declare some vars we will use later on in this sub always use paranthesis 

-	# when declaring more than one var! Some novice programmers will tell you 

-	# this is not necessary. Tell them to learn how to program.

-	

-	if(!$newnum){$newnum = "0";} # new num is empty in first call, so set it to 0

-	

-	# read dir and put all files in an array (list)

-	opendir(DIR, "$dir");

-	@existing_files =  readdir(DIR);

-	closedir(DIR);

-	

-	# if the filename passed exists, set $exists to true or 1

-	foreach(@existing_files){

-		if($_ eq $filename){

-			$exists = 1;

-		}

-	}

-	

-	# if it exists, we need to rename the file being uploaded and then recheck it to 

-	# make sure the new name does not exist

-	if($exists){

-		$newnum++; # increment new number (add 1)

-

-		# get the extension

-		@file_type   = split(/\./, $filename); # split the dots and add inbetweens to a list

-		# put the first element in the $barename var

-		$bareName    = $file_type[0]; 

-		# we can assume everything after the last . found is the extension

-		$file_type   = $file_type[$#file_type]; 

-		# $#file_type is the last element (note the pound or hash is used)

-		

-		# remove all numbers from the end of the $bareName

-		$bareName =~ s/\d+$//ig;

-		

-		# concatenate a new name using the barename + newnum + extension 

-		$filename = $bareName . $newnum . '.' . $file_type;

-		

-		# reset $exists to 0 because the new file name is now being checked

-		$exists = 0;

-		

-		# recall this subroutine

-		&check_existence($dir,$filename,$newnum);

-	} else {

-		# the $filename, whether the first or one hundreth call, now does not exist

-		# so return the name to be used

-		return ($filename);

-	}

-}

-

-#################################################################### 

-

-#################################################################### 

-

-sub send_mail {

-	my ($from_email, $from_name, $to_email, $to_name, $subject, $message ) = @_;

-	

-	if(open(MAIL, "|$CONFIG{mailprogram} -t")) {

-		print MAIL "From: $from_email ($from_name)\n";

-		print MAIL "To: $to_email ($to_name)\n";

-		print MAIL "Subject: $subject\n";

-		print MAIL "$message\n\nSubmitter's IP Address : $ENV{REMOTE_ADDR}";

-		close MAIL;

-		return(1);

-	} else {

-		return;

-	}

-}

-

-#################################################################### 

-

-#################################################################### 

-

-sub send_mail_NT {

-	

-	my ($from_email, $from_name, $to_email, $to_name, $subject, $message ) = @_;

-	

-	my ($SMTP_SERVER, $WEB_SERVER, $status, $err_message);

-	use Socket; 

-    $SMTP_SERVER = "$CONFIG{smtppath}";                                 

-	

-	# correct format for "\n"

-    local($CRLF) = "\015\012";

-    local($SMTP_SERVER_PORT) = 25;

-    local($AF_INET) = ($] > 5 ? AF_INET : 2);

-    local($SOCK_STREAM) = ($] > 5 ? SOCK_STREAM : 1);

-#    local(@bad_addresses) = ();

-    $, = ', ';

-    $" = ', ';

-

-    $WEB_SERVER = "$CONFIG{smtppath}\n";

-    chop ($WEB_SERVER);

-

-    local($local_address) = (gethostbyname($WEB_SERVER))[4];

-    local($local_socket_address) = pack('S n a4 x8', $AF_INET, 0, $local_address);

-

-    local($server_address) = (gethostbyname($SMTP_SERVER))[4];

-    local($server_socket_address) = pack('S n a4 x8', $AF_INET, $SMTP_SERVER_PORT, $server_address);

-

-    # Translate protocol name to corresponding number

-    local($protocol) = (getprotobyname('tcp'))[2];

-

-    # Make the socket filehandle

-    if (!socket(SMTP, $AF_INET, $SOCK_STREAM, $protocol)) {

-        return;

-    }

-

-	# Give the socket an address

-	bind(SMTP, $local_socket_address);

-	

-	# Connect to the server

-	if (!(connect(SMTP, $server_socket_address))) {

-		return;

-	}

-	

-	# Set the socket to be line buffered

-	local($old_selected) = select(SMTP);

-	$| = 1;

-	select($old_selected);

-	

-	# Set regex to handle multiple line strings

-	$* = 1;

-

-    # Read first response from server (wait for .75 seconds first)

-    select(undef, undef, undef, .75);

-    sysread(SMTP, $_, 1024);

-	#print "<P>1:$_";

-

-    print SMTP "HELO $WEB_SERVER$CRLF";

-    sysread(SMTP, $_, 1024);

-	#print "<P>2:$_";

-

-	while (/(^|(\r?\n))[^0-9]*((\d\d\d).*)$/g) { $status = $4; $err_message = $3}

-	if ($status != 250) {

-		return;

-	}

-

-	print SMTP "MAIL FROM:<$from_email>$CRLF";

-

-	sysread(SMTP, $_, 1024);

-	#print "<P>3:$_";

-	if (!/[^0-9]*250/) {

-		return;

-	}

-

-    # Tell the server where we're sending to

-	print SMTP "RCPT TO:<$to_email>$CRLF";

-	sysread(SMTP, $_, 1024);

-	#print "<P>4:$_";

-	/[^0-9]*(\d\d\d)/;

-

-	# Give the server the message header

-	print SMTP "DATA$CRLF";

-	sysread(SMTP, $_, 1024);

-	#print "<P>5:$_";

-	if (!/[^0-9]*354/) {

-		return;

-	}

-

-	$message =~ s/\n/$CRLF/ig;

-	

-	print SMTP qq~From: $from_email ($from_name)$CRLF~;

-	print SMTP qq~To: $to_email ($to_name)$CRLF~;

-#	if($cc){

-#		print SMTP "CC: $cc ($cc_name)\n";

-#	}

-	print SMTP qq~Subject: $subject$CRLF$CRLF~;

-	print SMTP qq~$message~;

-

-	print SMTP "$CRLF.$CRLF";

-	sysread(SMTP, $_, 1024);

-	#print "<P>6:$_";

-	if (!/[^0-9]*250/) {

-		return;

-	} else {

-		return(1);

-	}

-

-	if (!shutdown(SMTP, 2)) {

-		return;

-    } 

-}

-

-#################################################################### 

-

-#################################################################### 

-

-sub check_email {

-	my($fe_email) = $_[0];

-	if($fe_email) {

-		if(($fe_email =~ /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)|(\.$)/) ||

-		($fe_email !~ /^.+@\[?(\w|[-.])+\.[a-zA-Z]{2,3}|[0-9]{1,3}\]?$/)) {

-			return;

-		} else { return(1) }

-	} else {

-		return;

-	}

-    }

-#################################################################### 

-

-#################################################################### 

-

-sub log {

-	open(LOG, "+<$logFile") || die "Can't open Log File: $!\n"; 

-    

-	seek LOG, 0, 2;

-	print LOG $_[0] . "\t\t";	

-

-	my ($sec,$min,$hour,$mday,$mon,$year, $wday,$yday,$isdst) = localtime time;

-

-	# update the year so that it is correct since it perl

-	# has a 1900 yr offset	

-	$year += 1900;

-

-	# update the month since it is 0 based in perl	

-	$mon += 1;

-	

-	printf LOG "%02d/%02d/%04d %02d:%02d:%02d\n", $mday, $mon, $year, $hour, $min, $sec;

-	

-	close LOG;

-}

+#!/usr/bin/perl -w
+
+# START USER EDITS
+
+# absolute path to folder files will be uploaded to.
+# WINDOWS users, your path would like something like : images\\uploads
+# UNIX    users, your path would like something like : /home/www/images/uploads
+# do not end the path with any slashes and if you're on a UNIX serv, make sure
+# you CHMOD each folder in the path to 777
+
+$dir = "/.../upload";  
+$logFile =    "/.../questionnaireLog.txt";
+
+# if you would like to be notified of uploads, enter your email address
+# between the SINGLE quotes. leave this blank if you would not like to be notified
+$notify = '';
+
+# UNIX users, if you entered a value for $notify, you must also enter your
+# server's sendmail path. It usually looks something like : /usr/sbin/sendmail
+$send_mail_path = "";
+
+# WINDOWS users, if you entered a value for $notify, you must also enter your
+# server's SMTP path. It usually looks something like : mail.servername.com
+$smtp_path = "";
+
+# file types allowed, enter each type on a new line
+# Enter the word "ALL" in uppercase, to accept all file types.
+@types = qw~
+txt
+~;
+
+####################################################################
+#    END USER EDITS
+####################################################################
+
+$OS = $^O; # operating system name
+if($OS =~ /darwin/i) { $isUNIX = 1; }
+elsif($OS =~ /win/i) { $isWIN = 1; }
+else {$isUNIX = 1;}
+	
+if($isWIN){ $S{S} = "\\\\"; }
+else { $S{S} = "/";} # seperator used in paths
+
+unless (-d "$dir"){
+	mkdir ("$dir", 0777); # unless the dir exists, make it ( and chmod it on UNIX )
+	chmod(0777, "$dir");
+}
+
+
+unless (-d "$dir"){
+	# if there still is no dir, the path entered by the user is wrong and the upload will fail
+	# send back an error code
+	# unauthorized, uid not correct
+	exit;
+}
+
+use CGI; # load the CGI.pm module
+my $GET = new CGI; # create a new object
+my @VAL = $GET->param; #get all form field names
+
+foreach(@VAL){
+	$FORM{$_} = $GET->param($_); # put all fields and values in hash 
+}
+
+my @files;
+foreach(keys %FORM){
+    # check for the parameter name
+    # This must be MYLARa where is a a number
+    if($_ =~ /^MYLAR/){
+        push(@files, $_); # place the field NAME in an array
+    } else {
+	&log( "Filenamed not named MYLARa: ".$_);
+	exit;
+    }
+}
+
+
+if(!$VAL[0]){
+	# no file to upload so exit with an error
+	print "Content-type: text/plain", "\n";
+	print "Status: 501 Not Implemented", "\n\n";
+	print "Upload Failed - no file to upload","\n";
+	&log("Upload Failed - no file to upload\n");
+	exit;
+}
+
+
+my $failed; # results string = false
+my $selected; # num of files selected by user
+
+#################################################################### 
+
+#################################################################### 
+
+foreach (@files){
+	# upload each file, pass the form field NAME if it has a value
+	if($GET->param($_)){
+		# if the form field contains a file name &psjs_upload subroutine
+		# the file's name and path are passed to the subroutine 
+		$returned = &psjs_upload($_); 
+		if($returned =~ /^Success/i){
+			# if the $returned message begins with "Success" the upload was succssful
+			# remove the word "Success" and any spaces and we're left with the filename   
+			$returned =~ s/^Success\s+//;
+			push(@success, $returned);
+		} else {
+			# else if the word "success" is not returned, the message is the error encountered. 
+			# add the error to the $failed scalar
+			$failed .= $returned;
+		}
+		$selected++; # increment num of files selected for uploading by user
+	}
+}
+
+if(!$selected){
+	# no files were selected by user, so nothing is returned to either variable
+	$failed .= qq~No files were selected for uploading~;
+}
+
+# if no error message is return ed, the upload was successful
+
+my ($fNames, $aa, $bb, @current, @currentfiles );
+
+if($failed){
+
+	# file failed to upload return error
+	print "Content-type: text/plain", "\n";
+	print "Status: 501 Not Implemented", "\n\n";
+	print "Upload Failed","\n";
+	
+} else {
+	# upload was successful
+	# log the success and return success code
+	
+	# send email if valid email was entered
+	if(check_email($notify)){
+		
+		# TODO send an appropriate message
+		
+		# enter the message you would like to receive
+		my $message = qq~
+		The following files were uploaded to your server :
+		~; 
+		
+		foreach(@success){
+			$message .= qq~
+			$dir/$_	
+			~;
+		}
+		
+		if($isUNIX){
+			$CONFIG{mailprogram} = $send_mail_path;
+			# enter your e-mail name here if you like
+			# from e-mail, from name, to e-mail, to name, subject, body
+			&send_mail($notify, 'Demo Upload', $notify, 'Demo Upload', 'Upload Notification', $message);
+			
+		} else {
+			$CONFIG{smtppath} = $smtp_path;
+			&send_mail_NT($notify, 'Your Name', $notify, 'Your Name', 'Upload Notification', $message);
+		}
+	}
+	
+	# NEED TO LOG THE UPLOAD
+	foreach(@success){
+		&log("NONE" . "\t" . "$dir/$_");
+	}
+	
+	
+	print "Content-type: text/plain". "\n";
+	print "Status: 200 OK", "\n\n";
+	print "Upload Success","\n";
+}
+
+#################################################################### 
+
+#################################################################### 
+
+sub psjs_upload {
+
+	my $filename = $GET->param($_[0]); 
+	$filename =~ s/.*[\/\\](.*)/$1/; 
+	my $upload_filehandle = $GET->upload($_[0]); 
+	# if $file_type matchs one of the types specified, make the $type_ok var true
+	for($b = 0; $b < @types; $b++){
+		if($filename =~ /^.*\.$types[$b]$/i){
+			$type_ok++;
+		}
+		if($types[$b] eq "ALL"){
+			$type_ok++; # if ALL keyword is found, increment $type_ok var.
+		}
+	}
+	
+	# if ok, check if overwrite is allowed
+	if($type_ok){
+	    if(open UPLOADFILE, ">$dir/$filename"){
+
+	    	binmode UPLOADFILE; 
+
+	    	while ( <$upload_filehandle> ) 
+	    	{
+				print UPLOADFILE; 
+	    	} 
+   		    close UPLOADFILE; 
+	    }else {
+	    	return qq~Error opening file on the server~; 
+	    }
+	} else {
+		return qq~Bad file type~; 
+	}
+			
+	# check if file has actually been uploaded, by checking the file has a size
+	if(-s "$dir/$filename"){
+		return qq~Success $filename~; #success 
+	} else {
+		# delete the file as it has no content
+		# user probably entered an incorrect path to file
+		return qq~Upload failed : No data in $filename. No size on server's copy of file. 
+		Check the path entered.~; 
+	}
+}
+
+#################################################################### 
+
+#################################################################### 
+
+sub check_existence {
+	# $dir,$filename,$newnum are the args passed to this sub
+	my ($dir,$filename,$newnum) = @_;
+	
+	my (@file_type, $file_type, $exists, $bareName); 
+	# declare some vars we will use later on in this sub always use paranthesis 
+	# when declaring more than one var! Some novice programmers will tell you 
+	# this is not necessary. Tell them to learn how to program.
+	
+	if(!$newnum){$newnum = "0";} # new num is empty in first call, so set it to 0
+	
+	# read dir and put all files in an array (list)
+	opendir(DIR, "$dir");
+	@existing_files =  readdir(DIR);
+	closedir(DIR);
+	
+	# if the filename passed exists, set $exists to true or 1
+	foreach(@existing_files){
+		if($_ eq $filename){
+			$exists = 1;
+		}
+	}
+	
+	# if it exists, we need to rename the file being uploaded and then recheck it to 
+	# make sure the new name does not exist
+	if($exists){
+		$newnum++; # increment new number (add 1)
+
+		# get the extension
+		@file_type   = split(/\./, $filename); # split the dots and add inbetweens to a list
+		# put the first element in the $barename var
+		$bareName    = $file_type[0]; 
+		# we can assume everything after the last . found is the extension
+		$file_type   = $file_type[$#file_type]; 
+		# $#file_type is the last element (note the pound or hash is used)
+		
+		# remove all numbers from the end of the $bareName
+		$bareName =~ s/\d+$//ig;
+		
+		# concatenate a new name using the barename + newnum + extension 
+		$filename = $bareName . $newnum . '.' . $file_type;
+		
+		# reset $exists to 0 because the new file name is now being checked
+		$exists = 0;
+		
+		# recall this subroutine
+		&check_existence($dir,$filename,$newnum);
+	} else {
+		# the $filename, whether the first or one hundreth call, now does not exist
+		# so return the name to be used
+		return ($filename);
+	}
+}
+
+#################################################################### 
+
+#################################################################### 
+
+sub send_mail {
+	my ($from_email, $from_name, $to_email, $to_name, $subject, $message ) = @_;
+	
+	if(open(MAIL, "|$CONFIG{mailprogram} -t")) {
+		print MAIL "From: $from_email ($from_name)\n";
+		print MAIL "To: $to_email ($to_name)\n";
+		print MAIL "Subject: $subject\n";
+		print MAIL "$message\n\nSubmitter's IP Address : $ENV{REMOTE_ADDR}";
+		close MAIL;
+		return(1);
+	} else {
+		return;
+	}
+}
+
+#################################################################### 
+
+#################################################################### 
+
+sub send_mail_NT {
+	
+	my ($from_email, $from_name, $to_email, $to_name, $subject, $message ) = @_;
+	
+	my ($SMTP_SERVER, $WEB_SERVER, $status, $err_message);
+	use Socket; 
+    $SMTP_SERVER = "$CONFIG{smtppath}";                                 
+	
+	# correct format for "\n"
+    local($CRLF) = "\015\012";
+    local($SMTP_SERVER_PORT) = 25;
+    local($AF_INET) = ($] > 5 ? AF_INET : 2);
+    local($SOCK_STREAM) = ($] > 5 ? SOCK_STREAM : 1);
+#    local(@bad_addresses) = ();
+    $, = ', ';
+    $" = ', ';
+
+    $WEB_SERVER = "$CONFIG{smtppath}\n";
+    chop ($WEB_SERVER);
+
+    local($local_address) = (gethostbyname($WEB_SERVER))[4];
+    local($local_socket_address) = pack('S n a4 x8', $AF_INET, 0, $local_address);
+
+    local($server_address) = (gethostbyname($SMTP_SERVER))[4];
+    local($server_socket_address) = pack('S n a4 x8', $AF_INET, $SMTP_SERVER_PORT, $server_address);
+
+    # Translate protocol name to corresponding number
+    local($protocol) = (getprotobyname('tcp'))[2];
+
+    # Make the socket filehandle
+    if (!socket(SMTP, $AF_INET, $SOCK_STREAM, $protocol)) {
+        return;
+    }
+
+	# Give the socket an address
+	bind(SMTP, $local_socket_address);
+	
+	# Connect to the server
+	if (!(connect(SMTP, $server_socket_address))) {
+		return;
+	}
+	
+	# Set the socket to be line buffered
+	local($old_selected) = select(SMTP);
+	$| = 1;
+	select($old_selected);
+	
+	# Set regex to handle multiple line strings
+	$* = 1;
+
+    # Read first response from server (wait for .75 seconds first)
+    select(undef, undef, undef, .75);
+    sysread(SMTP, $_, 1024);
+	#print "<P>1:$_";
+
+    print SMTP "HELO $WEB_SERVER$CRLF";
+    sysread(SMTP, $_, 1024);
+	#print "<P>2:$_";
+
+	while (/(^|(\r?\n))[^0-9]*((\d\d\d).*)$/g) { $status = $4; $err_message = $3}
+	if ($status != 250) {
+		return;
+	}
+
+	print SMTP "MAIL FROM:<$from_email>$CRLF";
+
+	sysread(SMTP, $_, 1024);
+	#print "<P>3:$_";
+	if (!/[^0-9]*250/) {
+		return;
+	}
+
+    # Tell the server where we're sending to
+	print SMTP "RCPT TO:<$to_email>$CRLF";
+	sysread(SMTP, $_, 1024);
+	#print "<P>4:$_";
+	/[^0-9]*(\d\d\d)/;
+
+	# Give the server the message header
+	print SMTP "DATA$CRLF";
+	sysread(SMTP, $_, 1024);
+	#print "<P>5:$_";
+	if (!/[^0-9]*354/) {
+		return;
+	}
+
+	$message =~ s/\n/$CRLF/ig;
+	
+	print SMTP qq~From: $from_email ($from_name)$CRLF~;
+	print SMTP qq~To: $to_email ($to_name)$CRLF~;
+#	if($cc){
+#		print SMTP "CC: $cc ($cc_name)\n";
+#	}
+	print SMTP qq~Subject: $subject$CRLF$CRLF~;
+	print SMTP qq~$message~;
+
+	print SMTP "$CRLF.$CRLF";
+	sysread(SMTP, $_, 1024);
+	#print "<P>6:$_";
+	if (!/[^0-9]*250/) {
+		return;
+	} else {
+		return(1);
+	}
+
+	if (!shutdown(SMTP, 2)) {
+		return;
+    } 
+}
+
+#################################################################### 
+
+#################################################################### 
+
+sub check_email {
+	my($fe_email) = $_[0];
+	if($fe_email) {
+		if(($fe_email =~ /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)|(\.$)/) ||
+		($fe_email !~ /^.+@\[?(\w|[-.])+\.[a-zA-Z]{2,3}|[0-9]{1,3}\]?$/)) {
+			return;
+		} else { return(1) }
+	} else {
+		return;
+	}
+    }
+#################################################################### 
+
+#################################################################### 
+
+sub log {
+	open(LOG, "+<$logFile") || die "Can't open Log File: $!\n"; 
+    
+	seek LOG, 0, 2;
+	print LOG $_[0] . "\t\t";	
+
+	my ($sec,$min,$hour,$mday,$mon,$year, $wday,$yday,$isdst) = localtime time;
+
+	# update the year so that it is correct since it perl
+	# has a 1900 yr offset	
+	$year += 1900;
+
+	# update the month since it is 0 based in perl	
+	$mon += 1;
+	
+	printf LOG "%02d/%02d/%04d %02d:%02d:%02d\n", $mday, $mon, $year, $hour, $min, $sec;
+	
+	close LOG;
+}
diff --git a/org.eclipse.mylyn.examples.monitor.study/scripts/upload.cgi b/org.eclipse.mylyn.examples.monitor.study/scripts/upload.cgi
index d74fc2d..c7f65fe 100644
--- a/org.eclipse.mylyn.examples.monitor.study/scripts/upload.cgi
+++ b/org.eclipse.mylyn.examples.monitor.study/scripts/upload.cgi
@@ -1,502 +1,502 @@
-#!/usr/bin/perl -w

-

-use Fcntl ':flock';

-

-# START USER EDITS

-

-# absolute path to folder files will be uploaded to.

-# WINDOWS users, your path would like something like : images\\uploads

-# UNIX    users, your path would like something like : /home/www/images/uploads

-# do not end the path with any slashes and if you're on a UNIX serv, make sure

-# you CHMOD each folder in the path to 777

-

-$lockfileName = "/.../.lock";

-$logFile =    "/.../uploadLog.txt";

-$uidMapFile = "/.../mylarUidMap.txt";

-

-$dir = "/isd/se2/project/mylar/userStudy/upload";  

-

-# if you would like to be notified of uploads, enter your email address

-# between the SINGLE quotes. leave this blank if you would not like to be notified

-$notify = '';

-

-# UNIX users, if you entered a value for $notify, you must also enter your

-# server's sendmail path. It usually looks something like : /usr/sbin/sendmail

-$send_mail_path = "";

-

-# WINDOWS users, if you entered a value for $notify, you must also enter your

-# server's SMTP path. It usually looks something like : mail.servername.com

-$smtp_path = "";

-

-# file types allowed, enter each type on a new line

-# Enter the word "ALL" in uppercase, to accept all file types.

-@types = qw~

-zip

-txt

-~;

-

-####################################################################

-#    END USER EDITS

-####################################################################

-

-$OS = $^O; # operating system name

-if($OS =~ /darwin/i) { $isUNIX = 1; }

-elsif($OS =~ /win/i) { $isWIN = 1; }

-else {$isUNIX = 1;}

-	

-if($isWIN){ $S{S} = "\\\\"; }

-else { $S{S} = "/";} # seperator used in paths

-

-unless (-d "$dir"){

-	mkdir ("$dir", 0777); # unless the dir exists, make it ( and chmod it on UNIX )

-	chmod(0777, "$dir");

-}

-

-

-unless (-d "$dir"){

-	# if there still is no dir, the path entered by the user is wrong and the upload will fail

-	# send back an error code

-	# unauthorized, uid not correct

-	exit;

-}

-

-use CGI; # load the CGI.pm module

-my $GET = new CGI; # create a new object

-my @VAL = $GET->param; #get all form field names

-

-foreach(@VAL){

-	$FORM{$_} = $GET->param($_); # put all fields and values in hash 

-}

-

-my($uid) = "";

-

-my @files;

-foreach(keys %FORM){

-	# check for the parameter name

-	# This must be MYLARa where is a a number

-	if($_ =~ /^MYLAR(\d+)/){

-		$uid = $1;

-		if(&checkUID($uid) == 1)

-		{

-			push(@files, $_); # place the field NAME in an array

-		}

-		else

-		{

-			# unauthorized, uid not correct

-			print "Content-type: text/plain", "\n";

-			print "Status: 401 Unauthorized", "\n\n";

-			print "UID Incorrect","\n";

-			exit;

-		}

-	}

-}

-

-

-if(!$VAL[0]){

-	# no file to upload so exit with an error

-	print "Content-type: text/plain", "\n";

-	print "Status: 501 Not Implemented", "\n\n";

-	print "Upload Failed - no file to upload","\n";

-

-	exit;

-}

-

-

-my $failed; # results string = false

-my $selected; # num of files selected by user

-

-#################################################################### 

-

-#################################################################### 

-

-foreach (@files){

-	# upload each file, pass the form field NAME if it has a value

-	if($GET->param($_)){

-		# if the form field contains a file name &psjs_upload subroutine

-		# the file's name and path are passed to the subroutine 

-		$returned = &psjs_upload($_); 

-		if($returned =~ /^Success/i){

-			# if the $returned message begins with "Success" the upload was succssful

-			# remove the word "Success" and any spaces and we're left with the filename   

-			$returned =~ s/^Success\s+//;

-			push(@success, $returned);

-		} else {

-			# else if the word "success" is not returned, the message is the error encountered. 

-			# add the error to the $failed scalar

-			$failed .= $returned;

-		}

-		$selected++; # increment num of files selected for uploading by user

-	}

-}

-

-if(!$selected){

-	# no files were selected by user, so nothing is returned to either variable

-	$failed .= qq~No files were selected for uploading~;

-}

-

-# if no error message is return ed, the upload was successful

-

-my ($fNames, $aa, $bb, @current, @currentfiles );

-

-if($failed){

-

-	# file failed to upload return error

-	print "Content-type: text/plain", "\n";

-	print "Status: 501 Not Implemented", "\n\n";

-	print "Upload Failed","\n";

-	

-} else {

-	# upload was successful

-	# log the success and return success code

-	

-	# send email if valid email was entered

-	if(check_email($notify)){

-		

-		# TODO send an appropriate message

-		

-		# enter the message you would like to receive

-		my $message = qq~

-		The following files were uploaded to your server :

-		~; 

-		

-		foreach(@success){

-			$message .= qq~

-			$dir/$_	

-			~;

-		}

-		

-		if($isUNIX){

-			$CONFIG{mailprogram} = $send_mail_path;

-			# enter your e-mail name here if you like

-			# from e-mail, from name, to e-mail, to name, subject, body

-			&send_mail($notify, 'Demo Upload', $notify, 'Demo Upload', 'Upload Notification', $message);

-			

-		} else {

-			$CONFIG{smtppath} = $smtp_path;

-			&send_mail_NT($notify, 'Your Name', $notify, 'Your Name', 'Upload Notification', $message);

-		}

-	}

-	

-	# NEED TO LOG THE UPLOAD

-	foreach(@success){

-		&log($uid . "\t" . "$dir/$_");

-	}

-	

-	

-	print "Content-type: text/plain". "\n";

-	print "Status: 200 OK", "\n\n";

-	print "Upload Success","\n";

-}

-

-#################################################################### 

-

-#################################################################### 

-

-sub psjs_upload {

-

-	my $filename = $GET->param($_[0]); 

-	$filename =~ s/.*[\/\\](.*)/$1/; 

-	my $upload_filehandle = $GET->upload($_[0]); 

-	# if $file_type matchs one of the types specified, make the $type_ok var true

-	for($b = 0; $b < @types; $b++){

-		if($filename =~ /^.*\.$types[$b]$/i){

-			$type_ok++;

-		}

-		if($types[$b] eq "ALL"){

-			$type_ok++; # if ALL keyword is found, increment $type_ok var.

-		}

-	}

-	

-	# if ok, check if overwrite is allowed

-	if($type_ok){

-	    if(open UPLOADFILE, ">$dir/$filename"){

-

-	    	binmode UPLOADFILE; 

-

-	    	while ( <$upload_filehandle> ) 

-	    	{

-				print UPLOADFILE; 

-	    	} 

-   		    close UPLOADFILE; 

-	    }else {

-	    	return qq~Error opening file on the server~; 

-	    }

-	} else {

-		return qq~Bad file type~; 

-	}

-			

-	# check if file has actually been uploaded, by checking the file has a size

-	if(-s "$dir/$filename"){

-		return qq~Success $filename~; #success 

-	} else {

-		# delete the file as it has no content

-		# user probably entered an incorrect path to file

-		return qq~Upload failed : No data in $filename. No size on server's copy of file. 

-		Check the path entered.~; 

-	}

-}

-

-#################################################################### 

-

-#################################################################### 

-

-sub check_existence {

-	# $dir,$filename,$newnum are the args passed to this sub

-	my ($dir,$filename,$newnum) = @_;

-	

-	my (@file_type, $file_type, $exists, $bareName); 

-	# declare some vars we will use later on in this sub always use paranthesis 

-	# when declaring more than one var! Some novice programmers will tell you 

-	# this is not necessary. Tell them to learn how to program.

-	

-	if(!$newnum){$newnum = "0";} # new num is empty in first call, so set it to 0

-	

-	# read dir and put all files in an array (list)

-	opendir(DIR, "$dir");

-	@existing_files =  readdir(DIR);

-	closedir(DIR);

-	

-	# if the filename passed exists, set $exists to true or 1

-	foreach(@existing_files){

-		if($_ eq $filename){

-			$exists = 1;

-		}

-	}

-	

-	# if it exists, we need to rename the file being uploaded and then recheck it to 

-	# make sure the new name does not exist

-	if($exists){

-		$newnum++; # increment new number (add 1)

-

-		# get the extension

-		@file_type   = split(/\./, $filename); # split the dots and add inbetweens to a list

-		# put the first element in the $barename var

-		$bareName    = $file_type[0]; 

-		# we can assume everything after the last . found is the extension

-		$file_type   = $file_type[$#file_type]; 

-		# $#file_type is the last element (note the pound or hash is used)

-		

-		# remove all numbers from the end of the $bareName

-		$bareName =~ s/\d+$//ig;

-		

-		# concatenate a new name using the barename + newnum + extension 

-		$filename = $bareName . $newnum . '.' . $file_type;

-		

-		# reset $exists to 0 because the new file name is now being checked

-		$exists = 0;

-		

-		# recall this subroutine

-		&check_existence($dir,$filename,$newnum);

-	} else {

-		# the $filename, whether the first or one hundreth call, now does not exist

-		# so return the name to be used

-		return ($filename);

-	}

-}

-

-#################################################################### 

-

-#################################################################### 

-

-sub send_mail {

-	my ($from_email, $from_name, $to_email, $to_name, $subject, $message ) = @_;

-	

-	if(open(MAIL, "|$CONFIG{mailprogram} -t")) {

-		print MAIL "From: $from_email ($from_name)\n";

-		print MAIL "To: $to_email ($to_name)\n";

-		print MAIL "Subject: $subject\n";

-		print MAIL "$message\n\nSubmitter's IP Address : $ENV{REMOTE_ADDR}";

-		close MAIL;

-		return(1);

-	} else {

-		return;

-	}

-}

-

-#################################################################### 

-

-#################################################################### 

-

-sub send_mail_NT {

-	

-	my ($from_email, $from_name, $to_email, $to_name, $subject, $message ) = @_;

-	

-	my ($SMTP_SERVER, $WEB_SERVER, $status, $err_message);

-	use Socket; 

-    $SMTP_SERVER = "$CONFIG{smtppath}";                                 

-	

-	# correct format for "\n"

-    local($CRLF) = "\015\012";

-    local($SMTP_SERVER_PORT) = 25;

-    local($AF_INET) = ($] > 5 ? AF_INET : 2);

-    local($SOCK_STREAM) = ($] > 5 ? SOCK_STREAM : 1);

-#    local(@bad_addresses) = ();

-    $, = ', ';

-    $" = ', ';

-

-    $WEB_SERVER = "$CONFIG{smtppath}\n";

-    chop ($WEB_SERVER);

-

-    local($local_address) = (gethostbyname($WEB_SERVER))[4];

-    local($local_socket_address) = pack('S n a4 x8', $AF_INET, 0, $local_address);

-

-    local($server_address) = (gethostbyname($SMTP_SERVER))[4];

-    local($server_socket_address) = pack('S n a4 x8', $AF_INET, $SMTP_SERVER_PORT, $server_address);

-

-    # Translate protocol name to corresponding number

-    local($protocol) = (getprotobyname('tcp'))[2];

-

-    # Make the socket filehandle

-    if (!socket(SMTP, $AF_INET, $SOCK_STREAM, $protocol)) {

-        return;

-    }

-

-	# Give the socket an address

-	bind(SMTP, $local_socket_address);

-	

-	# Connect to the server

-	if (!(connect(SMTP, $server_socket_address))) {

-		return;

-	}

-	

-	# Set the socket to be line buffered

-	local($old_selected) = select(SMTP);

-	$| = 1;

-	select($old_selected);

-	

-	# Set regex to handle multiple line strings

-	$* = 1;

-

-    # Read first response from server (wait for .75 seconds first)

-    select(undef, undef, undef, .75);

-    sysread(SMTP, $_, 1024);

-	#print "<P>1:$_";

-

-    print SMTP "HELO $WEB_SERVER$CRLF";

-    sysread(SMTP, $_, 1024);

-	#print "<P>2:$_";

-

-	while (/(^|(\r?\n))[^0-9]*((\d\d\d).*)$/g) { $status = $4; $err_message = $3}

-	if ($status != 250) {

-		return;

-	}

-

-	print SMTP "MAIL FROM:<$from_email>$CRLF";

-

-	sysread(SMTP, $_, 1024);

-	#print "<P>3:$_";

-	if (!/[^0-9]*250/) {

-		return;

-	}

-

-    # Tell the server where we're sending to

-	print SMTP "RCPT TO:<$to_email>$CRLF";

-	sysread(SMTP, $_, 1024);

-	#print "<P>4:$_";

-	/[^0-9]*(\d\d\d)/;

-

-	# Give the server the message header

-	print SMTP "DATA$CRLF";

-	sysread(SMTP, $_, 1024);

-	#print "<P>5:$_";

-	if (!/[^0-9]*354/) {

-		return;

-	}

-

-	$message =~ s/\n/$CRLF/ig;

-	

-	print SMTP qq~From: $from_email ($from_name)$CRLF~;

-	print SMTP qq~To: $to_email ($to_name)$CRLF~;

-#	if($cc){

-#		print SMTP "CC: $cc ($cc_name)\n";

-#	}

-	print SMTP qq~Subject: $subject$CRLF$CRLF~;

-	print SMTP qq~$message~;

-

-	print SMTP "$CRLF.$CRLF";

-	sysread(SMTP, $_, 1024);

-	#print "<P>6:$_";

-	if (!/[^0-9]*250/) {

-		return;

-	} else {

-		return(1);

-	}

-

-	if (!shutdown(SMTP, 2)) {

-		return;

-    } 

-}

-

-#################################################################### 

-

-#################################################################### 

-

-sub check_email {

-	my($fe_email) = $_[0];

-	if($fe_email) {

-		if(($fe_email =~ /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)|(\.$)/) ||

-		($fe_email !~ /^.+@\[?(\w|[-.])+\.[a-zA-Z]{2,3}|[0-9]{1,3}\]?$/)) {

-			return;

-		} else { return(1) }

-	} else {

-		return;

-	}

-}

-#################################################################### 

-

-#################################################################### 

-

-sub checkUID {

-	my($uid) = $_[0];

-

-	open(LOCKFILE, $lockfileName);

-    	flock(LOCKFILE, LOCK_EX);

-    	

-	open(UIDMAP, $uidMapFile) || die "Can't open Log File: $!\n"; 

-	my($found) = 0;

-	my(@lines) = <UIDMAP>;

-	my($line) = "";

-	foreach $line (@lines)

-	{

-		if($line =~ m/^$uid\t(.*)\t(.*)\t(.*)$/)

-		{

-			$found = 1;

-			last;

-		}

-	}

-	close UIDMAP;

-

-	flock(LOCKFILE, LOCK_UN);

-	close LOCKFILE;

-	return $found;

-}

-

-#################################################################### 

-

-#################################################################### 

-

-sub log {

-	open(LOCKFILE, $lockfileName);

-	flock(LOCKFILE, LOCK_EX);

-    	

-	open(LOG, "+<$logFile") || die "Can't open Log File: $!\n"; 

-    

-	seek LOG, 0, 2;

-	print LOG $_[0] . "\t\t";	

-

-	my ($sec,$min,$hour,$mday,$mon,$year, $wday,$yday,$isdst) = localtime time;

-

-	# update the year so that it is correct since it perl

-	# has a 1900 yr offset	

-	$year += 1900;

-

-	# update the month since it is 0 based in perl	

-	$mon += 1;

-	

-	printf LOG "%02d/%02d/%04d %02d:%02d:%02d\n", $mday, $mon, $year, $hour, $min, $sec;

-	

-	close LOG;

-	

-	flock(LOCKFILE, LOCK_UN);

-    close LOCKFILE;

-}

+#!/usr/bin/perl -w
+
+use Fcntl ':flock';
+
+# START USER EDITS
+
+# absolute path to folder files will be uploaded to.
+# WINDOWS users, your path would like something like : images\\uploads
+# UNIX    users, your path would like something like : /home/www/images/uploads
+# do not end the path with any slashes and if you're on a UNIX serv, make sure
+# you CHMOD each folder in the path to 777
+
+$lockfileName = "/.../.lock";
+$logFile =    "/.../uploadLog.txt";
+$uidMapFile = "/.../mylarUidMap.txt";
+
+$dir = "/isd/se2/project/mylar/userStudy/upload";  
+
+# if you would like to be notified of uploads, enter your email address
+# between the SINGLE quotes. leave this blank if you would not like to be notified
+$notify = '';
+
+# UNIX users, if you entered a value for $notify, you must also enter your
+# server's sendmail path. It usually looks something like : /usr/sbin/sendmail
+$send_mail_path = "";
+
+# WINDOWS users, if you entered a value for $notify, you must also enter your
+# server's SMTP path. It usually looks something like : mail.servername.com
+$smtp_path = "";
+
+# file types allowed, enter each type on a new line
+# Enter the word "ALL" in uppercase, to accept all file types.
+@types = qw~
+zip
+txt
+~;
+
+####################################################################
+#    END USER EDITS
+####################################################################
+
+$OS = $^O; # operating system name
+if($OS =~ /darwin/i) { $isUNIX = 1; }
+elsif($OS =~ /win/i) { $isWIN = 1; }
+else {$isUNIX = 1;}
+	
+if($isWIN){ $S{S} = "\\\\"; }
+else { $S{S} = "/";} # seperator used in paths
+
+unless (-d "$dir"){
+	mkdir ("$dir", 0777); # unless the dir exists, make it ( and chmod it on UNIX )
+	chmod(0777, "$dir");
+}
+
+
+unless (-d "$dir"){
+	# if there still is no dir, the path entered by the user is wrong and the upload will fail
+	# send back an error code
+	# unauthorized, uid not correct
+	exit;
+}
+
+use CGI; # load the CGI.pm module
+my $GET = new CGI; # create a new object
+my @VAL = $GET->param; #get all form field names
+
+foreach(@VAL){
+	$FORM{$_} = $GET->param($_); # put all fields and values in hash 
+}
+
+my($uid) = "";
+
+my @files;
+foreach(keys %FORM){
+	# check for the parameter name
+	# This must be MYLARa where is a a number
+	if($_ =~ /^MYLAR(\d+)/){
+		$uid = $1;
+		if(&checkUID($uid) == 1)
+		{
+			push(@files, $_); # place the field NAME in an array
+		}
+		else
+		{
+			# unauthorized, uid not correct
+			print "Content-type: text/plain", "\n";
+			print "Status: 401 Unauthorized", "\n\n";
+			print "UID Incorrect","\n";
+			exit;
+		}
+	}
+}
+
+
+if(!$VAL[0]){
+	# no file to upload so exit with an error
+	print "Content-type: text/plain", "\n";
+	print "Status: 501 Not Implemented", "\n\n";
+	print "Upload Failed - no file to upload","\n";
+
+	exit;
+}
+
+
+my $failed; # results string = false
+my $selected; # num of files selected by user
+
+#################################################################### 
+
+#################################################################### 
+
+foreach (@files){
+	# upload each file, pass the form field NAME if it has a value
+	if($GET->param($_)){
+		# if the form field contains a file name &psjs_upload subroutine
+		# the file's name and path are passed to the subroutine 
+		$returned = &psjs_upload($_); 
+		if($returned =~ /^Success/i){
+			# if the $returned message begins with "Success" the upload was succssful
+			# remove the word "Success" and any spaces and we're left with the filename   
+			$returned =~ s/^Success\s+//;
+			push(@success, $returned);
+		} else {
+			# else if the word "success" is not returned, the message is the error encountered. 
+			# add the error to the $failed scalar
+			$failed .= $returned;
+		}
+		$selected++; # increment num of files selected for uploading by user
+	}
+}
+
+if(!$selected){
+	# no files were selected by user, so nothing is returned to either variable
+	$failed .= qq~No files were selected for uploading~;
+}
+
+# if no error message is return ed, the upload was successful
+
+my ($fNames, $aa, $bb, @current, @currentfiles );
+
+if($failed){
+
+	# file failed to upload return error
+	print "Content-type: text/plain", "\n";
+	print "Status: 501 Not Implemented", "\n\n";
+	print "Upload Failed","\n";
+	
+} else {
+	# upload was successful
+	# log the success and return success code
+	
+	# send email if valid email was entered
+	if(check_email($notify)){
+		
+		# TODO send an appropriate message
+		
+		# enter the message you would like to receive
+		my $message = qq~
+		The following files were uploaded to your server :
+		~; 
+		
+		foreach(@success){
+			$message .= qq~
+			$dir/$_	
+			~;
+		}
+		
+		if($isUNIX){
+			$CONFIG{mailprogram} = $send_mail_path;
+			# enter your e-mail name here if you like
+			# from e-mail, from name, to e-mail, to name, subject, body
+			&send_mail($notify, 'Demo Upload', $notify, 'Demo Upload', 'Upload Notification', $message);
+			
+		} else {
+			$CONFIG{smtppath} = $smtp_path;
+			&send_mail_NT($notify, 'Your Name', $notify, 'Your Name', 'Upload Notification', $message);
+		}
+	}
+	
+	# NEED TO LOG THE UPLOAD
+	foreach(@success){
+		&log($uid . "\t" . "$dir/$_");
+	}
+	
+	
+	print "Content-type: text/plain". "\n";
+	print "Status: 200 OK", "\n\n";
+	print "Upload Success","\n";
+}
+
+#################################################################### 
+
+#################################################################### 
+
+sub psjs_upload {
+
+	my $filename = $GET->param($_[0]); 
+	$filename =~ s/.*[\/\\](.*)/$1/; 
+	my $upload_filehandle = $GET->upload($_[0]); 
+	# if $file_type matchs one of the types specified, make the $type_ok var true
+	for($b = 0; $b < @types; $b++){
+		if($filename =~ /^.*\.$types[$b]$/i){
+			$type_ok++;
+		}
+		if($types[$b] eq "ALL"){
+			$type_ok++; # if ALL keyword is found, increment $type_ok var.
+		}
+	}
+	
+	# if ok, check if overwrite is allowed
+	if($type_ok){
+	    if(open UPLOADFILE, ">$dir/$filename"){
+
+	    	binmode UPLOADFILE; 
+
+	    	while ( <$upload_filehandle> ) 
+	    	{
+				print UPLOADFILE; 
+	    	} 
+   		    close UPLOADFILE; 
+	    }else {
+	    	return qq~Error opening file on the server~; 
+	    }
+	} else {
+		return qq~Bad file type~; 
+	}
+			
+	# check if file has actually been uploaded, by checking the file has a size
+	if(-s "$dir/$filename"){
+		return qq~Success $filename~; #success 
+	} else {
+		# delete the file as it has no content
+		# user probably entered an incorrect path to file
+		return qq~Upload failed : No data in $filename. No size on server's copy of file. 
+		Check the path entered.~; 
+	}
+}
+
+#################################################################### 
+
+#################################################################### 
+
+sub check_existence {
+	# $dir,$filename,$newnum are the args passed to this sub
+	my ($dir,$filename,$newnum) = @_;
+	
+	my (@file_type, $file_type, $exists, $bareName); 
+	# declare some vars we will use later on in this sub always use paranthesis 
+	# when declaring more than one var! Some novice programmers will tell you 
+	# this is not necessary. Tell them to learn how to program.
+	
+	if(!$newnum){$newnum = "0";} # new num is empty in first call, so set it to 0
+	
+	# read dir and put all files in an array (list)
+	opendir(DIR, "$dir");
+	@existing_files =  readdir(DIR);
+	closedir(DIR);
+	
+	# if the filename passed exists, set $exists to true or 1
+	foreach(@existing_files){
+		if($_ eq $filename){
+			$exists = 1;
+		}
+	}
+	
+	# if it exists, we need to rename the file being uploaded and then recheck it to 
+	# make sure the new name does not exist
+	if($exists){
+		$newnum++; # increment new number (add 1)
+
+		# get the extension
+		@file_type   = split(/\./, $filename); # split the dots and add inbetweens to a list
+		# put the first element in the $barename var
+		$bareName    = $file_type[0]; 
+		# we can assume everything after the last . found is the extension
+		$file_type   = $file_type[$#file_type]; 
+		# $#file_type is the last element (note the pound or hash is used)
+		
+		# remove all numbers from the end of the $bareName
+		$bareName =~ s/\d+$//ig;
+		
+		# concatenate a new name using the barename + newnum + extension 
+		$filename = $bareName . $newnum . '.' . $file_type;
+		
+		# reset $exists to 0 because the new file name is now being checked
+		$exists = 0;
+		
+		# recall this subroutine
+		&check_existence($dir,$filename,$newnum);
+	} else {
+		# the $filename, whether the first or one hundreth call, now does not exist
+		# so return the name to be used
+		return ($filename);
+	}
+}
+
+#################################################################### 
+
+#################################################################### 
+
+sub send_mail {
+	my ($from_email, $from_name, $to_email, $to_name, $subject, $message ) = @_;
+	
+	if(open(MAIL, "|$CONFIG{mailprogram} -t")) {
+		print MAIL "From: $from_email ($from_name)\n";
+		print MAIL "To: $to_email ($to_name)\n";
+		print MAIL "Subject: $subject\n";
+		print MAIL "$message\n\nSubmitter's IP Address : $ENV{REMOTE_ADDR}";
+		close MAIL;
+		return(1);
+	} else {
+		return;
+	}
+}
+
+#################################################################### 
+
+#################################################################### 
+
+sub send_mail_NT {
+	
+	my ($from_email, $from_name, $to_email, $to_name, $subject, $message ) = @_;
+	
+	my ($SMTP_SERVER, $WEB_SERVER, $status, $err_message);
+	use Socket; 
+    $SMTP_SERVER = "$CONFIG{smtppath}";                                 
+	
+	# correct format for "\n"
+    local($CRLF) = "\015\012";
+    local($SMTP_SERVER_PORT) = 25;
+    local($AF_INET) = ($] > 5 ? AF_INET : 2);
+    local($SOCK_STREAM) = ($] > 5 ? SOCK_STREAM : 1);
+#    local(@bad_addresses) = ();
+    $, = ', ';
+    $" = ', ';
+
+    $WEB_SERVER = "$CONFIG{smtppath}\n";
+    chop ($WEB_SERVER);
+
+    local($local_address) = (gethostbyname($WEB_SERVER))[4];
+    local($local_socket_address) = pack('S n a4 x8', $AF_INET, 0, $local_address);
+
+    local($server_address) = (gethostbyname($SMTP_SERVER))[4];
+    local($server_socket_address) = pack('S n a4 x8', $AF_INET, $SMTP_SERVER_PORT, $server_address);
+
+    # Translate protocol name to corresponding number
+    local($protocol) = (getprotobyname('tcp'))[2];
+
+    # Make the socket filehandle
+    if (!socket(SMTP, $AF_INET, $SOCK_STREAM, $protocol)) {
+        return;
+    }
+
+	# Give the socket an address
+	bind(SMTP, $local_socket_address);
+	
+	# Connect to the server
+	if (!(connect(SMTP, $server_socket_address))) {
+		return;
+	}
+	
+	# Set the socket to be line buffered
+	local($old_selected) = select(SMTP);
+	$| = 1;
+	select($old_selected);
+	
+	# Set regex to handle multiple line strings
+	$* = 1;
+
+    # Read first response from server (wait for .75 seconds first)
+    select(undef, undef, undef, .75);
+    sysread(SMTP, $_, 1024);
+	#print "<P>1:$_";
+
+    print SMTP "HELO $WEB_SERVER$CRLF";
+    sysread(SMTP, $_, 1024);
+	#print "<P>2:$_";
+
+	while (/(^|(\r?\n))[^0-9]*((\d\d\d).*)$/g) { $status = $4; $err_message = $3}
+	if ($status != 250) {
+		return;
+	}
+
+	print SMTP "MAIL FROM:<$from_email>$CRLF";
+
+	sysread(SMTP, $_, 1024);
+	#print "<P>3:$_";
+	if (!/[^0-9]*250/) {
+		return;
+	}
+
+    # Tell the server where we're sending to
+	print SMTP "RCPT TO:<$to_email>$CRLF";
+	sysread(SMTP, $_, 1024);
+	#print "<P>4:$_";
+	/[^0-9]*(\d\d\d)/;
+
+	# Give the server the message header
+	print SMTP "DATA$CRLF";
+	sysread(SMTP, $_, 1024);
+	#print "<P>5:$_";
+	if (!/[^0-9]*354/) {
+		return;
+	}
+
+	$message =~ s/\n/$CRLF/ig;
+	
+	print SMTP qq~From: $from_email ($from_name)$CRLF~;
+	print SMTP qq~To: $to_email ($to_name)$CRLF~;
+#	if($cc){
+#		print SMTP "CC: $cc ($cc_name)\n";
+#	}
+	print SMTP qq~Subject: $subject$CRLF$CRLF~;
+	print SMTP qq~$message~;
+
+	print SMTP "$CRLF.$CRLF";
+	sysread(SMTP, $_, 1024);
+	#print "<P>6:$_";
+	if (!/[^0-9]*250/) {
+		return;
+	} else {
+		return(1);
+	}
+
+	if (!shutdown(SMTP, 2)) {
+		return;
+    } 
+}
+
+#################################################################### 
+
+#################################################################### 
+
+sub check_email {
+	my($fe_email) = $_[0];
+	if($fe_email) {
+		if(($fe_email =~ /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)|(\.$)/) ||
+		($fe_email !~ /^.+@\[?(\w|[-.])+\.[a-zA-Z]{2,3}|[0-9]{1,3}\]?$/)) {
+			return;
+		} else { return(1) }
+	} else {
+		return;
+	}
+}
+#################################################################### 
+
+#################################################################### 
+
+sub checkUID {
+	my($uid) = $_[0];
+
+	open(LOCKFILE, $lockfileName);
+    	flock(LOCKFILE, LOCK_EX);
+    	
+	open(UIDMAP, $uidMapFile) || die "Can't open Log File: $!\n"; 
+	my($found) = 0;
+	my(@lines) = <UIDMAP>;
+	my($line) = "";
+	foreach $line (@lines)
+	{
+		if($line =~ m/^$uid\t(.*)\t(.*)\t(.*)$/)
+		{
+			$found = 1;
+			last;
+		}
+	}
+	close UIDMAP;
+
+	flock(LOCKFILE, LOCK_UN);
+	close LOCKFILE;
+	return $found;
+}
+
+#################################################################### 
+
+#################################################################### 
+
+sub log {
+	open(LOCKFILE, $lockfileName);
+	flock(LOCKFILE, LOCK_EX);
+    	
+	open(LOG, "+<$logFile") || die "Can't open Log File: $!\n"; 
+    
+	seek LOG, 0, 2;
+	print LOG $_[0] . "\t\t";	
+
+	my ($sec,$min,$hour,$mday,$mon,$year, $wday,$yday,$isdst) = localtime time;
+
+	# update the year so that it is correct since it perl
+	# has a 1900 yr offset	
+	$year += 1900;
+
+	# update the month since it is 0 based in perl	
+	$mon += 1;
+	
+	printf LOG "%02d/%02d/%04d %02d:%02d:%02d\n", $mday, $mon, $year, $hour, $min, $sec;
+	
+	close LOG;
+	
+	flock(LOCKFILE, LOCK_UN);
+    close LOCKFILE;
+}
diff --git a/org.eclipse.mylyn.experimental-sdk-feature/.settings/org.eclipse.core.runtime.prefs b/org.eclipse.mylyn.experimental-sdk-feature/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/org.eclipse.mylyn.experimental-sdk-feature/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/org.eclipse.mylyn.ide.capabilities/.settings/org.eclipse.core.runtime.prefs b/org.eclipse.mylyn.ide.capabilities/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/org.eclipse.mylyn.ide.capabilities/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/org.eclipse.mylyn.ide.capabilities/META-INF/MANIFEST.MF b/org.eclipse.mylyn.ide.capabilities/META-INF/MANIFEST.MF
index 01b497b..70646d9 100644
--- a/org.eclipse.mylyn.ide.capabilities/META-INF/MANIFEST.MF
+++ b/org.eclipse.mylyn.ide.capabilities/META-INF/MANIFEST.MF
@@ -1,8 +1,8 @@
-Manifest-Version: 1.0

-Bundle-ManifestVersion: 2

-Bundle-Name: %Bundle-Name

-Bundle-SymbolicName: org.eclipse.mylyn.ide.capabilities;singleton:=true

-Bundle-Version: 3.7.0.qualifier

-Bundle-Vendor: %Bundle-Vendor

-Require-Bundle: org.eclipse.ui

-Bundle-Localization: plugin

+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %Bundle-Name
+Bundle-SymbolicName: org.eclipse.mylyn.ide.capabilities;singleton:=true
+Bundle-Version: 3.7.0.qualifier
+Bundle-Vendor: %Bundle-Vendor
+Require-Bundle: org.eclipse.ui
+Bundle-Localization: plugin
diff --git a/org.eclipse.mylyn.ide.dev/.settings/org.eclipse.core.runtime.prefs b/org.eclipse.mylyn.ide.dev/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/org.eclipse.mylyn.ide.dev/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/org.eclipse.mylyn.ide.dev/META-INF/MANIFEST.MF b/org.eclipse.mylyn.ide.dev/META-INF/MANIFEST.MF
index d9d145d..5e4f905 100644
--- a/org.eclipse.mylyn.ide.dev/META-INF/MANIFEST.MF
+++ b/org.eclipse.mylyn.ide.dev/META-INF/MANIFEST.MF
@@ -1,8 +1,8 @@
-Manifest-Version: 1.0

-Bundle-ManifestVersion: 2

-Bundle-Name: %Bundle-Name

-Bundle-SymbolicName: org.eclipse.mylyn.ide.dev;singleton:=true

-Bundle-Version: 3.7.0.qualifier

-Bundle-Vendor: %Bundle-Vendor

-Require-Bundle: org.eclipse.ui

-Bundle-Localization: plugin

+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %Bundle-Name
+Bundle-SymbolicName: org.eclipse.mylyn.ide.dev;singleton:=true
+Bundle-Version: 3.7.0.qualifier
+Bundle-Vendor: %Bundle-Vendor
+Require-Bundle: org.eclipse.ui
+Bundle-Localization: plugin
diff --git a/org.eclipse.mylyn.incubator-site/site.xml b/org.eclipse.mylyn.incubator-site/site.xml
index 80bd9c3..a245fcf 100644
--- a/org.eclipse.mylyn.incubator-site/site.xml
+++ b/org.eclipse.mylyn.incubator-site/site.xml
@@ -1,37 +1,37 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<site>

-   <description url="http://download.eclipse.org/mylyn/incubator">

-      Mylyn Incubator

-   </description>

-   <feature url="features/org.eclipse.mylyn.sandbox.serach_0.0.0.jar" id="org.eclipse.mylyn.sandbox.search" version="0.0.0">

-      <category name="Incubator"/>

-   </feature>

-   <feature url="features/org.eclipse.mylyn.sandbox.ui_feature_0.0.0.jar" id="org.eclipse.mylyn.sandbox.ui_feature" version="0.0.0">

-      <category name="Incubator"/>

-   </feature>

-   <feature url="features/org.eclipse.mylyn.monitor_feature_0.0.0.jar" id="org.eclipse.mylyn.monitor_feature" version="0.0.0">

-      <category name="Incubator"/>

-   </feature>

-   <feature url="features/org.eclipse.mylyn.web.tasks_feature_0.0.0.jar" id="org.eclipse.mylyn.web.tasks_feature" version="0.0.0">

-      <category name="Incubator"/>

-   </feature>

-   <feature url="features/org.eclipse.mylyn.wikitext.sandbox_0.0.0.jar" id="org.eclipse.mylyn.wikitext.sandbox" version="0.0.0">

-      <category name="Incubator"/>

-   </feature>

-   <feature url="features/org.eclipse.mylyn.experimental_sdk_feature_0.0.0.jar" id="org.eclipse.mylyn.experimental_sdk_feature" version="0.0.0">

-      <category name="SDKIncubator"/>

-   </feature>

-   <feature url="features/org.eclipse.mylyn.tasks.index_0.0.0.qualifier.jar" id="org.eclipse.mylyn.tasks.index" version="0.0.0">

-      <category name="Incubator"/>

-   </feature>

-   <category-def name="Incubator" label="Mylyn Incubator">

-      <description>

-         Mylyn bridges that integrate with documents and programming languages. Mylyn connectors that integrate with task repositories.

-      </description>

-   </category-def>

-   <category-def name="SDKIncubator" label="Mylyn Plug-in Development">

-      <description>

-         Source code and documentation for integrators building on Mylyn.

-      </description>

-   </category-def>

-</site>

+<?xml version="1.0" encoding="UTF-8"?>
+<site>
+   <description url="http://download.eclipse.org/mylyn/incubator">
+      Mylyn Incubator
+   </description>
+   <feature url="features/org.eclipse.mylyn.sandbox.serach_0.0.0.jar" id="org.eclipse.mylyn.sandbox.search" version="0.0.0">
+      <category name="Incubator"/>
+   </feature>
+   <feature url="features/org.eclipse.mylyn.sandbox.ui_feature_0.0.0.jar" id="org.eclipse.mylyn.sandbox.ui_feature" version="0.0.0">
+      <category name="Incubator"/>
+   </feature>
+   <feature url="features/org.eclipse.mylyn.monitor_feature_0.0.0.jar" id="org.eclipse.mylyn.monitor_feature" version="0.0.0">
+      <category name="Incubator"/>
+   </feature>
+   <feature url="features/org.eclipse.mylyn.web.tasks_feature_0.0.0.jar" id="org.eclipse.mylyn.web.tasks_feature" version="0.0.0">
+      <category name="Incubator"/>
+   </feature>
+   <feature url="features/org.eclipse.mylyn.wikitext.sandbox_0.0.0.jar" id="org.eclipse.mylyn.wikitext.sandbox" version="0.0.0">
+      <category name="Incubator"/>
+   </feature>
+   <feature url="features/org.eclipse.mylyn.experimental_sdk_feature_0.0.0.jar" id="org.eclipse.mylyn.experimental_sdk_feature" version="0.0.0">
+      <category name="SDKIncubator"/>
+   </feature>
+   <feature url="features/org.eclipse.mylyn.tasks.index_0.0.0.qualifier.jar" id="org.eclipse.mylyn.tasks.index" version="0.0.0">
+      <category name="Incubator"/>
+   </feature>
+   <category-def name="Incubator" label="Mylyn Incubator">
+      <description>
+         Mylyn bridges that integrate with documents and programming languages. Mylyn connectors that integrate with task repositories.
+      </description>
+   </category-def>
+   <category-def name="SDKIncubator" label="Mylyn Plug-in Development">
+      <description>
+         Source code and documentation for integrators building on Mylyn.
+      </description>
+   </category-def>
+</site>
diff --git a/org.eclipse.mylyn.monitor.reports/.settings/org.eclipse.core.runtime.prefs b/org.eclipse.mylyn.monitor.reports/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/org.eclipse.mylyn.monitor.reports/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/org.eclipse.mylyn.monitor.reports/META-INF/MANIFEST.MF b/org.eclipse.mylyn.monitor.reports/META-INF/MANIFEST.MF
index ca8d779..5450403 100644
--- a/org.eclipse.mylyn.monitor.reports/META-INF/MANIFEST.MF
+++ b/org.eclipse.mylyn.monitor.reports/META-INF/MANIFEST.MF
@@ -1,25 +1,25 @@
-Manifest-Version: 1.0

-Bundle-ManifestVersion: 2

-Bundle-Name: Mylyn Usage Monitor (Incubation)

-Bundle-SymbolicName: org.eclipse.mylyn.monitor.reports; singleton:=true

-Bundle-Version: 3.7.0.qualifier

-Bundle-Activator: org.eclipse.mylyn.internal.monitor.reports.MonitorReportsPlugin

-Bundle-Vendor: Eclipse Mylyn

-Require-Bundle: org.eclipse.ui,

- org.eclipse.core.runtime,

- org.eclipse.core.resources,

- org.eclipse.jdt.ui,

- org.eclipse.ui.forms,

- org.eclipse.mylyn.context.core;bundle-version="[3.0.0,4.0.0)",

- org.eclipse.mylyn.monitor.usage;bundle-version="[3.0.0,4.0.0)",

- org.eclipse.mylyn.context.ui;bundle-version="[3.0.0,4.0.0)",

- org.eclipse.mylyn.tasks.ui;bundle-version="[3.0.0,4.0.0)",

- org.eclipse.mylyn.monitor.ui;bundle-version="[3.0.0,4.0.0)",

- org.eclipse.mylyn.monitor.core;bundle-version="[3.0.0,4.0.0)",

- org.eclipse.mylyn.commons.core;bundle-version="[3.0.0,4.0.0)"

-Bundle-ActivationPolicy: lazy

-Export-Package: org.eclipse.mylyn.internal.monitor.reports;x-internal:=true,

- org.eclipse.mylyn.internal.monitor.reports.collectors;x-internal:=true,

- org.eclipse.mylyn.internal.monitor.reports.preferences;x-internal:=true,

- org.eclipse.mylyn.internal.monitor.reports.ui.actions;x-internal:=true

-Bundle-RequiredExecutionEnvironment: J2SE-1.5

+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Mylyn Usage Monitor (Incubation)
+Bundle-SymbolicName: org.eclipse.mylyn.monitor.reports; singleton:=true
+Bundle-Version: 3.7.0.qualifier
+Bundle-Activator: org.eclipse.mylyn.internal.monitor.reports.MonitorReportsPlugin
+Bundle-Vendor: Eclipse Mylyn
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.core.resources,
+ org.eclipse.jdt.ui,
+ org.eclipse.ui.forms,
+ org.eclipse.mylyn.context.core;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.mylyn.monitor.usage;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.mylyn.context.ui;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.mylyn.tasks.ui;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.mylyn.monitor.ui;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.mylyn.monitor.core;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.mylyn.commons.core;bundle-version="[3.0.0,4.0.0)"
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.mylyn.internal.monitor.reports;x-internal:=true,
+ org.eclipse.mylyn.internal.monitor.reports.collectors;x-internal:=true,
+ org.eclipse.mylyn.internal.monitor.reports.preferences;x-internal:=true,
+ org.eclipse.mylyn.internal.monitor.reports.ui.actions;x-internal:=true
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/org.eclipse.mylyn.monitor.usage-feature/.settings/org.eclipse.core.runtime.prefs b/org.eclipse.mylyn.monitor.usage-feature/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/org.eclipse.mylyn.monitor.usage-feature/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/org.eclipse.mylyn.monitor.usage/.settings/org.eclipse.core.runtime.prefs b/org.eclipse.mylyn.monitor.usage/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/org.eclipse.mylyn.monitor.usage/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/org.eclipse.mylyn.monitor.usage/META-INF/MANIFEST.MF b/org.eclipse.mylyn.monitor.usage/META-INF/MANIFEST.MF
index 0d2e31f..4b46f29 100644
--- a/org.eclipse.mylyn.monitor.usage/META-INF/MANIFEST.MF
+++ b/org.eclipse.mylyn.monitor.usage/META-INF/MANIFEST.MF
@@ -1,33 +1,33 @@
-Manifest-Version: 1.0

-Bundle-ManifestVersion: 2

-Bundle-Name: Mylyn Usage Monitor (Incubation)

-Bundle-SymbolicName: org.eclipse.mylyn.monitor.usage;singleton:=true

-Bundle-Version: 3.7.0.qualifier

-Bundle-Activator: org.eclipse.mylyn.internal.monitor.usage.UiUsageMonitorPlugin

-Require-Bundle: org.eclipse.ui,

- org.eclipse.core.runtime,

- org.eclipse.core.resources,

- org.eclipse.jface.text,

- org.eclipse.ui.browser,

- org.eclipse.ui.editors,

- org.eclipse.ui.workbench.texteditor,

- org.eclipse.ui.forms,

- org.eclipse.core.filesystem,

- org.eclipse.ui.ide,

- org.eclipse.mylyn.commons.core;bundle-version="[3.0.0,4.0.0)",

- org.eclipse.mylyn.commons.ui;bundle-version="[3.0.0,4.0.0)",

- org.eclipse.mylyn.commons.net;bundle-version="[3.0.0,4.0.0)",

- org.eclipse.mylyn.context.core;bundle-version="[3.0.0,4.0.0)",

- org.eclipse.mylyn.monitor.core;bundle-version="[3.0.0,4.0.0)",

- org.eclipse.mylyn.monitor.ui;bundle-version="[3.0.0,4.0.0)"

-Bundle-ActivationPolicy: lazy

-Bundle-Vendor: Eclipse Mylyn

-Export-Package: 

- org.eclipse.mylyn.internal.monitor.usage;x-internal:=true,

- org.eclipse.mylyn.internal.monitor.usage.collectors;x-internal:=true,

- org.eclipse.mylyn.internal.monitor.usage.common;x-internal:=true,

- org.eclipse.mylyn.internal.monitor.usage.editors;x-internal:=true,

- org.eclipse.mylyn.internal.monitor.usage.preferences;x-internal:=true,

- org.eclipse.mylyn.internal.monitor.usage.wizards;x-internal:=true,

- org.eclipse.mylyn.monitor.usage

-Bundle-RequiredExecutionEnvironment: J2SE-1.5

+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Mylyn Usage Monitor (Incubation)
+Bundle-SymbolicName: org.eclipse.mylyn.monitor.usage;singleton:=true
+Bundle-Version: 3.7.0.qualifier
+Bundle-Activator: org.eclipse.mylyn.internal.monitor.usage.UiUsageMonitorPlugin
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.core.resources,
+ org.eclipse.jface.text,
+ org.eclipse.ui.browser,
+ org.eclipse.ui.editors,
+ org.eclipse.ui.workbench.texteditor,
+ org.eclipse.ui.forms,
+ org.eclipse.core.filesystem,
+ org.eclipse.ui.ide,
+ org.eclipse.mylyn.commons.core;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.mylyn.commons.ui;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.mylyn.commons.net;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.mylyn.context.core;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.mylyn.monitor.core;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.mylyn.monitor.ui;bundle-version="[3.0.0,4.0.0)"
+Bundle-ActivationPolicy: lazy
+Bundle-Vendor: Eclipse Mylyn
+Export-Package: 
+ org.eclipse.mylyn.internal.monitor.usage;x-internal:=true,
+ org.eclipse.mylyn.internal.monitor.usage.collectors;x-internal:=true,
+ org.eclipse.mylyn.internal.monitor.usage.common;x-internal:=true,
+ org.eclipse.mylyn.internal.monitor.usage.editors;x-internal:=true,
+ org.eclipse.mylyn.internal.monitor.usage.preferences;x-internal:=true,
+ org.eclipse.mylyn.internal.monitor.usage.wizards;x-internal:=true,
+ org.eclipse.mylyn.monitor.usage
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/org.eclipse.mylyn.monitor.usage/doc/book.css b/org.eclipse.mylyn.monitor.usage/doc/book.css
index 6ee38f3..faa4199 100644
--- a/org.eclipse.mylyn.monitor.usage/doc/book.css
+++ b/org.eclipse.mylyn.monitor.usage/doc/book.css
@@ -1 +1 @@
-@import "../../PRODUCT_PLUGIN/book.css";

+@import "../../PRODUCT_PLUGIN/book.css";
diff --git a/org.eclipse.mylyn.sandbox.dev-feature/.settings/org.eclipse.core.runtime.prefs b/org.eclipse.mylyn.sandbox.dev-feature/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/org.eclipse.mylyn.sandbox.dev-feature/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/org.eclipse.mylyn.sandbox.dev/.settings/org.eclipse.core.runtime.prefs b/org.eclipse.mylyn.sandbox.dev/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/org.eclipse.mylyn.sandbox.dev/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/org.eclipse.mylyn.sandbox.dev/META-INF/MANIFEST.MF b/org.eclipse.mylyn.sandbox.dev/META-INF/MANIFEST.MF
index 32ff394..b35cc6d 100644
--- a/org.eclipse.mylyn.sandbox.dev/META-INF/MANIFEST.MF
+++ b/org.eclipse.mylyn.sandbox.dev/META-INF/MANIFEST.MF
@@ -1,24 +1,24 @@
-Manifest-Version: 1.0

-Bundle-ManifestVersion: 2

-Bundle-Name: Mylyn Incubator (Incubation)

-Bundle-SymbolicName: org.eclipse.mylyn.sandbox.dev;singleton:=true

-Bundle-Version: 3.7.0.qualifier

-Require-Bundle: org.eclipse.core.resources,

- org.eclipse.core.runtime,

- org.eclipse.jdt.core;resolution:=optional,

- org.eclipse.ui,

- org.eclipse.ui.views.properties.tabbed,

- org.eclipse.mylyn.commons.core;bundle-version="[3.0.0,4.0.0)",

- org.eclipse.mylyn.commons.ui;bundle-version="[3.0.0,4.0.0)",

- org.eclipse.mylyn.context.core;bundle-version="[3.0.0,4.0.0)",

- org.eclipse.mylyn.context.ui;bundle-version="[3.0.0,4.0.0)",

- org.eclipse.mylyn.tasks.core;bundle-version="[3.0.0,4.0.0)",

- org.eclipse.mylyn.tasks.ui;bundle-version="[3.0.0,4.0.0)"

-Bundle-ActivationPolicy: lazy

-Bundle-Vendor: Eclipse Mylyn

-Bundle-RequiredExecutionEnvironment: J2SE-1.5

-Bundle-Activator: org.eclipse.mylyn.internal.sandbox.dev.MylynDevPlugin

-Export-Package: org.eclipse.mylyn.internal.sandbox.dev;x-internal:=true,

- org.eclipse.mylyn.internal.sandbox.dev.actions;x-internal:=true,

- org.eclipse.mylyn.internal.sandbox.dev.properties;x-internal:=true,

- org.eclipse.mylyn.internal.sandbox.dev.views;x-internal:=true

+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Mylyn Incubator (Incubation)
+Bundle-SymbolicName: org.eclipse.mylyn.sandbox.dev;singleton:=true
+Bundle-Version: 3.7.0.qualifier
+Require-Bundle: org.eclipse.core.resources,
+ org.eclipse.core.runtime,
+ org.eclipse.jdt.core;resolution:=optional,
+ org.eclipse.ui,
+ org.eclipse.ui.views.properties.tabbed,
+ org.eclipse.mylyn.commons.core;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.mylyn.commons.ui;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.mylyn.context.core;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.mylyn.context.ui;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.mylyn.tasks.core;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.mylyn.tasks.ui;bundle-version="[3.0.0,4.0.0)"
+Bundle-ActivationPolicy: lazy
+Bundle-Vendor: Eclipse Mylyn
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-Activator: org.eclipse.mylyn.internal.sandbox.dev.MylynDevPlugin
+Export-Package: org.eclipse.mylyn.internal.sandbox.dev;x-internal:=true,
+ org.eclipse.mylyn.internal.sandbox.dev.actions;x-internal:=true,
+ org.eclipse.mylyn.internal.sandbox.dev.properties;x-internal:=true,
+ org.eclipse.mylyn.internal.sandbox.dev.views;x-internal:=true
diff --git a/org.eclipse.mylyn.sandbox.search-feature/.settings/org.eclipse.core.runtime.prefs b/org.eclipse.mylyn.sandbox.search-feature/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/org.eclipse.mylyn.sandbox.search-feature/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/org.eclipse.mylyn.sandbox.search-feature/feature.xml b/org.eclipse.mylyn.sandbox.search-feature/feature.xml
index df22d70..df90b61 100644
--- a/org.eclipse.mylyn.sandbox.search-feature/feature.xml
+++ b/org.eclipse.mylyn.sandbox.search-feature/feature.xml
@@ -1,37 +1,37 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<feature

-      id="org.eclipse.mylyn.sandbox.search"

-      label="%featureName"

-      version="3.7.0.qualifier"

-      provider-name="%providerName"

-      plugin="org.eclipse.mylyn">

-

-   <description url="http://eclipse.org/mylyn">

-      %description

-   </description>

-

-   <copyright>

-      %copyright

-   </copyright>

-

-   <license url="license.html">

-      %license

-   </license>

-

-   <plugin

-         id="org.eclipse.mylyn.sandbox.search.ui"

-         download-size="0"

-         install-size="0"

-         version="0.0.0"

-         unpack="false"/>

-

-   <plugin

-         id="org.eclipse.mylyn.sandbox.search.ui.windows"

-         os="win32"

-         arch="x86,x86_64"

-         download-size="0"

-         install-size="0"

-         version="0.0.0"

-         unpack="false"/>

-

-</feature>

+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.mylyn.sandbox.search"
+      label="%featureName"
+      version="3.7.0.qualifier"
+      provider-name="%providerName"
+      plugin="org.eclipse.mylyn">
+
+   <description url="http://eclipse.org/mylyn">
+      %description
+   </description>
+
+   <copyright>
+      %copyright
+   </copyright>
+
+   <license url="license.html">
+      %license
+   </license>
+
+   <plugin
+         id="org.eclipse.mylyn.sandbox.search.ui"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.mylyn.sandbox.search.ui.windows"
+         os="win32"
+         arch="x86,x86_64"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+</feature>
diff --git a/org.eclipse.mylyn.sandbox.search.ui.windows/.project b/org.eclipse.mylyn.sandbox.search.ui.windows/.project
index c4116b2..d61c780 100644
--- a/org.eclipse.mylyn.sandbox.search.ui.windows/.project
+++ b/org.eclipse.mylyn.sandbox.search.ui.windows/.project
@@ -1,28 +1,28 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<projectDescription>

-	<name>org.eclipse.mylyn.sandbox.search.ui.windows</name>

-	<comment></comment>

-	<projects>

-	</projects>

-	<buildSpec>

-		<buildCommand>

-			<name>org.eclipse.jdt.core.javabuilder</name>

-			<arguments>

-			</arguments>

-		</buildCommand>

-		<buildCommand>

-			<name>org.eclipse.pde.ManifestBuilder</name>

-			<arguments>

-			</arguments>

-		</buildCommand>

-		<buildCommand>

-			<name>org.eclipse.pde.SchemaBuilder</name>

-			<arguments>

-			</arguments>

-		</buildCommand>

-	</buildSpec>

-	<natures>

-		<nature>org.eclipse.pde.PluginNature</nature>

-		<nature>org.eclipse.jdt.core.javanature</nature>

-	</natures>

-</projectDescription>

+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.mylyn.sandbox.search.ui.windows</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.mylyn.sandbox.search.ui.windows/.settings/org.eclipse.core.runtime.prefs b/org.eclipse.mylyn.sandbox.search.ui.windows/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/org.eclipse.mylyn.sandbox.search.ui.windows/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/org.eclipse.mylyn.sandbox.search.ui.windows/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.mylyn.sandbox.search.ui.windows/.settings/org.eclipse.jdt.core.prefs
index 93bc578..e289ef7 100644
--- a/org.eclipse.mylyn.sandbox.search.ui.windows/.settings/org.eclipse.jdt.core.prefs
+++ b/org.eclipse.mylyn.sandbox.search.ui.windows/.settings/org.eclipse.jdt.core.prefs
@@ -1,357 +1,357 @@
-#Wed Jun 15 20:34:49 CEST 2011

-eclipse.preferences.version=1

-org.eclipse.jdt.core.codeComplete.argumentPrefixes=

-org.eclipse.jdt.core.codeComplete.argumentSuffixes=

-org.eclipse.jdt.core.codeComplete.fieldPrefixes=

-org.eclipse.jdt.core.codeComplete.fieldSuffixes=

-org.eclipse.jdt.core.codeComplete.localPrefixes=

-org.eclipse.jdt.core.codeComplete.localSuffixes=

-org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=

-org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=

-org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=

-org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=

-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled

-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5

-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve

-org.eclipse.jdt.core.compiler.compliance=1.5

-org.eclipse.jdt.core.compiler.debug.lineNumber=generate

-org.eclipse.jdt.core.compiler.debug.localVariable=generate

-org.eclipse.jdt.core.compiler.debug.sourceFile=generate

-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning

-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error

-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore

-org.eclipse.jdt.core.compiler.problem.deprecation=warning

-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled

-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled

-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning

-org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore

-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error

-org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore

-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled

-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore

-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning

-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning

-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error

-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning

-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning

-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore

-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore

-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore

-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning

-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore

-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore

-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning

-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning

-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning

-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning

-org.eclipse.jdt.core.compiler.problem.nullReference=error

-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning

-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore

-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore

-org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning

-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning

-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore

-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore

-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled

-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning

-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled

-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore

-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning

-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning

-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore

-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning

-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore

-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore

-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore

-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore

-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled

-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled

-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled

-org.eclipse.jdt.core.compiler.problem.unusedImport=warning

-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning

-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning

-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore

-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled

-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled

-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled

-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning

-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning

-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning

-org.eclipse.jdt.core.compiler.source=1.5

-org.eclipse.jdt.core.compiler.taskCaseSensitive=enabled

-org.eclipse.jdt.core.compiler.taskPriorities=NORMAL,HIGH,NORMAL

-org.eclipse.jdt.core.compiler.taskTags=TODO,FIXME,XXX

-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false

-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16

-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0

-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16

-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16

-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16

-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16

-org.eclipse.jdt.core.formatter.alignment_for_assignment=0

-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16

-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16

-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=48

-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0

-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16

-org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0

-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16

-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16

-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16

-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=80

-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16

-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16

-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16

-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16

-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16

-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1

-org.eclipse.jdt.core.formatter.blank_lines_after_package=1

-org.eclipse.jdt.core.formatter.blank_lines_before_field=1

-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0

-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1

-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1

-org.eclipse.jdt.core.formatter.blank_lines_before_method=1

-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1

-org.eclipse.jdt.core.formatter.blank_lines_before_package=0

-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1

-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1

-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line

-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line

-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line

-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line

-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line

-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line

-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line

-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line

-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line

-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line

-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line

-org.eclipse.jdt.core.formatter.comment.clear_blank_lines=false

-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false

-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true

-org.eclipse.jdt.core.formatter.comment.format_block_comments=false

-org.eclipse.jdt.core.formatter.comment.format_comments=true

-org.eclipse.jdt.core.formatter.comment.format_header=false

-org.eclipse.jdt.core.formatter.comment.format_html=true

-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true

-org.eclipse.jdt.core.formatter.comment.format_line_comments=false

-org.eclipse.jdt.core.formatter.comment.format_source_code=true

-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true

-org.eclipse.jdt.core.formatter.comment.indent_root_tags=true

-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert

-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert

-org.eclipse.jdt.core.formatter.comment.line_length=120

-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true

-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true

-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false

-org.eclipse.jdt.core.formatter.compact_else_if=true

-org.eclipse.jdt.core.formatter.continuation_indentation=2

-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2

-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off

-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on

-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false

-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true

-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true

-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true

-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true

-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true

-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true

-org.eclipse.jdt.core.formatter.indent_empty_lines=false

-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true

-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true

-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true

-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false

-org.eclipse.jdt.core.formatter.indentation.size=4

-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert

-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert

-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert

-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert

-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=insert

-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert

-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert

-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert

-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert

-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert

-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert

-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert

-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert

-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert

-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert

-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert

-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert

-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert

-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert

-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert

-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert

-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert

-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert

-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert

-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert

-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert

-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert

-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert

-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert

-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert

-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert

-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert

-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert

-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert

-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert

-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert

-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert

-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert

-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert

-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert

-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert

-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert

-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert

-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert

-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert

-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert

-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert

-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert

-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert

-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert

-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert

-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert

-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert

-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert

-org.eclipse.jdt.core.formatter.join_lines_in_comments=true

-org.eclipse.jdt.core.formatter.join_wrapped_lines=true

-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false

-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false

-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false

-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false

-org.eclipse.jdt.core.formatter.lineSplit=120

-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=true

-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=true

-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0

-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1

-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true

-org.eclipse.jdt.core.formatter.tabulation.char=tab

-org.eclipse.jdt.core.formatter.tabulation.size=4

-org.eclipse.jdt.core.formatter.use_on_off_tags=false

-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false

-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true

-org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true

+#Wed Jun 15 20:34:49 CEST 2011
+eclipse.preferences.version=1
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.5
+org.eclipse.jdt.core.compiler.taskCaseSensitive=enabled
+org.eclipse.jdt.core.compiler.taskPriorities=NORMAL,HIGH,NORMAL
+org.eclipse.jdt.core.compiler.taskTags=TODO,FIXME,XXX
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=48
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=80
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=1
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
+org.eclipse.jdt.core.formatter.comment.line_length=120
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=true
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=true
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=false
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
diff --git a/org.eclipse.mylyn.sandbox.search.ui.windows/Windows7Search/.cvsignore b/org.eclipse.mylyn.sandbox.search.ui.windows/Windows7Search/.cvsignore
index 69badd3..d18d141 100644
--- a/org.eclipse.mylyn.sandbox.search.ui.windows/Windows7Search/.cvsignore
+++ b/org.eclipse.mylyn.sandbox.search.ui.windows/Windows7Search/.cvsignore
@@ -1,7 +1,7 @@
-Debug

-Release

-Windows7Search.vcxproj.user

-Windows7Search.suo

-Windows7Search.sdf

-Windows7Search.opensdf

-.gitignore

+Debug
+Release
+Windows7Search.vcxproj.user
+Windows7Search.suo
+Windows7Search.sdf
+Windows7Search.opensdf
+.gitignore
diff --git a/org.eclipse.mylyn.sandbox.search.ui.windows/Windows7Search/Windows7Search.vcxproj b/org.eclipse.mylyn.sandbox.search.ui.windows/Windows7Search/Windows7Search.vcxproj
index 3e65c8b..907e612 100644
--- a/org.eclipse.mylyn.sandbox.search.ui.windows/Windows7Search/Windows7Search.vcxproj
+++ b/org.eclipse.mylyn.sandbox.search.ui.windows/Windows7Search/Windows7Search.vcxproj
@@ -1,175 +1,175 @@
-<?xml version="1.0" encoding="utf-8"?>

-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

-  <ItemGroup Label="ProjectConfigurations">

-    <ProjectConfiguration Include="Debug|Win32">

-      <Configuration>Debug</Configuration>

-      <Platform>Win32</Platform>

-    </ProjectConfiguration>

-    <ProjectConfiguration Include="Debug|x64">

-      <Configuration>Debug</Configuration>

-      <Platform>x64</Platform>

-    </ProjectConfiguration>

-    <ProjectConfiguration Include="Release|Win32">

-      <Configuration>Release</Configuration>

-      <Platform>Win32</Platform>

-    </ProjectConfiguration>

-    <ProjectConfiguration Include="Release|x64">

-      <Configuration>Release</Configuration>

-      <Platform>x64</Platform>

-    </ProjectConfiguration>

-  </ItemGroup>

-  <PropertyGroup Label="Globals">

-    <ProjectGuid>{261731A1-3785-4E06-86EB-80215A4676FE}</ProjectGuid>

-    <Keyword>Win32Proj</Keyword>

-    <RootNamespace>Windows7Search</RootNamespace>

-  </PropertyGroup>

-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />

-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">

-    <ConfigurationType>DynamicLibrary</ConfigurationType>

-    <UseDebugLibraries>true</UseDebugLibraries>

-    <CharacterSet>Unicode</CharacterSet>

-    <UseOfMfc>Dynamic</UseOfMfc>

-  </PropertyGroup>

-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">

-    <ConfigurationType>DynamicLibrary</ConfigurationType>

-    <UseDebugLibraries>true</UseDebugLibraries>

-    <CharacterSet>Unicode</CharacterSet>

-    <UseOfMfc>Dynamic</UseOfMfc>

-  </PropertyGroup>

-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">

-    <ConfigurationType>DynamicLibrary</ConfigurationType>

-    <UseDebugLibraries>false</UseDebugLibraries>

-    <WholeProgramOptimization>true</WholeProgramOptimization>

-    <CharacterSet>Unicode</CharacterSet>

-    <UseOfMfc>Dynamic</UseOfMfc>

-  </PropertyGroup>

-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">

-    <ConfigurationType>DynamicLibrary</ConfigurationType>

-    <UseDebugLibraries>false</UseDebugLibraries>

-    <WholeProgramOptimization>true</WholeProgramOptimization>

-    <CharacterSet>Unicode</CharacterSet>

-    <UseOfMfc>Dynamic</UseOfMfc>

-  </PropertyGroup>

-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />

-  <ImportGroup Label="ExtensionSettings">

-  </ImportGroup>

-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">

-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

-  </ImportGroup>

-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">

-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

-  </ImportGroup>

-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">

-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

-  </ImportGroup>

-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">

-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

-  </ImportGroup>

-  <PropertyGroup Label="UserMacros" />

-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">

-    <LinkIncremental>true</LinkIncremental>

-    <TargetName>$(ProjectName)32</TargetName>

-  </PropertyGroup>

-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">

-    <LinkIncremental>true</LinkIncremental>

-    <TargetName>$(ProjectName)64</TargetName>

-  </PropertyGroup>

-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">

-    <LinkIncremental>false</LinkIncremental>

-    <TargetName>$(ProjectName)32</TargetName>

-  </PropertyGroup>

-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">

-    <LinkIncremental>false</LinkIncremental>

-    <TargetName>$(ProjectName)64</TargetName>

-  </PropertyGroup>

-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">

-    <ClCompile>

-      <PrecompiledHeader>Use</PrecompiledHeader>

-      <WarningLevel>Level3</WarningLevel>

-      <Optimization>Disabled</Optimization>

-      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;WINDOWS7SEARCH_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>

-      <AdditionalIncludeDirectories>C:\Program Files\Java\jdk1.6.0_21\include;C:\Program Files (x86)\Java\jdk1.6.0_25\include;C:\Program Files\Java\jdk1.6.0_21\include\win32;C:\Program Files (x86)\Java\jdk1.6.0_25\include\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>

-    </ClCompile>

-    <Link>

-      <SubSystem>Windows</SubSystem>

-      <GenerateDebugInformation>true</GenerateDebugInformation>

-    </Link>

-  </ItemDefinitionGroup>

-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">

-    <ClCompile>

-      <PrecompiledHeader>Use</PrecompiledHeader>

-      <WarningLevel>Level3</WarningLevel>

-      <Optimization>Disabled</Optimization>

-      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;WINDOWS7SEARCH_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>

-      <AdditionalIncludeDirectories>C:\Program Files\Java\jdk1.6.0_21\include;C:\Program Files (x86)\Java\jdk1.6.0_25\include;C:\Program Files\Java\jdk1.6.0_21\include\win32;C:\Program Files (x86)\Java\jdk1.6.0_25\include\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>

-    </ClCompile>

-    <Link>

-      <SubSystem>Windows</SubSystem>

-      <GenerateDebugInformation>true</GenerateDebugInformation>

-    </Link>

-  </ItemDefinitionGroup>

-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">

-    <ClCompile>

-      <WarningLevel>Level3</WarningLevel>

-      <PrecompiledHeader>Use</PrecompiledHeader>

-      <Optimization>MaxSpeed</Optimization>

-      <FunctionLevelLinking>true</FunctionLevelLinking>

-      <IntrinsicFunctions>true</IntrinsicFunctions>

-      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;WINDOWS7SEARCH_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>

-      <AdditionalIncludeDirectories>C:\Program Files\Java\jdk1.6.0_21\include;C:\Program Files (x86)\Java\jdk1.6.0_25\include;C:\Program Files\Java\jdk1.6.0_21\include\win32;C:\Program Files (x86)\Java\jdk1.6.0_25\include\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

-    </ClCompile>

-    <Link>

-      <SubSystem>Windows</SubSystem>

-      <GenerateDebugInformation>true</GenerateDebugInformation>

-      <EnableCOMDATFolding>true</EnableCOMDATFolding>

-      <OptimizeReferences>true</OptimizeReferences>

-    </Link>

-  </ItemDefinitionGroup>

-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">

-    <ClCompile>

-      <WarningLevel>Level3</WarningLevel>

-      <PrecompiledHeader>Use</PrecompiledHeader>

-      <Optimization>MaxSpeed</Optimization>

-      <FunctionLevelLinking>true</FunctionLevelLinking>

-      <IntrinsicFunctions>true</IntrinsicFunctions>

-      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;WINDOWS7SEARCH_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>

-      <AdditionalIncludeDirectories>C:\Program Files\Java\jdk1.6.0_21\include;C:\Program Files (x86)\Java\jdk1.6.0_25\include;C:\Program Files\Java\jdk1.6.0_21\include\win32;C:\Program Files (x86)\Java\jdk1.6.0_25\include\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

-    </ClCompile>

-    <Link>

-      <SubSystem>Windows</SubSystem>

-      <GenerateDebugInformation>true</GenerateDebugInformation>

-      <EnableCOMDATFolding>true</EnableCOMDATFolding>

-      <OptimizeReferences>true</OptimizeReferences>

-    </Link>

-  </ItemDefinitionGroup>

-  <ItemGroup>

-    <None Include="Debug\msado15.tlh" />

-    <None Include="Debug\msado15.tli" />

-    <None Include="ReadMe.txt" />

-  </ItemGroup>

-  <ItemGroup>

-    <ClInclude Include="Resource.h" />

-    <ClInclude Include="stdafx.h" />

-    <ClInclude Include="targetver.h" />

-    <ClInclude Include="Windows7Search.h" />

-    <ClInclude Include="Windows7SearchProvider.h" />

-  </ItemGroup>

-  <ItemGroup>

-    <ClCompile Include="stdafx.cpp">

-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>

-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>

-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>

-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>

-    </ClCompile>

-    <ClCompile Include="Windows7Search.cpp" />

-    <ClCompile Include="Windows7SearchProvider.cpp" />

-  </ItemGroup>

-  <ItemGroup>

-    <ResourceCompile Include="Windows7Search.rc" />

-  </ItemGroup>

-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />

-  <ImportGroup Label="ExtensionTargets">

-  </ImportGroup>

+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{261731A1-3785-4E06-86EB-80215A4676FE}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>Windows7Search</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+    <UseOfMfc>Dynamic</UseOfMfc>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+    <UseOfMfc>Dynamic</UseOfMfc>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+    <UseOfMfc>Dynamic</UseOfMfc>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+    <UseOfMfc>Dynamic</UseOfMfc>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <LinkIncremental>true</LinkIncremental>
+    <TargetName>$(ProjectName)32</TargetName>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <LinkIncremental>true</LinkIncremental>
+    <TargetName>$(ProjectName)64</TargetName>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+    <TargetName>$(ProjectName)32</TargetName>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <LinkIncremental>false</LinkIncremental>
+    <TargetName>$(ProjectName)64</TargetName>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>Use</PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;WINDOWS7SEARCH_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>C:\Program Files\Java\jdk1.6.0_21\include;C:\Program Files (x86)\Java\jdk1.6.0_25\include;C:\Program Files\Java\jdk1.6.0_21\include\win32;C:\Program Files (x86)\Java\jdk1.6.0_25\include\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <ClCompile>
+      <PrecompiledHeader>Use</PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;WINDOWS7SEARCH_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>C:\Program Files\Java\jdk1.6.0_21\include;C:\Program Files (x86)\Java\jdk1.6.0_25\include;C:\Program Files\Java\jdk1.6.0_21\include\win32;C:\Program Files (x86)\Java\jdk1.6.0_25\include\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>Use</PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;WINDOWS7SEARCH_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>C:\Program Files\Java\jdk1.6.0_21\include;C:\Program Files (x86)\Java\jdk1.6.0_25\include;C:\Program Files\Java\jdk1.6.0_21\include\win32;C:\Program Files (x86)\Java\jdk1.6.0_25\include\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>Use</PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;WINDOWS7SEARCH_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>C:\Program Files\Java\jdk1.6.0_21\include;C:\Program Files (x86)\Java\jdk1.6.0_25\include;C:\Program Files\Java\jdk1.6.0_21\include\win32;C:\Program Files (x86)\Java\jdk1.6.0_25\include\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <None Include="Debug\msado15.tlh" />
+    <None Include="Debug\msado15.tli" />
+    <None Include="ReadMe.txt" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="Resource.h" />
+    <ClInclude Include="stdafx.h" />
+    <ClInclude Include="targetver.h" />
+    <ClInclude Include="Windows7Search.h" />
+    <ClInclude Include="Windows7SearchProvider.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="stdafx.cpp">
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="Windows7Search.cpp" />
+    <ClCompile Include="Windows7SearchProvider.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="Windows7Search.rc" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
diff --git a/org.eclipse.mylyn.sandbox.search.ui.windows/Windows7Search/Windows7Search.vcxproj.filters b/org.eclipse.mylyn.sandbox.search.ui.windows/Windows7Search/Windows7Search.vcxproj.filters
index db422dd..5331af5 100644
--- a/org.eclipse.mylyn.sandbox.search.ui.windows/Windows7Search/Windows7Search.vcxproj.filters
+++ b/org.eclipse.mylyn.sandbox.search.ui.windows/Windows7Search/Windows7Search.vcxproj.filters
@@ -1,59 +1,59 @@
-<?xml version="1.0" encoding="utf-8"?>

-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

-  <ItemGroup>

-    <Filter Include="Source Files">

-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>

-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>

-    </Filter>

-    <Filter Include="Header Files">

-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>

-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>

-    </Filter>

-    <Filter Include="Resource Files">

-      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>

-      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>

-    </Filter>

-  </ItemGroup>

-  <ItemGroup>

-    <None Include="ReadMe.txt" />

-    <None Include="Debug\msado15.tlh">

-      <Filter>Header Files</Filter>

-    </None>

-    <None Include="Debug\msado15.tli">

-      <Filter>Header Files</Filter>

-    </None>

-  </ItemGroup>

-  <ItemGroup>

-    <ClInclude Include="stdafx.h">

-      <Filter>Header Files</Filter>

-    </ClInclude>

-    <ClInclude Include="targetver.h">

-      <Filter>Header Files</Filter>

-    </ClInclude>

-    <ClInclude Include="Resource.h">

-      <Filter>Header Files</Filter>

-    </ClInclude>

-    <ClInclude Include="Windows7Search.h">

-      <Filter>Header Files</Filter>

-    </ClInclude>

-    <ClInclude Include="Windows7SearchProvider.h">

-      <Filter>Header Files</Filter>

-    </ClInclude>

-  </ItemGroup>

-  <ItemGroup>

-    <ClCompile Include="stdafx.cpp">

-      <Filter>Source Files</Filter>

-    </ClCompile>

-    <ClCompile Include="Windows7Search.cpp">

-      <Filter>Source Files</Filter>

-    </ClCompile>

-    <ClCompile Include="Windows7SearchProvider.cpp">

-      <Filter>Source Files</Filter>

-    </ClCompile>

-  </ItemGroup>

-  <ItemGroup>

-    <ResourceCompile Include="Windows7Search.rc">

-      <Filter>Resource Files</Filter>

-    </ResourceCompile>

-  </ItemGroup>

+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+    <Filter Include="Resource Files">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="ReadMe.txt" />
+    <None Include="Debug\msado15.tlh">
+      <Filter>Header Files</Filter>
+    </None>
+    <None Include="Debug\msado15.tli">
+      <Filter>Header Files</Filter>
+    </None>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="stdafx.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="targetver.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="Resource.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="Windows7Search.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="Windows7SearchProvider.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="stdafx.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="Windows7Search.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="Windows7SearchProvider.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="Windows7Search.rc">
+      <Filter>Resource Files</Filter>
+    </ResourceCompile>
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/org.eclipse.mylyn.sandbox.search.ui.windows/Windows7Search/Windows7SearchProvider.cpp b/org.eclipse.mylyn.sandbox.search.ui.windows/Windows7Search/Windows7SearchProvider.cpp
index dc705a5..29e6a2f 100644
--- a/org.eclipse.mylyn.sandbox.search.ui.windows/Windows7Search/Windows7SearchProvider.cpp
+++ b/org.eclipse.mylyn.sandbox.search.ui.windows/Windows7Search/Windows7SearchProvider.cpp
@@ -11,9 +11,9 @@
 #include "stdafx.h"
 #include "Windows7Search.h"
 #include "Windows7SearchProvider.h"
-

-#include <sstream>

-#include <list>

+
+#include <sstream>
+#include <list>
 
 
 #import "C:/Program Files/Common Files/System/ado/msado15.dll" rename("EOF", "ADOEOF")
@@ -43,22 +43,22 @@
 	return result == JNI_TRUE;
 }
 
-std::wstring ReplaceCharWithString(std::wstring source, const wchar_t replaceChar, std::wstring replaceString) 

-{ 

-	size_t posn = source.find(&replaceChar);

-	while (posn != std::wstring::npos)

-	{

-		source.replace(posn, 1, replaceString);

-		posn = source.find(&replaceChar, posn + replaceString.length());

-	}

-    return source; 

-}

+std::wstring ReplaceCharWithString(std::wstring source, const wchar_t replaceChar, std::wstring replaceString) 
+{ 
+	size_t posn = source.find(&replaceChar);
+	while (posn != std::wstring::npos)
+	{
+		source.replace(posn, 1, replaceString);
+		posn = source.find(&replaceChar, posn + replaceString.length());
+	}
+    return source; 
+}
 
-std::wstring IntToString(int value) {

-	std::wstringstream sstream;

-	sstream << value;

-	return sstream.str();

-}

+std::wstring IntToString(int value) {
+	std::wstringstream sstream;
+	sstream << value;
+	return sstream.str();
+}
 
 
 void PerformSearch(JNIEnv *env, jobject obj, jobject callback, std::wstring searchText, std::list<std::wstring>& patterns,int maximumResults, jobject monitor)
@@ -85,11 +85,11 @@
 			return;
 
 		
-		searchText = ReplaceCharWithString(searchText, '\'', L"''");

-

-		std::wstring filenameMatcher = searchText;

-		filenameMatcher = ReplaceCharWithString(filenameMatcher, '%', L"\\%");

-		filenameMatcher = ReplaceCharWithString(filenameMatcher, '*', L"%");

+		searchText = ReplaceCharWithString(searchText, '\'', L"''");
+
+		std::wstring filenameMatcher = searchText;
+		filenameMatcher = ReplaceCharWithString(filenameMatcher, '%', L"\\%");
+		filenameMatcher = ReplaceCharWithString(filenameMatcher, '*', L"%");
 		
 		// see FREETEXT http://msdn.microsoft.com/en-us/library/bb231268(v=vs.85).aspx
 		// see CONTAINS http://msdn.microsoft.com/en-us/library/bb231270(v=vs.85).aspx
@@ -108,37 +108,37 @@
 		query += filenameMatcher;
 		query += L"%'))";
 
-		if (patterns.size() > 0) {

-			bool hasFilenameSearch = true;

+		if (patterns.size() > 0) {
+			bool hasFilenameSearch = true;
 			std::wstring anyFile(L"*");
-

-			for(std::list<std::wstring>::iterator iterator = patterns.begin(); iterator != patterns.end(); iterator++) {

-				std::wstring pattern = *iterator;

-				if (pattern == anyFile) {

-					hasFilenameSearch = false;

-					break;

-				}

-			}

-			if (hasFilenameSearch) {

-				query += L" AND (";

-				for(std::list<std::wstring>::iterator iterator = patterns.begin(); iterator != patterns.end(); iterator++) {

-					std::wstring pattern = *iterator;

-					if (pattern.size() == 0) {

-						continue;

-					}

-					pattern = ReplaceCharWithString(pattern, '*', L"%");

-					if (iterator != patterns.begin()) {

-						query += L" OR ";

-					}

-					query += L"(System.ItemName LIKE '";

-					if (pattern[0] != '%') {

-						query += L"%";

-					}

-					query += pattern;

-					query += L"')";

-				}

-				query += L")";

-			}

+
+			for(std::list<std::wstring>::iterator iterator = patterns.begin(); iterator != patterns.end(); iterator++) {
+				std::wstring pattern = *iterator;
+				if (pattern == anyFile) {
+					hasFilenameSearch = false;
+					break;
+				}
+			}
+			if (hasFilenameSearch) {
+				query += L" AND (";
+				for(std::list<std::wstring>::iterator iterator = patterns.begin(); iterator != patterns.end(); iterator++) {
+					std::wstring pattern = *iterator;
+					if (pattern.size() == 0) {
+						continue;
+					}
+					pattern = ReplaceCharWithString(pattern, '*', L"%");
+					if (iterator != patterns.begin()) {
+						query += L" OR ";
+					}
+					query += L"(System.ItemName LIKE '";
+					if (pattern[0] != '%') {
+						query += L"%";
+					}
+					query += pattern;
+					query += L"')";
+				}
+				query += L")";
+			}
 		}
 		
 		//std::cout << "Query:\n";
@@ -175,14 +175,14 @@
 				break;
 			}
 		}
-	} catch (_com_error &e)	{

-		_tprintf(_T("\tCOM Error code = %08lx\n"), e.Error());

-	}

-

-

-	if (recordset != NULL && recordset->State == ADODB::adStateOpen)

-		recordset->Close();

-	if (connection != NULL && connection->State == ADODB::adStateOpen)

+	} catch (_com_error &e)	{
+		_tprintf(_T("\tCOM Error code = %08lx\n"), e.Error());
+	}
+
+
+	if (recordset != NULL && recordset->State == ADODB::adStateOpen)
+		recordset->Close();
+	if (connection != NULL && connection->State == ADODB::adStateOpen)
 		connection->Close();   
 
 	::CoUninitialize();
@@ -205,22 +205,22 @@
 	jstring jSearchText = (jstring)env->CallObjectMethod(criteria, mid);
 	std::wstring searchText = JStringToWString(env, jSearchText);
 
-	jmethodID getPatternId = env->GetMethodID(jc, "getFilenamePatterns","()[Ljava/lang/String;");

-	jobjectArray patternArray = (jobjectArray)env->CallObjectMethod(criteria, getPatternId);

-	unsigned int patternCount = env->GetArrayLength(patternArray);

-	

-

-	// FIXME FIXME FIXME

-	jmethodID getMaximumResultsId = env->GetMethodID(jc,"getMaximumResults","()I");

-	jint maximumResults = (jint) env->CallIntMethod(criteria,getMaximumResultsId);

-	

-

-	std::list<std::wstring> patterns;

-	for (unsigned int i=0; i<patternCount; i++)	{

-		jstring jPattern = (jstring)env->GetObjectArrayElement(patternArray, i);

-		std::wstring pattern = JStringToWString(env, jPattern);

-		patterns.push_back(pattern);

-	}

+	jmethodID getPatternId = env->GetMethodID(jc, "getFilenamePatterns","()[Ljava/lang/String;");
+	jobjectArray patternArray = (jobjectArray)env->CallObjectMethod(criteria, getPatternId);
+	unsigned int patternCount = env->GetArrayLength(patternArray);
+	
+
+	// FIXME FIXME FIXME
+	jmethodID getMaximumResultsId = env->GetMethodID(jc,"getMaximumResults","()I");
+	jint maximumResults = (jint) env->CallIntMethod(criteria,getMaximumResultsId);
+	
+
+	std::list<std::wstring> patterns;
+	for (unsigned int i=0; i<patternCount; i++)	{
+		jstring jPattern = (jstring)env->GetObjectArrayElement(patternArray, i);
+		std::wstring pattern = JStringToWString(env, jPattern);
+		patterns.push_back(pattern);
+	}
 
 	PerformSearch(env, obj, callback, searchText, patterns,(int) maximumResults, monitor);
 }
diff --git a/org.eclipse.mylyn.sandbox.search.ui.windows/about.html b/org.eclipse.mylyn.sandbox.search.ui.windows/about.html
index 6346eae..c426db2 100644
--- a/org.eclipse.mylyn.sandbox.search.ui.windows/about.html
+++ b/org.eclipse.mylyn.sandbox.search.ui.windows/about.html
@@ -1,27 +1,27 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">

-<html>

-<head>

-<title>About</title>

-<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">

-</head>

-<body lang="EN-US">

-<h2>About This Content</h2>

- 

-<p>June 14, 2011</p>	

-<h3>License</h3>

-

-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 

-indicated below, the Content is provided to you under the terms and conditions of the

-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 

-at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.

-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>

-

-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 

-being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may

-apply to your use of any object code in the Content.  Check the Redistributor's license that was 

-provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise

-indicated below, the terms and conditions of the EPL still apply to any source code in the Content

-and such source code may be obtained at <a href="/">http://www.eclipse.org</a>.</p>

-

-</body>

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html>
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>June 14, 2011</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="/">http://www.eclipse.org</a>.</p>
+
+</body>
 </html>
\ No newline at end of file
diff --git a/org.eclipse.mylyn.sandbox.search.ui.windows/build.properties b/org.eclipse.mylyn.sandbox.search.ui.windows/build.properties
index 5670226..33b3c35 100644
--- a/org.eclipse.mylyn.sandbox.search.ui.windows/build.properties
+++ b/org.eclipse.mylyn.sandbox.search.ui.windows/build.properties
@@ -1,10 +1,10 @@
-source.. = src/

-output.. = bin/

-bin.includes = META-INF/,\

-               .,\

-               plugin.xml,\

-               OSGI-INF/,\

-               Windows7Search32.dll,\

-               Windows7Search64.dll

-               

-src.includes = about.html

+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml,\
+               OSGI-INF/,\
+               Windows7Search32.dll,\
+               Windows7Search64.dll
+               
+src.includes = about.html
diff --git a/org.eclipse.mylyn.sandbox.search.ui.windows/plugin.xml b/org.eclipse.mylyn.sandbox.search.ui.windows/plugin.xml
index aa43f29..e24c185 100644
--- a/org.eclipse.mylyn.sandbox.search.ui.windows/plugin.xml
+++ b/org.eclipse.mylyn.sandbox.search.ui.windows/plugin.xml
@@ -1,11 +1,11 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<?eclipse version="3.4"?>

-<plugin>

-   <extension

-         point="org.eclipse.mylyn.sandbox.search.ui.searchProvider">

-      <searchProvider

-            class="org.eclipse.mylyn.internal.sandbox.search.ui.windows.WindowsSearchProvider">

-      </searchProvider>

-   </extension>

-

-</plugin>

+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.mylyn.sandbox.search.ui.searchProvider">
+      <searchProvider
+            class="org.eclipse.mylyn.internal.sandbox.search.ui.windows.WindowsSearchProvider">
+      </searchProvider>
+   </extension>
+
+</plugin>
diff --git a/org.eclipse.mylyn.sandbox.search.ui/.settings/org.eclipse.core.runtime.prefs b/org.eclipse.mylyn.sandbox.search.ui/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/org.eclipse.mylyn.sandbox.search.ui/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/org.eclipse.mylyn.sandbox.search.ui/src/org/eclipse/mylyn/internal/sandbox/search/ui/provider/BasicSearchProvider.java b/org.eclipse.mylyn.sandbox.search.ui/src/org/eclipse/mylyn/internal/sandbox/search/ui/provider/BasicSearchProvider.java
index 7604d7b..e3b7421 100644
--- a/org.eclipse.mylyn.sandbox.search.ui/src/org/eclipse/mylyn/internal/sandbox/search/ui/provider/BasicSearchProvider.java
+++ b/org.eclipse.mylyn.sandbox.search.ui/src/org/eclipse/mylyn/internal/sandbox/search/ui/provider/BasicSearchProvider.java
@@ -1,281 +1,281 @@
-/*******************************************************************************

- * Copyright (c) 2011 Tasktop Technologies.

- * All rights reserved. This program and the accompanying materials

- * are made available under the terms of the Eclipse Public License v1.0

- * which accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- *

- * Contributors:

- *     Tasktop Technologies - initial API and implementation

- *******************************************************************************/

-

-package org.eclipse.mylyn.internal.sandbox.search.ui.provider;

-

-import java.io.BufferedInputStream;

-import java.io.File;

-import java.io.IOException;

-import java.io.InputStream;

-import java.io.InputStreamReader;

-import java.util.ArrayList;

-import java.util.List;

-import java.util.Stack;

-import java.util.regex.Pattern;

-

-import org.eclipse.core.filesystem.EFS;

-import org.eclipse.core.filesystem.IFileInfo;

-import org.eclipse.core.filesystem.IFileStore;

-import org.eclipse.core.runtime.CoreException;

-import org.eclipse.core.runtime.IProgressMonitor;

-import org.eclipse.core.runtime.IStatus;

-import org.eclipse.core.runtime.OperationCanceledException;

-import org.eclipse.core.runtime.SubMonitor;

-import org.eclipse.mylyn.sandbox.search.ui.SearchCallback;

-import org.eclipse.mylyn.sandbox.search.ui.SearchCriteria;

-import org.eclipse.mylyn.sandbox.search.ui.SearchProvider;

-import org.eclipse.mylyn.sandbox.search.ui.SearchResult;

-import org.eclipse.osgi.util.NLS;

-

-/**

- * A search provider that operates over java.io

- * 

- * @author David Green

- */

-public class BasicSearchProvider extends SearchProvider {

-

-	private abstract class FileMatcher {

-		public abstract boolean matches(IFileStore file, IProgressMonitor monitor);

-	}

-

-	private class CompositeFileMatcher extends FileMatcher {

-

-		private final List<FileMatcher> delegates;

-

-		private final boolean allMatch;

-

-		/**

-		 * @param allMatch

-		 *            indicate if one delegate must match (false) or if all delegates must match (true)

-		 */

-		public CompositeFileMatcher(boolean allMatch) {

-			this.allMatch = allMatch;

-			delegates = new ArrayList<FileMatcher>();

-		}

-

-		public CompositeFileMatcher(List<FileMatcher> delegates, boolean allMatch) {

-			this.delegates = delegates;

-			this.allMatch = allMatch;

-		}

-

-		public void add(FileMatcher matcher) {

-			delegates.add(matcher);

-		}

-

-		@Override

-		public boolean matches(IFileStore file, IProgressMonitor monitor) {

-			for (FileMatcher matcher : delegates) {

-				if (monitor.isCanceled()) {

-					return false;

-				}

-				if (!matcher.matches(file, monitor)) {

-					if (allMatch) {

-						return false;

-					}

-				} else if (!allMatch) {

-					return true;

-				}

-			}

-			return allMatch ? true : false;

-		}

-	}

-

-	private class FileNameMatcher extends FileMatcher {

-

-		private final Pattern pattern;

-

-		public FileNameMatcher(String matchPattern) {

-			String regex = ".*?"; //$NON-NLS-1$

-			regex += patternToRegex(matchPattern);

-			regex += ".*"; //$NON-NLS-1$

-			pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);

-		}

-

-		@Override

-		public boolean matches(IFileStore file, IProgressMonitor monitor) {

-			String name = file.getName();

-			return pattern.matcher(name).matches();

-		}

-

-	}

-

-	private class FileContentMatcher extends FileMatcher {

-

-		private final Pattern pattern;

-

-		private final int maxMatchingCharacters = 1024 * 16;

-

-		public FileContentMatcher(SearchCriteria searchSpecification) {

-			pattern = Pattern.compile(patternToRegex(searchSpecification.getText().trim()), Pattern.CASE_INSENSITIVE);

-		}

-

-		@Override

-		public boolean matches(IFileStore file, IProgressMonitor monitor) {

-			monitor.subTask(file.toString());

-			try {

-				InputStream inputStream = file.openInputStream(EFS.NONE, monitor);

-				try {

-					InputStreamReader reader = new InputStreamReader(new BufferedInputStream(inputStream));

-					try {

-						ReaderCharSequence charSequence = new ReaderCharSequence(maxMatchingCharacters, reader, monitor);

-						return pattern.matcher(charSequence).find();

-					} finally {

-						reader.close();

-					}

-				} finally {

-					inputStream.close();

-				}

-			} catch (IOException e) {

-				// ignore

-			} catch (CoreException e) {

-				// ignore

-			}

-			return false;

-		}

-

-	}

-

-	@Override

-	public void performSearch(SearchCriteria searchSpecification, SearchCallback callback, IProgressMonitor m)

-			throws CoreException {

-		SubMonitor monitor = SubMonitor.convert(m);

-		monitor.beginTask(NLS.bind(Messages.BasicSearchProvider_0, searchSpecification.getText()),

-				searchSpecification.getMaximumResults() > 0

-						? searchSpecification.getMaximumResults()

-						: IProgressMonitor.UNKNOWN);

-		try {

-			FileMatcher matcher = computeMatcher(searchSpecification);

-

-			File[] roots = File.listRoots();

-			if (roots != null) {

-				int matchCount = 0;

-

-				Stack<IFileStore> state = new Stack<IFileStore>();

-

-				// reverse-order iteration so that the first one is the last pushed on the stack

-				for (int x = roots.length - 1; x >= 0; --x) {

-					if (monitor.isCanceled()) {

-						break;

-					}

-					File root = roots[x];

-					IFileStore fileStore = EFS.getLocalFileSystem().fromLocalFile(root);

-

-					state.push(fileStore);

-				}

-				try {

-					while (!state.isEmpty() && !monitor.isCanceled()) {

-						IFileStore fileStore = state.pop();

-

-						IFileInfo fileInfo = fileStore.fetchInfo();

-						if (isDefaultIgnore(fileStore, fileInfo)) {

-							// ignore

-						} else if (fileInfo.isDirectory()) {

-							monitor.subTask(fileStore.toString());

-

-							IFileStore[] childStores = fileStore.childStores(EFS.NONE, monitor.newChild(0));

-							for (IFileStore child : childStores) {

-								state.push(child);

-							}

-						} else {

-

-							if (matcher.matches(fileStore, monitor.newChild(0))) {

-								monitor.worked(1);

-

-								callback.searchResult(new SearchResult(fileStore.toLocalFile(EFS.NONE,

-										monitor.newChild(0))));

-

-								if (++matchCount >= searchSpecification.getMaximumResults()) {

-									break;

-								}

-							}

-						}

-					}

-				} catch (OperationCanceledException oce) {

-					// ignore

-				} catch (CoreException e) {

-					if (e.getStatus().getSeverity() != IStatus.CANCEL) {

-						throw e;

-					}

-				}

-			}

-		} finally {

-			monitor.done();

-		}

-	}

-

-	private boolean isDefaultIgnore(IFileStore fileStore, IFileInfo fileInfo) {

-		if (fileInfo.getAttribute(EFS.ATTRIBUTE_SYMLINK) || fileInfo.getAttribute(EFS.ATTRIBUTE_HIDDEN)) {

-			// ignore, we don't follow symbolic links or hidden files

-			return true;

-		} else {

-			String name = fileStore.getName();

-			if (fileInfo.isDirectory()) {

-				if ((name.equals("Windows") || name.equals("$Recycle.Bin")) && fileStore.getParent() != null && fileStore.getParent().getParent() == null) { //$NON-NLS-1$ //$NON-NLS-2$

-					return true;

-				} else if (name.startsWith(".")) { //$NON-NLS-1$

-					return true;

-				}

-			} else {

-				if (name.endsWith(".dll") || name.endsWith(".exe") || name.endsWith(".sys") || name.endsWith(".zip") || name.endsWith(".jar") || name.endsWith(".bin")) { //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$

-					return true;

-				}

-			}

-		}

-		return false;

-	}

-

-	private FileMatcher computeMatcher(SearchCriteria searchSpecification) {

-		List<FileMatcher> filenameMatchers = new ArrayList<FileMatcher>();

-

-		for (String filenamePattern : searchSpecification.getFilenamePatterns()) {

-			if (filenamePattern.length() > 0) {

-				if (filenamePattern.equals("*") || filenamePattern.equals("*.*")) { //$NON-NLS-1$//$NON-NLS-2$

-					// every file matches

-					filenameMatchers.clear();

-					break;

-				} else {

-					filenameMatchers.add(new FileNameMatcher(filenamePattern));

-				}

-			}

-		}

-

-		CompositeFileMatcher fileMatcher = new CompositeFileMatcher(true);

-		if (!filenameMatchers.isEmpty()) {

-			fileMatcher.add(filenameMatchers.size() == 1 ? filenameMatchers.get(0) : new CompositeFileMatcher(

-					filenameMatchers, false));

-		}

-

-		if (searchSpecification.getText() != null && searchSpecification.getText().trim().length() > 0) {

-			fileMatcher.add(new FileContentMatcher(searchSpecification));

-		}

-

-		return fileMatcher;

-	}

-

-	private String patternToRegex(String matchPattern) {

-		String regex = ""; //$NON-NLS-1$

-		for (char c : matchPattern.toCharArray()) {

-			if (Character.isLetterOrDigit(c)) {

-				regex += c;

-			} else {

-				if (c == '*') {

-					regex += ".*"; //$NON-NLS-1$

-				} else if (c == '?') {

-					regex += "."; //$NON-NLS-1$

-				} else {

-					regex += "\\"; //$NON-NLS-1$

-					regex += c;

-				}

-			}

-		}

-		return regex;

-	}

-}

+/*******************************************************************************
+ * Copyright (c) 2011 Tasktop Technologies.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Tasktop Technologies - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylyn.internal.sandbox.search.ui.provider;
+
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Stack;
+import java.util.regex.Pattern;
+
+import org.eclipse.core.filesystem.EFS;
+import org.eclipse.core.filesystem.IFileInfo;
+import org.eclipse.core.filesystem.IFileStore;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.OperationCanceledException;
+import org.eclipse.core.runtime.SubMonitor;
+import org.eclipse.mylyn.sandbox.search.ui.SearchCallback;
+import org.eclipse.mylyn.sandbox.search.ui.SearchCriteria;
+import org.eclipse.mylyn.sandbox.search.ui.SearchProvider;
+import org.eclipse.mylyn.sandbox.search.ui.SearchResult;
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * A search provider that operates over java.io
+ * 
+ * @author David Green
+ */
+public class BasicSearchProvider extends SearchProvider {
+
+	private abstract class FileMatcher {
+		public abstract boolean matches(IFileStore file, IProgressMonitor monitor);
+	}
+
+	private class CompositeFileMatcher extends FileMatcher {
+
+		private final List<FileMatcher> delegates;
+
+		private final boolean allMatch;
+
+		/**
+		 * @param allMatch
+		 *            indicate if one delegate must match (false) or if all delegates must match (true)
+		 */
+		public CompositeFileMatcher(boolean allMatch) {
+			this.allMatch = allMatch;
+			delegates = new ArrayList<FileMatcher>();
+		}
+
+		public CompositeFileMatcher(List<FileMatcher> delegates, boolean allMatch) {
+			this.delegates = delegates;
+			this.allMatch = allMatch;
+		}
+
+		public void add(FileMatcher matcher) {
+			delegates.add(matcher);
+		}
+
+		@Override
+		public boolean matches(IFileStore file, IProgressMonitor monitor) {
+			for (FileMatcher matcher : delegates) {
+				if (monitor.isCanceled()) {
+					return false;
+				}
+				if (!matcher.matches(file, monitor)) {
+					if (allMatch) {
+						return false;
+					}
+				} else if (!allMatch) {
+					return true;
+				}
+			}
+			return allMatch ? true : false;
+		}
+	}
+
+	private class FileNameMatcher extends FileMatcher {
+
+		private final Pattern pattern;
+
+		public FileNameMatcher(String matchPattern) {
+			String regex = ".*?"; //$NON-NLS-1$
+			regex += patternToRegex(matchPattern);
+			regex += ".*"; //$NON-NLS-1$
+			pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
+		}
+
+		@Override
+		public boolean matches(IFileStore file, IProgressMonitor monitor) {
+			String name = file.getName();
+			return pattern.matcher(name).matches();
+		}
+
+	}
+
+	private class FileContentMatcher extends FileMatcher {
+
+		private final Pattern pattern;
+
+		private final int maxMatchingCharacters = 1024 * 16;
+
+		public FileContentMatcher(SearchCriteria searchSpecification) {
+			pattern = Pattern.compile(patternToRegex(searchSpecification.getText().trim()), Pattern.CASE_INSENSITIVE);
+		}
+
+		@Override
+		public boolean matches(IFileStore file, IProgressMonitor monitor) {
+			monitor.subTask(file.toString());
+			try {
+				InputStream inputStream = file.openInputStream(EFS.NONE, monitor);
+				try {
+					InputStreamReader reader = new InputStreamReader(new BufferedInputStream(inputStream));
+					try {
+						ReaderCharSequence charSequence = new ReaderCharSequence(maxMatchingCharacters, reader, monitor);
+						return pattern.matcher(charSequence).find();
+					} finally {
+						reader.close();
+					}
+				} finally {
+					inputStream.close();
+				}
+			} catch (IOException e) {
+				// ignore
+			} catch (CoreException e) {
+				// ignore
+			}
+			return false;
+		}
+
+	}
+
+	@Override
+	public void performSearch(SearchCriteria searchSpecification, SearchCallback callback, IProgressMonitor m)
+			throws CoreException {
+		SubMonitor monitor = SubMonitor.convert(m);
+		monitor.beginTask(NLS.bind(Messages.BasicSearchProvider_0, searchSpecification.getText()),
+				searchSpecification.getMaximumResults() > 0
+						? searchSpecification.getMaximumResults()
+						: IProgressMonitor.UNKNOWN);
+		try {
+			FileMatcher matcher = computeMatcher(searchSpecification);
+
+			File[] roots = File.listRoots();
+			if (roots != null) {
+				int matchCount = 0;
+
+				Stack<IFileStore> state = new Stack<IFileStore>();
+
+				// reverse-order iteration so that the first one is the last pushed on the stack
+				for (int x = roots.length - 1; x >= 0; --x) {
+					if (monitor.isCanceled()) {
+						break;
+					}
+					File root = roots[x];
+					IFileStore fileStore = EFS.getLocalFileSystem().fromLocalFile(root);
+
+					state.push(fileStore);
+				}
+				try {
+					while (!state.isEmpty() && !monitor.isCanceled()) {
+						IFileStore fileStore = state.pop();
+
+						IFileInfo fileInfo = fileStore.fetchInfo();
+						if (isDefaultIgnore(fileStore, fileInfo)) {
+							// ignore
+						} else if (fileInfo.isDirectory()) {
+							monitor.subTask(fileStore.toString());
+
+							IFileStore[] childStores = fileStore.childStores(EFS.NONE, monitor.newChild(0));
+							for (IFileStore child : childStores) {
+								state.push(child);
+							}
+						} else {
+
+							if (matcher.matches(fileStore, monitor.newChild(0))) {
+								monitor.worked(1);
+
+								callback.searchResult(new SearchResult(fileStore.toLocalFile(EFS.NONE,
+										monitor.newChild(0))));
+
+								if (++matchCount >= searchSpecification.getMaximumResults()) {
+									break;
+								}
+							}
+						}
+					}
+				} catch (OperationCanceledException oce) {
+					// ignore
+				} catch (CoreException e) {
+					if (e.getStatus().getSeverity() != IStatus.CANCEL) {
+						throw e;
+					}
+				}
+			}
+		} finally {
+			monitor.done();
+		}
+	}
+
+	private boolean isDefaultIgnore(IFileStore fileStore, IFileInfo fileInfo) {
+		if (fileInfo.getAttribute(EFS.ATTRIBUTE_SYMLINK) || fileInfo.getAttribute(EFS.ATTRIBUTE_HIDDEN)) {
+			// ignore, we don't follow symbolic links or hidden files
+			return true;
+		} else {
+			String name = fileStore.getName();
+			if (fileInfo.isDirectory()) {
+				if ((name.equals("Windows") || name.equals("$Recycle.Bin")) && fileStore.getParent() != null && fileStore.getParent().getParent() == null) { //$NON-NLS-1$ //$NON-NLS-2$
+					return true;
+				} else if (name.startsWith(".")) { //$NON-NLS-1$
+					return true;
+				}
+			} else {
+				if (name.endsWith(".dll") || name.endsWith(".exe") || name.endsWith(".sys") || name.endsWith(".zip") || name.endsWith(".jar") || name.endsWith(".bin")) { //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$
+					return true;
+				}
+			}
+		}
+		return false;
+	}
+
+	private FileMatcher computeMatcher(SearchCriteria searchSpecification) {
+		List<FileMatcher> filenameMatchers = new ArrayList<FileMatcher>();
+
+		for (String filenamePattern : searchSpecification.getFilenamePatterns()) {
+			if (filenamePattern.length() > 0) {
+				if (filenamePattern.equals("*") || filenamePattern.equals("*.*")) { //$NON-NLS-1$//$NON-NLS-2$
+					// every file matches
+					filenameMatchers.clear();
+					break;
+				} else {
+					filenameMatchers.add(new FileNameMatcher(filenamePattern));
+				}
+			}
+		}
+
+		CompositeFileMatcher fileMatcher = new CompositeFileMatcher(true);
+		if (!filenameMatchers.isEmpty()) {
+			fileMatcher.add(filenameMatchers.size() == 1 ? filenameMatchers.get(0) : new CompositeFileMatcher(
+					filenameMatchers, false));
+		}
+
+		if (searchSpecification.getText() != null && searchSpecification.getText().trim().length() > 0) {
+			fileMatcher.add(new FileContentMatcher(searchSpecification));
+		}
+
+		return fileMatcher;
+	}
+
+	private String patternToRegex(String matchPattern) {
+		String regex = ""; //$NON-NLS-1$
+		for (char c : matchPattern.toCharArray()) {
+			if (Character.isLetterOrDigit(c)) {
+				regex += c;
+			} else {
+				if (c == '*') {
+					regex += ".*"; //$NON-NLS-1$
+				} else if (c == '?') {
+					regex += "."; //$NON-NLS-1$
+				} else {
+					regex += "\\"; //$NON-NLS-1$
+					regex += c;
+				}
+			}
+		}
+		return regex;
+	}
+}
diff --git a/org.eclipse.mylyn.sandbox.search.ui/src/org/eclipse/mylyn/internal/sandbox/search/ui/provider/Messages.java b/org.eclipse.mylyn.sandbox.search.ui/src/org/eclipse/mylyn/internal/sandbox/search/ui/provider/Messages.java
index 63aefb8..7c3b638 100644
--- a/org.eclipse.mylyn.sandbox.search.ui/src/org/eclipse/mylyn/internal/sandbox/search/ui/provider/Messages.java
+++ b/org.eclipse.mylyn.sandbox.search.ui/src/org/eclipse/mylyn/internal/sandbox/search/ui/provider/Messages.java
@@ -1,27 +1,27 @@
-/*******************************************************************************

- * Copyright (c) 2011 Tasktop Technologies.

- * All rights reserved. This program and the accompanying materials

- * are made available under the terms of the Eclipse Public License v1.0

- * which accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- *

- * Contributors:

- *     Tasktop Technologies - initial API and implementation

- *******************************************************************************/

-

-package org.eclipse.mylyn.internal.sandbox.search.ui.provider;

-

-import org.eclipse.osgi.util.NLS;

-

-class Messages extends NLS {

-	private static final String BUNDLE_NAME = "org.eclipse.mylyn.internal.sandbox.search.ui.provider.messages"; //$NON-NLS-1$

-

-	public static String BasicSearchProvider_0;

-	static {

-		// initialize resource bundle

-		NLS.initializeMessages(BUNDLE_NAME, Messages.class);

-	}

-

-	private Messages() {

-	}

-}

+/*******************************************************************************
+ * Copyright (c) 2011 Tasktop Technologies.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Tasktop Technologies - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylyn.internal.sandbox.search.ui.provider;
+
+import org.eclipse.osgi.util.NLS;
+
+class Messages extends NLS {
+	private static final String BUNDLE_NAME = "org.eclipse.mylyn.internal.sandbox.search.ui.provider.messages"; //$NON-NLS-1$
+
+	public static String BasicSearchProvider_0;
+	static {
+		// initialize resource bundle
+		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+	}
+
+	private Messages() {
+	}
+}
diff --git a/org.eclipse.mylyn.sandbox.search.ui/src/org/eclipse/mylyn/internal/sandbox/search/ui/provider/ReaderCharSequence.java b/org.eclipse.mylyn.sandbox.search.ui/src/org/eclipse/mylyn/internal/sandbox/search/ui/provider/ReaderCharSequence.java
index ca34955..58a99b5 100644
--- a/org.eclipse.mylyn.sandbox.search.ui/src/org/eclipse/mylyn/internal/sandbox/search/ui/provider/ReaderCharSequence.java
+++ b/org.eclipse.mylyn.sandbox.search.ui/src/org/eclipse/mylyn/internal/sandbox/search/ui/provider/ReaderCharSequence.java
@@ -1,99 +1,99 @@
-/*******************************************************************************

- * Copyright (c) 2011 Tasktop Technologies.

- * All rights reserved. This program and the accompanying materials

- * are made available under the terms of the Eclipse Public License v1.0

- * which accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- *

- * Contributors:

- *     Tasktop Technologies - initial API and implementation

- *******************************************************************************/

-

-package org.eclipse.mylyn.internal.sandbox.search.ui.provider;

-

-import java.io.IOException;

-import java.io.Reader;

-

-import org.eclipse.core.runtime.IProgressMonitor;

-import org.eclipse.core.runtime.OperationCanceledException;

-

-/**

- * A CharSequence that is based on a reader, providing a specified number of characters. If the reader cannot provide

- * enough character data, the sequence is padded with whitespace.

- * 

- * @author David Green

- */

-class ReaderCharSequence implements CharSequence {

-

-	private final int length;

-

-	private Reader reader;

-

-	private final StringBuilder buffer;

-

-	private final IProgressMonitor monitor;

-

-	public ReaderCharSequence(int length, Reader reader, IProgressMonitor monitor) {

-		this.length = length;

-		this.reader = reader;

-		this.monitor = monitor;

-		buffer = new StringBuilder(length > 1024 ? 1024 : length);

-	}

-

-	public int length() {

-		return length;

-	}

-

-	public char charAt(int index) {

-		if (index >= length || index < 0) {

-			throw new IndexOutOfBoundsException();

-		}

-		if (index >= buffer.length()) {

-			fill(index);

-		}

-		if (index >= buffer.length()) {

-			return ' ';

-		}

-		return buffer.charAt(index);

-	}

-

-	private void fill(int maxIndex) {

-		if (reader == null) {

-			return;

-		}

-		int c;

-		while (buffer.length() <= maxIndex) {

-			if (monitor.isCanceled()) {

-				throw new OperationCanceledException();

-			}

-			try {

-				c = reader.read();

-				if (c == -1) {

-					reader = null;

-					break;

-				}

-			} catch (IOException e) {

-				reader = null;

-				break;

-			}

-			buffer.append((char) c);

-		}

-	}

-

-	public CharSequence subSequence(int start, int end) {

-		if (end > length || end < 0 || start < 0 || start > end) {

-			throw new IndexOutOfBoundsException();

-		}

-		if (end > buffer.length()) {

-			fill(end - 1);

-		}

-		if (end <= buffer.length()) {

-			return buffer.subSequence(start, end);

-		}

-		StringBuilder buf = new StringBuilder(end - start);

-		for (int x = start; x < end; ++x) {

-			buf.append(charAt(x));

-		}

-		return buf;

-	}

-}

+/*******************************************************************************
+ * Copyright (c) 2011 Tasktop Technologies.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Tasktop Technologies - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylyn.internal.sandbox.search.ui.provider;
+
+import java.io.IOException;
+import java.io.Reader;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.OperationCanceledException;
+
+/**
+ * A CharSequence that is based on a reader, providing a specified number of characters. If the reader cannot provide
+ * enough character data, the sequence is padded with whitespace.
+ * 
+ * @author David Green
+ */
+class ReaderCharSequence implements CharSequence {
+
+	private final int length;
+
+	private Reader reader;
+
+	private final StringBuilder buffer;
+
+	private final IProgressMonitor monitor;
+
+	public ReaderCharSequence(int length, Reader reader, IProgressMonitor monitor) {
+		this.length = length;
+		this.reader = reader;
+		this.monitor = monitor;
+		buffer = new StringBuilder(length > 1024 ? 1024 : length);
+	}
+
+	public int length() {
+		return length;
+	}
+
+	public char charAt(int index) {
+		if (index >= length || index < 0) {
+			throw new IndexOutOfBoundsException();
+		}
+		if (index >= buffer.length()) {
+			fill(index);
+		}
+		if (index >= buffer.length()) {
+			return ' ';
+		}
+		return buffer.charAt(index);
+	}
+
+	private void fill(int maxIndex) {
+		if (reader == null) {
+			return;
+		}
+		int c;
+		while (buffer.length() <= maxIndex) {
+			if (monitor.isCanceled()) {
+				throw new OperationCanceledException();
+			}
+			try {
+				c = reader.read();
+				if (c == -1) {
+					reader = null;
+					break;
+				}
+			} catch (IOException e) {
+				reader = null;
+				break;
+			}
+			buffer.append((char) c);
+		}
+	}
+
+	public CharSequence subSequence(int start, int end) {
+		if (end > length || end < 0 || start < 0 || start > end) {
+			throw new IndexOutOfBoundsException();
+		}
+		if (end > buffer.length()) {
+			fill(end - 1);
+		}
+		if (end <= buffer.length()) {
+			return buffer.subSequence(start, end);
+		}
+		StringBuilder buf = new StringBuilder(end - start);
+		for (int x = start; x < end; ++x) {
+			buf.append(charAt(x));
+		}
+		return buf;
+	}
+}
diff --git a/org.eclipse.mylyn.sandbox.search.ui/src/org/eclipse/mylyn/internal/sandbox/search/ui/provider/messages.properties b/org.eclipse.mylyn.sandbox.search.ui/src/org/eclipse/mylyn/internal/sandbox/search/ui/provider/messages.properties
index 5956df2..6588b49 100644
--- a/org.eclipse.mylyn.sandbox.search.ui/src/org/eclipse/mylyn/internal/sandbox/search/ui/provider/messages.properties
+++ b/org.eclipse.mylyn.sandbox.search.ui/src/org/eclipse/mylyn/internal/sandbox/search/ui/provider/messages.properties
@@ -1,11 +1,11 @@
-###############################################################################

-# Copyright (c) 2011 Tasktop Technologies.

-# All rights reserved. This program and the accompanying materials

-# are made available under the terms of the Eclipse Public License v1.0

-# which accompanies this distribution, and is available at

-# http://www.eclipse.org/legal/epl-v10.html

-#

-# Contributors:

-#     Tasktop Technologies - initial API and implementation

-###############################################################################

-BasicSearchProvider_0=Searching for files matching "{0}"

+###############################################################################
+# Copyright (c) 2011 Tasktop Technologies.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#     Tasktop Technologies - initial API and implementation
+###############################################################################
+BasicSearchProvider_0=Searching for files matching "{0}"
diff --git a/org.eclipse.mylyn.sandbox.tests/.settings/org.eclipse.core.runtime.prefs b/org.eclipse.mylyn.sandbox.tests/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/org.eclipse.mylyn.sandbox.tests/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/org.eclipse.mylyn.sandbox.tests/META-INF/MANIFEST.MF b/org.eclipse.mylyn.sandbox.tests/META-INF/MANIFEST.MF
index 3a86df4..3a75387 100644
--- a/org.eclipse.mylyn.sandbox.tests/META-INF/MANIFEST.MF
+++ b/org.eclipse.mylyn.sandbox.tests/META-INF/MANIFEST.MF
@@ -1,41 +1,41 @@
-Manifest-Version: 1.0

-Bundle-ManifestVersion: 2

-Bundle-Name: Mylyn Incubator (Incubation)

-Bundle-SymbolicName: org.eclipse.mylyn.sandbox.tests;singleton:=true

-Bundle-Version: 3.7.0.qualifier

-Bundle-Vendor: Eclipse Mylyn

-Require-Bundle: org.eclipse.core.runtime,

- org.eclipse.core.resources,

- org.eclipse.core.runtime,

- org.eclipse.jdt.core,

- org.eclipse.jdt.ui,

- org.eclipse.pde.core,

- org.eclipse.ui,

- org.junit,

- org.eclipse.mylyn.bugzilla.core,

- org.eclipse.mylyn.bugzilla.tests,

- org.eclipse.mylyn.commons.core,

- org.eclipse.mylyn.commons.net,

- org.eclipse.mylyn.commons.sdk.util,

- org.eclipse.mylyn.context.core,

- org.eclipse.mylyn.context.sdk.java,

- org.eclipse.mylyn.context.sdk.util,

- org.eclipse.mylyn.context.ui,

- org.eclipse.mylyn.java.ui,

- org.eclipse.mylyn.monitor.core,

- org.eclipse.mylyn.monitor.reports,

- org.eclipse.mylyn.monitor.usage,

- org.eclipse.mylyn.tasks.core,

- org.eclipse.mylyn.tasks.tests,

- org.eclipse.mylyn.tasks.ui,

- org.eclipse.mylyn.tests.util,

- org.eclipse.mylyn.monitor.ui,

- org.eclipse.mylyn.sandbox.ui,

- org.eclipse.mylyn.web.tasks

-Bundle-RequiredExecutionEnvironment: J2SE-1.5

-Export-Package: org.eclipse.mylyn.monitor.reports.tests;x-internal:=true,

- org.eclipse.mylyn.monitor.tests;x-internal:=true,

- org.eclipse.mylyn.monitor.usage.tests;x-internal:=true,

- org.eclipse.mylyn.sandbox.tests;x-internal:=true,

- org.eclipse.mylyn.sandbox.tests.util;x-internal:=true,

- org.eclipse.mylyn.tasks.tests.web;x-internal:=true

+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Mylyn Incubator (Incubation)
+Bundle-SymbolicName: org.eclipse.mylyn.sandbox.tests;singleton:=true
+Bundle-Version: 3.7.0.qualifier
+Bundle-Vendor: Eclipse Mylyn
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.core.resources,
+ org.eclipse.core.runtime,
+ org.eclipse.jdt.core,
+ org.eclipse.jdt.ui,
+ org.eclipse.pde.core,
+ org.eclipse.ui,
+ org.junit,
+ org.eclipse.mylyn.bugzilla.core,
+ org.eclipse.mylyn.bugzilla.tests,
+ org.eclipse.mylyn.commons.core,
+ org.eclipse.mylyn.commons.net,
+ org.eclipse.mylyn.commons.sdk.util,
+ org.eclipse.mylyn.context.core,
+ org.eclipse.mylyn.context.sdk.java,
+ org.eclipse.mylyn.context.sdk.util,
+ org.eclipse.mylyn.context.ui,
+ org.eclipse.mylyn.java.ui,
+ org.eclipse.mylyn.monitor.core,
+ org.eclipse.mylyn.monitor.reports,
+ org.eclipse.mylyn.monitor.usage,
+ org.eclipse.mylyn.tasks.core,
+ org.eclipse.mylyn.tasks.tests,
+ org.eclipse.mylyn.tasks.ui,
+ org.eclipse.mylyn.tests.util,
+ org.eclipse.mylyn.monitor.ui,
+ org.eclipse.mylyn.sandbox.ui,
+ org.eclipse.mylyn.web.tasks
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Export-Package: org.eclipse.mylyn.monitor.reports.tests;x-internal:=true,
+ org.eclipse.mylyn.monitor.tests;x-internal:=true,
+ org.eclipse.mylyn.monitor.usage.tests;x-internal:=true,
+ org.eclipse.mylyn.sandbox.tests;x-internal:=true,
+ org.eclipse.mylyn.sandbox.tests.util;x-internal:=true,
+ org.eclipse.mylyn.tasks.tests.web;x-internal:=true
diff --git a/org.eclipse.mylyn.sandbox.ui-feature/.settings/org.eclipse.core.runtime.prefs b/org.eclipse.mylyn.sandbox.ui-feature/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/org.eclipse.mylyn.sandbox.ui-feature/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/org.eclipse.mylyn.sandbox.ui/.settings/org.eclipse.core.runtime.prefs b/org.eclipse.mylyn.sandbox.ui/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/org.eclipse.mylyn.sandbox.ui/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/org.eclipse.mylyn.sandbox.ui/META-INF/MANIFEST.MF b/org.eclipse.mylyn.sandbox.ui/META-INF/MANIFEST.MF
index bd0f7ff..ba13175 100644
--- a/org.eclipse.mylyn.sandbox.ui/META-INF/MANIFEST.MF
+++ b/org.eclipse.mylyn.sandbox.ui/META-INF/MANIFEST.MF
@@ -1,49 +1,49 @@
-Manifest-Version: 1.0

-Bundle-ManifestVersion: 2

-Bundle-Name: Mylyn Incubator (Incubation)

-Bundle-SymbolicName: org.eclipse.mylyn.sandbox.ui;singleton:=true

-Bundle-Version: 3.7.0.qualifier

-Bundle-Activator: org.eclipse.mylyn.internal.sandbox.ui.SandboxUiPlugin

-Require-Bundle: org.eclipse.core.runtime,

- org.eclipse.core.resources,

- org.eclipse.debug.ui,

- org.eclipse.jface.text,

- org.eclipse.ui,

- org.eclipse.ui.editors,

- org.eclipse.ui.forms,

- org.eclipse.ui.ide,

- org.eclipse.jdt.core,

- org.eclipse.jdt.debug,

- org.eclipse.jdt.debug.ui,

- org.eclipse.jdt.ui,

- org.eclipse.search,

- org.eclipse.mylyn.context.core;bundle-version="[3.0.0,4.0.0)",

- org.eclipse.mylyn.context.ui;bundle-version="[3.0.0,4.0.0)",

- org.eclipse.mylyn.tasks.ui;bundle-version="[3.0.0,4.0.0)",

- org.eclipse.mylyn.bugzilla.core;bundle-version="[3.0.0,4.0.0)",

- org.eclipse.mylyn.bugzilla.ui;bundle-version="[3.0.0,4.0.0)",

- org.eclipse.mylyn.tasks.core;bundle-version="[3.0.0,4.0.0)",

- org.eclipse.mylyn.monitor.ui;bundle-version="[3.0.0,4.0.0)",

- org.eclipse.mylyn.java.ui;bundle-version="[3.0.0,4.0.0)",

- org.eclipse.mylyn.commons.core;bundle-version="[3.0.0,4.0.0)",

- org.eclipse.mylyn.commons.ui;bundle-version="[3.0.0,4.0.0)",

- org.eclipse.mylyn.monitor.core;bundle-version="[3.0.0,4.0.0)",

- org.eclipse.mylyn.resources.ui;bundle-version="[3.0.0,4.0.0)",

- org.eclipse.mylyn.ide.ant;bundle-version="[3.0.0,4.0.0)",

- org.eclipse.mylyn.pde.ui;bundle-version="[3.0.0,4.0.0)",

- org.eclipse.core.expressions,

- org.eclipse.pde.core

-Bundle-ActivationPolicy: lazy

-Bundle-Vendor: Eclipse Mylyn

-Export-Package: org.eclipse.mylyn.internal.sandbox.ui;x-internal:=true,

- org.eclipse.mylyn.internal.sandbox.ui.actions;x-internal:=true,

- org.eclipse.mylyn.internal.sandbox.ui.commands;x-internal:=true,

- org.eclipse.mylyn.internal.sandbox.ui.context;x-internal:=true,

- org.eclipse.mylyn.internal.sandbox.ui.editors;x-internal:=true,

- org.eclipse.mylyn.internal.sandbox.ui.highlighters;x-internal:=true,

- org.eclipse.mylyn.internal.sandbox.ui.hyperlinks;x-internal:=true,

- org.eclipse.mylyn.internal.sandbox.ui.planner;x-internal:=true,

- org.eclipse.mylyn.internal.sandbox.ui.views;x-internal:=true

-Bundle-RequiredExecutionEnvironment: J2SE-1.5

-Bundle-ClassPath: .

-Import-Package: org.eclipse.mylyn.commons.net

+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Mylyn Incubator (Incubation)
+Bundle-SymbolicName: org.eclipse.mylyn.sandbox.ui;singleton:=true
+Bundle-Version: 3.7.0.qualifier
+Bundle-Activator: org.eclipse.mylyn.internal.sandbox.ui.SandboxUiPlugin
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.core.resources,
+ org.eclipse.debug.ui,
+ org.eclipse.jface.text,
+ org.eclipse.ui,
+ org.eclipse.ui.editors,
+ org.eclipse.ui.forms,
+ org.eclipse.ui.ide,
+ org.eclipse.jdt.core,
+ org.eclipse.jdt.debug,
+ org.eclipse.jdt.debug.ui,
+ org.eclipse.jdt.ui,
+ org.eclipse.search,
+ org.eclipse.mylyn.context.core;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.mylyn.context.ui;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.mylyn.tasks.ui;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.mylyn.bugzilla.core;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.mylyn.bugzilla.ui;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.mylyn.tasks.core;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.mylyn.monitor.ui;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.mylyn.java.ui;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.mylyn.commons.core;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.mylyn.commons.ui;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.mylyn.monitor.core;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.mylyn.resources.ui;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.mylyn.ide.ant;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.mylyn.pde.ui;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.core.expressions,
+ org.eclipse.pde.core
+Bundle-ActivationPolicy: lazy
+Bundle-Vendor: Eclipse Mylyn
+Export-Package: org.eclipse.mylyn.internal.sandbox.ui;x-internal:=true,
+ org.eclipse.mylyn.internal.sandbox.ui.actions;x-internal:=true,
+ org.eclipse.mylyn.internal.sandbox.ui.commands;x-internal:=true,
+ org.eclipse.mylyn.internal.sandbox.ui.context;x-internal:=true,
+ org.eclipse.mylyn.internal.sandbox.ui.editors;x-internal:=true,
+ org.eclipse.mylyn.internal.sandbox.ui.highlighters;x-internal:=true,
+ org.eclipse.mylyn.internal.sandbox.ui.hyperlinks;x-internal:=true,
+ org.eclipse.mylyn.internal.sandbox.ui.planner;x-internal:=true,
+ org.eclipse.mylyn.internal.sandbox.ui.views;x-internal:=true
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-ClassPath: .
+Import-Package: org.eclipse.mylyn.commons.net
diff --git a/org.eclipse.mylyn.tasks.index-feature/.project b/org.eclipse.mylyn.tasks.index-feature/.project
index 9326e5c..11232ef 100644
--- a/org.eclipse.mylyn.tasks.index-feature/.project
+++ b/org.eclipse.mylyn.tasks.index-feature/.project
@@ -1,17 +1,17 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<projectDescription>

-	<name>org.eclipse.mylyn.tasks.index-feature</name>

-	<comment></comment>

-	<projects>

-	</projects>

-	<buildSpec>

-		<buildCommand>

-			<name>org.eclipse.pde.FeatureBuilder</name>

-			<arguments>

-			</arguments>

-		</buildCommand>

-	</buildSpec>

-	<natures>

-		<nature>org.eclipse.pde.FeatureNature</nature>

-	</natures>

-</projectDescription>

+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.mylyn.tasks.index-feature</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.mylyn.tasks.index-feature/.settings/org.eclipse.core.runtime.prefs b/org.eclipse.mylyn.tasks.index-feature/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/org.eclipse.mylyn.tasks.index-feature/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/org.eclipse.mylyn.tasks.index-feature/feature.xml b/org.eclipse.mylyn.tasks.index-feature/feature.xml
index c61a33b..1b8c3c0 100644
--- a/org.eclipse.mylyn.tasks.index-feature/feature.xml
+++ b/org.eclipse.mylyn.tasks.index-feature/feature.xml
@@ -1,35 +1,35 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<feature

-      id="org.eclipse.mylyn.tasks.index"

-      label="%featureName"

-      version="3.7.0.qualifier"

-      provider-name="%providerName"

-      plugin="org.eclipse.mylyn">

-

-   <description url="http://eclipse.org/mylyn">

-      %description

-   </description>

-

-   <copyright>

-      %copyright

-   </copyright>

-

-   <license url="license.html">

-      %license

-   </license>

-

-   <plugin

-         id="org.eclipse.mylyn.tasks.index.core"

-         download-size="0"

-         install-size="0"

-         version="0.0.0"

-         unpack="false"/>

-

-   <plugin

-         id="org.eclipse.mylyn.tasks.index.ui"

-         download-size="0"

-         install-size="0"

-         version="0.0.0"

-         unpack="false"/>

-

-</feature>

+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.mylyn.tasks.index"
+      label="%featureName"
+      version="3.7.0.qualifier"
+      provider-name="%providerName"
+      plugin="org.eclipse.mylyn">
+
+   <description url="http://eclipse.org/mylyn">
+      %description
+   </description>
+
+   <copyright>
+      %copyright
+   </copyright>
+
+   <license url="license.html">
+      %license
+   </license>
+
+   <plugin
+         id="org.eclipse.mylyn.tasks.index.core"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.mylyn.tasks.index.ui"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+</feature>
diff --git a/org.eclipse.mylyn.tasks.index-feature/pom.xml b/org.eclipse.mylyn.tasks.index-feature/pom.xml
index 6d47fd9..3f78a22 100644
--- a/org.eclipse.mylyn.tasks.index-feature/pom.xml
+++ b/org.eclipse.mylyn.tasks.index-feature/pom.xml
@@ -1,16 +1,16 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<project 

-	xmlns="http://maven.apache.org/POM/4.0.0"

-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

-    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

-  <modelVersion>4.0.0</modelVersion>

-  <parent>

-    <artifactId>org.eclipse.mylyn.incubator-parent</artifactId>

-    <groupId>org.eclipse.mylyn.incubator</groupId>

-    <version>3.7.0-SNAPSHOT</version>

-  </parent>

-  <artifactId>org.eclipse.mylyn.tasks.index</artifactId>

-  <version>3.7.0-SNAPSHOT</version>

-  <packaging>eclipse-feature</packaging>

-  

-</project>

+<?xml version="1.0" encoding="UTF-8"?>
+<project 
+	xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <artifactId>org.eclipse.mylyn.incubator-parent</artifactId>
+    <groupId>org.eclipse.mylyn.incubator</groupId>
+    <version>3.7.0-SNAPSHOT</version>
+  </parent>
+  <artifactId>org.eclipse.mylyn.tasks.index</artifactId>
+  <version>3.7.0-SNAPSHOT</version>
+  <packaging>eclipse-feature</packaging>
+  
+</project>
diff --git a/org.eclipse.mylyn.tasks.index.core/.classpath b/org.eclipse.mylyn.tasks.index.core/.classpath
index 32341fd..53290fd 100644
--- a/org.eclipse.mylyn.tasks.index.core/.classpath
+++ b/org.eclipse.mylyn.tasks.index.core/.classpath
@@ -1,11 +1,11 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<classpath>

-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins">

-		<accessrules>

-			<accessrule kind="accessible" pattern="org/eclipse/mylyn/internal/tasks/core/**"/>

-		</accessrules>

-	</classpathentry>

-	<classpathentry kind="src" path="src"/>

-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>

-	<classpathentry kind="output" path="bin"/>

-</classpath>

+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins">
+		<accessrules>
+			<accessrule kind="accessible" pattern="org/eclipse/mylyn/internal/tasks/core/**"/>
+		</accessrules>
+	</classpathentry>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.eclipse.mylyn.tasks.index.core/.project b/org.eclipse.mylyn.tasks.index.core/.project
index 93b7e6a..6c1417e 100644
--- a/org.eclipse.mylyn.tasks.index.core/.project
+++ b/org.eclipse.mylyn.tasks.index.core/.project
@@ -1,34 +1,34 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<projectDescription>

-	<name>org.eclipse.mylyn.tasks.index.core</name>

-	<comment></comment>

-	<projects>

-	</projects>

-	<buildSpec>

-		<buildCommand>

-			<name>org.eclipse.jdt.core.javabuilder</name>

-			<arguments>

-			</arguments>

-		</buildCommand>

-		<buildCommand>

-			<name>org.eclipse.pde.ManifestBuilder</name>

-			<arguments>

-			</arguments>

-		</buildCommand>

-		<buildCommand>

-			<name>org.eclipse.pde.SchemaBuilder</name>

-			<arguments>

-			</arguments>

-		</buildCommand>

+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.mylyn.tasks.index.core</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 		<buildCommand>
 			<name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
 			<arguments>
 			</arguments>
 		</buildCommand>
-	</buildSpec>

-	<natures>

-		<nature>org.eclipse.pde.PluginNature</nature>

-		<nature>org.eclipse.jdt.core.javanature</nature>

+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
 		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
-	</natures>

-</projectDescription>

+	</natures>
+</projectDescription>
diff --git a/org.eclipse.mylyn.tasks.index.core/.settings/org.eclipse.core.runtime.prefs b/org.eclipse.mylyn.tasks.index.core/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/org.eclipse.mylyn.tasks.index.core/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/org.eclipse.mylyn.tasks.index.core/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.mylyn.tasks.index.core/.settings/org.eclipse.jdt.core.prefs
index f8076fd..a0b960e 100644
--- a/org.eclipse.mylyn.tasks.index.core/.settings/org.eclipse.jdt.core.prefs
+++ b/org.eclipse.mylyn.tasks.index.core/.settings/org.eclipse.jdt.core.prefs
@@ -1,357 +1,357 @@
-#Wed Oct 26 09:16:12 PDT 2011

-eclipse.preferences.version=1

-org.eclipse.jdt.core.codeComplete.argumentPrefixes=

-org.eclipse.jdt.core.codeComplete.argumentSuffixes=

-org.eclipse.jdt.core.codeComplete.fieldPrefixes=

-org.eclipse.jdt.core.codeComplete.fieldSuffixes=

-org.eclipse.jdt.core.codeComplete.localPrefixes=

-org.eclipse.jdt.core.codeComplete.localSuffixes=

-org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=

-org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=

-org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=

-org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=

-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled

-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5

-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve

-org.eclipse.jdt.core.compiler.compliance=1.5

-org.eclipse.jdt.core.compiler.debug.lineNumber=generate

-org.eclipse.jdt.core.compiler.debug.localVariable=generate

-org.eclipse.jdt.core.compiler.debug.sourceFile=generate

-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning

-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error

-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore

-org.eclipse.jdt.core.compiler.problem.deprecation=warning

-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled

-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled

-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning

-org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore

-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error

-org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore

-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled

-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore

-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning

-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning

-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error

-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning

-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning

-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore

-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore

-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore

-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning

-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore

-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore

-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning

-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning

-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning

-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning

-org.eclipse.jdt.core.compiler.problem.nullReference=error

-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning

-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore

-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore

-org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning

-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning

-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore

-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore

-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled

-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning

-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled

-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore

-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning

-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning

-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore

-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning

-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore

-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore

-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore

-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore

-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled

-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled

-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled

-org.eclipse.jdt.core.compiler.problem.unusedImport=warning

-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning

-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning

-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore

-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled

-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled

-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled

-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning

-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning

-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning

-org.eclipse.jdt.core.compiler.source=1.5

-org.eclipse.jdt.core.compiler.taskCaseSensitive=enabled

-org.eclipse.jdt.core.compiler.taskPriorities=NORMAL,HIGH,NORMAL

-org.eclipse.jdt.core.compiler.taskTags=TODO,FIXME,XXX

-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false

-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16

-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0

-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16

-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16

-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16

-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16

-org.eclipse.jdt.core.formatter.alignment_for_assignment=0

-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16

-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16

-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=48

-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0

-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16

-org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0

-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16

-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16

-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16

-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=80

-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16

-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16

-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16

-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16

-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16

-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1

-org.eclipse.jdt.core.formatter.blank_lines_after_package=1

-org.eclipse.jdt.core.formatter.blank_lines_before_field=1

-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0

-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1

-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1

-org.eclipse.jdt.core.formatter.blank_lines_before_method=1

-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1

-org.eclipse.jdt.core.formatter.blank_lines_before_package=0

-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1

-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1

-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line

-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line

-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line

-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line

-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line

-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line

-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line

-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line

-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line

-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line

-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line

-org.eclipse.jdt.core.formatter.comment.clear_blank_lines=false

-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false

-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true

-org.eclipse.jdt.core.formatter.comment.format_block_comments=false

-org.eclipse.jdt.core.formatter.comment.format_comments=true

-org.eclipse.jdt.core.formatter.comment.format_header=false

-org.eclipse.jdt.core.formatter.comment.format_html=true

-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true

-org.eclipse.jdt.core.formatter.comment.format_line_comments=false

-org.eclipse.jdt.core.formatter.comment.format_source_code=true

-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true

-org.eclipse.jdt.core.formatter.comment.indent_root_tags=true

-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert

-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert

-org.eclipse.jdt.core.formatter.comment.line_length=120

-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true

-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true

-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false

-org.eclipse.jdt.core.formatter.compact_else_if=true

-org.eclipse.jdt.core.formatter.continuation_indentation=2

-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2

-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off

-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on

-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false

-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true

-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true

-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true

-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true

-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true

-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true

-org.eclipse.jdt.core.formatter.indent_empty_lines=false

-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true

-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true

-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true

-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false

-org.eclipse.jdt.core.formatter.indentation.size=4

-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert

-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert

-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert

-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert

-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=insert

-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert

-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert

-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert

-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert

-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert

-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert

-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert

-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert

-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert

-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert

-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert

-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert

-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert

-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert

-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert

-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert

-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert

-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert

-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert

-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert

-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert

-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert

-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert

-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert

-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert

-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert

-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert

-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert

-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert

-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert

-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert

-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert

-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert

-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert

-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert

-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert

-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert

-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert

-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert

-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert

-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert

-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert

-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert

-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert

-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert

-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert

-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert

-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert

-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert

-org.eclipse.jdt.core.formatter.join_lines_in_comments=true

-org.eclipse.jdt.core.formatter.join_wrapped_lines=true

-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false

-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false

-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false

-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false

-org.eclipse.jdt.core.formatter.lineSplit=120

-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=true

-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=true

-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0

-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1

-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true

-org.eclipse.jdt.core.formatter.tabulation.char=tab

-org.eclipse.jdt.core.formatter.tabulation.size=4

-org.eclipse.jdt.core.formatter.use_on_off_tags=false

-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false

-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true

-org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true

+#Wed Oct 26 09:16:12 PDT 2011
+eclipse.preferences.version=1
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.5
+org.eclipse.jdt.core.compiler.taskCaseSensitive=enabled
+org.eclipse.jdt.core.compiler.taskPriorities=NORMAL,HIGH,NORMAL
+org.eclipse.jdt.core.compiler.taskTags=TODO,FIXME,XXX
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=48
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=80
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=1
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
+org.eclipse.jdt.core.formatter.comment.line_length=120
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=true
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=true
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=false
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
diff --git a/org.eclipse.mylyn.tasks.index.core/OSGI-INF/l10n/bundle.properties b/org.eclipse.mylyn.tasks.index.core/OSGI-INF/l10n/bundle.properties
index bf3affd..aa53b19 100644
--- a/org.eclipse.mylyn.tasks.index.core/OSGI-INF/l10n/bundle.properties
+++ b/org.eclipse.mylyn.tasks.index.core/OSGI-INF/l10n/bundle.properties
@@ -1,13 +1,13 @@
-###############################################################################

-# Copyright (c) 2011 Tasktop Technologies and others.

-# All rights reserved. This program and the accompanying materials

-# are made available under the terms of the Eclipse Public License v1.0

-# which accompanies this distribution, and is available at

-# http://www.eclipse.org/legal/epl-v10.html

-#

-# Contributors:

-#      Tasktop Technologies - initial API and implementation

-###############################################################################

-#Properties file for org.eclipse.mylyn.tasks.index.core

-Bundle-Vendor = Eclipse.org

+###############################################################################
+# Copyright (c) 2011 Tasktop Technologies and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#      Tasktop Technologies - initial API and implementation
+###############################################################################
+#Properties file for org.eclipse.mylyn.tasks.index.core
+Bundle-Vendor = Eclipse.org
 Bundle-Name = Tasks Index
\ No newline at end of file
diff --git a/org.eclipse.mylyn.tasks.index.core/build.properties b/org.eclipse.mylyn.tasks.index.core/build.properties
index 518bf74..a1bcba5 100644
--- a/org.eclipse.mylyn.tasks.index.core/build.properties
+++ b/org.eclipse.mylyn.tasks.index.core/build.properties
@@ -1,8 +1,8 @@
-source.. = src/

-output.. = bin/

-bin.includes = META-INF/,\

-               .,\

-               OSGI-INF/,\

-               about.html

-src.includes = about.html

-

+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               OSGI-INF/,\
+               about.html
+src.includes = about.html
+
diff --git a/org.eclipse.mylyn.tasks.index.core/src/org/eclipse/mylyn/internal/tasks/index/core/Messages.java b/org.eclipse.mylyn.tasks.index.core/src/org/eclipse/mylyn/internal/tasks/index/core/Messages.java
index c67d025..af9c99b 100644
--- a/org.eclipse.mylyn.tasks.index.core/src/org/eclipse/mylyn/internal/tasks/index/core/Messages.java
+++ b/org.eclipse.mylyn.tasks.index.core/src/org/eclipse/mylyn/internal/tasks/index/core/Messages.java
@@ -1,32 +1,32 @@
-/*******************************************************************************

- * Copyright (c) 2011 Tasktop Technologies and others.

- * All rights reserved. This program and the accompanying materials

- * are made available under the terms of the Eclipse Public License v1.0

- * which accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- *

- * Contributors:

- *     Tasktop Technologies - initial API and implementation

- *******************************************************************************/

-

-package org.eclipse.mylyn.internal.tasks.index.core;

-

-import org.eclipse.osgi.util.NLS;

-

-/**

- * @author David Green

- */

-class Messages extends NLS {

-	private static final String BUNDLE_NAME = "org.eclipse.mylyn.internal.tasks.index.core.messages"; //$NON-NLS-1$

-

-	public static String TaskListIndex_indexerJob;

-

-	public static String TaskListIndex_task_rebuildingIndex;

-	static {

-		// initialize resource bundle

-		NLS.initializeMessages(BUNDLE_NAME, Messages.class);

-	}

-

-	private Messages() {

-	}

-}

+/*******************************************************************************
+ * Copyright (c) 2011 Tasktop Technologies and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Tasktop Technologies - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylyn.internal.tasks.index.core;
+
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * @author David Green
+ */
+class Messages extends NLS {
+	private static final String BUNDLE_NAME = "org.eclipse.mylyn.internal.tasks.index.core.messages"; //$NON-NLS-1$
+
+	public static String TaskListIndex_indexerJob;
+
+	public static String TaskListIndex_task_rebuildingIndex;
+	static {
+		// initialize resource bundle
+		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+	}
+
+	private Messages() {
+	}
+}
diff --git a/org.eclipse.mylyn.tasks.index.core/src/org/eclipse/mylyn/internal/tasks/index/core/TaskAnalyzer.java b/org.eclipse.mylyn.tasks.index.core/src/org/eclipse/mylyn/internal/tasks/index/core/TaskAnalyzer.java
index c3b7386..297bca4 100644
--- a/org.eclipse.mylyn.tasks.index.core/src/org/eclipse/mylyn/internal/tasks/index/core/TaskAnalyzer.java
+++ b/org.eclipse.mylyn.tasks.index.core/src/org/eclipse/mylyn/internal/tasks/index/core/TaskAnalyzer.java
@@ -1,33 +1,33 @@
-/*******************************************************************************

- * Copyright (c) 2011 Tasktop Technologies.

- * All rights reserved. This program and the accompanying materials

- * are made available under the terms of the Eclipse Public License v1.0

- * which accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- *

- * Contributors:

- *     Tasktop Technologies - initial API and implementation

- *******************************************************************************/

-

-package org.eclipse.mylyn.internal.tasks.index.core;

-

-import org.apache.lucene.analysis.KeywordAnalyzer;

-import org.apache.lucene.analysis.PerFieldAnalyzerWrapper;

-import org.apache.lucene.analysis.standard.StandardAnalyzer;

-import org.apache.lucene.util.Version;

-

-/**

- * An analyzer that is aware of task fields

- * 

- * @author David Green

- */

-class TaskAnalyzer extends PerFieldAnalyzerWrapper {

-

-	public TaskAnalyzer() {

-		super(new StandardAnalyzer(Version.LUCENE_CURRENT));

-		addAnalyzer(TaskListIndex.IndexField.IDENTIFIER.fieldName(), new KeywordAnalyzer());

-		addAnalyzer(TaskListIndex.IndexField.TASK_KEY.fieldName(), new KeywordAnalyzer());

-		addAnalyzer(TaskListIndex.IndexField.REPOSITORY_URL.fieldName(), new KeywordAnalyzer());

-	}

-

-}

+/*******************************************************************************
+ * Copyright (c) 2011 Tasktop Technologies.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Tasktop Technologies - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylyn.internal.tasks.index.core;
+
+import org.apache.lucene.analysis.KeywordAnalyzer;
+import org.apache.lucene.analysis.PerFieldAnalyzerWrapper;
+import org.apache.lucene.analysis.standard.StandardAnalyzer;
+import org.apache.lucene.util.Version;
+
+/**
+ * An analyzer that is aware of task fields
+ * 
+ * @author David Green
+ */
+class TaskAnalyzer extends PerFieldAnalyzerWrapper {
+
+	public TaskAnalyzer() {
+		super(new StandardAnalyzer(Version.LUCENE_CURRENT));
+		addAnalyzer(TaskListIndex.IndexField.IDENTIFIER.fieldName(), new KeywordAnalyzer());
+		addAnalyzer(TaskListIndex.IndexField.TASK_KEY.fieldName(), new KeywordAnalyzer());
+		addAnalyzer(TaskListIndex.IndexField.REPOSITORY_URL.fieldName(), new KeywordAnalyzer());
+	}
+
+}
diff --git a/org.eclipse.mylyn.tasks.index.core/src/org/eclipse/mylyn/internal/tasks/index/core/TaskListIndex.java b/org.eclipse.mylyn.tasks.index.core/src/org/eclipse/mylyn/internal/tasks/index/core/TaskListIndex.java
index 5e2cd48..41cafe1 100644
--- a/org.eclipse.mylyn.tasks.index.core/src/org/eclipse/mylyn/internal/tasks/index/core/TaskListIndex.java
+++ b/org.eclipse.mylyn.tasks.index.core/src/org/eclipse/mylyn/internal/tasks/index/core/TaskListIndex.java
@@ -1,914 +1,914 @@
-/*******************************************************************************

- * Copyright (c) 2011 Tasktop Technologies.

- * All rights reserved. This program and the accompanying materials

- * are made available under the terms of the Eclipse Public License v1.0

- * which accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- *

- * Contributors:

- *     Tasktop Technologies - initial API and implementation

- *******************************************************************************/

-

-package org.eclipse.mylyn.internal.tasks.index.core;

-

-import java.io.File;

-import java.io.FileNotFoundException;

-import java.io.IOException;

-import java.util.ArrayList;

-import java.util.Collection;

-import java.util.Date;

-import java.util.HashMap;

-import java.util.HashSet;

-import java.util.Iterator;

-import java.util.LinkedHashSet;

-import java.util.List;

-import java.util.Map;

-import java.util.Map.Entry;

-import java.util.Set;

-import java.util.concurrent.locks.Lock;

-import java.util.concurrent.locks.ReadWriteLock;

-import java.util.concurrent.locks.ReentrantReadWriteLock;

-import java.util.logging.Logger;

-

-import org.apache.lucene.document.DateTools;

-import org.apache.lucene.document.DateTools.Resolution;

-import org.apache.lucene.document.Document;

-import org.apache.lucene.document.Field;

-import org.apache.lucene.document.Field.Store;

-import org.apache.lucene.index.CorruptIndexException;

-import org.apache.lucene.index.IndexReader;

-import org.apache.lucene.index.IndexWriter;

-import org.apache.lucene.index.Term;

-import org.apache.lucene.queryParser.ParseException;

-import org.apache.lucene.queryParser.QueryParser;

-import org.apache.lucene.search.BooleanClause;

-import org.apache.lucene.search.BooleanClause.Occur;

-import org.apache.lucene.search.BooleanQuery;

-import org.apache.lucene.search.IndexSearcher;

-import org.apache.lucene.search.PrefixQuery;

-import org.apache.lucene.search.Query;

-import org.apache.lucene.search.ScoreDoc;

-import org.apache.lucene.search.TermQuery;

-import org.apache.lucene.search.TopDocs;

-import org.apache.lucene.store.Directory;

-import org.apache.lucene.store.NIOFSDirectory;

-import org.apache.lucene.util.Version;

-import org.eclipse.core.runtime.CoreException;

-import org.eclipse.core.runtime.IProgressMonitor;

-import org.eclipse.core.runtime.IStatus;

-import org.eclipse.core.runtime.MultiStatus;

-import org.eclipse.core.runtime.NullProgressMonitor;

-import org.eclipse.core.runtime.Platform;

-import org.eclipse.core.runtime.Status;

-import org.eclipse.core.runtime.SubMonitor;

-import org.eclipse.core.runtime.jobs.Job;

-import org.eclipse.mylyn.commons.core.StatusHandler;

-import org.eclipse.mylyn.internal.tasks.core.AbstractTask;

-import org.eclipse.mylyn.internal.tasks.core.ITaskListChangeListener;

-import org.eclipse.mylyn.internal.tasks.core.ITaskListRunnable;

-import org.eclipse.mylyn.internal.tasks.core.TaskContainerDelta;

-import org.eclipse.mylyn.internal.tasks.core.TaskList;

-import org.eclipse.mylyn.internal.tasks.core.data.ITaskDataManagerListener;

-import org.eclipse.mylyn.internal.tasks.core.data.TaskDataManager;

-import org.eclipse.mylyn.internal.tasks.core.data.TaskDataManagerEvent;

-import org.eclipse.mylyn.tasks.core.IRepositoryElement;

-import org.eclipse.mylyn.tasks.core.IRepositoryPerson;

-import org.eclipse.mylyn.tasks.core.ITask;

-import org.eclipse.mylyn.tasks.core.data.TaskAttribute;

-import org.eclipse.mylyn.tasks.core.data.TaskCommentMapper;

-import org.eclipse.mylyn.tasks.core.data.TaskData;

-

-/**

- * An index on a task list.

- * 

- * @author David Green

- */

-public class TaskListIndex implements ITaskDataManagerListener, ITaskListChangeListener {

-

-	public abstract static class TaskCollector {

-

-		public abstract void collect(ITask task);

-

-	}

-

-	private static final Object COMMAND_RESET_INDEX = "index:reset"; //$NON-NLS-1$

-

-	/**

-	 * Task attribute meta-data key that should be set to "true" to have attribute value indexed as part of the task

-	 * {@link IndexField#CONTENT}. Provides a way for connectors to specify non-standard attributes as indexable. By

-	 * default, {@link TaskAttribute#SUMMARY summary} and {@link TaskAttribute#DESCRIPTION description} are indexed.

-	 */

-	public static final String META_INDEXED_AS_CONTENT = "index-content"; //$NON-NLS-1$

-

-	public static enum IndexField {

-		IDENTIFIER(false, null, false), //

-		TASK_KEY(false, null, false), //

-		REPOSITORY_URL(false, null, false), //

-		SUMMARY(true, null, false), //

-		CONTENT(true, null, false), //

-		ASSIGNEE(true, TaskAttribute.USER_ASSIGNED, false), //

-		REPORTER(true, TaskAttribute.USER_REPORTER, false), //

-		PERSON(true, null, false), //

-		COMPONENT(true, TaskAttribute.COMPONENT, false), //

-		COMPLETION_DATE(true, null, true), //

-		CREATION_DATE(true, null, true), //

-		DUE_DATE(true, null, true), //

-		MODIFICATION_DATE(true, null, true), //

-		DESCRIPTION(true, TaskAttribute.DESCRIPTION, false), //

-		KEYWORDS(true, TaskAttribute.KEYWORDS, false), //

-		PRODUCT(true, TaskAttribute.PRODUCT, false), //

-		RESOLUTION(true, TaskAttribute.RESOLUTION, false), //

-		SEVERITY(true, TaskAttribute.SEVERITY, false), //

-		STATUS(true, TaskAttribute.STATUS, false);

-

-		private final boolean userVisible;

-

-		private final String attributeId;

-

-		private final boolean dateTime;

-

-		private IndexField(boolean userVisible, String attributeId, boolean dateTime) {

-			this.userVisible = userVisible;

-			this.attributeId = attributeId;

-			this.dateTime = dateTime;

-		}

-

-		public String fieldName() {

-			return name().toLowerCase();

-		}

-

-		/**

-		 * get the task attribute id, or null if this field has special handling

-		 */

-		public String getAttributeId() {

-			return attributeId;

-		}

-

-		/**

-		 * indicate if the field should be exposed in the UI

-		 */

-		public boolean isUserVisible() {

-			return userVisible;

-		}

-

-		/**

-		 * indicate if the field is a date/time field

-		 */

-		public boolean isDateTime() {

-			return dateTime;

-		}

-

-		public static IndexField fromFieldName(String fieldName) {

-			try {

-				return IndexField.valueOf(fieldName.toUpperCase());

-			} catch (IllegalArgumentException e) {

-				return null;

-			}

-		}

-

-		public boolean isPersonField() {

-			return this == PERSON || this == REPORTER || this == ASSIGNEE;

-		}

-	}

-

-	private static enum MaintainIndexType {

-		STARTUP, REINDEX

-	}

-

-	private Directory directory;

-

-	private MaintainIndexJob maintainIndexJob;

-

-	private final Map<ITask, TaskData> reindexQueue = new HashMap<ITask, TaskData>();

-

-	private IndexReader indexReader;

-

-	private boolean rebuildIndex = false;

-

-	private String lastPatternString;

-

-	private Set<String> lastResults;

-

-	private IndexField defaultField = IndexField.SUMMARY;

-

-	private final TaskList taskList;

-

-	private final TaskDataManager dataManager;

-

-	private long startupDelay = 6000L;

-

-	private long reindexDelay = 3000L;

-

-	private int maxMatchSearchHits = 1500;

-

-	private final ReadWriteLock indexReaderLock = new ReentrantReadWriteLock(true);

-

-	private TaskListIndex(TaskList taskList, TaskDataManager dataManager) {

-		if (taskList == null) {

-			throw new IllegalArgumentException();

-		}

-		if (dataManager == null) {

-			throw new IllegalArgumentException();

-		}

-		this.taskList = taskList;

-		this.dataManager = dataManager;

-	}

-

-	public TaskListIndex(TaskList taskList, TaskDataManager dataManager, File indexLocation) {

-		this(taskList, dataManager, indexLocation, 6000L);

-	}

-

-	public TaskListIndex(TaskList taskList, TaskDataManager dataManager, File indexLocation, long startupDelay) {

-		this(taskList, dataManager);

-		if (startupDelay < 0L || startupDelay > (1000L * 60)) {

-			throw new IllegalArgumentException();

-		}

-		if (indexLocation == null) {

-			throw new IllegalArgumentException();

-		}

-		this.startupDelay = startupDelay;

-		if (!indexLocation.exists()) {

-			rebuildIndex = true;

-			if (!indexLocation.mkdirs()) {

-				StatusHandler.log(new Status(IStatus.ERROR, TasksIndexCore.BUNDLE_ID,

-						"Cannot create task list index folder: " + indexLocation)); //$NON-NLS-1$

-			}

-		}

-		if (indexLocation.exists() && indexLocation.isDirectory()) {

-			try {

-				Logger.getLogger(TaskListIndex.class.getName()).fine("task list index: " + indexLocation); //$NON-NLS-1$

-

-				directory = new NIOFSDirectory(indexLocation);

-			} catch (IOException e) {

-				StatusHandler.log(new Status(IStatus.ERROR, TasksIndexCore.BUNDLE_ID,

-						"Cannot create task list index", e)); //$NON-NLS-1$

-			}

-		}

-		initialize();

-	}

-

-	public TaskListIndex(TaskList taskList, TaskDataManager dataManager, Directory directory) {

-		this(taskList, dataManager);

-		this.directory = directory;

-		initialize();

-	}

-

-	public long getReindexDelay() {

-		return reindexDelay;

-	}

-

-	public void setReindexDelay(long reindexDelay) {

-		this.reindexDelay = reindexDelay;

-	}

-

-	public IndexField getDefaultField() {

-		return defaultField;

-	}

-

-	public void setDefaultField(IndexField defaultField) {

-		this.defaultField = defaultField;

-		synchronized (this) {

-			lastResults = null;

-		}

-	}

-

-	public int getMaxMatchSearchHits() {

-		return maxMatchSearchHits;

-	}

-

-	public void setMaxMatchSearchHits(int maxMatchSearchHits) {

-		this.maxMatchSearchHits = maxMatchSearchHits;

-	}

-

-	private void initialize() {

-		if (!rebuildIndex) {

-			IndexReader indexReader = null;

-			try {

-				indexReader = getIndexReader();

-			} catch (Exception e) {

-				// ignore, this can happen if the index is corrupt

-			}

-			if (indexReader == null) {

-				rebuildIndex = true;

-			}

-		}

-		maintainIndexJob = new MaintainIndexJob();

-		dataManager.addListener(this);

-		taskList.addChangeListener(this);

-

-		scheduleIndexMaintenance(MaintainIndexType.STARTUP);

-	}

-

-	private void scheduleIndexMaintenance(MaintainIndexType type) {

-		long delay = 0L;

-		switch (type) {

-		case STARTUP:

-			delay = startupDelay;

-			break;

-		case REINDEX:

-			delay = reindexDelay;

-		}

-

-		if (delay == 0L) {

-			// primarily for testing purposes

-

-			maintainIndexJob.cancel();

-			try {

-				maintainIndexJob.join();

-			} catch (InterruptedException e) {

-				// ignore

-			}

-			maintainIndexJob.run(new NullProgressMonitor());

-		} else {

-			maintainIndexJob.schedule(delay);

-		}

-	}

-

-	public boolean matches(ITask task, String patternString) {

-		if (patternString.equals(COMMAND_RESET_INDEX)) {

-			reindex();

-		}

-		Lock readLock = indexReaderLock.readLock();

-		readLock.lock();

-		try {

-

-			IndexReader indexReader = getIndexReader();

-			if (indexReader != null) {

-				Set<String> hits;

-

-				if (lastResults == null || (lastPatternString == null || !lastPatternString.equals(patternString))) {

-					this.lastPatternString = patternString;

-

-					long startTime = System.currentTimeMillis();

-

-					hits = new HashSet<String>();

-

-					IndexSearcher indexSearcher = new IndexSearcher(indexReader);

-					try {

-						Query query = computeQuery(patternString);

-						TopDocs results = indexSearcher.search(query, maxMatchSearchHits);

-						for (ScoreDoc scoreDoc : results.scoreDocs) {

-							Document document = indexReader.document(scoreDoc.doc);

-							hits.add(document.get(IndexField.IDENTIFIER.fieldName()));

-						}

-					} catch (IOException e) {

-						StatusHandler.fail(new Status(IStatus.ERROR, TasksIndexCore.BUNDLE_ID,

-								"Unexpected failure within task list index", e)); //$NON-NLS-1$

-					} finally {

-						try {

-							indexSearcher.close();

-						} catch (IOException e) {

-							// ignore

-						}

-					}

-

-					Logger.getLogger(TaskListIndex.class.getName()).fine(

-							"New query in " + (System.currentTimeMillis() - startTime) + "ms"); //$NON-NLS-1$ //$NON-NLS-2$

-				} else {

-					hits = lastResults;

-				}

-				synchronized (this) {

-					if (this.indexReader == indexReader) {

-						this.lastPatternString = patternString;

-						this.lastResults = hits;

-					}

-				}

-				String taskIdentifier = task.getHandleIdentifier();

-				return hits != null && hits.contains(taskIdentifier);

-			}

-

-		} finally {

-			readLock.unlock();

-		}

-		return false;

-	}

-

-	public void reindex() {

-		rebuildIndex = true;

-		scheduleIndexMaintenance(MaintainIndexType.REINDEX);

-	}

-

-	/**

-	 * call to wait until index maintenance has completed

-	 * 

-	 * @throws InterruptedException

-	 */

-	public void waitUntilIdle() throws InterruptedException {

-		if (!Platform.isRunning() && reindexDelay != 0L) {

-			// job join() behaviour is not the same when platform is not running

-			Logger.getLogger(TaskListIndex.class.getName()).warning(

-					"Index job joining may not work properly when Eclipse platform is not running"); //$NON-NLS-1$

-		}

-		maintainIndexJob.join();

-	}

-

-	public void find(String patternString, TaskCollector collector, int resultsLimit) {

-

-		Lock readLock = indexReaderLock.readLock();

-		readLock.lock();

-		try {

-			IndexReader indexReader = getIndexReader();

-			if (indexReader != null) {

-				IndexSearcher indexSearcher = new IndexSearcher(indexReader);

-				try {

-					Query query = computeQuery(patternString);

-					TopDocs results = indexSearcher.search(query, resultsLimit);

-					for (ScoreDoc scoreDoc : results.scoreDocs) {

-						Document document = indexReader.document(scoreDoc.doc);

-						String taskIdentifier = document.get(IndexField.IDENTIFIER.fieldName());

-						AbstractTask task = taskList.getTask(taskIdentifier);

-						if (task != null) {

-							collector.collect(task);

-						}

-					}

-				} catch (IOException e) {

-					StatusHandler.fail(new Status(IStatus.ERROR, TasksIndexCore.BUNDLE_ID,

-							"Unexpected failure within task list index", e)); //$NON-NLS-1$

-				} finally {

-					try {

-						indexSearcher.close();

-					} catch (IOException e) {

-						e.printStackTrace();

-					}

-				}

-			}

-		} finally {

-			readLock.unlock();

-		}

-	}

-

-	private Query computeQuery(String patternString) {

-		String upperPatternString = patternString.toUpperCase();

-

-		boolean hasBooleanSpecifiers = upperPatternString.contains(" OR ") || upperPatternString.contains(" AND ") //$NON-NLS-1$ //$NON-NLS-2$

-				|| upperPatternString.contains(" NOT "); //$NON-NLS-1$

-

-		if (patternString.indexOf(':') == -1 && !hasBooleanSpecifiers && defaultField == IndexField.SUMMARY

-				&& patternString.indexOf('"') == -1) {

-			return new PrefixQuery(new Term(defaultField.fieldName(), patternString));

-		}

-		QueryParser qp = new QueryParser(Version.LUCENE_CURRENT, defaultField.fieldName(), new TaskAnalyzer());

-		Query q;

-		try {

-			q = qp.parse(patternString);

-		} catch (ParseException e) {

-			return new PrefixQuery(new Term(defaultField.fieldName(), patternString));

-		}

-

-		// relax term clauses to be prefix clauses so that we get results close

-		// to what we're expecting

-		// from previous task list search

-		if (q instanceof BooleanQuery) {

-			BooleanQuery query = (BooleanQuery) q;

-			for (BooleanClause clause : query.getClauses()) {

-				if (clause.getQuery() instanceof TermQuery) {

-					TermQuery termQuery = (TermQuery) clause.getQuery();

-					clause.setQuery(new PrefixQuery(termQuery.getTerm()));

-				}

-				if (!hasBooleanSpecifiers) {

-					clause.setOccur(Occur.MUST);

-				}

-			}

-		} else if (q instanceof TermQuery) {

-			return new PrefixQuery(((TermQuery) q).getTerm());

-		}

-		return q;

-	}

-

-	public void close() {

-		dataManager.removeListener(this);

-		taskList.removeChangeListener(this);

-

-		maintainIndexJob.cancel();

-		try {

-			maintainIndexJob.join();

-		} catch (InterruptedException e) {

-			// ignore

-		}

-

-		Lock writeLock = indexReaderLock.writeLock();

-		writeLock.lock();

-		try {

-			synchronized (this) {

-				if (indexReader != null) {

-					try {

-						indexReader.close();

-					} catch (IOException e) {

-						e.printStackTrace();

-					}

-					indexReader = null;

-				}

-			}

-			try {

-				directory.close();

-			} catch (IOException e) {

-				e.printStackTrace();

-			}

-		} finally {

-			writeLock.unlock();

-		}

-	}

-

-	private IndexReader getIndexReader() {

-		try {

-			synchronized (this) {

-				if (indexReader == null) {

-					indexReader = IndexReader.open(directory, true);

-					lastResults = null;

-				}

-				return indexReader;

-			}

-		} catch (CorruptIndexException e) {

-			rebuildIndex = true;

-			if (maintainIndexJob != null) {

-				scheduleIndexMaintenance(MaintainIndexType.REINDEX);

-			}

-		} catch (FileNotFoundException e) {

-			rebuildIndex = true;

-			// expected if the index doesn't exist

-		} catch (IOException e) {

-			e.printStackTrace();

-		}

-		return null;

-	}

-

-	public void taskDataUpdated(TaskDataManagerEvent event) {

-		reindex(event.getTask(), event.getTaskData());

-	}

-

-	public void editsDiscarded(TaskDataManagerEvent event) {

-		reindex(event.getTask(), event.getTaskData());

-	}

-

-	public void containersChanged(Set<TaskContainerDelta> containers) {

-		for (TaskContainerDelta delta : containers) {

-			switch (delta.getKind()) {

-			case ADDED:

-			case REMOVED:

-			case CONTENT:

-				IRepositoryElement element = delta.getElement();

-				if (element instanceof ITask) {

-					ITask task = (ITask) element;

-					if ("local".equals(((AbstractTask) task).getConnectorKind())) { //$NON-NLS-1$

-						reindex(task, null);

-					}

-				}

-			}

-		}

-	}

-

-	private void reindex(ITask task, TaskData taskData) {

-		if (task == null) {

-			// this can happen when edits are discarded

-			return;

-		}

-		synchronized (reindexQueue) {

-			reindexQueue.put(task, taskData);

-		}

-		scheduleIndexMaintenance(MaintainIndexType.REINDEX);

-	}

-

-	private void addIndexedAttributes(Document document, ITask task, TaskAttribute root) {

-		addIndexedAttribute(document, IndexField.TASK_KEY, task.getTaskKey());

-		addIndexedAttribute(document, IndexField.REPOSITORY_URL, task.getRepositoryUrl());

-		addIndexedAttribute(document, IndexField.SUMMARY, root.getMappedAttribute(TaskAttribute.SUMMARY));

-

-		for (TaskAttribute contentAttribute : computeContentAttributes(root)) {

-			addIndexedAttribute(document, IndexField.CONTENT, contentAttribute);

-		}

-

-		addIndexedDateAttributes(document, task);

-

-		List<TaskAttribute> commentAttributes = root.getTaskData()

-				.getAttributeMapper()

-				.getAttributesByType(root.getTaskData(), TaskAttribute.TYPE_COMMENT);

-		for (TaskAttribute commentAttribute : commentAttributes) {

-			TaskCommentMapper commentMapper = TaskCommentMapper.createFrom(commentAttribute);

-			String text = commentMapper.getText();

-			if (text.length() != 0) {

-				addIndexedAttribute(document, IndexField.CONTENT, text);

-			}

-			IRepositoryPerson author = commentMapper.getAuthor();

-			if (author != null) {

-				addIndexedAttribute(document, IndexField.PERSON, author.getPersonId());

-			}

-		}

-

-		List<TaskAttribute> personAttributes = root.getTaskData()

-				.getAttributeMapper()

-				.getAttributesByType(root.getTaskData(), TaskAttribute.TYPE_PERSON);

-		for (TaskAttribute personAttribute : personAttributes) {

-			addIndexedAttribute(document, IndexField.PERSON, personAttribute);

-		}

-

-		for (IndexField field : IndexField.values()) {

-			if (field.getAttributeId() != null) {

-				addIndexedAttribute(document, field, root.getMappedAttribute(field.getAttributeId()));

-			}

-		}

-	}

-

-	/**

-	 * compute attributes that should be indexed as {@link IndexField#CONTENT}

-	 */

-	private Collection<TaskAttribute> computeContentAttributes(TaskAttribute root) {

-		Set<TaskAttribute> attributes = new LinkedHashSet<TaskAttribute>();

-

-		// add default content attributes

-		{

-			TaskAttribute attribute = root.getMappedAttribute(TaskAttribute.SUMMARY);

-			if (attribute != null) {

-				attributes.add(attribute);

-			}

-			attribute = root.getMappedAttribute(TaskAttribute.DESCRIPTION);

-			if (attribute != null) {

-				attributes.add(attribute);

-			}

-			// bugzilla

-			attribute = root.getAttribute("status_whiteboard"); //$NON-NLS-1$

-			if (attribute != null) {

-				attributes.add(attribute);

-			}

-		}

-

-		for (TaskAttribute attribute : root.getAttributes().values()) {

-			if (Boolean.parseBoolean(attribute.getMetaData().getValue(META_INDEXED_AS_CONTENT))) {

-				attributes.add(attribute);

-			}

-		}

-

-		return attributes;

-	}

-

-	private void addIndexedAttributes(Document document, ITask task) {

-		addIndexedAttribute(document, IndexField.TASK_KEY, task.getTaskKey());

-		addIndexedAttribute(document, IndexField.REPOSITORY_URL, task.getRepositoryUrl());

-		addIndexedAttribute(document, IndexField.SUMMARY, task.getSummary());

-		addIndexedAttribute(document, IndexField.CONTENT, task.getSummary());

-		addIndexedAttribute(document, IndexField.CONTENT, ((AbstractTask) task).getNotes());

-		addIndexedDateAttributes(document, task);

-	}

-

-	private void addIndexedDateAttributes(Document document, ITask task) {

-		addIndexedAttribute(document, IndexField.COMPLETION_DATE, task.getCompletionDate());

-		addIndexedAttribute(document, IndexField.CREATION_DATE, task.getCreationDate());

-		addIndexedAttribute(document, IndexField.DUE_DATE, task.getDueDate());

-		addIndexedAttribute(document, IndexField.MODIFICATION_DATE, task.getModificationDate());

-	}

-

-	private void addIndexedAttribute(Document document, IndexField indexField, TaskAttribute attribute) {

-		if (attribute == null) {

-			return;

-		}

-		// if (indexField == IndexField.ASSIGNEE) {

-		// System.out.println(indexField + "=" + attribute.getValue());

-		// }

-		List<String> values = attribute.getValues();

-		for (String value : values) {

-			if (value.length() != 0) {

-				addIndexedAttribute(document, indexField, value);

-			}

-		}

-	}

-

-	private void addIndexedAttribute(Document document, IndexField indexField, String value) {

-		if (value == null) {

-			return;

-		}

-		Field field = document.getField(indexField.fieldName());

-		if (field == null) {

-			field = new Field(indexField.fieldName(), value, Store.YES, org.apache.lucene.document.Field.Index.ANALYZED);

-			document.add(field);

-		} else {

-			String existingValue = field.stringValue();

-			if (indexField != IndexField.PERSON || !existingValue.contains(value)) {

-				field.setValue(existingValue + " " + value); //$NON-NLS-1$

-			}

-		}

-	}

-

-	private void addIndexedAttribute(Document document, IndexField indexField, Date date) {

-		if (date == null) {

-			return;

-		}

-		// FIXME: date tools converts dates to GMT, and we don't really want that.  So

-		// move the date by the GMT offset if there is any

-

-		String value = DateTools.dateToString(date, Resolution.HOUR);

-		Field field = document.getField(indexField.fieldName());

-		if (field == null) {

-			field = new Field(indexField.fieldName(), value, Store.YES, org.apache.lucene.document.Field.Index.ANALYZED);

-			document.add(field);

-		} else {

-			field.setValue(value);

-		}

-	}

-

-	private class MaintainIndexJob extends Job {

-

-		public MaintainIndexJob() {

-			super(Messages.TaskListIndex_indexerJob);

-			setUser(false);

-			setSystem(false); // true?

-			setPriority(Job.LONG);

-		}

-

-		@Override

-		public IStatus run(IProgressMonitor m) {

-			final int WORK_PER_SEGMENT = 1000;

-			SubMonitor monitor = SubMonitor.convert(m, 3 * WORK_PER_SEGMENT);

-			try {

-				try {

-					if (monitor.isCanceled()) {

-						return Status.CANCEL_STATUS;

-					}

-					if (!rebuildIndex) {

-						try {

-							IndexReader reader = IndexReader.open(directory, false);

-							reader.close();

-						} catch (CorruptIndexException e) {

-							rebuildIndex = true;

-						}

-					}

-

-					if (rebuildIndex) {

-						synchronized (reindexQueue) {

-							reindexQueue.clear();

-						}

-

-						SubMonitor reindexMonitor = monitor.newChild(WORK_PER_SEGMENT);

-

-						final IndexWriter writer = new IndexWriter(directory, new TaskAnalyzer(), true,

-								IndexWriter.MaxFieldLength.UNLIMITED);

-						try {

-

-							final List<ITask> allTasks = new ArrayList<ITask>(5000);

-

-							taskList.run(new ITaskListRunnable() {

-								public void execute(IProgressMonitor monitor) throws CoreException {

-									allTasks.addAll(taskList.getAllTasks());

-								}

-							}, monitor.newChild(1));

-

-							int reindexErrorCount = 0;

-

-							reindexMonitor.beginTask(Messages.TaskListIndex_task_rebuildingIndex, allTasks.size());

-							for (ITask task : allTasks) {

-								try {

-									TaskData taskData = dataManager.getTaskData(task);

-									add(writer, task, taskData);

-

-									reindexMonitor.worked(1);

-								} catch (CoreException e) {

-									// an individual task data error should not prevent the index from updating

-									// but don't flood the log in the case of multiple errors

-									if (reindexErrorCount++ == 0) {

-										StatusHandler.log(e.getStatus());

-									}

-								} catch (IOException e) {

-									throw e;

-								}

-							}

-							synchronized (TaskListIndex.this) {

-								rebuildIndex = false;

-							}

-						} finally {

-							writer.close();

-							reindexMonitor.done();

-						}

-					} else {

-						monitor.worked(WORK_PER_SEGMENT);

-					}

-					for (;;) {

-

-						synchronized (reindexQueue) {

-							if (reindexQueue.isEmpty()) {

-								break;

-							}

-						}

-

-						Map<ITask, TaskData> queue = new HashMap<ITask, TaskData>();

-

-						IndexReader reader = IndexReader.open(directory, false);

-						try {

-							synchronized (reindexQueue) {

-								queue.putAll(reindexQueue);

-								for (ITask task : queue.keySet()) {

-									reindexQueue.remove(task);

-								}

-							}

-							Iterator<Entry<ITask, TaskData>> it = queue.entrySet().iterator();

-							while (it.hasNext()) {

-								Entry<ITask, TaskData> entry = it.next();

-

-								reader.deleteDocuments(new Term(IndexField.IDENTIFIER.fieldName(), entry.getKey()

-										.getHandleIdentifier()));

-

-							}

-						} finally {

-							reader.close();

-						}

-						monitor.worked(WORK_PER_SEGMENT);

-

-						IndexWriter writer = new IndexWriter(directory, new TaskAnalyzer(), false,

-								IndexWriter.MaxFieldLength.UNLIMITED);

-						try {

-							for (Entry<ITask, TaskData> entry : queue.entrySet()) {

-								ITask task = entry.getKey();

-								TaskData taskData = entry.getValue();

-

-								add(writer, task, taskData);

-							}

-						} finally {

-							writer.close();

-						}

-						monitor.worked(WORK_PER_SEGMENT);

-					}

-					Lock writeLock = indexReaderLock.writeLock();

-					writeLock.lock();

-					try {

-						synchronized (TaskListIndex.this) {

-							if (indexReader != null) {

-								indexReader.close();

-								indexReader = null;

-							}

-						}

-					} finally {

-						writeLock.unlock();

-					}

-				} catch (CoreException e) {

-					throw e;

-				} catch (Throwable e) {

-					throw new CoreException(new Status(IStatus.ERROR, TasksIndexCore.BUNDLE_ID,

-							"Unexpected exception: " + e.getMessage(), e)); //$NON-NLS-1$

-				}

-			} catch (CoreException e) {

-				MultiStatus logStatus = new MultiStatus(TasksIndexCore.BUNDLE_ID, 0,

-						"Failed to update task list index", e); //$NON-NLS-1$

-				logStatus.add(e.getStatus());

-				StatusHandler.log(logStatus);

-			} finally {

-				monitor.done();

-			}

-			return Status.OK_STATUS;

-		}

-

-		/**

-		 * @param writer

-		 * @param task

-		 *            the task

-		 * @param taskData

-		 *            may be null for local tasks

-		 * @throws CorruptIndexException

-		 * @throws IOException

-		 */

-		private void add(IndexWriter writer, ITask task, TaskData taskData) throws CorruptIndexException, IOException {

-

-			Document document = new Document();

-

-			document.add(new Field(IndexField.IDENTIFIER.fieldName(), task.getHandleIdentifier(), Store.YES,

-					org.apache.lucene.document.Field.Index.ANALYZED));

-			if (taskData == null) {

-				if ("local".equals(((AbstractTask) task).getConnectorKind())) { //$NON-NLS-1$

-					addIndexedAttributes(document, task);

-				} else {

-					return;

-				}

-			} else {

-				addIndexedAttributes(document, task, taskData.getRoot());

-			}

-			writer.addDocument(document);

-		}

-

-	}

-

-	/**

-	 * Computes a query element for a field that must lie in a specified date range.

-	 * 

-	 * @param field

-	 *            the field

-	 * @param lowerBoundInclusive

-	 *            the date lower bound that the field value must match, inclusive

-	 * @param upperBoundInclusive

-	 *            the date upper bound that the field value must match, inclusive

-	 * @return

-	 */

-	public String computeQueryFieldDateRange(IndexField field, Date lowerBoundInclusive, Date upperBoundInclusive) {

-		return field.fieldName()

-				+ ":[" + DateTools.dateToString(lowerBoundInclusive, Resolution.DAY) + " TO " + DateTools.dateToString(upperBoundInclusive, Resolution.DAY) + "]"; //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$

-	}

-

-	/**

-	 * escapes special characters in the given literal value so that they are not interpreted as special characters in a

-	 * query

-	 * 

-	 * @param value

-	 *            the value to escape

-	 * @return a representation of the value with characters escaped

-	 */

-	public String escapeFieldValue(String value) {

-		// see http://lucene.apache.org/java/2_9_1/queryparsersyntax.html#Escaping%20Special%20Characters

-		String escaped = value.replaceAll("([\\+\\-\\!\\(\\)\\{\\}\\[\\]^\"~\\*\\?:\\\\]|&&|\\|\\|)", "\\\\$1"); //$NON-NLS-1$ //$NON-NLS-2$

-		return escaped;

-	}

-}

+/*******************************************************************************
+ * Copyright (c) 2011 Tasktop Technologies.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Tasktop Technologies - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylyn.internal.tasks.index.core;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReadWriteLock;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
+import java.util.logging.Logger;
+
+import org.apache.lucene.document.DateTools;
+import org.apache.lucene.document.DateTools.Resolution;
+import org.apache.lucene.document.Document;
+import org.apache.lucene.document.Field;
+import org.apache.lucene.document.Field.Store;
+import org.apache.lucene.index.CorruptIndexException;
+import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexWriter;
+import org.apache.lucene.index.Term;
+import org.apache.lucene.queryParser.ParseException;
+import org.apache.lucene.queryParser.QueryParser;
+import org.apache.lucene.search.BooleanClause;
+import org.apache.lucene.search.BooleanClause.Occur;
+import org.apache.lucene.search.BooleanQuery;
+import org.apache.lucene.search.IndexSearcher;
+import org.apache.lucene.search.PrefixQuery;
+import org.apache.lucene.search.Query;
+import org.apache.lucene.search.ScoreDoc;
+import org.apache.lucene.search.TermQuery;
+import org.apache.lucene.search.TopDocs;
+import org.apache.lucene.store.Directory;
+import org.apache.lucene.store.NIOFSDirectory;
+import org.apache.lucene.util.Version;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.MultiStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.SubMonitor;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.mylyn.commons.core.StatusHandler;
+import org.eclipse.mylyn.internal.tasks.core.AbstractTask;
+import org.eclipse.mylyn.internal.tasks.core.ITaskListChangeListener;
+import org.eclipse.mylyn.internal.tasks.core.ITaskListRunnable;
+import org.eclipse.mylyn.internal.tasks.core.TaskContainerDelta;
+import org.eclipse.mylyn.internal.tasks.core.TaskList;
+import org.eclipse.mylyn.internal.tasks.core.data.ITaskDataManagerListener;
+import org.eclipse.mylyn.internal.tasks.core.data.TaskDataManager;
+import org.eclipse.mylyn.internal.tasks.core.data.TaskDataManagerEvent;
+import org.eclipse.mylyn.tasks.core.IRepositoryElement;
+import org.eclipse.mylyn.tasks.core.IRepositoryPerson;
+import org.eclipse.mylyn.tasks.core.ITask;
+import org.eclipse.mylyn.tasks.core.data.TaskAttribute;
+import org.eclipse.mylyn.tasks.core.data.TaskCommentMapper;
+import org.eclipse.mylyn.tasks.core.data.TaskData;
+
+/**
+ * An index on a task list.
+ * 
+ * @author David Green
+ */
+public class TaskListIndex implements ITaskDataManagerListener, ITaskListChangeListener {
+
+	public abstract static class TaskCollector {
+
+		public abstract void collect(ITask task);
+
+	}
+
+	private static final Object COMMAND_RESET_INDEX = "index:reset"; //$NON-NLS-1$
+
+	/**
+	 * Task attribute meta-data key that should be set to "true" to have attribute value indexed as part of the task
+	 * {@link IndexField#CONTENT}. Provides a way for connectors to specify non-standard attributes as indexable. By
+	 * default, {@link TaskAttribute#SUMMARY summary} and {@link TaskAttribute#DESCRIPTION description} are indexed.
+	 */
+	public static final String META_INDEXED_AS_CONTENT = "index-content"; //$NON-NLS-1$
+
+	public static enum IndexField {
+		IDENTIFIER(false, null, false), //
+		TASK_KEY(false, null, false), //
+		REPOSITORY_URL(false, null, false), //
+		SUMMARY(true, null, false), //
+		CONTENT(true, null, false), //
+		ASSIGNEE(true, TaskAttribute.USER_ASSIGNED, false), //
+		REPORTER(true, TaskAttribute.USER_REPORTER, false), //
+		PERSON(true, null, false), //
+		COMPONENT(true, TaskAttribute.COMPONENT, false), //
+		COMPLETION_DATE(true, null, true), //
+		CREATION_DATE(true, null, true), //
+		DUE_DATE(true, null, true), //
+		MODIFICATION_DATE(true, null, true), //
+		DESCRIPTION(true, TaskAttribute.DESCRIPTION, false), //
+		KEYWORDS(true, TaskAttribute.KEYWORDS, false), //
+		PRODUCT(true, TaskAttribute.PRODUCT, false), //
+		RESOLUTION(true, TaskAttribute.RESOLUTION, false), //
+		SEVERITY(true, TaskAttribute.SEVERITY, false), //
+		STATUS(true, TaskAttribute.STATUS, false);
+
+		private final boolean userVisible;
+
+		private final String attributeId;
+
+		private final boolean dateTime;
+
+		private IndexField(boolean userVisible, String attributeId, boolean dateTime) {
+			this.userVisible = userVisible;
+			this.attributeId = attributeId;
+			this.dateTime = dateTime;
+		}
+
+		public String fieldName() {
+			return name().toLowerCase();
+		}
+
+		/**
+		 * get the task attribute id, or null if this field has special handling
+		 */
+		public String getAttributeId() {
+			return attributeId;
+		}
+
+		/**
+		 * indicate if the field should be exposed in the UI
+		 */
+		public boolean isUserVisible() {
+			return userVisible;
+		}
+
+		/**
+		 * indicate if the field is a date/time field
+		 */
+		public boolean isDateTime() {
+			return dateTime;
+		}
+
+		public static IndexField fromFieldName(String fieldName) {
+			try {
+				return IndexField.valueOf(fieldName.toUpperCase());
+			} catch (IllegalArgumentException e) {
+				return null;
+			}
+		}
+
+		public boolean isPersonField() {
+			return this == PERSON || this == REPORTER || this == ASSIGNEE;
+		}
+	}
+
+	private static enum MaintainIndexType {
+		STARTUP, REINDEX
+	}
+
+	private Directory directory;
+
+	private MaintainIndexJob maintainIndexJob;
+
+	private final Map<ITask, TaskData> reindexQueue = new HashMap<ITask, TaskData>();
+
+	private IndexReader indexReader;
+
+	private boolean rebuildIndex = false;
+
+	private String lastPatternString;
+
+	private Set<String> lastResults;
+
+	private IndexField defaultField = IndexField.SUMMARY;
+
+	private final TaskList taskList;
+
+	private final TaskDataManager dataManager;
+
+	private long startupDelay = 6000L;
+
+	private long reindexDelay = 3000L;
+
+	private int maxMatchSearchHits = 1500;
+
+	private final ReadWriteLock indexReaderLock = new ReentrantReadWriteLock(true);
+
+	private TaskListIndex(TaskList taskList, TaskDataManager dataManager) {
+		if (taskList == null) {
+			throw new IllegalArgumentException();
+		}
+		if (dataManager == null) {
+			throw new IllegalArgumentException();
+		}
+		this.taskList = taskList;
+		this.dataManager = dataManager;
+	}
+
+	public TaskListIndex(TaskList taskList, TaskDataManager dataManager, File indexLocation) {
+		this(taskList, dataManager, indexLocation, 6000L);
+	}
+
+	public TaskListIndex(TaskList taskList, TaskDataManager dataManager, File indexLocation, long startupDelay) {
+		this(taskList, dataManager);
+		if (startupDelay < 0L || startupDelay > (1000L * 60)) {
+			throw new IllegalArgumentException();
+		}
+		if (indexLocation == null) {
+			throw new IllegalArgumentException();
+		}
+		this.startupDelay = startupDelay;
+		if (!indexLocation.exists()) {
+			rebuildIndex = true;
+			if (!indexLocation.mkdirs()) {
+				StatusHandler.log(new Status(IStatus.ERROR, TasksIndexCore.BUNDLE_ID,
+						"Cannot create task list index folder: " + indexLocation)); //$NON-NLS-1$
+			}
+		}
+		if (indexLocation.exists() && indexLocation.isDirectory()) {
+			try {
+				Logger.getLogger(TaskListIndex.class.getName()).fine("task list index: " + indexLocation); //$NON-NLS-1$
+
+				directory = new NIOFSDirectory(indexLocation);
+			} catch (IOException e) {
+				StatusHandler.log(new Status(IStatus.ERROR, TasksIndexCore.BUNDLE_ID,
+						"Cannot create task list index", e)); //$NON-NLS-1$
+			}
+		}
+		initialize();
+	}
+
+	public TaskListIndex(TaskList taskList, TaskDataManager dataManager, Directory directory) {
+		this(taskList, dataManager);
+		this.directory = directory;
+		initialize();
+	}
+
+	public long getReindexDelay() {
+		return reindexDelay;
+	}
+
+	public void setReindexDelay(long reindexDelay) {
+		this.reindexDelay = reindexDelay;
+	}
+
+	public IndexField getDefaultField() {
+		return defaultField;
+	}
+
+	public void setDefaultField(IndexField defaultField) {
+		this.defaultField = defaultField;
+		synchronized (this) {
+			lastResults = null;
+		}
+	}
+
+	public int getMaxMatchSearchHits() {
+		return maxMatchSearchHits;
+	}
+
+	public void setMaxMatchSearchHits(int maxMatchSearchHits) {
+		this.maxMatchSearchHits = maxMatchSearchHits;
+	}
+
+	private void initialize() {
+		if (!rebuildIndex) {
+			IndexReader indexReader = null;
+			try {
+				indexReader = getIndexReader();
+			} catch (Exception e) {
+				// ignore, this can happen if the index is corrupt
+			}
+			if (indexReader == null) {
+				rebuildIndex = true;
+			}
+		}
+		maintainIndexJob = new MaintainIndexJob();
+		dataManager.addListener(this);
+		taskList.addChangeListener(this);
+
+		scheduleIndexMaintenance(MaintainIndexType.STARTUP);
+	}
+
+	private void scheduleIndexMaintenance(MaintainIndexType type) {
+		long delay = 0L;
+		switch (type) {
+		case STARTUP:
+			delay = startupDelay;
+			break;
+		case REINDEX:
+			delay = reindexDelay;
+		}
+
+		if (delay == 0L) {
+			// primarily for testing purposes
+
+			maintainIndexJob.cancel();
+			try {
+				maintainIndexJob.join();
+			} catch (InterruptedException e) {
+				// ignore
+			}
+			maintainIndexJob.run(new NullProgressMonitor());
+		} else {
+			maintainIndexJob.schedule(delay);
+		}
+	}
+
+	public boolean matches(ITask task, String patternString) {
+		if (patternString.equals(COMMAND_RESET_INDEX)) {
+			reindex();
+		}
+		Lock readLock = indexReaderLock.readLock();
+		readLock.lock();
+		try {
+
+			IndexReader indexReader = getIndexReader();
+			if (indexReader != null) {
+				Set<String> hits;
+
+				if (lastResults == null || (lastPatternString == null || !lastPatternString.equals(patternString))) {
+					this.lastPatternString = patternString;
+
+					long startTime = System.currentTimeMillis();
+
+					hits = new HashSet<String>();
+
+					IndexSearcher indexSearcher = new IndexSearcher(indexReader);
+					try {
+						Query query = computeQuery(patternString);
+						TopDocs results = indexSearcher.search(query, maxMatchSearchHits);
+						for (ScoreDoc scoreDoc : results.scoreDocs) {
+							Document document = indexReader.document(scoreDoc.doc);
+							hits.add(document.get(IndexField.IDENTIFIER.fieldName()));
+						}
+					} catch (IOException e) {
+						StatusHandler.fail(new Status(IStatus.ERROR, TasksIndexCore.BUNDLE_ID,
+								"Unexpected failure within task list index", e)); //$NON-NLS-1$
+					} finally {
+						try {
+							indexSearcher.close();
+						} catch (IOException e) {
+							// ignore
+						}
+					}
+
+					Logger.getLogger(TaskListIndex.class.getName()).fine(
+							"New query in " + (System.currentTimeMillis() - startTime) + "ms"); //$NON-NLS-1$ //$NON-NLS-2$
+				} else {
+					hits = lastResults;
+				}
+				synchronized (this) {
+					if (this.indexReader == indexReader) {
+						this.lastPatternString = patternString;
+						this.lastResults = hits;
+					}
+				}
+				String taskIdentifier = task.getHandleIdentifier();
+				return hits != null && hits.contains(taskIdentifier);
+			}
+
+		} finally {
+			readLock.unlock();
+		}
+		return false;
+	}
+
+	public void reindex() {
+		rebuildIndex = true;
+		scheduleIndexMaintenance(MaintainIndexType.REINDEX);
+	}
+
+	/**
+	 * call to wait until index maintenance has completed
+	 * 
+	 * @throws InterruptedException
+	 */
+	public void waitUntilIdle() throws InterruptedException {
+		if (!Platform.isRunning() && reindexDelay != 0L) {
+			// job join() behaviour is not the same when platform is not running
+			Logger.getLogger(TaskListIndex.class.getName()).warning(
+					"Index job joining may not work properly when Eclipse platform is not running"); //$NON-NLS-1$
+		}
+		maintainIndexJob.join();
+	}
+
+	public void find(String patternString, TaskCollector collector, int resultsLimit) {
+
+		Lock readLock = indexReaderLock.readLock();
+		readLock.lock();
+		try {
+			IndexReader indexReader = getIndexReader();
+			if (indexReader != null) {
+				IndexSearcher indexSearcher = new IndexSearcher(indexReader);
+				try {
+					Query query = computeQuery(patternString);
+					TopDocs results = indexSearcher.search(query, resultsLimit);
+					for (ScoreDoc scoreDoc : results.scoreDocs) {
+						Document document = indexReader.document(scoreDoc.doc);
+						String taskIdentifier = document.get(IndexField.IDENTIFIER.fieldName());
+						AbstractTask task = taskList.getTask(taskIdentifier);
+						if (task != null) {
+							collector.collect(task);
+						}
+					}
+				} catch (IOException e) {
+					StatusHandler.fail(new Status(IStatus.ERROR, TasksIndexCore.BUNDLE_ID,
+							"Unexpected failure within task list index", e)); //$NON-NLS-1$
+				} finally {
+					try {
+						indexSearcher.close();
+					} catch (IOException e) {
+						e.printStackTrace();
+					}
+				}
+			}
+		} finally {
+			readLock.unlock();
+		}
+	}
+
+	private Query computeQuery(String patternString) {
+		String upperPatternString = patternString.toUpperCase();
+
+		boolean hasBooleanSpecifiers = upperPatternString.contains(" OR ") || upperPatternString.contains(" AND ") //$NON-NLS-1$ //$NON-NLS-2$
+				|| upperPatternString.contains(" NOT "); //$NON-NLS-1$
+
+		if (patternString.indexOf(':') == -1 && !hasBooleanSpecifiers && defaultField == IndexField.SUMMARY
+				&& patternString.indexOf('"') == -1) {
+			return new PrefixQuery(new Term(defaultField.fieldName(), patternString));
+		}
+		QueryParser qp = new QueryParser(Version.LUCENE_CURRENT, defaultField.fieldName(), new TaskAnalyzer());
+		Query q;
+		try {
+			q = qp.parse(patternString);
+		} catch (ParseException e) {
+			return new PrefixQuery(new Term(defaultField.fieldName(), patternString));
+		}
+
+		// relax term clauses to be prefix clauses so that we get results close
+		// to what we're expecting
+		// from previous task list search
+		if (q instanceof BooleanQuery) {
+			BooleanQuery query = (BooleanQuery) q;
+			for (BooleanClause clause : query.getClauses()) {
+				if (clause.getQuery() instanceof TermQuery) {
+					TermQuery termQuery = (TermQuery) clause.getQuery();
+					clause.setQuery(new PrefixQuery(termQuery.getTerm()));
+				}
+				if (!hasBooleanSpecifiers) {
+					clause.setOccur(Occur.MUST);
+				}
+			}
+		} else if (q instanceof TermQuery) {
+			return new PrefixQuery(((TermQuery) q).getTerm());
+		}
+		return q;
+	}
+
+	public void close() {
+		dataManager.removeListener(this);
+		taskList.removeChangeListener(this);
+
+		maintainIndexJob.cancel();
+		try {
+			maintainIndexJob.join();
+		} catch (InterruptedException e) {
+			// ignore
+		}
+
+		Lock writeLock = indexReaderLock.writeLock();
+		writeLock.lock();
+		try {
+			synchronized (this) {
+				if (indexReader != null) {
+					try {
+						indexReader.close();
+					} catch (IOException e) {
+						e.printStackTrace();
+					}
+					indexReader = null;
+				}
+			}
+			try {
+				directory.close();
+			} catch (IOException e) {
+				e.printStackTrace();
+			}
+		} finally {
+			writeLock.unlock();
+		}
+	}
+
+	private IndexReader getIndexReader() {
+		try {
+			synchronized (this) {
+				if (indexReader == null) {
+					indexReader = IndexReader.open(directory, true);
+					lastResults = null;
+				}
+				return indexReader;
+			}
+		} catch (CorruptIndexException e) {
+			rebuildIndex = true;
+			if (maintainIndexJob != null) {
+				scheduleIndexMaintenance(MaintainIndexType.REINDEX);
+			}
+		} catch (FileNotFoundException e) {
+			rebuildIndex = true;
+			// expected if the index doesn't exist
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+		return null;
+	}
+
+	public void taskDataUpdated(TaskDataManagerEvent event) {
+		reindex(event.getTask(), event.getTaskData());
+	}
+
+	public void editsDiscarded(TaskDataManagerEvent event) {
+		reindex(event.getTask(), event.getTaskData());
+	}
+
+	public void containersChanged(Set<TaskContainerDelta> containers) {
+		for (TaskContainerDelta delta : containers) {
+			switch (delta.getKind()) {
+			case ADDED:
+			case REMOVED:
+			case CONTENT:
+				IRepositoryElement element = delta.getElement();
+				if (element instanceof ITask) {
+					ITask task = (ITask) element;
+					if ("local".equals(((AbstractTask) task).getConnectorKind())) { //$NON-NLS-1$
+						reindex(task, null);
+					}
+				}
+			}
+		}
+	}
+
+	private void reindex(ITask task, TaskData taskData) {
+		if (task == null) {
+			// this can happen when edits are discarded
+			return;
+		}
+		synchronized (reindexQueue) {
+			reindexQueue.put(task, taskData);
+		}
+		scheduleIndexMaintenance(MaintainIndexType.REINDEX);
+	}
+
+	private void addIndexedAttributes(Document document, ITask task, TaskAttribute root) {
+		addIndexedAttribute(document, IndexField.TASK_KEY, task.getTaskKey());
+		addIndexedAttribute(document, IndexField.REPOSITORY_URL, task.getRepositoryUrl());
+		addIndexedAttribute(document, IndexField.SUMMARY, root.getMappedAttribute(TaskAttribute.SUMMARY));
+
+		for (TaskAttribute contentAttribute : computeContentAttributes(root)) {
+			addIndexedAttribute(document, IndexField.CONTENT, contentAttribute);
+		}
+
+		addIndexedDateAttributes(document, task);
+
+		List<TaskAttribute> commentAttributes = root.getTaskData()
+				.getAttributeMapper()
+				.getAttributesByType(root.getTaskData(), TaskAttribute.TYPE_COMMENT);
+		for (TaskAttribute commentAttribute : commentAttributes) {
+			TaskCommentMapper commentMapper = TaskCommentMapper.createFrom(commentAttribute);
+			String text = commentMapper.getText();
+			if (text.length() != 0) {
+				addIndexedAttribute(document, IndexField.CONTENT, text);
+			}
+			IRepositoryPerson author = commentMapper.getAuthor();
+			if (author != null) {
+				addIndexedAttribute(document, IndexField.PERSON, author.getPersonId());
+			}
+		}
+
+		List<TaskAttribute> personAttributes = root.getTaskData()
+				.getAttributeMapper()
+				.getAttributesByType(root.getTaskData(), TaskAttribute.TYPE_PERSON);
+		for (TaskAttribute personAttribute : personAttributes) {
+			addIndexedAttribute(document, IndexField.PERSON, personAttribute);
+		}
+
+		for (IndexField field : IndexField.values()) {
+			if (field.getAttributeId() != null) {
+				addIndexedAttribute(document, field, root.getMappedAttribute(field.getAttributeId()));
+			}
+		}
+	}
+
+	/**
+	 * compute attributes that should be indexed as {@link IndexField#CONTENT}
+	 */
+	private Collection<TaskAttribute> computeContentAttributes(TaskAttribute root) {
+		Set<TaskAttribute> attributes = new LinkedHashSet<TaskAttribute>();
+
+		// add default content attributes
+		{
+			TaskAttribute attribute = root.getMappedAttribute(TaskAttribute.SUMMARY);
+			if (attribute != null) {
+				attributes.add(attribute);
+			}
+			attribute = root.getMappedAttribute(TaskAttribute.DESCRIPTION);
+			if (attribute != null) {
+				attributes.add(attribute);
+			}
+			// bugzilla
+			attribute = root.getAttribute("status_whiteboard"); //$NON-NLS-1$
+			if (attribute != null) {
+				attributes.add(attribute);
+			}
+		}
+
+		for (TaskAttribute attribute : root.getAttributes().values()) {
+			if (Boolean.parseBoolean(attribute.getMetaData().getValue(META_INDEXED_AS_CONTENT))) {
+				attributes.add(attribute);
+			}
+		}
+
+		return attributes;
+	}
+
+	private void addIndexedAttributes(Document document, ITask task) {
+		addIndexedAttribute(document, IndexField.TASK_KEY, task.getTaskKey());
+		addIndexedAttribute(document, IndexField.REPOSITORY_URL, task.getRepositoryUrl());
+		addIndexedAttribute(document, IndexField.SUMMARY, task.getSummary());
+		addIndexedAttribute(document, IndexField.CONTENT, task.getSummary());
+		addIndexedAttribute(document, IndexField.CONTENT, ((AbstractTask) task).getNotes());
+		addIndexedDateAttributes(document, task);
+	}
+
+	private void addIndexedDateAttributes(Document document, ITask task) {
+		addIndexedAttribute(document, IndexField.COMPLETION_DATE, task.getCompletionDate());
+		addIndexedAttribute(document, IndexField.CREATION_DATE, task.getCreationDate());
+		addIndexedAttribute(document, IndexField.DUE_DATE, task.getDueDate());
+		addIndexedAttribute(document, IndexField.MODIFICATION_DATE, task.getModificationDate());
+	}
+
+	private void addIndexedAttribute(Document document, IndexField indexField, TaskAttribute attribute) {
+		if (attribute == null) {
+			return;
+		}
+		// if (indexField == IndexField.ASSIGNEE) {
+		// System.out.println(indexField + "=" + attribute.getValue());
+		// }
+		List<String> values = attribute.getValues();
+		for (String value : values) {
+			if (value.length() != 0) {
+				addIndexedAttribute(document, indexField, value);
+			}
+		}
+	}
+
+	private void addIndexedAttribute(Document document, IndexField indexField, String value) {
+		if (value == null) {
+			return;
+		}
+		Field field = document.getField(indexField.fieldName());
+		if (field == null) {
+			field = new Field(indexField.fieldName(), value, Store.YES, org.apache.lucene.document.Field.Index.ANALYZED);
+			document.add(field);
+		} else {
+			String existingValue = field.stringValue();
+			if (indexField != IndexField.PERSON || !existingValue.contains(value)) {
+				field.setValue(existingValue + " " + value); //$NON-NLS-1$
+			}
+		}
+	}
+
+	private void addIndexedAttribute(Document document, IndexField indexField, Date date) {
+		if (date == null) {
+			return;
+		}
+		// FIXME: date tools converts dates to GMT, and we don't really want that.  So
+		// move the date by the GMT offset if there is any
+
+		String value = DateTools.dateToString(date, Resolution.HOUR);
+		Field field = document.getField(indexField.fieldName());
+		if (field == null) {
+			field = new Field(indexField.fieldName(), value, Store.YES, org.apache.lucene.document.Field.Index.ANALYZED);
+			document.add(field);
+		} else {
+			field.setValue(value);
+		}
+	}
+
+	private class MaintainIndexJob extends Job {
+
+		public MaintainIndexJob() {
+			super(Messages.TaskListIndex_indexerJob);
+			setUser(false);
+			setSystem(false); // true?
+			setPriority(Job.LONG);
+		}
+
+		@Override
+		public IStatus run(IProgressMonitor m) {
+			final int WORK_PER_SEGMENT = 1000;
+			SubMonitor monitor = SubMonitor.convert(m, 3 * WORK_PER_SEGMENT);
+			try {
+				try {
+					if (monitor.isCanceled()) {
+						return Status.CANCEL_STATUS;
+					}
+					if (!rebuildIndex) {
+						try {
+							IndexReader reader = IndexReader.open(directory, false);
+							reader.close();
+						} catch (CorruptIndexException e) {
+							rebuildIndex = true;
+						}
+					}
+
+					if (rebuildIndex) {
+						synchronized (reindexQueue) {
+							reindexQueue.clear();
+						}
+
+						SubMonitor reindexMonitor = monitor.newChild(WORK_PER_SEGMENT);
+
+						final IndexWriter writer = new IndexWriter(directory, new TaskAnalyzer(), true,
+								IndexWriter.MaxFieldLength.UNLIMITED);
+						try {
+
+							final List<ITask> allTasks = new ArrayList<ITask>(5000);
+
+							taskList.run(new ITaskListRunnable() {
+								public void execute(IProgressMonitor monitor) throws CoreException {
+									allTasks.addAll(taskList.getAllTasks());
+								}
+							}, monitor.newChild(1));
+
+							int reindexErrorCount = 0;
+
+							reindexMonitor.beginTask(Messages.TaskListIndex_task_rebuildingIndex, allTasks.size());
+							for (ITask task : allTasks) {
+								try {
+									TaskData taskData = dataManager.getTaskData(task);
+									add(writer, task, taskData);
+
+									reindexMonitor.worked(1);
+								} catch (CoreException e) {
+									// an individual task data error should not prevent the index from updating
+									// but don't flood the log in the case of multiple errors
+									if (reindexErrorCount++ == 0) {
+										StatusHandler.log(e.getStatus());
+									}
+								} catch (IOException e) {
+									throw e;
+								}
+							}
+							synchronized (TaskListIndex.this) {
+								rebuildIndex = false;
+							}
+						} finally {
+							writer.close();
+							reindexMonitor.done();
+						}
+					} else {
+						monitor.worked(WORK_PER_SEGMENT);
+					}
+					for (;;) {
+
+						synchronized (reindexQueue) {
+							if (reindexQueue.isEmpty()) {
+								break;
+							}
+						}
+
+						Map<ITask, TaskData> queue = new HashMap<ITask, TaskData>();
+
+						IndexReader reader = IndexReader.open(directory, false);
+						try {
+							synchronized (reindexQueue) {
+								queue.putAll(reindexQueue);
+								for (ITask task : queue.keySet()) {
+									reindexQueue.remove(task);
+								}
+							}
+							Iterator<Entry<ITask, TaskData>> it = queue.entrySet().iterator();
+							while (it.hasNext()) {
+								Entry<ITask, TaskData> entry = it.next();
+
+								reader.deleteDocuments(new Term(IndexField.IDENTIFIER.fieldName(), entry.getKey()
+										.getHandleIdentifier()));
+
+							}
+						} finally {
+							reader.close();
+						}
+						monitor.worked(WORK_PER_SEGMENT);
+
+						IndexWriter writer = new IndexWriter(directory, new TaskAnalyzer(), false,
+								IndexWriter.MaxFieldLength.UNLIMITED);
+						try {
+							for (Entry<ITask, TaskData> entry : queue.entrySet()) {
+								ITask task = entry.getKey();
+								TaskData taskData = entry.getValue();
+
+								add(writer, task, taskData);
+							}
+						} finally {
+							writer.close();
+						}
+						monitor.worked(WORK_PER_SEGMENT);
+					}
+					Lock writeLock = indexReaderLock.writeLock();
+					writeLock.lock();
+					try {
+						synchronized (TaskListIndex.this) {
+							if (indexReader != null) {
+								indexReader.close();
+								indexReader = null;
+							}
+						}
+					} finally {
+						writeLock.unlock();
+					}
+				} catch (CoreException e) {
+					throw e;
+				} catch (Throwable e) {
+					throw new CoreException(new Status(IStatus.ERROR, TasksIndexCore.BUNDLE_ID,
+							"Unexpected exception: " + e.getMessage(), e)); //$NON-NLS-1$
+				}
+			} catch (CoreException e) {
+				MultiStatus logStatus = new MultiStatus(TasksIndexCore.BUNDLE_ID, 0,
+						"Failed to update task list index", e); //$NON-NLS-1$
+				logStatus.add(e.getStatus());
+				StatusHandler.log(logStatus);
+			} finally {
+				monitor.done();
+			}
+			return Status.OK_STATUS;
+		}
+
+		/**
+		 * @param writer
+		 * @param task
+		 *            the task
+		 * @param taskData
+		 *            may be null for local tasks
+		 * @throws CorruptIndexException
+		 * @throws IOException
+		 */
+		private void add(IndexWriter writer, ITask task, TaskData taskData) throws CorruptIndexException, IOException {
+
+			Document document = new Document();
+
+			document.add(new Field(IndexField.IDENTIFIER.fieldName(), task.getHandleIdentifier(), Store.YES,
+					org.apache.lucene.document.Field.Index.ANALYZED));
+			if (taskData == null) {
+				if ("local".equals(((AbstractTask) task).getConnectorKind())) { //$NON-NLS-1$
+					addIndexedAttributes(document, task);
+				} else {
+					return;
+				}
+			} else {
+				addIndexedAttributes(document, task, taskData.getRoot());
+			}
+			writer.addDocument(document);
+		}
+
+	}
+
+	/**
+	 * Computes a query element for a field that must lie in a specified date range.
+	 * 
+	 * @param field
+	 *            the field
+	 * @param lowerBoundInclusive
+	 *            the date lower bound that the field value must match, inclusive
+	 * @param upperBoundInclusive
+	 *            the date upper bound that the field value must match, inclusive
+	 * @return
+	 */
+	public String computeQueryFieldDateRange(IndexField field, Date lowerBoundInclusive, Date upperBoundInclusive) {
+		return field.fieldName()
+				+ ":[" + DateTools.dateToString(lowerBoundInclusive, Resolution.DAY) + " TO " + DateTools.dateToString(upperBoundInclusive, Resolution.DAY) + "]"; //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
+	}
+
+	/**
+	 * escapes special characters in the given literal value so that they are not interpreted as special characters in a
+	 * query
+	 * 
+	 * @param value
+	 *            the value to escape
+	 * @return a representation of the value with characters escaped
+	 */
+	public String escapeFieldValue(String value) {
+		// see http://lucene.apache.org/java/2_9_1/queryparsersyntax.html#Escaping%20Special%20Characters
+		String escaped = value.replaceAll("([\\+\\-\\!\\(\\)\\{\\}\\[\\]^\"~\\*\\?:\\\\]|&&|\\|\\|)", "\\\\$1"); //$NON-NLS-1$ //$NON-NLS-2$
+		return escaped;
+	}
+}
diff --git a/org.eclipse.mylyn.tasks.index.core/src/org/eclipse/mylyn/internal/tasks/index/core/TasksIndexCore.java b/org.eclipse.mylyn.tasks.index.core/src/org/eclipse/mylyn/internal/tasks/index/core/TasksIndexCore.java
index ec3ccca..2558063 100644
--- a/org.eclipse.mylyn.tasks.index.core/src/org/eclipse/mylyn/internal/tasks/index/core/TasksIndexCore.java
+++ b/org.eclipse.mylyn.tasks.index.core/src/org/eclipse/mylyn/internal/tasks/index/core/TasksIndexCore.java
@@ -1,19 +1,19 @@
-/*******************************************************************************

- * Copyright (c) 2011 Tasktop Technologies.

- * All rights reserved. This program and the accompanying materials

- * are made available under the terms of the Eclipse Public License v1.0

- * which accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- *

- * Contributors:

- *     Tasktop Technologies - initial API and implementation

- *******************************************************************************/

-package org.eclipse.mylyn.internal.tasks.index.core;

-

-/**

- * @author David Green

- */

-public class TasksIndexCore {

-	public static final String BUNDLE_ID = "org.eclipse.mylyn.tasks.index.core"; //$NON-NLS-1$

-

-}

+/*******************************************************************************
+ * Copyright (c) 2011 Tasktop Technologies.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Tasktop Technologies - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.mylyn.internal.tasks.index.core;
+
+/**
+ * @author David Green
+ */
+public class TasksIndexCore {
+	public static final String BUNDLE_ID = "org.eclipse.mylyn.tasks.index.core"; //$NON-NLS-1$
+
+}
diff --git a/org.eclipse.mylyn.tasks.index.core/src/org/eclipse/mylyn/internal/tasks/index/core/messages.properties b/org.eclipse.mylyn.tasks.index.core/src/org/eclipse/mylyn/internal/tasks/index/core/messages.properties
index 4fb01a2..5354a09 100644
--- a/org.eclipse.mylyn.tasks.index.core/src/org/eclipse/mylyn/internal/tasks/index/core/messages.properties
+++ b/org.eclipse.mylyn.tasks.index.core/src/org/eclipse/mylyn/internal/tasks/index/core/messages.properties
@@ -1,12 +1,12 @@
-###############################################################################

-# Copyright (c) 2011 Tasktop Technologies and others.

-# All rights reserved. This program and the accompanying materials

-# are made available under the terms of the Eclipse Public License v1.0

-# which accompanies this distribution, and is available at

-# http://www.eclipse.org/legal/epl-v10.html

-#

-# Contributors:

-#      Tasktop Technologies - initial API and implementation

-###############################################################################

-TaskListIndex_indexerJob=Task List Indexer

-TaskListIndex_task_rebuildingIndex=Rebuilding Task List Index

+###############################################################################
+# Copyright (c) 2011 Tasktop Technologies and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#      Tasktop Technologies - initial API and implementation
+###############################################################################
+TaskListIndex_indexerJob=Task List Indexer
+TaskListIndex_task_rebuildingIndex=Rebuilding Task List Index
diff --git a/org.eclipse.mylyn.tasks.index.tests/.classpath b/org.eclipse.mylyn.tasks.index.tests/.classpath
index fac23ac..e3b5ced 100644
--- a/org.eclipse.mylyn.tasks.index.tests/.classpath
+++ b/org.eclipse.mylyn.tasks.index.tests/.classpath
@@ -1,12 +1,12 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<classpath>

-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>

-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins">

-		<accessrules>

-			<accessrule kind="accessible" pattern="org/eclipse/mylyn/internal/**"/>

-			<accessrule kind="accessible" pattern="org/eclipse/mylyn/tasks/tests/**"/>

-		</accessrules>

-	</classpathentry>

-	<classpathentry kind="src" path="src"/>

-	<classpathentry kind="output" path="bin"/>

-</classpath>

+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins">
+		<accessrules>
+			<accessrule kind="accessible" pattern="org/eclipse/mylyn/internal/**"/>
+			<accessrule kind="accessible" pattern="org/eclipse/mylyn/tasks/tests/**"/>
+		</accessrules>
+	</classpathentry>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.eclipse.mylyn.tasks.index.tests/.project b/org.eclipse.mylyn.tasks.index.tests/.project
index fe606eb..d57642a 100644
--- a/org.eclipse.mylyn.tasks.index.tests/.project
+++ b/org.eclipse.mylyn.tasks.index.tests/.project
@@ -1,34 +1,34 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<projectDescription>

-	<name>org.eclipse.mylyn.tasks.index.tests</name>

-	<comment></comment>

-	<projects>

-	</projects>

-	<buildSpec>

-		<buildCommand>

-			<name>org.eclipse.jdt.core.javabuilder</name>

-			<arguments>

-			</arguments>

-		</buildCommand>

-		<buildCommand>

-			<name>org.eclipse.pde.ManifestBuilder</name>

-			<arguments>

-			</arguments>

-		</buildCommand>

-		<buildCommand>

-			<name>org.eclipse.pde.SchemaBuilder</name>

-			<arguments>

-			</arguments>

-		</buildCommand>

+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.mylyn.tasks.index.tests</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 		<buildCommand>
 			<name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
 			<arguments>
 			</arguments>
 		</buildCommand>
-	</buildSpec>

-	<natures>

-		<nature>org.eclipse.pde.PluginNature</nature>

-		<nature>org.eclipse.jdt.core.javanature</nature>

+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
 		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
-	</natures>

-</projectDescription>

+	</natures>
+</projectDescription>
diff --git a/org.eclipse.mylyn.tasks.index.tests/.settings/org.eclipse.core.runtime.prefs b/org.eclipse.mylyn.tasks.index.tests/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/org.eclipse.mylyn.tasks.index.tests/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/org.eclipse.mylyn.tasks.index.tests/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.mylyn.tasks.index.tests/.settings/org.eclipse.jdt.core.prefs
index ece90e0..9d46694 100644
--- a/org.eclipse.mylyn.tasks.index.tests/.settings/org.eclipse.jdt.core.prefs
+++ b/org.eclipse.mylyn.tasks.index.tests/.settings/org.eclipse.jdt.core.prefs
@@ -1,370 +1,370 @@
-#Sat Oct 15 17:46:40 PDT 2011

-eclipse.preferences.version=1

-org.eclipse.jdt.core.codeComplete.argumentPrefixes=

-org.eclipse.jdt.core.codeComplete.argumentSuffixes=

-org.eclipse.jdt.core.codeComplete.fieldPrefixes=

-org.eclipse.jdt.core.codeComplete.fieldSuffixes=

-org.eclipse.jdt.core.codeComplete.localPrefixes=

-org.eclipse.jdt.core.codeComplete.localSuffixes=

-org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=

-org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=

-org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=

-org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=

-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled

-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5

-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve

-org.eclipse.jdt.core.compiler.compliance=1.5

-org.eclipse.jdt.core.compiler.debug.lineNumber=generate

-org.eclipse.jdt.core.compiler.debug.localVariable=generate

-org.eclipse.jdt.core.compiler.debug.sourceFile=generate

-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning

-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error

-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore

-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning

-org.eclipse.jdt.core.compiler.problem.deadCode=warning

-org.eclipse.jdt.core.compiler.problem.deprecation=warning

-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled

-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled

-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning

-org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore

-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error

-org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore

-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled

-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore

-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning

-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning

-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error

-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning

-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled

-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning

-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore

-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore

-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore

-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning

-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore

-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore

-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore

-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled

-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning

-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore

-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning

-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning

-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore

-org.eclipse.jdt.core.compiler.problem.nullReference=error

-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning

-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore

-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore

-org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning

-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning

-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore

-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore

-org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore

-org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore

-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled

-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning

-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled

-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled

-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore

-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning

-org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled

-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning

-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore

-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning

-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore

-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore

-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore

-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore

-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled

-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled

-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled

-org.eclipse.jdt.core.compiler.problem.unusedImport=warning

-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning

-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning

-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore

-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore

-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled

-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled

-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled

-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning

-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning

-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning

-org.eclipse.jdt.core.compiler.source=1.5

-org.eclipse.jdt.core.compiler.taskCaseSensitive=enabled

-org.eclipse.jdt.core.compiler.taskPriorities=NORMAL,HIGH,NORMAL

-org.eclipse.jdt.core.compiler.taskTags=TODO,FIXME,XXX

-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false

-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16

-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0

-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16

-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16

-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16

-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16

-org.eclipse.jdt.core.formatter.alignment_for_assignment=0

-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16

-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16

-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=48

-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0

-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16

-org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0

-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16

-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16

-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16

-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=80

-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16

-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16

-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16

-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16

-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16

-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1

-org.eclipse.jdt.core.formatter.blank_lines_after_package=1

-org.eclipse.jdt.core.formatter.blank_lines_before_field=1

-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0

-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1

-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1

-org.eclipse.jdt.core.formatter.blank_lines_before_method=1

-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1

-org.eclipse.jdt.core.formatter.blank_lines_before_package=0

-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1

-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1

-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line

-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line

-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line

-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line

-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line

-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line

-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line

-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line

-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line

-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line

-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line

-org.eclipse.jdt.core.formatter.comment.clear_blank_lines=false

-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false

-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true

-org.eclipse.jdt.core.formatter.comment.format_block_comments=false

-org.eclipse.jdt.core.formatter.comment.format_comments=true

-org.eclipse.jdt.core.formatter.comment.format_header=false

-org.eclipse.jdt.core.formatter.comment.format_html=true

-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true

-org.eclipse.jdt.core.formatter.comment.format_line_comments=false

-org.eclipse.jdt.core.formatter.comment.format_source_code=true

-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true

-org.eclipse.jdt.core.formatter.comment.indent_root_tags=true

-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert

-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert

-org.eclipse.jdt.core.formatter.comment.line_length=120

-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true

-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true

-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false

-org.eclipse.jdt.core.formatter.compact_else_if=true

-org.eclipse.jdt.core.formatter.continuation_indentation=2

-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2

-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off

-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on

-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false

-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true

-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true

-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true

-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true

-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true

-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true

-org.eclipse.jdt.core.formatter.indent_empty_lines=false

-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true

-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true

-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true

-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false

-org.eclipse.jdt.core.formatter.indentation.size=4

-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert

-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert

-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert

-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert

-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert

-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert

-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=insert

-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert

-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert

-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert

-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert

-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert

-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert

-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert

-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert

-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert

-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert

-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert

-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert

-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert

-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert

-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert

-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert

-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert

-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert

-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert

-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert

-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert

-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert

-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert

-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert

-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert

-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert

-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert

-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert

-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert

-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert

-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert

-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert

-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert

-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert

-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert

-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert

-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert

-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert

-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert

-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert

-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert

-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert

-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert

-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert

-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert

-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert

-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert

-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert

-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert

-org.eclipse.jdt.core.formatter.join_lines_in_comments=true

-org.eclipse.jdt.core.formatter.join_wrapped_lines=true

-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false

-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false

-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false

-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false

-org.eclipse.jdt.core.formatter.lineSplit=120

-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=true

-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=true

-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0

-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1

-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true

-org.eclipse.jdt.core.formatter.tabulation.char=tab

-org.eclipse.jdt.core.formatter.tabulation.size=4

-org.eclipse.jdt.core.formatter.use_on_off_tags=false

-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false

-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true

-org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true

+#Sat Oct 15 17:46:40 PDT 2011
+eclipse.preferences.version=1
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.5
+org.eclipse.jdt.core.compiler.taskCaseSensitive=enabled
+org.eclipse.jdt.core.compiler.taskPriorities=NORMAL,HIGH,NORMAL
+org.eclipse.jdt.core.compiler.taskTags=TODO,FIXME,XXX
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=48
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=80
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=1
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
+org.eclipse.jdt.core.formatter.comment.line_length=120
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=true
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=true
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=false
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
diff --git a/org.eclipse.mylyn.tasks.index.tests/build.properties b/org.eclipse.mylyn.tasks.index.tests/build.properties
index 785a40c..9cbab3c 100644
--- a/org.eclipse.mylyn.tasks.index.tests/build.properties
+++ b/org.eclipse.mylyn.tasks.index.tests/build.properties
@@ -1,6 +1,6 @@
-source.. = src/

-output.. = bin/

-bin.includes = META-INF/,\

-               .,\

-               about.html

-src.includes = about.html

+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               about.html
+src.includes = about.html
diff --git a/org.eclipse.mylyn.tasks.index.tests/src/org/eclipse/mylyn/internal/tasks/index/tests/TaskListIndexTest.java b/org.eclipse.mylyn.tasks.index.tests/src/org/eclipse/mylyn/internal/tasks/index/tests/TaskListIndexTest.java
index 6ae7592..671953a 100644
--- a/org.eclipse.mylyn.tasks.index.tests/src/org/eclipse/mylyn/internal/tasks/index/tests/TaskListIndexTest.java
+++ b/org.eclipse.mylyn.tasks.index.tests/src/org/eclipse/mylyn/internal/tasks/index/tests/TaskListIndexTest.java
@@ -1,381 +1,381 @@
-/*******************************************************************************

- * Copyright (c) 2011 Tasktop Technologies and others.

- * All rights reserved. This program and the accompanying materials

- * are made available under the terms of the Eclipse Public License v1.0

- * which accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- *

- * Contributors:

- *     Tasktop Technologies - initial API and implementation

- *******************************************************************************/

-

-package org.eclipse.mylyn.internal.tasks.index.tests;

-

-import static junit.framework.Assert.assertEquals;

-import static org.junit.Assert.assertFalse;

-import static org.junit.Assert.assertNotNull;

-import static org.junit.Assert.assertTrue;

-

-import java.io.File;

-import java.io.IOException;

-import java.text.SimpleDateFormat;

-import java.util.ArrayList;

-import java.util.Collection;

-import java.util.Date;

-import java.util.HashSet;

-import java.util.List;

-import java.util.Set;

-import java.util.concurrent.Callable;

-import java.util.concurrent.ExecutionException;

-import java.util.concurrent.ExecutorService;

-import java.util.concurrent.Executors;

-import java.util.concurrent.Future;

-import java.util.logging.Logger;

-

-import junit.framework.Assert;

-

-import org.eclipse.core.runtime.CoreException;

-import org.eclipse.mylyn.commons.core.DelegatingProgressMonitor;

-import org.eclipse.mylyn.internal.tasks.core.AbstractTask;

-import org.eclipse.mylyn.internal.tasks.core.LocalTask;

-import org.eclipse.mylyn.internal.tasks.index.core.TaskListIndex;

-import org.eclipse.mylyn.internal.tasks.index.core.TaskListIndex.IndexField;

-import org.eclipse.mylyn.internal.tasks.index.core.TaskListIndex.TaskCollector;

-import org.eclipse.mylyn.internal.tasks.index.tests.util.MockTestContext;

-import org.eclipse.mylyn.tasks.core.ITask;

-import org.eclipse.mylyn.tasks.core.data.TaskAttribute;

-import org.eclipse.mylyn.tasks.core.data.TaskData;

-import org.eclipse.mylyn.tasks.core.data.TaskMapper;

-import org.junit.After;

-import org.junit.Before;

-import org.junit.Test;

-

-/**

- * @author David Green

- */

-public class TaskListIndexTest {

-

-	private static class TestTaskCollector extends TaskCollector {

-

-		private final List<ITask> tasks = new ArrayList<ITask>();

-

-		@Override

-		public void collect(ITask task) {

-			tasks.add(task);

-		}

-

-		public List<ITask> getTasks() {

-			return tasks;

-		}

-	}

-

-	private MockTestContext context;

-

-	private TaskListIndex index;

-

-	private File tempDir;

-

-	@Before

-	public void setup() throws IOException {

-		tempDir = File.createTempFile(TaskListIndexTest.class.getSimpleName(), ".tmp");

-		tempDir.delete();

-		tempDir.mkdirs();

-

-		assertTrue(tempDir.exists() && tempDir.isDirectory());

-

-		context = new MockTestContext();

-	}

-

-	@After

-	public void tearDown() {

-		if (index != null) {

-			try {

-				index.waitUntilIdle();

-			} catch (InterruptedException e) {

-				e.printStackTrace();

-			}

-			index.close();

-			index = null;

-		}

-		if (tempDir != null) {

-			delete(tempDir);

-			assertFalse(tempDir.exists());

-		}

-	}

-

-	private void delete(File file) {

-		if (file.isDirectory()) {

-			File[] children = file.listFiles();

-			if (children != null) {

-				for (File child : children) {

-					delete(child);

-				}

-			}

-		}

-		if (!file.delete()) {

-			Logger.getLogger(TaskListIndexTest.class.getName()).severe("Cannot delete: " + file);

-		}

-	}

-

-	private void setupIndex() {

-		index = new TaskListIndex(context.getTaskList(), context.getDataManager(), tempDir, 0L);

-		index.setDefaultField(IndexField.CONTENT);

-		index.setReindexDelay(0L);

-	}

-

-	@Test

-	public void testMatchesLocalTaskOnSummary() throws InterruptedException {

-		setupIndex();

-

-		ITask task = context.createLocalTask();

-

-		index.waitUntilIdle();

-

-		index.setDefaultField(IndexField.CONTENT);

-

-		assertTrue(index.matches(task, task.getSummary()));

-		assertFalse(index.matches(task, "" + System.currentTimeMillis()));

-

-		index.setDefaultField(IndexField.SUMMARY);

-

-		assertTrue(index.matches(task, task.getSummary()));

-		assertFalse(index.matches(task, "" + System.currentTimeMillis()));

-	}

-

-	@Test

-	public void testMatchesLocalTaskOnDescription() throws InterruptedException {

-		setupIndex();

-

-		ITask task = context.createLocalTask();

-

-		index.waitUntilIdle();

-

-		index.setDefaultField(IndexField.CONTENT);

-

-		assertTrue(index.matches(task, ((LocalTask) task).getNotes()));

-		assertFalse(index.matches(task, "unlikely-akjfsaow"));

-

-		index.setDefaultField(IndexField.SUMMARY);

-

-		assertFalse(index.matches(task, ((LocalTask) task).getNotes()));

-	}

-

-	@Test

-	public void testMatchesRepositoryTaskOnSummary() throws InterruptedException, CoreException {

-		setupIndex();

-

-		ITask task = context.createRepositoryTask();

-

-		index.waitUntilIdle();

-

-		index.setDefaultField(IndexField.CONTENT);

-

-		assertTrue(index.matches(task, task.getSummary()));

-		assertFalse(index.matches(task, "" + System.currentTimeMillis()));

-

-		index.setDefaultField(IndexField.SUMMARY);

-

-		assertTrue(index.matches(task, task.getSummary()));

-		assertFalse(index.matches(task, "" + System.currentTimeMillis()));

-	}

-

-	@Test

-	public void testMatchesRepositoryTaskOnDescription() throws InterruptedException, CoreException {

-		setupIndex();

-

-		ITask task = context.createRepositoryTask();

-

-		index.waitUntilIdle();

-

-		index.setDefaultField(IndexField.CONTENT);

-

-		TaskData taskData = context.getDataManager().getTaskData(task);

-		assertNotNull(taskData);

-

-		TaskMapper taskMapping = context.getMockRepositoryConnector().getTaskMapping(taskData);

-

-		assertTrue(index.matches(task, taskMapping.getDescription()));

-		assertFalse(index.matches(task, "unlikely-akjfsaow"));

-

-		index.setDefaultField(IndexField.SUMMARY);

-

-		assertFalse(index.matches(task, taskMapping.getDescription()));

-	}

-

-	@Test

-	public void testFind() throws InterruptedException {

-		setupIndex();

-

-		ITask task = context.createLocalTask();

-

-		index.waitUntilIdle();

-

-		index.setDefaultField(IndexField.SUMMARY);

-

-		TestTaskCollector collector = new TestTaskCollector();

-		index.find(task.getSummary(), collector, 1000);

-

-		assertEquals(1, collector.getTasks().size());

-		assertTrue(collector.getTasks().contains(task));

-	}

-

-	@Test

-	public void testMatchesRepositoryTaskOnCreationDate() throws InterruptedException, CoreException {

-		setupIndex();

-

-		ITask task = context.createRepositoryTask();

-

-		Date creationDate = task.getCreationDate();

-		assertNotNull(creationDate);

-

-		index.waitUntilIdle();

-

-		assertFalse(index.matches(task, IndexField.CREATION_DATE.fieldName() + ":[20010101 TO 20010105]"));

-

-		String matchDate = new SimpleDateFormat("yyyyMMdd").format(creationDate);

-		matchDate = Integer.toString(Integer.parseInt(matchDate) + 2);

-

-		String patternString = IndexField.CREATION_DATE.fieldName() + ":[20111019 TO " + matchDate + "]";

-

-		System.out.println(patternString);

-

-		assertTrue(index.matches(task, patternString));

-	}

-

-	@Test

-	public void testMatchesOnRepositoryUrl() throws Exception {

-		setupIndex();

-

-		ITask repositoryTask = context.createRepositoryTask();

-		ITask localTask = context.createLocalTask();

-

-		index.waitUntilIdle();

-

-		index.setDefaultField(IndexField.CONTENT);

-

-		TaskData taskData = context.getDataManager().getTaskData(repositoryTask);

-

-		// sanity

-		assertNotNull(taskData);

-		assertNotNull(taskData.getRepositoryUrl());

-		assertFalse(taskData.getRepositoryUrl().length() == 0);

-

-		// setup descriptions so that they will both match

-		final String content = "RepositoryUrl";

-		taskData.getRoot().getMappedAttribute(TaskAttribute.DESCRIPTION).setValue(content);

-		((AbstractTask) localTask).setNotes(content);

-

-		context.getDataManager().putSubmittedTaskData(repositoryTask, taskData, new DelegatingProgressMonitor());

-

-		Set<ITask> changedElements = new HashSet<ITask>();

-		changedElements.add(localTask);

-		changedElements.add(repositoryTask);

-		context.getTaskList().notifyElementsChanged(changedElements);

-

-		index.waitUntilIdle();

-

-		assertTrue(index.matches(localTask, content));

-		assertTrue(index.matches(repositoryTask, content));

-

-		String repositoryUrlQuery = content + " AND " + IndexField.REPOSITORY_URL.fieldName() + ":\""

-				+ index.escapeFieldValue(repositoryTask.getRepositoryUrl()) + "\"";

-		assertFalse(index.matches(localTask, repositoryUrlQuery));

-		assertTrue(index.matches(repositoryTask, repositoryUrlQuery));

-	}

-

-	@Test

-	public void testCharacterEscaping() {

-		setupIndex();

-		for (String special : new String[] { "+", "-", "&&", "||", "!", "(", ")", "{", "}", "[", "]", "^", "\"", "~",

-				"*", "?", ":", "\\" }) {

-			assertEquals("a\\" + special + "b", index.escapeFieldValue("a" + special + "b"));

-		}

-	}

-

-	@Test

-	public void testAttributeMetadataAffectsIndexing() throws CoreException, InterruptedException {

-		setupIndex();

-

-		ITask repositoryTask = context.createRepositoryTask();

-

-		index.waitUntilIdle();

-		index.setDefaultField(IndexField.CONTENT);

-

-		TaskData taskData = context.getDataManager().getTaskData(repositoryTask);

-

-		// sanity

-		assertNotNull(taskData);

-

-		final String content = "c" + System.currentTimeMillis();

-

-		// setup data so that it will match

-		TaskAttribute attribute = taskData.getRoot().createAttribute("unusualIndexedAttribute");

-		attribute.setValue(content);

-

-		// update

-		context.getDataManager().putSubmittedTaskData(repositoryTask, taskData, new DelegatingProgressMonitor());

-

-		// verify index doesn't match search term

-		assertFalse(index.matches(repositoryTask, content));

-

-		// now make data indexable

-		attribute.getMetaData().putValue(TaskListIndex.META_INDEXED_AS_CONTENT, "true");

-		// update

-		context.getDataManager().putSubmittedTaskData(repositoryTask, taskData, new DelegatingProgressMonitor());

-

-		// should now match

-		assertTrue(index.matches(repositoryTask, content));

-	}

-

-	@Test

-	public void testMultithreadedAccessOnFind() throws CoreException, InterruptedException, ExecutionException {

-		setupIndex();

-

-		final ITask repositoryTask = context.createRepositoryTask();

-

-		index.waitUntilIdle();

-		index.setDefaultField(IndexField.CONTENT);

-

-		final int nThreads = 10;

-		final int[] concurrencyLevel = new int[1];

-		ExecutorService executorService = Executors.newFixedThreadPool(nThreads);

-		try {

-			Collection<Callable<Object>> tasks = new HashSet<Callable<Object>>();

-			for (int x = 0; x < nThreads; ++x) {

-				tasks.add(new Callable<Object>() {

-

-					public Object call() throws Exception {

-						final int[] hitCount = new int[1];

-						index.find(repositoryTask.getSummary(), new TaskCollector() {

-

-							@Override

-							public void collect(ITask task) {

-								synchronized (concurrencyLevel) {

-									++concurrencyLevel[0];

-									if (concurrencyLevel[0] < nThreads) {

-										try {

-											concurrencyLevel.wait(5000L);

-										} catch (InterruptedException e) {

-											e.printStackTrace();

-										}

-									} else {

-										concurrencyLevel.notifyAll();

-									}

-								}

-								++hitCount[0];

-							}

-						}, 100);

-						return hitCount[0] == 1;

-					}

-				});

-			}

-			List<Future<Object>> futures = executorService.invokeAll(tasks);

-			for (Future<Object> future : futures) {

-				assertEquals(Boolean.TRUE, future.get());

-			}

-			Assert.assertEquals(nThreads, concurrencyLevel[0]);

-		} finally {

-			executorService.shutdownNow();

-		}

-	}

-}

+/*******************************************************************************
+ * Copyright (c) 2011 Tasktop Technologies and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Tasktop Technologies - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylyn.internal.tasks.index.tests;
+
+import static junit.framework.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+import java.util.logging.Logger;
+
+import junit.framework.Assert;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.mylyn.commons.core.DelegatingProgressMonitor;
+import org.eclipse.mylyn.internal.tasks.core.AbstractTask;
+import org.eclipse.mylyn.internal.tasks.core.LocalTask;
+import org.eclipse.mylyn.internal.tasks.index.core.TaskListIndex;
+import org.eclipse.mylyn.internal.tasks.index.core.TaskListIndex.IndexField;
+import org.eclipse.mylyn.internal.tasks.index.core.TaskListIndex.TaskCollector;
+import org.eclipse.mylyn.internal.tasks.index.tests.util.MockTestContext;
+import org.eclipse.mylyn.tasks.core.ITask;
+import org.eclipse.mylyn.tasks.core.data.TaskAttribute;
+import org.eclipse.mylyn.tasks.core.data.TaskData;
+import org.eclipse.mylyn.tasks.core.data.TaskMapper;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * @author David Green
+ */
+public class TaskListIndexTest {
+
+	private static class TestTaskCollector extends TaskCollector {
+
+		private final List<ITask> tasks = new ArrayList<ITask>();
+
+		@Override
+		public void collect(ITask task) {
+			tasks.add(task);
+		}
+
+		public List<ITask> getTasks() {
+			return tasks;
+		}
+	}
+
+	private MockTestContext context;
+
+	private TaskListIndex index;
+
+	private File tempDir;
+
+	@Before
+	public void setup() throws IOException {
+		tempDir = File.createTempFile(TaskListIndexTest.class.getSimpleName(), ".tmp");
+		tempDir.delete();
+		tempDir.mkdirs();
+
+		assertTrue(tempDir.exists() && tempDir.isDirectory());
+
+		context = new MockTestContext();
+	}
+
+	@After
+	public void tearDown() {
+		if (index != null) {
+			try {
+				index.waitUntilIdle();
+			} catch (InterruptedException e) {
+				e.printStackTrace();
+			}
+			index.close();
+			index = null;
+		}
+		if (tempDir != null) {
+			delete(tempDir);
+			assertFalse(tempDir.exists());
+		}
+	}
+
+	private void delete(File file) {
+		if (file.isDirectory()) {
+			File[] children = file.listFiles();
+			if (children != null) {
+				for (File child : children) {
+					delete(child);
+				}
+			}
+		}
+		if (!file.delete()) {
+			Logger.getLogger(TaskListIndexTest.class.getName()).severe("Cannot delete: " + file);
+		}
+	}
+
+	private void setupIndex() {
+		index = new TaskListIndex(context.getTaskList(), context.getDataManager(), tempDir, 0L);
+		index.setDefaultField(IndexField.CONTENT);
+		index.setReindexDelay(0L);
+	}
+
+	@Test
+	public void testMatchesLocalTaskOnSummary() throws InterruptedException {
+		setupIndex();
+
+		ITask task = context.createLocalTask();
+
+		index.waitUntilIdle();
+
+		index.setDefaultField(IndexField.CONTENT);
+
+		assertTrue(index.matches(task, task.getSummary()));
+		assertFalse(index.matches(task, "" + System.currentTimeMillis()));
+
+		index.setDefaultField(IndexField.SUMMARY);
+
+		assertTrue(index.matches(task, task.getSummary()));
+		assertFalse(index.matches(task, "" + System.currentTimeMillis()));
+	}
+
+	@Test
+	public void testMatchesLocalTaskOnDescription() throws InterruptedException {
+		setupIndex();
+
+		ITask task = context.createLocalTask();
+
+		index.waitUntilIdle();
+
+		index.setDefaultField(IndexField.CONTENT);
+
+		assertTrue(index.matches(task, ((LocalTask) task).getNotes()));
+		assertFalse(index.matches(task, "unlikely-akjfsaow"));
+
+		index.setDefaultField(IndexField.SUMMARY);
+
+		assertFalse(index.matches(task, ((LocalTask) task).getNotes()));
+	}
+
+	@Test
+	public void testMatchesRepositoryTaskOnSummary() throws InterruptedException, CoreException {
+		setupIndex();
+
+		ITask task = context.createRepositoryTask();
+
+		index.waitUntilIdle();
+
+		index.setDefaultField(IndexField.CONTENT);
+
+		assertTrue(index.matches(task, task.getSummary()));
+		assertFalse(index.matches(task, "" + System.currentTimeMillis()));
+
+		index.setDefaultField(IndexField.SUMMARY);
+
+		assertTrue(index.matches(task, task.getSummary()));
+		assertFalse(index.matches(task, "" + System.currentTimeMillis()));
+	}
+
+	@Test
+	public void testMatchesRepositoryTaskOnDescription() throws InterruptedException, CoreException {
+		setupIndex();
+
+		ITask task = context.createRepositoryTask();
+
+		index.waitUntilIdle();
+
+		index.setDefaultField(IndexField.CONTENT);
+
+		TaskData taskData = context.getDataManager().getTaskData(task);
+		assertNotNull(taskData);
+
+		TaskMapper taskMapping = context.getMockRepositoryConnector().getTaskMapping(taskData);
+
+		assertTrue(index.matches(task, taskMapping.getDescription()));
+		assertFalse(index.matches(task, "unlikely-akjfsaow"));
+
+		index.setDefaultField(IndexField.SUMMARY);
+
+		assertFalse(index.matches(task, taskMapping.getDescription()));
+	}
+
+	@Test
+	public void testFind() throws InterruptedException {
+		setupIndex();
+
+		ITask task = context.createLocalTask();
+
+		index.waitUntilIdle();
+
+		index.setDefaultField(IndexField.SUMMARY);
+
+		TestTaskCollector collector = new TestTaskCollector();
+		index.find(task.getSummary(), collector, 1000);
+
+		assertEquals(1, collector.getTasks().size());
+		assertTrue(collector.getTasks().contains(task));
+	}
+
+	@Test
+	public void testMatchesRepositoryTaskOnCreationDate() throws InterruptedException, CoreException {
+		setupIndex();
+
+		ITask task = context.createRepositoryTask();
+
+		Date creationDate = task.getCreationDate();
+		assertNotNull(creationDate);
+
+		index.waitUntilIdle();
+
+		assertFalse(index.matches(task, IndexField.CREATION_DATE.fieldName() + ":[20010101 TO 20010105]"));
+
+		String matchDate = new SimpleDateFormat("yyyyMMdd").format(creationDate);
+		matchDate = Integer.toString(Integer.parseInt(matchDate) + 2);
+
+		String patternString = IndexField.CREATION_DATE.fieldName() + ":[20111019 TO " + matchDate + "]";
+
+		System.out.println(patternString);
+
+		assertTrue(index.matches(task, patternString));
+	}
+
+	@Test
+	public void testMatchesOnRepositoryUrl() throws Exception {
+		setupIndex();
+
+		ITask repositoryTask = context.createRepositoryTask();
+		ITask localTask = context.createLocalTask();
+
+		index.waitUntilIdle();
+
+		index.setDefaultField(IndexField.CONTENT);
+
+		TaskData taskData = context.getDataManager().getTaskData(repositoryTask);
+
+		// sanity
+		assertNotNull(taskData);
+		assertNotNull(taskData.getRepositoryUrl());
+		assertFalse(taskData.getRepositoryUrl().length() == 0);
+
+		// setup descriptions so that they will both match
+		final String content = "RepositoryUrl";
+		taskData.getRoot().getMappedAttribute(TaskAttribute.DESCRIPTION).setValue(content);
+		((AbstractTask) localTask).setNotes(content);
+
+		context.getDataManager().putSubmittedTaskData(repositoryTask, taskData, new DelegatingProgressMonitor());
+
+		Set<ITask> changedElements = new HashSet<ITask>();
+		changedElements.add(localTask);
+		changedElements.add(repositoryTask);
+		context.getTaskList().notifyElementsChanged(changedElements);
+
+		index.waitUntilIdle();
+
+		assertTrue(index.matches(localTask, content));
+		assertTrue(index.matches(repositoryTask, content));
+
+		String repositoryUrlQuery = content + " AND " + IndexField.REPOSITORY_URL.fieldName() + ":\""
+				+ index.escapeFieldValue(repositoryTask.getRepositoryUrl()) + "\"";
+		assertFalse(index.matches(localTask, repositoryUrlQuery));
+		assertTrue(index.matches(repositoryTask, repositoryUrlQuery));
+	}
+
+	@Test
+	public void testCharacterEscaping() {
+		setupIndex();
+		for (String special : new String[] { "+", "-", "&&", "||", "!", "(", ")", "{", "}", "[", "]", "^", "\"", "~",
+				"*", "?", ":", "\\" }) {
+			assertEquals("a\\" + special + "b", index.escapeFieldValue("a" + special + "b"));
+		}
+	}
+
+	@Test
+	public void testAttributeMetadataAffectsIndexing() throws CoreException, InterruptedException {
+		setupIndex();
+
+		ITask repositoryTask = context.createRepositoryTask();
+
+		index.waitUntilIdle();
+		index.setDefaultField(IndexField.CONTENT);
+
+		TaskData taskData = context.getDataManager().getTaskData(repositoryTask);
+
+		// sanity
+		assertNotNull(taskData);
+
+		final String content = "c" + System.currentTimeMillis();
+
+		// setup data so that it will match
+		TaskAttribute attribute = taskData.getRoot().createAttribute("unusualIndexedAttribute");
+		attribute.setValue(content);
+
+		// update
+		context.getDataManager().putSubmittedTaskData(repositoryTask, taskData, new DelegatingProgressMonitor());
+
+		// verify index doesn't match search term
+		assertFalse(index.matches(repositoryTask, content));
+
+		// now make data indexable
+		attribute.getMetaData().putValue(TaskListIndex.META_INDEXED_AS_CONTENT, "true");
+		// update
+		context.getDataManager().putSubmittedTaskData(repositoryTask, taskData, new DelegatingProgressMonitor());
+
+		// should now match
+		assertTrue(index.matches(repositoryTask, content));
+	}
+
+	@Test
+	public void testMultithreadedAccessOnFind() throws CoreException, InterruptedException, ExecutionException {
+		setupIndex();
+
+		final ITask repositoryTask = context.createRepositoryTask();
+
+		index.waitUntilIdle();
+		index.setDefaultField(IndexField.CONTENT);
+
+		final int nThreads = 10;
+		final int[] concurrencyLevel = new int[1];
+		ExecutorService executorService = Executors.newFixedThreadPool(nThreads);
+		try {
+			Collection<Callable<Object>> tasks = new HashSet<Callable<Object>>();
+			for (int x = 0; x < nThreads; ++x) {
+				tasks.add(new Callable<Object>() {
+
+					public Object call() throws Exception {
+						final int[] hitCount = new int[1];
+						index.find(repositoryTask.getSummary(), new TaskCollector() {
+
+							@Override
+							public void collect(ITask task) {
+								synchronized (concurrencyLevel) {
+									++concurrencyLevel[0];
+									if (concurrencyLevel[0] < nThreads) {
+										try {
+											concurrencyLevel.wait(5000L);
+										} catch (InterruptedException e) {
+											e.printStackTrace();
+										}
+									} else {
+										concurrencyLevel.notifyAll();
+									}
+								}
+								++hitCount[0];
+							}
+						}, 100);
+						return hitCount[0] == 1;
+					}
+				});
+			}
+			List<Future<Object>> futures = executorService.invokeAll(tasks);
+			for (Future<Object> future : futures) {
+				assertEquals(Boolean.TRUE, future.get());
+			}
+			Assert.assertEquals(nThreads, concurrencyLevel[0]);
+		} finally {
+			executorService.shutdownNow();
+		}
+	}
+}
diff --git a/org.eclipse.mylyn.tasks.index.tests/src/org/eclipse/mylyn/internal/tasks/index/tests/util/FullMockRepositoryConnector.java b/org.eclipse.mylyn.tasks.index.tests/src/org/eclipse/mylyn/internal/tasks/index/tests/util/FullMockRepositoryConnector.java
index e090f6e..f14b94d 100644
--- a/org.eclipse.mylyn.tasks.index.tests/src/org/eclipse/mylyn/internal/tasks/index/tests/util/FullMockRepositoryConnector.java
+++ b/org.eclipse.mylyn.tasks.index.tests/src/org/eclipse/mylyn/internal/tasks/index/tests/util/FullMockRepositoryConnector.java
@@ -1,98 +1,98 @@
-/*******************************************************************************

- * Copyright (c) 2011 Tasktop Technologies and others.

- * All rights reserved. This program and the accompanying materials

- * are made available under the terms of the Eclipse Public License v1.0

- * which accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- *

- * Contributors:

- *     Tasktop Technologies - initial API and implementation

- *******************************************************************************/

-

-package org.eclipse.mylyn.internal.tasks.index.tests.util;

-

-import java.util.Date;

-import java.util.Set;

-import java.util.concurrent.atomic.AtomicInteger;

-

-import org.eclipse.core.runtime.CoreException;

-import org.eclipse.core.runtime.IProgressMonitor;

-import org.eclipse.mylyn.tasks.core.ITask;

-import org.eclipse.mylyn.tasks.core.ITaskMapping;

-import org.eclipse.mylyn.tasks.core.RepositoryResponse;

-import org.eclipse.mylyn.tasks.core.RepositoryResponse.ResponseKind;

-import org.eclipse.mylyn.tasks.core.TaskRepository;

-import org.eclipse.mylyn.tasks.core.data.AbstractTaskDataHandler;

-import org.eclipse.mylyn.tasks.core.data.TaskAttribute;

-import org.eclipse.mylyn.tasks.core.data.TaskAttributeMapper;

-import org.eclipse.mylyn.tasks.core.data.TaskData;

-import org.eclipse.mylyn.tasks.core.data.TaskMapper;

-import org.eclipse.mylyn.tasks.tests.connector.MockRepositoryConnector;

-

-/**

- * @author David Green

- */

-public class FullMockRepositoryConnector extends MockRepositoryConnector {

-

-	private final AtomicInteger idSeed = new AtomicInteger(9000);

-

-	@Override

-	public boolean hasTaskChanged(TaskRepository taskRepository, ITask task, TaskData taskData) {

-		ITaskMapping taskMapping = getTaskMapping(taskData);

-		Date modificationDate = taskMapping.getModificationDate();

-		return modificationDate != null && !modificationDate.equals(task.getModificationDate());

-	}

-

-	@Override

-	public TaskMapper getTaskMapping(TaskData taskData) {

-		return new TaskMapper(taskData, true);

-	}

-

-	@Override

-	public void updateTaskFromTaskData(TaskRepository taskRepository, ITask task, TaskData taskData) {

-		final Date originalModificationDate = task.getModificationDate();

-

-		TaskMapper taskMapping = getTaskMapping(taskData);

-		taskMapping.applyTo(task);

-

-		if (taskData.isPartial()) {

-			task.setModificationDate(originalModificationDate);

-		}

-	}

-

-	@Override

-	public AbstractTaskDataHandler getTaskDataHandler() {

-		return new AbstractTaskDataHandler() {

-

-			@Override

-			public RepositoryResponse postTaskData(TaskRepository repository, TaskData taskData,

-					Set<TaskAttribute> oldAttributes, IProgressMonitor monitor) throws CoreException {

-				if (taskData.getTaskId() == null || taskData.getTaskId().length() == 0) {

-					return new RepositoryResponse(ResponseKind.TASK_UPDATED, String.valueOf(idSeed.incrementAndGet()));

-				} else {

-					return new RepositoryResponse(ResponseKind.TASK_UPDATED, taskData.getTaskId());

-				}

-			}

-

-			@Override

-			public boolean initializeTaskData(TaskRepository repository, TaskData data,

-					ITaskMapping initializationData, IProgressMonitor monitor) throws CoreException {

-				TaskMapper mapper = getTaskMapping(data);

-				mapper.setCreationDate(new Date());

-				mapper.setDescription("");

-				mapper.setModificationDate(mapper.getCreationDate());

-				mapper.setOwner("");

-				mapper.setProduct("Product1");

-				mapper.setReporter("");

-				mapper.setStatus("NEW");

-				mapper.setSummary("");

-				return false;

-			}

-

-			@Override

-			public TaskAttributeMapper getAttributeMapper(TaskRepository repository) {

-				return new TaskAttributeMapper(repository);

-			}

-		};

-	}

-}

+/*******************************************************************************
+ * Copyright (c) 2011 Tasktop Technologies and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Tasktop Technologies - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylyn.internal.tasks.index.tests.util;
+
+import java.util.Date;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.mylyn.tasks.core.ITask;
+import org.eclipse.mylyn.tasks.core.ITaskMapping;
+import org.eclipse.mylyn.tasks.core.RepositoryResponse;
+import org.eclipse.mylyn.tasks.core.RepositoryResponse.ResponseKind;
+import org.eclipse.mylyn.tasks.core.TaskRepository;
+import org.eclipse.mylyn.tasks.core.data.AbstractTaskDataHandler;
+import org.eclipse.mylyn.tasks.core.data.TaskAttribute;
+import org.eclipse.mylyn.tasks.core.data.TaskAttributeMapper;
+import org.eclipse.mylyn.tasks.core.data.TaskData;
+import org.eclipse.mylyn.tasks.core.data.TaskMapper;
+import org.eclipse.mylyn.tasks.tests.connector.MockRepositoryConnector;
+
+/**
+ * @author David Green
+ */
+public class FullMockRepositoryConnector extends MockRepositoryConnector {
+
+	private final AtomicInteger idSeed = new AtomicInteger(9000);
+
+	@Override
+	public boolean hasTaskChanged(TaskRepository taskRepository, ITask task, TaskData taskData) {
+		ITaskMapping taskMapping = getTaskMapping(taskData);
+		Date modificationDate = taskMapping.getModificationDate();
+		return modificationDate != null && !modificationDate.equals(task.getModificationDate());
+	}
+
+	@Override
+	public TaskMapper getTaskMapping(TaskData taskData) {
+		return new TaskMapper(taskData, true);
+	}
+
+	@Override
+	public void updateTaskFromTaskData(TaskRepository taskRepository, ITask task, TaskData taskData) {
+		final Date originalModificationDate = task.getModificationDate();
+
+		TaskMapper taskMapping = getTaskMapping(taskData);
+		taskMapping.applyTo(task);
+
+		if (taskData.isPartial()) {
+			task.setModificationDate(originalModificationDate);
+		}
+	}
+
+	@Override
+	public AbstractTaskDataHandler getTaskDataHandler() {
+		return new AbstractTaskDataHandler() {
+
+			@Override
+			public RepositoryResponse postTaskData(TaskRepository repository, TaskData taskData,
+					Set<TaskAttribute> oldAttributes, IProgressMonitor monitor) throws CoreException {
+				if (taskData.getTaskId() == null || taskData.getTaskId().length() == 0) {
+					return new RepositoryResponse(ResponseKind.TASK_UPDATED, String.valueOf(idSeed.incrementAndGet()));
+				} else {
+					return new RepositoryResponse(ResponseKind.TASK_UPDATED, taskData.getTaskId());
+				}
+			}
+
+			@Override
+			public boolean initializeTaskData(TaskRepository repository, TaskData data,
+					ITaskMapping initializationData, IProgressMonitor monitor) throws CoreException {
+				TaskMapper mapper = getTaskMapping(data);
+				mapper.setCreationDate(new Date());
+				mapper.setDescription("");
+				mapper.setModificationDate(mapper.getCreationDate());
+				mapper.setOwner("");
+				mapper.setProduct("Product1");
+				mapper.setReporter("");
+				mapper.setStatus("NEW");
+				mapper.setSummary("");
+				return false;
+			}
+
+			@Override
+			public TaskAttributeMapper getAttributeMapper(TaskRepository repository) {
+				return new TaskAttributeMapper(repository);
+			}
+		};
+	}
+}
diff --git a/org.eclipse.mylyn.tasks.index.tests/src/org/eclipse/mylyn/internal/tasks/index/tests/util/MockTestContext.java b/org.eclipse.mylyn.tasks.index.tests/src/org/eclipse/mylyn/internal/tasks/index/tests/util/MockTestContext.java
index f859df5..d106cd0 100644
--- a/org.eclipse.mylyn.tasks.index.tests/src/org/eclipse/mylyn/internal/tasks/index/tests/util/MockTestContext.java
+++ b/org.eclipse.mylyn.tasks.index.tests/src/org/eclipse/mylyn/internal/tasks/index/tests/util/MockTestContext.java
@@ -1,157 +1,157 @@
-/*******************************************************************************

- * Copyright (c) 2011 Tasktop Technologies and others.

- * All rights reserved. This program and the accompanying materials

- * are made available under the terms of the Eclipse Public License v1.0

- * which accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- *

- * Contributors:

- *     Tasktop Technologies - initial API and implementation

- *******************************************************************************/

-

-package org.eclipse.mylyn.internal.tasks.index.tests.util;

-

-import java.util.Date;

-import java.util.concurrent.atomic.AtomicInteger;

-

-import org.eclipse.core.runtime.CoreException;

-import org.eclipse.core.runtime.NullProgressMonitor;

-import org.eclipse.mylyn.commons.core.DelegatingProgressMonitor;

-import org.eclipse.mylyn.internal.tasks.core.LocalRepositoryConnector;

-import org.eclipse.mylyn.internal.tasks.core.LocalTask;

-import org.eclipse.mylyn.internal.tasks.core.RepositoryModel;

-import org.eclipse.mylyn.internal.tasks.core.TaskActivityManager;

-import org.eclipse.mylyn.internal.tasks.core.TaskList;

-import org.eclipse.mylyn.internal.tasks.core.TaskRepositoryManager;

-import org.eclipse.mylyn.internal.tasks.core.data.SynchronizationManger;

-import org.eclipse.mylyn.internal.tasks.core.data.TaskDataManager;

-import org.eclipse.mylyn.internal.tasks.core.data.TaskDataStore;

-import org.eclipse.mylyn.tasks.core.ITask;

-import org.eclipse.mylyn.tasks.core.TaskMapping;

-import org.eclipse.mylyn.tasks.core.TaskRepository;

-import org.eclipse.mylyn.tasks.core.data.TaskAttribute;

-import org.eclipse.mylyn.tasks.core.data.TaskAttributeMapper;

-import org.eclipse.mylyn.tasks.core.data.TaskData;

-import org.eclipse.mylyn.tasks.tests.connector.MockRepositoryConnector;

-import org.eclipse.mylyn.tasks.tests.connector.MockTask;

-

-public class MockTestContext {

-

-	private final TaskList taskList;

-

-	private final TaskRepositoryManager repositoryManager;

-

-	private final TaskDataManager dataManager;

-

-	private final TaskDataStore dataStore;

-

-	private final TaskActivityManager activityManager;

-

-	private final SynchronizationManger synchronizationManger;

-

-	private final RepositoryModel repositoryModel;

-

-	private final TaskRepository mockRepository;

-

-	private final TaskRepository localRepository;

-

-	private final AtomicInteger idSeed = new AtomicInteger(1003);

-

-	private final FullMockRepositoryConnector mockRepositoryConnector;

-

-	public MockTestContext() {

-		taskList = new TaskList();

-		repositoryManager = new TaskRepositoryManager();

-

-		mockRepositoryConnector = new FullMockRepositoryConnector();

-		repositoryManager.addRepositoryConnector(mockRepositoryConnector);

-		mockRepository = new TaskRepository(MockRepositoryConnector.CONNECTOR_KIND,

-				MockRepositoryConnector.REPOSITORY_URL);

-		repositoryManager.addRepository(mockRepository);

-

-		repositoryManager.addRepositoryConnector(new LocalRepositoryConnector());

-		localRepository = new TaskRepository(LocalRepositoryConnector.CONNECTOR_KIND,

-				LocalRepositoryConnector.REPOSITORY_URL);

-		repositoryManager.addRepository(localRepository);

-

-		dataStore = new TaskDataStore(repositoryManager);

-		activityManager = new TaskActivityManager(repositoryManager, taskList);

-		repositoryModel = new RepositoryModel(taskList, repositoryManager);

-		synchronizationManger = new SynchronizationManger(repositoryModel);

-		dataManager = new TaskDataManager(dataStore, repositoryManager, taskList, activityManager,

-				synchronizationManger);

-

-	}

-

-	public TaskList getTaskList() {

-		return taskList;

-	}

-

-	public TaskRepositoryManager getRepositoryManager() {

-		return repositoryManager;

-	}

-

-	public TaskDataManager getDataManager() {

-		return dataManager;

-	}

-

-	public TaskDataStore getDataStore() {

-		return dataStore;

-	}

-

-	public TaskActivityManager getActivityManager() {

-		return activityManager;

-	}

-

-	public SynchronizationManger getSynchronizationManger() {

-		return synchronizationManger;

-	}

-

-	public RepositoryModel getRepositoryModel() {

-		return repositoryModel;

-	}

-

-	public ITask createLocalTask() {

-		LocalTask task = new LocalTask(Integer.toString(idSeed.incrementAndGet()), "summary");

-		task.setNotes("description " + task.getTaskKey());

-

-		taskList.addTask(task);

-

-		return task;

-	}

-

-	public ITask createRepositoryTask() throws CoreException {

-		MockTask task = new MockTask(Integer.toString(idSeed.incrementAndGet()));

-

-		TaskData taskData = new TaskData(new TaskAttributeMapper(mockRepository), task.getConnectorKind(),

-				task.getRepositoryUrl(), task.getTaskId());

-

-		mockRepositoryConnector.getTaskDataHandler().initializeTaskData(mockRepository, taskData, new TaskMapping(),

-				new NullProgressMonitor());

-

-		taskData.getRoot().getMappedAttribute(TaskAttribute.SUMMARY).setValue("summary");

-		taskData.getRoot()

-				.getMappedAttribute(TaskAttribute.DATE_CREATION)

-				.setValue(Long.toString(new Date().getTime()));

-		taskData.getRoot().getMappedAttribute(TaskAttribute.USER_REPORTER).setValue("reporter@example.com");

-		taskData.getRoot().getMappedAttribute(TaskAttribute.USER_ASSIGNED).setValue("assignee@example.com");

-		taskData.getRoot()

-				.getMappedAttribute(TaskAttribute.DESCRIPTION)

-				.setValue("task description " + task.getTaskKey());

-

-		mockRepositoryConnector.getTaskMapping(taskData).applyTo(task);

-

-		dataManager.putSubmittedTaskData(task, taskData, new DelegatingProgressMonitor());

-		taskList.addTask(task);

-

-		return task;

-	}

-

-	public TaskRepository getMockRepository() {

-		return mockRepository;

-	}

-

-	public FullMockRepositoryConnector getMockRepositoryConnector() {

-		return mockRepositoryConnector;

-	}

-}

+/*******************************************************************************
+ * Copyright (c) 2011 Tasktop Technologies and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Tasktop Technologies - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylyn.internal.tasks.index.tests.util;
+
+import java.util.Date;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.mylyn.commons.core.DelegatingProgressMonitor;
+import org.eclipse.mylyn.internal.tasks.core.LocalRepositoryConnector;
+import org.eclipse.mylyn.internal.tasks.core.LocalTask;
+import org.eclipse.mylyn.internal.tasks.core.RepositoryModel;
+import org.eclipse.mylyn.internal.tasks.core.TaskActivityManager;
+import org.eclipse.mylyn.internal.tasks.core.TaskList;
+import org.eclipse.mylyn.internal.tasks.core.TaskRepositoryManager;
+import org.eclipse.mylyn.internal.tasks.core.data.SynchronizationManger;
+import org.eclipse.mylyn.internal.tasks.core.data.TaskDataManager;
+import org.eclipse.mylyn.internal.tasks.core.data.TaskDataStore;
+import org.eclipse.mylyn.tasks.core.ITask;
+import org.eclipse.mylyn.tasks.core.TaskMapping;
+import org.eclipse.mylyn.tasks.core.TaskRepository;
+import org.eclipse.mylyn.tasks.core.data.TaskAttribute;
+import org.eclipse.mylyn.tasks.core.data.TaskAttributeMapper;
+import org.eclipse.mylyn.tasks.core.data.TaskData;
+import org.eclipse.mylyn.tasks.tests.connector.MockRepositoryConnector;
+import org.eclipse.mylyn.tasks.tests.connector.MockTask;
+
+public class MockTestContext {
+
+	private final TaskList taskList;
+
+	private final TaskRepositoryManager repositoryManager;
+
+	private final TaskDataManager dataManager;
+
+	private final TaskDataStore dataStore;
+
+	private final TaskActivityManager activityManager;
+
+	private final SynchronizationManger synchronizationManger;
+
+	private final RepositoryModel repositoryModel;
+
+	private final TaskRepository mockRepository;
+
+	private final TaskRepository localRepository;
+
+	private final AtomicInteger idSeed = new AtomicInteger(1003);
+
+	private final FullMockRepositoryConnector mockRepositoryConnector;
+
+	public MockTestContext() {
+		taskList = new TaskList();
+		repositoryManager = new TaskRepositoryManager();
+
+		mockRepositoryConnector = new FullMockRepositoryConnector();
+		repositoryManager.addRepositoryConnector(mockRepositoryConnector);
+		mockRepository = new TaskRepository(MockRepositoryConnector.CONNECTOR_KIND,
+				MockRepositoryConnector.REPOSITORY_URL);
+		repositoryManager.addRepository(mockRepository);
+
+		repositoryManager.addRepositoryConnector(new LocalRepositoryConnector());
+		localRepository = new TaskRepository(LocalRepositoryConnector.CONNECTOR_KIND,
+				LocalRepositoryConnector.REPOSITORY_URL);
+		repositoryManager.addRepository(localRepository);
+
+		dataStore = new TaskDataStore(repositoryManager);
+		activityManager = new TaskActivityManager(repositoryManager, taskList);
+		repositoryModel = new RepositoryModel(taskList, repositoryManager);
+		synchronizationManger = new SynchronizationManger(repositoryModel);
+		dataManager = new TaskDataManager(dataStore, repositoryManager, taskList, activityManager,
+				synchronizationManger);
+
+	}
+
+	public TaskList getTaskList() {
+		return taskList;
+	}
+
+	public TaskRepositoryManager getRepositoryManager() {
+		return repositoryManager;
+	}
+
+	public TaskDataManager getDataManager() {
+		return dataManager;
+	}
+
+	public TaskDataStore getDataStore() {
+		return dataStore;
+	}
+
+	public TaskActivityManager getActivityManager() {
+		return activityManager;
+	}
+
+	public SynchronizationManger getSynchronizationManger() {
+		return synchronizationManger;
+	}
+
+	public RepositoryModel getRepositoryModel() {
+		return repositoryModel;
+	}
+
+	public ITask createLocalTask() {
+		LocalTask task = new LocalTask(Integer.toString(idSeed.incrementAndGet()), "summary");
+		task.setNotes("description " + task.getTaskKey());
+
+		taskList.addTask(task);
+
+		return task;
+	}
+
+	public ITask createRepositoryTask() throws CoreException {
+		MockTask task = new MockTask(Integer.toString(idSeed.incrementAndGet()));
+
+		TaskData taskData = new TaskData(new TaskAttributeMapper(mockRepository), task.getConnectorKind(),
+				task.getRepositoryUrl(), task.getTaskId());
+
+		mockRepositoryConnector.getTaskDataHandler().initializeTaskData(mockRepository, taskData, new TaskMapping(),
+				new NullProgressMonitor());
+
+		taskData.getRoot().getMappedAttribute(TaskAttribute.SUMMARY).setValue("summary");
+		taskData.getRoot()
+				.getMappedAttribute(TaskAttribute.DATE_CREATION)
+				.setValue(Long.toString(new Date().getTime()));
+		taskData.getRoot().getMappedAttribute(TaskAttribute.USER_REPORTER).setValue("reporter@example.com");
+		taskData.getRoot().getMappedAttribute(TaskAttribute.USER_ASSIGNED).setValue("assignee@example.com");
+		taskData.getRoot()
+				.getMappedAttribute(TaskAttribute.DESCRIPTION)
+				.setValue("task description " + task.getTaskKey());
+
+		mockRepositoryConnector.getTaskMapping(taskData).applyTo(task);
+
+		dataManager.putSubmittedTaskData(task, taskData, new DelegatingProgressMonitor());
+		taskList.addTask(task);
+
+		return task;
+	}
+
+	public TaskRepository getMockRepository() {
+		return mockRepository;
+	}
+
+	public FullMockRepositoryConnector getMockRepositoryConnector() {
+		return mockRepositoryConnector;
+	}
+}
diff --git a/org.eclipse.mylyn.tasks.index.ui/.classpath b/org.eclipse.mylyn.tasks.index.ui/.classpath
index 3f6d4f4..f092a94 100644
--- a/org.eclipse.mylyn.tasks.index.ui/.classpath
+++ b/org.eclipse.mylyn.tasks.index.ui/.classpath
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<classpath>

-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>

-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins">

-		<accessrules>

-			<accessrule kind="accessible" pattern="org/eclipse/mylyn/internal/tasks/core/**"/>

-			<accessrule kind="accessible" pattern="org/eclipse/mylyn/internal/tasks/index/core/**"/>

-			<accessrule kind="accessible" pattern="org/eclipse/mylyn/internal/tasks/ui/**"/>

-			<accessrule kind="accessible" pattern="org/eclipse/mylyn/internal/provisional/**"/>

-		</accessrules>

-	</classpathentry>

-	<classpathentry kind="src" path="src"/>

-	<classpathentry kind="output" path="bin"/>

-</classpath>

+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins">
+		<accessrules>
+			<accessrule kind="accessible" pattern="org/eclipse/mylyn/internal/tasks/core/**"/>
+			<accessrule kind="accessible" pattern="org/eclipse/mylyn/internal/tasks/index/core/**"/>
+			<accessrule kind="accessible" pattern="org/eclipse/mylyn/internal/tasks/ui/**"/>
+			<accessrule kind="accessible" pattern="org/eclipse/mylyn/internal/provisional/**"/>
+		</accessrules>
+	</classpathentry>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.eclipse.mylyn.tasks.index.ui/.project b/org.eclipse.mylyn.tasks.index.ui/.project
index c6bb2c8..89bd22b 100644
--- a/org.eclipse.mylyn.tasks.index.ui/.project
+++ b/org.eclipse.mylyn.tasks.index.ui/.project
@@ -1,34 +1,34 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<projectDescription>

-	<name>org.eclipse.mylyn.tasks.index.ui</name>

-	<comment></comment>

-	<projects>

-	</projects>

-	<buildSpec>

-		<buildCommand>

-			<name>org.eclipse.jdt.core.javabuilder</name>

-			<arguments>

-			</arguments>

-		</buildCommand>

-		<buildCommand>

-			<name>org.eclipse.pde.ManifestBuilder</name>

-			<arguments>

-			</arguments>

-		</buildCommand>

-		<buildCommand>

-			<name>org.eclipse.pde.SchemaBuilder</name>

-			<arguments>

-			</arguments>

-		</buildCommand>

+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.mylyn.tasks.index.ui</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 		<buildCommand>
 			<name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
 			<arguments>
 			</arguments>
 		</buildCommand>
-	</buildSpec>

-	<natures>

-		<nature>org.eclipse.pde.PluginNature</nature>

-		<nature>org.eclipse.jdt.core.javanature</nature>

+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
 		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
-	</natures>

-</projectDescription>

+	</natures>
+</projectDescription>
diff --git a/org.eclipse.mylyn.tasks.index.ui/.settings/org.eclipse.core.runtime.prefs b/org.eclipse.mylyn.tasks.index.ui/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/org.eclipse.mylyn.tasks.index.ui/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/org.eclipse.mylyn.tasks.index.ui/.settings/org.eclipse.pde.prefs b/org.eclipse.mylyn.tasks.index.ui/.settings/org.eclipse.pde.prefs
index c56b02e..3648b45 100644
--- a/org.eclipse.mylyn.tasks.index.ui/.settings/org.eclipse.pde.prefs
+++ b/org.eclipse.mylyn.tasks.index.ui/.settings/org.eclipse.pde.prefs
@@ -1,35 +1,35 @@
-#Tue Oct 18 18:20:28 PDT 2011

-compilers.f.unresolved-features=1

-compilers.f.unresolved-plugins=1

-compilers.incompatible-environment=1

-compilers.p.build=1

-compilers.p.build.bin.includes=1

-compilers.p.build.encodings=2

-compilers.p.build.java.compiler=2

-compilers.p.build.java.compliance=1

-compilers.p.build.missing.output=2

-compilers.p.build.output.library=1

-compilers.p.build.source.library=1

-compilers.p.build.src.includes=1

-compilers.p.deprecated=1

-compilers.p.discouraged-class=2

-compilers.p.internal=2

-compilers.p.missing-bundle-classpath-entries=1

-compilers.p.missing-packages=1

-compilers.p.missing-version-export-package=2

-compilers.p.missing-version-import-package=2

-compilers.p.missing-version-require-bundle=2

-compilers.p.no-required-att=0

-compilers.p.not-externalized-att=2

-compilers.p.unknown-attribute=0

-compilers.p.unknown-class=0

-compilers.p.unknown-element=0

-compilers.p.unknown-identifier=1

-compilers.p.unknown-resource=0

-compilers.p.unresolved-ex-points=0

-compilers.p.unresolved-import=0

-compilers.s.create-docs=false

-compilers.s.doc-folder=doc

-compilers.s.open-tags=1

-compilers.use-project=true

-eclipse.preferences.version=1

+#Tue Oct 18 18:20:28 PDT 2011
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=2
+compilers.p.internal=2
+compilers.p.missing-bundle-classpath-entries=1
+compilers.p.missing-packages=1
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.not-externalized-att=2
+compilers.p.unknown-attribute=0
+compilers.p.unknown-class=0
+compilers.p.unknown-element=0
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=0
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/org.eclipse.mylyn.tasks.index.ui/OSGI-INF/l10n/bundle.properties b/org.eclipse.mylyn.tasks.index.ui/OSGI-INF/l10n/bundle.properties
index 6f3dd07..f184885 100644
--- a/org.eclipse.mylyn.tasks.index.ui/OSGI-INF/l10n/bundle.properties
+++ b/org.eclipse.mylyn.tasks.index.ui/OSGI-INF/l10n/bundle.properties
@@ -1,12 +1,12 @@
-###############################################################################

-# Copyright (c) 2011 Tasktop Technologies and others.

-# All rights reserved. This program and the accompanying materials

-# are made available under the terms of the Eclipse Public License v1.0

-# which accompanies this distribution, and is available at

-# http://www.eclipse.org/legal/epl-v10.html

-#

-# Contributors:

-#      Tasktop Technologies - initial API and implementation

-###############################################################################

-#Properties file for org.eclipse.mylyn.tasks.index.ui

+###############################################################################
+# Copyright (c) 2011 Tasktop Technologies and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#      Tasktop Technologies - initial API and implementation
+###############################################################################
+#Properties file for org.eclipse.mylyn.tasks.index.ui
 Bundle-Name = Index
\ No newline at end of file
diff --git a/org.eclipse.mylyn.tasks.index.ui/build.properties b/org.eclipse.mylyn.tasks.index.ui/build.properties
index 8def890..6afd978 100644
--- a/org.eclipse.mylyn.tasks.index.ui/build.properties
+++ b/org.eclipse.mylyn.tasks.index.ui/build.properties
@@ -1,9 +1,9 @@
-source.. = src/

-output.. = bin/

-bin.includes = META-INF/,\

-               .,\

-               plugin.xml,\

-               OSGI-INF/,\

-               about.html

-src.includes = about.html

-

+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml,\
+               OSGI-INF/,\
+               about.html
+src.includes = about.html
+
diff --git a/org.eclipse.mylyn.tasks.index.ui/plugin.xml b/org.eclipse.mylyn.tasks.index.ui/plugin.xml
index 8dd3ec5..57353cb 100644
--- a/org.eclipse.mylyn.tasks.index.ui/plugin.xml
+++ b/org.eclipse.mylyn.tasks.index.ui/plugin.xml
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<?eclipse version="3.4"?>

-<plugin>

-   <extension

-         point="org.eclipse.mylyn.tasks.ui.searchHandler">

-      <searchHandler

-            class="org.eclipse.mylyn.internal.tasks.index.ui.IndexSearchHandler"/>

-   </extension>

-</plugin>

+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.mylyn.tasks.ui.searchHandler">
+      <searchHandler
+            class="org.eclipse.mylyn.internal.tasks.index.ui.IndexSearchHandler"/>
+   </extension>
+</plugin>
diff --git a/org.eclipse.mylyn.tasks.index.ui/src/org/eclipse/mylyn/internal/tasks/index/ui/ContentProposal.java b/org.eclipse.mylyn.tasks.index.ui/src/org/eclipse/mylyn/internal/tasks/index/ui/ContentProposal.java
index 6c0fd36..f5979bc 100644
--- a/org.eclipse.mylyn.tasks.index.ui/src/org/eclipse/mylyn/internal/tasks/index/ui/ContentProposal.java
+++ b/org.eclipse.mylyn.tasks.index.ui/src/org/eclipse/mylyn/internal/tasks/index/ui/ContentProposal.java
@@ -1,53 +1,53 @@
-/*******************************************************************************

- * Copyright (c) 2011 Tasktop Technologies and others.

- * All rights reserved. This program and the accompanying materials

- * are made available under the terms of the Eclipse Public License v1.0

- * which accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- *

- * Contributors:

- *     Tasktop Technologies - initial API and implementation

- *******************************************************************************/

-

-package org.eclipse.mylyn.internal.tasks.index.ui;

-

-import org.eclipse.jface.fieldassist.IContentProposal;

-

-class ContentProposal implements IContentProposal {

-

-	private final String content;

-

-	private final int cursorPosition;

-

-	private final String label;

-

-	private final String description;

-

-	public ContentProposal(String content, String label, String description) {

-		this(content, label, description, content.length());

-	}

-

-	public ContentProposal(String content, String label, String description, int cursorPosition) {

-		this.content = content;

-		this.cursorPosition = cursorPosition;

-		this.label = label;

-		this.description = description;

-	}

-

-	public String getContent() {

-		return content;

-	}

-

-	public int getCursorPosition() {

-		return cursorPosition;

-	}

-

-	public String getLabel() {

-		return label;

-	}

-

-	public String getDescription() {

-		return description;

-	}

-

-}

+/*******************************************************************************
+ * Copyright (c) 2011 Tasktop Technologies and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Tasktop Technologies - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylyn.internal.tasks.index.ui;
+
+import org.eclipse.jface.fieldassist.IContentProposal;
+
+class ContentProposal implements IContentProposal {
+
+	private final String content;
+
+	private final int cursorPosition;
+
+	private final String label;
+
+	private final String description;
+
+	public ContentProposal(String content, String label, String description) {
+		this(content, label, description, content.length());
+	}
+
+	public ContentProposal(String content, String label, String description, int cursorPosition) {
+		this.content = content;
+		this.cursorPosition = cursorPosition;
+		this.label = label;
+		this.description = description;
+	}
+
+	public String getContent() {
+		return content;
+	}
+
+	public int getCursorPosition() {
+		return cursorPosition;
+	}
+
+	public String getLabel() {
+		return label;
+	}
+
+	public String getDescription() {
+		return description;
+	}
+
+}
diff --git a/org.eclipse.mylyn.tasks.index.ui/src/org/eclipse/mylyn/internal/tasks/index/ui/IndexSearchHandler.java b/org.eclipse.mylyn.tasks.index.ui/src/org/eclipse/mylyn/internal/tasks/index/ui/IndexSearchHandler.java
index 1b71b3a..95ed3f3 100644
--- a/org.eclipse.mylyn.tasks.index.ui/src/org/eclipse/mylyn/internal/tasks/index/ui/IndexSearchHandler.java
+++ b/org.eclipse.mylyn.tasks.index.ui/src/org/eclipse/mylyn/internal/tasks/index/ui/IndexSearchHandler.java
@@ -1,236 +1,236 @@
-/*******************************************************************************

- * Copyright (c) 2011 Tasktop Technologies.

- * All rights reserved. This program and the accompanying materials

- * are made available under the terms of the Eclipse Public License v1.0

- * which accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- *

- * Contributors:

- *     Tasktop Technologies - initial API and implementation

- *******************************************************************************/

-package org.eclipse.mylyn.internal.tasks.index.ui;

-

-import java.io.File;

-import java.util.ArrayList;

-import java.util.Calendar;

-import java.util.Collection;

-import java.util.Date;

-import java.util.GregorianCalendar;

-import java.util.List;

-import java.util.Set;

-import java.util.TreeSet;

-import java.util.concurrent.atomic.AtomicInteger;

-

-import org.eclipse.jface.fieldassist.ContentProposalAdapter;

-import org.eclipse.jface.fieldassist.IContentProposal;

-import org.eclipse.jface.fieldassist.IContentProposalProvider;

-import org.eclipse.jface.fieldassist.TextContentAdapter;

-import org.eclipse.jface.layout.GridLayoutFactory;

-import org.eclipse.mylyn.internal.tasks.core.AbstractTask;

-import org.eclipse.mylyn.internal.tasks.index.core.TaskListIndex;

-import org.eclipse.mylyn.internal.tasks.index.core.TaskListIndex.IndexField;

-import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin;

-import org.eclipse.mylyn.internal.tasks.ui.search.AbstractSearchHandler;

-import org.eclipse.osgi.util.NLS;

-import org.eclipse.swt.SWT;

-import org.eclipse.swt.events.SelectionAdapter;

-import org.eclipse.swt.events.SelectionEvent;

-import org.eclipse.swt.widgets.Button;

-import org.eclipse.swt.widgets.Composite;

-import org.eclipse.swt.widgets.Text;

-import org.eclipse.ui.dialogs.PatternFilter;

-import org.eclipse.ui.fieldassist.ContentAssistCommandAdapter;

-

-/**

- * @author David Green

- */

-public class IndexSearchHandler extends AbstractSearchHandler {

-

-	private static TaskListIndex theIndex;

-

-	private static AtomicInteger referenceCount = new AtomicInteger();

-

-	private TaskListIndex index;

-

-	public IndexSearchHandler() {

-	}

-

-	@Override

-	public Composite createSearchComposite(Composite parent) {

-		Composite container = new Composite(parent, SWT.NULL);

-		GridLayoutFactory.swtDefaults().applyTo(container);

-

-		final Button button = new Button(container, SWT.CHECK);

-		button.setText(Messages.IndexSearchHandler_summaryOnly);

-		button.setToolTipText(Messages.IndexSearchHandler_summaryOnly_tooltip);

-		button.setSelection(true);

-

-		button.addSelectionListener(new SelectionAdapter() {

-			@Override

-			public void widgetSelected(SelectionEvent e) {

-				IndexField newDefaultField = button.getSelection() ? IndexField.SUMMARY : IndexField.CONTENT;

-				index.setDefaultField(newDefaultField);

-				fireFilterChanged();

-			}

-		});

-

-		return container;

-	}

-

-	@Override

-	public PatternFilter createFilter() {

-		synchronized (IndexSearchHandler.class) {

-			if (index == null) {

-				if (theIndex == null) {

-					theIndex = new TaskListIndex(TasksUiPlugin.getTaskList(), TasksUiPlugin.getTaskDataManager(),

-							new File(TasksUiPlugin.getDefault().getDataDirectory(), ".taskListIndex")); //$NON-NLS-1$

-				}

-				index = theIndex;

-				referenceCount.incrementAndGet();

-			}

-		}

-		return new IndexedSubstringPatternFilter(index);

-	}

-

-	@Override

-	public void adaptTextSearchControl(Text textControl) {

-		IContentProposalProvider proposalProvider = new IContentProposalProvider() {

-			public IContentProposal[] getProposals(String contents, int position) {

-				List<IContentProposal> proposals = new ArrayList<IContentProposal>(10);

-

-				String fieldPrefix = ""; //$NON-NLS-1$

-				String prefix = ""; //$NON-NLS-1$

-				if (position >= 0 && position <= contents.length()) {

-					int i = position;

-					while (i > 0 && !Character.isWhitespace(contents.charAt(i - 1)) && contents.charAt(i - 1) != ':') {

-						--i;

-					}

-					if (i > 0 && contents.charAt(i - 1) == ':') {

-						int fieldEnd = i - 1;

-						int fieldStart = i - 1;

-						while (fieldStart > 0 && Character.isLetter(contents.charAt(fieldStart - 1))) {

-							--fieldStart;

-						}

-						fieldPrefix = contents.substring(fieldStart, fieldEnd);

-					}

-

-					prefix = contents.substring(i, position);

-				}

-

-				// if we have a field prefix

-				if (fieldPrefix.length() > 0) {

-					IndexField indexField = null;

-					try {

-						indexField = IndexField.fromFieldName(fieldPrefix);

-					} catch (IllegalArgumentException e) {

-					}

-

-					// if it's a person field then suggest

-					// people from the task list

-					if (indexField != null && indexField.isPersonField()) {

-						Set<String> addresses = new TreeSet<String>();

-

-						Collection<AbstractTask> allTasks = TasksUiPlugin.getTaskList().getAllTasks();

-						for (AbstractTask task : allTasks) {

-							addAddresses(addresses, task);

-						}

-

-						for (String address : addresses) {

-							if (address.startsWith(prefix)) {

-								proposals.add(new ContentProposal(address.substring(prefix.length()), address, null));

-							}

-						}

-					}

-

-				} else {

-					final Date now = new Date();

-					final Date dateSearchUpperBound;

-					final Date dateSearchOneWeekLowerBound;

-					{

-						GregorianCalendar calendar = new GregorianCalendar();

-

-						calendar.setTime(now);

-						calendar.add(Calendar.DAY_OF_WEEK, 1); // one day in future due to GMT conversion in index

-						dateSearchUpperBound = calendar.getTime();

-

-						calendar.setTime(now);

-						calendar.add(Calendar.DAY_OF_WEEK, -7);

-						dateSearchOneWeekLowerBound = calendar.getTime();

-					}

-

-					// suggest field name prefixes

-					for (IndexField field : IndexField.values()) {

-

-						// searching on URL is not useful

-						if (!field.isUserVisible()) {

-							continue;

-						}

-

-						if (field.fieldName().startsWith(prefix)) {

-							String description;

-							switch (field) {

-							case CONTENT:

-								description = Messages.IndexSearchHandler_hint_content;

-								break;

-							case PERSON:

-								description = Messages.IndexSearchHandler_hint_person;

-								break;

-							default:

-								description = NLS.bind(Messages.IndexSearchHandler_hint_generic, field.fieldName());

-							}

-							proposals.add(new ContentProposal(field.fieldName().substring(prefix.length()) + ":", //$NON-NLS-1$

-									field.fieldName(), description));

-

-							// for date fields give suggestion of date range search

-							if (field.isDateTime()) {

-								description = NLS.bind(Messages.IndexSearchHandler_Generic_date_range_search_1_week,

-										field.fieldName());

-

-								String label = NLS.bind(Messages.IndexSearchHandler_Past_week_date_range_label,

-										field.fieldName());

-

-								String queryText = index.computeQueryFieldDateRange(field, dateSearchOneWeekLowerBound,

-										dateSearchUpperBound);

-								proposals.add(new ContentProposal(queryText, label, description));

-							}

-						}

-					}

-				}

-

-				return proposals.toArray(new IContentProposal[proposals.size()]);

-			}

-

-			private void addAddresses(Set<String> addresses, AbstractTask task) {

-				String name = task.getOwner();

-				if (name != null && name.trim().length() > 0) {

-					addresses.add(name.trim());

-				}

-			}

-		};

-		ContentAssistCommandAdapter adapter = new ContentAssistCommandAdapter(textControl, new TextContentAdapter(),

-				proposalProvider, null, new char[0]);

-		adapter.setProposalAcceptanceStyle(ContentProposalAdapter.PROPOSAL_INSERT);

-

-		// if we decorate the control it lets the user know that they can use content assist...

-		// BUT it looks pretty bad.

-//		ControlDecoration controlDecoration = new ControlDecoration(textControl, (SWT.TOP | SWT.LEFT));

-//		controlDecoration.setShowOnlyOnFocus(true);

-//		FieldDecoration contentProposalImage = FieldDecorationRegistry.getDefault().getFieldDecoration(

-//				FieldDecorationRegistry.DEC_CONTENT_PROPOSAL);

-//		controlDecoration.setImage(contentProposalImage.getImage());

-	}

-

-	@Override

-	public void dispose() {

-		synchronized (IndexSearchHandler.class) {

-			if (index != null) {

-				index = null;

-				if (referenceCount.decrementAndGet() == 0) {

-					theIndex.close();

-					theIndex = null;

-				}

-			}

-		}

-	}

-

-}

+/*******************************************************************************
+ * Copyright (c) 2011 Tasktop Technologies.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Tasktop Technologies - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.mylyn.internal.tasks.index.ui;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Collection;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.List;
+import java.util.Set;
+import java.util.TreeSet;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import org.eclipse.jface.fieldassist.ContentProposalAdapter;
+import org.eclipse.jface.fieldassist.IContentProposal;
+import org.eclipse.jface.fieldassist.IContentProposalProvider;
+import org.eclipse.jface.fieldassist.TextContentAdapter;
+import org.eclipse.jface.layout.GridLayoutFactory;
+import org.eclipse.mylyn.internal.tasks.core.AbstractTask;
+import org.eclipse.mylyn.internal.tasks.index.core.TaskListIndex;
+import org.eclipse.mylyn.internal.tasks.index.core.TaskListIndex.IndexField;
+import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin;
+import org.eclipse.mylyn.internal.tasks.ui.search.AbstractSearchHandler;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.dialogs.PatternFilter;
+import org.eclipse.ui.fieldassist.ContentAssistCommandAdapter;
+
+/**
+ * @author David Green
+ */
+public class IndexSearchHandler extends AbstractSearchHandler {
+
+	private static TaskListIndex theIndex;
+
+	private static AtomicInteger referenceCount = new AtomicInteger();
+
+	private TaskListIndex index;
+
+	public IndexSearchHandler() {
+	}
+
+	@Override
+	public Composite createSearchComposite(Composite parent) {
+		Composite container = new Composite(parent, SWT.NULL);
+		GridLayoutFactory.swtDefaults().applyTo(container);
+
+		final Button button = new Button(container, SWT.CHECK);
+		button.setText(Messages.IndexSearchHandler_summaryOnly);
+		button.setToolTipText(Messages.IndexSearchHandler_summaryOnly_tooltip);
+		button.setSelection(true);
+
+		button.addSelectionListener(new SelectionAdapter() {
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				IndexField newDefaultField = button.getSelection() ? IndexField.SUMMARY : IndexField.CONTENT;
+				index.setDefaultField(newDefaultField);
+				fireFilterChanged();
+			}
+		});
+
+		return container;
+	}
+
+	@Override
+	public PatternFilter createFilter() {
+		synchronized (IndexSearchHandler.class) {
+			if (index == null) {
+				if (theIndex == null) {
+					theIndex = new TaskListIndex(TasksUiPlugin.getTaskList(), TasksUiPlugin.getTaskDataManager(),
+							new File(TasksUiPlugin.getDefault().getDataDirectory(), ".taskListIndex")); //$NON-NLS-1$
+				}
+				index = theIndex;
+				referenceCount.incrementAndGet();
+			}
+		}
+		return new IndexedSubstringPatternFilter(index);
+	}
+
+	@Override
+	public void adaptTextSearchControl(Text textControl) {
+		IContentProposalProvider proposalProvider = new IContentProposalProvider() {
+			public IContentProposal[] getProposals(String contents, int position) {
+				List<IContentProposal> proposals = new ArrayList<IContentProposal>(10);
+
+				String fieldPrefix = ""; //$NON-NLS-1$
+				String prefix = ""; //$NON-NLS-1$
+				if (position >= 0 && position <= contents.length()) {
+					int i = position;
+					while (i > 0 && !Character.isWhitespace(contents.charAt(i - 1)) && contents.charAt(i - 1) != ':') {
+						--i;
+					}
+					if (i > 0 && contents.charAt(i - 1) == ':') {
+						int fieldEnd = i - 1;
+						int fieldStart = i - 1;
+						while (fieldStart > 0 && Character.isLetter(contents.charAt(fieldStart - 1))) {
+							--fieldStart;
+						}
+						fieldPrefix = contents.substring(fieldStart, fieldEnd);
+					}
+
+					prefix = contents.substring(i, position);
+				}
+
+				// if we have a field prefix
+				if (fieldPrefix.length() > 0) {
+					IndexField indexField = null;
+					try {
+						indexField = IndexField.fromFieldName(fieldPrefix);
+					} catch (IllegalArgumentException e) {
+					}
+
+					// if it's a person field then suggest
+					// people from the task list
+					if (indexField != null && indexField.isPersonField()) {
+						Set<String> addresses = new TreeSet<String>();
+
+						Collection<AbstractTask> allTasks = TasksUiPlugin.getTaskList().getAllTasks();
+						for (AbstractTask task : allTasks) {
+							addAddresses(addresses, task);
+						}
+
+						for (String address : addresses) {
+							if (address.startsWith(prefix)) {
+								proposals.add(new ContentProposal(address.substring(prefix.length()), address, null));
+							}
+						}
+					}
+
+				} else {
+					final Date now = new Date();
+					final Date dateSearchUpperBound;
+					final Date dateSearchOneWeekLowerBound;
+					{
+						GregorianCalendar calendar = new GregorianCalendar();
+
+						calendar.setTime(now);
+						calendar.add(Calendar.DAY_OF_WEEK, 1); // one day in future due to GMT conversion in index
+						dateSearchUpperBound = calendar.getTime();
+
+						calendar.setTime(now);
+						calendar.add(Calendar.DAY_OF_WEEK, -7);
+						dateSearchOneWeekLowerBound = calendar.getTime();
+					}
+
+					// suggest field name prefixes
+					for (IndexField field : IndexField.values()) {
+
+						// searching on URL is not useful
+						if (!field.isUserVisible()) {
+							continue;
+						}
+
+						if (field.fieldName().startsWith(prefix)) {
+							String description;
+							switch (field) {
+							case CONTENT:
+								description = Messages.IndexSearchHandler_hint_content;
+								break;
+							case PERSON:
+								description = Messages.IndexSearchHandler_hint_person;
+								break;
+							default:
+								description = NLS.bind(Messages.IndexSearchHandler_hint_generic, field.fieldName());
+							}
+							proposals.add(new ContentProposal(field.fieldName().substring(prefix.length()) + ":", //$NON-NLS-1$
+									field.fieldName(), description));
+
+							// for date fields give suggestion of date range search
+							if (field.isDateTime()) {
+								description = NLS.bind(Messages.IndexSearchHandler_Generic_date_range_search_1_week,
+										field.fieldName());
+
+								String label = NLS.bind(Messages.IndexSearchHandler_Past_week_date_range_label,
+										field.fieldName());
+
+								String queryText = index.computeQueryFieldDateRange(field, dateSearchOneWeekLowerBound,
+										dateSearchUpperBound);
+								proposals.add(new ContentProposal(queryText, label, description));
+							}
+						}
+					}
+				}
+
+				return proposals.toArray(new IContentProposal[proposals.size()]);
+			}
+
+			private void addAddresses(Set<String> addresses, AbstractTask task) {
+				String name = task.getOwner();
+				if (name != null && name.trim().length() > 0) {
+					addresses.add(name.trim());
+				}
+			}
+		};
+		ContentAssistCommandAdapter adapter = new ContentAssistCommandAdapter(textControl, new TextContentAdapter(),
+				proposalProvider, null, new char[0]);
+		adapter.setProposalAcceptanceStyle(ContentProposalAdapter.PROPOSAL_INSERT);
+
+		// if we decorate the control it lets the user know that they can use content assist...
+		// BUT it looks pretty bad.
+//		ControlDecoration controlDecoration = new ControlDecoration(textControl, (SWT.TOP | SWT.LEFT));
+//		controlDecoration.setShowOnlyOnFocus(true);
+//		FieldDecoration contentProposalImage = FieldDecorationRegistry.getDefault().getFieldDecoration(
+//				FieldDecorationRegistry.DEC_CONTENT_PROPOSAL);
+//		controlDecoration.setImage(contentProposalImage.getImage());
+	}
+
+	@Override
+	public void dispose() {
+		synchronized (IndexSearchHandler.class) {
+			if (index != null) {
+				index = null;
+				if (referenceCount.decrementAndGet() == 0) {
+					theIndex.close();
+					theIndex = null;
+				}
+			}
+		}
+	}
+
+}
diff --git a/org.eclipse.mylyn.tasks.index.ui/src/org/eclipse/mylyn/internal/tasks/index/ui/IndexedSubstringPatternFilter.java b/org.eclipse.mylyn.tasks.index.ui/src/org/eclipse/mylyn/internal/tasks/index/ui/IndexedSubstringPatternFilter.java
index c3ce1f5..46fe2a9 100644
--- a/org.eclipse.mylyn.tasks.index.ui/src/org/eclipse/mylyn/internal/tasks/index/ui/IndexedSubstringPatternFilter.java
+++ b/org.eclipse.mylyn.tasks.index.ui/src/org/eclipse/mylyn/internal/tasks/index/ui/IndexedSubstringPatternFilter.java
@@ -1,51 +1,51 @@
-/*******************************************************************************

- * Copyright (c) 2011 Tasktop Technologies.

- * All rights reserved. This program and the accompanying materials

- * are made available under the terms of the Eclipse Public License v1.0

- * which accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- *

- * Contributors:

- *     Tasktop Technologies - initial API and implementation

- *******************************************************************************/

-package org.eclipse.mylyn.internal.tasks.index.ui;

-

-import org.eclipse.jface.viewers.Viewer;

-import org.eclipse.mylyn.internal.provisional.commons.ui.SubstringPatternFilter;

-import org.eclipse.mylyn.internal.tasks.index.core.TaskListIndex;

-import org.eclipse.mylyn.tasks.core.ITask;

-

-public class IndexedSubstringPatternFilter extends SubstringPatternFilter {

-

-	private final TaskListIndex index;

-

-	private String patternString;

-

-	public IndexedSubstringPatternFilter(TaskListIndex index) {

-		this.index = index;

-	}

-

-	@Override

-	public void setPattern(String patternString) {

-		if (patternString != null) {

-			patternString = patternString.trim();

-		}

-		this.patternString = patternString;

-		super.setPattern(patternString);

-	}

-

-	@Override

-	protected boolean isLeafMatch(Viewer viewer, Object element) {

-		if (patternString != null && patternString.length() > 0) {

-			if (element instanceof ITask) {

-				ITask task = (ITask) element;

-				if (index.matches(task, patternString)) {

-					return true;

-				} else {

-					// fall through so that we get non-indexed matching semantics

-				}

-			}

-		}

-		return super.isLeafMatch(viewer, element);

-	}

-}

+/*******************************************************************************
+ * Copyright (c) 2011 Tasktop Technologies.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Tasktop Technologies - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.mylyn.internal.tasks.index.ui;
+
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.mylyn.internal.provisional.commons.ui.SubstringPatternFilter;
+import org.eclipse.mylyn.internal.tasks.index.core.TaskListIndex;
+import org.eclipse.mylyn.tasks.core.ITask;
+
+public class IndexedSubstringPatternFilter extends SubstringPatternFilter {
+
+	private final TaskListIndex index;
+
+	private String patternString;
+
+	public IndexedSubstringPatternFilter(TaskListIndex index) {
+		this.index = index;
+	}
+
+	@Override
+	public void setPattern(String patternString) {
+		if (patternString != null) {
+			patternString = patternString.trim();
+		}
+		this.patternString = patternString;
+		super.setPattern(patternString);
+	}
+
+	@Override
+	protected boolean isLeafMatch(Viewer viewer, Object element) {
+		if (patternString != null && patternString.length() > 0) {
+			if (element instanceof ITask) {
+				ITask task = (ITask) element;
+				if (index.matches(task, patternString)) {
+					return true;
+				} else {
+					// fall through so that we get non-indexed matching semantics
+				}
+			}
+		}
+		return super.isLeafMatch(viewer, element);
+	}
+}
diff --git a/org.eclipse.mylyn.tasks.index.ui/src/org/eclipse/mylyn/internal/tasks/index/ui/Messages.java b/org.eclipse.mylyn.tasks.index.ui/src/org/eclipse/mylyn/internal/tasks/index/ui/Messages.java
index 34a7ff2..8f051f6 100644
--- a/org.eclipse.mylyn.tasks.index.ui/src/org/eclipse/mylyn/internal/tasks/index/ui/Messages.java
+++ b/org.eclipse.mylyn.tasks.index.ui/src/org/eclipse/mylyn/internal/tasks/index/ui/Messages.java
@@ -1,42 +1,42 @@
-/*******************************************************************************

- * Copyright (c) 2011 Tasktop Technologies and others.

- * All rights reserved. This program and the accompanying materials

- * are made available under the terms of the Eclipse Public License v1.0

- * which accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- *

- * Contributors:

- *     Tasktop Technologies - initial API and implementation

- *******************************************************************************/

-

-package org.eclipse.mylyn.internal.tasks.index.ui;

-

-import org.eclipse.osgi.util.NLS;

-

-/**

- * @author David Green

- */

-class Messages extends NLS {

-	private static final String BUNDLE_NAME = "org.eclipse.mylyn.internal.tasks.index.ui.messages"; //$NON-NLS-1$

-

-	public static String IndexSearchHandler_Generic_date_range_search_1_week;

-

-	public static String IndexSearchHandler_hint_content;

-

-	public static String IndexSearchHandler_hint_generic;

-

-	public static String IndexSearchHandler_hint_person;

-

-	public static String IndexSearchHandler_Past_week_date_range_label;

-

-	public static String IndexSearchHandler_summaryOnly;

-

-	public static String IndexSearchHandler_summaryOnly_tooltip;

-	static {

-		// initialize resource bundle

-		NLS.initializeMessages(BUNDLE_NAME, Messages.class);

-	}

-

-	private Messages() {

-	}

-}

+/*******************************************************************************
+ * Copyright (c) 2011 Tasktop Technologies and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Tasktop Technologies - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylyn.internal.tasks.index.ui;
+
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * @author David Green
+ */
+class Messages extends NLS {
+	private static final String BUNDLE_NAME = "org.eclipse.mylyn.internal.tasks.index.ui.messages"; //$NON-NLS-1$
+
+	public static String IndexSearchHandler_Generic_date_range_search_1_week;
+
+	public static String IndexSearchHandler_hint_content;
+
+	public static String IndexSearchHandler_hint_generic;
+
+	public static String IndexSearchHandler_hint_person;
+
+	public static String IndexSearchHandler_Past_week_date_range_label;
+
+	public static String IndexSearchHandler_summaryOnly;
+
+	public static String IndexSearchHandler_summaryOnly_tooltip;
+	static {
+		// initialize resource bundle
+		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+	}
+
+	private Messages() {
+	}
+}
diff --git a/org.eclipse.mylyn.tasks.index.ui/src/org/eclipse/mylyn/internal/tasks/index/ui/TasksIndexUi.java b/org.eclipse.mylyn.tasks.index.ui/src/org/eclipse/mylyn/internal/tasks/index/ui/TasksIndexUi.java
index 115a57b..4b5369e 100644
--- a/org.eclipse.mylyn.tasks.index.ui/src/org/eclipse/mylyn/internal/tasks/index/ui/TasksIndexUi.java
+++ b/org.eclipse.mylyn.tasks.index.ui/src/org/eclipse/mylyn/internal/tasks/index/ui/TasksIndexUi.java
@@ -1,20 +1,20 @@
-/*******************************************************************************

- * Copyright (c) 2011 Tasktop Technologies and others.

- * All rights reserved. This program and the accompanying materials

- * are made available under the terms of the Eclipse Public License v1.0

- * which accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- *

- * Contributors:

- *     Tasktop Technologies - initial API and implementation

- *******************************************************************************/

-

-package org.eclipse.mylyn.internal.tasks.index.ui;

-

-/**

- * @author David Green

- */

-public class TasksIndexUi {

-

-	public static final String BUNDLE_ID = "org.eclipse.mylyn.tasks.index.ui"; //$NON-NLS-1$

-}

+/*******************************************************************************
+ * Copyright (c) 2011 Tasktop Technologies and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Tasktop Technologies - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylyn.internal.tasks.index.ui;
+
+/**
+ * @author David Green
+ */
+public class TasksIndexUi {
+
+	public static final String BUNDLE_ID = "org.eclipse.mylyn.tasks.index.ui"; //$NON-NLS-1$
+}
diff --git a/org.eclipse.mylyn.tasks.index.ui/src/org/eclipse/mylyn/internal/tasks/index/ui/messages.properties b/org.eclipse.mylyn.tasks.index.ui/src/org/eclipse/mylyn/internal/tasks/index/ui/messages.properties
index 8c95521..c317226 100644
--- a/org.eclipse.mylyn.tasks.index.ui/src/org/eclipse/mylyn/internal/tasks/index/ui/messages.properties
+++ b/org.eclipse.mylyn.tasks.index.ui/src/org/eclipse/mylyn/internal/tasks/index/ui/messages.properties
@@ -1,17 +1,17 @@
-###############################################################################

-# Copyright (c) 2011 Tasktop Technologies and others.

-# All rights reserved. This program and the accompanying materials

-# are made available under the terms of the Eclipse Public License v1.0

-# which accompanies this distribution, and is available at

-# http://www.eclipse.org/legal/epl-v10.html

-#

-# Contributors:

-#      Tasktop Technologies - initial API and implementation

-###############################################################################

-IndexSearchHandler_Generic_date_range_search_1_week=Search for tasks where the {0} field value\noccurs in the past week

-IndexSearchHandler_hint_content=Search for a term in the summary, description and comments

-IndexSearchHandler_hint_generic=Search on a term in the {0} field

-IndexSearchHandler_hint_person=Search for a user (reporter, assignee, watcher, commenter)

-IndexSearchHandler_Past_week_date_range_label={0} (past week)

-IndexSearchHandler_summaryOnly=Summary only

-IndexSearchHandler_summaryOnly_tooltip=Search only the summary when checked

+###############################################################################
+# Copyright (c) 2011 Tasktop Technologies and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#      Tasktop Technologies - initial API and implementation
+###############################################################################
+IndexSearchHandler_Generic_date_range_search_1_week=Search for tasks where the {0} field value\noccurs in the past week
+IndexSearchHandler_hint_content=Search for a term in the summary, description and comments
+IndexSearchHandler_hint_generic=Search on a term in the {0} field
+IndexSearchHandler_hint_person=Search for a user (reporter, assignee, watcher, commenter)
+IndexSearchHandler_Past_week_date_range_label={0} (past week)
+IndexSearchHandler_summaryOnly=Summary only
+IndexSearchHandler_summaryOnly_tooltip=Search only the summary when checked
diff --git a/org.eclipse.mylyn.tests.performance-feature/.settings/org.eclipse.core.runtime.prefs b/org.eclipse.mylyn.tests.performance-feature/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/org.eclipse.mylyn.tests.performance-feature/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/org.eclipse.mylyn.tests.performance/.settings/org.eclipse.core.runtime.prefs b/org.eclipse.mylyn.tests.performance/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/org.eclipse.mylyn.tests.performance/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/org.eclipse.mylyn.tests.report/.settings/org.eclipse.core.runtime.prefs b/org.eclipse.mylyn.tests.report/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/org.eclipse.mylyn.tests.report/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/org.eclipse.mylyn.tests.ui/.settings/org.eclipse.core.runtime.prefs b/org.eclipse.mylyn.tests.ui/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/org.eclipse.mylyn.tests.ui/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/org.eclipse.mylyn.trac.wiki-feature/.settings/org.eclipse.core.runtime.prefs b/org.eclipse.mylyn.trac.wiki-feature/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/org.eclipse.mylyn.trac.wiki-feature/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/org.eclipse.mylyn.trac.wiki/.settings/org.eclipse.core.runtime.prefs b/org.eclipse.mylyn.trac.wiki/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/org.eclipse.mylyn.trac.wiki/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/org.eclipse.mylyn.trac.wiki/META-INF/MANIFEST.MF b/org.eclipse.mylyn.trac.wiki/META-INF/MANIFEST.MF
index b9a7d3a..227e042 100644
--- a/org.eclipse.mylyn.trac.wiki/META-INF/MANIFEST.MF
+++ b/org.eclipse.mylyn.trac.wiki/META-INF/MANIFEST.MF
@@ -1,25 +1,25 @@
-Manifest-Version: 1.0

-Bundle-ManifestVersion: 2

-Bundle-Name: Mylyn Trac Connector (Incubation)

-Bundle-SymbolicName: org.eclipse.mylyn.trac.wiki;singleton:=true

-Bundle-Version: 3.7.0.qualifier

-Bundle-ActivationPolicy: lazy

-Bundle-Vendor: Eclipse Mylyn

-Bundle-RequiredExecutionEnvironment: J2SE-1.5

-Require-Bundle: org.eclipse.core.runtime,

- org.eclipse.jface.text,

- org.eclipse.team.ui,

- org.eclipse.ui,

- org.eclipse.ui.forms,

- org.eclipse.ui.editors,

- org.eclipse.mylyn.commons.core;bundle-version="[3.0.0,4.0.0)",

- org.eclipse.mylyn.tasks.ui;bundle-version="[3.0.0,4.0.0)",

- org.eclipse.mylyn.tasks.core;bundle-version="[3.0.0,4.0.0)",

- org.eclipse.mylyn.trac.core;bundle-version="[3.0.0,4.0.0)",

- org.eclipse.mylyn.trac.ui;bundle-version="[3.0.0,4.0.0)",

- org.eclipse.mylyn.commons.net;bundle-version="[3.0.0,4.0.0)",

- org.eclipse.mylyn.commons.ui;bundle-version="[3.0.0,4.0.0)"

-Bundle-Activator: org.eclipse.mylyn.internal.trac.wiki.TracWikiPlugin

-Export-Package: org.eclipse.mylyn.internal.trac.wiki;x-internal:=true,

- org.eclipse.mylyn.internal.trac.wiki.actions;x-internal:=true,

- org.eclipse.mylyn.internal.trac.wiki.editor;x-internal:=true

+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Mylyn Trac Connector (Incubation)
+Bundle-SymbolicName: org.eclipse.mylyn.trac.wiki;singleton:=true
+Bundle-Version: 3.7.0.qualifier
+Bundle-ActivationPolicy: lazy
+Bundle-Vendor: Eclipse Mylyn
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.jface.text,
+ org.eclipse.team.ui,
+ org.eclipse.ui,
+ org.eclipse.ui.forms,
+ org.eclipse.ui.editors,
+ org.eclipse.mylyn.commons.core;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.mylyn.tasks.ui;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.mylyn.tasks.core;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.mylyn.trac.core;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.mylyn.trac.ui;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.mylyn.commons.net;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.mylyn.commons.ui;bundle-version="[3.0.0,4.0.0)"
+Bundle-Activator: org.eclipse.mylyn.internal.trac.wiki.TracWikiPlugin
+Export-Package: org.eclipse.mylyn.internal.trac.wiki;x-internal:=true,
+ org.eclipse.mylyn.internal.trac.wiki.actions;x-internal:=true,
+ org.eclipse.mylyn.internal.trac.wiki.editor;x-internal:=true
diff --git a/org.eclipse.mylyn.web.tasks-feature/.settings/org.eclipse.core.runtime.prefs b/org.eclipse.mylyn.web.tasks-feature/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/org.eclipse.mylyn.web.tasks-feature/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/org.eclipse.mylyn.web.tasks/.settings/org.eclipse.core.runtime.prefs b/org.eclipse.mylyn.web.tasks/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/org.eclipse.mylyn.web.tasks/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/org.eclipse.mylyn.web.tasks/META-INF/MANIFEST.MF b/org.eclipse.mylyn.web.tasks/META-INF/MANIFEST.MF
index 9bc187a..edbd98f 100644
--- a/org.eclipse.mylyn.web.tasks/META-INF/MANIFEST.MF
+++ b/org.eclipse.mylyn.web.tasks/META-INF/MANIFEST.MF
@@ -1,21 +1,21 @@
-Manifest-Version: 1.0

-Bundle-ManifestVersion: 2

-Bundle-Name: %Bundle-Name

-Bundle-SymbolicName: org.eclipse.mylyn.web.tasks;singleton:=true

-Bundle-Version: 3.7.0.qualifier

-Bundle-Activator: org.eclipse.mylyn.internal.web.tasks.TasksWebPlugin

-Bundle-Vendor: %Bundle-Vendor

-Require-Bundle: com.sun.syndication;bundle-version="0.9.0",

- org.jdom;bundle-version="1.0.0",

- org.eclipse.core.runtime,

- org.eclipse.ui,

- org.eclipse.ui.forms,

- org.eclipse.mylyn.commons.core;bundle-version="[3.0.0,4.0.0)",

- org.eclipse.mylyn.commons.net;bundle-version="[3.0.0,4.0.0)",

- org.eclipse.mylyn.commons.ui;bundle-version="[3.0.0,4.0.0)",

- org.eclipse.mylyn.tasks.core;bundle-version="[3.0.0,4.0.0)",

- org.eclipse.mylyn.tasks.ui;bundle-version="[3.0.0,4.0.0)"

-Bundle-ActivationPolicy: lazy

-Export-Package: org.eclipse.mylyn.internal.web.tasks;x-internal:=true

-Bundle-RequiredExecutionEnvironment: J2SE-1.5

-Bundle-Localization: plugin

+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %Bundle-Name
+Bundle-SymbolicName: org.eclipse.mylyn.web.tasks;singleton:=true
+Bundle-Version: 3.7.0.qualifier
+Bundle-Activator: org.eclipse.mylyn.internal.web.tasks.TasksWebPlugin
+Bundle-Vendor: %Bundle-Vendor
+Require-Bundle: com.sun.syndication;bundle-version="0.9.0",
+ org.jdom;bundle-version="1.0.0",
+ org.eclipse.core.runtime,
+ org.eclipse.ui,
+ org.eclipse.ui.forms,
+ org.eclipse.mylyn.commons.core;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.mylyn.commons.net;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.mylyn.commons.ui;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.mylyn.tasks.core;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.mylyn.tasks.ui;bundle-version="[3.0.0,4.0.0)"
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.mylyn.internal.web.tasks;x-internal:=true
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-Localization: plugin
diff --git a/org.eclipse.mylyn.web.tasks/plugin.properties b/org.eclipse.mylyn.web.tasks/plugin.properties
index ade762b..5c03538 100644
--- a/org.eclipse.mylyn.web.tasks/plugin.properties
+++ b/org.eclipse.mylyn.web.tasks/plugin.properties
@@ -1,3 +1,3 @@
-#Properties file for org.eclipse.mylyn.web.tasks

-Bundle-Vendor = Eclipse Mylyn

-Bundle-Name = Mylyn Web Templates Connector (Incubation)

+#Properties file for org.eclipse.mylyn.web.tasks
+Bundle-Vendor = Eclipse Mylyn
+Bundle-Name = Mylyn Web Templates Connector (Incubation)
diff --git a/org.eclipse.mylyn.web.tasks/src/org/eclipse/mylyn/internal/web/tasks/Messages.java b/org.eclipse.mylyn.web.tasks/src/org/eclipse/mylyn/internal/web/tasks/Messages.java
index 0775c99..fa81023 100644
--- a/org.eclipse.mylyn.web.tasks/src/org/eclipse/mylyn/internal/web/tasks/Messages.java
+++ b/org.eclipse.mylyn.web.tasks/src/org/eclipse/mylyn/internal/web/tasks/Messages.java
@@ -1,119 +1,119 @@
-/*******************************************************************************

- * Copyright (c) 2004, 2008 Tasktop Technologies and others.

- * All rights reserved. This program and the accompanying materials

- * are made available under the terms of the Eclipse Public License v1.0

- * which accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- *

- * Contributors:

- *     Tasktop Technologies - initial API and implementation

- *******************************************************************************/

-

-package org.eclipse.mylyn.internal.web.tasks;

-

-import org.eclipse.osgi.util.NLS;

-

-public class Messages extends NLS {

-	private static final String BUNDLE_NAME = "org.eclipse.mylyn.internal.web.tasks.messages"; //$NON-NLS-1$

-

-	public static String ParameterEditorDialog_New_Property;

-

-	public static String ParameterEditorDialog_Edit_Property;

-

-	public static String ParameterEditorDialog_Name_;

-

-	public static String ParameterEditorDialog_Value_;

-

-	public static String ParameterEditorDialog_Name_should_be_Java_identifier;

-

-	public static String ParametersEditor_Parameter;

-

-	public static String ParametersEditor_Value;

-

-	public static String ParametersEditor_Add_;

-

-	public static String ParametersEditor_Remove_;

-

-	public static String ParametersEditor_Edit_;

-

-	public static String WebQueryWizardPage_Advanced_Configuration;

-

-	public static String WebQueryWizardPage_complete;

-

-	public static String WebQueryWizardPage_Create_web_query;

-

-	public static String WebQueryWizardPage_Description;

-

-	public static String WebQueryWizardPage_Id;

-

-	public static String WebQueryWizardPage_incomplete;

-

-	public static String WebQueryWizardPage_New_web_query;

-

-	public static String WebQueryWizardPage_No_matching_results_Check_query_regexp;

-

-	public static String WebQueryWizardPage_Open;

-

-	public static String WebQueryWizardPage_Opening_Browser;

-

-	public static String WebQueryWizardPage_Owner;

-

-	public static String WebQueryWizardPage_Parsing_error_;

-

-	public static String WebQueryWizardPage_Preview;

-

-	public static String WebQueryWizardPage_Query_Pattern_;

-

-	public static String WebQueryWizardPage_Query_result;

-

-	public static String WebQueryWizardPage_Query_Title_;

-

-	public static String WebQueryWizardPage_Query_URL_;

-

-	public static String WebQueryWizardPage_Specify_query_parameters_for_X;

-

-	public static String WebQueryWizardPage_Status;

-

-	public static String WebQueryWizardPage_Type;

-

-	public static String WebQueryWizardPage_Unable_to_fetch_resource_;

-

-	public static String WebQueryWizardPage_Updating_preview;

-

-	public static String WebRepositoryConnector_Require_two_matching_groups;

-

-	public static String WebRepositoryConnector_Web_Template_Advanced_;

-

-	public static String WebRepositoryConnector_Failed_to_parse_RSS_feed;

-

-	public static String WebRepositoryConnector_Could_not_fetch_resource;

-

-	public static String WebRepositorySettingsPage_Web_Repository_Settings;

-

-	public static String WebRepositorySettingsPage_Select_server_template_example_and_modify_to_match_settings_for_your_project;

-

-	public static String WebRepositorySettingsPage_Login_Form_URL_;

-

-	public static String WebRepositorySettingsPage_Login_Token_Pattern;

-

-	public static String WebRepositorySettingsPage_Advanced_Configuration;

-

-	public static String WebRepositorySettingsPage_Task_URL_;

-

-	public static String WebRepositorySettingsPage_New_Task_URL_;

-

-	public static String WebRepositorySettingsPage_Query_Request_URL_;

-

-	public static String WebRepositorySettingsPage_Query_Pattern_;

-

-	public static String WebRepositorySettingsPage_Login_Request_URL_;

-

-	public static String WebTaskEditorPageFactory_Browser;

-	static {

-		// initialize resource bundle

-		NLS.initializeMessages(BUNDLE_NAME, Messages.class);

-	}

-

-	private Messages() {

-	}

-}

+/*******************************************************************************
+ * Copyright (c) 2004, 2008 Tasktop Technologies and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Tasktop Technologies - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylyn.internal.web.tasks;
+
+import org.eclipse.osgi.util.NLS;
+
+public class Messages extends NLS {
+	private static final String BUNDLE_NAME = "org.eclipse.mylyn.internal.web.tasks.messages"; //$NON-NLS-1$
+
+	public static String ParameterEditorDialog_New_Property;
+
+	public static String ParameterEditorDialog_Edit_Property;
+
+	public static String ParameterEditorDialog_Name_;
+
+	public static String ParameterEditorDialog_Value_;
+
+	public static String ParameterEditorDialog_Name_should_be_Java_identifier;
+
+	public static String ParametersEditor_Parameter;
+
+	public static String ParametersEditor_Value;
+
+	public static String ParametersEditor_Add_;
+
+	public static String ParametersEditor_Remove_;
+
+	public static String ParametersEditor_Edit_;
+
+	public static String WebQueryWizardPage_Advanced_Configuration;
+
+	public static String WebQueryWizardPage_complete;
+
+	public static String WebQueryWizardPage_Create_web_query;
+
+	public static String WebQueryWizardPage_Description;
+
+	public static String WebQueryWizardPage_Id;
+
+	public static String WebQueryWizardPage_incomplete;
+
+	public static String WebQueryWizardPage_New_web_query;
+
+	public static String WebQueryWizardPage_No_matching_results_Check_query_regexp;
+
+	public static String WebQueryWizardPage_Open;
+
+	public static String WebQueryWizardPage_Opening_Browser;
+
+	public static String WebQueryWizardPage_Owner;
+
+	public static String WebQueryWizardPage_Parsing_error_;
+
+	public static String WebQueryWizardPage_Preview;
+
+	public static String WebQueryWizardPage_Query_Pattern_;
+
+	public static String WebQueryWizardPage_Query_result;
+
+	public static String WebQueryWizardPage_Query_Title_;
+
+	public static String WebQueryWizardPage_Query_URL_;
+
+	public static String WebQueryWizardPage_Specify_query_parameters_for_X;
+
+	public static String WebQueryWizardPage_Status;
+
+	public static String WebQueryWizardPage_Type;
+
+	public static String WebQueryWizardPage_Unable_to_fetch_resource_;
+
+	public static String WebQueryWizardPage_Updating_preview;
+
+	public static String WebRepositoryConnector_Require_two_matching_groups;
+
+	public static String WebRepositoryConnector_Web_Template_Advanced_;
+
+	public static String WebRepositoryConnector_Failed_to_parse_RSS_feed;
+
+	public static String WebRepositoryConnector_Could_not_fetch_resource;
+
+	public static String WebRepositorySettingsPage_Web_Repository_Settings;
+
+	public static String WebRepositorySettingsPage_Select_server_template_example_and_modify_to_match_settings_for_your_project;
+
+	public static String WebRepositorySettingsPage_Login_Form_URL_;
+
+	public static String WebRepositorySettingsPage_Login_Token_Pattern;
+
+	public static String WebRepositorySettingsPage_Advanced_Configuration;
+
+	public static String WebRepositorySettingsPage_Task_URL_;
+
+	public static String WebRepositorySettingsPage_New_Task_URL_;
+
+	public static String WebRepositorySettingsPage_Query_Request_URL_;
+
+	public static String WebRepositorySettingsPage_Query_Pattern_;
+
+	public static String WebRepositorySettingsPage_Login_Request_URL_;
+
+	public static String WebTaskEditorPageFactory_Browser;
+	static {
+		// initialize resource bundle
+		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+	}
+
+	private Messages() {
+	}
+}
diff --git a/org.eclipse.mylyn.web.tasks/src/org/eclipse/mylyn/internal/web/tasks/messages.properties b/org.eclipse.mylyn.web.tasks/src/org/eclipse/mylyn/internal/web/tasks/messages.properties
index 7f28cbc..f074e41 100644
--- a/org.eclipse.mylyn.web.tasks/src/org/eclipse/mylyn/internal/web/tasks/messages.properties
+++ b/org.eclipse.mylyn.web.tasks/src/org/eclipse/mylyn/internal/web/tasks/messages.properties
@@ -1,47 +1,47 @@
-ParameterEditorDialog_New_Property=New Property

-ParameterEditorDialog_Edit_Property=Edit Property

-ParameterEditorDialog_Name_=&Name:

-ParameterEditorDialog_Value_=&Value:

-ParameterEditorDialog_Name_should_be_Java_identifier=Name should be a Java identifier

-ParametersEditor_Parameter=Parameter

-ParametersEditor_Value=Value

-ParametersEditor_Add_=&Add...

-ParametersEditor_Remove_=&Remove

-ParametersEditor_Edit_=&Edit...

-WebQueryWizardPage_Advanced_Configuration=Advanced &Configuration

-WebQueryWizardPage_complete=complete

-WebQueryWizardPage_Create_web_query=Create web query

-WebQueryWizardPage_Description=Description

-WebQueryWizardPage_Id=Id

-WebQueryWizardPage_incomplete=incomplete

-WebQueryWizardPage_New_web_query=New web query

-WebQueryWizardPage_No_matching_results_Check_query_regexp=No matching results. Check query regexp

-WebQueryWizardPage_Open=&Open

-WebQueryWizardPage_Opening_Browser=Opening Browser

-WebQueryWizardPage_Owner=Owner

-WebQueryWizardPage_Parsing_error_=Parsing error: 

-WebQueryWizardPage_Preview=Previe&w

-WebQueryWizardPage_Query_Pattern_=Query &Pattern:

-WebQueryWizardPage_Query_result=Query result

-WebQueryWizardPage_Query_Title_=Query Title:

-WebQueryWizardPage_Query_URL_=&Query URL:

-WebQueryWizardPage_Specify_query_parameters_for_X=Specify query parameters for {0}

-WebQueryWizardPage_Status=Status

-WebQueryWizardPage_Type=Type

-WebQueryWizardPage_Unable_to_fetch_resource_=Unable to fetch resource: 

-WebQueryWizardPage_Updating_preview=Updating preview

-WebRepositoryConnector_Require_two_matching_groups=Require two matching groups (taskId and summary). Check query regexp

-WebRepositoryConnector_Web_Template_Advanced_=Web Template (Advanced)

-WebRepositoryConnector_Failed_to_parse_RSS_feed=Failed to parse RSS feed: 

-WebRepositoryConnector_Could_not_fetch_resource=Could not fetch resource: 

-WebRepositorySettingsPage_Web_Repository_Settings=Web Repository Settings

-WebRepositorySettingsPage_Select_server_template_example_and_modify_to_match_settings_for_your_project=Select a server template example and modify to match the settings for your project, \nusually found in the query URL.  For more connectors see http://eclipse.org/mylyn

-WebRepositorySettingsPage_Login_Form_URL_=Login &Form URL:

-WebRepositorySettingsPage_Login_Token_Pattern=Login T&oken Pattern:

-WebRepositorySettingsPage_Advanced_Configuration=Advanced &Configuration

-WebRepositorySettingsPage_Task_URL_=&Task URL:

-WebRepositorySettingsPage_New_Task_URL_=&New Task URL:

-WebRepositorySettingsPage_Query_Request_URL_=&Query Request URL:

-WebRepositorySettingsPage_Query_Pattern_=Query &Pattern:

-WebRepositorySettingsPage_Login_Request_URL_=Login &Request URL:

-WebTaskEditorPageFactory_Browser=Browser

+ParameterEditorDialog_New_Property=New Property
+ParameterEditorDialog_Edit_Property=Edit Property
+ParameterEditorDialog_Name_=&Name:
+ParameterEditorDialog_Value_=&Value:
+ParameterEditorDialog_Name_should_be_Java_identifier=Name should be a Java identifier
+ParametersEditor_Parameter=Parameter
+ParametersEditor_Value=Value
+ParametersEditor_Add_=&Add...
+ParametersEditor_Remove_=&Remove
+ParametersEditor_Edit_=&Edit...
+WebQueryWizardPage_Advanced_Configuration=Advanced &Configuration
+WebQueryWizardPage_complete=complete
+WebQueryWizardPage_Create_web_query=Create web query
+WebQueryWizardPage_Description=Description
+WebQueryWizardPage_Id=Id
+WebQueryWizardPage_incomplete=incomplete
+WebQueryWizardPage_New_web_query=New web query
+WebQueryWizardPage_No_matching_results_Check_query_regexp=No matching results. Check query regexp
+WebQueryWizardPage_Open=&Open
+WebQueryWizardPage_Opening_Browser=Opening Browser
+WebQueryWizardPage_Owner=Owner
+WebQueryWizardPage_Parsing_error_=Parsing error: 
+WebQueryWizardPage_Preview=Previe&w
+WebQueryWizardPage_Query_Pattern_=Query &Pattern:
+WebQueryWizardPage_Query_result=Query result
+WebQueryWizardPage_Query_Title_=Query Title:
+WebQueryWizardPage_Query_URL_=&Query URL:
+WebQueryWizardPage_Specify_query_parameters_for_X=Specify query parameters for {0}
+WebQueryWizardPage_Status=Status
+WebQueryWizardPage_Type=Type
+WebQueryWizardPage_Unable_to_fetch_resource_=Unable to fetch resource: 
+WebQueryWizardPage_Updating_preview=Updating preview
+WebRepositoryConnector_Require_two_matching_groups=Require two matching groups (taskId and summary). Check query regexp
+WebRepositoryConnector_Web_Template_Advanced_=Web Template (Advanced)
+WebRepositoryConnector_Failed_to_parse_RSS_feed=Failed to parse RSS feed: 
+WebRepositoryConnector_Could_not_fetch_resource=Could not fetch resource: 
+WebRepositorySettingsPage_Web_Repository_Settings=Web Repository Settings
+WebRepositorySettingsPage_Select_server_template_example_and_modify_to_match_settings_for_your_project=Select a server template example and modify to match the settings for your project, \nusually found in the query URL.  For more connectors see http://eclipse.org/mylyn
+WebRepositorySettingsPage_Login_Form_URL_=Login &Form URL:
+WebRepositorySettingsPage_Login_Token_Pattern=Login T&oken Pattern:
+WebRepositorySettingsPage_Advanced_Configuration=Advanced &Configuration
+WebRepositorySettingsPage_Task_URL_=&Task URL:
+WebRepositorySettingsPage_New_Task_URL_=&New Task URL:
+WebRepositorySettingsPage_Query_Request_URL_=&Query Request URL:
+WebRepositorySettingsPage_Query_Pattern_=Query &Pattern:
+WebRepositorySettingsPage_Login_Request_URL_=Login &Request URL:
+WebTaskEditorPageFactory_Browser=Browser
diff --git a/org.eclipse.mylyn.wikitext.sandbox-feature/.settings/org.eclipse.core.runtime.prefs b/org.eclipse.mylyn.wikitext.sandbox-feature/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/org.eclipse.mylyn.wikitext.sandbox-feature/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/org.eclipse.mylyn.wikitext.sandbox.ui/.settings/org.eclipse.core.runtime.prefs b/org.eclipse.mylyn.wikitext.sandbox.ui/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/org.eclipse.mylyn.wikitext.sandbox.ui/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/org.eclipse.mylyn.wikitext.sandbox.ui/META-INF/MANIFEST.MF b/org.eclipse.mylyn.wikitext.sandbox.ui/META-INF/MANIFEST.MF
index 99c69c8..d5ed7ff 100644
--- a/org.eclipse.mylyn.wikitext.sandbox.ui/META-INF/MANIFEST.MF
+++ b/org.eclipse.mylyn.wikitext.sandbox.ui/META-INF/MANIFEST.MF
@@ -1,10 +1,10 @@
-Manifest-Version: 1.0

-Bundle-ManifestVersion: 2

-Bundle-Name: Mylyn Incubator (Incubation)

-Bundle-SymbolicName: org.eclipse.mylyn.wikitext.sandbox.ui

-Bundle-Version: 3.7.0.qualifier

-Bundle-Vendor: Eclipse.org

-Bundle-RequiredExecutionEnvironment: J2SE-1.5

-Require-Bundle: org.eclipse.mylyn.wikitext.core;bundle-version="1.3.0",

- org.eclipse.mylyn.wikitext.ui;bundle-version="1.3.0"

-Export-Package: org.eclipse.mylyn.internal.sandbox.wikitext.ui;x-internal:=true

+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Mylyn Incubator (Incubation)
+Bundle-SymbolicName: org.eclipse.mylyn.wikitext.sandbox.ui
+Bundle-Version: 3.7.0.qualifier
+Bundle-Vendor: Eclipse.org
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Require-Bundle: org.eclipse.mylyn.wikitext.core;bundle-version="1.3.0",
+ org.eclipse.mylyn.wikitext.ui;bundle-version="1.3.0"
+Export-Package: org.eclipse.mylyn.internal.sandbox.wikitext.ui;x-internal:=true