| /******************************************************************************* |
| * Copyright 2005-2007, 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.tests.swt; |
| |
| import org.eclipse.draw2d.ColorConstants; |
| import org.eclipse.swt.SWT; |
| import org.eclipse.swt.layout.FillLayout; |
| import org.eclipse.swt.widgets.Display; |
| import org.eclipse.swt.widgets.Shell; |
| import org.eclipse.zest.core.widgets.Graph; |
| import org.eclipse.zest.core.widgets.GraphConnection; |
| import org.eclipse.zest.core.widgets.GraphNode; |
| import org.eclipse.zest.core.widgets.ZestStyles; |
| import org.eclipse.zest.layouts.Filter; |
| import org.eclipse.zest.layouts.LayoutItem; |
| import org.eclipse.zest.layouts.LayoutStyles; |
| import org.eclipse.zest.layouts.algorithms.TreeLayoutAlgorithm; |
| |
| /** |
| * This snippet shows how to filter elements in the layout. The Data on the tree |
| * connections are set to "False", meaning they won't be filtered. |
| * |
| * @author Ian Bull |
| * |
| */ |
| public class GraphSnippet8 { |
| |
| /** |
| * @param args |
| */ |
| public static void main(String[] args) { |
| Display display = new Display(); |
| Shell shell = new Shell(display); |
| shell.setText("GraphSnippet8"); |
| shell.setLayout(new FillLayout()); |
| shell.setSize(400, 400); |
| |
| final Graph graph = new Graph(shell, SWT.NONE); |
| |
| GraphNode a = new GraphNode(graph, SWT.NONE, "Root"); |
| GraphNode b = new GraphNode(graph, SWT.NONE, "B"); |
| GraphNode c = new GraphNode(graph, SWT.NONE, "C"); |
| GraphNode d = new GraphNode(graph, SWT.NONE, "D"); |
| GraphNode e = new GraphNode(graph, SWT.NONE, "E"); |
| GraphNode f = new GraphNode(graph, SWT.NONE, "F"); |
| GraphNode g = new GraphNode(graph, SWT.NONE, "G"); |
| GraphNode h = new GraphNode(graph, SWT.NONE, "H"); |
| GraphConnection connection = new GraphConnection(graph, SWT.NONE, a, b); |
| connection.setData(Boolean.FALSE); |
| connection = new GraphConnection(graph, SWT.NONE, a, c); |
| connection.setData(Boolean.FALSE); |
| connection = new GraphConnection(graph, SWT.NONE, a, c); |
| connection.setData(Boolean.FALSE); |
| connection = new GraphConnection(graph, SWT.NONE, a, d); |
| connection.setData(Boolean.FALSE); |
| connection = new GraphConnection(graph, SWT.NONE, b, e); |
| connection.setData(Boolean.FALSE); |
| connection = new GraphConnection(graph, SWT.NONE, b, f); |
| connection.setData(Boolean.FALSE); |
| connection = new GraphConnection(graph, SWT.NONE, c, g); |
| connection.setData(Boolean.FALSE); |
| connection = new GraphConnection(graph, SWT.NONE, d, h); |
| connection.setData(Boolean.FALSE); |
| |
| connection = new GraphConnection(graph, |
| ZestStyles.CONNECTIONS_DIRECTED, b, c); |
| connection.setLineColor(ColorConstants.red()); |
| connection.setLineWidth(3); |
| connection = new GraphConnection(graph, |
| ZestStyles.CONNECTIONS_DIRECTED, c, d); |
| connection.setLineColor(ColorConstants.red()); |
| connection.setLineWidth(3); |
| connection = new GraphConnection(graph, |
| ZestStyles.CONNECTIONS_DIRECTED, e, f); |
| connection.setLineColor(ColorConstants.red()); |
| connection.setLineWidth(3); |
| connection = new GraphConnection(graph, |
| ZestStyles.CONNECTIONS_DIRECTED, f, g); |
| connection.setLineColor(ColorConstants.red()); |
| connection.setLineWidth(3); |
| |
| connection = new GraphConnection(graph, |
| ZestStyles.CONNECTIONS_DIRECTED, h, e); |
| connection.setLineColor(ColorConstants.red()); |
| connection.setLineWidth(3); |
| |
| TreeLayoutAlgorithm treeLayoutAlgorithm = new TreeLayoutAlgorithm( |
| LayoutStyles.NO_LAYOUT_NODE_RESIZING); |
| Filter filter = new Filter() { |
| public boolean isObjectFiltered(LayoutItem item) { |
| |
| // Get the "Connection" from the Layout Item |
| // and use this connection to get the "Graph Data" |
| Object object = item.getGraphData(); |
| if (object instanceof GraphConnection) { |
| GraphConnection connection = (GraphConnection) object; |
| if (connection.getData() != null |
| && connection.getData() instanceof Boolean) { |
| // If the data is false, don't filter, otherwise, |
| // filter. |
| return ((Boolean) connection.getData()).booleanValue(); |
| } |
| return true; |
| } |
| return false; |
| } |
| |
| }; |
| treeLayoutAlgorithm.setFilter(filter); |
| graph.setLayoutAlgorithm(treeLayoutAlgorithm, true); |
| |
| shell.open(); |
| while (!shell.isDisposed()) { |
| while (!display.readAndDispatch()) { |
| display.sleep(); |
| } |
| } |
| } |
| |
| } |