org.wso2.developerstudio.eclipse.greg.search.RegistrySearchResultPage.java Source code

Java tutorial

Introduction

Here is the source code for org.wso2.developerstudio.eclipse.greg.search.RegistrySearchResultPage.java

Source

/*
 * Copyright (c) 2010, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.wso2.developerstudio.eclipse.greg.search;

import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.ITreeSelection;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.search.internal.ui.text.FileSearchPage;
import org.eclipse.search.ui.ISearchResult;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Composite;
import org.wso2.developerstudio.eclipse.greg.base.editor.input.ResourceEditorInput;
import org.wso2.developerstudio.eclipse.greg.base.logger.ExceptionHandler;
import org.wso2.developerstudio.eclipse.greg.base.managers.RemoteContentManager;
import org.wso2.developerstudio.eclipse.greg.base.model.RegistryResourceNode;
import org.wso2.developerstudio.eclipse.greg.base.ui.controls.RegistryTreeContentProvider;
import org.wso2.developerstudio.eclipse.greg.base.ui.controls.RegistryTreeLabelProvider;
import org.wso2.developerstudio.eclipse.greg.base.ui.util.ImageUtils;
import org.wso2.developerstudio.eclipse.greg.search.RegistrySearchQuery.RegistrySearchResult;

public class RegistrySearchResultPage extends FileSearchPage {

    public void setInput(ISearchResult newSearch, Object viewState) {
        super.setInput(newSearch, viewState);
    }

    protected TreeViewer createTreeViewer(Composite parent) {
        return super.createTreeViewer(parent);
    }

    protected void fillContextMenu(IMenuManager mgr) {

    }

    protected void configureTreeViewer(TreeViewer viewer) {
        super.configureTreeViewer(viewer);
        viewer.refresh();
        viewer.setContentProvider(new RegistryTreeContentProvider(new ExceptionHandler(), getSite().getShell()) {
            public void inputChanged(Viewer viewer, Object arg1, Object arg2) {
                super.inputChanged(viewer, arg1, arg2);
                if (arg2 instanceof SearchResult) {
                    SearchResult s = (SearchResult) arg2;
                    RegistrySearchQuery t = (RegistrySearchQuery) s.getQuery();
                    t.setViewer((TreeViewer) viewer);
                }

            }

            public Object[] getChildren(Object obj) {
                if (obj instanceof SearchResult) {
                    SearchResult s = (SearchResult) obj;
                    RegistrySearchQuery t = (RegistrySearchQuery) s.getQuery();
                    return t.getResults().toArray(new Object[] {});
                } else if (obj instanceof RegistrySearchResult) {
                    RegistrySearchResult r = (RegistrySearchResult) obj;
                    return r.getResources().toArray();
                } else
                    return super.getChildren(obj);
            }

            public boolean hasChildren(Object obj) {
                if (obj instanceof SearchResult)
                    return true;
                else if (obj instanceof RegistrySearchResult) {
                    RegistrySearchResult r = (RegistrySearchResult) obj;
                    return true;
                } else
                    return super.hasChildren(obj);
            }

        });

        viewer.setLabelProvider(new RegistryTreeLabelProvider() {
            public Image getImage(Object element) {
                ImageDescriptor descriptor = null;
                if (element instanceof RegistrySearchResult) {
                    descriptor = ImageUtils.getImageDescriptor(ImageUtils.ICON_REGISTRY_SEARCH);
                    return descriptor.createImage();
                } else
                    return super.getImage(element);
            }

        });

        viewer.addDoubleClickListener(new IDoubleClickListener() {

            public void doubleClick(DoubleClickEvent evt) {
                if (evt.getSource() instanceof TreeViewer) {
                    TreeViewer v = (TreeViewer) evt.getSource();
                    if (v.getSelection() instanceof ITreeSelection) {
                        ITreeSelection t = (ITreeSelection) v.getSelection();
                        if (t.getFirstElement() instanceof RegistryResourceNode) {
                            RegistryResourceNode r = (RegistryResourceNode) t.getFirstElement();
                            ResourceEditorInput ei = RemoteContentManager.getEditorInput(r);
                            RemoteContentManager.openFormEditor(ei);
                        }
                    }
                }
            }
        });

    }

}