/******************************************************************************* * Copyright (c) 2007-2009 Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is 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 * * Contributor: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.hibernate.ui.diagram.rulers; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import org.eclipse.gef.rulers.RulerProvider; /** * */ public class DiagramRuler implements Serializable { public static final String PROPERTY_CHILDREN = "children changed"; //$NON-NLS-1$ public static final String PROPERTY_UNIT = "units changed"; //$NON-NLS-1$ static final long serialVersionUID = 1; protected PropertyChangeSupport listeners = new PropertyChangeSupport(this); private int unit; private boolean horizontal; private List<DiagramGuide> guides = new ArrayList<DiagramGuide>(); public DiagramRuler(boolean isHorizontal) { this(isHorizontal, RulerProvider.UNIT_PIXELS); } public DiagramRuler(boolean isHorizontal, int unit) { horizontal = isHorizontal; setUnit(unit); } public void addGuide(DiagramGuide guide) { if (!guides.contains(guide)) { guide.setHorizontal(!isHorizontal()); guides.add(guide); listeners.firePropertyChange(PROPERTY_CHILDREN, null, guide); } } public void addPropertyChangeListener(PropertyChangeListener listener) { listeners.addPropertyChangeListener(listener); } // the returned list should not be modified public List<DiagramGuide> getGuides() { return guides; } public int getUnit() { return unit; } public boolean isHidden() { return false; } public boolean isHorizontal() { return horizontal; } public void removeGuide(DiagramGuide guide) { if (guides.remove(guide)) { listeners.firePropertyChange(PROPERTY_CHILDREN, null, guide); } } public void removePropertyChangeListener(PropertyChangeListener listener) { listeners.removePropertyChangeListener(listener); } public void setHidden(boolean isHidden) { } public void setUnit(int newUnit) { if (unit != newUnit) { int oldUnit = unit; unit = newUnit; listeners.firePropertyChange(PROPERTY_UNIT, oldUnit, newUnit); } } }