<%@ jet package="org.eclipse.e4.tools.emf.editor3x.templates" class="HandlerTemplate" imports="org.eclipse.e4.tools.emf.editor3x.wizard.NewHandlerClassWizard.HandlerClass" %>
<% HandlerClass domainClass = (HandlerClass)argument; %> 
package <%= domainClass.getPackageFragment().getElementName() %>;

import org.eclipse.e4.core.di.annotations.Execute;
<% if( domainClass.isUseCanExecute() )  { %>
import org.eclipse.e4.core.di.annotations.CanExecute;
<% } %>

public class <%= domainClass.getName() %> {
	@Execute
	public void <%= domainClass.getExecuteMethodName() %>() {
		//TODO Your code goes here
	}
	<% if( domainClass.isUseCanExecute() )  { %>
	
	@CanExecute
	public boolean <%= domainClass.getCanExecuteMethodName() %>() {
		//TODO Your code goes here
	}
	<% } %>	
}