diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/ContextMenuSubMenuContributorBase.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/ContextMenuSubMenuContributorBase.java index 0210c8c5cec08f0e3065b5498e50155ccc385f79..524436b7f7511dcbb56bfa06574ca767ece20d4c 100644 --- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/ContextMenuSubMenuContributorBase.java +++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/ContextMenuSubMenuContributorBase.java @@ -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} */