/**
 *                                                                            
 *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
 *                                                                            
 *  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:                                                      
 * 	   Florian Pirchner - Initial implementation
 * 
 */
package org.eclipse.osbp.ecview.extension.editparts.emf.visibility;

import org.eclipse.osbp.ecview.core.common.editpart.emf.visibility.VisibilityProcessorEditpart;
import org.eclipse.osbp.ecview.core.common.visibility.IVisibilityProcessor;
import org.eclipse.osbp.ecview.extension.editparts.visibility.IAuthorizationVisibilityProcessorEditpart;
import org.eclipse.osbp.ecview.extension.model.visibility.YAuthorizationVisibilityProcessor;

/**
 * The Class AuthorizationVisibilityProcessorEditpart.
 */
public class AuthorizationVisibilityProcessorEditpart extends
		VisibilityProcessorEditpart<YAuthorizationVisibilityProcessor>
		implements IAuthorizationVisibilityProcessorEditpart {

	/* (non-Javadoc)
	 * @see org.eclipse.osbp.ecview.core.common.editpart.emf.visibility.VisibilityProcessorEditpart#loadProcessor()
	 */
	protected IVisibilityProcessor loadProcessor() {
		if (processor != null) {
			return processor;
		}

		AuthorizationVisibilityProcessor temp = new AuthorizationVisibilityProcessor();
		temp.setup(getViewContext(getModel()), getModel());

		processor = temp;

		return processor;
	}

}
