/*
* Carrot2 project.
*
* Copyright (C) 2002-2016, Dawid Weiss, Stanisław Osiński.
* All rights reserved.
*
* Refer to the full license file "carrot2.LICENSE"
* in the root folder of the repository checkout or at:
* http://www.carrot2.org/carrot2.LICENSE
*/
package org.carrot2.workbench.core.ui;
import org.carrot2.workbench.core.helpers.DisposeBin;
import org.eclipse.jface.action.IMenuCreator;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Menu;
/**
* Produce a {@link MenuManager}.
*/
abstract class MenuManagerCreator implements IMenuCreator
{
private DisposeBin bin = new DisposeBin();
public Menu getMenu(Control parent)
{
final Menu m = createMenu().createContextMenu(parent);
bin.add(m);
return m;
}
public Menu getMenu(Menu parent)
{
final Menu m = createMenu().getMenu();
bin.add(m);
return m;
}
public void dispose()
{
bin.dispose();
}
protected abstract MenuManager createMenu();
}