| /******************************************************************************* |
| * Copyright 2005, 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.widgets; |
| |
| import org.eclipse.draw2d.IFigure; |
| import org.eclipse.swt.SWT; |
| import org.eclipse.swt.widgets.Item; |
| import org.eclipse.swt.widgets.Widget; |
| |
| /** |
| * Provides support for property changes. All model elements extend this class. |
| * Also extends the Item (Widget) class to be used inside a StructuredViewer. |
| * |
| * @author Chris Callendar |
| */ |
| public abstract class GraphItem extends Item { |
| |
| public static final int GRAPH = 0; |
| public static final int NODE = 1; |
| public static final int CONNECTION = 2; |
| public static final int CONTAINER = 3; |
| |
| /** |
| * @param parent |
| * @param style |
| */ |
| public GraphItem(Widget parent, int style) { |
| this(parent, style | SWT.NO_BACKGROUND, null); |
| } |
| |
| /** |
| * @param parent |
| * @param style |
| */ |
| public GraphItem(Widget parent, int style, Object data) { |
| super(parent, style | SWT.NO_BACKGROUND); |
| if (data != null) { |
| this.setData(data); |
| } |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see org.eclipse.swt.widgets.Widget#dispose() |
| */ |
| public void dispose() { |
| // @tag zest.bug.167132-ListenerDispose : remove all listeners. |
| // pcsDelegate = new PropertyChangeSupport(this); |
| super.dispose(); |
| } |
| |
| /** |
| * Gets the graph item type. The item type is one of: GRAPH, NODE or |
| * CONNECTION |
| * |
| * @return |
| */ |
| public abstract int getItemType(); |
| |
| /** |
| * Set the visibility of this item. |
| * |
| * @param visible |
| * whether or not this item is visible. |
| */ |
| public abstract void setVisible(boolean visible); |
| |
| /** |
| * Get the visibility of this item. |
| * |
| * @return the visibility of this item. |
| */ |
| public abstract boolean isVisible(); |
| |
| /** |
| * Gets the graph that this item is rooted on. If this item is itself a |
| * graph, then this is returned. |
| * |
| * @return the parent graph. |
| */ |
| public abstract Graph getGraphModel(); |
| |
| /** |
| * Highlights the current GraphItem. A graph item is either a graph node or |
| * graph connection, and highlighting them will set the appropriate highlight |
| * color. |
| */ |
| public abstract void highlight(); |
| |
| /** |
| * Unhighlight sets the graphItem (either a graphNode or graphConnection) back |
| * to the unhighlight figure or color. |
| */ |
| public abstract void unhighlight(); |
| |
| abstract IFigure getFigure(); |
| |
| /** |
| * Checks a style to see if it is set on the given graph item |
| * @param styleToCheck The style to check |
| * @return |
| */ |
| protected boolean checkStyle(int styleToCheck) { |
| return ((getStyle() & styleToCheck) > 0); |
| } |
| } |