/servers/jain-slee/tools/eclipslee/plugin/plugins/org.mobicents.eclipslee.servicecreation/src/org/mobicents/eclipslee/servicecreation/popup/actions/DeleteModuleSubmenu.java
http://mobicents.googlecode.com/ · Java · 164 lines · 109 code · 28 blank · 27 comment · 15 complexity · 9ad13c3f74ef5ffa64393c4e50f1bbb9 MD5 · raw file
- /*
- * JBoss, Home of Professional Open Source
- * Copyright 2011, Red Hat, Inc. and individual contributors by the
- * @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
- package org.mobicents.eclipslee.servicecreation.popup.actions;
-
- import java.io.InputStreamReader;
-
- import org.apache.maven.model.Model;
- import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
- import org.eclipse.core.resources.IFile;
- import org.eclipse.core.resources.IProject;
- import org.eclipse.jface.action.IAction;
- import org.eclipse.jface.action.IMenuCreator;
- import org.eclipse.jface.viewers.ISelection;
- import org.eclipse.jface.viewers.IStructuredSelection;
- import org.eclipse.swt.SWT;
- import org.eclipse.swt.events.MenuAdapter;
- import org.eclipse.swt.events.MenuEvent;
- import org.eclipse.swt.events.SelectionAdapter;
- import org.eclipse.swt.events.SelectionEvent;
- import org.eclipse.swt.widgets.Control;
- import org.eclipse.swt.widgets.Menu;
- import org.eclipse.swt.widgets.MenuItem;
- import org.eclipse.ui.IObjectActionDelegate;
- import org.eclipse.ui.IWorkbenchPart;
- import org.mobicents.eclipslee.servicecreation.ServiceCreationPlugin;
-
- /**
- *
- * @author <a href="mailto:brainslog@gmail.com"> Alexandre Mendonca </a>
- */
- public class DeleteModuleSubmenu implements IObjectActionDelegate, IMenuCreator {
-
- public DeleteModuleSubmenu() {
- super();
- }
-
- public void run(IAction action) {
- }
-
- public void setActivePart(IAction action, IWorkbenchPart targetPart) {
- }
-
- public void dispose() {
- }
-
- public void selectionChanged(IAction action, ISelection selection) {
-
- if (selection instanceof IStructuredSelection) {
-
- fFillMenu = true;
- if (action != null) {
- if (fDelegateAction != action) {
- fDelegateAction = action;
- fDelegateAction.setMenuCreator(this);
- }
-
- this.selection = selection;
- action.setEnabled(true);
- return;
- }
- return;
- }
- action.setEnabled(false);
- }
-
- public Menu getMenu(Control control) { return null; } // NOP
-
- public Menu getMenu(Menu parent) {
- Menu menu = new Menu(parent);
- menu.addMenuListener(new MenuAdapter() {
- public void menuShown(MenuEvent e) {
- if (fFillMenu) {
- Menu m = (Menu) e.widget;
- MenuItem items[] = m.getItems();
- for (int i= 0; i < items.length; i++)
- items[i].dispose();
- fillMenu(m);
- fFillMenu = false;
- }
- }
- });
-
- return menu;
- }
-
- private void fillMenu(Menu menu) {
- createModulesMenus(menu);
- }
-
- private void createModulesMenus(Menu parent) {
-
- if (selection == null && selection.isEmpty()) {
- return;
- }
-
- if (!(selection instanceof IStructuredSelection)) {
- return;
- }
-
- IStructuredSelection ssel = (IStructuredSelection) selection;
- if (ssel.size() > 1) {
- return;
- }
-
- // Get the first (and only) item in the selection.
- Object obj = ssel.getFirstElement();
-
- // project selected.
- if (obj instanceof IProject) {
- try {
- IProject project = (IProject) obj;
- IFile parentPom = project.getFile("pom.xml");
-
- MavenXpp3Reader reader = new MavenXpp3Reader();
- Model model = reader.read(new InputStreamReader(parentPom.getContents()));
-
- for(String module : model.getModules()) {
- if(!module.equals("du")) {
- MenuItem item = new MenuItem(parent, SWT.NONE);
- item.setText(module);
- item.addSelectionListener(new DeleteSelectionListener());
- }
- }
- } catch (Exception e) {
- ServiceCreationPlugin.log("Exception caught creating menu: " + e.getMessage());
- }
-
- }
-
- }
-
- private class DeleteSelectionListener extends SelectionAdapter {
- public void widgetSelected(SelectionEvent e) {
- MenuItem item = (MenuItem) e.getSource();
-
- DeleteModuleAction action = new DeleteModuleAction(item.getText());
- action.selectionChanged(null, selection);
- action.run(null);
- }
- }
-
- private IAction fDelegateAction;
- private ISelection selection;
- private boolean fFillMenu;
- }