[nobug] add display of current selection
diff --git a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/SSEUIMessages.java b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/SSEUIMessages.java index 2b295b4..5811392 100644 --- a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/SSEUIMessages.java +++ b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/SSEUIMessages.java
@@ -299,6 +299,7 @@ public static String OffsetStatusLineContributionItem_11; public static String OffsetStatusLineContributionItem_12; public static String OffsetStatusLineContributionItem_13; + public static String OffsetStatusLineContributionItem_14; public static String OffsetStatusLineContributionItem_15; public static String OffsetStatusLineContributionItem_16; public static String OffsetStatusLineContributionItem_17;
diff --git a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/SSEUIPluginResources.properties b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/SSEUIPluginResources.properties index 65d725f..71727bd 100644 --- a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/SSEUIPluginResources.properties +++ b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/SSEUIPluginResources.properties
@@ -273,6 +273,7 @@ OffsetStatusLineContributionItem_11=Type OffsetStatusLineContributionItem_12=Input Type: OffsetStatusLineContributionItem_13=Partitioner: +OffsetStatusLineContributionItem_14=Selection OffsetStatusLineContributionItem_15=Start OffsetStatusLineContributionItem_16=Length OffsetStatusLineContributionItem_17=Text Length
diff --git a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/ui/OffsetStatusLineContributionItem.java b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/ui/OffsetStatusLineContributionItem.java index 9b19440..63ffe56 100644 --- a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/ui/OffsetStatusLineContributionItem.java +++ b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/ui/OffsetStatusLineContributionItem.java
@@ -29,6 +29,7 @@ import org.eclipse.jface.text.ITypedRegion; import org.eclipse.jface.text.TextUtilities; import org.eclipse.jface.text.source.Annotation; +import org.eclipse.jface.text.source.IAnnotationModel; import org.eclipse.jface.viewers.ArrayContentProvider; import org.eclipse.jface.viewers.CellEditor; import org.eclipse.jface.viewers.ColumnWeightData; @@ -39,6 +40,7 @@ import org.eclipse.jface.viewers.ITableLabelProvider; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.jface.viewers.ListViewer; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.TableLayout; import org.eclipse.jface.viewers.TableViewer; @@ -98,7 +100,7 @@ setShellStyle(getShellStyle() | SWT.RESIZE); } - private void createAnnotationContents(Composite annotationsTabComposite) { + private void createAnnotationTabContents(Composite annotationsTabComposite) { annotationsTabComposite.setLayout(new GridLayout()); annotationsTabComposite.setLayoutData(new GridData()); @@ -169,11 +171,16 @@ annotationsTable.setColumnProperties(columns); // textSelection.getOffset(), textSelection.getLength() List matchingAnnotations = new ArrayList(0); - Iterator iterator = fTextEditor.getDocumentProvider().getAnnotationModel(fTextEditor.getEditorInput()).getAnnotationIterator(); - while (iterator.hasNext()) { - Annotation element = (Annotation) iterator.next(); - if (true) { - matchingAnnotations.add(element); + if (fTextEditor != null) { + IAnnotationModel annotationModel = fTextEditor.getDocumentProvider().getAnnotationModel(fTextEditor.getEditorInput()); + if (annotationModel != null) { + Iterator iterator = annotationModel.getAnnotationIterator(); + while (iterator.hasNext()) { + Annotation element = (Annotation) iterator.next(); + if (true) { + matchingAnnotations.add(element); + } + } } } annotationsTable.setInput(matchingAnnotations); @@ -218,7 +225,7 @@ partitionTab.setText(SSEUIMessages.OffsetStatusLineContributionItem_2); //$NON-NLS-1$ Composite partitions = new Composite(tabfolder, SWT.NONE); partitionTab.setControl(partitions); - createPartitionContents(partitions); + createPartitionTabContents(partitions); // only create the ITextRegions tab for IStructuredDocuments if (fDocument instanceof IStructuredDocument) { @@ -227,14 +234,20 @@ SashForm regions = new SashForm(tabfolder, SWT.NONE); regions.setOrientation(SWT.HORIZONTAL); regionTab.setControl(regions); - createRegionsContents(regions); + createRegionTabContents(regions); } TabItem annotationsTab = new TabItem(tabfolder, SWT.BORDER); annotationsTab.setText("Annotations"); //$NON-NLS-1$ Composite annotations = new Composite(tabfolder, SWT.NONE); annotationsTab.setControl(annotations); - createAnnotationContents(annotations); + createAnnotationTabContents(annotations); + + TabItem selectionTab = new TabItem(tabfolder, SWT.BORDER); + selectionTab.setText(SSEUIMessages.OffsetStatusLineContributionItem_14); + Composite selection = new Composite(tabfolder, SWT.NONE); + selectionTab.setControl(selection); + createSelectionTabContents(selection); return composite; } @@ -242,7 +255,7 @@ /** * @param area */ - private void createPartitionContents(Composite area) { + private void createPartitionTabContents(Composite area) { area.setLayout(new GridLayout()); area.setLayoutData(new GridData()); @@ -401,11 +414,37 @@ partitioningCombo.setFocus(); } + private void createSelectionTabContents(Composite area) { + area.setLayout(new GridLayout()); + area.setLayoutData(new GridData()); + + ISelection sel = fTextEditor.getSelectionProvider().getSelection(); + + Text typeName = new Text(area, SWT.WRAP); + typeName.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); + typeName.setText(sel.getClass().getName()); + typeName.setBackground(area.getBackground()); + + (new Label(area, SWT.NONE)).setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); + + ListViewer objectList = new ListViewer(area, SWT.SINGLE | SWT.BORDER); + objectList.setContentProvider(new ArrayContentProvider()); + if (sel instanceof IStructuredSelection) { + Object[] toArray = ((IStructuredSelection) sel).toArray(); + objectList.setInput(toArray); + typeName.setText(toArray.length + " objects in " + sel.getClass().getName()); + } + else { + objectList.setInput(new Object[0]); + } + objectList.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); + } + /** * @param composite * @return */ - private Composite createRegionsContents(SashForm sashForm) { + private Composite createRegionTabContents(SashForm sashForm) { ISelection sel = fTextEditor.getSelectionProvider().getSelection(); final ITextSelection textSelection = (ITextSelection) sel; final List documentRegions = new ArrayList(); @@ -442,10 +481,10 @@ children.add(((ITextRegionCollection) parentElement).getRegions().toArray()); } if (parentElement instanceof ITextRegion) { - children.add(new Pair(CONTEXT, ((ITextRegion) parentElement).getType())); - children.add(new Pair(START, Integer.toString(((ITextRegion) parentElement).getStart()))); - children.add(new Pair(TEXTLENGTH, Integer.toString(((ITextRegion) parentElement).getTextLength()))); - children.add(new Pair(LENGTH, Integer.toString(((ITextRegion) parentElement).getLength()))); + children.add(new KeyValuePair(CONTEXT, ((ITextRegion) parentElement).getType())); + children.add(new KeyValuePair(START, Integer.toString(((ITextRegion) parentElement).getStart()))); + children.add(new KeyValuePair(TEXTLENGTH, Integer.toString(((ITextRegion) parentElement).getTextLength()))); + children.add(new KeyValuePair(LENGTH, Integer.toString(((ITextRegion) parentElement).getLength()))); } if (parentElement instanceof ITextRegionList) { children.add(Arrays.asList(((ITextRegionList) parentElement).toArray())); @@ -473,7 +512,7 @@ } public boolean hasChildren(Object element) { - return !(element instanceof Pair); + return !(element instanceof KeyValuePair); } public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { @@ -481,8 +520,8 @@ }); tree.setLabelProvider(new LabelProvider() { public String getText(Object element) { - if (element instanceof Pair) - return ((Pair) element).fKey.toString().toLowerCase() + ": " + ((Pair) element).fValue; //$NON-NLS-1$ + if (element instanceof KeyValuePair) + return ((KeyValuePair) element).fKey.toString().toLowerCase() + ": " + ((KeyValuePair) element).fValue; //$NON-NLS-1$ if (element instanceof IStructuredDocumentRegion) { IStructuredDocumentRegion documentRegion = (IStructuredDocumentRegion) element; int packageNameLength = documentRegion.getClass().getPackage().getName().length(); @@ -505,14 +544,16 @@ } }); tree.setInput(fDocument); + + final Text displayText = new Text(sashForm, SWT.V_SCROLL | SWT.H_SCROLL | SWT.READ_ONLY | SWT.BORDER); displayText.setBackground(sashForm.getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND)); tree.addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent event) { if (event.getSelection() instanceof IStructuredSelection) { Object o = ((IStructuredSelection) event.getSelection()).getFirstElement(); - if (o instanceof Pair) - displayText.setText(((Pair) o).fValue.toString()); + if (o instanceof KeyValuePair) + displayText.setText(((KeyValuePair) o).fValue.toString()); else if (o instanceof ITextSelection) { ITextSelection text = (ITextSelection) o; try { @@ -522,6 +563,10 @@ displayText.setText(""); //$NON-NLS-1$ } } + else if (o instanceof ITextRegionCollection) { + ITextRegionCollection region = (ITextRegionCollection) o; + displayText.setText(region.getFullText()); + } else displayText.setText("" + o); //$NON-NLS-1$ } @@ -590,11 +635,11 @@ } } - static class Pair { + static class KeyValuePair { Object fKey; String fValue; - public Pair(Object key, String value) { + public KeyValuePair(Object key, String value) { fKey = key; fValue = value; }