Skip to content

Commit b88b43b

Browse files
committed
Add popup menu and notification feedback for CSS Spy clipboard export
1 parent 0bfeb26 commit b88b43b

4 files changed

Lines changed: 25 additions & 1 deletion

File tree

ui/org.eclipse.pde.spy.css/META-INF/MANIFEST.MF

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ Require-Bundle: org.eclipse.core.runtime;bundle-version="3.29.0",
1111
org.eclipse.e4.ui.css.swt;bundle-version="0.10.0",
1212
org.eclipse.e4.ui.css.swt.theme;bundle-version="0.9.201",
1313
org.eclipse.e4.ui.model.workbench;bundle-version="0.9.1",
14-
org.eclipse.pde.spy.core;bundle-version="1.0.200"
14+
org.eclipse.pde.spy.core;bundle-version="1.0.200",
15+
org.eclipse.jface.notifications;bundle-version="0.8.0"
1516
Bundle-ActivationPolicy: lazy
1617
Import-Package: jakarta.annotation;version="[2.1.0,3.0.0)",
1718
jakarta.inject;version="[2.0.0,3.0.0)",

ui/org.eclipse.pde.spy.css/src/org/eclipse/pde/spy/css/CssSpyPart.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,14 @@
3838
import org.eclipse.e4.ui.css.swt.engine.CSSSWTEngineImpl;
3939
import org.eclipse.e4.ui.model.application.ui.basic.MPart;
4040
import org.eclipse.e4.ui.services.IServiceConstants;
41+
import org.eclipse.jface.action.Action;
42+
import org.eclipse.jface.action.MenuManager;
4143
import org.eclipse.jface.dialogs.MessageDialog;
4244
import org.eclipse.jface.layout.GridDataFactory;
4345
import org.eclipse.jface.layout.GridLayoutFactory;
4446
import org.eclipse.jface.layout.TableColumnLayout;
4547
import org.eclipse.jface.layout.TreeColumnLayout;
48+
import org.eclipse.jface.notifications.NotificationPopup;
4649
import org.eclipse.jface.viewers.CellEditor;
4750
import org.eclipse.jface.viewers.ColumnLabelProvider;
4851
import org.eclipse.jface.viewers.ColumnViewerEditor;
@@ -89,6 +92,7 @@
8992
import org.eclipse.swt.widgets.Control;
9093
import org.eclipse.swt.widgets.Display;
9194
import org.eclipse.swt.widgets.Label;
95+
import org.eclipse.swt.widgets.Menu;
9296
import org.eclipse.swt.widgets.Shell;
9397
import org.eclipse.swt.widgets.Table;
9498
import org.eclipse.swt.widgets.Text;
@@ -598,6 +602,21 @@ public String getText(Object item) {
598602
widgetsTableLayout.setColumnData(widgetClassColumn.getColumn(), new ColumnWeightData(40));
599603
widgetsComposite.setLayout(widgetsTableLayout);
600604

605+
MenuManager menuManager = new MenuManager();
606+
menuManager.setRemoveAllWhenShown(true);
607+
menuManager.addMenuListener(manager -> {
608+
Action copyAction = new Action(Messages.CssSpyPart_Copy_widget_info) {
609+
@Override
610+
public void run() {
611+
copyWidgetHierarchyToClipboard();
612+
}
613+
};
614+
copyAction.setEnabled(!widgetTreeViewer.getSelection().isEmpty());
615+
manager.add(copyAction);
616+
});
617+
Menu menu = menuManager.createContextMenu(widgetTreeViewer.getControl());
618+
widgetTreeViewer.getControl().setMenu(menu);
619+
601620
// / HEADERS
602621
Composite container = new Composite(sashForm, SWT.NONE);
603622
container.setLayout(new GridLayout(2, true));
@@ -1002,6 +1021,8 @@ protected void copyWidgetHierarchyToClipboard() {
10021021
Clipboard clipboard = new Clipboard(display);
10031022
try {
10041023
clipboard.setContents(new Object[] { sb.toString() }, new Transfer[] { TextTransfer.getInstance() });
1024+
NotificationPopup.forDisplay(display).text(Messages.CssSpyPart_Widget_hierarchy_copied_to_clipboard)
1025+
.title(Messages.CssSpyPart_Copy_widget_info, true).open();
10051026
} finally {
10061027
clipboard.dispose();
10071028
}

ui/org.eclipse.pde.spy.css/src/org/eclipse/pde/spy/css/Messages.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ private Messages() {
2424
public static String CssSpyPart_Bounds;
2525
public static String CssSpyPart_Copy_widget_info;
2626
public static String CssSpyPart_Copy_widget_hierarchy_tooltip;
27+
public static String CssSpyPart_Widget_hierarchy_copied_to_clipboard;
2728
public static String CssSpyPart_Classes;
2829
public static String CssSpyPart_CSS;
2930
public static String CssSpyPart_CSS_Class;

ui/org.eclipse.pde.spy.css/src/org/eclipse/pde/spy/css/messages.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ CssSpyPart_All_shells=All shells
1010
CssSpyPart_Bounds=Bounds:
1111
CssSpyPart_Copy_widget_info=Copy widget info to clipboard
1212
CssSpyPart_Copy_widget_hierarchy_tooltip=Copies the selected widget's hierarchy and CSS styling information to the clipboard
13+
CssSpyPart_Widget_hierarchy_copied_to_clipboard=Widget hierarchy copied to clipboard
1314
CssSpyPart_Classes=Classes:
1415
CssSpyPart_CSS=CSS
1516
CssSpyPart_CSS_Class=CSS Class

0 commit comments

Comments
 (0)