Package org.locationtech.udig.bookmarks.internal.ui

Source Code of org.locationtech.udig.bookmarks.internal.ui.BookmarksView

/* uDig - User Friendly Desktop Internet GIS client
* http://udig.refractions.net
* (C) 2006, Refractions Research Inc.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* (http://www.eclipse.org/legal/epl-v10.html), and the Refractions BSD
* License v1.0 (http://udig.refractions.net/files/bsd3-v10.html).
*/
package org.locationtech.udig.bookmarks.internal.ui;

import org.eclipse.jface.action.GroupMarker;
import org.eclipse.jface.action.IMenuListener;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.ViewerSorter;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.ui.IWorkbenchActionConstants;
import org.eclipse.ui.part.ISetSelectionTarget;
import org.eclipse.ui.part.ViewPart;
import org.locationtech.udig.bookmarks.Bookmark;
import org.locationtech.udig.bookmarks.internal.BookmarksContentProvider;
import org.locationtech.udig.bookmarks.internal.BookmarksLabelProvider;
import org.locationtech.udig.bookmarks.internal.actions.BookmarkAction;

/**
* This is the view that displays the <code>Bookmark</code>s. The content provider connects to
* the <code>BookmarkManager</code> which is the model.
* <p>
*
* @author cole.markham
* @since 1.0.0
*/

public class BookmarksView extends ViewPart implements ISetSelectionTarget {
    private TreeViewer bookmarksTree;
    private MenuManager menuMgr;
    private BookmarksLabelProvider labelProvider;
    private BookmarksContentProvider bookmarksProvider;

    /**
     * The constructor.
     */
    public BookmarksView() {
        // nothing to do
    }

    @Override
    public void dispose() {
        menuMgr.dispose();
        labelProvider.dispose();
        bookmarksProvider.dispose();
        bookmarksTree = null;
        super.dispose();
    }

    private void initPopup() {
        menuMgr = new MenuManager("#PopupMenu"); //$NON-NLS-1$
        menuMgr.setRemoveAllWhenShown(true);
        menuMgr.addMenuListener(new IMenuListener(){
            public void menuAboutToShow( IMenuManager manager ) {
                fillContextMenu(manager);
            }
        });
        Menu m = menuMgr.createContextMenu(bookmarksTree.getTree());
        bookmarksTree.getTree().setMenu(m);
        getViewSite().registerContextMenu(menuMgr, bookmarksTree);
    }

    private void fillContextMenu( IMenuManager mm ) {
        mm.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
    }

    /**
     * This is a callback that will allow us to create the viewer and initialize it.
     */
    @Override
    public void createPartControl( Composite parent ) {
        bookmarksTree = new TreeViewer(parent);
        bookmarksProvider = new BookmarksContentProvider();
        bookmarksTree.setContentProvider(bookmarksProvider);
        getSite().getWorkbenchWindow().getPartService().addPartListener(bookmarksProvider);
        labelProvider = new BookmarksLabelProvider();
        bookmarksTree.setLabelProvider(labelProvider);
        bookmarksTree.setSorter(new ViewerSorter());
        bookmarksTree.setInput(bookmarksProvider);
        bookmarksTree.setAutoExpandLevel(2);
        bookmarksTree.addDoubleClickListener(new BookmarkAction());
        bookmarksTree.addDoubleClickListener(new IDoubleClickListener(){

            public void doubleClick( DoubleClickEvent event ) {
                final Object obj = ((IStructuredSelection) bookmarksTree.getSelection())
                        .getFirstElement();
                if (!(obj instanceof Bookmark)) {
                    Display.getCurrent().asyncExec(new Runnable(){

                        public void run() {
                            bookmarksTree.setExpandedState(obj, !bookmarksTree
                                    .getExpandedState(obj));
                        }
                    });
                    return;
                }
            }

        });
        initPopup();
    }

    /**
     * Passing the focus request to the viewer's control.
     */
    @Override
    public void setFocus() {
        bookmarksTree.getControl().setFocus();
    }

    /**
     * Refresh the view
     */
    public void refresh() {
        ISelection selection = bookmarksTree.getSelection();
        bookmarksTree.refresh();
        if(selection.isEmpty()){
            bookmarksTree.setSelection(new StructuredSelection(bookmarksProvider.getCurrentMap()));
        }else {
            bookmarksTree.setSelection(selection);
        }
    }

    /*
     * @see org.eclipse.ui.part.ISetSelectionTarget#selectReveal(org.eclipse.jface.viewers.ISelection)
     */
    public void selectReveal( ISelection selection ) {
        bookmarksTree.setSelection(selection);
    }

}
TOP

Related Classes of org.locationtech.udig.bookmarks.internal.ui.BookmarksView

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.