/*
* 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 java.util.Map;
import org.carrot2.workbench.core.WorkbenchCorePlugin;
import org.carrot2.workbench.core.helpers.DisposeBin;
import org.carrot2.workbench.core.helpers.DropDownMenuAction;
import org.carrot2.workbench.core.ui.SearchEditor.PanelName;
import org.carrot2.workbench.core.ui.SearchEditor.PanelState;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IMenuCreator;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.*;
/**
* {@link SearchEditor}'s panels selection action.
*/
final class SearchEditorPanelsAction extends Action
{
/**
* The editor this action is attached to.
*/
private final SearchEditor editor;
/*
* Drop-down menu associated with this action.
*/
private IMenuCreator menuCreator = new IMenuCreator()
{
private DisposeBin bin = new DisposeBin();
/*
*
*/
public Menu getMenu(Control parent)
{
Menu menu = createItems(new Menu(parent));
bin.add(menu);
return menu;
}
/*
*
*/
public Menu getMenu(Menu parent)
{
Menu menu = createItems(new Menu(parent));
bin.add(menu);
return menu;
}
/*
*
*/
private Menu createItems(Menu menu)
{
for (Map.Entry<PanelName, PanelState> e : editor.getPanelState().entrySet())
{
final PanelName p = e.getKey();
final MenuItem mi = new MenuItem(menu, SWT.CHECK);
mi.setText(p.name);
mi.setSelection(e.getValue().visibility);
mi.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e)
{
editor.setPanelVisibility(p, mi.getSelection());
e.doit = true;
}
});
}
new MenuItem(menu, SWT.SEPARATOR);
final MenuItem mi = new MenuItem(menu, SWT.PUSH);
mi.setText("Save as default layout");
mi.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e)
{
editor.saveAsGlobalState();
}
});
return menu;
}
public void dispose()
{
bin.dispose();
}
};
/*
*
*/
SearchEditorPanelsAction(String text, SearchEditor editor)
{
super(text, Action.AS_DROP_DOWN_MENU);
this.editor = editor;
setMenuCreator(menuCreator);
setImageDescriptor(WorkbenchCorePlugin.getImageDescriptor("icons/panels.png"));
}
/*
*
*/
@Override
public void runWithEvent(Event event)
{
DropDownMenuAction.showMenu(this, event);
}
}