package brn.gui.linktable.diagram.view.factories;

import brn.gui.linktable.diagram.edit.parts.GraphEditPart;
import brn.gui.linktable.diagram.edit.parts.NodeIdEditPart;

import brn.gui.linktable.diagram.part.ModelVisualIDRegistry;

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

import org.eclipse.core.runtime.IAdaptable;

import org.eclipse.emf.ecore.EAnnotation;
import org.eclipse.emf.ecore.EcoreFactory;

import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

import org.eclipse.gmf.runtime.diagram.ui.view.factories.AbstractShapeViewFactory;

import org.eclipse.gmf.runtime.notation.NotationFactory;
import org.eclipse.gmf.runtime.notation.View;

/**
 * @generated
 */
public class NodeViewFactory extends AbstractShapeViewFactory {

  /**
   * @generated 
   */
  protected List createStyles(View view) {
    List styles = new ArrayList();
    styles.add(NotationFactory.eINSTANCE.createFontStyle());
    styles.add(NotationFactory.eINSTANCE.createDescriptionStyle());
    styles.add(NotationFactory.eINSTANCE.createFillStyle());
    styles.add(NotationFactory.eINSTANCE.createLineStyle());
    return styles;
  }

  /**
   * @generated
   */
  protected void decorateView(View containerView, View view,
      IAdaptable semanticAdapter, String semanticHint, int index,
      boolean persisted) {
    if (semanticHint == null) {
      semanticHint = ModelVisualIDRegistry
          .getType(brn.gui.linktable.diagram.edit.parts.NodeEditPart.VISUAL_ID);
      view.setType(semanticHint);
    }
    super.decorateView(containerView, view, semanticAdapter, semanticHint,
        index, persisted);
    if (!GraphEditPart.MODEL_ID.equals(ModelVisualIDRegistry
        .getModelID(containerView))) {
      EAnnotation shortcutAnnotation = EcoreFactory.eINSTANCE
          .createEAnnotation();
      shortcutAnnotation.setSource("Shortcut"); //$NON-NLS-1$
      shortcutAnnotation.getDetails().put("modelID", GraphEditPart.MODEL_ID); //$NON-NLS-1$
      view.getEAnnotations().add(shortcutAnnotation);
    }
    getViewService().createNode(semanticAdapter, view,
        ModelVisualIDRegistry.getType(NodeIdEditPart.VISUAL_ID),
        ViewUtil.APPEND, true, getPreferencesHint());
  }

}
