/*******************************************************************************
* Copyright (c) 2003, 2005 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.gef.examples.logicdesigner.model;
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;
/**
* @author Pratik Shah
*/
public class LogicRuler
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 guides = new ArrayList();
public LogicRuler(boolean isHorizontal) {
this(isHorizontal, RulerProvider.UNIT_PIXELS);
}
public LogicRuler(boolean isHorizontal, int unit) {
horizontal = isHorizontal;
setUnit(unit);
}
public void addGuide(LogicGuide 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 getGuides() {
return guides;
}
public int getUnit() {
return unit;
}
public boolean isHidden() {
return false;
}
public boolean isHorizontal() {
return horizontal;
}
public void removeGuide(LogicGuide 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);
}
}
}