/*
 * The contents of this file are subject to the Mozilla Public License
 * Version 1.1 (the "License");  you may not use this file except in 
 * compliance with the License.  You may obtain a copy of the License at
 * http://www.mozilla.org/MPL/
 *
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
 * the specific language governing rights and limitations under the License.
 *
 * The Original Code is Protege-2000.
 *
 * The Initial Developer of the Original Code is Stanford University. Portions
 * created by Stanford University are Copyright (C) 2007.  All Rights Reserved.
 *
 * Protege was developed by Stanford Medical Informatics
 * (http://www.smi.stanford.edu) at the Stanford University School of Medicine
 * with support from the National Library of Medicine, the National Science
 * Foundation, and the Defense Advanced Research Projects Agency.  Current
 * information about Protege can be obtained at http://protege.stanford.edu.
 *
 */

package edu.stanford.smi.protege.code.generator.wrapping;

import javax.swing.JMenu;
import javax.swing.JMenuItem;

import edu.stanford.smi.protege.model.KnowledgeBase;
import edu.stanford.smi.protege.plugin.ProjectPluginAdapter;
import edu.stanford.smi.protege.ui.ProjectMenuBar;
import edu.stanford.smi.protege.ui.ProjectToolBar;
import edu.stanford.smi.protege.ui.ProjectView;
import edu.stanford.smi.protege.util.ComponentFactory;
import edu.stanford.smi.protege.util.ComponentUtilities;

public class CodeGeneratorProjectPlugin extends ProjectPluginAdapter {

	public static final String CODE_MENU = "Code";

	@Override
	public void afterShow(ProjectView view, ProjectToolBar toolBar,
			ProjectMenuBar menuBar) {

		KnowledgeBase kb = view.getProject().getKnowledgeBase();
		if (kb.getKnowledgeBaseFactory().getClass().getName().contains(".owl.")) {
			//try to filter out owl backends
			return;
		}

		insertCodeMenu(kb, menuBar);
	}

	private void insertCodeMenu(KnowledgeBase kb, ProjectMenuBar menuBar) {
		JMenu codeMenu = ComponentUtilities.getMenu(menuBar, CODE_MENU, true, menuBar.getComponentCount() - 2);
		JMenuItem codeGen = ComponentFactory.createMenuItem(JavaCodeGeneratorAction.JAVA_CODE_GEN_ACTION_NAME);
		codeGen.addActionListener(new JavaCodeGeneratorAction(kb));
		codeMenu.add(codeGen);
	}

	@Override
	public void beforeHide(ProjectView view, ProjectToolBar toolBar,
			ProjectMenuBar menuBar) {

		JMenu codeMenu = ComponentUtilities.getMenu(menuBar, CODE_MENU);
		if (codeMenu == null) {
			return;
		}
		ComponentUtilities.removeMenuItem(codeMenu, JavaCodeGeneratorAction.JAVA_CODE_GEN_ACTION_NAME);
	}

}
