Package org.fusesource.ide.commons

Source Code of org.fusesource.ide.commons.Viewers

/*******************************************************************************
* Copyright (c) 2013 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is made available under the terms of the
* Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*     Red Hat, Inc. - initial API and implementation
******************************************************************************/

package org.fusesource.ide.commons;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import org.eclipse.jface.viewers.AbstractTreeViewer;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.StructuredViewer;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Table;
import org.fusesource.ide.commons.ui.Widgets;


public class Viewers {

  public static Viewer getViewer(Object object) {
    if (object instanceof Viewer) {
      return (Viewer) object;
    }
    return null;
  }

  public static void expand(Viewer viewer, Object elementOrTreePath, int level) {
    if (viewer instanceof TreeViewer) {
      TreeViewer tv = (TreeViewer) viewer;
      tv.expandToLevel(elementOrTreePath, level);
    }

  }

  /**
   * Refreshes the viewer and by default makes sure the selection is viewable too
   * @param viewer
   */
  public static void refresh(final Viewer viewer) {
    Display.getDefault().syncExec(new Runnable() {
      @Override
      public void run() {
        if (isValid(viewer)) {
          viewer.refresh();
          Control control = viewer.getControl();
          if (control instanceof Table) {
            Table table = (Table) control;
            table.showSelection();
          }
        }
      }
    });
  }

  public static void async(Runnable runnable) {
    Display display = getDisplay();
    if (display != null) {
      display.asyncExec(runnable);
    }
  }

  public static Display getDisplay() {
    Display display = Display.getDefault();
    if (display == null) {
      display = Display.getCurrent();
    }
    return display;
  }


  public static void refreshAsync(final Viewer viewer) {
    async(new Runnable() {

      @Override
      public void run() {
        refresh(viewer);
      }
    });
  }

  /**
   * Returns true if the viewer is not disposed and is visible
   */
  public static boolean isValid(Viewer viewer) {
    boolean valid = false;
    if (viewer != null) {
      Control widget = viewer.getControl();
      valid = Widgets.isValid(widget) && widget.isVisible();
    }
    return valid;
  }

  /**
   * Reveals the given element in the view t
   */
  public static void reveal(Viewer viewer, Object element) {
    if (viewer instanceof StructuredViewer) {
      StructuredViewer sv = (StructuredViewer) viewer;
      sv.reveal(element);
    }
  }

  public static void setInput(Viewer viewer, Object input) {
    if (viewer != null && isValid(viewer)) {
      viewer.setInput(input);
    }
  }

  public static boolean isVisible(Viewer viewer) {
    if (isValid(viewer)) {
      Control control = viewer.getControl();
      return control != null && control.isVisible();
    }
    return false;
  }

  public static void setSelected(Viewer viewer, ISelection selection) {
    if (viewer != null) {
      viewer.setSelection(selection);
    }
  }

  public static void addExpanded(Viewer viewer, final Object... expanded) {
    if (viewer instanceof AbstractTreeViewer) {
      final AbstractTreeViewer cv = (AbstractTreeViewer) viewer;
      Object[] expandedElements = cv.getExpandedElements();
      List<Object> list = new ArrayList<Object>();
      if (expandedElements != null) {
        list.addAll(Arrays.asList(expandedElements));
      }
      list.addAll(Arrays.asList(expanded));
      cv.setExpandedElements(expanded);
    }
  }

}
TOP

Related Classes of org.fusesource.ide.commons.Viewers

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.