summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIan Bull2010-12-03 01:12:44 (EST)
committer Fabian Steeg2010-12-03 01:12:44 (EST)
commit33a1d887db220c0e603e34789b343c2975f56ec2 (patch)
treead72ad0b166a3e79a14c096423b7d3554f7a98eb
parent158d75e2633afe3ebb567992352d2817bb7cf1d8 (diff)
downloadorg.eclipse.gef4-33a1d887db220c0e603e34789b343c2975f56ec2.zip
org.eclipse.gef4-33a1d887db220c0e603e34789b343c2975f56ec2.tar.gz
org.eclipse.gef4-33a1d887db220c0e603e34789b343c2975f56ec2.tar.bz2
Refactored out the viewer stuff into its own bundle.
-rw-r--r--org.eclipse.zest.core/.refactorings/2010/12/49/refactorings.history2
-rw-r--r--org.eclipse.zest.core/.refactorings/2010/12/49/refactorings.index3
-rw-r--r--org.eclipse.zest.core/.settings/.api_filters41
-rw-r--r--org.eclipse.zest.core/META-INF/MANIFEST.MF9
-rw-r--r--org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/AbstractStructuredGraphViewer.java801
-rw-r--r--org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/AbstractZoomableViewer.java43
-rw-r--r--org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/EntityConnectionData.java61
-rw-r--r--org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/GraphViewer.java380
-rw-r--r--org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/IConnectionStyleBezierExtension.java76
-rw-r--r--org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/IConnectionStyleProvider.java79
-rw-r--r--org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/IEntityConnectionStyleBezierExtension.java84
-rw-r--r--org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/IEntityConnectionStyleProvider.java86
-rw-r--r--org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/IEntityStyleProvider.java131
-rw-r--r--org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/IFigureProvider.java25
-rw-r--r--org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/IGraphContentProvider.java58
-rw-r--r--org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/IGraphEntityContentProvider.java32
-rw-r--r--org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/IGraphEntityRelationshipContentProvider.java39
-rw-r--r--org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/INestedContentProvider.java43
-rw-r--r--org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/ISelfStyleProvider.java32
-rw-r--r--org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/IZoomableWorkbenchPart.java28
-rw-r--r--org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/ZoomContributionViewItem.java247
-rw-r--r--org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/ZoomListener.java27
-rw-r--r--org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/ZoomManager.java611
-rw-r--r--org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/internal/AbstractStylingModelFactory.java430
-rw-r--r--org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/internal/GraphItemStyler.java279
-rw-r--r--org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/internal/GraphModelEntityFactory.java229
-rw-r--r--org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/internal/GraphModelEntityRelationshipFactory.java152
-rw-r--r--org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/internal/GraphModelFactory.java181
-rw-r--r--org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/internal/IStylingGraphModelFactory.java172
-rw-r--r--org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/internal/SharedMessages.java32
-rw-r--r--org.eclipse.zest.examples/META-INF/MANIFEST.MF5
31 files changed, 12 insertions, 4406 deletions
diff --git a/org.eclipse.zest.core/.refactorings/2010/12/49/refactorings.history b/org.eclipse.zest.core/.refactorings/2010/12/49/refactorings.history
index d056a87..123e819 100644
--- a/org.eclipse.zest.core/.refactorings/2010/12/49/refactorings.history
+++ b/org.eclipse.zest.core/.refactorings/2010/12/49/refactorings.history
@@ -1,3 +1,3 @@
<?xml version="1.0" encoding="UTF-8"?>
-<session version="1.0">&#x0A;<refactoring accessors="true" comment="Delete element from project &apos;org.eclipse.zest.core&apos;&#x0A;- Original project: &apos;org.eclipse.zest.core&apos;&#x0A;- Original element: &apos;org.eclipse.zest.core.viewers.internal.AbstractStructuredGraphViewer.java&apos;" description="Delete element" element1="/src&lt;org.eclipse.zest.core.viewers.internal{AbstractStructuredGraphViewer.java" elements="1" flags="589830" id="org.eclipse.jdt.ui.delete" resources="0" stamp="1291316557790" subPackages="false" version="1.0"/>&#x0A;<refactoring accessors="true" comment="Delete element from project &apos;org.eclipse.zest.core&apos;&#x0A;- Original project: &apos;org.eclipse.zest.core&apos;&#x0A;- Original element: &apos;org.eclipse.zest.core.viewers.internal.ZoomListener.java&apos;" description="Delete element" element1="/src&lt;org.eclipse.zest.core.viewers.internal{ZoomListener.java" elements="1" flags="589830" id="org.eclipse.jdt.ui.delete" resources="0" stamp="1291316585665" subPackages="false" version="1.0"/>&#x0A;<refactoring accessors="true" comment="Delete element from project &apos;org.eclipse.zest.core&apos;&#x0A;- Original project: &apos;org.eclipse.zest.core&apos;&#x0A;- Original element: &apos;org.eclipse.zest.core.viewers.internal.ZoomManager.java&apos;" description="Delete element" element1="/src&lt;org.eclipse.zest.core.viewers.internal{ZoomManager.java" elements="1" flags="589830" id="org.eclipse.jdt.ui.delete" resources="0" stamp="1291316588584" subPackages="false" version="1.0"/>&#x0A;<refactoring accessors="true" comment="Delete element from project &apos;org.eclipse.zest.core&apos;&#x0A;- Original project: &apos;org.eclipse.zest.core&apos;&#x0A;- Original element: &apos;org.eclipse.zest.core.widgets.ConstraintAdapter.java&apos;" description="Delete element" element1="/src&lt;org.eclipse.zest.core.widgets{ConstraintAdapter.java" elements="1" flags="589830" id="org.eclipse.jdt.ui.delete" resources="0" stamp="1291316606776" subPackages="false" version="1.0"/>
+<session version="1.0">&#x0A;<refactoring accessors="true" comment="Delete element from project &apos;org.eclipse.zest.core&apos;&#x0A;- Original project: &apos;org.eclipse.zest.core&apos;&#x0A;- Original element: &apos;org.eclipse.zest.core.viewers.internal.AbstractStructuredGraphViewer.java&apos;" description="Delete element" element1="/src&lt;org.eclipse.zest.core.viewers.internal{AbstractStructuredGraphViewer.java" elements="1" flags="589830" id="org.eclipse.jdt.ui.delete" resources="0" stamp="1291316557790" subPackages="false" version="1.0"/>&#x0A;<refactoring accessors="true" comment="Delete element from project &apos;org.eclipse.zest.core&apos;&#x0A;- Original project: &apos;org.eclipse.zest.core&apos;&#x0A;- Original element: &apos;org.eclipse.zest.core.viewers.internal.ZoomListener.java&apos;" description="Delete element" element1="/src&lt;org.eclipse.zest.core.viewers.internal{ZoomListener.java" elements="1" flags="589830" id="org.eclipse.jdt.ui.delete" resources="0" stamp="1291316585665" subPackages="false" version="1.0"/>&#x0A;<refactoring accessors="true" comment="Delete element from project &apos;org.eclipse.zest.core&apos;&#x0A;- Original project: &apos;org.eclipse.zest.core&apos;&#x0A;- Original element: &apos;org.eclipse.zest.core.viewers.internal.ZoomManager.java&apos;" description="Delete element" element1="/src&lt;org.eclipse.zest.core.viewers.internal{ZoomManager.java" elements="1" flags="589830" id="org.eclipse.jdt.ui.delete" resources="0" stamp="1291316588584" subPackages="false" version="1.0"/>&#x0A;<refactoring accessors="true" comment="Delete element from project &apos;org.eclipse.zest.core&apos;&#x0A;- Original project: &apos;org.eclipse.zest.core&apos;&#x0A;- Original element: &apos;org.eclipse.zest.core.widgets.ConstraintAdapter.java&apos;" description="Delete element" element1="/src&lt;org.eclipse.zest.core.widgets{ConstraintAdapter.java" elements="1" flags="589830" id="org.eclipse.jdt.ui.delete" resources="0" stamp="1291316606776" subPackages="false" version="1.0"/>&#x0A;<refactoring comment="Copy package &apos;org.eclipse.zest.core.viewers&apos; to &apos;org.eclipse.zest.jface/src&apos;&#x0A;- Original project: &apos;org.eclipse.zest.core&apos;&#x0A;- Destination element: &apos;org.eclipse.zest.jface/src&apos;&#x0A;- Original element: &apos;org.eclipse.zest.core/src/org.eclipse.zest.core.viewers&apos;" description="Copy package" destination="=org.eclipse.zest.jface/src" element1="/src&lt;org.eclipse.zest.core.viewers" flags="589830" fragments="1" id="org.eclipse.jdt.ui.copy" policy="org.eclipse.jdt.ui.copyPackages" stamp="1291356223600" version="1.0"/>&#x0A;<refactoring comment="Copy package &apos;org.eclipse.zest.core.viewers.internal&apos; to &apos;org.eclipse.zest.jface/src&apos;&#x0A;- Original project: &apos;org.eclipse.zest.core&apos;&#x0A;- Destination element: &apos;org.eclipse.zest.jface/src&apos;&#x0A;- Original element: &apos;org.eclipse.zest.core/src/org.eclipse.zest.core.viewers.internal&apos;" description="Copy package" destination="=org.eclipse.zest.jface/src" element1="/src&lt;org.eclipse.zest.core.viewers.internal" flags="589830" fragments="1" id="org.eclipse.jdt.ui.copy" policy="org.eclipse.jdt.ui.copyPackages" stamp="1291356237340" version="1.0"/>&#x0A;<refactoring accessors="true" comment="Delete element from project &apos;org.eclipse.zest.core&apos;&#x0A;- Original project: &apos;org.eclipse.zest.core&apos;&#x0A;- Original element: &apos;org.eclipse.zest.core/src/org.eclipse.zest.core.viewers&apos;&#x0A;- Delete subpackages" description="Delete element" element1="/src&lt;org.eclipse.zest.core.viewers.internal" element2="/src&lt;org.eclipse.zest.core.viewers" elements="2" flags="589830" id="org.eclipse.jdt.ui.delete" resources="0" stamp="1291356266290" subPackages="true" version="1.0"/>
</session> \ No newline at end of file
diff --git a/org.eclipse.zest.core/.refactorings/2010/12/49/refactorings.index b/org.eclipse.zest.core/.refactorings/2010/12/49/refactorings.index
index b24b4f8..76302a1 100644
--- a/org.eclipse.zest.core/.refactorings/2010/12/49/refactorings.index
+++ b/org.eclipse.zest.core/.refactorings/2010/12/49/refactorings.index
@@ -2,3 +2,6 @@
1291316585665 Delete element
1291316588584 Delete element
1291316606776 Delete element
+1291356223600 Copy package
+1291356237340 Copy package
+1291356266290 Delete element
diff --git a/org.eclipse.zest.core/.settings/.api_filters b/org.eclipse.zest.core/.settings/.api_filters
index 7f003bf..6e98256 100644
--- a/org.eclipse.zest.core/.settings/.api_filters
+++ b/org.eclipse.zest.core/.settings/.api_filters
@@ -1,27 +1,5 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<component id="org.eclipse.zest.core" version="2">
- <resource path="src/org/eclipse/zest/core/viewers/GraphViewer.java" type="org.eclipse.zest.core.viewers.GraphViewer">
- <filter id="576720909">
- <message_arguments>
- <message_argument value="AbstractStructuredGraphViewer"/>
- <message_argument value="GraphViewer"/>
- </message_arguments>
- </filter>
- <filter id="643842064">
- <message_arguments>
- <message_argument value="IStylingGraphModelFactory"/>
- <message_argument value="GraphViewer"/>
- <message_argument value="getFactory()"/>
- </message_arguments>
- </filter>
- <filter id="643842064">
- <message_arguments>
- <message_argument value="ZoomManager"/>
- <message_argument value="GraphViewer"/>
- <message_argument value="getZoomManager()"/>
- </message_arguments>
- </filter>
- </resource>
<resource path="src/org/eclipse/zest/core/widgets/GraphContainer.java" type="org.eclipse.zest.core.widgets.GraphContainer">
<filter id="627060751">
<message_arguments>
@@ -31,21 +9,4 @@
</message_arguments>
</filter>
</resource>
- <resource path="src/org/eclipse/zest/core/viewers/ZoomContributionViewItem.java" type="org.eclipse.zest.core.viewers.ZoomContributionViewItem">
- <filter id="576725006">
- <message_arguments>
- <message_argument value="ZoomListener"/>
- <message_argument value="ZoomContributionViewItem"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/zest/core/viewers/AbstractZoomableViewer.java" type="org.eclipse.zest.core.viewers.AbstractZoomableViewer">
- <filter id="643842064">
- <message_arguments>
- <message_argument value="ZoomManager"/>
- <message_argument value="AbstractZoomableViewer"/>
- <message_argument value="getZoomManager()"/>
- </message_arguments>
- </filter>
- </resource>
</component>
diff --git a/org.eclipse.zest.core/META-INF/MANIFEST.MF b/org.eclipse.zest.core/META-INF/MANIFEST.MF
index 8199ee9..4088fc1 100644
--- a/org.eclipse.zest.core/META-INF/MANIFEST.MF
+++ b/org.eclipse.zest.core/META-INF/MANIFEST.MF
@@ -5,12 +5,11 @@ Bundle-SymbolicName: org.eclipse.zest.core;singleton:=true
Bundle-Vendor: %Plugin.providerName
Bundle-Localization: plugin
Bundle-Version: 2.0.0.qualifier
-Require-Bundle: org.eclipse.ui,
- org.eclipse.draw2d,
+Require-Bundle: org.eclipse.draw2d,
org.eclipse.zest.layouts;bundle-version="2.0.0"
Eclipse-LazyStart: false
-Export-Package: org.eclipse.zest.core.viewers,
- org.eclipse.zest.core.widgets,
- org.eclipse.zest.core.widgets.custom
+Export-Package: org.eclipse.zest.core.widgets,
+ org.eclipse.zest.core.widgets.custom,
+ org.eclipse.zest.core.widgets.internal;x-internal:=true
Import-Package: com.ibm.icu.text;version="[3.8.1,5.0.0)"
Bundle-RequiredExecutionEnvironment: J2SE-1.4
diff --git a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/AbstractStructuredGraphViewer.java b/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/AbstractStructuredGraphViewer.java
deleted file mode 100644
index 6add9e2..0000000
--- a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/AbstractStructuredGraphViewer.java
+++ /dev/null
@@ -1,801 +0,0 @@
-/*******************************************************************************
- * Copyright 2005-2010, 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 Mateusz Matela
- * <mateusz.matela@gmail.com> - Adapt Zest to changes in layout -
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=283179
- ******************************************************************************/
-package org.eclipse.zest.core.viewers;
-
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.TreeSet;
-
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.SWTError;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.widgets.Widget;
-import org.eclipse.zest.core.viewers.internal.IStylingGraphModelFactory;
-import org.eclipse.zest.core.widgets.Graph;
-import org.eclipse.zest.core.widgets.GraphConnection;
-import org.eclipse.zest.core.widgets.GraphContainer;
-import org.eclipse.zest.core.widgets.GraphItem;
-import org.eclipse.zest.core.widgets.GraphNode;
-import org.eclipse.zest.core.widgets.ZestStyles;
-import org.eclipse.zest.core.widgets.custom.CGraphNode;
-import org.eclipse.zest.layouts.LayoutAlgorithm;
-
-/**
- * Abstraction of graph viewers to implement functionality used by all of them.
- * Not intended to be implemented by clients. Use one of the provided children
- * instead.
- *
- * @author Del Myers
- * @since 2.0
- */
-public abstract class AbstractStructuredGraphViewer extends
- AbstractZoomableViewer {
- /**
- * Contains top-level styles for the entire graph. Set in the constructor. *
- */
- private int graphStyle;
-
- /**
- * Contains node-level styles for the graph. Set in setNodeStyle(). Defaults
- * are used in the constructor.
- */
- private int nodeStyle;
-
- /**
- * Contains arc-level styles for the graph. Set in setConnectionStyle().
- * Defaults are used in the constructor.
- */
- private int connectionStyle;
-
- private HashMap nodesMap = new HashMap();
- private HashMap connectionsMap = new HashMap();
-
- /**
- * A simple graph comparator that orders graph elements based on thier type
- * (connection or node), and their unique object identification.
- */
- private class SimpleGraphComparator implements Comparator {
- TreeSet storedStrings;
-
- /**
- *
- */
- public SimpleGraphComparator() {
- this.storedStrings = new TreeSet();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
- */
- public int compare(Object arg0, Object arg1) {
- if (arg0 instanceof GraphNode && arg1 instanceof GraphConnection) {
- return 1;
- } else if (arg0 instanceof GraphConnection
- && arg1 instanceof GraphNode) {
- return -1;
- }
- if (arg0.equals(arg1)) {
- return 0;
- }
- return getObjectString(arg0).compareTo(getObjectString(arg1));
- }
-
- private String getObjectString(Object o) {
- String s = o.getClass().getName() + "@"
- + Integer.toHexString(o.hashCode());
- while (storedStrings.contains(s)) {
- s = s + 'X';
- }
- return s;
- }
- }
-
- protected AbstractStructuredGraphViewer(int graphStyle) {
- this.graphStyle = graphStyle;
- this.connectionStyle = SWT.NONE;
- this.nodeStyle = SWT.NONE;
-
- }
-
- /**
- * Sets the default style for nodes in this graph. Note: if an input is set
- * on the viewer, a ZestException will be thrown.
- *
- * @param nodeStyle
- * the style for the nodes.
- * @see #ZestStyles
- */
- public void setNodeStyle(int nodeStyle) {
- if (getInput() != null) {
- throw new SWTError(SWT.ERROR_UNSPECIFIED);
- }
- this.nodeStyle = nodeStyle;
- }
-
- /**
- * Sets the default style for connections in this graph. Note: if an input
- * is set on the viewer, a ZestException will be thrown.
- *
- * @param connectionStyle
- * the style for the connections.
- * @see #ZestStyles
- */
- public void setConnectionStyle(int connectionStyle) {
- if (getInput() != null) {
- throw new SWTError(SWT.ERROR_UNSPECIFIED);
- }
- if (!ZestStyles.validateConnectionStyle(connectionStyle)) {
- throw new SWTError(SWT.ERROR_INVALID_ARGUMENT);
- }
- this.connectionStyle = connectionStyle;
- }
-
- /**
- * Returns the style set for the graph
- *
- * @return The style set of the graph
- */
- public int getGraphStyle() {
- return graphStyle;
- }
-
- /**
- * Returns the style set for the nodes.
- *
- * @return the style set for the nodes.
- */
- public int getNodeStyle() {
- return nodeStyle;
- }
-
- public Graph getGraphControl() {
- return (Graph) getControl();
- }
-
- /**
- * @return the connection style.
- */
- public int getConnectionStyle() {
- return connectionStyle;
- }
-
- /**
- * Sets the layout algorithm for this viewer. Subclasses may place
- * restrictions on the algorithms that it accepts.
- *
- * @param algorithm
- * the layout algorithm
- * @param run
- * true if the layout algorithm should be run immediately. This
- * is a hint.
- */
- public abstract void setLayoutAlgorithm(LayoutAlgorithm algorithm,
- boolean run);
-
- /**
- * Gets the current layout algorithm.
- *
- * @return the current layout algorithm.
- */
- protected abstract LayoutAlgorithm getLayoutAlgorithm();
-
- /**
- * Equivalent to setLayoutAlgorithm(algorithm, false).
- *
- * @param algorithm
- */
- public void setLayoutAlgorithm(LayoutAlgorithm algorithm) {
- setLayoutAlgorithm(algorithm, false);
- }
-
- public Object[] getNodeElements() {
- return this.nodesMap.keySet().toArray();
- }
-
- public Object[] getConnectionElements() {
- return this.connectionsMap.keySet().toArray();
- }
-
- /**
- * @noreference This method is not intended to be referenced by clients.
- * @return
- */
- public HashMap getNodesMap() {
- return this.nodesMap;
- }
-
- /**
- *
- * @param element
- * @return
- * @noreference This method is not intended to be referenced by clients.
- */
- public GraphNode addGraphModelContainer(Object element) {
- GraphNode node = this.getGraphModelNode(element);
- if (node == null) {
- node = new GraphContainer((Graph) getControl(), SWT.NONE);
- this.nodesMap.put(element, node);
- node.setData(element);
- }
- return node;
- }
-
- /**
- *
- * @param container
- * @param element
- * @return
- * @noreference This method is not intended to be referenced by clients.
- */
- public GraphNode addGraphModelNode(GraphContainer container, Object element) {
- GraphNode node = this.getGraphModelNode(element);
- if (node == null) {
- node = new GraphNode(container, SWT.NONE);
- this.nodesMap.put(element, node);
- node.setData(element);
- }
- return node;
- }
-
- /**
- *
- * @param element
- * @param figure
- * @return
- * @noreference This method is not intended to be referenced by clients.
- */
- public GraphNode addGraphModelNode(Object element, IFigure figure) {
- GraphNode node = this.getGraphModelNode(element);
- if (node == null) {
- if (figure != null) {
- node = new CGraphNode((Graph) getControl(), SWT.NONE, figure);
- this.nodesMap.put(element, node);
- node.setData(element);
- } else {
- node = new GraphNode((Graph) getControl(), SWT.NONE);
- this.nodesMap.put(element, node);
- node.setData(element);
- }
- }
- return node;
- }
-
- /**
- *
- * @param element
- * @param source
- * @param target
- * @return
- * @noreference This method is not intended to be referenced by clients.
- */
- public GraphConnection addGraphModelConnection(Object element,
- GraphNode source, GraphNode target) {
- GraphConnection connection = this.getGraphModelConnection(element);
- if (connection == null) {
- connection = new GraphConnection((Graph) getControl(), SWT.NONE,
- source, target);
- this.connectionsMap.put(element, connection);
- connection.setData(element);
- }
- return connection;
-
- }
-
- /**
- *
- * @param obj
- * @return
- * @noreference This method is not intended to be referenced by clients.
- */
- public GraphConnection getGraphModelConnection(Object obj) {
- return (GraphConnection) this.connectionsMap.get(obj);
- }
-
- /**
- *
- * @param obj
- * @return
- * @noreference This method is not intended to be referenced by clients.
- */
- public GraphNode getGraphModelNode(Object obj) {
- return (GraphNode) this.nodesMap.get(obj);
- }
-
- /**
- * @param obj
- * @noreference This method is not intended to be referenced by clients.
- */
- public void removeGraphModelConnection(Object obj) {
- GraphConnection connection = (GraphConnection) connectionsMap.get(obj);
- if (connection != null) {
- connectionsMap.remove(obj);
- if (!connection.isDisposed()) {
- connection.dispose();
- }
- }
- }
-
- /**
- * @noreference This method is not intended to be referenced by clients.
- */
- public void removeGraphModelNode(Object obj) {
- GraphNode node = (GraphNode) nodesMap.get(obj);
- if (node != null) {
- nodesMap.remove(obj);
- if (!node.isDisposed()) {
- node.dispose();
- }
- }
- }
-
- protected void handleDispose(DisposeEvent event) {
-
- if (getControl() != null && !getControl().isDisposed()) {
- getControl().dispose();
- }
- super.handleDispose(event);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.jface.viewers.StructuredViewer#internalRefresh(java.lang.
- * Object)
- */
- protected void internalRefresh(Object element) {
- if (getInput() == null) {
- return;
- }
- if (element == getInput()) {
- getFactory().refreshGraph(getGraphControl());
- } else {
- getFactory().refresh(getGraphControl(), element);
- }
- // After all the items are loaded, we call update to ensure drawing.
- // This way the damaged area does not get too big if we start
- // adding and removing more nodes
- getGraphControl().getLightweightSystem().getUpdateManager()
- .performUpdate();
- }
-
- protected void doUpdateItem(Widget item, Object element, boolean fullMap) {
- if (item == getGraphControl()) {
- getFactory().update(getNodesArray(getGraphControl()));
- getFactory().update(getConnectionsArray(getGraphControl()));
- } else if (item instanceof GraphItem) {
- getFactory().update((GraphItem) item);
- }
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.jface.viewers.StructuredViewer#doFindInputItem(java.lang.
- * Object)
- */
- protected Widget doFindInputItem(Object element) {
-
- if (element == getInput() && element instanceof Widget) {
- return (Widget) element;
- }
- return null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.jface.viewers.StructuredViewer#doFindItem(java.lang.Object)
- */
- protected Widget doFindItem(Object element) {
- Widget node = (Widget) nodesMap.get(element);
- Widget connection = (Widget) connectionsMap.get(element);
- return (node != null) ? node : connection;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jface.viewers.StructuredViewer#getSelectionFromWidget()
- */
- protected List getSelectionFromWidget() {
- List internalSelection = getWidgetSelection();
- LinkedList externalSelection = new LinkedList();
- for (Iterator i = internalSelection.iterator(); i.hasNext();) {
- // @tag zest.todo : should there be a method on IGraphItem to get
- // the external data?
- GraphItem item = (GraphItem) i.next();
- if (item instanceof GraphNode) {
- externalSelection.add(((GraphNode) item).getData());
- } else if (item instanceof GraphConnection) {
- externalSelection.add(((GraphConnection) item)
- .getExternalConnection());
- } else if (item instanceof Widget) {
- externalSelection.add(((Widget) item).getData());
- }
- }
- return externalSelection;
- }
-
- protected GraphItem[] /* GraphItem */findItems(List l) {
- if (l == null) {
- return new GraphItem[0];
- }
-
- ArrayList list = new ArrayList();
- Iterator iterator = l.iterator();
-
- while (iterator.hasNext()) {
- GraphItem w = (GraphItem) findItem(iterator.next());
- list.add(w);
- }
- return (GraphItem[]) list.toArray(new GraphItem[list.size()]);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.jface.viewers.StructuredViewer#setSelectionToWidget(java.
- * util.List, boolean)
- */
- protected void setSelectionToWidget(List l, boolean reveal) {
- Graph control = (Graph) getControl();
- List selection = new LinkedList();
- for (Iterator i = l.iterator(); i.hasNext();) {
- Object obj = i.next();
- GraphNode node = (GraphNode) nodesMap.get(obj);
- GraphConnection conn = (GraphConnection) connectionsMap.get(obj);
- if (node != null) {
- selection.add(node);
- }
- if (conn != null) {
- selection.add(conn);
- }
- }
- control.setSelection((GraphNode[]) selection
- .toArray(new GraphNode[selection.size()]));
- }
-
- /**
- * Gets the internal model elements that are selected.
- *
- * @return
- */
- protected List getWidgetSelection() {
- Graph control = (Graph) getControl();
- return control.getSelection();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jface.viewers.Viewer#inputChanged(java.lang.Object,
- * java.lang.Object)
- */
- protected void inputChanged(Object input, Object oldInput) {
- IStylingGraphModelFactory factory = getFactory();
- factory.setConnectionStyle(getConnectionStyle());
- factory.setNodeStyle(getNodeStyle());
-
- // Save the old map so we can set the size and position of any nodes
- // that are the same
- Map oldNodesMap = nodesMap;
- Graph graph = (Graph) getControl();
- graph.setSelection(new GraphNode[0]);
-
- Iterator iterator = nodesMap.values().iterator();
- while (iterator.hasNext()) {
- GraphNode node = (GraphNode) iterator.next();
- if (!node.isDisposed()) {
- node.dispose();
- }
- }
-
- iterator = connectionsMap.values().iterator();
- while (iterator.hasNext()) {
- GraphConnection connection = (GraphConnection) iterator.next();
- if (!connection.isDisposed()) {
- connection.dispose();
- }
- }
-
- nodesMap = new HashMap();
- connectionsMap = new HashMap();
-
- graph = factory.createGraphModel(graph);
-
- ((Graph) getControl()).setNodeStyle(getNodeStyle());
- ((Graph) getControl()).setConnectionStyle(getConnectionStyle());
-
- // check if any of the pre-existing nodes are still present
- // in this case we want them to keep the same location & size
- for (Iterator iter = oldNodesMap.keySet().iterator(); iter.hasNext();) {
- Object data = iter.next();
- GraphNode newNode = (GraphNode) nodesMap.get(data);
- if (newNode != null) {
- GraphNode oldNode = (GraphNode) oldNodesMap.get(data);
- newNode.setLocation(oldNode.getLocation().x, oldNode
- .getLocation().y);
- if (oldNode.isSizeFixed()) {
- newNode.setSize(oldNode.getSize().width,
- oldNode.getSize().height);
- }
- }
- }
- }
-
- /**
- * Returns the factory used to create the model. This must not be called
- * before the content provider is set.
- *
- * @return
- * @noreference This method is not intended to be referenced by clients.
- * @nooverride This method is not intended to be re-implemented or extended
- * by clients.
- */
- protected abstract IStylingGraphModelFactory getFactory();
-
- protected void filterVisuals() {
- if (getGraphControl() == null) {
- return;
- }
- Object[] filtered = getFilteredChildren(getInput());
- SimpleGraphComparator comparator = new SimpleGraphComparator();
- TreeSet filteredElements = new TreeSet(comparator);
- TreeSet unfilteredElements = new TreeSet(comparator);
- List connections = getGraphControl().getConnections();
- List nodes = getGraphControl().getNodes();
- if (filtered.length == 0) {
- // set everything to invisible.
- // @tag zest.bug.156528-Filters.check : should we only filter out
- // the nodes?
- for (Iterator i = connections.iterator(); i.hasNext();) {
- GraphConnection c = (GraphConnection) i.next();
- c.setVisible(false);
- }
- for (Iterator i = nodes.iterator(); i.hasNext();) {
- GraphNode n = (GraphNode) i.next();
- n.setVisible(false);
- }
- return;
- }
- for (Iterator i = connections.iterator(); i.hasNext();) {
- GraphConnection c = (GraphConnection) i.next();
- if (c.getExternalConnection() != null) {
- unfilteredElements.add(c);
- }
- }
- for (Iterator i = nodes.iterator(); i.hasNext();) {
- GraphNode n = (GraphNode) i.next();
- if (n.getData() != null) {
- unfilteredElements.add(n);
- }
- }
- for (int i = 0; i < filtered.length; i++) {
- Object modelElement = connectionsMap.get(filtered[i]);
- if (modelElement == null) {
- modelElement = nodesMap.get(filtered[i]);
- }
- if (modelElement != null) {
- filteredElements.add(modelElement);
- }
- }
- unfilteredElements.removeAll(filteredElements);
- // set all the elements that did not pass the filters to invisible, and
- // all the elements that passed to visible.
- while (unfilteredElements.size() > 0) {
- GraphItem i = (GraphItem) unfilteredElements.first();
- i.setVisible(false);
- unfilteredElements.remove(i);
- }
- while (filteredElements.size() > 0) {
- GraphItem i = (GraphItem) filteredElements.first();
- i.setVisible(true);
- filteredElements.remove(i);
- }
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.jface.viewers.StructuredViewer#getRawChildren(java.lang.Object
- * )
- */
- protected Object[] getRawChildren(Object parent) {
- if (parent == getInput()) {
- // get the children from the model.
- LinkedList children = new LinkedList();
- if (getGraphControl() != null) {
- List connections = getGraphControl().getConnections();
- List nodes = getGraphControl().getNodes();
- for (Iterator i = connections.iterator(); i.hasNext();) {
- GraphConnection c = (GraphConnection) i.next();
- if (c.getExternalConnection() != null) {
- children.add(c.getExternalConnection());
- }
- }
- for (Iterator i = nodes.iterator(); i.hasNext();) {
- GraphNode n = (GraphNode) i.next();
- if (n.getData() != null) {
- children.add(n.getData());
- }
- }
- return children.toArray();
- }
- }
- return super.getRawChildren(parent);
- }
-
- /**
- *
- */
- public void reveal(Object element) {
- Widget[] items = this.findItems(element);
- for (int i = 0; i < items.length; i++) {
- Widget item = items[i];
- if (item instanceof GraphNode) {
- GraphNode graphModelNode = (GraphNode) item;
- graphModelNode.highlight();
- } else if (item instanceof GraphConnection) {
- GraphConnection graphModelConnection = (GraphConnection) item;
- graphModelConnection.highlight();
- }
- }
- }
-
- public void unReveal(Object element) {
- Widget[] items = this.findItems(element);
- for (int i = 0; i < items.length; i++) {
- Widget item = items[i];
- if (item instanceof GraphNode) {
- GraphNode graphModelNode = (GraphNode) item;
- graphModelNode.unhighlight();
- } else if (item instanceof GraphConnection) {
- GraphConnection graphModelConnection = (GraphConnection) item;
- graphModelConnection.unhighlight();
- }
- }
- }
-
- /**
- * Applies the viewers layouts.
- *
- */
- public abstract void applyLayout();
-
- /**
- * Removes the given connection object from the layout algorithm and the
- * model.
- *
- * @param connection
- */
- public void removeRelationship(Object connection) {
- GraphConnection relationship = (GraphConnection) connectionsMap
- .get(connection);
-
- if (relationship != null) {
- // remove the relationship from the model
- relationship.dispose();
- }
- }
-
- /**
- * Creates a new node and adds it to the graph. If it already exists nothing
- * happens.
- *
- * @param newNode
- */
- public void addNode(Object element) {
- if (nodesMap.get(element) == null) {
- // create the new node
- getFactory().createNode(getGraphControl(), element);
-
- }
- }
-
- /**
- * Removes the given element from the layout algorithm and the model.
- *
- * @param element
- * The node element to remove.
- */
- public void removeNode(Object element) {
- GraphNode node = (GraphNode) nodesMap.get(element);
-
- if (node != null) {
- // remove the node and it's connections from the model
- node.dispose();
- }
- }
-
- /**
- * Creates a new relationship between the source node and the destination
- * node. If either node doesn't exist then it will be created.
- *
- * @param connection
- * The connection data object.
- * @param srcNode
- * The source node data object.
- * @param destNode
- * The destination node data object.
- */
- public void addRelationship(Object connection, Object srcNode,
- Object destNode) {
- // create the new relationship
- IStylingGraphModelFactory modelFactory = getFactory();
- modelFactory.createConnection(getGraphControl(), connection, srcNode,
- destNode);
-
- }
-
- /**
- * Adds a new relationship given the connection. It will use the content
- * provider to determine the source and destination nodes.
- *
- * @param connection
- * The connection data object.
- */
- public void addRelationship(Object connection) {
- IStylingGraphModelFactory modelFactory = getFactory();
- if (connectionsMap.get(connection) == null) {
- if (modelFactory.getContentProvider() instanceof IGraphContentProvider) {
- IGraphContentProvider content = ((IGraphContentProvider) modelFactory
- .getContentProvider());
- Object source = content.getSource(connection);
- Object dest = content.getDestination(connection);
- // create the new relationship
- modelFactory.createConnection(getGraphControl(), connection,
- source, dest);
- } else {
- throw new UnsupportedOperationException();
- }
- }
- }
-
- /**
- * Converts the list of GraphModelConnection objects into an array and
- * returns it.
- *
- * @return GraphModelConnection[]
- */
- protected GraphConnection[] getConnectionsArray(Graph graph) {
- GraphConnection[] connsArray = new GraphConnection[graph
- .getConnections().size()];
- connsArray = (GraphConnection[]) graph.getConnections().toArray(
- connsArray);
- return connsArray;
- }
-
- /**
- * Converts the list of GraphModelNode objects into an array an returns it.
- *
- * @return GraphModelNode[]
- */
- protected GraphNode[] getNodesArray(Graph graph) {
- GraphNode[] nodesArray = new GraphNode[graph.getNodes().size()];
- nodesArray = (GraphNode[]) graph.getNodes().toArray(nodesArray);
- return nodesArray;
- }
-
-}
diff --git a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/AbstractZoomableViewer.java b/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/AbstractZoomableViewer.java
deleted file mode 100644
index a9b4e02..0000000
--- a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/AbstractZoomableViewer.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright 2005-2010, 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.zest.core.viewers;
-
-import org.eclipse.draw2d.geometry.Rectangle;
-import org.eclipse.jface.viewers.StructuredViewer;
-
-/**
- * A simple interface that provides zooming capabilites. Not intended to be
- * subclassed by clients.
- *
- * @author Del Myers
- *
- * @noextend This class is not intended to be subclassed by clients.
- *
- */
-// @tag bug.156286-Zooming.fix
-public abstract class AbstractZoomableViewer extends StructuredViewer {
- /**
- * Returns a ZoomManager that zooming can be done on. May return null if
- * none is available.
- *
- * @return a ZoomManager that zooming can be done on.
- * @since 2.0
- */
- protected abstract ZoomManager getZoomManager();
-
- public void zoomTo(int x, int y, int width, int height) {
- Rectangle r = new Rectangle(x, y, width, height);
- if (r.isEmpty()) {
- getZoomManager().setZoomAsText("100%");
- } else {
- getZoomManager().zoomTo(r);
- }
- }
-}
diff --git a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/EntityConnectionData.java b/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/EntityConnectionData.java
deleted file mode 100644
index ae1dc65..0000000
--- a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/EntityConnectionData.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*******************************************************************************
- * Copyright 2005-2010, 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.zest.core.viewers;
-
-/**
- * A simple object that is used as the "external connection" in content
- * providers that don't ask the user to create their own external connection.
- *
- * This is used whenever users don't specify a connection
- *
- * @author Del Myers
- */
-public final class EntityConnectionData {
- public final Object source;
- public final Object dest;
-
- /**
- * Creates a new entity connection data. The source and dest are users
- * nodes.
- */
- public EntityConnectionData(Object source, Object dest) {
- /*
- * if (source == null) { throw new
- * RuntimeException("Creating relationship with null source object"); }
- * if (dest == null) { throw new
- * RuntimeException("Creating relationship with null dest object"); }
- */
- this.source = source;
- this.dest = dest;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#equals(java.lang.Object)
- */
- public boolean equals(Object obj) {
- if (!(obj instanceof EntityConnectionData)) {
- return false;
- }
- EntityConnectionData that = (EntityConnectionData) obj;
- return (this.source.equals(that.source) && this.dest.equals(that.dest));
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#hashCode()
- */
- public int hashCode() {
- return this.source.hashCode() + this.dest.hashCode();
- }
-}
diff --git a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/GraphViewer.java b/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/GraphViewer.java
deleted file mode 100644
index ed8f6cd..0000000
--- a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/GraphViewer.java
+++ /dev/null
@@ -1,380 +0,0 @@
-/*******************************************************************************
- * Copyright 2005-2010, 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.zest.core.viewers;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IContentProvider;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.MouseListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Widget;
-import org.eclipse.zest.core.viewers.internal.GraphModelEntityFactory;
-import org.eclipse.zest.core.viewers.internal.GraphModelEntityRelationshipFactory;
-import org.eclipse.zest.core.viewers.internal.GraphModelFactory;
-import org.eclipse.zest.core.viewers.internal.IStylingGraphModelFactory;
-import org.eclipse.zest.core.widgets.Graph;
-import org.eclipse.zest.core.widgets.GraphItem;
-import org.eclipse.zest.core.widgets.ZestStyles;
-import org.eclipse.zest.layouts.LayoutAlgorithm;
-
-/**
- * This view is used to represent a static graph. Static graphs can be layed
- * out, but do not continually update their layout locations.
- *
- * @author Ian Bull
- *
- * @author Chris Callendar
- *
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class GraphViewer extends AbstractStructuredGraphViewer implements
- ISelectionProvider {
-
- protected Graph graph = null;
- private IStylingGraphModelFactory modelFactory = null;
- private List selectionChangedListeners = null;
- ZoomManager zoomManager = null;
-
- /**
- * Initializes the viewer.
- *
- * @param composite
- * @param style
- * the style for the viewer and for the layout algorithm
- * @see ZestStyles#LAYOUT_GRID
- * @see ZestStyles#LAYOUT_TREE
- * @see ZestStyles#LAYOUT_RADIAL
- * @see ZestStyles#LAYOUT_SPRING
- * @see ZestStyles#NO_OVERLAPPING_NODES
- * @see ZestStyles#NODES_HIGHLIGHT_ADJACENT
- * @see SWT#V_SCROLL
- * @see SWT#H_SCROLL
- */
- public GraphViewer(Composite composite, int style) {
- super(style);
- this.graph = new Graph(composite, style);
- hookControl(this.graph);
- }
-
- public void setControl(Graph graphModel) {
- this.graph = graphModel;
- hookControl(this.graph);
- }
-
- protected void hookControl(Control control) {
- super.hookControl(control);
-
- selectionChangedListeners = new ArrayList();
- getGraphControl().addSelectionListener(new SelectionAdapter() {
-
- public void widgetSelected(SelectionEvent e) {
- Iterator iterator = selectionChangedListeners.iterator();
-
- ISelection structuredSelection = getSelection();
- SelectionChangedEvent event = new SelectionChangedEvent(
- GraphViewer.this, structuredSelection);
-
- while (iterator.hasNext()) {
- ISelectionChangedListener listener = (ISelectionChangedListener) iterator
- .next();
- listener.selectionChanged(event);
- }
-
- }
-
- });
-
- control.addMouseListener(new MouseListener() {
-
- public void mouseDoubleClick(MouseEvent e) {
- DoubleClickEvent doubleClickEvent = new DoubleClickEvent(
- GraphViewer.this, getSelection());
- fireDoubleClick(doubleClickEvent);
- }
-
- public void mouseDown(MouseEvent e) {
-
- }
-
- public void mouseUp(MouseEvent e) {
-
- }
-
- });
- }
-
- protected void inputChanged(Object input, Object oldInput) {
- graph.setDynamicLayout(false);
- super.inputChanged(input, oldInput);
- graph.setDynamicLayout(true);
- graph.applyLayout();
- }
-
- /**
- * Gets the styles for this structuredViewer
- *
- * @return
- */
- public int getStyle() {
- return this.graph.getStyle();
- }
-
- /*
- * (non-Javadoc)
- *
- * @seeorg.eclipse.zest.core.viewer.internal.AbstractStructuredGraphViewer#
- * getGraphControl()
- */
- public Graph getGraphControl() {
- return super.getGraphControl();
- };
-
- /**
- * Sets the layout algorithm to use for this viewer.
- *
- * @param algorithm
- * the algorithm to layout the nodes
- * @param runLayout
- * if the layout should be run
- */
- public void setLayoutAlgorithm(LayoutAlgorithm algorithm, boolean runLayout) {
- graph.setLayoutAlgorithm(algorithm, runLayout);
- }
-
- /*
- * (non-Javadoc)
- *
- * @seeorg.eclipse.zest.core.viewer.internal.AbstractStructuredGraphViewer#
- * setLayoutAlgorithm(org.eclipse.zest.layouts.LayoutAlgorithm)
- */
- public void setLayoutAlgorithm(LayoutAlgorithm algorithm) {
- super.setLayoutAlgorithm(algorithm);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.zest.core.viewers.AbstractStructuredGraphViewer#setNodeStyle
- * (int)
- */
- public void setNodeStyle(int nodeStyle) {
- super.setNodeStyle(nodeStyle);
- this.graph.setNodeStyle(nodeStyle);
- }
-
- public void setContentProvider(IContentProvider contentProvider) {
- if (contentProvider instanceof IGraphContentProvider) {
- super.setContentProvider(contentProvider);
- } else if (contentProvider instanceof IGraphEntityContentProvider) {
- super.setContentProvider(contentProvider);
- } else if (contentProvider instanceof IGraphEntityRelationshipContentProvider) {
- super.setContentProvider(contentProvider);
- } else {
- throw new IllegalArgumentException(
- "Invalid content provider, only IGraphContentProvider, IGraphEntityContentProvider, or IGraphEntityRelationshipContentProvider are supported.");
- }
- }
-
- /**
- * Finds the graph widget item for a given user model item.
- *
- * Note: This method returns an internal interface (GraphItem). You should
- * be able to cast this to either a IGraphModelNode or IGraphModelConnection
- * (which are also internal). These are internal because this API is not
- * stable. If use this method (to access internal nodes and edges), your
- * code may not compile between versions.
- *
- * @param The
- * user model node.
- * @return An IGraphItem. This should be either a IGraphModelNode or
- * IGraphModelConnection
- */
- public GraphItem findGraphItem(Object element) {
- Widget[] result = findItems(element);
- return (result.length == 0 || !(result[0] instanceof GraphItem)) ? null
- : (GraphItem) result[0];
- }
-
- /**
- * Applys the current layout to the viewer
- */
- public void applyLayout() {
- graph.applyLayout();
- }
-
- protected void setSelectionToWidget(List l, boolean reveal) {
- GraphItem[] listOfItems = findItems(l);
- graph.setSelection(listOfItems);
- }
-
- public Control getControl() {
- return graph;
- }
-
- public Object[] getNodeElements() {
- return super.getNodeElements();
- }
-
- public Object[] getConnectionElements() {
- return super.getConnectionElements();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.zest.core.viewer.internal.AbstractStructuredGraphViewer#reveal
- * (java.lang.Object)
- */
- public void reveal(Object element) {
- super.reveal(element);
- }
-
- /*
- * (non-Javadoc)
- *
- * @seeorg.eclipse.zest.core.viewer.internal.AbstractStructuredGraphViewer#
- * setConnectionStyle(int)
- */
- public void setConnectionStyle(int connectionStyle) {
- super.setConnectionStyle(connectionStyle);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.zest.core.viewer.internal.AbstractStructuredGraphViewer#unReveal
- * (java.lang.Object)
- */
- public void unReveal(Object element) {
- super.unReveal(element);
- }
-
- public void addSelectionChangedListener(ISelectionChangedListener listener) {
- if (!selectionChangedListeners.contains(listener)) {
- selectionChangedListeners.add(listener);
- }
- }
-
- public void removeSelectionChangedListener(
- ISelectionChangedListener listener) {
- if (selectionChangedListeners.contains(listener)) {
- selectionChangedListeners.remove(listener);
- }
- }
-
- /**
- * {@inheritDoc}
- *
- * NOTE: If a layout algorithm is set in the receiver, layout is performed
- * after the refresh.
- */
- public void refresh(Object element) {
- boolean dynamicLayoutEnabled = graph.isDynamicLayoutEnabled();
- graph.setDynamicLayout(false);
- super.refresh(element);
- graph.setDynamicLayout(dynamicLayoutEnabled);
- }
-
- /**
- * {@inheritDoc}
- *
- * NOTE: If a layout algorithm is set in the receiver, layout is performed
- * after the refresh.
- */
- public void refresh(Object element, boolean updateLabels) {
- boolean dynamicLayoutEnabled = graph.isDynamicLayoutEnabled();
- graph.setDynamicLayout(false);
- super.refresh(element, updateLabels);
- graph.setDynamicLayout(dynamicLayoutEnabled);
- }
-
- /**
- * {@inheritDoc}
- *
- * NOTE: If a layout algorithm is set in the receiver, layout is performed
- * after the update.
- */
- public void update(Object element, String[] properties) {
- boolean dynamicLayoutEnabled = graph.isDynamicLayoutEnabled();
- graph.setDynamicLayout(false);
- super.update(element, properties);
- graph.setDynamicLayout(dynamicLayoutEnabled);
- }
-
- /**
- * {@inheritDoc}
- *
- * NOTE: If a layout algorithm is set in the receiver, layout is performed
- * after the update.
- */
- public void update(Object[] elements, String[] properties) {
- boolean dynamicLayoutEnabled = graph.isDynamicLayoutEnabled();
- graph.setDynamicLayout(false);
- super.update(elements, properties);
- graph.setDynamicLayout(dynamicLayoutEnabled);
- }
-
- // @tag zest.bug.156286-Zooming.fix.experimental : expose the zoom manager
- // for new actions.
- protected ZoomManager getZoomManager() {
- if (zoomManager == null) {
- zoomManager = new ZoomManager(getGraphControl().getRootLayer(),
- getGraphControl().getViewport());
- }
- return zoomManager;
- }
-
- /**
- * (non-Javadoc)
- *
- * @see org.eclipse.zest.core.viewers.AbstractStructuredGraphViewer#getFactory()
- * @noreference This method is not intended to be referenced by clients.
- * @nooverride This method is not intended to be re-implemented or extended
- * by clients.
- */
- protected IStylingGraphModelFactory getFactory() {
- if (modelFactory == null) {
- if (getContentProvider() instanceof IGraphContentProvider) {
- modelFactory = new GraphModelFactory(this);
- } else if (getContentProvider() instanceof IGraphEntityContentProvider) {
- modelFactory = new GraphModelEntityFactory(this);
- } else if (getContentProvider() instanceof IGraphEntityRelationshipContentProvider) {
- modelFactory = new GraphModelEntityRelationshipFactory(this);
- }
- }
- return modelFactory;
- }
-
- /*
- * (non-Javadoc)
- *
- * @seeorg.eclipse.zest.core.viewers.AbstractStructuredGraphViewer#
- * getLayoutAlgorithm()
- */
- protected LayoutAlgorithm getLayoutAlgorithm() {
- return graph.getLayoutAlgorithm();
- }
-
-}
diff --git a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/IConnectionStyleBezierExtension.java b/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/IConnectionStyleBezierExtension.java
deleted file mode 100644
index 41ed0ca..0000000
--- a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/IConnectionStyleBezierExtension.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*******************************************************************************
- * Copyright 2005-2010, 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.zest.core.viewers;
-
-/**
- * An extension to the IConnectinStyleProvider that allows styling specific to
- * bezier curves.
- *
- * Bezier curves are defined by a set of four points: two point in the layout
- * (start and end), and two related control points (also start and end). The
- * control points are defined relative to their corresponding layout point. This
- * definition includes an angle between the layout point and the line between
- * the two layout points, as well as a ratio distance from the corresponding
- * layout point. The ratio distance is defined as a fraction between 0 and 1 of
- * the distance between the two layout points. Using this definition allows
- * bezier curves to have a consistant look regardless of the actual positions of
- * the nodes in the layouts.
- *
- * @author Del Myers
- *
- */
-// @tag bug(152530-Bezier(fix)) : users can style bezier curves.
-public interface IConnectionStyleBezierExtension {
-
- /**
- * Gets the angle between the start point, and the line between the start
- * and end, which will define the position of the start control point. If
- * the start angle, and the end angle are the same sign, the two control
- * points are guaranteed to be on the same side of the line.
- *
- * @param rel
- * the relationship to base on.
- * @return the start angle or <code>Double.NaN</code> for defaults.
- */
- double getStartAngle(Object rel);
-
- /**
- * Gets the angle between the end point, and the line between the start and
- * end, which will define the position of the end control point. If the
- * start angle, and the end angle are the same sign, the two control points
- * are guaranteed to be on the same side of the line.
- *
- * @param rel
- * the relationship to base on.
- * @return the end angle or <code>Double.NaN</code> for defaults.
- */
- double getEndAngle(Object rel);
-
- /**
- * Gets the distance between the start point and the start control point, as
- * a fraction of the distance between the start point and end point.
- *
- * @param rel
- * the relationship to base on.
- * @return the start distance or <code>Double.NaN</code> for defaults.
- */
- double getStartDistance(Object rel);
-
- /**
- * Gets the distance between the end point and the end control point, as a
- * fraction of the distance between the start point and end point.
- *
- * @param rel
- * the relationship to base on.
- * @return the end distance or <code>Double.NaN</code> for defaults.
- */
- double getEndDistance(Object rel);
-}
diff --git a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/IConnectionStyleProvider.java b/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/IConnectionStyleProvider.java
deleted file mode 100644
index 92d5c72..0000000
--- a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/IConnectionStyleProvider.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*******************************************************************************
- * Copyright 2005-2010, 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.zest.core.viewers;
-
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.ui.services.IDisposable;
-
-/**
- * An extension to label providers, to supply styles for connections based upon
- * relationships, rather than on connected nodes.
- *
- * @author Del Myers
- * @see #IGraphContentProvider
- * @see #IEntityStyleProvider
- *
- */
-// @tag bug(151327-Styles) : created to solve this bug
-public interface IConnectionStyleProvider extends IDisposable {
- /**
- * Returns the style flags for this connection. Valid flags are those that
- * begin with CONNECTION in @see org.eclipse.zest.core.ZestStyles. Check
- * ZestStyles for legal combinations.
- *
- * @param rel
- * the relationship represented by this connection.
- * @return the style flags for this connection.
- * @see org.eclipse.zest.core.widgets.ZestStyles
- */
- public int getConnectionStyle(Object rel);
-
- /**
- * Returns the color for the connection. Null for default. Any resources
- * created by this class must be disposed by this class.
- *
- * @param rel
- * the relationship represented by this connection.
- * @return the color.
- * @see #dispose()
- */
- public Color getColor(Object rel);
-
- /**
- * Returns the highlighted color for this connection. Null for default. Any
- * resources created by this class must be disposed by this class.
- *
- * @param rel
- * the relationship represented by this connection.
- * @return the highlighted color. Null for default.
- * @see #dispose()
- */
- public Color getHighlightColor(Object rel);
-
- /**
- * Returns the line width of the connection. -1 for default.
- *
- * @param rel
- * the relationship represented by this connection.
- * @return the line width for the connection. -1 for default.
- */
- public int getLineWidth(Object rel);
-
- /**
- * Returns the tooltop for this node. If null is returned Zest will simply
- * use the default tooltip.
- *
- * @param entity
- * @return
- */
- public IFigure getTooltip(Object entity);
-}
diff --git a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/IEntityConnectionStyleBezierExtension.java b/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/IEntityConnectionStyleBezierExtension.java
deleted file mode 100644
index 16aa721..0000000
--- a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/IEntityConnectionStyleBezierExtension.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*******************************************************************************
- * Copyright 2005-2010, 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.zest.core.viewers;
-
-/**
- * An extension to the IEntityConnectinStyleProvider that allows styling
- * specific to bezier curves.
- *
- * Bezier curves are defined by a set of four points: two point in the layout
- * (start and end), and two related control points (also start and end). The
- * control points are defined relative to their corresponding layout point. This
- * definition includes an angle between the layout point and the line between
- * the two layout points, as well as a ratio distance from the corresponding
- * layout point. The ratio distance is defined as a fraction between 0 and 1 of
- * the distance between the two layout points. Using this definition allows
- * bezier curves to have a consistant look regardless of the actual positions of
- * the nodes in the layouts.
- *
- * @author Del Myers
- *
- */
-// @tag zest(bug(152530-Bezier(fix))) : users can style bezier curves.
-interface IEntityConnectionStyleBezierExtension {
-
- /**
- * Gets the angle between the start point, and the line between the start
- * and end, which will define the position of the start control point. If
- * the start angle, and the end angle are the same sign, the two control
- * points are guaranteed to be on the same side of the line.
- *
- * @param source
- * the source node to base on.
- * @param dest
- * the destination node to base on.
- * @return the start angle or <code>Double.NaN</code> for defaults.
- */
- double getStartAngle(Object source, Object dest);
-
- /**
- * Gets the angle between the end point, and the line between the start and
- * end, which will define the position of the end control point. If the
- * start angle, and the end angle are the same sign, the two control points
- * are guaranteed to be on the same side of the line.
- *
- * @param source
- * the source node to base on.
- * @param dest
- * the destination node to base on.
- * @return the end angle or <code>Double.NaN</code> for defaults.
- */
- double getEndAngle(Object source, Object dest);
-
- /**
- * Gets the distance between the start point and the start control point, as
- * a fraction of the distance between the start point and end point.
- *
- * @param source
- * the source node to base on.
- * @param dest
- * the destination node to base on.
- * @return the start distance or <code>Double.NaN</code> for defaults.
- */
- double getStartDistance(Object source, Object dest);
-
- /**
- * Gets the distance between the end point and the end control point, as a
- * fraction of the distance between the start point and end point.
- *
- * @param source
- * the source node to base on.
- * @param dest
- * the destination node to base on.
- * @return the end distance or <code>Double.NaN</code> for defaults.
- */
- double getEndDistance(Object source, Object dest);
-}
diff --git a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/IEntityConnectionStyleProvider.java b/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/IEntityConnectionStyleProvider.java
deleted file mode 100644
index a418930..0000000
--- a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/IEntityConnectionStyleProvider.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*******************************************************************************
- * Copyright 2005-2010, 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.zest.core.viewers;
-
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.ui.services.IDisposable;
-
-/**
- * An extension for label providers which allows users to set styles for
- * connections that are based on entity end points.
- *
- * @author Del Myers
- *
- */
-// @tag bug(151327-Styles) : fix
-public interface IEntityConnectionStyleProvider extends IDisposable {
-
- /**
- * Returns the style flags for this connection. Valid flags are those that
- * begin with CONNECTION in @see org.eclipse.zest.core.ZestStyles. Check
- * ZestStyles for legal combinations.
- *
- * @param src
- * the source entity.
- * @param dest
- * the destination entity.
- * @return the style flags for this connection.
- * @see org.eclipse.zest.core.widgets.ZestStyles
- */
- public int getConnectionStyle(Object src, Object dest);
-
- /**
- * Returns the color for the connection. Null for default.
- *
- * @param src
- * the source entity. Any resources created by this class must be
- * disposed by this class.
- * @param dest
- * the destination entity.
- * @return the color.
- * @see #dispose()
- */
- public Color getColor(Object src, Object dest);
-
- /**
- * Returns the highlighted color for this connection. Null for default.
- *
- * @param src
- * the source entity. Any resources created by this class must be
- * disposed by this class.
- * @param dest
- * the destination entity.
- * @return the highlighted color. Null for default.
- * @see #dispose()
- */
- public Color getHighlightColor(Object src, Object dest);
-
- /**
- * Returns the line width of the connection. -1 for default.
- *
- * @param src
- * the source entity.
- * @param dest
- * the destination entity.
- * @return the line width for the connection. -1 for default.
- */
- public int getLineWidth(Object src, Object dest);
-
- /**
- * Returns the tooltop for this node. If null is returned Zest will simply
- * use the default tooltip.
- *
- * @param entity
- * @return
- */
- public IFigure getTooltip(Object entity);
-}
diff --git a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/IEntityStyleProvider.java b/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/IEntityStyleProvider.java
deleted file mode 100644
index a222b7a..0000000
--- a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/IEntityStyleProvider.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*******************************************************************************
- * Copyright 2005-2010, 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.zest.core.viewers;
-
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.ui.services.IDisposable;
-
-/**
- * An extension to Label providers for graphs. Gets specific details about the
- * style of an entity before it is created. This style provider offers:
- *
- * -Background and forground colours -Hilighted and unhighlighted colours
- * (colours defined by selections). -Border color. -Highlighted and
- * unhighlighted colours for borders. -Border width -Font for text inside the
- * entity.
- *
- * Any method may return null if the Zest defaults are preferred.
- *
- * NOTE: It is up to the implementors of this interface to dispose of any Colors
- * or Fonts that are created by this class. The dispose() method will be called
- * at the end of the entity's life-cycle so that this class may dispose of its
- * resources.
- *
- * @author Del Myers
- * @see org.eclipse.jface.viewers.IColorProvider
- * @tag bug(151327-Styles) : created to solve this bug
- */
-public interface IEntityStyleProvider extends IDisposable {
-
- /**
- * Returns the forground colour of this entity. May return null for
- * defaults. Any resources created by this class must be disposed by this
- * class.
- *
- * @param entity
- * the entity to be styled.
- * @return the forground colour of this entity.
- * @see #dispose()
- */
- public Color getNodeHighlightColor(Object entity);
-
- /**
- * Returns the background colour for this entity. May return null for
- * defaults. Any resources created by this class must be disposed by this
- * class.
- *
- * @param entity
- * the entity to be styled.
- * @return the background colour for this entity.
- * @see #dispose()
- */
- public Color getBorderColor(Object entity);
-
- /**
- * Returns the border highlight colour for this entity. May return null for
- * defaults. Any resources created by this class must be disposed by this
- * class.
- *
- * @param entity
- * the entity to be styled.
- * @return the border highlight colour for this entity.
- * @see #dispose()
- */
- public Color getBorderHighlightColor(Object entity);
-
- /**
- * Returns the border width for this entity. May return -1 for defaults.
- *
- * @param entity
- * the entity to be styled.
- * @return the border width, or -1 for defaults.
- */
- public int getBorderWidth(Object entity);
-
- /**
- * Returns true iff the adjacent entities should be highlighted when this
- * node is selected. Zest's default action is true.
- *
- * @return true iff the adjacent entities should be highlighted when this
- * node is selected.
- */
- // @tag ADJACENT : Removed highlight adjacent
- // public boolean highlightAdjacentEntities(Object entity);
- /**
- * Returns the color that adjacent entities will be drawn when this entity
- * is selected. Will be ignored if HighlightAdjacentEntities() returns
- * false. May return null for defaults. Any resources created by this class
- * must be disposed by this class.
- *
- * @param entity
- * the entity to be styled.
- * @return the color for adjacent entities.
- * @see #highlightAdjacentEntities(Object entity)
- * @see #dispose()
- */
- // @tag ADJACENT : Removed highlight adjacent
- // public Color getAdjacentEntityHighlightColor(Object entity);
- /**
- * Returns the colour that this node should be coloured. This will be
- * ignored if getNodeColour returns null. Any resources created by this
- * class must be diposed by this class.
- *
- * @param entity
- * The entity to be styled
- * @return The colour for the node
- * @see #dispose()
- */
- public Color getBackgroundColour(Object entity);
-
- public Color getForegroundColour(Object entity);
-
- /**
- * Returns the tooltop for this node. If null is returned Zest will simply
- * use the default tooltip.
- *
- * @param entity
- * @return
- */
- public IFigure getTooltip(Object entity);
-
- public boolean fisheyeNode(Object entity);
-
-}
diff --git a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/IFigureProvider.java b/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/IFigureProvider.java
deleted file mode 100644
index 49af9c9..0000000
--- a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/IFigureProvider.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009-2010 EclipseSource and others. 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:
- * EclipseSource - initial API and implementation
- ******************************************************************************/
-package org.eclipse.zest.core.viewers;
-
-import org.eclipse.draw2d.IFigure;
-
-/**
- * Allows a user to create a figure for an element in graph model. To use this
- * interface, it should be implemented and passed to
- * {@link GraphViewer#setLabelProvider()}
- */
-public interface IFigureProvider {
-
- /**
- * Creates a custom figure for a graph model element
- */
- public IFigure getFigure(Object element);
-}
diff --git a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/IGraphContentProvider.java b/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/IGraphContentProvider.java
deleted file mode 100644
index 7fda779..0000000
--- a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/IGraphContentProvider.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
- * Copyright 2005-2010, 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.zest.core.viewers;
-
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-
-/**
- * A graph content provider.
- *
- * @author Ian Bull
- */
-public interface IGraphContentProvider extends IStructuredContentProvider {
-
- /**
- * Gets the source Object for the given relationship. Note, at least one of
- * the source or destination must not be null. If both are null, then
- * nothing can be displayed in the graph (a relationship cannot exist
- * without nodes to be connected to). However, if one of getSource() or
- * getDestination() returns null, then the resulting graph will contain an
- * unconnected node for the non-null object returned from the other method.
- *
- * @param rel
- * the relationship.
- * @return the source, or null for an unconnected destination.
- */
- public Object getSource(Object rel);
-
- /**
- * Gets the target Object for the given relationship. Note, at least one of
- * the source or destination must not be null. If both are null, then
- * nothing can be displayed in the graph (a relationship cannot exist
- * without nodes to be connected to). However, if one of getSource() or
- * getDestination() returns null, then the resulting graph will contain an
- * unconnected node for the non-null object returned from the other method.
- *
- * @param rel
- * the relationship.
- * @return the destination, or null for an unconnected source.
- */
- public Object getDestination(Object rel);
-
- /**
- * Returns all the relationships in the graph for the given input.
- *
- * @input the input model object.
- * @return all the relationships in the graph for the given input.
- */
- public Object[] getElements(Object input);
-
-}
diff --git a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/IGraphEntityContentProvider.java b/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/IGraphEntityContentProvider.java
deleted file mode 100644
index 5d5e57b..0000000
--- a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/IGraphEntityContentProvider.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*******************************************************************************
- * Copyright 2005-2010, 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.zest.core.viewers;
-
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-
-/**
- *
- * @author Ian Bull
- *
- */
-public interface IGraphEntityContentProvider extends IStructuredContentProvider {
-
- public Object[] getElements(Object inputElement);
-
- /**
- * Gets the elements this object is connected to
- *
- * @param entity
- * @return
- */
- public Object[] getConnectedTo(Object entity);
-
-}
diff --git a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/IGraphEntityRelationshipContentProvider.java b/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/IGraphEntityRelationshipContentProvider.java
deleted file mode 100644
index 5ed24a3..0000000
--- a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/IGraphEntityRelationshipContentProvider.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright 2005-2010, 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.zest.core.viewers;
-
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-
-/**
- * A content provider that is node-relationship centric. Call-backs return model
- * nodes to the user, and ask for relationships. Both nodes and relationships
- * are represented by the user's model.
- *
- * @author Del Myers
- *
- */
-// @tag bug.154580-Content.fix : new content provider that returns relationships
-// for the given source and destination.
-public interface IGraphEntityRelationshipContentProvider extends
- IStructuredContentProvider {
- /**
- * Gets the relationships between the given source and destination nodes.
- *
- * @param source
- * the source node.
- * @param dest
- * the destination node.
- * @return objects represtenting the different relationships between the
- * nodes.
- */
- public Object[] getRelationships(Object source, Object dest);
-
-}
diff --git a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/INestedContentProvider.java b/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/INestedContentProvider.java
deleted file mode 100644
index a6a82cc..0000000
--- a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/INestedContentProvider.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009-2010 EclipseSource and others. 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:
- * EclipseSource - initial API and implementation
- ******************************************************************************/
-package org.eclipse.zest.core.viewers;
-
-/**
- * A content provider for nested graphs. Any entity based content provider
- * (IGraphEntityContentProvider or IGraphEntityRelationshipContentProvider) can
- * also implement this interface. Any node that "hasChildren" will be rendered
- * as a container.
- *
- * Note: Containers cannot contain other containers.
- *
- * @author irbull
- */
-public interface INestedContentProvider {
-
- /**
- * Does the current node have children? If so, it will be rendered as a
- * container.
- *
- * @param element
- * The current node
- * @return True if it has children, false otherwise
- */
- public boolean hasChildren(Object element);
-
- /**
- * Gets the children of this node. This method will not be called if
- * hasChildren returns false.
- *
- * @param element
- * The current node
- * @return The list of children for this node.
- */
- public Object[] getChildren(Object element);
-}
diff --git a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/ISelfStyleProvider.java b/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/ISelfStyleProvider.java
deleted file mode 100644
index 4039023..0000000
--- a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/ISelfStyleProvider.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009-2010 EclipseSource and others. 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: EclipseSource - initial API and implementation
- ******************************************************************************/
-package org.eclipse.zest.core.viewers;
-
-import org.eclipse.zest.core.widgets.GraphConnection;
-import org.eclipse.zest.core.widgets.GraphNode;
-
-/**
- * Provides a mechanism to style nodes and edges when they are created.
- *
- * After each node or edge is created, the self styling method will be called
- * with both the element and the widget.
- */
-public interface ISelfStyleProvider {
-
- /**
- * Styles a connection
- */
- public void selfStyleConnection(Object element, GraphConnection connection);
-
- /**
- * Styles a node
- */
- public void selfStyleNode(Object element, GraphNode node);
-
-}
diff --git a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/IZoomableWorkbenchPart.java b/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/IZoomableWorkbenchPart.java
deleted file mode 100644
index f977988..0000000
--- a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/IZoomableWorkbenchPart.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright 2005-2010, 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.zest.core.viewers;
-
-/**
- * An interface that can be added to IWorkbenchParts based on ZEST views so that
- * zooming is supported.
- *
- * @author Del Myers
- *
- */
-// @tag bug.156286-Zooming.fix : experimental
-public interface IZoomableWorkbenchPart {
- /**
- * Returns the viewer that is zoomable.
- *
- * @return the viewer that is zoomable.
- */
- AbstractZoomableViewer getZoomableViewer();
-}
diff --git a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/ZoomContributionViewItem.java b/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/ZoomContributionViewItem.java
deleted file mode 100644
index 31223a2..0000000
--- a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/ZoomContributionViewItem.java
+++ /dev/null
@@ -1,247 +0,0 @@
-/*******************************************************************************
- * Copyright 2005-2010, 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.zest.core.viewers;
-
-import org.eclipse.jface.action.ContributionItem;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.MenuAdapter;
-import org.eclipse.swt.events.MenuEvent;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.CoolBar;
-import org.eclipse.swt.widgets.CoolItem;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.swt.widgets.ToolItem;
-
-/**
- * A contribution item that adds a combo to a toolbar or coolbar, or a list of
- * zooms to a menu. Can only be used for one toolbar, coolbar, or menu.
- *
- * In order to use this item, let your workbench part implement
- * IZoomableWorkbenchPart. If the workbench part then supplies a viewer that is
- * zoomable, the combo or menu created by this item will be enabled.
- *
- * @author Del Myers
- *
- */
-// @tag zest.bug.156286-Zooming.fix : create a contribution item that can set
-// zooming on Zest views.
-public class ZoomContributionViewItem extends ContributionItem implements
- ZoomListener {
- /**
- * Zooms to fit the width.
- */
- public static final String FIT_WIDTH = ZoomManager.FIT_WIDTH;
- /**
- * Zooms to fit the height.
- */
- public static final String FIT_HEIGHT = ZoomManager.FIT_HEIGHT;
- /**
- * Zooms to fit entirely within the viewport.
- */
- public static final String FIT_ALL = ZoomManager.FIT_ALL;
-
- private String[] zoomLevels;
- private ZoomManager zoomManager;
- private Combo combo;
- private Menu fMenu;
- private MenuAdapter menuAdapter = new MenuAdapter() {
- public void menuShown(MenuEvent e) {
- refresh(true);
- }
- };
-
- /**
- * Creates a new contribution item that will work on the given part
- * service.initialZooms will be used to populate the combo or the menu.
- * Valid values for initialZooms are percentage numbers (e.g., "100%"), or
- * FIT_WIDTH, FIT_HEIGHT, FIT_ALL.
- *
- * @param partService
- * service used to see whether the view is zoomable.
- */
- public ZoomContributionViewItem(IZoomableWorkbenchPart part) {
- zoomManager = part.getZoomableViewer().getZoomManager();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.jface.action.ContributionItem#fill(org.eclipse.swt.widgets
- * .Menu, int)
- */
- public void fill(Menu menu, int index) {
- if (this.fMenu == null || this.fMenu != menu) {
- if (this.fMenu != null) {
- this.fMenu.removeMenuListener(menuAdapter);
- this.fMenu = null;
- }
- this.fMenu = menu;
- menu.addMenuListener(menuAdapter);
- }
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.jface.action.ContributionItem#fill(org.eclipse.swt.widgets
- * .CoolBar, int)
- */
- public void fill(CoolBar parent, int index) {
- CoolItem item = new CoolItem(parent, SWT.DROP_DOWN);
- Combo combo = createCombo(parent);
- item.setControl(combo);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.jface.action.ContributionItem#fill(org.eclipse.swt.widgets
- * .ToolBar, int)
- */
- public void fill(ToolBar parent, int index) {
- ToolItem item = new ToolItem(parent, SWT.DROP_DOWN);
- Combo combo = createCombo(parent);
- item.setControl(combo);
- }
-
- private Combo createCombo(Composite parent) {
- this.combo = new Combo(parent, SWT.DROP_DOWN);
- this.combo.setItems(zoomLevels);
- this.combo.addSelectionListener(new SelectionAdapter() {
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse
- * .swt.events.SelectionEvent)
- */
- public void widgetSelected(SelectionEvent e) {
- int selection = combo.getSelectionIndex();
- if (selection > 0) {
- doZoom(combo.getItem(selection));
- } else {
- doZoom(combo.getItem(0));
- }
- }
- });
- return this.combo;
- }
-
- private void doZoom(String zoom) {
- if (zoomManager != null) {
- zoomManager.setZoomAsText(zoom);
- }
- }
-
- private void refresh(boolean rebuild) {
- //
- if (combo != null && !combo.isDisposed()) {
- refreshCombo(rebuild);
- } else if (fMenu != null && !fMenu.isDisposed()) {
- refreshMenu(rebuild);
- }
- }
-
- /**
- * @param rebuild
- */
- private void refreshMenu(boolean rebuild) {
- fMenu.setEnabled(false);
- if (zoomManager == null) {
- return;
- }
- if (rebuild) {
- zoomLevels = zoomManager.getZoomLevelsAsText();
- MenuItem[] oldItems = fMenu.getItems();
- for (int i = 0; i < oldItems.length; i++) {
- if (oldItems[i].getData() == this) {
- oldItems[i].dispose();
- }
- }
- for (int i = 0; i < zoomLevels.length; i++) {
- MenuItem item = new MenuItem(fMenu, SWT.RADIO);
- item.setText(zoomLevels[i]);
- item.setData(this);
- item.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- MenuItem source = (MenuItem) e.getSource();
- doZoom(source.getText());
- }
- });
- }
- }
- String zoom = zoomManager.getZoomAsText();
- MenuItem[] items = fMenu.getItems();
- for (int i = 0; i < items.length; i++) {
- MenuItem item = items[i];
- if (item.getData() == this) {
- item.setSelection(false);
- if (zoom.equalsIgnoreCase(item.getText())) {
- item.setSelection(true);
- }
- }
- }
- fMenu.setEnabled(true);
- }
-
- /**
- * @param rebuild
- */
- private void refreshCombo(boolean rebuild) {
- combo.setEnabled(false);
- if (zoomManager == null) {
- return;
- }
- if (rebuild) {
- combo.setItems(zoomManager.getZoomLevelsAsText());
- }
- String zoom = zoomManager.getZoomAsText();
- int index = combo.indexOf(zoom);
- if (index > 0) {
- combo.select(index);
- }
- combo.setEnabled(true);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.gef.editparts.ZoomListener#zoomChanged(double)
- */
- public void zoomChanged(double z) {
- refresh(false);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jface.action.ContributionItem#dispose()
- */
-
- public void dispose() {
- if (combo != null) {
- combo = null;
- }
- if (fMenu != null) {
- fMenu = null;
- }
- // @tag zest.bug.159667-ZoomDispose : make sure that we no longer listen
- // to the part service.
- super.dispose();
- }
-}
diff --git a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/ZoomListener.java b/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/ZoomListener.java
deleted file mode 100644
index ea86ef5..0000000
--- a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/ZoomListener.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2010 IBM Corporation and others. 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: IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.zest.core.viewers;
-
-/**
- * Listens to zoom level changes.
- *
- * @author Eric Bordeau
- * @since 2.0
- */
-public interface ZoomListener {
-
- /**
- * Called whenever the ZoomManager's zoom level changes.
- *
- * @param zoom
- * the new zoom level.
- */
- void zoomChanged(double zoom);
-
-}
diff --git a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/ZoomManager.java b/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/ZoomManager.java
deleted file mode 100644
index cf97e90..0000000
--- a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/ZoomManager.java
+++ /dev/null
@@ -1,611 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2010 IBM Corporation and others. 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: IBM Corporation - initial API and implementation
- ******************************************************************************/
-package org.eclipse.zest.core.viewers;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.draw2d.FreeformFigure;
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.ScalableFigure;
-import org.eclipse.draw2d.ScalableFreeformLayeredPane;
-import org.eclipse.draw2d.Viewport;
-import org.eclipse.draw2d.geometry.Dimension;
-import org.eclipse.draw2d.geometry.Point;
-import org.eclipse.draw2d.geometry.Rectangle;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.zest.core.viewers.internal.SharedMessages;
-
-/**
- * Manage the primary zoom function in a graphical viewer. This class is used by
- * the zoom contribution items, including:
- * <UL>
- * <LI>{@link org.eclipse.gef.ui.actions.ZoomInAction}
- * <LI>{@link org.eclipse.gef.ui.actions.ZoomOutAction}
- * <LI>and {@link org.eclipse.gef.ui.actions.ZoomComboContributionItem}
- * </UL>
- * <P>
- * A ZoomManager controls how zoom in and zoom out are performed. It also
- * determines the list of choices the user sees in the drop-down Combo on the
- * toolbar. The zoom manager controls a <code>ScalableFigure</code>, which
- * performs the actual zoom, and also a <code>Viewport</code>. The viewport is
- * needed so that the scrolled location is preserved as the zoom level changes.
- * <p>
- * <b>NOTE:</b> For the settings of {@link #FIT_ALL Page}, {@link #FIT_WIDTH
- * Width} and {@link #FIT_HEIGHT Height} to work properly, the given
- * <code>Viewport</code> should have its scrollbars always visible or never
- * visible. Otherwise, these settings may cause undesired effects.
- *
- * @author Dan Lee
- * @author Eric Bordeau
- * @since 2.0
- */
-public class ZoomManager {
-
- /** Style bit meaning don't animate any zooms */
- public static final int ANIMATE_NEVER = 0;
- /** Style bit meaning animate during {@link #zoomIn()} and {@link #zoomOut()} */
- public static final int ANIMATE_ZOOM_IN_OUT = 1;
-
- private List listeners = new ArrayList();
-
- private double multiplier = 1.0;
- private ScalableFigure pane;
- private Viewport viewport;
- private double zoom = 1.0;
- // private int zoomAnimationStyle = ANIMATE_NEVER;
- private String currentZoomContant = null;
- private double[] zoomLevels = { .5, .75, 1.0, 1.5, 2.0, 2.5, 3, 4 };
-
- /**
- * String constant for the "Height" zoom level. At this zoom level, the zoom
- * manager will adopt a zoom setting such that the entire height of the
- * diagram will be visible on the screen.
- */
- public static final String FIT_HEIGHT = SharedMessages.FitHeightAction_Label;
- /**
- * String constant for the "Width" zoom level. At this zoom level, the zoom
- * manager will adopt a zoom setting such that the entire width of the
- * diagram will be visible on the screen.
- */
- public static final String FIT_WIDTH = SharedMessages.FitWidthAction_Label;
- /**
- * String constant for the "Page" zoom level. At this zoom level, the zoom
- * manager will adopt a zoom setting such that the entire diagram will be
- * visible on the screen.
- */
- public static final String FIT_ALL = SharedMessages.FitAllAction_Label;
- private List zoomLevelContributions = Collections.EMPTY_LIST;
-
- //DecimalFormat format = new DecimalFormat("####%"); //$NON-NLS-1$
-
- /**
- * Creates a new ZoomManager.
- *
- * @param pane
- * The ScalableFigure associated with this ZoomManager
- * @param viewport
- * The Viewport assoicated with this ZoomManager
- */
- public ZoomManager(ScalableFigure pane, Viewport viewport) {
- this.pane = pane;
- this.viewport = viewport;
- zoomLevelContributions = new ArrayList();
- zoomLevelContributions.add(FIT_ALL);
- }
-
- /**
- * @deprecated Use {@link #ZoomManager(ScalableFigure, Viewport)} instead.
- * Creates a new ZoomManager
- * @param pane
- * The ScalableFreeformLayeredPane associated with this
- * ZoomManager
- * @param viewport
- * The Viewport assoicated with this viewport
- */
- public ZoomManager(ScalableFreeformLayeredPane pane, Viewport viewport) {
- this.pane = pane;
- this.viewport = viewport;
- }
-
- /**
- * Adds the given ZoomListener to this ZoomManager's list of listeners.
- *
- * @param listener
- * the ZoomListener to be added
- */
- public void addZoomListener(ZoomListener listener) {
- listeners.add(listener);
- }
-
- /**
- * returns <code>true</code> if the zoommanager can perform
- * <code>zoomIn()</code>.
- *
- * @return boolean true if zoomIn can be called
- */
- public boolean canZoomIn() {
- return getZoom() < getMaxZoom();
- }
-
- /**
- * returns <code>true</code> if the zoommanager can perform
- * <code>zoomOut()</code>.
- *
- * @return boolean true if zoomOut can be called
- */
- public boolean canZoomOut() {
- return getZoom() > getMinZoom();
- }
-
- /**
- * Notifies listeners that the zoom level has changed.
- */
- protected void fireZoomChanged() {
- Iterator iter = listeners.iterator();
- while (iter.hasNext()) {
- ((ZoomListener) iter.next()).zoomChanged(zoom);
- }
- }
-
- private double getFitXZoomLevel(int which) {
- IFigure fig = getScalableFigure();
-
- Dimension available = getViewport().getClientArea().getSize();
- Dimension desired;
- if (fig instanceof FreeformFigure) {
- desired = ((FreeformFigure) fig).getFreeformExtent().getCopy()
- .union(0, 0).getSize();
- } else {
- desired = fig.getPreferredSize().getCopy();
- }
-
- desired.width -= fig.getInsets().getWidth();
- desired.height -= fig.getInsets().getHeight();
-
- while (fig != getViewport()) {
- available.width -= fig.getInsets().getWidth();
- available.height -= fig.getInsets().getHeight();
- fig = fig.getParent();
- }
-
- double scaleX = Math.min(available.width * zoom / desired.width,
- getMaxZoom());
- double scaleY = Math.min(available.height * zoom / desired.height,
- getMaxZoom());
- if (which == 0) {
- return scaleX;
- }
- if (which == 1) {
- return scaleY;
- }
- return Math.min(scaleX, scaleY);
- }
-
- /**
- * Calculates and returns the zoom percent required so that the entire
- * height of the {@link #getScalableFigure() scalable figure} is visible on
- * the screen. This is the zoom level associated with {@link #FIT_HEIGHT}.
- *
- * @return zoom setting required to fit the scalable figure vertically on
- * the screen
- */
- protected double getFitHeightZoomLevel() {
- return getFitXZoomLevel(1);
- }
-
- /**
- * Calculates and returns the zoom percentage required to fit the entire
- * {@link #getScalableFigure() scalable figure} on the screen. This is the
- * zoom setting associated with {@link #FIT_ALL}. It is the minimum of
- * {@link #getFitHeightZoomLevel()} and {@link #getFitWidthZoomLevel()}.
- *
- * @return zoom setting required to fit the entire scalable figure on the
- * screen
- */
- protected double getFitPageZoomLevel() {
- return getFitXZoomLevel(2);
- }
-
- /**
- * Calculates and returns the zoom percentage required so that the entire
- * width of the {@link #getScalableFigure() scalable figure} is visible on
- * the screen. This is the zoom setting associated with {@link #FIT_WIDTH}.
- *
- * @return zoom setting required to fit the scalable figure horizontally on
- * the screen
- */
- protected double getFitWidthZoomLevel() {
- return getFitXZoomLevel(0);
- }
-
- /**
- * Returns the maxZoom.
- *
- * @return double
- */
- public double getMaxZoom() {
- return getZoomLevels()[getZoomLevels().length - 1];
- }
-
- /**
- * Returns the minZoom.
- *
- * @return double
- */
- public double getMinZoom() {
- return getZoomLevels()[0];
- }
-
- /**
- * Returns the mutltiplier. This value is used to use zoom levels internally
- * that are proportionally different than those displayed to the user. e.g.
- * with a multiplier value of 2.0, the zoom level 1.0 will be displayed as
- * "200%".
- *
- * @return double The multiplier
- */
- public double getUIMultiplier() {
- return multiplier;
- }
-
- /**
- * Returns the zoom level that is one level higher than the current level.
- * If zoom level is at maximum, returns the maximum.
- *
- * @return double The next zoom level
- */
- public double getNextZoomLevel() {
- for (int i = 0; i < zoomLevels.length; i++) {
- if (zoomLevels[i] > zoom) {
- return zoomLevels[i];
- }
- }
- return getMaxZoom();
- }
-
- /**
- * Returns the zoom level that is one level higher than the current level.
- * If zoom level is at maximum, returns the maximum.
- *
- * @return double The previous zoom level
- */
- public double getPreviousZoomLevel() {
- for (int i = 1; i < zoomLevels.length; i++) {
- if (zoomLevels[i] >= zoom) {
- return zoomLevels[i - 1];
- }
- }
- return getMinZoom();
- }
-
- /**
- * Returns the figure which performs the actual zooming.
- *
- * @return the scalable figure
- */
- public ScalableFigure getScalableFigure() {
- return pane;
- }
-
- /**
- * Returns the viewport.
- *
- * @return Viewport
- */
- public Viewport getViewport() {
- return viewport;
- }
-
- /**
- * Returns the current zoom level.
- *
- * @return double the zoom level
- */
- public double getZoom() {
- return zoom;
- }
-
- private String format(double d) {
- return "" + ((int) (d * 100)) + "%";
- }
-
- /**
- * Returns the current zoom level as a percentage formatted String
- *
- * @return String The current zoom level as a String
- */
- public String getZoomAsText() {
- if (currentZoomContant != null) {
- return currentZoomContant;
- }
-
- // String newItem = format.format(zoom * multiplier);
- String newItem = format(zoom * multiplier);
- return newItem;
- }
-
- /**
- * Returns the list of strings that should be appended to the list of
- * numerical zoom levels. These could be things such as Fit Width, Fit Page,
- * etc. May return <code>null</code>.
- *
- * @return the list of contributed zoom levels
- */
- public List getZoomLevelContributions() {
- return zoomLevelContributions;
- }
-
- /**
- * Returns the zoomLevels.
- *
- * @return double[]
- */
- public double[] getZoomLevels() {
- return zoomLevels;
- }
-
- /**
- * Returns the list of zoom levels as Strings in percent notation, plus any
- * additional zoom levels that were contributed using
- * {@link #setZoomLevelContributions(List)}.
- *
- * @return List The list of zoom levels
- */
- public String[] getZoomLevelsAsText() {
- String[] zoomLevelStrings = new String[zoomLevels.length
- + zoomLevelContributions.size()];
-
- if (zoomLevelContributions != null) {
- for (int i = 0; i < zoomLevelContributions.size(); i++) {
- zoomLevelStrings[i] = (String) zoomLevelContributions.get(i);
- }
- }
- for (int i = 0; i < zoomLevels.length; i++) {
- // zoomLevelStrings[i + zoomLevelContributions.size()] =
- // format.format(zoomLevels[i] * multiplier);
- zoomLevelStrings[i + zoomLevelContributions.size()] = format(zoomLevels[i]
- * multiplier);
- }
-
- return zoomLevelStrings;
- }
-
- /**
- * Sets the zoom level to the given value. Min-max range check is not done.
- *
- * @param zoom
- * the new zoom level
- */
- protected void primSetZoom(double zoom) {
- Point p1 = getViewport().getClientArea().getCenter();
- Point p2 = p1.getCopy();
- Point p = getViewport().getViewLocation();
- double prevZoom = this.zoom;
- this.zoom = zoom;
- pane.setScale(zoom);
- fireZoomChanged();
- getViewport().validate();
-
- p2.scale(zoom / prevZoom);
- Dimension dif = p2.getDifference(p1);
- p.x += dif.width;
- p.y += dif.height;
- setViewLocation(p);
- }
-
- /**
- * Removes the given ZoomListener from this ZoomManager's list of listeners.
- *
- * @param listener
- * the ZoomListener to be removed
- */
- public void removeZoomListener(ZoomListener listener) {
- listeners.remove(listener);
- }
-
- /**
- * Sets the UI multiplier. The UI multiplier is applied to all zoom settings
- * when they are presented to the user ({@link #getZoomAsText()}).
- * Similarly, the multiplier is inversely applied when the user specifies a
- * zoom level ({@link #setZoomAsText(String)}).
- * <P>
- * When the UI multiplier is <code>1.0</code>, the User will see the exact
- * zoom level that is being applied. If the value is <code>2.0</code>, then
- * a scale of <code>0.5</code> will be labeled "100%" to the User.
- *
- * @param multiplier
- * The mutltiplier to set
- */
- public void setUIMultiplier(double multiplier) {
- this.multiplier = multiplier;
- }
-
- /**
- * Sets the Viewport's view associated with this ZoomManager to the passed
- * Point
- *
- * @param p
- * The new location for the Viewport's view.
- */
- public void setViewLocation(Point p) {
- viewport.setViewLocation(p.x, p.y);
-
- }
-
- /**
- * Sets the zoom level to the given value. If the zoom is out of the min-max
- * range, it will be ignored.
- *
- * @param zoom
- * the new zoom level
- */
- public void setZoom(double zoom) {
- currentZoomContant = null;
- zoom = Math.min(getMaxZoom(), zoom);
- zoom = Math.max(getMinZoom(), zoom);
- if (this.zoom != zoom) {
- primSetZoom(zoom);
- }
- }
-
- /**
- * Sets which zoom methods get animated.
- *
- * @param style
- * the style bits determining the zoom methods to be animated.
- */
- public void setZoomAnimationStyle(int style) {
- // zoomAnimationStyle = style;
- }
-
- /**
- * Sets zoom to the passed string. The string must be composed of numeric
- * characters only with the exception of a decimal point and a '%' as the
- * last character. If the zoom level contribution list has been set, this
- * method should be overridden to provide the appropriate zoom
- * implementation for the new zoom levels.
- *
- * @param zoomString
- * The new zoom level
- */
- public void setZoomAsText(String zoomString) {
- currentZoomContant = null;
- if (zoomString.equalsIgnoreCase(FIT_HEIGHT)) {
- currentZoomContant = FIT_HEIGHT;
- primSetZoom(getFitHeightZoomLevel());
- viewport.getUpdateManager().performUpdate();
- viewport.setViewLocation(viewport.getHorizontalRangeModel()
- .getValue(), viewport.getVerticalRangeModel().getMinimum());
- } else if (zoomString.equalsIgnoreCase(FIT_ALL)) {
- currentZoomContant = FIT_ALL;
- primSetZoom(getFitPageZoomLevel());
- viewport.getUpdateManager().performUpdate();
- viewport.setViewLocation(viewport.getHorizontalRangeModel()
- .getMinimum(), viewport.getVerticalRangeModel()
- .getMinimum());
- } else if (zoomString.equalsIgnoreCase(FIT_WIDTH)) {
- currentZoomContant = FIT_WIDTH;
- primSetZoom(getFitWidthZoomLevel());
- viewport.getUpdateManager().performUpdate();
- viewport.setViewLocation(viewport.getHorizontalRangeModel()
- .getMinimum(), viewport.getVerticalRangeModel().getValue());
- } else {
- try {
- // Trim off the '%'
- if (zoomString.charAt(zoomString.length() - 1) == '%') {
- zoomString = zoomString.substring(0,
- zoomString.length() - 1);
- }
- double newZoom = Double.parseDouble(zoomString) / 100;
- setZoom(newZoom / multiplier);
- } catch (Exception e) {
- Display.getCurrent().beep();
- }
- }
- }
-
- /**
- * Sets the list of zoom level contributions (as strings). If you contribute
- * something <b>other than</b> {@link #FIT_HEIGHT}, {@link #FIT_WIDTH} and
- * {@link #FIT_ALL} you must subclass this class and override this method to
- * implement your contributed zoom function.
- *
- * @param contributions
- * the list of contributed zoom levels
- */
- public void setZoomLevelContributions(List contributions) {
- zoomLevelContributions = contributions;
- }
-
- /**
- * Sets the zoomLevels.
- *
- * @param zoomLevels
- * The zoomLevels to set
- */
- public void setZoomLevels(double[] zoomLevels) {
- this.zoomLevels = zoomLevels;
- }
-
- /**
- * Sets the zoom level to be one level higher
- */
- public void zoomIn() {
- setZoom(getNextZoomLevel());
- }
-
- /**
- * Currently does nothing.
- *
- * @param rect
- * a rectangle
- */
- public void zoomTo(Rectangle rect) {
- }
-
- // private void performAnimatedZoom(Rectangle rect, boolean zoomIn, int
- // iterationCount) {
- // double finalRatio;
- // double zoomIncrement;
- //
- // if (zoomIn) {
- // finalRatio = zoom / getNextZoomLevel();
- // zoomIncrement = (getNextZoomLevel() - zoom) / iterationCount;
- // } else {
- // finalRatio = zoom / getPreviousZoomLevel();
- // zoomIncrement = (getPreviousZoomLevel() - zoom) / iterationCount;
- // }
- //
- // getScalableFigure().translateToRelative(rect);
- // Point originalViewLocation = getViewport().getViewLocation();
- // Point finalViewLocation = calculateViewLocation(rect, finalRatio);
- //
- // double xIncrement =
- // (double) (finalViewLocation.x - originalViewLocation.x) / iterationCount;
- // double yIncrement =
- // (double) (finalViewLocation.y - originalViewLocation.y) / iterationCount;
- //
- // double originalZoom = zoom;
- // Point currentViewLocation = new Point();
- // for (int i = 1; i < iterationCount; i++) {
- // currentViewLocation.x = (int)(originalViewLocation.x + (xIncrement * i));
- // currentViewLocation.y = (int)(originalViewLocation.y + (yIncrement * i));
- // setZoom(originalZoom + zoomIncrement * i);
- // getViewport().validate();
- // setViewLocation(currentViewLocation);
- // getViewport().getUpdateManager().performUpdate();
- // }
- //
- // if (zoomIn)
- // setZoom(getNextZoomLevel());
- // else
- // setZoom(getPreviousZoomLevel());
- //
- // getViewport().validate();
- // setViewLocation(finalViewLocation);
- // }
- //
- // private Point calculateViewLocation(Rectangle zoomRect, double ratio) {
- // Point viewLocation = new Point();
- // viewLocation.x = (int)(zoomRect.x / ratio);
- // viewLocation.y = (int)(zoomRect.y / ratio);
- // return viewLocation;
- // }
-
- /**
- * Sets the zoom level to be one level lower
- */
- public void zoomOut() {
- setZoom(getPreviousZoomLevel());
- }
-
-}
diff --git a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/internal/AbstractStylingModelFactory.java b/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/internal/AbstractStylingModelFactory.java
deleted file mode 100644
index a7e2d3c..0000000
--- a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/internal/AbstractStylingModelFactory.java
+++ /dev/null
@@ -1,430 +0,0 @@
-/*******************************************************************************
- * Copyright 2005, 2010, 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
- * Mateusz Matela <mateusz.matela@gmail.com> - Adapt Zest to changes in layout - https://bugs.eclipse.org/bugs/show_bug.cgi?id=283179
- ******************************************************************************/
-package org.eclipse.zest.core.viewers.internal;
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.jface.viewers.IBaseLabelProvider;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.StructuredViewer;
-import org.eclipse.jface.viewers.ViewerFilter;
-import org.eclipse.swt.SWT;
-import org.eclipse.zest.core.viewers.AbstractStructuredGraphViewer;
-import org.eclipse.zest.core.viewers.IFigureProvider;
-import org.eclipse.zest.core.viewers.INestedContentProvider;
-import org.eclipse.zest.core.widgets.Graph;
-import org.eclipse.zest.core.widgets.GraphConnection;
-import org.eclipse.zest.core.widgets.GraphContainer;
-import org.eclipse.zest.core.widgets.GraphItem;
-import org.eclipse.zest.core.widgets.GraphNode;
-
-/**
- * Base class that can be used for model factories. Offers facilities to style
- * the items that have been created by the factory.
- *
- * @author Del Myers
- */
-// @tag zest.bug.160367-Refreshing.fix : update the factory to use the
-// IStylingGraphModelFactory
-public abstract class AbstractStylingModelFactory implements
- IStylingGraphModelFactory {
- private AbstractStructuredGraphViewer viewer;
- private int connectionStyle;
- private int nodeStyle;
-
- /**
- *
- */
- public AbstractStylingModelFactory(AbstractStructuredGraphViewer viewer) {
- this.viewer = viewer;
- this.connectionStyle = SWT.NONE;
- this.nodeStyle = SWT.NONE;
- }
-
- public void styleConnection(GraphConnection conn) {
- // recount the source and target connections on the node.
- // this isn't a great way to do it, because it results in
- // an n^2 algorithm. But, if anyone can figure out a better way
- // go ahead and try it.
- GraphNode source = conn.getSource();
- GraphNode dest = conn.getDestination();
- LinkedList rightList = getConnectionList(source, dest);
-
- LinkedList leftList = null;
-
- if (dest != source) {
- leftList = getConnectionList(dest, source);
- }
-
- // adjust the arcs going from source to destination
- adjustCurves(rightList);
- // adjust the arcs going from destination to source
- if (leftList != null) {
- adjustCurves(leftList);
- }
- }
-
- /**
- * Takes a list of IGraphModelConnections and adjusts the curve depths and
- * the bezier curves based on the number of curves in the list.
- *
- * @param rightList
- */
- protected void adjustCurves(List connections) {
- // @tag TODO curves : add back this code to adjust the curves
- // int scale = 3;
- // for (int i = 0; i < connections.size(); i++) {
- // GraphConnection conn = (GraphConnection) connections.get(i);
- // if (conn.getSource() == conn.getDestination()) {
- // scale = 5;
- // }
- // // even if the connection isn't curved in the style, the edit part
- // // may decide that it should be curved if source and dest are equal.
- // // @tag drawing(arcs) : check here if arcs are too close when being
- // // drawn. Adjust the constant.
- // int lineWidth = conn.getLineWidth();
- // conn.setCurveDepth((i + 1) * (scale + lineWidth));
- //
- // // @tag zest(bug(152530-Bezier(fix))) : set the angles, etc based on
- // // the count.
- // // limit the angle to 90 degrees.
- // conn.setStartAngle(90.0 - 85.0 / Math.pow(i, 1.0 / 9.0));
- // conn.setEndAngle(85.0 / Math.pow(i, 1.0 / 9.0) - 90.0);
- // // limit the length to 1
- // conn.setStartLength(.75 - .25 / (Math.sqrt(i)));
- // conn.setEndLength(.75 - .25 / (Math.sqrt(i)));
- // }
- }
-
- /**
- * @param source
- * @param dest
- * @return
- */
- private LinkedList getConnectionList(GraphNode source, GraphNode dest) {
- LinkedList list = new LinkedList();
- Iterator i = source.getSourceConnections().iterator();
- while (i.hasNext()) {
- GraphConnection c = (GraphConnection) i.next();
- if (c.getDestination() == dest) {
- list.add(c);
- }
- }
- return list;
- }
-
- public void styleItem(GraphItem item) {
- GraphItemStyler.styleItem(item, getLabelProvider());
- if (item instanceof GraphConnection) {
- styleConnection((GraphConnection) item);
- }
- }
-
- public StructuredViewer getViewer() {
- return viewer;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.zest.core.internal.graphmodel.IStylingGraphModelFactory#
- * getLabelProvider()
- */
- public IBaseLabelProvider getLabelProvider() {
- return viewer.getLabelProvider();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.zest.core.internal.graphmodel.IStylingGraphModelFactory#
- * getContentProvider()
- */
- public IStructuredContentProvider getContentProvider() {
- return (IStructuredContentProvider) viewer.getContentProvider();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.zest.core.internal.graphmodel.IStylingGraphModelFactory#
- * createConnection(org.eclipse.zest.core.internal.graphmodel.GraphModel,
- * java.lang.Object, java.lang.Object, java.lang.Object)
- */
- public GraphConnection createConnection(Graph graph, Object element,
- Object source, Object dest) {
- if (source == null || dest == null) {
- return null;
- }
- GraphConnection oldConnection = viewer.getGraphModelConnection(element);
- GraphNode sn = viewer.getGraphModelNode(source);
- GraphNode dn = viewer.getGraphModelNode(dest);
- if (oldConnection != null) {
- if (sn != oldConnection.getSource()
- || dn != oldConnection.getDestination()) {
- viewer.removeGraphModelConnection(oldConnection);
- } else {
- styleItem(oldConnection);
- return oldConnection;
- }
- }
- if (sn == null) {
- sn = createNode(graph, source);
- }
- if (dn == null) {
- dn = createNode(graph, dest);
- }
- GraphConnection c = viewer.addGraphModelConnection(element, sn, dn);
- styleItem(c);
- return c;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.zest.core.internal.graphmodel.IStylingGraphModelFactory#
- * createNode(org.eclipse.zest.core.internal.graphmodel.GraphModel,
- * java.lang.Object)
- */
- public GraphNode createNode(Graph graph, Object element, IFigure figure) {
- GraphNode node = null;
- if (getContentProvider() instanceof INestedContentProvider) {
- boolean isContainer = ((INestedContentProvider) getContentProvider())
- .hasChildren(element);
- if (isContainer) {
- node = viewer.addGraphModelContainer(element);
- styleItem(node);
- Object[] childNodes = ((INestedContentProvider) getContentProvider())
- .getChildren(element);
- childNodes = filter(getViewer().getInput(), childNodes);
- if (childNodes == null) {
- return node;
- }
- for (int i = 0; i < childNodes.length; i++) {
- GraphNode childNode = viewer.addGraphModelNode(
- (GraphContainer) node, childNodes[i]);
- styleItem(childNode);
- }
- ((GraphContainer) node).applyLayout();
- return node;
- }
- }
- node = viewer.addGraphModelNode(element, figure);
- styleItem(node);
- return node;
- }
-
- public GraphNode createNode(Graph graph, Object element) {
- IFigure nodeFigure = null;
- if (getLabelProvider() instanceof IFigureProvider) {
- nodeFigure = ((IFigureProvider) getLabelProvider())
- .getFigure(element);
- }
- return this.createNode(graph, element, nodeFigure);
- }
-
- public void setConnectionStyle(int style) {
- this.connectionStyle = style;
- }
-
- /**
- * @return the connectionStyle
- */
- public int getConnectionStyle() {
- return connectionStyle;
- }
-
- public void setNodeStyle(int style) {
- this.nodeStyle = style;
- }
-
- /**
- * @return the nodeStyle
- */
- public int getNodeStyle() {
- return nodeStyle;
- }
-
- /**
- * Default implementation simply restyles the item, regardless of the
- * properties.
- */
- public void update(GraphItem item) {
- styleItem(item);
- }
-
- /**
- * Default implementation simply restyles the items, regardless of the
- * properties.
- */
- public void update(GraphItem[] items) {
- for (int i = 0; i < items.length; i++) {
- styleItem(items[i]);
- }
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.zest.core.internal.graphmodel.IStylingGraphModelFactory#
- * refreshGraph(org.eclipse.zest.core.internal.graphmodel.GraphModel)
- */
- public void refreshGraph(Graph graph) {
- // with this kind of graph, it is just as easy and cost-effective to
- // rebuild the whole thing.
-
- Map oldMap = viewer.getNodesMap();
- HashMap nodesMap = new HashMap();
- // have to copy the Map data accross so that it doesn't get overwritten
- for (Iterator keys = oldMap.keySet().iterator(); keys.hasNext();) {
- Object key = keys.next();
- nodesMap.put(key, oldMap.get(key));
- }
- clearGraph(graph);
- doBuildGraph(graph);
- // update the positions on the new nodes to match the old ones.
- GraphNode[] nodes = getNodesArray(graph);
- // save a little time, go with the smallest list as the primary list
- if (nodes.length < nodesMap.keySet().size()) {
- for (int i = 0; i < nodes.length; i++) {
- GraphNode oldNode = (GraphNode) nodesMap
- .get(nodes[i].getData());
- if (oldNode != null) {
- nodes[i].setLocation(oldNode.getLocation().x, oldNode
- .getLocation().y);
- if (oldNode.isSizeFixed()) {
- nodes[i].setSize(oldNode.getSize().width, oldNode
- .getSize().height);
- }
- }
- }
- } else {
- for (Iterator i = nodesMap.keySet().iterator(); i.hasNext();) {
- Object key = i.next();
- GraphNode node = viewer.getGraphModelNode(key);
- if (node != null) {
- GraphNode oldNode = (GraphNode) nodesMap.get(key);
- node.setLocation(oldNode.getLocation().x, oldNode
- .getLocation().y);
- if (oldNode.isSizeFixed()) {
- node.setSize(oldNode.getSize().width,
- oldNode.getSize().height);
- }
- }
- }
- }
- }
-
- /**
- * Convenience method for clearing all the elements in the graph.
- *
- * @param graph
- */
- public void clearGraph(Graph graph) {
- graph.setSelection(null);
- Object[] nodeElements = viewer.getNodeElements();
- for (int i = 0; i < nodeElements.length; i++) {
- viewer.removeGraphModelNode(nodeElements[i]);
- }
- Object[] connectionElements = viewer.getConnectionElements();
- for (int i = 0; i < connectionElements.length; i++) {
- viewer.removeGraphModelConnection(connectionElements[i]);
- }
- }
-
- /**
- * Builds the graph model from the viewer's content provider. There is no
- * guarantee that the model will be cleared before this method is called.
- *
- * @param graph
- */
- protected void doBuildGraph(Graph model) {
- clearGraph(model);
- model.setConnectionStyle(getConnectionStyle());
- model.setNodeStyle(getNodeStyle());
- }
-
- /**
- * Determines if this element should be filtered or not.
- *
- * @param parent
- * @param element
- * @return
- */
- protected boolean filterElement(Object parent, Object element) {
- ViewerFilter[] filters = getViewer().getFilters();
- for (int i = 0; i < filters.length; i++) {
- boolean selected = filters[i].select(viewer, parent, element);
- if (!selected) {
- return true;
- }
- }
- return false;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.zest.core.internal.graphmodel.IStylingGraphModelFactory#
- * isFiltered(java.lang.Object)
- */
- protected Object[] filter(Object parent, Object[] elements) {
- Object[] result = elements;
- ViewerFilter[] filters = getViewer().getFilters();
- for (int i = 0; i < filters.length; i++) {
- result = filters[i].filter(viewer, parent, result);
- }
- return result;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.zest.core.internal.graphmodel.IStylingGraphModelFactory#refresh
- * (org.eclipse.zest.core.internal.graphmodel.GraphModel, java.lang.Object)
- */
- public void refresh(Graph graph, Object element) {
- refresh(graph, element, false);
- }
-
- /**
- * Converts the list of GraphNode objects into an array and return it.
- *
- * @return GraphModelNode[]
- */
- protected GraphNode[] getNodesArray(Graph graph) {
- GraphNode[] nodesArray = new GraphNode[graph.getNodes().size()];
- nodesArray = (GraphNode[]) graph.getNodes().toArray(nodesArray);
- return nodesArray;
- }
-
- /**
- * Converts the list of GraphConnections objects into an array and return
- * it.
- *
- * @param graph
- * @return
- */
- protected GraphConnection[] getConnectionArray(Graph graph) {
- GraphConnection[] connectionArray = new GraphConnection[graph
- .getConnections().size()];
- connectionArray = (GraphConnection[]) graph.getConnections().toArray(
- connectionArray);
- return connectionArray;
- }
-}
diff --git a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/internal/GraphItemStyler.java b/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/internal/GraphItemStyler.java
deleted file mode 100644
index 1926f2b..0000000
--- a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/internal/GraphItemStyler.java
+++ /dev/null
@@ -1,279 +0,0 @@
-/*******************************************************************************
- * Copyright 2005-2010, 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.zest.core.viewers.internal;
-
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.jface.viewers.IBaseLabelProvider;
-import org.eclipse.jface.viewers.IColorProvider;
-import org.eclipse.jface.viewers.IFontProvider;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.SWTError;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.zest.core.viewers.IConnectionStyleProvider;
-import org.eclipse.zest.core.viewers.IEntityConnectionStyleProvider;
-import org.eclipse.zest.core.viewers.IEntityStyleProvider;
-import org.eclipse.zest.core.viewers.ISelfStyleProvider;
-import org.eclipse.zest.core.widgets.GraphConnection;
-import org.eclipse.zest.core.widgets.GraphItem;
-import org.eclipse.zest.core.widgets.GraphNode;
-import org.eclipse.zest.core.widgets.ZestStyles;
-
-/*
- * Helper class used to style graph elements based on graph element stylers.
- *
- * @author Del Myers
- */
-// @tag bug(151327-Styles) : created to help resolve this bug
-public class GraphItemStyler {
- public static void styleItem(GraphItem item,
- final IBaseLabelProvider labelProvider) {
-
- if (item instanceof GraphNode) {
- GraphNode node = (GraphNode) item;
- // set defaults.
- if (node.getGraphModel().getNodeStyle() != ZestStyles.NONE) {
- node.setNodeStyle(node.getGraphModel().getNodeStyle());
- } else {
- node.setNodeStyle(SWT.NONE);
- }
- Object entity = node.getData();
- if (labelProvider instanceof IEntityStyleProvider) {
- styleNode(node, (IEntityStyleProvider) labelProvider);
- }
- if (labelProvider instanceof IColorProvider) {
- IColorProvider colorProvider = (IColorProvider) labelProvider;
- node.setForegroundColor(colorProvider.getForeground(entity));
- node.setBackgroundColor(colorProvider.getBackground(entity));
- }
- if (labelProvider instanceof IFontProvider) {
- IFontProvider fontProvider = (IFontProvider) labelProvider;
- node.setFont(fontProvider.getFont(entity));
- }
- if (labelProvider instanceof ILabelProvider) {
- String text = ((ILabelProvider) labelProvider).getText(node
- .getData());
- node.setText((text != null) ? text : "");
- node.setImage(((ILabelProvider) labelProvider).getImage(node
- .getData()));
- }
- if (labelProvider instanceof ISelfStyleProvider) {
- ((ISelfStyleProvider) labelProvider)
- .selfStyleNode(entity, node);
- }
- } else if (item instanceof GraphConnection) {
- GraphConnection conn = (GraphConnection) item;
-
- // set defaults
- if (conn.getGraphModel().getConnectionStyle() != ZestStyles.NONE) {
- int s = conn.getGraphModel().getConnectionStyle();
- conn.setConnectionStyle(s);
- } else {
- conn.setConnectionStyle(SWT.NONE);
- }
- if (labelProvider instanceof ILabelProvider) {
- String text = ((ILabelProvider) labelProvider).getText(conn
- .getExternalConnection());
- conn.setText((text != null) ? text : "");
- conn.setImage(((ILabelProvider) labelProvider).getImage(conn
- .getExternalConnection()));
- }
- if (labelProvider instanceof IEntityConnectionStyleProvider) {
- styleEntityConnection(conn,
- (IEntityConnectionStyleProvider) labelProvider);
- } else if (labelProvider instanceof IConnectionStyleProvider) {
- styleConnection(conn, (IConnectionStyleProvider) labelProvider);
- }
- int swt = getLineStyleForZestStyle(conn.getConnectionStyle());
- conn.setLineStyle(swt);
- if (labelProvider instanceof ISelfStyleProvider) {
- ((ISelfStyleProvider) labelProvider).selfStyleConnection(conn
- .getData(), conn);
- }
- }
- }
-
- /**
- * @param conn
- * @param provider
- */
- private static void styleConnection(GraphConnection conn,
- IConnectionStyleProvider provider) {
- Object rel = conn.getExternalConnection();
- Color c;
- int style = provider.getConnectionStyle(rel);
- if (!ZestStyles.validateConnectionStyle(style)) {
- throw new SWTError(SWT.ERROR_INVALID_ARGUMENT);
- }
- if (style != ZestStyles.NONE) {
- conn.setConnectionStyle(style);
- }
- // @tag bug(152530-Bezier(fix))
- // @tat TODO curves bezier: Add back the bezier connection stuff
- // if (ZestStyles.checkStyle(conn.getConnectionStyle(),
- // ZestStyles.CONNECTIONS_BEZIER)
- // && provider instanceof IConnectionStyleBezierExtension) {
- // IConnectionStyleBezierExtension bezier =
- // (IConnectionStyleBezierExtension) provider;
- // double d;
- // if (!Double.isNaN((d = bezier.getStartAngle(rel)))) {
- // conn.setStartAngle(d);
- // }
- // if (!Double.isNaN((d = bezier.getEndAngle(rel)))) {
- // conn.setEndAngle(d);
- // }
- // if (!Double.isNaN((d = bezier.getStartDistance(rel)))) {
- // conn.setStartLength(d);
- // }
- // if (!Double.isNaN((d = bezier.getEndDistance(rel)))) {
- // conn.setEndLength(d);
- // }
- // }
- if ((c = provider.getHighlightColor(rel)) != null) {
- conn.setHighlightColor(c);
- }
- if ((c = provider.getColor(rel)) != null) {
- conn.setLineColor(c);
- }
- IFigure tooltip;
- if ((tooltip = provider.getTooltip(rel)) != null) {
- conn.setTooltip(tooltip);
- }
- int w = -1;
- if ((w = provider.getLineWidth(rel)) >= 0) {
- conn.setLineWidth(w);
- }
- }
-
- /**
- * @param conn
- * @param provider
- */
- private static void styleEntityConnection(GraphConnection conn,
- IEntityConnectionStyleProvider provider) {
- Object src = conn.getSource().getData();
- Object dest = conn.getDestination().getData();
- Color c;
- int style = provider.getConnectionStyle(src, dest);
- if (!ZestStyles.validateConnectionStyle(style)) {
- throw new SWTError(SWT.ERROR_INVALID_ARGUMENT);
- }
- if (style != ZestStyles.NONE) {
- conn.setConnectionStyle(style);
- }
- // @tag bug(152530-Bezier(fisx))
- // @tag TODO curved connections bezier : add back the bezier connection
- // stuff
- // if (ZestStyles.checkStyle(conn.getConnectionStyle(),
- // ZestStyles.CONNECTIONS_BEZIER)
- // && provider instanceof IEntityConnectionStyleBezierExtension) {
- // IEntityConnectionStyleBezierExtension bezier =
- // (IEntityConnectionStyleBezierExtension) provider;
- // double d;
- // if (!Double.isNaN((d = bezier.getStartAngle(src, dest)))) {
- // conn.setStartAngle(d);
- // }
- // if (!Double.isNaN((d = bezier.getEndAngle(src, dest)))) {
- // conn.setEndAngle(d);
- // }
- // if (!Double.isNaN((d = bezier.getStartDistance(src, dest)))) {
- // conn.setStartLength(d);
- // }
- // if (!Double.isNaN((d = bezier.getEndDistance(src, dest)))) {
- // conn.setEndLength(d);
- // }
- // }
- if ((c = provider.getColor(src, dest)) != null) {
- conn.setLineColor(c);
- }
- if ((c = provider.getHighlightColor(src, dest)) != null) {
- conn.setHighlightColor(c);
- }
- int w = -1;
- if ((w = provider.getLineWidth(src, dest)) >= 0) {
- conn.setLineWidth(w);
- }
- }
-
- /**
- * Styles the given node according to the properties in the style provider.
- *
- * @param node
- * the graph element to style.
- * @param data
- * the element that is being styled.
- * @param provider
- * the style provier.
- */
- // @tag bug(151327-Styles) : resolution
- private static void styleNode(GraphNode node, IEntityStyleProvider provider) {
- Object entity = node.getData();
- // @tag ADJACENT : Removed highlight adjacent
- // node.setHighlightAdjacentNodes(provider.highlightAdjacentEntities(entity));
-
- // @tag ADJACENT : Removed highlight adjacent
- /*
- * if (provider.highlightAdjacentEntities(entity)) { Color c =
- * provider.getAdjacentEntityHighlightColor(entity); if (c != null) {
- * node.setHighlightAdjacentColor(c); } }
- */
- Color c;
- IFigure figure;
- int width = -1;
- if (provider.fisheyeNode(entity) == true) {
- node.setNodeStyle(node.getNodeStyle() | ZestStyles.NODES_FISHEYE);
- }
- if ((c = provider.getBorderColor(entity)) != null) {
- node.setBorderColor(c);
- }
- if ((c = provider.getBorderHighlightColor(entity)) != null) {
- node.setBorderHighlightColor(c);
- }
- if ((c = provider.getNodeHighlightColor(entity)) != null) {
- node.setHighlightColor(c);
- }
- if ((c = provider.getBackgroundColour(entity)) != null) {
- node.setBackgroundColor(c);
- }
- if ((c = provider.getForegroundColour(entity)) != null) {
- node.setForegroundColor(c);
- }
- if ((width = provider.getBorderWidth(entity)) >= 0) {
- node.setBorderWidth(width);
- }
- if ((figure = provider.getTooltip(entity)) != null) {
- node.setTooltip(figure);
- }
-
- }
-
- /**
- * Returns the SWT line style for the given zest connection style.
- *
- */
- public static int getLineStyleForZestStyle(int style) {
- int lineStyles = ZestStyles.CONNECTIONS_DASH_DOT
- | ZestStyles.CONNECTIONS_DASH | ZestStyles.CONNECTIONS_DOT
- | ZestStyles.CONNECTIONS_SOLID;
- style = style & lineStyles;
- if (style == 0) {
- style = ZestStyles.CONNECTIONS_SOLID;
- }
- switch (style) {
- case ZestStyles.CONNECTIONS_DASH_DOT:
- return SWT.LINE_DASHDOT;
- case ZestStyles.CONNECTIONS_DASH:
- return SWT.LINE_DASH;
- case ZestStyles.CONNECTIONS_DOT:
- return SWT.LINE_DOT;
- }
- return SWT.LINE_SOLID;
- }
-}
diff --git a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/internal/GraphModelEntityFactory.java b/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/internal/GraphModelEntityFactory.java
deleted file mode 100644
index d71471b..0000000
--- a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/internal/GraphModelEntityFactory.java
+++ /dev/null
@@ -1,229 +0,0 @@
-/*******************************************************************************
- * Copyright 2005-2010, 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.zest.core.viewers.internal;
-
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.zest.core.viewers.AbstractStructuredGraphViewer;
-import org.eclipse.zest.core.viewers.EntityConnectionData;
-import org.eclipse.zest.core.viewers.IFigureProvider;
-import org.eclipse.zest.core.viewers.IGraphEntityContentProvider;
-import org.eclipse.zest.core.widgets.Graph;
-import org.eclipse.zest.core.widgets.GraphConnection;
-import org.eclipse.zest.core.widgets.GraphItem;
-import org.eclipse.zest.core.widgets.GraphNode;
-
-/*
- *
- * @author Ian Bull
- */
-public class GraphModelEntityFactory extends AbstractStylingModelFactory {
-
- AbstractStructuredGraphViewer viewer = null;
-
- public GraphModelEntityFactory(AbstractStructuredGraphViewer viewer) {
- super(viewer);
- this.viewer = viewer;
- }
-
- /*
- * (non-Javadoc)
- *
- * @seeorg.eclipse.zest.core.internal.graphmodel.IStylingGraphModelFactory#
- * createGraphModel()
- */
- public Graph createGraphModel(Graph model) {
- doBuildGraph(model);
- return model;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.zest.core.internal.graphmodel.AbstractStylingModelFactory
- * #doBuildGraph(org.eclipse.zest.core.internal.graphmodel.GraphModel)
- */
- protected void doBuildGraph(Graph model) {
- super.doBuildGraph(model);
- Object inputElement = getViewer().getInput();
- Object entities[] = getContentProvider().getElements(inputElement);
- if (entities == null) {
- return;
- }
- for (int i = 0; i < entities.length; i++) {
- Object data = entities[i];
- IFigureProvider figureProvider = null;
- if (getLabelProvider() instanceof IFigureProvider) {
- figureProvider = (IFigureProvider) getLabelProvider();
- }
- if (!filterElement(inputElement, data)) {
- if (figureProvider != null) {
- createNode(model, data, figureProvider.getFigure(data));
- } else {
- createNode(model, data);
- }
- }
- }
-
- // We may have other entities (such as children of containers)
- Set keySet = ((AbstractStructuredGraphViewer) getViewer())
- .getNodesMap().keySet();
- entities = keySet.toArray();
-
- for (int i = 0; i < entities.length; i++) {
- Object data = entities[i];
-
- // If this element is filtered, continue to the next one.
- if (filterElement(inputElement, data)) {
- continue;
- }
- Object[] related = ((IGraphEntityContentProvider) getContentProvider())
- .getConnectedTo(data);
-
- if (related != null) {
- for (int j = 0; j < related.length; j++) {
- // if the node this node is connected to is filtered,
- // don't display this edge
- if (filterElement(inputElement, related[j])) {
- continue;
- }
- EntityConnectionData connectionData = new EntityConnectionData(
- data, related[j]);
- if (filterElement(inputElement, connectionData)) {
- continue;
- }
- createConnection(model, connectionData, data, related[j]);
- }
- }
- }
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.zest.core.internal.graphmodel.IStylingGraphModelFactory#refresh
- * (org.eclipse.zest.core.internal.graphmodel.GraphModel, java.lang.Object)
- */
- public void refresh(Graph graph, Object element, boolean refreshLabels) {
- if (element == null) {
- return;
- }
- GraphNode node = viewer.getGraphModelNode(element);
- if (node == null) {
- // check to make sure that the user didn't send us an edge.
- GraphConnection conn = viewer.getGraphModelConnection(element);
- if (conn != null) {
- // refresh on the connected nodes.
- refresh(graph, conn.getSource().getData(), refreshLabels);
- refresh(graph, conn.getDestination().getData(), refreshLabels);
- return;
- }
- }
- // can only refresh on nodes in this kind of factory.
- if (node == null) {
- // do nothing
- return;
- }
- reconnect(graph, element, refreshLabels);
-
- if (refreshLabels) {
- update(node);
- for (Iterator it = node.getSourceConnections().iterator(); it
- .hasNext();) {
- update((GraphItem) it.next());
- }
- for (Iterator it = node.getTargetConnections().iterator(); it
- .hasNext();) {
- update((GraphItem) it.next());
- }
- }
- }
-
- /**
- * @param graph
- * @param element
- * @param refreshLabels
- */
- private void reconnect(Graph graph, Object element, boolean refreshLabels) {
- GraphNode node = viewer.getGraphModelNode(element);
- Object[] related = ((IGraphEntityContentProvider) getContentProvider())
- .getConnectedTo(element);
- List connections = node.getSourceConnections();
- LinkedList toAdd = new LinkedList();
- LinkedList toDelete = new LinkedList();
- LinkedList toKeep = new LinkedList();
- HashSet oldExternalConnections = new HashSet();
- HashSet newExternalConnections = new HashSet();
- for (Iterator it = connections.iterator(); it.hasNext();) {
- oldExternalConnections.add(((GraphConnection) it.next())
- .getExternalConnection());
- }
- for (int i = 0; i < related.length; i++) {
- newExternalConnections.add(new EntityConnectionData(element,
- related[i]));
- }
- for (Iterator it = oldExternalConnections.iterator(); it.hasNext();) {
- Object next = it.next();
- if (!newExternalConnections.contains(next)) {
- toDelete.add(next);
- } else {
- toKeep.add(next);
- }
- }
- for (Iterator it = newExternalConnections.iterator(); it.hasNext();) {
- Object next = it.next();
- if (!oldExternalConnections.contains(next)) {
- toAdd.add(next);
- }
- }
- for (Iterator it = toDelete.iterator(); it.hasNext();) {
- viewer.removeGraphModelConnection(it.next());
- }
- toDelete.clear();
- LinkedList newNodeList = new LinkedList();
- for (Iterator it = toAdd.iterator(); it.hasNext();) {
- EntityConnectionData data = (EntityConnectionData) it.next();
- GraphNode dest = viewer.getGraphModelNode(data.dest);
- if (dest == null) {
- newNodeList.add(data.dest);
- }
- createConnection(graph, data, data.source, data.dest);
- }
- toAdd.clear();
- if (refreshLabels) {
- for (Iterator i = toKeep.iterator(); i.hasNext();) {
- styleItem(viewer.getGraphModelConnection(i.next()));
- }
- }
- for (Iterator it = newNodeList.iterator(); it.hasNext();) {
- // refresh the new nodes so that we get a fully-up-to-date graph.
- refresh(graph, it.next());
- }
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.zest.core.internal.graphmodel.IStylingGraphModelFactory#refresh
- * (org.eclipse.zest.core.internal.graphmodel.GraphModel, java.lang.Object,
- * boolean)
- */
- public void refresh(Graph graph, Object element) {
- refresh(graph, element, false);
- }
-
-}
diff --git a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/internal/GraphModelEntityRelationshipFactory.java b/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/internal/GraphModelEntityRelationshipFactory.java
deleted file mode 100644
index 39786dc..0000000
--- a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/internal/GraphModelEntityRelationshipFactory.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*******************************************************************************
- * Copyright 2005-2010, 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.zest.core.viewers.internal;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.zest.core.viewers.AbstractStructuredGraphViewer;
-import org.eclipse.zest.core.viewers.IGraphEntityRelationshipContentProvider;
-import org.eclipse.zest.core.widgets.Graph;
-import org.eclipse.zest.core.widgets.GraphContainer;
-import org.eclipse.zest.core.widgets.GraphNode;
-
-/*
- * A factory for the IGraphEntityRelationshipContentProvider.
- *
- * @author Del Myers
- */
-// @tag bug.154580-Content.fix
-// @tag bug.160367-Refreshing.fix : updated to use new
-// AbstractStylingModelFactory
-public class GraphModelEntityRelationshipFactory extends
- AbstractStylingModelFactory {
-
- public GraphModelEntityRelationshipFactory(
- AbstractStructuredGraphViewer viewer) {
- super(viewer);
- if (!(viewer.getContentProvider() instanceof IGraphEntityRelationshipContentProvider)) {
- throw new IllegalArgumentException(
- "Expected IGraphEntityRelationshipContentProvider");
- }
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.zest.core.internal.graphmodel.AbstractStylingModelFactory
- * #createGraphModel()
- */
- public Graph createGraphModel(Graph model) {
- doBuildGraph(model);
- return model;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.zest.core.internal.graphmodel.AbstractStylingModelFactory
- * #doBuildGraph(org.eclipse.zest.core.internal.graphmodel.GraphModel)
- */
- protected void doBuildGraph(Graph model) {
- super.doBuildGraph(model);
- Object[] nodes = getContentProvider().getElements(
- getViewer().getInput());
- nodes = filter(getViewer().getInput(), nodes);
- createModelNodes(model, nodes);
- createModelRelationships(model);
- }
-
- /**
- * Creates all the model relationships. Assumes that all of the model nodes
- * have been created in the graph model already. Runtime O(n^2) + O(r).
- *
- * @param model
- * the model to create the relationship on.
- */
- private void createModelRelationships(Graph model) {
- GraphNode[] modelNodes = getNodesArray(model);
- List listOfNodes = new ArrayList();
- for (int i = 0; i < modelNodes.length; i++) {
- listOfNodes.add(modelNodes[i]);
- }
-
- for (int i = 0; i < listOfNodes.size(); i++) {
- GraphNode node = (GraphNode) listOfNodes.get(i);
- if (node instanceof GraphContainer) {
- List childNodes = ((GraphContainer) node).getNodes();
- listOfNodes.addAll(childNodes);
- }
- }
- modelNodes = (GraphNode[]) listOfNodes
- .toArray(new GraphNode[listOfNodes.size()]);
-
- IGraphEntityRelationshipContentProvider content = getCastedContent();
- for (int i = 0; i < modelNodes.length; i++) {
- for (int j = 0; j < modelNodes.length; j++) {
- Object[] rels = content.getRelationships(modelNodes[i]
- .getData(), modelNodes[j].getData());
- if (rels != null) {
- rels = filter(getViewer().getInput(), rels);
- for (int r = 0; r < rels.length; r++) {
- createConnection(model, rels[r], modelNodes[i]
- .getData(), modelNodes[j].getData());
- }
- }
- }
- }
- }
-
- /**
- * Creates the model nodes for the given external nodes.
- *
- * @param model
- * the graph model.
- * @param nodes
- * the external nodes.
- */
- private void createModelNodes(Graph model, Object[] nodes) {
- for (int i = 0; i < nodes.length; i++) {
- createNode(model, nodes[i]);
- }
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.zest.core.internal.graphmodel.IStylingGraphModelFactory#refresh
- * (org.eclipse.zest.core.internal.graphmodel.GraphModel, java.lang.Object)
- */
- public void refresh(Graph graph, Object element) {
- refresh(graph, element, false);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.zest.core.internal.graphmodel.IStylingGraphModelFactory#refresh
- * (org.eclipse.zest.core.internal.graphmodel.GraphModel, java.lang.Object,
- * boolean)
- */
- public void refresh(Graph graph, Object element, boolean updateLabels) {
- // with this kind of graph, it is just as easy and cost-effective to
- // rebuild the whole thing.
- refreshGraph(graph);
- }
-
- private IGraphEntityRelationshipContentProvider getCastedContent() {
- return (IGraphEntityRelationshipContentProvider) getContentProvider();
- }
-
-}
diff --git a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/internal/GraphModelFactory.java b/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/internal/GraphModelFactory.java
deleted file mode 100644
index a44c678..0000000
--- a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/internal/GraphModelFactory.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/*******************************************************************************
- * Copyright 2005-2010, 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.zest.core.viewers.internal;
-
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.zest.core.viewers.AbstractStructuredGraphViewer;
-import org.eclipse.zest.core.viewers.IFigureProvider;
-import org.eclipse.zest.core.viewers.IGraphContentProvider;
-import org.eclipse.zest.core.widgets.Graph;
-import org.eclipse.zest.core.widgets.GraphConnection;
-import org.eclipse.zest.core.widgets.GraphNode;
-
-/**
- * This factory helps make models (nodes & connections).
- *
- * @author Ian Bull
- * @author Chris Callendar
- */
-public class GraphModelFactory extends AbstractStylingModelFactory {
-
- AbstractStructuredGraphViewer viewer = null;
-
- public GraphModelFactory(AbstractStructuredGraphViewer viewer) {
- super(viewer);
- this.viewer = viewer;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see ca.uvic.cs.zest.internal.graphmodel.IGraphModelFactory#createModel()
- */
- public Graph createGraphModel(Graph model) {
- doBuildGraph(model);
- return model;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.zest.core.internal.graphmodel.AbstractStylingModelFactory
- * #doBuildGraph(org.eclipse.zest.core.internal.graphmodel.GraphModel)
- */
- protected void doBuildGraph(Graph model) {
- super.doBuildGraph(model);
- // make the model have the same styles as the viewer
- Object rels[] = getContentProvider()
- .getElements(getViewer().getInput());
- if (rels != null) {
- IFigureProvider figureProvider = null;
- if (getLabelProvider() instanceof IFigureProvider) {
- figureProvider = (IFigureProvider) getLabelProvider();
- }
-
- // If rels returns null then just continue
- // @tag zest(bug(134928(fix))) : An empty graph causes an NPE
- for (int i = 0; i < rels.length; i++) {
- // Check the filter on the source
- Object source = getCastedContent().getSource(rels[i]);
- source = filterElement(getViewer().getInput(), source) ? null
- : source;
-
- // Check hte filter on the dest
- Object dest = getCastedContent().getDestination(rels[i]);
- dest = filterElement(getViewer().getInput(), dest) ? null
- : dest;
-
- if (source == null) {
- // just create the node for the destination
- if (dest != null) {
- if (figureProvider != null) {
- createNode(model, dest, figureProvider
- .getFigure(dest));
- } else {
- createNode(model, dest);
- }
- }
- continue;
- } else if (dest == null) {
- // just create the node for the source
- if (source != null) {
- if (figureProvider != null) {
- createNode(model, source, figureProvider
- .getFigure(dest));
- } else {
- createNode(model, source);
- }
- }
- continue;
- }
- // If any of the source, dest is null or the edge is filtered,
- // don't create the graph.
- if (source != null && dest != null
- && !filterElement(getViewer().getInput(), rels[i])) {
- createConnection(model, rels[i], getCastedContent()
- .getSource(rels[i]), getCastedContent()
- .getDestination(rels[i]));
- }
- }
- }
-
- }
-
- private IGraphContentProvider getCastedContent() {
- return (IGraphContentProvider) getContentProvider();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.zest.core.internal.graphmodel.IStylingGraphModelFactory#refresh
- * (org.eclipse.zest.core.internal.graphmodel.GraphModel, java.lang.Object)
- */
- public void refresh(Graph graph, Object element) {
- refresh(graph, element, false);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.zest.core.internal.graphmodel.IStylingGraphModelFactory#refresh
- * (org.eclipse.zest.core.internal.graphmodel.GraphModel, java.lang.Object,
- * boolean)
- */
- public void refresh(Graph graph, Object element, boolean updateLabels) {
- GraphConnection conn = viewer.getGraphModelConnection(element);
- if (conn == null) {
- // did the user send us a node? Check all of the connections on the
- // node.
- GraphNode node = viewer.getGraphModelNode(element);
- if (node != null) {
- List connections = node.getSourceConnections();
- for (Iterator it = connections.iterator(); it.hasNext();) {
- GraphConnection c = (GraphConnection) it.next();
- refresh(graph, c.getExternalConnection(), updateLabels);
- }
- connections = node.getTargetConnections();
- for (Iterator it = connections.iterator(); it.hasNext();) {
- GraphConnection c = (GraphConnection) it.next();
- refresh(graph, c.getExternalConnection(), updateLabels);
- }
- }
- return;
- }
- Object oldSource = conn.getSource().getData();
- Object oldDest = conn.getDestination().getData();
- Object newSource = getCastedContent().getSource(element);
- Object newDest = getCastedContent().getDestination(element);
- if (!(oldSource.equals(newSource) && oldDest.equals(newDest))) {
- GraphNode internalSource = viewer.getGraphModelNode(newSource);
- GraphNode internalDest = viewer.getGraphModelNode(newDest);
- if (internalSource == null) {
- internalSource = createNode(graph, newSource);
- } else if (updateLabels) {
- styleItem(internalSource);
- }
- if (internalDest == null) {
- internalDest = createNode(graph, newDest);
- } else if (updateLabels) {
- styleItem(internalDest);
- }
- if (updateLabels) {
- styleItem(conn);
- }
- }
-
- }
-
-}
diff --git a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/internal/IStylingGraphModelFactory.java b/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/internal/IStylingGraphModelFactory.java
deleted file mode 100644
index cafb8bb..0000000
--- a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/internal/IStylingGraphModelFactory.java
+++ /dev/null
@@ -1,172 +0,0 @@
-/*******************************************************************************
- * Copyright 2005-2010, 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.zest.core.viewers.internal;
-
-import org.eclipse.jface.viewers.IBaseLabelProvider;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.StructuredViewer;
-import org.eclipse.zest.core.widgets.Graph;
-import org.eclipse.zest.core.widgets.GraphConnection;
-import org.eclipse.zest.core.widgets.GraphItem;
-import org.eclipse.zest.core.widgets.GraphNode;
-
-/**
- * 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 Graph createGraphModel(Graph model);
-
- /**
- * 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 GraphNode createNode(Graph 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 GraphConnection createConnection(Graph 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(GraphItem[] items);
-
- /**
- * Restyles the given graph item according to the label provider supplied by
- * getLabelProvider().
- *
- * @param item
- * the item to update.
- */
- public void update(GraphItem 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(Graph 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(Graph graph, Object element, boolean updateLabels);
-
- /**
- * Structurally refreshes the entire graph.
- *
- * @param graph
- * the graph to refresh;
- */
- public void refreshGraph(Graph 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();
-
-}
diff --git a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/internal/SharedMessages.java b/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/internal/SharedMessages.java
deleted file mode 100644
index 9d4f2e5..0000000
--- a/org.eclipse.zest.core/src/org/eclipse/zest/core/viewers/internal/SharedMessages.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2005-2010 IBM Corporation and others. 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: IBM Corporation - initial API and implementation
- ******************************************************************************/
-package org.eclipse.zest.core.viewers.internal;
-
-/**
- * This class contains UI strings (translated, if available) that clients can
- * use.
- *
- * @author Eric Bordeau
- */
-public class SharedMessages {
-
- /**
- * The string "Page".
- */
- public static String FitAllAction_Label = "Page"; // GEFMessages.FitAllAction_Label;
- /**
- * The string "Width".
- */
- public static String FitWidthAction_Label = "Width"; // GEFMessages.FitWidthAction_Label;
- /**
- * The string "Height".
- */
- public static String FitHeightAction_Label = "Height"; // GEFMessages.FitHeightAction_Label;
-
-}
diff --git a/org.eclipse.zest.examples/META-INF/MANIFEST.MF b/org.eclipse.zest.examples/META-INF/MANIFEST.MF
index 4ddfea2..a6a3fdc 100644
--- a/org.eclipse.zest.examples/META-INF/MANIFEST.MF
+++ b/org.eclipse.zest.examples/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Graphical Editing Framework Zest Tests
Bundle-SymbolicName: org.eclipse.zest.examples;singleton:=true
-Bundle-Version: 1.1.0.qualifier
+Bundle-Version: 2.0.0.qualifier
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
org.eclipse.pde,
@@ -14,7 +14,8 @@ Require-Bundle: org.eclipse.ui,
org.junit,
org.eclipse.zest.layouts;bundle-version="2.0.0",
org.eclipse.zest.core;bundle-version="2.0.0",
- org.eclipse.draw2d;bundle-version="3.7.0"
+ org.eclipse.draw2d;bundle-version="3.7.0",
+ org.eclipse.zest.jface;bundle-version="1.0.0"
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: J2SE-1.4