Package rabbit.ui.internal

Source Code of rabbit.ui.internal.MetricsPanel

/*
* Copyright 2010 The Rabbit Eclipse Plug-in Project
*
* 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 rabbit.ui.internal;

import rabbit.ui.internal.util.PageDescriptor;
import rabbit.ui.internal.viewers.PageDescriptorContentProvider;
import rabbit.ui.internal.viewers.PageDescriptorLabelProvider;

import org.eclipse.jface.viewers.ColumnViewerToolTipSupport;
import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.ViewerComparator;
import org.eclipse.jface.window.ToolTip;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;

/**
* A panel containing a collection of available metrics.
*/
public class MetricsPanel {

  private RabbitView view;

  /**
   * Constructor.
   *
   * @param v The parent view.
   */
  public MetricsPanel(RabbitView v) {
    view = v;
  }

  /**
   * Creates the content.
   *
   * @param parent The parent composite.
   */
  public void createContents(Composite parent) {
    int style = SWT.SINGLE | SWT.V_SCROLL | SWT.H_SCROLL;
    final TreeViewer viewer = new TreeViewer(parent, style);
    ColumnViewerToolTipSupport.enableFor(viewer, ToolTip.NO_RECREATE);
    viewer.setContentProvider(new PageDescriptorContentProvider());
    viewer.setComparator(new ViewerComparator());
    viewer.setLabelProvider(new PageDescriptorLabelProvider());
   
    viewer.getTree().addListener(SWT.MeasureItem, new Listener() {
      @Override
      public void handleEvent(Event event) {
        event.height = (event.height < 20) ? 20 : event.height;
      }
    });

    viewer.addDoubleClickListener(new IDoubleClickListener() {
      @Override
      public void doubleClick(DoubleClickEvent e) {
        IStructuredSelection select = (IStructuredSelection) e.getSelection();
        Object o = select.getFirstElement();
        if (((ITreeContentProvider) viewer.getContentProvider()).hasChildren(o)) {
          viewer.setExpandedState(o, !viewer.getExpandedState(o));
        }
      }
    });

    viewer.addSelectionChangedListener(new ISelectionChangedListener() {
      @Override
      public void selectionChanged(SelectionChangedEvent event) {
        ISelection selection = event.getSelection();
        if (selection instanceof IStructuredSelection) {
          Object element = ((IStructuredSelection) selection).getFirstElement();
          if (element != null && element instanceof PageDescriptor) {
            view.display(((PageDescriptor) element).getPage());
          }
        }
      }
    });

    viewer.setInput(RabbitUI.getDefault().loadRootPages());
    viewer.expandAll();
  }
}
TOP

Related Classes of rabbit.ui.internal.MetricsPanel

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.