<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<title>Mylyn Usage Surveyy</title>
</head>
<body>

	<script type="text/javascript">
	$(function() {
		$('.xq5').click(function(ev){
			if($(".q5:checked").length > 3) {
				ev.preventDefault();
			}
		});
	});

	</script>
	<h1>Mylyn Usage Survey</h1>
	<p>
		To better understand how developers work with Mylyn, we would like to ask about your experience with Mylyn in this very short survey. 
	</p>
	<br />

	<div id="mylform">
		<form name="myl_survey" method="post" action="http://services.netbeans.org/appl/?mod=survey&action=mylyn_survey">
			<script type="text/javascript">
			document.write('<input type="hidden" name="username" value="' + username + '">');
			</script>		
			<b>1. How do you use task lists?</b> <i>(multiple answers possible)</i>
			<div class="margin-around">
			<input name="usage_how_a" value="y" type="checkbox" />&nbsp;I organize tasks in finetuned queries.<br />
			<input name="usage_how_b" value="y" type="checkbox" />&nbsp;I organize tasks in categories.<br />
			<input name="usage_how_c" value="y" type="checkbox" />&nbsp;I group tasks by scheduled dates.
			</div><br /><br/>

			<b>2. How frequently do you use the private notes and the personal planning feature?</b>
			<div class="margin-around">
			<input name="usage_freq" value="a" type="radio" />&nbsp;Often<br />
			<input name="usage_freq" value="b" type="radio" />&nbsp;Sometimes<br />
			<input name="usage_freq" value="c" type="radio" />&nbsp;Never
			</div><br />

			<b>3. How frequently do you create local tasks?</b>
			<div class="margin-around">
			<input name="create_freq" value="a" type="radio" />&nbsp;Often<br />
			<input name="create_freq" value="b" type="radio" />&nbsp;Sometimes<br />
			<input name="create_freq" value="c" type="radio" />&nbsp;Never
			</div><br />

			<b>4. Do you find notifications (e.g., overdue tasks, incoming tasks) useful?</b>
			<div class="margin-around">
			<input name="notifications_useful" value="yes" type="radio" />&nbsp;Yes<br />
			<input name="notifications_useful" value="no" type="radio" />&nbsp;No<br />
			</div><br />

			<b>5. Do you find the task focused user interface useful and, if yes, which 3 features in the list below do you find most useful?</b>
			<div class="margin-around">
			<input name="tf_ui_a" value="y" type="checkbox"  class="q5"/>&nbsp;Being able to show/hide elements in navigator views.<br />
			<input name="tf_ui_b" value="y" type="checkbox"  class="q5" />&nbsp;Automatic highlighting of context elements in navigator views.<br />
			<input name="tf_ui_c" value="y" type="checkbox"  class="q5" />&nbsp;Automatic ordering of relevant context elements in, e.g., Open Type dialog.<br />
			<input name="tf_ui_d" value="y" type="checkbox"  class="q5" />&nbsp;Attaching and retrieving a context.<br />
			<input name="tf_ui_e" value="y" type="checkbox"  class="q5" />&nbsp;Managing context elements via the Context tab in the Task Editor.
			</div><br/>

			<b>6. What feature do you like most when working with Mylyn?</b>
			<div class="margin-around">
				<textarea cols="80" rows="4" name="favourite_features"></textarea><br /><br />
			</div>
			<input value="Submit" type="submit" /><br /><br />

		</form>
	</div>
	<script type="text/javascript">
	if(username=='guest') {
		document.getElementById('caform').style.display='none';
		document.write('<center>You must be logged-in in order to see and submit the form. Please <a href="https://netbeans.org/people/login">login</a> and try again.</center>');
	}
	</script>	
</body>
</html>