From 97a0ec832d50eb026e8eabde16a77765624ac91e Mon Sep 17 00:00:00 2001 From: Christian W. Damus Date: Thu, 25 Feb 2016 11:48:36 -0500 Subject: Bug 485220: [Architecture] Provide a more modular architecture Ensure that the Toolbox UI implementation of the notification facade is available when the Papyrus UI is active.--- .../META-INF/MANIFEST.MF | 3 ++- .../org/eclipse/papyrus/infra/ui/Activator.java | 11 ++++++++++ .../META-INF/MANIFEST.MF | 1 - .../icons/Papyrus.gif | Bin 0 -> 561 bytes .../papyrus/infra/widgets/toolbox/Activator.java | 24 ++++++++++----------- .../dialogs/AbstractNotificationPopup.java | 13 ++++++++--- .../toolbox/notification/dialogs/PapyrusPopup.java | 9 +++++--- .../notification/view/PapyrusNotificationView.java | 9 +++++--- .../infra/widgets/toolbox/utils/ISharedImages.java | 12 +++++++++-- .../widgets/toolbox/utils/ToolbooxImageUtils.java | 7 +++++- 10 files changed, 63 insertions(+), 26 deletions(-) create mode 100644 plugins/infra/ui/org.eclipse.papyrus.infra.widgets.toolbox/icons/Papyrus.gif diff --git a/plugins/infra/ui/org.eclipse.papyrus.infra.ui/META-INF/MANIFEST.MF b/plugins/infra/ui/org.eclipse.papyrus.infra.ui/META-INF/MANIFEST.MF index 46d33f813eb..405a6b4eafb 100644 --- a/plugins/infra/ui/org.eclipse.papyrus.infra.ui/META-INF/MANIFEST.MF +++ b/plugins/infra/ui/org.eclipse.papyrus.infra.ui/META-INF/MANIFEST.MF @@ -32,7 +32,8 @@ Require-Bundle: org.eclipse.papyrus.infra.core;bundle-version="[2.0.0,3.0.0)";vi org.eclipse.emf.edit.ui;bundle-version="[2.12.0,3.0.0)", org.eclipse.papyrus.infra.widgets;bundle-version="[2.0.0,3.0.0)";visibility:=reexport, org.eclipse.ui.views;bundle-version="[3.8.0,4.0.0)";visibility:=reexport, - org.eclipse.papyrus.infra.emf;bundle-version="[2.0.0,3.0.0)" + org.eclipse.papyrus.infra.emf;bundle-version="[2.0.0,3.0.0)", + org.eclipse.papyrus.infra.widgets.toolbox;bundle-version="[1.2.0,2.0.0)" Bundle-Vendor: %providerName Bundle-Version: 1.2.0.qualifier Eclipse-BuddyPolicy: dependent diff --git a/plugins/infra/ui/org.eclipse.papyrus.infra.ui/src/org/eclipse/papyrus/infra/ui/Activator.java b/plugins/infra/ui/org.eclipse.papyrus.infra.ui/src/org/eclipse/papyrus/infra/ui/Activator.java index a744cf9db8d..cbd152f678c 100644 --- a/plugins/infra/ui/org.eclipse.papyrus.infra.ui/src/org/eclipse/papyrus/infra/ui/Activator.java +++ b/plugins/infra/ui/org.eclipse.papyrus.infra.ui/src/org/eclipse/papyrus/infra/ui/Activator.java @@ -17,8 +17,10 @@ import org.eclipse.papyrus.infra.core.log.LogHelper; import org.eclipse.papyrus.infra.core.services.ServicesRegistry; import org.eclipse.papyrus.infra.core.services.spi.IContextualServiceRegistryTracker; import org.eclipse.papyrus.infra.tools.spi.IExecutorServiceFactory; +import org.eclipse.papyrus.infra.tools.spi.INotificationBuilderFactory; import org.eclipse.papyrus.infra.ui.util.UIUtil; import org.eclipse.papyrus.infra.ui.util.WorkbenchPartHelper; +import org.eclipse.papyrus.infra.widgets.toolbox.notification.builders.NotificationBuilder; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.plugin.AbstractUIPlugin; @@ -46,6 +48,9 @@ public class Activator extends AbstractUIPlugin { private ServiceRegistration executorFactoryReg; private ServiceRegistration serviceRegistryTrackerReg; + // Glue the UI notification mechanism to the facade + private ServiceRegistration notificationBuilderReg; + /** * The constructor */ @@ -70,10 +75,16 @@ public class Activator extends AbstractUIPlugin { return result; }; serviceRegistryTrackerReg = context.registerService(IContextualServiceRegistryTracker.class, serviceRegistryTracker, null); + + notificationBuilderReg = context.registerService(INotificationBuilderFactory.class, NotificationBuilder::new, null); } @Override public void stop(BundleContext context) throws Exception { + if (notificationBuilderReg != null) { + notificationBuilderReg.unregister(); + notificationBuilderReg = null; + } if (serviceRegistryTrackerReg != null) { serviceRegistryTrackerReg.unregister(); serviceRegistryTrackerReg = null; diff --git a/plugins/infra/ui/org.eclipse.papyrus.infra.widgets.toolbox/META-INF/MANIFEST.MF b/plugins/infra/ui/org.eclipse.papyrus.infra.widgets.toolbox/META-INF/MANIFEST.MF index 36ccfbb2c83..4d6c52f4a45 100644 --- a/plugins/infra/ui/org.eclipse.papyrus.infra.widgets.toolbox/META-INF/MANIFEST.MF +++ b/plugins/infra/ui/org.eclipse.papyrus.infra.widgets.toolbox/META-INF/MANIFEST.MF @@ -14,7 +14,6 @@ Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.12.0,4.0.0)";visibil org.eclipse.ui;bundle-version="[3.107.0,4.0.0)";visibility:=reexport, org.eclipse.ui.forms;bundle-version="[3.7.0,4.0.0)";visibility:=reexport, org.eclipse.draw2d;bundle-version="[3.10.0,4.0.0)";visibility:=reexport, - org.eclipse.papyrus.infra.ui;bundle-version="[1.2.0,2.0.0)", org.eclipse.papyrus.infra.tools;bundle-version="[2.0.0,3.0.0)";visibility:=reexport Bundle-Vendor: %providerName Bundle-ActivationPolicy: lazy diff --git a/plugins/infra/ui/org.eclipse.papyrus.infra.widgets.toolbox/icons/Papyrus.gif b/plugins/infra/ui/org.eclipse.papyrus.infra.widgets.toolbox/icons/Papyrus.gif new file mode 100644 index 00000000000..8a31f458379 Binary files /dev/null and b/plugins/infra/ui/org.eclipse.papyrus.infra.widgets.toolbox/icons/Papyrus.gif differ diff --git a/plugins/infra/ui/org.eclipse.papyrus.infra.widgets.toolbox/src/org/eclipse/papyrus/infra/widgets/toolbox/Activator.java b/plugins/infra/ui/org.eclipse.papyrus.infra.widgets.toolbox/src/org/eclipse/papyrus/infra/widgets/toolbox/Activator.java index 68a7cbf3ba1..9d844982441 100644 --- a/plugins/infra/ui/org.eclipse.papyrus.infra.widgets.toolbox/src/org/eclipse/papyrus/infra/widgets/toolbox/Activator.java +++ b/plugins/infra/ui/org.eclipse.papyrus.infra.widgets.toolbox/src/org/eclipse/papyrus/infra/widgets/toolbox/Activator.java @@ -1,5 +1,6 @@ /***************************************************************************** - * Copyright (c) 2008, 2016 CEA LIST, Christian W. Damus, and others. + * Copyright (c) 2008 CEA LIST. + * * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 @@ -8,19 +9,15 @@ * * Contributors: * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr - Initial API and implementation - * Christian W. Damus - bug 485220 * *****************************************************************************/ package org.eclipse.papyrus.infra.widgets.toolbox; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.resource.ImageRegistry; -import org.eclipse.papyrus.infra.tools.spi.INotificationBuilderFactory; -import org.eclipse.papyrus.infra.widgets.toolbox.notification.builders.NotificationBuilder; import org.eclipse.swt.graphics.Image; import org.eclipse.ui.plugin.AbstractUIPlugin; import org.osgi.framework.BundleContext; -import org.osgi.framework.ServiceRegistration; /** * The activator class controls the plug-in life cycle @@ -33,27 +30,30 @@ public class Activator extends AbstractUIPlugin { // The shared instance private static Activator plugin; - private ServiceRegistration notificationBuilderReg; - /** * The constructor */ public Activator() { } + /* + * (non-Javadoc) + * + * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext) + */ @Override public void start(BundleContext context) throws Exception { super.start(context); plugin = this; - - notificationBuilderReg = context.registerService(INotificationBuilderFactory.class, NotificationBuilder::new, null); } + /* + * (non-Javadoc) + * + * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext) + */ @Override public void stop(BundleContext context) throws Exception { - notificationBuilderReg.unregister(); - notificationBuilderReg = null; - plugin = null; super.stop(context); } diff --git a/plugins/infra/ui/org.eclipse.papyrus.infra.widgets.toolbox/src/org/eclipse/papyrus/infra/widgets/toolbox/notification/dialogs/AbstractNotificationPopup.java b/plugins/infra/ui/org.eclipse.papyrus.infra.widgets.toolbox/src/org/eclipse/papyrus/infra/widgets/toolbox/notification/dialogs/AbstractNotificationPopup.java index f77b94a991e..56ce1f4d50a 100644 --- a/plugins/infra/ui/org.eclipse.papyrus.infra.widgets.toolbox/src/org/eclipse/papyrus/infra/widgets/toolbox/notification/dialogs/AbstractNotificationPopup.java +++ b/plugins/infra/ui/org.eclipse.papyrus.infra.widgets.toolbox/src/org/eclipse/papyrus/infra/widgets/toolbox/notification/dialogs/AbstractNotificationPopup.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2004, 2009 Tasktop Technologies and others. + * Copyright (c) 2004, 2016 Tasktop Technologies, Christian W. Damus, and others. * 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 @@ -8,6 +8,8 @@ * Contributors: * Benjamin Pasero - intial API and implementation * Tasktop Technologies - initial API and implementation + * Christian W. Damus - bug 485220 + * *******************************************************************************/ package org.eclipse.papyrus.infra.widgets.toolbox.notification.dialogs; @@ -18,9 +20,10 @@ import org.eclipse.core.runtime.jobs.Job; import org.eclipse.jface.resource.JFaceResources; import org.eclipse.jface.resource.LocalResourceManager; import org.eclipse.jface.window.Window; -import org.eclipse.papyrus.infra.ui.util.PapyrusImageUtils; import org.eclipse.papyrus.infra.widgets.toolbox.SwtUtil; import org.eclipse.papyrus.infra.widgets.toolbox.SwtUtil.FadeJob; +import org.eclipse.papyrus.infra.widgets.toolbox.utils.ISharedImages; +import org.eclipse.papyrus.infra.widgets.toolbox.utils.ToolbooxImageUtils; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ControlAdapter; import org.eclipse.swt.events.ControlEvent; @@ -85,6 +88,7 @@ public abstract class AbstractNotificationPopup extends Window { if (!display.isDisposed()) { display.asyncExec(new Runnable() { + @Override public void run() { Shell shell = AbstractNotificationPopup.this.getShell(); if (shell == null || shell.isDisposed()) { @@ -158,7 +162,7 @@ public abstract class AbstractNotificationPopup extends Window { } protected Image getPopupShellImage(int maximumHeight) { - return PapyrusImageUtils.getDefaultIcon(); + return ToolbooxImageUtils.getImage(ISharedImages.IMG_PAPYRUS); } /** @@ -307,6 +311,7 @@ public abstract class AbstractNotificationPopup extends Window { shell.setVisible(true); fadeJob = SwtUtil.fadeIn(shell, new SwtUtil.IFadeListener() { + @Override public void faded(Shell shell, int alpha) { if (shell.isDisposed()) { return; @@ -501,6 +506,7 @@ public abstract class AbstractNotificationPopup extends Window { } fadeJob = SwtUtil.fadeOut(getShell(), new SwtUtil.IFadeListener() { + @Override public void faded(Shell shell, int alpha) { if (!shell.isDisposed()) { if (alpha == 0) { @@ -511,6 +517,7 @@ public abstract class AbstractNotificationPopup extends Window { } fadeJob = SwtUtil.fastFadeIn(shell, new SwtUtil.IFadeListener() { + @Override public void faded(Shell shell, int alpha) { if (shell.isDisposed()) { return; diff --git a/plugins/infra/ui/org.eclipse.papyrus.infra.widgets.toolbox/src/org/eclipse/papyrus/infra/widgets/toolbox/notification/dialogs/PapyrusPopup.java b/plugins/infra/ui/org.eclipse.papyrus.infra.widgets.toolbox/src/org/eclipse/papyrus/infra/widgets/toolbox/notification/dialogs/PapyrusPopup.java index 530dec1e4e1..b5967f8d451 100644 --- a/plugins/infra/ui/org.eclipse.papyrus.infra.widgets.toolbox/src/org/eclipse/papyrus/infra/widgets/toolbox/notification/dialogs/PapyrusPopup.java +++ b/plugins/infra/ui/org.eclipse.papyrus.infra.widgets.toolbox/src/org/eclipse/papyrus/infra/widgets/toolbox/notification/dialogs/PapyrusPopup.java @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2010 ATOS ORIGIN. + * Copyright (c) 2010, 2016 ATOS ORIGIN, Christian W. Damus, and others. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 @@ -8,6 +8,8 @@ * * Contributors: * Tristan Faure (ATOS ORIGIN INTEGRATION) tristan.faure@atosorigin.com - Initial API and implementation + * Christian W. Damus - bug 485220 + * *****************************************************************************/ package org.eclipse.papyrus.infra.widgets.toolbox.notification.dialogs; @@ -18,12 +20,13 @@ import java.util.Map; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.IDialogConstants; -import org.eclipse.papyrus.infra.ui.util.PapyrusImageUtils; import org.eclipse.papyrus.infra.widgets.toolbox.notification.ICompositeCreator; import org.eclipse.papyrus.infra.widgets.toolbox.notification.INotification; import org.eclipse.papyrus.infra.widgets.toolbox.notification.NotificationRunnable; import org.eclipse.papyrus.infra.widgets.toolbox.notification.PapyrusToolkit; import org.eclipse.papyrus.infra.widgets.toolbox.notification.builders.IContext; +import org.eclipse.papyrus.infra.widgets.toolbox.utils.ISharedImages; +import org.eclipse.papyrus.infra.widgets.toolbox.utils.ToolbooxImageUtils; import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.layout.GridData; @@ -70,7 +73,7 @@ public abstract class PapyrusPopup extends Dialog { @Override protected Control createDialogArea(Composite parent) { getShell().setText(title == null ? "" : title); - getShell().setImage(PapyrusImageUtils.getDefaultIcon()); + getShell().setImage(ToolbooxImageUtils.getImage(ISharedImages.IMG_PAPYRUS)); Composite c = (Composite) super.createDialogArea(parent); c.setLayout(new FillLayout()); createForm(c); diff --git a/plugins/infra/ui/org.eclipse.papyrus.infra.widgets.toolbox/src/org/eclipse/papyrus/infra/widgets/toolbox/notification/view/PapyrusNotificationView.java b/plugins/infra/ui/org.eclipse.papyrus.infra.widgets.toolbox/src/org/eclipse/papyrus/infra/widgets/toolbox/notification/view/PapyrusNotificationView.java index a6d5a7d99fb..458a3d6b80b 100644 --- a/plugins/infra/ui/org.eclipse.papyrus.infra.widgets.toolbox/src/org/eclipse/papyrus/infra/widgets/toolbox/notification/view/PapyrusNotificationView.java +++ b/plugins/infra/ui/org.eclipse.papyrus.infra.widgets.toolbox/src/org/eclipse/papyrus/infra/widgets/toolbox/notification/view/PapyrusNotificationView.java @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2010 ATOS ORIGIN. + * Copyright (c) 2010, 2016 ATOS ORIGIN, Christian W. Damus, and others. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 @@ -8,6 +8,8 @@ * * Contributors: * Tristan Faure (ATOS ORIGIN INTEGRATION) tristan.faure@atosorigin.com - Initial API and implementation + * Christian W. Damus - bug 485220 + * *****************************************************************************/ package org.eclipse.papyrus.infra.widgets.toolbox.notification.view; @@ -20,7 +22,6 @@ import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.IToolBarManager; import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.action.Separator; -import org.eclipse.papyrus.infra.ui.util.PapyrusImageUtils; import org.eclipse.papyrus.infra.widgets.toolbox.notification.ICallBack; import org.eclipse.papyrus.infra.widgets.toolbox.notification.ICompositeCreator; import org.eclipse.papyrus.infra.widgets.toolbox.notification.NotificationRunnable; @@ -79,7 +80,7 @@ public class PapyrusNotificationView extends ViewPart implements ICallBack { */ @Override public void createPartControl(Composite parent) { - setTitleImage(PapyrusImageUtils.getDefaultIcon()); + setTitleImage(ToolbooxImageUtils.getImage(org.eclipse.papyrus.infra.widgets.toolbox.utils.ISharedImages.IMG_PAPYRUS)); createContent(parent); makeActions(); hookContextMenu(); @@ -262,6 +263,7 @@ public class PapyrusNotificationView extends ViewPart implements ICallBack { menuMgr.setRemoveAllWhenShown(true); menuMgr.addMenuListener(new IMenuListener() { + @Override public void menuAboutToShow(IMenuManager manager) { PapyrusNotificationView.this.fillContextMenu(manager); } @@ -370,6 +372,7 @@ public class PapyrusNotificationView extends ViewPart implements ICallBack { * * @see org.eclipse.papyrus.infra.widgets.toolbox.notification.view.ICloseCallBack#closed(java.lang.Object) */ + @Override public void callBack(Object element) { destroy(element); } diff --git a/plugins/infra/ui/org.eclipse.papyrus.infra.widgets.toolbox/src/org/eclipse/papyrus/infra/widgets/toolbox/utils/ISharedImages.java b/plugins/infra/ui/org.eclipse.papyrus.infra.widgets.toolbox/src/org/eclipse/papyrus/infra/widgets/toolbox/utils/ISharedImages.java index c4a7dd95320..616504b648a 100644 --- a/plugins/infra/ui/org.eclipse.papyrus.infra.widgets.toolbox/src/org/eclipse/papyrus/infra/widgets/toolbox/utils/ISharedImages.java +++ b/plugins/infra/ui/org.eclipse.papyrus.infra.widgets.toolbox/src/org/eclipse/papyrus/infra/widgets/toolbox/utils/ISharedImages.java @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2010 ATOS ORIGIN. + * Copyright (c) 2010, 2016 ATOS ORIGIN, Christian W. Damus, and others. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 @@ -8,6 +8,8 @@ * * Contributors: * Tristan Faure (ATOS ORIGIN INTEGRATION) tristan.faure@atosorigin.com - Initial API and implementation + * Christian W. Damus - bug 485220 + * *****************************************************************************/ package org.eclipse.papyrus.infra.widgets.toolbox.utils; @@ -16,10 +18,16 @@ package org.eclipse.papyrus.infra.widgets.toolbox.utils; * Constants to use in {@link ToolbooxImageUtils} * * @author tfaure - * + * + * @noimplement This interface is not intended to be implemented by clients. + * @noextend This interface is not intended to be extended by clients. */ public interface ISharedImages { int IMG_RUN = 0; + /** + * @since 1.2 + */ + int IMG_PAPYRUS = 1; } diff --git a/plugins/infra/ui/org.eclipse.papyrus.infra.widgets.toolbox/src/org/eclipse/papyrus/infra/widgets/toolbox/utils/ToolbooxImageUtils.java b/plugins/infra/ui/org.eclipse.papyrus.infra.widgets.toolbox/src/org/eclipse/papyrus/infra/widgets/toolbox/utils/ToolbooxImageUtils.java index 5eede25823c..400bcf5263a 100644 --- a/plugins/infra/ui/org.eclipse.papyrus.infra.widgets.toolbox/src/org/eclipse/papyrus/infra/widgets/toolbox/utils/ToolbooxImageUtils.java +++ b/plugins/infra/ui/org.eclipse.papyrus.infra.widgets.toolbox/src/org/eclipse/papyrus/infra/widgets/toolbox/utils/ToolbooxImageUtils.java @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2010 ATOS ORIGIN. + * Copyright (c) 2010, 2016 ATOS ORIGIN, Christian W. Damus, and others. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 @@ -8,6 +8,8 @@ * * Contributors: * Tristan Faure (ATOS ORIGIN INTEGRATION) tristan.faure@atosorigin.com - Initial API and implementation + * Christian W. Damus - bug 485220 + * *****************************************************************************/ package org.eclipse.papyrus.infra.widgets.toolbox.utils; @@ -43,6 +45,9 @@ public class ToolbooxImageUtils { case ISharedImages.IMG_RUN: path = path.append("run.gif"); break; + case ISharedImages.IMG_PAPYRUS: + path = path.append("Papyrus.gif"); + break; default: break; } -- cgit v1.2.3