/*
* Copyright 2006,2007 Enrico Boldrini, Lorenzo Bigagli This file is part of
* CheckboxTree. CheckboxTree is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or (at your
* option) any later version. CheckboxTree is distributed in the hope that it
* will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
* Public License for more details. You should have received a copy of the GNU
* General Public License along with CheckboxTree; if not, write to the Free
* Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301, USA
*/
package net.sourceforge.pmd.jedit.checkboxtree;
import javax.swing.tree.TreePath;
/**
* The model for checking/unchecking the nodes of a CheckboxTree. Alterations
* of a node state may propagate on descendants/ascendants, according to the
* behaviour of the model. Several default behavioural modes are defined. The
* models must use the methods addToCheckedSet and removeFromCheckedSet from
* DefaultTreeCheckingModel to add/remove the single paths from the checking
* set.
*
* @author bigagli
* @author boldrini
*/
public abstract class TreeCheckingMode {
protected DefaultTreeCheckingModel model;
// TODO: implementare Strategy in questo modo: TreeCheckingMode classe
// interna al TreeCheckingModel, con un metodo getModel() protetto,
// utile
// alle sottoclassi
TreeCheckingMode( DefaultTreeCheckingModel model ) {
this.model = model;
}
/**
* Checks the specified path and propagates the checking according to
* the strategy
*
* @param path the path to be added.
*/
public abstract void checkPath( TreePath path );
/**
* Unchecks the specified path and propagates the checking according to
* the strategy
*
* @param path the path to be removed.
*/
public abstract void uncheckPath( TreePath path );
/**
* Update the check of the given path after the insertion of some of its
* children, according to the strategy
*
* @param path
*/
public abstract void updateCheckAfterChildrenInserted( TreePath path );
/**
* Update the check of the given path after the removal of some of its
* children, according to the strategy
*
* @param path
*/
public abstract void updateCheckAfterChildrenRemoved( TreePath path );
/**
* Update the check of the given path after the structure change,
* according to the strategy
*
* @param path
*/
public abstract void updateCheckAfterStructureChanged( TreePath path );
}