Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/infra/ui/org.eclipse.papyrus.infra.widgets.toolbox/src/org/eclipse/papyrus/infra/widgets/toolbox/notification/builders/AsyncNotifierBuilder.java')
-rw-r--r--plugins/infra/ui/org.eclipse.papyrus.infra.widgets.toolbox/src/org/eclipse/papyrus/infra/widgets/toolbox/notification/builders/AsyncNotifierBuilder.java128
1 files changed, 128 insertions, 0 deletions
diff --git a/plugins/infra/ui/org.eclipse.papyrus.infra.widgets.toolbox/src/org/eclipse/papyrus/infra/widgets/toolbox/notification/builders/AsyncNotifierBuilder.java b/plugins/infra/ui/org.eclipse.papyrus.infra.widgets.toolbox/src/org/eclipse/papyrus/infra/widgets/toolbox/notification/builders/AsyncNotifierBuilder.java
new file mode 100644
index 00000000000..4f67eeba1a0
--- /dev/null
+++ b/plugins/infra/ui/org.eclipse.papyrus.infra.widgets.toolbox/src/org/eclipse/papyrus/infra/widgets/toolbox/notification/builders/AsyncNotifierBuilder.java
@@ -0,0 +1,128 @@
+/*****************************************************************************
+ * Copyright (c) 2010 ATOS ORIGIN.
+ *
+ * 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:
+ * Tristan Faure (ATOS ORIGIN INTEGRATION) tristan.faure@atosorigin.com - Initial API and implementation
+ *****************************************************************************/
+package org.eclipse.papyrus.infra.widgets.toolbox.notification.builders;
+
+import org.eclipse.papyrus.infra.widgets.toolbox.notification.IBuilder;
+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.dialogs.AsyncNotification;
+import org.eclipse.papyrus.infra.widgets.toolbox.notification.dialogs.ImagePapyrusAsyncNotificationPopup;
+import org.eclipse.papyrus.infra.widgets.toolbox.notification.dialogs.PapyrusAsyncNotificationPopup;
+import org.eclipse.papyrus.infra.widgets.toolbox.notification.utils.PapyrusControlsFactory;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+
+
+/**
+ * A Builder able to create {@link PapyrusAsyncNotificationPopup} instances
+ *
+ * @author tristan faure
+ *
+ */
+public class AsyncNotifierBuilder implements IBuilder {
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.papyrus.infra.widgets.toolbox.notification.IBuilder#build(org.eclipse.papyrus.infra.widgets.toolbox.notification.PropertyWrapper,
+ * org.eclipse.ui.forms.widgets.FormToolkit)
+ */
+ public INotification build(PropertyWrapper wrapper, final FormToolkit toolkit) {
+ PapyrusAsyncNotificationPopup popup = null;
+ if (wrapper.getComposite() != null) {
+ final ICompositeCreator composite = wrapper.getComposite();
+ // use the creator to a notification with image
+ if (wrapper.getType() != null) {
+ popup = new ImagePapyrusAsyncNotificationPopup(Display.getDefault(), toolkit, wrapper.getType()) {
+
+ @Override
+ protected void doCreateClient(Composite parent) {
+ PapyrusControlsFactory.createCompositeWithType(getShell(), null, parent, type, image, text, false, composite, context);
+ }
+
+ };
+ } else {
+ // use the creator to a notification without image
+ popup = new PapyrusAsyncNotificationPopup(Display.getDefault(), toolkit) {
+
+ @Override
+ protected void doCreateClient(Composite parent) {
+ Composite compo = composite.createComposite(parent, toolkit);
+ setCompositeCreated(compo);
+ }
+ };
+ }
+ } else {
+ if (wrapper.getType() != null) {
+ popup = new ImagePapyrusAsyncNotificationPopup(Display.getDefault(), toolkit, wrapper.getType());
+ } else {
+ popup = new PapyrusAsyncNotificationPopup(Display.getDefault(), toolkit);
+ }
+ String text = wrapper.getMessage();
+ if (text == null) {
+ text = "no text";
+ }
+ popup.setText(text);
+ }
+ if (wrapper.getDelay() != null) {
+ popup.setDelayClose(wrapper.getDelay());
+ }
+ if (wrapper.getActions() != null) {
+ popup.addAllRunnable(wrapper.getActions());
+ }
+ popup.setTitle(wrapper.getTitle() == null ? "Papyrus" : wrapper.getTitle());
+ AsyncNotification notification = new AsyncNotification(popup);
+ popup.setINotification(notification);
+ popup.open();
+ return notification;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.papyrus.infra.widgets.toolbox.notification.IBuilder#accept(java.lang.String, java.lang.Object)
+ */
+ public boolean accept(String parameterName, Object value) {
+ if (NotificationBuilder.ASYNCHRONOUS.equals(parameterName)) {
+ return value instanceof Boolean && ((Boolean) value);
+ }
+ if (NotificationBuilder.TEMPORARY.equals(parameterName)) {
+ return value instanceof Boolean && (Boolean) value;
+ }
+ if (NotificationBuilder.MESSAGE.equals(parameterName)) {
+ return true;
+ }
+ if (NotificationBuilder.COMPOSITE.equals(parameterName)) {
+ return true;
+ }
+ if (NotificationBuilder.ACTION.equals(parameterName)) {
+ return true;
+ }
+ if (NotificationBuilder.DELAY.equals(parameterName)) {
+ return true;
+ }
+ if (NotificationBuilder.IMAGE.equals(parameterName)) {
+ return true;
+ }
+ if (NotificationBuilder.TYPE.equals(parameterName)) {
+ return true;
+ }
+ if (NotificationBuilder.HTML.equals(parameterName)) {
+ return value instanceof Boolean && !(Boolean) value;
+ }
+ if (NotificationBuilder.TITLE.equals(parameterName)) {
+ return true;
+ }
+ return false;
+ }
+}

Back to the top