001    package data.stdforms.singletableformsheet;
002    
003    import sale.*;
004    import sale.stdforms.*;
005    
006    import data.stdforms.SingleTableFormSheet;
007    
008    /**
009     * <i>Abstract</i> super class for strategies that can be associated with the
010     * {@link SingleTableFormSheet#addAddButton &quot;Add&quot;} and the
011     * {@link SingleTableFormSheet#addRemoveButton &quot;Remove&quot;} button of a {@link SingleTableFormSheet}.
012     *
013     * <p>The strategy defines a sub-process that can be integrated into the process that displayed the FormSheet
014     * to perform the editing.</p>
015     *
016     * @author Steffen Zschaler
017     * @version 2.0 20/08/1999
018     * @since v2.0
019     */
020    public abstract class EditButtonStrategy extends FormSheetStrategy {
021    
022        /**
023         * Get the first transition of the process that will perform the editing. The process can have any number of
024         * {@link Gate Gates} and {@link Transition Transitions} and display any number of {@link FormSheet Form-}
025         * and {@link MenuSheet MenuSheets}. Normally, the sub-process should end at the gate at which the
026         * SingleTableFormSheet is being displayed, which can be obtained by
027         * {@link SingleTableFormSheet#getGate SingleTableFormSheet.getGate()}.
028         *
029         * @param stfs the SingleTableFormSheet that triggers the sub-process.
030         * @param p the process into which the sub-process will be implanted.
031         * @param sp the SalesPoint at which the FormSheet is displayed, if any.
032         *
033         * @override Always.
034         */
035        public abstract Transition getEditProcess(SingleTableFormSheet stfs, SaleProcess p, SalesPoint sp);
036    }