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 }