msi.gama.lang.gaml.ui.editor.toolbar.GamlQuickOutlinePopup.java Source code

Java tutorial

Introduction

Here is the source code for msi.gama.lang.gaml.ui.editor.toolbar.GamlQuickOutlinePopup.java

Source

/*********************************************************************************************
 *
 * 'GamlQuickOutlinePopup.java, in plugin ummisco.gama.ui.modeling, is part of the source code of the GAMA modeling and
 * simulation platform. (c) 2007-2016 UMI 209 UMMISCO IRD/UPMC & Partners
 *
 * Visit https://github.com/gama-platform/gama for license information and developers contact.
 * 
 *
 **********************************************************************************************/
package msi.gama.lang.gaml.ui.editor.toolbar;

import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.viewers.AbstractTreeViewer;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.KeyAdapter;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Text;
import org.eclipse.xtext.ui.editor.outline.quickoutline.QuickOutlinePopup;

import msi.gama.lang.gaml.ui.editor.GamlEditor;
import ummisco.gama.ui.resources.IGamaColors;
import ummisco.gama.ui.views.toolbar.GamaToolbar2;

/**
 * The class GamlQuickOutlinePopup.
 * 
 * @author drogoul
 * @since 3 mars 2015
 * 
 */
public class GamlQuickOutlinePopup extends QuickOutlinePopup {

    private final Control textWidget;
    private final GamaToolbar2 toolbar;

    public GamlQuickOutlinePopup(final GamlEditor editor, final GamaToolbar2 toolbar) {
        super(editor.getEditorSite().getShell());
        setEditor(editor);
        this.textWidget = editor.getInternalSourceViewer().getTextWidget();
        this.toolbar = toolbar;
        setInput(editor.getDocument());
        setEvent(new Event());
    }

    @Override
    protected TreeViewer createTreeViewer(final Composite parent, final int style) {
        final TreeViewer viewer = super.createTreeViewer(parent, style);
        viewer.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS);
        return viewer;
    }

    @Override
    protected Point getDefaultLocation(final Point initialSize) {
        final Point loc = textWidget.getLocation();
        final Point popupLocation = new Point(loc.x, 24);
        return toolbar.toDisplay(popupLocation);
    }

    @Override
    protected Point getInitialLocation(final Point initialSize) {
        final Point loc = textWidget.getLocation();
        final Point popupLocation = new Point(loc.x, 24);
        return toolbar.toDisplay(popupLocation);
    }

    @Override
    protected Point getInitialSize() {
        final Point size = textWidget.getSize();
        return new Point(size.x, size.y / 2);
    }

    @Override
    protected Point getDefaultSize() {
        final Point size = textWidget.getSize();
        return new Point(size.x, size.y / 2);
    }

    @Override
    protected Color getBackground() {
        return IGamaColors.WHITE.color();
    }

    @Override
    protected Color getForeground() {
        return IGamaColors.BLACK.color();
    }

    @Override
    protected Text createFilterText(final Composite parent) {
        final Text filterText = new Text(parent, SWT.SEARCH | SWT.ICON_SEARCH);
        filterText.setMessage("Search keyword");
        Dialog.applyDialogFont(filterText);

        final GridData data = new GridData(GridData.FILL_HORIZONTAL);
        data.horizontalAlignment = GridData.FILL;
        data.verticalAlignment = GridData.CENTER;
        filterText.setLayoutData(data);

        filterText.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(final KeyEvent e) {
                if (e.keyCode == 0x0D) {
                    gotoSelectedElement();
                }
                if (e.keyCode == SWT.ARROW_DOWN) {
                    getTreeViewer().getTree().setFocus();
                }
                if (e.keyCode == SWT.ARROW_UP) {
                    getTreeViewer().getTree().setFocus();
                }
                if (e.character == 0x1B) {
                    dispose();
                }
            }
        });
        return filterText;
    }

}