| /******************************************************************************* |
| * Copyright 2005-2006, CHISEL Group, University of Victoria, Victoria, BC, Canada. |
| * All rights reserved. This program and the accompanying materials |
| * are 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: |
| * The Chisel Group, University of Victoria |
| *******************************************************************************/ |
| package org.eclipse.mylar.zest.core.internal.graphmodel; |
| |
| import org.eclipse.jface.viewers.IBaseLabelProvider; |
| import org.eclipse.jface.viewers.IStructuredContentProvider; |
| import org.eclipse.jface.viewers.StructuredViewer; |
| |
| /** |
| * A Graph model factory that supports the structural and visual refreshing of graph elements based |
| * on the content provider and label provider in the viewer that this factory is associated with. |
| * Model elements are created using the content provider supplied by getContentProvider(), and |
| * styled using the label provider supplied by getLabelProvider(). By the end of creation and |
| * refreshing, the graph model elements are expected to be styled according to the given label provider, |
| * however, default styles are dependant on the particular implementation of IStylingGraphModelFactory. |
| * Unless otherwise documented, clients should expect that the implementation of IStylingGraphModelFactory |
| * adheres to the general defaults found in {@link IZestGraphDefaults}. |
| * @author Del Myers |
| */ |
| |
| public interface IStylingGraphModelFactory { |
| /** |
| * Returns the label provider used in this factory. |
| * @return the label provider used in this factory. |
| */ |
| public IBaseLabelProvider getLabelProvider(); |
| |
| /** |
| * Returns the content provider used in this factory. |
| * @return the content provider used in this factory. |
| */ |
| public IStructuredContentProvider getContentProvider(); |
| |
| /** |
| * Creates and returns the graph model from this factory based on the label provider and the |
| * label provider returned in getContentProvider() and getLabelProvider(). |
| * @return the created graph model. |
| */ |
| public GraphModel createGraphModel(); |
| |
| /** |
| * Creates and returns a node on the given graph based on the user model data, "data", |
| * using the content provider returned by getContentProvider(). They node will also be styled |
| * according to the information given by the label provider. If the node already exists in the |
| * graph, it is restyled and returned; no new node is created. |
| * @param graph the graph to create or retrieve the node on. |
| * @param element the user model data to use in the node. |
| * @return the node created or retrieved for the given graph. |
| */ |
| public IGraphModelNode createNode(GraphModel graph, Object element); |
| |
| /** |
| * Creates and returns a connection with the given source and destination objects from the user |
| * model. If the source and destination nodes don't exist for the given user model objects, they |
| * are created using createNode(GraphModel, Object). If a connection already exists for the given |
| * user data, but with different source or destinations, it is disconnected and reconnected to the |
| * given source and destination. It is always styled according to the label provider provided |
| * by getLabelProvider(). |
| * @param graph the graph to create or retrieve the connection on. |
| * @param element the user model data to use in this connection. |
| * @param source the user model data used for the source node. |
| * @param dest the user model data used for the destination node. |
| * @return the created or retrieved connection for the given graph. |
| */ |
| public IGraphModelConnection createConnection(GraphModel graph, Object element, Object source, Object dest); |
| |
| /** |
| * Restyles the given graph items according to the label provider supplied by getLabelProvider(). |
| * @param items the items to update. |
| */ |
| public void update(IGraphItem[] items); |
| |
| /** |
| * Restyles the given graph item according to the label provider supplied by getLabelProvider(). |
| * @param item the item to update. |
| */ |
| public void update(IGraphItem item); |
| |
| /** |
| * Structurally refreshes the graph model nodes and connections associated with the given |
| * user model element. Does nothing if the element does not currently exist in the view. |
| * No restyling is done by default. |
| * @param graph |
| * @param element the element to restructure. |
| */ |
| public void refresh(GraphModel graph, Object element); |
| |
| /** |
| * Structurally refreshes the graph model nodes and connections associated with the given |
| * user model element. If updateLabels is true, then the labels are updated as well. |
| * Does nothing if the element does not currently exist in the view. |
| * @param graph the graph to find the element on. |
| * @param element the user model element. |
| * @param updateLabels true if the labels should be updated as well. |
| */ |
| public void refresh(GraphModel graph, Object element, boolean updateLabels); |
| |
| /** |
| * Structurally refreshes the entire graph. |
| * @param graph the graph to refresh; |
| */ |
| public void refreshGraph(GraphModel graph); |
| |
| |
| /** |
| * Returns the viewer that this factory is building the model for. |
| * @return the viewer that this factory is building the model for. |
| */ |
| public StructuredViewer getViewer(); |
| |
| public void setConnectionStyle(int style); |
| |
| /** |
| * @return the connectionStyle |
| */ |
| public int getConnectionStyle(); |
| |
| public void setNodeStyle(int style); |
| |
| /** |
| * @return the nodeStyle |
| */ |
| public int getNodeStyle(); |
| |
| |
| } |