diff options
Diffstat (limited to 'plugins/facet/org.eclipse.papyrus.emf.facet.util.ui/src/org/eclipse/papyrus/emf/facet/util/ui/internal/exported/util/tree/menu/ExtendedTreeMenu.java')
-rw-r--r-- | plugins/facet/org.eclipse.papyrus.emf.facet.util.ui/src/org/eclipse/papyrus/emf/facet/util/ui/internal/exported/util/tree/menu/ExtendedTreeMenu.java | 670 |
1 files changed, 335 insertions, 335 deletions
diff --git a/plugins/facet/org.eclipse.papyrus.emf.facet.util.ui/src/org/eclipse/papyrus/emf/facet/util/ui/internal/exported/util/tree/menu/ExtendedTreeMenu.java b/plugins/facet/org.eclipse.papyrus.emf.facet.util.ui/src/org/eclipse/papyrus/emf/facet/util/ui/internal/exported/util/tree/menu/ExtendedTreeMenu.java index eb01e75aefc..7dde811e0cb 100644 --- a/plugins/facet/org.eclipse.papyrus.emf.facet.util.ui/src/org/eclipse/papyrus/emf/facet/util/ui/internal/exported/util/tree/menu/ExtendedTreeMenu.java +++ b/plugins/facet/org.eclipse.papyrus.emf.facet.util.ui/src/org/eclipse/papyrus/emf/facet/util/ui/internal/exported/util/tree/menu/ExtendedTreeMenu.java @@ -1,335 +1,335 @@ -/**
- * Copyright (c) 2012 Mia-Software.
- *
- * All rights reserved. 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
- *
- * Contributors:
- * Alban Ménager (Soft-Maint) - Bug 387470 - [EFacet][Custom] Editors
- */
-package org.eclipse.papyrus.emf.facet.util.ui.internal.exported.util.tree.menu;
-
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.papyrus.emf.facet.util.ui.internal.exported.tree.menu.ITreeMenu;
-import org.eclipse.papyrus.emf.facet.util.ui.internal.exported.util.tree.ExtendedTree;
-import org.eclipse.papyrus.emf.facet.util.ui.internal.exported.util.tree.item.AbstractTreeItem;
-import org.eclipse.swt.events.MenuEvent;
-import org.eclipse.swt.events.MenuListener;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swt.widgets.TreeItem;
-
-/**
- * This class provide the creation of the menu {@link Menu} of the tree ( {@link #createMenu(Control, ExtendedTree)}. The menu add a list of {@link AbstractTreeItem} and for each an {@link AbstractTreeItem} which will
- * be instantiate when the menu item is selected.
- *
- * @since 0.3
- */
-public class ExtendedTreeMenu<IDialog> implements ITreeMenu<IDialog> {
-
- private final Control parent;
- private final ExtendedTree treeExtended;
- private final List<AbstractTreeMenu<IDialog>> menuItems;
- private Menu menu;
-
- /**
- * Constructor.
- *
- * @param parent
- * the parent of the menu.
- * @param treeExtended
- * the tree to which the menu will be linked.
- * @param menuItems
- */
- public ExtendedTreeMenu(final Control parent, final ExtendedTree treeExtended,
- final List<AbstractTreeMenu<IDialog>> menuItems) {
- this.parent = parent;
- this.treeExtended = treeExtended;
- this.menuItems = menuItems;
- }
-
- /**
- * This method creates the tree menu, add put the listener into the menu.
- *
- * @param parent
- * the parent of the menu.
- * @param treeExtended
- * the associated {@link ExtendedTree} of the menu.
- */
- public void createMenu() {
- this.menu = new Menu(this.parent);
- this.menu.addMenuListener(new MenuListener() {
-
- public void menuShown(final MenuEvent menuEvent) {
- onMenuShown();
- }
-
- public void menuHidden(final MenuEvent menuEvent) {
- // Nothing.
- }
- });
- }
-
- /**
- * This method is called when the menu is displayed. It calls all the {@link AbstractTreeMenu#refresh(TreeMenu)} method of each element of the
- * menu.
- */
- public void onMenuShown() {
- for (final AbstractTreeMenu<IDialog> menuItem : this.getMenuItems()) {
- menuItem.refresh(this);
- }
- }
-
- /**
- * Return the list of all the items of this menu.
- *
- * @return the list of the {@link AbstractTreeMenu} of this menu.
- */
- public List<AbstractTreeMenu<IDialog>> getTreeMenuItems() {
- return this.getMenuItems();
- }
-
- /**
- * Return the {@link Menu} of this TreeMenu.
- *
- * @return the menu.
- */
- public Menu getMenu() {
- return this.menu;
- }
-
- /**
- * Put this <code>properties</code> to each items created.
- *
- * @param properties
- * the list of properties to pass.
- */
- public void putExtraProperties(final Map<String, Object> properties) {
- for (final AbstractTreeMenu<IDialog> menuItem : this.getMenuItems()) {
- menuItem.setExtraProperties(properties);
- }
- }
-
- /**
- * @return the current {@link TreeItem} selected on the tree.
- */
- public TreeItem getCurrentItemSelected() {
- TreeItem result = null;
- final TreeItem[] items = this.treeExtended.getTree().getSelection();
- if (items.length > 0) {
- result = this.treeExtended.getTree().getSelection()[0];
- }
- return result;
- }
-
- /**
- * @return the {@link AbstractTreeItem} selected on the tree. Can be null.
- */
- public AbstractTreeItem<IDialog> getTreeItemExtended(final TreeItem treeItem) {
- AbstractTreeItem<IDialog> result = null;
- for (final AbstractTreeMenu<IDialog> menuItem : this.getMenuItems()) {
- final AbstractTreeItem<IDialog> itemExtended = menuItem
- .getTreeItemExtended(treeItem);
- if (itemExtended != null) {
- result = itemExtended;
- break;
- }
- }
- return result;
- }
-
- /**
- * @return the {@link AbstractTreeMenu} selected on the tree. Can be null.
- */
- public AbstractTreeMenu<IDialog> getTreeMenu(final TreeItem treeItem) {
- AbstractTreeMenu<IDialog> result = null;
-
- for (final AbstractTreeMenu<IDialog> menuItem : this.getMenuItems()) {
- final AbstractTreeItem<IDialog> itemExtended = menuItem
- .getTreeItemExtended(treeItem);
- if (itemExtended != null) {
- result = menuItem;
- break;
- }
- }
- return result;
- }
-
- /**
- * Remove the current item selected of the tree.
- */
- public void removeCurrentItemSelected() {
- final AbstractTreeMenu<IDialog> treeMenu = getTreeMenu(getCurrentItemSelected());
- if (treeMenu != null) {
- treeMenu.removeItem(getCurrentItemSelected());
- }
- }
-
- /**
- * @return the {@link Tree}.
- */
- public Tree getTree() {
- return this.treeExtended.getTree();
- }
-
- /**
- * This method call the method {@link AbstractTreeItem#onItemMouseSelection()} of the current selection.
- */
- public void onMouseSelection() {
- final AbstractTreeItem<IDialog> treeMenu = getTreeItemExtended(getCurrentItemSelected());
- if (treeMenu != null) {
- treeMenu.onItemMouseSelection();
- fireChanged();
- }
- }
-
- /**
- * When a modification append, this method has to be called and the method {@link #notifyChanged()} is called for the listener of this Tree.
- */
- public void fireChanged() {
- this.treeExtended.fireChanged();
- }
-
- /**
- * @return the all the items of the menu.
- */
- private List<AbstractTreeMenu<IDialog>> getMenuItems() {
- return this.menuItems;
- }
-
- /**
- * Select the item into the menu (if the item exist).
- *
- * @return can return a {@link IDialog}. Can be null.
- */
- public IDialog selectMenuItem(
- final Class<? extends AbstractTreeMenuItem<IDialog>> menuItemType) {
- IDialog result = null;
- final AbstractTreeMenu<IDialog> treeMenu = findMenuItem(menuItemType);
- if (treeMenu != null) {
- result = treeMenu.onMenuItemSelection();
- }
- return result;
- }
-
- /**
- * Return (if exist) the {@link AbstractTreeMenu} with the name <code>menuItemName</code> into the items of the tree menu.
- *
- * @param menuItemType
- * the name of the element to find.
- * @return the item menu with the name in parameter (can be null).
- */
- private AbstractTreeMenuItem<IDialog> findMenuItem(
- final Class<? extends AbstractTreeMenuItem<IDialog>> menuItemType) {
- AbstractTreeMenuItem<IDialog> result = null;
- for (final AbstractTreeMenuItem<IDialog> item : getAllTreeMenuItems()) {
- if (item.getClass().isInstance(menuItemType)) {
- result = item;
- }
- }
- return result;
- }
-
- private List<AbstractTreeMenuItem<IDialog>> getAllTreeMenuItems() {
- final List<AbstractTreeMenuItem<IDialog>> result = new LinkedList<AbstractTreeMenuItem<IDialog>>();
- for (final AbstractTreeMenu<IDialog> menuItem : getMenuItems()) {
- if (menuItem instanceof AbstractTreeSubMenu) {
- result.addAll(getAllTreeMenuItems((AbstractTreeSubMenu<IDialog>) menuItem));
- } else {
- result.add((AbstractTreeMenuItem<IDialog>) menuItem);
- }
- }
- return result;
- }
-
- private List<AbstractTreeMenuItem<IDialog>> getAllTreeMenuItems(
- final AbstractTreeSubMenu<IDialog> subMenu) {
- final List<AbstractTreeMenuItem<IDialog>> result = new LinkedList<AbstractTreeMenuItem<IDialog>>();
- for (final AbstractTreeMenu<IDialog> menuItem : subMenu.getItems()) {
- if (menuItem instanceof AbstractTreeSubMenu) {
- result.addAll(getAllTreeMenuItems((AbstractTreeSubMenu<IDialog>) menuItem));
- } else {
- result.add((AbstractTreeMenuItem<IDialog>) menuItem);
- }
- }
- return result;
- }
-
- /**
- * @return the treeMenuItem into the menu with is an instance of the type in
- * parameter.
- */
- public AbstractTreeMenu<IDialog> getTreeMenuItem(final Class<?> treeMenuType) {
- AbstractTreeMenu<IDialog> result = null;
- final List<AbstractTreeMenu<IDialog>> treeMenuItems = getTreeMenuItems();
- for (final AbstractTreeMenu<IDialog> item : treeMenuItems) {
- result = getTreeMenuItem(item, treeMenuType);
- if (result != null) {
- break;
- }
- }
- return result;
- }
-
- private AbstractTreeMenu<IDialog> getTreeMenuItem(
- final AbstractTreeSubMenu<IDialog> item,
- final Class<?> treeMenuType) {
- AbstractTreeMenu<IDialog> result = null;
- for (final AbstractTreeMenu<IDialog> subItem : item.getItems()) {
- result = getTreeMenuItem(subItem, treeMenuType);
- if (result != null) {
- break;
- }
- }
- return result;
- }
-
- private AbstractTreeMenu<IDialog> getTreeMenuItem(
- final AbstractTreeMenu<IDialog> item,
- final Class<?> treeMenuType) {
- AbstractTreeMenu<IDialog> result = null;
- if (treeMenuType.isInstance(item)) {
- result = item;
- } else if (item instanceof AbstractTreeSubMenu) {
- result = getTreeMenuItem((AbstractTreeSubMenu<IDialog>) item,
- treeMenuType);
- }
- return result;
- }
-
- /**
- * get all the items of the tree with the name <code>treeItemName</code>
- *
- * @param treeItemName
- * the name of the item to select.
- * @return the list of all the tree item with the name in parameter.
- */
- public List<AbstractTreeItem<IDialog>> getTreeItems(
- final String treeItemName) {
- final List<AbstractTreeItem<IDialog>> result = new LinkedList<AbstractTreeItem<IDialog>>();
- for (final AbstractTreeMenuItem<IDialog> menuItem : getAllTreeMenuItems()) {
- for (final AbstractTreeItem<IDialog> treeItem : menuItem.getItems()) {
- if (treeItemName.equals(treeItem.getItemText())) {
- result.add(treeItem);
- }
- }
- }
- return result;
- }
-
- /**
- * Select a item into the tree.
- *
- * @param treeItem
- * the {@link AbstractTreeItem} to select
- */
- public void selectTreeItem(final AbstractTreeItem<IDialog> treeItem) {
- this.treeExtended.getTree().setSelection(treeItem.getTreeItem());
- }
-}
+/** + * Copyright (c) 2012 Mia-Software. + * + * All rights reserved. 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 + * + * Contributors: + * Alban Ménager (Soft-Maint) - Bug 387470 - [EFacet][Custom] Editors + */ +package org.eclipse.papyrus.emf.facet.util.ui.internal.exported.util.tree.menu; + +import java.util.LinkedList; +import java.util.List; +import java.util.Map; + +import org.eclipse.papyrus.emf.facet.util.ui.internal.exported.tree.menu.ITreeMenu; +import org.eclipse.papyrus.emf.facet.util.ui.internal.exported.util.tree.ExtendedTree; +import org.eclipse.papyrus.emf.facet.util.ui.internal.exported.util.tree.item.AbstractTreeItem; +import org.eclipse.swt.events.MenuEvent; +import org.eclipse.swt.events.MenuListener; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Menu; +import org.eclipse.swt.widgets.Tree; +import org.eclipse.swt.widgets.TreeItem; + +/** + * This class provide the creation of the menu {@link Menu} of the tree ( {@link #createMenu(Control, ExtendedTree)}. The menu add a list of {@link AbstractTreeItem} and for each an {@link AbstractTreeItem} which will + * be instantiate when the menu item is selected. + * + * @since 0.3 + */ +public class ExtendedTreeMenu<IDialog> implements ITreeMenu<IDialog> { + + private final Control parent; + private final ExtendedTree treeExtended; + private final List<AbstractTreeMenu<IDialog>> menuItems; + private Menu menu; + + /** + * Constructor. + * + * @param parent + * the parent of the menu. + * @param treeExtended + * the tree to which the menu will be linked. + * @param menuItems + */ + public ExtendedTreeMenu(final Control parent, final ExtendedTree treeExtended, + final List<AbstractTreeMenu<IDialog>> menuItems) { + this.parent = parent; + this.treeExtended = treeExtended; + this.menuItems = menuItems; + } + + /** + * This method creates the tree menu, add put the listener into the menu. + * + * @param parent + * the parent of the menu. + * @param treeExtended + * the associated {@link ExtendedTree} of the menu. + */ + public void createMenu() { + this.menu = new Menu(this.parent); + this.menu.addMenuListener(new MenuListener() { + + public void menuShown(final MenuEvent menuEvent) { + onMenuShown(); + } + + public void menuHidden(final MenuEvent menuEvent) { + // Nothing. + } + }); + } + + /** + * This method is called when the menu is displayed. It calls all the {@link AbstractTreeMenu#refresh(TreeMenu)} method of each element of the + * menu. + */ + public void onMenuShown() { + for (final AbstractTreeMenu<IDialog> menuItem : this.getMenuItems()) { + menuItem.refresh(this); + } + } + + /** + * Return the list of all the items of this menu. + * + * @return the list of the {@link AbstractTreeMenu} of this menu. + */ + public List<AbstractTreeMenu<IDialog>> getTreeMenuItems() { + return this.getMenuItems(); + } + + /** + * Return the {@link Menu} of this TreeMenu. + * + * @return the menu. + */ + public Menu getMenu() { + return this.menu; + } + + /** + * Put this <code>properties</code> to each items created. + * + * @param properties + * the list of properties to pass. + */ + public void putExtraProperties(final Map<String, Object> properties) { + for (final AbstractTreeMenu<IDialog> menuItem : this.getMenuItems()) { + menuItem.setExtraProperties(properties); + } + } + + /** + * @return the current {@link TreeItem} selected on the tree. + */ + public TreeItem getCurrentItemSelected() { + TreeItem result = null; + final TreeItem[] items = this.treeExtended.getTree().getSelection(); + if (items.length > 0) { + result = this.treeExtended.getTree().getSelection()[0]; + } + return result; + } + + /** + * @return the {@link AbstractTreeItem} selected on the tree. Can be null. + */ + public AbstractTreeItem<IDialog> getTreeItemExtended(final TreeItem treeItem) { + AbstractTreeItem<IDialog> result = null; + for (final AbstractTreeMenu<IDialog> menuItem : this.getMenuItems()) { + final AbstractTreeItem<IDialog> itemExtended = menuItem + .getTreeItemExtended(treeItem); + if (itemExtended != null) { + result = itemExtended; + break; + } + } + return result; + } + + /** + * @return the {@link AbstractTreeMenu} selected on the tree. Can be null. + */ + public AbstractTreeMenu<IDialog> getTreeMenu(final TreeItem treeItem) { + AbstractTreeMenu<IDialog> result = null; + + for (final AbstractTreeMenu<IDialog> menuItem : this.getMenuItems()) { + final AbstractTreeItem<IDialog> itemExtended = menuItem + .getTreeItemExtended(treeItem); + if (itemExtended != null) { + result = menuItem; + break; + } + } + return result; + } + + /** + * Remove the current item selected of the tree. + */ + public void removeCurrentItemSelected() { + final AbstractTreeMenu<IDialog> treeMenu = getTreeMenu(getCurrentItemSelected()); + if (treeMenu != null) { + treeMenu.removeItem(getCurrentItemSelected()); + } + } + + /** + * @return the {@link Tree}. + */ + public Tree getTree() { + return this.treeExtended.getTree(); + } + + /** + * This method call the method {@link AbstractTreeItem#onItemMouseSelection()} of the current selection. + */ + public void onMouseSelection() { + final AbstractTreeItem<IDialog> treeMenu = getTreeItemExtended(getCurrentItemSelected()); + if (treeMenu != null) { + treeMenu.onItemMouseSelection(); + fireChanged(); + } + } + + /** + * When a modification append, this method has to be called and the method {@link #notifyChanged()} is called for the listener of this Tree. + */ + public void fireChanged() { + this.treeExtended.fireChanged(); + } + + /** + * @return the all the items of the menu. + */ + private List<AbstractTreeMenu<IDialog>> getMenuItems() { + return this.menuItems; + } + + /** + * Select the item into the menu (if the item exist). + * + * @return can return a {@link IDialog}. Can be null. + */ + public IDialog selectMenuItem( + final Class<? extends AbstractTreeMenuItem<IDialog>> menuItemType) { + IDialog result = null; + final AbstractTreeMenu<IDialog> treeMenu = findMenuItem(menuItemType); + if (treeMenu != null) { + result = treeMenu.onMenuItemSelection(); + } + return result; + } + + /** + * Return (if exist) the {@link AbstractTreeMenu} with the name <code>menuItemName</code> into the items of the tree menu. + * + * @param menuItemType + * the name of the element to find. + * @return the item menu with the name in parameter (can be null). + */ + private AbstractTreeMenuItem<IDialog> findMenuItem( + final Class<? extends AbstractTreeMenuItem<IDialog>> menuItemType) { + AbstractTreeMenuItem<IDialog> result = null; + for (final AbstractTreeMenuItem<IDialog> item : getAllTreeMenuItems()) { + if (item.getClass().isInstance(menuItemType)) { + result = item; + } + } + return result; + } + + private List<AbstractTreeMenuItem<IDialog>> getAllTreeMenuItems() { + final List<AbstractTreeMenuItem<IDialog>> result = new LinkedList<AbstractTreeMenuItem<IDialog>>(); + for (final AbstractTreeMenu<IDialog> menuItem : getMenuItems()) { + if (menuItem instanceof AbstractTreeSubMenu) { + result.addAll(getAllTreeMenuItems((AbstractTreeSubMenu<IDialog>) menuItem)); + } else { + result.add((AbstractTreeMenuItem<IDialog>) menuItem); + } + } + return result; + } + + private List<AbstractTreeMenuItem<IDialog>> getAllTreeMenuItems( + final AbstractTreeSubMenu<IDialog> subMenu) { + final List<AbstractTreeMenuItem<IDialog>> result = new LinkedList<AbstractTreeMenuItem<IDialog>>(); + for (final AbstractTreeMenu<IDialog> menuItem : subMenu.getItems()) { + if (menuItem instanceof AbstractTreeSubMenu) { + result.addAll(getAllTreeMenuItems((AbstractTreeSubMenu<IDialog>) menuItem)); + } else { + result.add((AbstractTreeMenuItem<IDialog>) menuItem); + } + } + return result; + } + + /** + * @return the treeMenuItem into the menu with is an instance of the type in + * parameter. + */ + public AbstractTreeMenu<IDialog> getTreeMenuItem(final Class<?> treeMenuType) { + AbstractTreeMenu<IDialog> result = null; + final List<AbstractTreeMenu<IDialog>> treeMenuItems = getTreeMenuItems(); + for (final AbstractTreeMenu<IDialog> item : treeMenuItems) { + result = getTreeMenuItem(item, treeMenuType); + if (result != null) { + break; + } + } + return result; + } + + private AbstractTreeMenu<IDialog> getTreeMenuItem( + final AbstractTreeSubMenu<IDialog> item, + final Class<?> treeMenuType) { + AbstractTreeMenu<IDialog> result = null; + for (final AbstractTreeMenu<IDialog> subItem : item.getItems()) { + result = getTreeMenuItem(subItem, treeMenuType); + if (result != null) { + break; + } + } + return result; + } + + private AbstractTreeMenu<IDialog> getTreeMenuItem( + final AbstractTreeMenu<IDialog> item, + final Class<?> treeMenuType) { + AbstractTreeMenu<IDialog> result = null; + if (treeMenuType.isInstance(item)) { + result = item; + } else if (item instanceof AbstractTreeSubMenu) { + result = getTreeMenuItem((AbstractTreeSubMenu<IDialog>) item, + treeMenuType); + } + return result; + } + + /** + * get all the items of the tree with the name <code>treeItemName</code> + * + * @param treeItemName + * the name of the item to select. + * @return the list of all the tree item with the name in parameter. + */ + public List<AbstractTreeItem<IDialog>> getTreeItems( + final String treeItemName) { + final List<AbstractTreeItem<IDialog>> result = new LinkedList<AbstractTreeItem<IDialog>>(); + for (final AbstractTreeMenuItem<IDialog> menuItem : getAllTreeMenuItems()) { + for (final AbstractTreeItem<IDialog> treeItem : menuItem.getItems()) { + if (treeItemName.equals(treeItem.getItemText())) { + result.add(treeItem); + } + } + } + return result; + } + + /** + * Select a item into the tree. + * + * @param treeItem + * the {@link AbstractTreeItem} to select + */ + public void selectTreeItem(final AbstractTreeItem<IDialog> treeItem) { + this.treeExtended.getTree().setSelection(treeItem.getTreeItem()); + } +} |