Skip to content
Snippets Groups Projects
Commit 64754cec authored by David Trachtenherz's avatar David Trachtenherz
Browse files

Added possibility to start sub-menu and insert a separator at the same time

parent 6a8e5895
No related branches found
No related tags found
No related merge requests found
......@@ -54,7 +54,7 @@ import org.fortiss.tooling.kernel.ui.service.IContextMenuService;
* @author trachtenherz
* @author $Author: hoelzl $
* @version $Rev: 18709 $
* @ConQAT.Rating YELLOW Hash: 6D37231B2529C38F9E563EDCFD4E39C6
* @ConQAT.Rating YELLOW Hash: B5924C3A5FB721FD77B588B6377C35B4
*/
public abstract class ContextMenuSubMenuContributorBase<T extends EObject> implements
IContextMenuContributor {
......@@ -105,12 +105,16 @@ public abstract class ContextMenuSubMenuContributorBase<T extends EObject> imple
int i = 0;
for(Action a : actions) {
if(hintItems[i] != null &&
hintItems[i].getHint() == MenuStructureHint.SUBMENU_START_BEFORE) {
(hintItems[i].getHint() == MenuStructureHint.SUBMENU_START_BEFORE || hintItems[i]
.getHint() == MenuStructureHint.SUBMENU_START_BEFORE_SEPARATOR_BEFORE)) {
if(subMenu != null) {
// If there is a previously opened sub-menu then finish processing it because we
// use one-level sub-menus.
menu.add(subMenu);
}
if(hintItems[i].getHint() == MenuStructureHint.SUBMENU_START_BEFORE_SEPARATOR_BEFORE) {
menu.add(new Separator());
}
final String subMenuLabel;
if(hintItems[i] instanceof MenuStructureHintSubMenuStart) {
subMenuLabel = ((MenuStructureHintSubMenuStart)hintItems[i]).getSubMenuLabel();
......@@ -202,7 +206,14 @@ public abstract class ContextMenuSubMenuContributorBase<T extends EObject> imple
*/
SUBMENU_START_BEFORE,
/** End sub-menu after current item. */
SUBMENU_END_AFTER;
SUBMENU_END_AFTER,
/**
* Insert separator and begin sub-menu before current.
*
* @see #SEPARATOR_BEFORE
* @see #SUBMENU_START_BEFORE
*/
SUBMENU_START_BEFORE_SEPARATOR_BEFORE;
/** {@inheritDoc} */
@Override
......@@ -231,6 +242,11 @@ public abstract class ContextMenuSubMenuContributorBase<T extends EObject> imple
/** @see #getSubMenuLabel() */
private String subMenuLabel;
/**
* @see #getHint()
*/
private MenuStructureHint menuStructureHint;
/**
* Creates a {@link MenuStructureHintSubMenuStart} with default sub-menu label text.
*
......@@ -244,7 +260,22 @@ public abstract class ContextMenuSubMenuContributorBase<T extends EObject> imple
* Creates a {@link MenuStructureHintSubMenuStart} with given sub-menu label text.
*/
public MenuStructureHintSubMenuStart(String subMenuLabel) {
this(subMenuLabel, false);
}
/**
* Creates a {@link MenuStructureHintSubMenuStart} with given sub-menu label text.
* If {@code separatorBefore} is true than {@link #getHint()} will later return
* {@link MenuStructureHint#SUBMENU_START_BEFORE_SEPARATOR_BEFORE} otherwise
* {@link MenuStructureHint#SUBMENU_START_BEFORE}.
*/
public MenuStructureHintSubMenuStart(String subMenuLabel, boolean separatorBefore) {
this.subMenuLabel = subMenuLabel;
if(separatorBefore) {
menuStructureHint = MenuStructureHint.SUBMENU_START_BEFORE_SEPARATOR_BEFORE;
} else {
menuStructureHint = MenuStructureHint.SUBMENU_START_BEFORE;
}
}
/** Returns the sub-menu label text. */
......@@ -255,11 +286,14 @@ public abstract class ContextMenuSubMenuContributorBase<T extends EObject> imple
/**
* {@inheritDoc}
*
* @return MenuStructureHint.SUBMENU_START_BEFORE
* @return {@link MenuStructureHint#SUBMENU_START_BEFORE} or
* {@link MenuStructureHint#SUBMENU_START_BEFORE_SEPARATOR_BEFORE}, depending on the
* initialization parameters used for the constructor (see
* {@link #MenuStructureHintSubMenuStart(String, boolean)}.
*/
@Override
public MenuStructureHint getHint() {
return MenuStructureHint.SUBMENU_START_BEFORE;
return this.menuStructureHint;
}
/** {@inheritDoc} */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment