/******************************************************************************* * 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.internal.ui.rulers; import org.eclipse.gef.EditPart; import org.eclipse.gef.EditPartFactory; import org.eclipse.gef.GraphicalViewer; import org.eclipse.gef.rulers.RulerProvider; /** * @author Pratik Shah */ public class RulerEditPartFactory implements EditPartFactory { protected GraphicalViewer diagramViewer; public RulerEditPartFactory(GraphicalViewer primaryViewer) { diagramViewer = primaryViewer; } /* (non-Javadoc) * @see org.eclipse.gef.EditPartFactory#createEditPart(org.eclipse.gef.EditPart, java.lang.Object) */ public EditPart createEditPart(EditPart parentEditPart, Object model) { // the model can be null when the contents of the root edit part are set to null EditPart part = null; if (isRuler(model)) { part = createRulerEditPart(parentEditPart, model); } else if (model != null) { part = createGuideEditPart(parentEditPart, model); } return part; } protected EditPart createGuideEditPart(EditPart parentEditPart, Object model) { return new GuideEditPart(model); } protected EditPart createRulerEditPart(EditPart parentEditPart, Object model) { return new RulerEditPart(model); } protected Object getHorizontalRuler() { Object ruler = null; RulerProvider provider = (RulerProvider)diagramViewer.getProperty(RulerProvider.PROPERTY_HORIZONTAL_RULER); if (provider != null) { ruler = provider.getRuler(); } return ruler; } protected Object getVerticalRuler() { Object ruler = null; RulerProvider provider = (RulerProvider)diagramViewer.getProperty(RulerProvider.PROPERTY_VERTICAL_RULER); if (provider != null) { ruler = provider.getRuler(); } return ruler; } protected boolean isRuler(Object model) { boolean result = false; if (model != null) { result = model == getHorizontalRuler() || model == getVerticalRuler(); } return result; } }