de.babe.eclipse.plugins.quickREx.search.RESearchResultViewPage.java Source code

Java tutorial

Introduction

Here is the source code for de.babe.eclipse.plugins.quickREx.search.RESearchResultViewPage.java

Source

/*******************************************************************************
 * Copyright (c) 2006 Bastian Bergerhoff 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.
 * 
 * Contributors:
 *     Bastian Bergerhoff - initial API and implementation
 *******************************************************************************/
package de.babe.eclipse.plugins.quickREx.search;

import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.search.ui.text.AbstractTextSearchViewPage;
import org.eclipse.swt.graphics.Image;
import org.eclipse.ui.PlatformUI;

import de.babe.eclipse.plugins.quickREx.PluginImageRegistry;
import de.babe.eclipse.plugins.quickREx.QuickRExPlugin;
import de.babe.eclipse.plugins.quickREx.editors.RELibraryEntryEditor;
import de.babe.eclipse.plugins.quickREx.objects.REBook;
import de.babe.eclipse.plugins.quickREx.objects.RECategory;
import de.babe.eclipse.plugins.quickREx.objects.RELibraryEntry;
import de.babe.eclipse.plugins.quickREx.objects.RELibraryEntryEditorInput;
import de.babe.eclipse.plugins.quickREx.views.RELibraryView;

/**
 * @author bastian.bergerhoff
 */
public class RESearchResultViewPage extends AbstractTextSearchViewPage {

    private TreeViewer viewer;

    /**
     * The constructor
     */
    public RESearchResultViewPage() {
        super(AbstractTextSearchViewPage.FLAG_LAYOUT_TREE);
    };

    /* (non-Javadoc)
     * @see org.eclipse.search.ui.text.AbstractTextSearchViewPage#elementsChanged(java.lang.Object[])
     */
    protected void elementsChanged(Object[] objects) {
        viewer.refresh();
    }

    /* (non-Javadoc)
     * @see org.eclipse.search.ui.text.AbstractTextSearchViewPage#clear()
     */
    protected void clear() {
        ((RESearchResult) viewer.getInput()).doRemoveAll();
        viewer.refresh();
    }

    /* (non-Javadoc)
     * @see org.eclipse.search.ui.text.AbstractTextSearchViewPage#configureTreeViewer(org.eclipse.jface.viewers.TreeViewer)
     */
    protected void configureTreeViewer(final TreeViewer viewer) {
        this.viewer = viewer;
        viewer.addDoubleClickListener(new IDoubleClickListener() {

            public void doubleClick(DoubleClickEvent event) {
                try {
                    RELibraryEntry selected = (RELibraryEntry) viewer.getTree().getSelection()[0].getData();
                    if (((REBook) viewer.getTree().getSelection()[0].getParentItem().getParentItem().getData())
                            .getName().equals(REBook.DEFAULT_BOOK_NAME)) {
                        PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
                                .openEditor(new RELibraryEntryEditorInput(selected, true), RELibraryEntryEditor.ID);
                    } else {
                        PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().openEditor(
                                new RELibraryEntryEditorInput(selected, false), RELibraryEntryEditor.ID);
                        selected.addTitleChangeListener((RELibraryView) PlatformUI.getWorkbench()
                                .getActiveWorkbenchWindow().getActivePage().findView(RELibraryView.ID));
                    }
                } catch (Exception ex) {
                    // nop
                }
            }
        });

        viewer.setContentProvider(new ITreeContentProvider() {

            /* (non-Javadoc)
             * @see org.eclipse.jface.viewers.IContentProvider#dispose()
             */
            public void dispose() {
            }

            /* (non-Javadoc)
             * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
             */
            public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
            }

            /* (non-Javadoc)
             * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
             */
            public Object[] getElements(Object inputElement) {
                return ((RESearchResult) getInput()).getBooksWithMatches();
            }

            /* (non-Javadoc)
             * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
             */
            public Object[] getChildren(Object parentElement) {
                if (parentElement instanceof REBook) {
                    return ((RESearchResult) getInput()).getMatchingCategoriesInBook((REBook) parentElement);
                } else if (parentElement instanceof RECategory) {
                    return ((RESearchResult) getInput()).getMatchesInCategory((RECategory) parentElement);
                } else {
                    return new Object[0];
                }
            }

            /* (non-Javadoc)
             * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
             */
            public Object getParent(Object element) {
                if (element instanceof RELibraryEntry) {
                    return ((RELibraryEntry) element).getCategory();
                } else if (element instanceof RECategory) {
                    return ((RECategory) element).getBook();
                } else {
                    return null;
                }
            }

            /* (non-Javadoc)
             * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
             */
            public boolean hasChildren(Object element) {
                return (element instanceof REBook || element instanceof RECategory);
            }
        });

        viewer.setLabelProvider(new LabelProvider() {
            /* (non-Javadoc)
             * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
             */
            public Image getImage(Object element) {
                if (element instanceof REBook) {
                    return ((PluginImageRegistry) QuickRExPlugin.getDefault().getImageRegistry())
                            .getImageDescriptor(PluginImageRegistry.IMG_BOOK).createImage();
                } else if (element instanceof RECategory) {
                    return ((PluginImageRegistry) QuickRExPlugin.getDefault().getImageRegistry())
                            .getImageDescriptor(PluginImageRegistry.IMG_CATEGORY).createImage();
                } else if (element instanceof RELibraryEntry) {
                    return ((PluginImageRegistry) QuickRExPlugin.getDefault().getImageRegistry())
                            .getImageDescriptor(PluginImageRegistry.IMG_REG_EXP).createImage();
                } else {
                    return null;
                }
            }

            /* (non-Javadoc)
             * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
             */
            public String getText(Object element) {
                if (element instanceof REBook) {
                    return ((REBook) element).getName();
                } else if (element instanceof RECategory) {
                    return ((RECategory) element).getName();
                } else if (element instanceof RELibraryEntry) {
                    return ((RELibraryEntry) element).getTitle();
                } else {
                    return null;
                }
            }

            /* (non-Javadoc)
             * @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(java.lang.Object, java.lang.String)
             */
            public boolean isLabelProperty(Object element, String property) {
                return true;
            }
        });

    }

    /* (non-Javadoc)
     * @see org.eclipse.search.ui.text.AbstractTextSearchViewPage#configureTableViewer(org.eclipse.jface.viewers.TableViewer)
     */
    protected void configureTableViewer(TableViewer viewer) {
    }

}