/*
* (c) Copyright 2010-2011 AgileBirds
*
* This file is part of OpenFlexo.
*
* OpenFlexo is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* OpenFlexo is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with OpenFlexo. If not, see <http://www.gnu.org/licenses/>.
*
*/
package org.openflexo.foundation.ie.menu.action;
import java.util.logging.Logger;
import org.openflexo.foundation.FlexoEditor;
import org.openflexo.foundation.FlexoTestCase;
import org.openflexo.foundation.ie.menu.FlexoItemMenu;
import org.openflexo.foundation.rm.FlexoProject;
import org.openflexo.toolbox.FileUtils;
public class TestMenu extends FlexoTestCase {
protected static final Logger logger = Logger.getLogger(TestMenu.class.getPackage().getName());
private FlexoEditor _editor;
private FlexoProject _project;
/**
* Creates a new empty project in a temp directory
*/
public void test0CreateProject() {
_editor = createProject("MenuTest");
_project = _editor.getProject();
FlexoItemMenu rootMenu = _project.getFlexoNavigationMenu().getRootMenu();
assertNotNull(rootMenu);
FlexoItemMenu menu1 = createMenu("menu1", rootMenu, _editor);
FlexoItemMenu menu2 = createMenu("menu2", rootMenu, _editor);
moveMenuDown(menu1, _editor);
moveMenuUp(menu1, _editor);
FlexoItemMenu menu21 = createMenu("menu21", menu2, _editor);
moveMenuUpperLevel(menu21, _editor);
_project.close();
FileUtils.deleteDir(_project.getProjectDirectory());
_project = null;
_editor = null;
}
protected void moveMenuUp(FlexoItemMenu itemMenu, FlexoEditor editor) {
MoveMenuUp addmenu = (MoveMenuUp) MoveMenuUp.actionType.makeNewAction(itemMenu, null, editor);
addmenu.setItemMenu(itemMenu);
int oldIndex = -1;
if (itemMenu.getFather() != null) {
oldIndex = itemMenu.getFather().getSubItems().indexOf(itemMenu);
}
boolean isFirstElement = itemMenu.getFather() != null && itemMenu.getFather().getSubItems().indexOf(itemMenu) == 0;
addmenu.doAction();
if (!isFirstElement) {
assertTrue(addmenu.hasActionExecutionSucceeded());
} else {
assertFalse(addmenu.hasActionExecutionSucceeded());
return;
}
assertEquals(oldIndex - 1, itemMenu.getFather().getSubItems().indexOf(itemMenu));
}
protected void moveMenuDown(FlexoItemMenu itemMenu, FlexoEditor editor) {
MoveMenuDown addmenu = (MoveMenuDown) MoveMenuDown.actionType.makeNewAction(itemMenu, null, editor);
addmenu.setItemMenu(itemMenu);
int oldIndex = -1;
boolean isLastElement = itemMenu.getFather() != null && itemMenu.getFather().getSubItems().lastElement().equals(itemMenu);
if (itemMenu.getFather() != null) {
oldIndex = itemMenu.getFather().getSubItems().indexOf(itemMenu);
}
addmenu.doAction();
if (itemMenu.getFather() != null && !isLastElement) {
assertTrue(addmenu.hasActionExecutionSucceeded());
} else {
assertFalse(addmenu.hasActionExecutionSucceeded());
return;
}
assertEquals(oldIndex + 1, itemMenu.getFather().getSubItems().indexOf(itemMenu));
}
protected void moveMenuUpperLevel(FlexoItemMenu itemMenu, FlexoEditor editor) {
MoveMenuUpperLevel addmenu = (MoveMenuUpperLevel) MoveMenuUpperLevel.actionType.makeNewAction(itemMenu, null, editor);
addmenu.setItemMenu(itemMenu);
FlexoItemMenu newFather = itemMenu.getFather() == null ? null : itemMenu.getFather().getFather();
addmenu.doAction();
if (newFather != null) {
assertTrue(addmenu.hasActionExecutionSucceeded());
} else {
assertFalse(addmenu.hasActionExecutionSucceeded());
return;
}
assertEquals(newFather, itemMenu.getFather());
}
protected FlexoItemMenu createMenu(String menuLabel, FlexoItemMenu parentMenu, FlexoEditor editor) {
AddMenu addmenu = (AddMenu) AddMenu.actionType.makeNewAction(parentMenu, null, editor);
addmenu.setFather(parentMenu);
addmenu.setMenuLabel(menuLabel);
addmenu.doAction();
if (parentMenu != null && menuLabel != null) {
assertTrue(addmenu.hasActionExecutionSucceeded());
} else {
assertFalse(addmenu.hasActionExecutionSucceeded());
return null;
}
assertNotNull(addmenu.getNewMenu());
assertEquals(addmenu.getNewMenu().getMenuLabel(), menuLabel);
return addmenu.getNewMenu();
}
public TestMenu(String arg0) {
super(arg0);
}
}