Bug 442693 - Added decorators to "Advanced Information" when dumping UI tree
Signed-off-by: Mixail Bobylev <mixail.bobylev@xored.com>
diff --git a/runtime/org.eclipse.rcptt.expandbar.runtime/src/org/eclipse/rcptt/expandbar/runtime/internal/ExpandBarUIProcessor.java b/runtime/org.eclipse.rcptt.expandbar.runtime/src/org/eclipse/rcptt/expandbar/runtime/internal/ExpandBarUIProcessor.java
index be14821..1059b68 100644
--- a/runtime/org.eclipse.rcptt.expandbar.runtime/src/org/eclipse/rcptt/expandbar/runtime/internal/ExpandBarUIProcessor.java
+++ b/runtime/org.eclipse.rcptt.expandbar.runtime/src/org/eclipse/rcptt/expandbar/runtime/internal/ExpandBarUIProcessor.java
@@ -12,13 +12,10 @@
import java.util.Arrays;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.ExpandBar;
-import org.eclipse.swt.widgets.ExpandItem;
-
import org.eclipse.rcptt.expandbar.ExpandBarConstants;
import org.eclipse.rcptt.expandbar.widgets.WidgetsFactory;
import org.eclipse.rcptt.tesla.core.context.ContextManagement.Context;
+import org.eclipse.rcptt.tesla.core.info.AdvancedInformation;
import org.eclipse.rcptt.tesla.core.info.Q7WaitInfoRoot;
import org.eclipse.rcptt.tesla.core.protocol.Collapse;
import org.eclipse.rcptt.tesla.core.protocol.Expand;
@@ -35,6 +32,9 @@
import org.eclipse.rcptt.tesla.internal.ui.player.SWTUIElement;
import org.eclipse.rcptt.tesla.internal.ui.player.SWTUIPlayer;
import org.eclipse.rcptt.tesla.internal.ui.processors.SWTUIProcessor;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.ExpandBar;
+import org.eclipse.swt.widgets.ExpandItem;
public class ExpandBarUIProcessor extends SWTUIProcessor implements ISWTModelMapperExtension {
private final ExpandBarPlayerExtension ext = new ExpandBarPlayerExtension();
@@ -44,6 +44,11 @@
}
@Override
+ public void collectInformation(AdvancedInformation information, Command lastCommand) {
+ // No information
+ }
+
+ @Override
public void terminate() {
SWTUIPlayer.removeExtension(ext);
super.terminate();
diff --git a/runtime/tesla/org.eclipse.rcptt.tesla.swt/src/org/eclipse/rcptt/tesla/internal/ui/player/SWTUIElement.java b/runtime/tesla/org.eclipse.rcptt.tesla.swt/src/org/eclipse/rcptt/tesla/internal/ui/player/SWTUIElement.java
index c7f5aac..3bdaeff 100644
--- a/runtime/tesla/org.eclipse.rcptt.tesla.swt/src/org/eclipse/rcptt/tesla/internal/ui/player/SWTUIElement.java
+++ b/runtime/tesla/org.eclipse.rcptt.tesla.swt/src/org/eclipse/rcptt/tesla/internal/ui/player/SWTUIElement.java
@@ -10,7 +10,21 @@
*******************************************************************************/
package org.eclipse.rcptt.tesla.internal.ui.player;
+import java.util.ArrayList;
+
+import org.eclipse.jface.fieldassist.ControlDecoration;
import org.eclipse.osgi.util.NLS;
+import org.eclipse.rcptt.logging.IQ7ActivityLogs;
+import org.eclipse.rcptt.logging.Q7LoggingManager;
+import org.eclipse.rcptt.tesla.core.TeslaFeatures;
+import org.eclipse.rcptt.tesla.core.protocol.ElementKind;
+import org.eclipse.rcptt.tesla.core.protocol.GenericElementKind;
+import org.eclipse.rcptt.tesla.core.protocol.UIColor;
+import org.eclipse.rcptt.tesla.internal.ui.IBasicMappingNode;
+import org.eclipse.rcptt.tesla.internal.ui.player.viewers.Viewers;
+import org.eclipse.rcptt.tesla.jface.ControlDecoratorRecordingHolder;
+import org.eclipse.rcptt.tesla.swt.TeslaSWTMessages;
+import org.eclipse.rcptt.util.swt.TableTreeUtil;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
@@ -23,17 +37,6 @@
import org.eclipse.swt.widgets.Widget;
import org.eclipse.ui.PlatformUI;
-import org.eclipse.rcptt.logging.IQ7ActivityLogs;
-import org.eclipse.rcptt.logging.Q7LoggingManager;
-import org.eclipse.rcptt.util.swt.TableTreeUtil;
-import org.eclipse.rcptt.tesla.core.TeslaFeatures;
-import org.eclipse.rcptt.tesla.core.protocol.ElementKind;
-import org.eclipse.rcptt.tesla.core.protocol.GenericElementKind;
-import org.eclipse.rcptt.tesla.core.protocol.UIColor;
-import org.eclipse.rcptt.tesla.internal.ui.IBasicMappingNode;
-import org.eclipse.rcptt.tesla.internal.ui.player.viewers.Viewers;
-import org.eclipse.rcptt.tesla.swt.TeslaSWTMessages;
-
/**
* Instances of this class are used mainly as convenience wraps for SWT widgets
* (and not only widgets, but UI elements of other kinds as well) to do some
@@ -289,4 +292,15 @@
}
return new Rectangle(0, 0, 0, 0);
}
+
+ public java.util.List<ControlDecoration> getDecorators() {
+ java.util.List<ControlDecoration> result = new ArrayList<ControlDecoration>();
+
+ if (widget instanceof Control) {
+ result = ControlDecoratorRecordingHolder.getDecorators((Control) widget);
+ }
+
+ return result;
+ }
+
}
diff --git a/runtime/tesla/org.eclipse.rcptt.tesla.swt/src/org/eclipse/rcptt/tesla/internal/ui/processors/SWTUIProcessor.java b/runtime/tesla/org.eclipse.rcptt.tesla.swt/src/org/eclipse/rcptt/tesla/internal/ui/processors/SWTUIProcessor.java
index 87c0bb9..e9b1c94 100644
--- a/runtime/tesla/org.eclipse.rcptt.tesla.swt/src/org/eclipse/rcptt/tesla/internal/ui/processors/SWTUIProcessor.java
+++ b/runtime/tesla/org.eclipse.rcptt.tesla.swt/src/org/eclipse/rcptt/tesla/internal/ui/processors/SWTUIProcessor.java
@@ -10,8 +10,6 @@
*******************************************************************************/
package org.eclipse.rcptt.tesla.internal.ui.processors;
-import static org.eclipse.rcptt.util.swt.Bounds.centerAbs;
-import static org.eclipse.rcptt.util.swt.Bounds.centerRel;
import static org.eclipse.rcptt.tesla.internal.ui.player.PlayerTextUtils.replaceMultilines;
import static org.eclipse.rcptt.tesla.internal.ui.player.PlayerTextUtils.safeMatches;
import static org.eclipse.rcptt.tesla.internal.ui.player.PlayerTextUtils.unifyMultilines;
@@ -22,6 +20,8 @@
import static org.eclipse.rcptt.tesla.internal.ui.player.PlayerWidgetUtils.isDisabled;
import static org.eclipse.rcptt.tesla.internal.ui.player.PlayerWrapUtils.unwrap;
import static org.eclipse.rcptt.tesla.internal.ui.player.PlayerWrapUtils.unwrapWidget;
+import static org.eclipse.rcptt.util.swt.Bounds.centerAbs;
+import static org.eclipse.rcptt.util.swt.Bounds.centerRel;
import java.io.IOException;
import java.net.MalformedURLException;
@@ -49,49 +49,11 @@
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.jface.fieldassist.ControlDecoration;
import org.eclipse.jface.viewers.CellEditor;
import org.eclipse.jface.viewers.ColumnViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CCombo;
-import org.eclipse.swt.custom.StyledText;
-import org.eclipse.swt.graphics.FontData;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Item;
-import org.eclipse.swt.widgets.Link;
-import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Slider;
-import org.eclipse.swt.widgets.Spinner;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swt.widgets.TreeItem;
-import org.eclipse.swt.widgets.Widget;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorReference;
-import org.eclipse.ui.IViewReference;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPartReference;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.actions.ActionFactory;
-import org.eclipse.ui.handlers.IHandlerService;
-
-import org.eclipse.rcptt.util.StringUtils;
-import org.eclipse.rcptt.util.swt.StringLines;
-import org.eclipse.rcptt.util.swt.TableTreeUtil;
import org.eclipse.rcptt.tesla.core.Q7WaitUtils;
import org.eclipse.rcptt.tesla.core.TeslaFeatures;
import org.eclipse.rcptt.tesla.core.context.ContextManagement.Context;
@@ -214,13 +176,51 @@
import org.eclipse.rcptt.tesla.swt.dialogs.SWTDialogManager;
import org.eclipse.rcptt.tesla.swt.dnd.LocalClipboard;
import org.eclipse.rcptt.tesla.swt.events.TeslaEventManager;
-import org.eclipse.rcptt.tesla.swt.events.TeslaTimerExecManager;
import org.eclipse.rcptt.tesla.swt.events.TeslaEventManager.IUnhandledNativeDialogHandler;
+import org.eclipse.rcptt.tesla.swt.events.TeslaTimerExecManager;
import org.eclipse.rcptt.tesla.swt.workbench.EclipseWorkbenchProvider;
import org.eclipse.rcptt.tesla.ui.IImageAssertSupport;
import org.eclipse.rcptt.tesla.ui.SWTTeslaActivator;
import org.eclipse.rcptt.tesla.ui.describers.IWidgetDescriber;
import org.eclipse.rcptt.tesla.ui.describers.WidgetDescriber;
+import org.eclipse.rcptt.util.StringUtils;
+import org.eclipse.rcptt.util.swt.StringLines;
+import org.eclipse.rcptt.util.swt.TableTreeUtil;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CCombo;
+import org.eclipse.swt.custom.StyledText;
+import org.eclipse.swt.graphics.FontData;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.RGB;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Item;
+import org.eclipse.swt.widgets.Link;
+import org.eclipse.swt.widgets.MenuItem;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Slider;
+import org.eclipse.swt.widgets.Spinner;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableItem;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeItem;
+import org.eclipse.swt.widgets.Widget;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorReference;
+import org.eclipse.ui.IViewReference;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchPartReference;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.actions.ActionFactory;
+import org.eclipse.ui.handlers.IHandlerService;
public class SWTUIProcessor implements ITeslaCommandProcessor,
IScreenshotFactory, IModelMapperHelper {
@@ -2814,6 +2814,11 @@
if (!uiElement.getKind().is(ElementKind.Unknown)) {
nde = root.child(uiElement.getKind().name() + "("
+ (text != null ? text.trim() : "") + ")");
+ // Adds decorators
+ for (ControlDecoration decorator : uiElement.getDecorators()) {
+ if (decorator.isVisible())
+ nde.child("ControlDecoration(" + decorator.getDescriptionText() + ")");
+ }
}
try {
SWTUIElement[] children = getPlayer().children.collectFor(