/**
* Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>,
* All rights reserved.
*
* This file is part of MakeGood.
*
* 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
*/
package com.piece_framework.makegood.ui.actions;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.ActionContributionItem;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.action.IMenuCreator;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.ui.IViewActionDelegate;
import org.eclipse.ui.IViewPart;
import com.piece_framework.makegood.core.TestResultsLayout;
import com.piece_framework.makegood.ui.MakeGoodContext;
import com.piece_framework.makegood.ui.Messages;
/**
* @since 2.5.0
*/
public class SelectTestResultsLayoutAction implements IViewActionDelegate {
public static final String ACTION_ID = "com.piece_framework.makegood.ui.viewActions.selectTestResultsLayoutAction"; //$NON-NLS-1$
private IAction lastSelectedAction;
@Override
public void run(IAction action) {
}
@Override
public void selectionChanged(IAction action, ISelection selection) {
if (action != lastSelectedAction) {
lastSelectedAction = action;
lastSelectedAction.setMenuCreator(new TestResultsLayoutSelectionMenuCreator());
}
}
@Override
public void init(IViewPart view) {
}
private class TestResultsLayoutSelectionMenuCreator implements IMenuCreator {
private Menu menu;
@Override
public void dispose() {
if (menu != null) {
menu.dispose();
menu = null;
}
}
@Override
public Menu getMenu(Control parent) {
if (menu != null) {
menu.dispose();
menu = null;
}
menu = new Menu(parent);
addAction(new SetTestResultsLayoutToTabAction(Messages.MakeGoodView_SelectTestResultsLayoutAction_SetTestResultsLayoutToTabAction));
addAction(new SetTestResultsLayoutToHorizontalAction(Messages.MakeGoodView_SelectTestResultsLayoutAction_SetTestResultsLayoutToHorizontalAction));
return menu;
}
@Override
public Menu getMenu(Menu parent) {
return null;
}
private void addAction(IAction action) {
new ActionContributionItem(action).fill(menu, -1);
}
}
private class SetTestResultsLayoutToTabAction extends Action {
public SetTestResultsLayoutToTabAction(String text) {
super(text);
setToolTipText(text);
setChecked(TestResultsLayout.TAB.equals(MakeGoodContext.getInstance().getTestResultsLayout()));
}
@Override
public void run() {
MakeGoodContext.getInstance().setTestResultsLayout(TestResultsLayout.TAB);
setChecked(true);
}
}
private class SetTestResultsLayoutToHorizontalAction extends Action {
public SetTestResultsLayoutToHorizontalAction(String text) {
super(text);
setToolTipText(text);
setChecked(TestResultsLayout.HORIZONTAL.equals(MakeGoodContext.getInstance().getTestResultsLayout()));
}
@Override
public void run() {
MakeGoodContext.getInstance().setTestResultsLayout(TestResultsLayout.HORIZONTAL);
setChecked(true);
}
}
}