X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse.ui/src/net/sourceforge/phpdt/internal/ui/text/CompositeReconcilingStrategy.java b/net.sourceforge.phpeclipse.ui/src/net/sourceforge/phpdt/internal/ui/text/CompositeReconcilingStrategy.java new file mode 100644 index 0000000..5733b4f --- /dev/null +++ b/net.sourceforge.phpeclipse.ui/src/net/sourceforge/phpdt/internal/ui/text/CompositeReconcilingStrategy.java @@ -0,0 +1,121 @@ +/******************************************************************************* + * Copyright (c) 2000, 2003 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package net.sourceforge.phpdt.internal.ui.text; + +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.jface.text.IDocument; +import org.eclipse.jface.text.IRegion; +import org.eclipse.jface.text.reconciler.DirtyRegion; +import org.eclipse.jface.text.reconciler.IReconcilingStrategy; +import org.eclipse.jface.text.reconciler.IReconcilingStrategyExtension; + +/** + * A reconciling strategy consisting of a sequence of internal reconciling + * strategies. By default, all requests are passed on to the contained + * strategies. + * + * @since 3.0 + */ +public class CompositeReconcilingStrategy implements IReconcilingStrategy, + IReconcilingStrategyExtension { + + /** The list of internal reconciling strategies. */ + private IReconcilingStrategy[] fStrategies; + + /** + * Creates a new, empty composite reconciling strategy. + */ + public CompositeReconcilingStrategy() { + } + + /** + * Sets the reconciling strategies for this composite strategy. + * + * @param strategies + * the strategies to be set or null + */ + public void setReconcilingStrategies(IReconcilingStrategy[] strategies) { + fStrategies = strategies; + } + + /** + * Returns the previously set stratgies or null. + * + * @return the contained strategies or null + */ + public IReconcilingStrategy[] getReconcilingStrategies() { + return fStrategies; + } + + /* + * @see org.eclipse.jface.text.reconciler.IReconcilingStrategy#setDocument(org.eclipse.jface.text.IDocument) + */ + public void setDocument(IDocument document) { + if (fStrategies == null) + return; + + for (int i = 0; i < fStrategies.length; i++) + fStrategies[i].setDocument(document); + } + + /* + * @see org.eclipse.jface.text.reconciler.IReconcilingStrategy#reconcile(org.eclipse.jface.text.reconciler.DirtyRegion, + * org.eclipse.jface.text.IRegion) + */ + public void reconcile(DirtyRegion dirtyRegion, IRegion subRegion) { + if (fStrategies == null) + return; + + for (int i = 0; i < fStrategies.length; i++) + fStrategies[i].reconcile(dirtyRegion, subRegion); + } + + /* + * @see org.eclipse.jface.text.reconciler.IReconcilingStrategy#reconcile(org.eclipse.jface.text.IRegion) + */ + public void reconcile(IRegion partition) { + if (fStrategies == null) + return; + + for (int i = 0; i < fStrategies.length; i++) + fStrategies[i].reconcile(partition); + } + + /* + * @see org.eclipse.jface.text.reconciler.IReconcilingStrategyExtension#setProgressMonitor(org.eclipse.core.runtime.IProgressMonitor) + */ + public void setProgressMonitor(IProgressMonitor monitor) { + if (fStrategies == null) + return; + + for (int i = 0; i < fStrategies.length; i++) { + if (fStrategies[i] instanceof IReconcilingStrategyExtension) { + IReconcilingStrategyExtension extension = (IReconcilingStrategyExtension) fStrategies[i]; + extension.setProgressMonitor(monitor); + } + } + } + + /* + * @see org.eclipse.jface.text.reconciler.IReconcilingStrategyExtension#initialReconcile() + */ + public void initialReconcile() { + if (fStrategies == null) + return; + + for (int i = 0; i < fStrategies.length; i++) { + if (fStrategies[i] instanceof IReconcilingStrategyExtension) { + IReconcilingStrategyExtension extension = (IReconcilingStrategyExtension) fStrategies[i]; + extension.initialReconcile(); + } + } + } +}