Package com.dubture.composer.ui.controller

Source Code of com.dubture.composer.ui.controller.GraphController

package com.dubture.composer.ui.controller;

import org.eclipse.draw2d.ColorConstants;
import org.eclipse.draw2d.IFigure;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Display;
import org.eclipse.zest.core.viewers.EntityConnectionData;
import org.eclipse.zest.core.viewers.IEntityStyleProvider;
import org.eclipse.zest.core.viewers.IGraphEntityContentProvider;

import com.dubture.composer.core.resources.IComposerProject;
import com.dubture.getcomposer.core.ComposerPackage;
import com.dubture.getcomposer.core.collection.ComposerPackages;

public class GraphController extends LabelProvider implements
    IStructuredContentProvider, IGraphEntityContentProvider,
    IEntityStyleProvider {
 
  private Color LIGHT_BLUE = new Color(Display.getDefault(), 216, 228, 248);
  private Color DARK_BLUE = new Color(Display.getDefault(), 1, 70, 122);
  private Color LIGHT_GREY = new Color(null, 192, 192, 192);
  private Color GREEN = new Color(Display.getDefault(), 166, 222, 168);
 
  private ComposerPackages packages;
  private IComposerProject composerProject;
 
  private String filterText;

  public GraphController(IComposerProject project) {
    composerProject = project;
  }
 
  public void setComposerProject(IComposerProject project) {
    composerProject = project;
  }

  @Override
  public Object[] getConnectedTo(Object entity) {
    if (!(entity instanceof ComposerPackage)) {
      return null;
    }

    ComposerPackages connections = new ComposerPackages();
    ComposerPackage pkg = (ComposerPackage) entity;
   
    for (ComposerPackage target : packages) {
      if (pkg.getRequire().has(target) || pkg.getRequireDev().has(target)) {
        connections.add(target);
      }
    }

    return connections.toArray();
  }

  @Override
  public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
    if (newInput instanceof ComposerPackages) {
      packages = (ComposerPackages) newInput;
    }
  }

  @Override
  public Object[] getElements(Object inputElement) {
    return packages.toArray();
  }

 
  @Override
  public String getText(Object element) {
    if (element instanceof ComposerPackage) {
      return ((ComposerPackage) element).getName();
    }

    if (element instanceof EntityConnectionData) {
      return "";
    }

    return super.getText(element);
  }

  @Override
  public Color getNodeHighlightColor(Object entity) {
    return ColorConstants.yellow;
  }

  @Override
  public Color getBorderColor(Object entity) {
    return LIGHT_GREY;
  }

  @Override
  public Color getBorderHighlightColor(Object entity) {
    return LIGHT_GREY;
  }

  @Override
  public int getBorderWidth(Object entity) {
    return 0;
  }

  @Override
  public Color getBackgroundColour(Object entity) {
   
    if (entity instanceof ComposerPackage) {
      ComposerPackage pkg = (ComposerPackage) entity;
     
      if (filterText != null && filterText.length() > 0 && pkg.getName().contains(filterText)) {
        return GREEN;
      }
     
      if (composerProject.getComposerPackage().getRequireDev().has((ComposerPackage) entity)) {
        return ColorConstants.lightGray;
      }
    }
   
    return LIGHT_BLUE;
  }

  @Override
  public Color getForegroundColour(Object entity) {
    return DARK_BLUE;
  }

  @Override
  public IFigure getTooltip(Object entity) {
    return null;
  }

  @Override
  public boolean fisheyeNode(Object entity) {
    return false;
  }

  public String getFilterText() {
    return filterText;
  }

  public void setFilterText(String filterText) {
    this.filterText = filterText;
  }
}
TOP

Related Classes of com.dubture.composer.ui.controller.GraphController

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.