Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(297)

Unified Diff: editor/tools/plugins/com.xored.glance.ui/src/com/xored/glance/internal/ui/panels/SearchDialog.java

Issue 17431004: New UI for Find command: find-as-you-type. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: editor/tools/plugins/com.xored.glance.ui/src/com/xored/glance/internal/ui/panels/SearchDialog.java
===================================================================
--- editor/tools/plugins/com.xored.glance.ui/src/com/xored/glance/internal/ui/panels/SearchDialog.java (revision 0)
+++ editor/tools/plugins/com.xored.glance.ui/src/com/xored/glance/internal/ui/panels/SearchDialog.java (revision 0)
@@ -0,0 +1,177 @@
+/*******************************************************************************
+ * Copyright (c) 2008 xored software, 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:
+ * xored software, Inc. - initial API and Implementation (Yuri Strot)
+ *******************************************************************************/
+package com.xored.glance.internal.ui.panels;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.PopupDialog;
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.layout.GridLayoutFactory;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.DisposeEvent;
+import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.FontData;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * @author Yuri Strot
+ */
+public class SearchDialog extends PopupDialog {
+
+ public SearchDialog(final Shell parent) {
+ super(parent, SWT.RESIZE, true, false, false, true, false, null, null);
+ }
+
+ @Override
+ protected Control createContents(final Composite parent) {
+ final Composite composite = new Composite(parent, SWT.NONE);
+ POPUP_LAYOUT_FACTORY.applyTo(composite);
+ LAYOUTDATA_GRAB_BOTH.applyTo(composite);
+
+ titleArea = (Composite) createTitleMenuArea(composite);
+ separator = createHorizontalSeparator(composite);
+ createInfoTextArea(composite);
+
+ applyColors(composite);
+ applyFonts(composite);
+ return composite;
+ }
+
+ @Override
+ protected Control createInfoTextArea(final Composite parent) {
+ final Composite composite = new Composite(parent, SWT.NONE);
+ final GridLayout layout = new GridLayout(3, false);
+ layout.horizontalSpacing = 0;
+ layout.verticalSpacing = 0;
+ layout.marginHeight = 0;
+ layout.marginWidth = 0;
+ composite.setLayout(layout);
+ composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ progress = new Label(composite, SWT.LEFT);
+ // Status label
+ info = new Label(composite, SWT.RIGHT);
+
+ info.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ progress.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ // factory.applyTo(info);
+ // factory.applyTo(progress);
+ final Color color = parent.getDisplay().getSystemColor(SWT.COLOR_WIDGET_DARK_SHADOW);
+ info.setForeground(color);
+ progress.setForeground(color);
+ info.setText(HELP_TEXT);
+ return composite;
+ }
+
+ @Override
+ protected void setInfoText(final String text) {
+ info.setText(text);
+ }
+
+ protected void applyColors(final Composite composite) {
+ applyForegroundColor(getForeground(), composite);
+ applyBackgroundColor(getBackground(), composite);
+ }
+
+ protected void applyFonts(final Composite composite) {
+ Dialog.applyDialogFont(composite);
+
+ if (info != null) {
+ final Font font = info.getFont();
+ final FontData[] fontDatas = font.getFontData();
+ for (int i = 0; i < fontDatas.length; i++) {
+ fontDatas[i].setHeight(fontDatas[i].getHeight() * 9 / 10);
+ }
+ infoFont = new Font(info.getDisplay(), fontDatas);
+ info.setFont(infoFont);
+ }
+ }
+
+ @Override
+ protected void configureShell(final Shell shell) {
+ super.configureShell(shell);
+ shell.addDisposeListener(new DisposeListener() {
+ public void widgetDisposed(final DisposeEvent e) {
+ handleClose();
+ }
+ });
+ }
+
+ protected void handleClose() {
+ if (infoFont != null && !infoFont.isDisposed()) {
+ infoFont.dispose();
+ }
+ infoFont = null;
+ }
+
+ /**
+ * Create a horizontal separator for the given parent.
+ *
+ * @param parent The parent composite.
+ * @return The Control representing the horizontal separator.
+ */
+ private Control createHorizontalSeparator(final Composite parent) {
+ final Label separator = new Label(parent, SWT.SEPARATOR | SWT.HORIZONTAL | SWT.LINE_DOT);
+ GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).grab(true, false).applyTo(separator);
+ return separator;
+ }
+
+ @Override
+ protected List<Control> getForegroundColorExclusions() {
+ final List<Control> list = copyControls(super.getForegroundColorExclusions());
+ if (info != null)
+ list.add(info);
+ if (separator != null)
+ list.add(separator);
+ return list;
+ }
+
+ @Override
+ protected List<Control> getBackgroundColorExclusions() {
+ final List<Control> list = copyControls(super.getBackgroundColorExclusions());
+ if (separator != null)
+ list.add(separator);
+ return list;
+ }
+
+ private List<Control> copyControls(List<?> list) {
+ List<Control> result = new ArrayList<Control>(list.size());
+ for (Control control : result) {
+ result.add(control);
+ }
+ return result;
+ }
+
+ protected void applyBackgroundColor(final Color color) {
+ applyBackgroundColor(color, titleArea);
+ }
+
+ private Composite titleArea;
+
+ protected Text titleText;
+ private Font infoFont;
+ private Label info;
+ private Label progress;
+ private Control separator;
+
+ private static final GridDataFactory LAYOUTDATA_GRAB_BOTH = GridDataFactory.fillDefaults().grab(
+ true, true);
+ private static final GridLayoutFactory POPUP_LAYOUT_FACTORY = GridLayoutFactory.fillDefaults().margins(
+ POPUP_MARGINWIDTH, POPUP_MARGINHEIGHT).spacing(POPUP_HORIZONTALSPACING, POPUP_VERTICALSPACING);
+
+ protected static final String HELP_TEXT = "Enter search text";
+
+}

Powered by Google App Engine
This is Rietveld 408576698