001    // License: GPL. For details, see LICENSE file.
002    package org.openstreetmap.josm.command;
003    
004    import java.util.Collection;
005    import javax.swing.Icon;
006    import javax.swing.JLabel;
007    
008    import org.openstreetmap.josm.data.osm.OsmPrimitive;
009    
010    /**
011     * PseudoCommand is a reduced form of a command. It can be presented in a tree view
012     * as subcommand of real commands but it is just an empty shell and can not be
013     * executed or undone.
014     */
015    abstract public class PseudoCommand {
016        /**
017         * Provides a description text representing this command.
018         */
019        abstract public String getDescriptionText();
020    
021        /**
022         * Provides a descriptive icon of this command.
023         */
024        public Icon getDescriptionIcon() {
025            return null;
026        }
027    
028        /**
029         * Return the primitives that take part in this command.
030         */
031        abstract public Collection<? extends OsmPrimitive> getParticipatingPrimitives();
032    
033        /**
034         * Returns the subcommands of this command.
035         * Override for subclasses that have child commands.
036         * @return the subcommands, null if there are no child commands
037         */
038        public Collection<PseudoCommand> getChildren() {
039            return null;
040        }
041    }