Buggy code:
public class JavaDrawApp extends MDI_DrawApplication { private Animator fAnimator ; private static String fgSampleImagesPath = "//CH//ifa//draw//samples//javadraw//sampleimages" ; private static String fgSampleImagesResourcePath = ( JavaDrawApp . fgSampleImagesPath ) + "//" ; JavaDrawApp ( ) { } protected DrawApplication createApplication ( ) { } protected DrawingView createDrawingView ( ) { } public void destroy ( ) { } protected void createTools ( JToolBar palette ) { super . createTools ( palette ) ; Tool tool = new ZoomTool ( this ) ; palette . add ( createToolButton ( ( ( IMAGES ) + "ZOOM" ) , "Zoom<seq2seq4repair_space>Tool" , tool ) ) ; tool = new UndoableTool ( new TextTool ( this , new TextFigure ( ) ) ) ; palette . add ( createToolButton ( ( ( IMAGES ) + "TEXT" ) , "Text<seq2seq4repair_space>Tool" , tool ) ) ; tool = new UndoableTool ( new ConnectedTextTool ( this , new TextFigure ( ) ) ) ; palette . add ( createToolButton ( ( ( IMAGES ) + "ATEXT" ) , "Connected<seq2seq4repair_space>Text<seq2seq4repair_space>Tool" , tool ) ) ; tool = new URLTool ( this ) ; palette . add ( createToolButton ( ( ( IMAGES ) + "URL" ) , "URL<seq2seq4repair_space>Tool" , tool ) ) ; tool = new UndoableTool ( new CreationTool ( this , new RectangleFigure ( ) ) ) ; palette . add ( createToolButton ( ( ( IMAGES ) + "RECT" ) , "Rectangle<seq2seq4repair_space>Tool" , tool ) ) ; tool = new UndoableTool ( new CreationTool ( this , new RoundRectangleFigure ( ) ) ) ; palette . add ( createToolButton ( ( ( IMAGES ) + "RRECT" ) , "Round<seq2seq4repair_space>Rectangle<seq2seq4repair_space>Tool" , tool ) ) ; tool = new UndoableTool ( new CreationTool ( this , new EllipseFigure ( ) ) ) ; palette . add ( createToolButton ( ( ( IMAGES ) + "ELLIPSE" ) , "Ellipse<seq2seq4repair_space>Tool" , tool ) ) ; tool = new UndoableTool ( new PolygonTool ( this ) ) ; palette . add ( createToolButton ( ( ( IMAGES ) + "POLYGON" ) , "Polygon<seq2seq4repair_space>Tool" , tool ) ) ; tool = new UndoableTool ( new CreationTool ( this , new TriangleFigure ( ) ) ) ; palette . add ( createToolButton ( ( ( IMAGES ) + "TRIANGLE" ) , "Triangle<seq2seq4repair_space>Tool" , tool ) ) ; tool = new UndoableTool ( new CreationTool ( this , new DiamondFigure ( ) ) ) ; palette . add ( createToolButton ( ( ( IMAGES ) + "DIAMOND" ) , "Diamond<seq2seq4repair_space>Tool" , tool ) ) ; tool = new UndoableTool ( new CreationTool ( this , new LineFigure ( ) ) ) ; palette . add ( createToolButton ( ( ( IMAGES ) + "LINE" ) , "Line<seq2seq4repair_space>Tool" , tool ) ) ; tool = new UndoableTool ( new ConnectionTool ( this , new LineConnection ( ) ) ) ; palette . add ( createToolButton ( ( ( IMAGES ) + "CONN" ) , "Connection<seq2seq4repair_space>Tool" , tool ) ) ; tool = new UndoableTool ( new ConnectionTool ( this , new ElbowConnection ( ) ) ) ; palette . add ( createToolButton ( ( ( IMAGES ) + "OCONN" ) , "Elbow<seq2seq4repair_space>Connection<seq2seq4repair_space>Tool" , tool ) ) ; tool = new UndoableTool ( new ScribbleTool ( this ) ) ; palette . add ( createToolButton ( ( ( IMAGES ) + "SCRIBBL" ) , "Scribble<seq2seq4repair_space>Tool" , tool ) ) ; tool = new UndoableTool ( new BorderTool ( this ) ) ; palette . add ( createToolButton ( ( ( IMAGES ) + "BORDDEC" ) , "Border<seq2seq4repair_space>Tool" , tool ) ) ; Component button = new JButton ( "Hello<seq2seq4repair_space>World" ) ; <START_BUG> tool = new CreationTool ( this , new ComponentFigure ( button , this ) ) ; <END_BUG> palette . add ( createToolButton ( ( ( IMAGES ) + "RECT" ) , "Component<seq2seq4repair_space>Tool" , tool ) ) ; tool = new TextAreaTool ( this , new TextAreaFigure ( ) ) ; palette . add ( createToolButton ( ( ( IMAGES ) + "TEXTAREA" ) , "TextArea<seq2seq4repair_space>Tool" , tool ) ) ; GraphicalCompositeFigure fig = new GraphicalCompositeFigure ( ) ; fig . setLayouter ( new SimpleLayouter ( fig ) ) ; tool = new CreationTool ( this , fig ) ; palette . add ( createToolButton ( ( ( IMAGES ) + "RECT" ) , "Container<seq2seq4repair_space>Figure<seq2seq4repair_space>Tool" , tool ) ) ; tool = new CompositeFigureCreationTool ( this , new RectangleFigure ( ) ) ; palette . add ( createToolButton ( ( ( IMAGES ) + "RECT" ) , "Nested<seq2seq4repair_space>Figure<seq2seq4repair_space>Tool" , tool ) ) ; tool = new CH . ifa . draw . contrib . html . HTMLTextAreaTool ( this , new HTMLTextAreaFigure ( ) ) ; palette . add ( createToolButton ( ( ( IMAGES ) + "TEXTAREA" ) , "HTML<seq2seq4repair_space>TextArea<seq2seq4repair_space>Tool" , tool ) ) ; LineConnection lineConnection = new LineConnection ( ) ; lineConnection . setStartDecoration ( null ) ; tool = new UndoableTool ( new SplitConnectionTool ( this , lineConnection ) ) ; palette . add ( createToolButton ( ( ( IMAGES ) + "OCONN" ) , "Elbow<seq2seq4repair_space>Connection<seq2seq4repair_space>Tool" , tool ) ) ; } protected Tool createSelectionTool ( ) { } protected void createMenus ( JMenuBar mb ) { } protected JMenu createAnimationMenu ( ) { } protected JMenu createWindowMenu ( ) { } protected JMenu createImagesMenu ( ) { } protected Drawing createDrawing ( ) { } public void startAnimation ( ) { } public void endAnimation ( ) { } public static void main ( String [ ] args ) { } }

Fix:
tool = new CreationTool ( this , new ComponentFigure ( button ) ) ;