Skip to content

Commit 85d80bf

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

4 files changed

Lines changed: 24 additions & 2 deletions

File tree

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ Bundle-RequiredExecutionEnvironment: JavaSE-21
88
Require-Bundle: org.eclipse.core.runtime;bundle-version="3.29.0",
99
org.eclipse.e4.ui.css.core;bundle-version="0.9.0",
1010
org.eclipse.jface;bundle-version="3.39.0",
11+
org.eclipse.jface.notifications;bundle-version="1.0.0",
1112
org.eclipse.e4.ui.css.swt;bundle-version="0.10.0",
1213
org.eclipse.e4.ui.css.swt.theme;bundle-version="0.9.201",
1314
org.eclipse.e4.ui.model.workbench;bundle-version="0.9.1",

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

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,14 @@
3636
import org.eclipse.e4.ui.css.core.engine.CSSEngine;
3737
import org.eclipse.e4.ui.css.swt.dom.WidgetElement;
3838
import org.eclipse.e4.ui.css.swt.engine.CSSSWTEngineImpl;
39-
import org.eclipse.e4.ui.model.application.ui.basic.MPart;
40-
import org.eclipse.e4.ui.services.IServiceConstants;
39+
import org.eclipse.jface.action.Action;
40+
import org.eclipse.jface.action.MenuManager;
4141
import org.eclipse.jface.dialogs.MessageDialog;
4242
import org.eclipse.jface.layout.GridDataFactory;
4343
import org.eclipse.jface.layout.GridLayoutFactory;
4444
import org.eclipse.jface.layout.TableColumnLayout;
4545
import org.eclipse.jface.layout.TreeColumnLayout;
46+
import org.eclipse.jface.notifications.NotificationPopup;
4647
import org.eclipse.jface.viewers.CellEditor;
4748
import org.eclipse.jface.viewers.ColumnLabelProvider;
4849
import org.eclipse.jface.viewers.ColumnViewerEditor;
@@ -89,6 +90,7 @@
8990
import org.eclipse.swt.widgets.Control;
9091
import org.eclipse.swt.widgets.Display;
9192
import org.eclipse.swt.widgets.Label;
93+
import org.eclipse.swt.widgets.Menu;
9294
import org.eclipse.swt.widgets.Shell;
9395
import org.eclipse.swt.widgets.Table;
9496
import org.eclipse.swt.widgets.Text;
@@ -598,6 +600,21 @@ public String getText(Object item) {
598600
widgetsTableLayout.setColumnData(widgetClassColumn.getColumn(), new ColumnWeightData(40));
599601
widgetsComposite.setLayout(widgetsTableLayout);
600602

603+
MenuManager menuManager = new MenuManager();
604+
menuManager.setRemoveAllWhenShown(true);
605+
menuManager.addMenuListener(manager -> {
606+
Action copyAction = new Action(Messages.CssSpyPart_Copy_widget_info) {
607+
@Override
608+
public void run() {
609+
copyWidgetHierarchyToClipboard();
610+
}
611+
};
612+
copyAction.setEnabled(!widgetTreeViewer.getSelection().isEmpty());
613+
manager.add(copyAction);
614+
});
615+
Menu menu = menuManager.createContextMenu(widgetTreeViewer.getControl());
616+
widgetTreeViewer.getControl().setMenu(menu);
617+
601618
// / HEADERS
602619
Composite container = new Composite(sashForm, SWT.NONE);
603620
container.setLayout(new GridLayout(2, true));
@@ -1002,6 +1019,8 @@ protected void copyWidgetHierarchyToClipboard() {
10021019
Clipboard clipboard = new Clipboard(display);
10031020
try {
10041021
clipboard.setContents(new Object[] { sb.toString() }, new Transfer[] { TextTransfer.getInstance() });
1022+
NotificationPopup.forDisplay(display).text(Messages.CssSpyPart_Widget_hierarchy_copied_to_clipboard)
1023+
.title(Messages.CssSpyPart_Copy_widget_info, true).open();
10051024
} finally {
10061025
clipboard.dispose();
10071026
}

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)