From 41aa1d294ab9dfb27b38e7c272e9c7c3e99942bb Mon Sep 17 00:00:00 2001 From: Brian de Alwis Date: Fri, 18 Nov 2011 10:27:32 -0500 Subject: Use proper per-column label providers and enable tooltips. --- .../org/eclipse/e4/tools/css/spy/CssSpyDialog.java | 66 +++++++++++++++++----- .../css/spy/WidgetCSSDetailsLabelProvider.java | 57 ------------------- 2 files changed, 51 insertions(+), 72 deletions(-) delete mode 100644 bundles/org.eclipse.e4.tools.css.spy/src/org/eclipse/e4/tools/css/spy/WidgetCSSDetailsLabelProvider.java diff --git a/bundles/org.eclipse.e4.tools.css.spy/src/org/eclipse/e4/tools/css/spy/CssSpyDialog.java b/bundles/org.eclipse.e4.tools.css.spy/src/org/eclipse/e4/tools/css/spy/CssSpyDialog.java index 0a4b9047..64432495 100644 --- a/bundles/org.eclipse.e4.tools.css.spy/src/org/eclipse/e4/tools/css/spy/CssSpyDialog.java +++ b/bundles/org.eclipse.e4.tools.css.spy/src/org/eclipse/e4/tools/css/spy/CssSpyDialog.java @@ -22,6 +22,7 @@ import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.layout.TableColumnLayout; import org.eclipse.jface.layout.TreeColumnLayout; import org.eclipse.jface.viewers.ColumnLabelProvider; +import org.eclipse.jface.viewers.ColumnViewerToolTipSupport; import org.eclipse.jface.viewers.ColumnWeightData; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.SelectionChangedEvent; @@ -330,41 +331,76 @@ public class CssSpyDialog extends Dialog { // / THE WIDGET TREE Composite widgetsComposite = new Composite(sashForm, SWT.NONE); - // GridData gridWData = new GridData(SWT.FILL, SWT.FILL, true, true, 2, - // 1); - // gridWData.minimumHeight = 100; - // widgetsComposite.setLayoutData(gridWData); widgetTreeViewer = new TreeViewer(widgetsComposite, SWT.BORDER); widgetTreeViewer.setContentProvider(new WidgetTreeProvider()); widgetTreeViewer.setAutoExpandLevel(0); widgetTreeViewer.getTree().setLinesVisible(true); widgetTreeViewer.getTree().setHeaderVisible(true); + ColumnViewerToolTipSupport.enableFor(widgetTreeViewer); TreeViewerColumn widgetTypeColumn = new TreeViewerColumn( widgetTreeViewer, SWT.NONE); - widgetTypeColumn.setLabelProvider(new WidgetCSSDetailsLabelProvider()); widgetTypeColumn.getColumn().setWidth(100); widgetTypeColumn.getColumn().setText("Widget"); + widgetTypeColumn.setLabelProvider(new ColumnLabelProvider() { + @Override + public String getText(Object item) { + CSSStylableElement element = CssSpyDialog.getCSSElement(item); + return element.getLocalName() + " (" + + element.getNamespaceURI() + ")"; + } + }); - TreeViewerColumn widgetColumnId = new TreeViewerColumn( + TreeViewerColumn widgetClassColumn = new TreeViewerColumn( widgetTreeViewer, SWT.NONE); - widgetColumnId.setLabelProvider(new WidgetCSSDetailsLabelProvider()); - widgetColumnId.getColumn().setWidth(100); - widgetColumnId.getColumn().setText("CSS Class"); + widgetClassColumn.getColumn().setText("CSS Class"); + widgetClassColumn.getColumn().setWidth(100); + widgetClassColumn.setLabelProvider(new ColumnLabelProvider() { + @Override + public String getText(Object item) { + CSSStylableElement element = CssSpyDialog.getCSSElement(item); + if (element.getCSSClass() == null) { + return null; + } + String classes[] = element.getCSSClass().split(" +"); + return classes.length <= 1 ? classes[0] : classes[0] + " (+" + + (classes.length - 1) + " others)"; + } + + @Override + public String getToolTipText(Object item) { + CSSStylableElement element = CssSpyDialog.getCSSElement(item); + if (element == null) { + return null; + } + StringBuilder sb = new StringBuilder(); + sb.append(element.getLocalName()).append(" (") + .append(element.getNamespaceURI()).append(")"); + sb.append("\nClasses:\n "); + Activator.join(sb, element.getCSSClass().split(" +"), "\n "); + return sb.toString(); + } + }); - TreeViewerColumn widgetColumnClass = new TreeViewerColumn( + TreeViewerColumn widgetIdColumn = new TreeViewerColumn( widgetTreeViewer, SWT.NONE); - widgetColumnClass.setLabelProvider(new WidgetCSSDetailsLabelProvider()); - widgetColumnClass.getColumn().setWidth(100); - widgetColumnClass.getColumn().setText("CSS Id"); + widgetIdColumn.getColumn().setWidth(100); + widgetIdColumn.getColumn().setText("CSS Id"); + widgetIdColumn.setLabelProvider(new ColumnLabelProvider() { + @Override + public String getText(Object item) { + CSSStylableElement element = CssSpyDialog.getCSSElement(item); + return element.getCSSId(); + } + }); TreeColumnLayout widgetsTableLayout = new TreeColumnLayout(); widgetsTableLayout.setColumnData(widgetTypeColumn.getColumn(), new ColumnWeightData(50)); - widgetsTableLayout.setColumnData(widgetColumnClass.getColumn(), + widgetsTableLayout.setColumnData(widgetIdColumn.getColumn(), new ColumnWeightData(40)); - widgetsTableLayout.setColumnData(widgetColumnId.getColumn(), + widgetsTableLayout.setColumnData(widgetClassColumn.getColumn(), new ColumnWeightData(40)); widgetsComposite.setLayout(widgetsTableLayout); diff --git a/bundles/org.eclipse.e4.tools.css.spy/src/org/eclipse/e4/tools/css/spy/WidgetCSSDetailsLabelProvider.java b/bundles/org.eclipse.e4.tools.css.spy/src/org/eclipse/e4/tools/css/spy/WidgetCSSDetailsLabelProvider.java deleted file mode 100644 index 4365aa0e..00000000 --- a/bundles/org.eclipse.e4.tools.css.spy/src/org/eclipse/e4/tools/css/spy/WidgetCSSDetailsLabelProvider.java +++ /dev/null @@ -1,57 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011 Manumitting Technologies, Inc. - * 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: - * Brian de Alwis (MT) - initial API and implementation - *******************************************************************************/ -package org.eclipse.e4.tools.css.spy; - -import org.eclipse.e4.ui.css.core.dom.CSSStylableElement; -import org.eclipse.jface.viewers.ColumnLabelProvider; -import org.eclipse.jface.viewers.ViewerCell; - -public class WidgetCSSDetailsLabelProvider extends ColumnLabelProvider { - @Override - public void update(ViewerCell cell) { - super.update(cell); - CSSStylableElement element = CssSpyDialog.getCSSElement(cell.getElement()); - if (element == null) { - return; - } - switch(cell.getColumnIndex()) { - case 0: - cell.setText(element.getLocalName() + " (" + element.getNamespaceURI() + ")"); - break; - case 1: - if (element.getCSSClass() == null) { - cell.setText(""); - } else { - String classes[] = element.getCSSClass().split(" +"); - cell.setText(classes.length <= 1 ? classes[0] : classes[0] + " (+" + (classes.length - 1) + " others)"); - } - return; - case 2: - cell.setText(element.getCSSId()); - return; - } - } - - @Override - public String getToolTipText(Object item) { - CSSStylableElement element = CssSpyDialog.getCSSElement(item); - if (element == null) { - return null; - } - StringBuilder sb = new StringBuilder(); - sb.append(element.getLocalName()).append(" (").append(element.getNamespaceURI()).append(")"); - sb.append("\nClasses:\n "); - Activator.join(sb, element.getCSSClass().split(" +"), "\n "); - return sb.toString(); - } - - -} -- cgit v1.2.3