Package org.fusesource.ide.camel.editor

Source Code of org.fusesource.ide.camel.editor.DefaultNotificationService

/*******************************************************************************
* 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.camel.editor;

import java.util.ArrayList;

import org.eclipse.graphiti.dt.IDiagramTypeProvider;
import org.eclipse.graphiti.features.IFeatureProvider;
import org.eclipse.graphiti.features.context.impl.UpdateContext;
import org.eclipse.graphiti.mm.pictograms.PictogramElement;
import org.eclipse.graphiti.notification.INotificationService;

/**
* @author lhein
*/
public class DefaultNotificationService implements INotificationService {

  private IDiagramTypeProvider diagramTypeProvider;

  /**
   * Creates a new {@link DefaultNotificationService}.
   *
   * @param diagramTypeProvider
   *            the diagram type provider
   */
  public DefaultNotificationService(IDiagramTypeProvider diagramTypeProvider) {
    this.diagramTypeProvider = diagramTypeProvider;
  }

  /**
   * Gets the diagram type provider.
   *
   * @return the diagram type provider
   */
  protected IDiagramTypeProvider getDiagramTypeProvider() {
    return this.diagramTypeProvider;
  }

  /*
   * (non-Javadoc)
   * @see org.eclipse.graphiti.notification.INotificationService#updatePictogramElements(org.eclipse.graphiti.mm.pictograms.PictogramElement[])
   */
  @Override
  public void updatePictogramElements(PictogramElement[] dirtyPes) {
    final IDiagramTypeProvider dtp = getDiagramTypeProvider();
    final IFeatureProvider fp = dtp.getFeatureProvider();
    for (PictogramElement pe : dirtyPes) {
      final UpdateContext updateContext = new UpdateContext(pe);
      // fp.updateIfPossible(updateContext);
      fp.updateIfPossibleAndNeeded(updateContext);
    }
  }

  /**
   * Calculate linked pictogram elements.
   *
   * @param changedAndRelatedBOsList
   *            the changed and related BOs list
   * @return the pictogram element[]
   */
  protected PictogramElement[] calculateLinkedPictogramElements(ArrayList<Object> changedAndRelatedBOsList) {
    ArrayList<PictogramElement> retList = new ArrayList<PictogramElement>();
    final IFeatureProvider featureProvider = getDiagramTypeProvider().getFeatureProvider();
    for (Object crbo : changedAndRelatedBOsList) {
      final PictogramElement[] allPictogramElementsForBusinessObject = featureProvider.getAllPictogramElementsForBusinessObject(crbo);
      for (PictogramElement pe : allPictogramElementsForBusinessObject) {
        retList.add(pe);
      }
    }
    return retList.toArray(new PictogramElement[0]);
  }

  /*
   * (non-Javadoc)
   * @see org.eclipse.graphiti.notification.INotificationService#calculateRelatedPictogramElements(java.lang.Object[])
   */
  @Override
  public PictogramElement[] calculateRelatedPictogramElements(Object[] changedBOs) {
    ArrayList<Object> changedAndRelatedBOsList = new ArrayList<Object>();
    for (Object cbo : changedBOs) {
      changedAndRelatedBOsList.add(cbo);
    }
    Object[] relatedBOs = getDiagramTypeProvider().getRelatedBusinessObjects(changedBOs);
    for (Object rbo : relatedBOs) {
      changedAndRelatedBOsList.add(rbo);
    }

    return calculateLinkedPictogramElements(changedAndRelatedBOsList);
  }
}
TOP

Related Classes of org.fusesource.ide.camel.editor.DefaultNotificationService

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.