diff options
author | Alexander Kurtakov | 2016-07-01 13:11:25 +0000 |
---|---|---|
committer | Alexander Kurtakov | 2016-07-01 14:13:11 +0000 |
commit | 574d3c0b1a15ea4755800025eb4489faa8402e9c (patch) | |
tree | 4c7bf19d56637dc5f888ff381dfca07c6f44e86f /rpm | |
parent | f02bd5986c51b0a481fd6d775232a6ec9203c605 (diff) | |
download | org.eclipse.linuxtools-574d3c0b1a15ea4755800025eb4489faa8402e9c.tar.gz org.eclipse.linuxtools-574d3c0b1a15ea4755800025eb4489faa8402e9c.tar.xz org.eclipse.linuxtools-574d3c0b1a15ea4755800025eb4489faa8402e9c.zip |
rpm: Don't set size of quick outline.
Letting the dialog determine size based on content prevents a lot of
useless scrolling.
Change-Id: I0294606db9fc9b3ba795e658ca1f107725f7a8f2
Signed-off-by: Alexander Kurtakov <akurtako@redhat.com>
Reviewed-on: https://git.eclipse.org/r/76434
Tested-by: Hudson CI
Diffstat (limited to 'rpm')
2 files changed, 119 insertions, 131 deletions
diff --git a/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/actions/SpecfileEditorShowOutlineActionDelegate.java b/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/actions/SpecfileEditorShowOutlineActionDelegate.java index a9f8d52749..3df0b1e993 100644 --- a/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/actions/SpecfileEditorShowOutlineActionDelegate.java +++ b/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/actions/SpecfileEditorShowOutlineActionDelegate.java @@ -26,7 +26,6 @@ public class SpecfileEditorShowOutlineActionDelegate extends AbstractHandler { if (editor instanceof SpecfileEditor) { SpecfileQuickOutlineDialog quickOutlinePopupDialog = new SpecfileQuickOutlineDialog( editor.getSite().getShell(), SWT.NONE, (SpecfileEditor) editor); - quickOutlinePopupDialog.setSize(400, 200); quickOutlinePopupDialog.setVisible(true); } return null; diff --git a/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/outline/SpecfileQuickOutlineDialog.java b/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/outline/SpecfileQuickOutlineDialog.java index 4b01b475ea..87f0bfbaf6 100644 --- a/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/outline/SpecfileQuickOutlineDialog.java +++ b/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/outline/SpecfileQuickOutlineDialog.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008 Alexander Kurtakov. + * Copyright (c) 2008, 2016 Alexander Kurtakov and others. * 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 @@ -34,134 +34,123 @@ import org.eclipse.swt.widgets.Tree; public class SpecfileQuickOutlineDialog extends PopupDialog { - TreeViewer treeViewer; - private Text filterText; - private SpecfileEditor editor; - private ContainsFilter treeViewerFilter; - - public SpecfileQuickOutlineDialog(Shell parent, int shellStyle, - SpecfileEditor editor) { - super(parent, shellStyle, true, true, true, true, true, null, null); - this.editor = editor; - create(); - } - - public void setSize(int width, int height) { - getShell().setSize(width, height); - } - - public void setVisible(boolean visible) { - if (visible) { - open(); - filterText.setFocus(); - } else { - saveDialogBounds(getShell()); - getShell().setVisible(false); - } - } - - public void dispose() { - close(); - } - - @Override - protected Control createDialogArea(Composite parent) { - createUIWidgetTreeViewer(parent); - createUIListenersTreeViewer(); - return treeViewer.getControl(); - } - - @Override - protected Control createTitleControl(Composite parent) { - filterText = new Text(parent, SWT.NONE); - GC gc = new GC(parent); - gc.setFont(parent.getFont()); - FontMetrics fontMetrics = gc.getFontMetrics(); - gc.dispose(); - GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).grab(true, - false).hint(SWT.DEFAULT, - Dialog.convertHeightInCharsToPixels(fontMetrics, 1)).applyTo( - filterText); - - filterText.addKeyListener(new KeyAdapter() { - @Override - public void keyPressed(KeyEvent e) { - if (e.keyCode == 0x0D) { // Enter pressed - gotoSelectedElement(); - } else if (e.keyCode == SWT.ARROW_DOWN) { - treeViewer.getTree().setFocus(); - } else if (e.keyCode == SWT.ARROW_UP) { - treeViewer.getTree().setFocus(); - } else if (e.character == 0x1B) { // Escape pressed - dispose(); - } - } - }); - filterText.addModifyListener(e -> { - String filterTextInput = ((Text) e.widget).getText() - .toLowerCase(); - treeViewerFilter.setLookFor(filterTextInput); - stringMatcherUpdated(); + TreeViewer treeViewer; + private Text filterText; + private SpecfileEditor editor; + private ContainsFilter treeViewerFilter; + + public SpecfileQuickOutlineDialog(Shell parent, int shellStyle, SpecfileEditor editor) { + super(parent, shellStyle, true, true, true, true, true, null, null); + this.editor = editor; + create(); + } + + public void setVisible(boolean visible) { + if (visible) { + open(); + filterText.setFocus(); + } else { + saveDialogBounds(getShell()); + getShell().setVisible(false); + } + } + + public void dispose() { + close(); + } + + @Override + protected Control createDialogArea(Composite parent) { + createUIWidgetTreeViewer(parent); + createUIListenersTreeViewer(); + return treeViewer.getControl(); + } + + @Override + protected Control createTitleControl(Composite parent) { + filterText = new Text(parent, SWT.NONE); + GC gc = new GC(parent); + gc.setFont(parent.getFont()); + FontMetrics fontMetrics = gc.getFontMetrics(); + gc.dispose(); + GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).grab(true, false) + .hint(SWT.DEFAULT, Dialog.convertHeightInCharsToPixels(fontMetrics, 1)).applyTo(filterText); + + filterText.addKeyListener(new KeyAdapter() { + @Override + public void keyPressed(KeyEvent e) { + if (e.keyCode == 0x0D) { // Enter pressed + gotoSelectedElement(); + } else if (e.keyCode == SWT.ARROW_DOWN) { + treeViewer.getTree().setFocus(); + } else if (e.keyCode == SWT.ARROW_UP) { + treeViewer.getTree().setFocus(); + } else if (e.character == 0x1B) { // Escape pressed + dispose(); + } + } }); - return filterText; - } - - private void stringMatcherUpdated() { - treeViewer.getControl().setRedraw(false); - treeViewer.refresh(); - treeViewer.expandAll(); - if(treeViewer.getTree().getTopItem() != null && treeViewer.getTree().getTopItem().getItemCount() > 0) { - treeViewer.getTree().select(treeViewer.getTree().getTopItem().getItem(0)); - } else if(treeViewer.getTree().getItemCount()>0) { - treeViewer.getTree().select(treeViewer.getTree().getItem(0)); - } - treeViewer.getControl().setRedraw(true); - } - - private void createUIWidgetTreeViewer(Composite parent) { - final int style = SWT.H_SCROLL | SWT.V_SCROLL; - final Tree widget = new Tree(parent, style); - final GridData data = new GridData(GridData.FILL_BOTH); - data.heightHint = widget.getItemHeight() * 12; - widget.setLayoutData(data); - treeViewer = new TreeViewer(widget); - treeViewerFilter = new ContainsFilter(); - treeViewer.addFilter(treeViewerFilter); - SpecfileContentProvider fOutlineContentProvider = new SpecfileContentProvider( - editor); - treeViewer.setContentProvider(fOutlineContentProvider); - SpecfileLabelProvider fTreeLabelProvider = new SpecfileLabelProvider(); - treeViewer.setLabelProvider(fTreeLabelProvider); - treeViewer.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS); - treeViewer.setUseHashlookup(true); - treeViewer.setInput(fOutlineContentProvider); - } - - private void createUIListenersTreeViewer() { - final Tree tree = treeViewer.getTree(); - tree.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetDefaultSelected(SelectionEvent e) { - gotoSelectedElement(); - } - }); - } - - private void gotoSelectedElement() { - final SpecfileElement curElement = (SpecfileElement) getSelectedElement(); - if (curElement == null) { - return; - } - dispose(); - editor.setHighlightRange(curElement.getLineStartPosition(), 1, true); - } - - - private Object getSelectedElement() { - if (treeViewer == null) { - return null; - } - return ((IStructuredSelection) treeViewer.getSelection()) - .getFirstElement(); - } + filterText.addModifyListener(e -> { + String filterTextInput = ((Text) e.widget).getText().toLowerCase(); + treeViewerFilter.setLookFor(filterTextInput); + stringMatcherUpdated(); + }); + return filterText; + } + + private void stringMatcherUpdated() { + treeViewer.getControl().setRedraw(false); + treeViewer.refresh(); + treeViewer.expandAll(); + if (treeViewer.getTree().getTopItem() != null && treeViewer.getTree().getTopItem().getItemCount() > 0) { + treeViewer.getTree().select(treeViewer.getTree().getTopItem().getItem(0)); + } else if (treeViewer.getTree().getItemCount() > 0) { + treeViewer.getTree().select(treeViewer.getTree().getItem(0)); + } + treeViewer.getControl().setRedraw(true); + } + + private void createUIWidgetTreeViewer(Composite parent) { + final int style = SWT.H_SCROLL | SWT.V_SCROLL; + final Tree widget = new Tree(parent, style); + final GridData data = new GridData(GridData.FILL_BOTH); + data.heightHint = widget.getItemHeight() * 12; + widget.setLayoutData(data); + treeViewer = new TreeViewer(widget); + treeViewerFilter = new ContainsFilter(); + treeViewer.addFilter(treeViewerFilter); + SpecfileContentProvider fOutlineContentProvider = new SpecfileContentProvider(editor); + treeViewer.setContentProvider(fOutlineContentProvider); + SpecfileLabelProvider fTreeLabelProvider = new SpecfileLabelProvider(); + treeViewer.setLabelProvider(fTreeLabelProvider); + treeViewer.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS); + treeViewer.setUseHashlookup(true); + treeViewer.setInput(fOutlineContentProvider); + } + + private void createUIListenersTreeViewer() { + final Tree tree = treeViewer.getTree(); + tree.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetDefaultSelected(SelectionEvent e) { + gotoSelectedElement(); + } + }); + } + + private void gotoSelectedElement() { + final SpecfileElement curElement = (SpecfileElement) getSelectedElement(); + if (curElement == null) { + return; + } + dispose(); + editor.setHighlightRange(curElement.getLineStartPosition(), 1, true); + } + + private Object getSelectedElement() { + if (treeViewer == null) { + return null; + } + return ((IStructuredSelection) treeViewer.getSelection()).getFirstElement(); + } } |