38c38
< 		implements DrawingEditor, PaletteListener {
---
> 		implements DrawingEditor, PaletteListener, VersionRequester {
40,41c40,41
< 	transient private Drawing         fDrawing;
< 	transient private Tool            fTool;
---
> 	private transient Drawing         fDrawing;
> 	private transient Tool            fTool;
43,45c43,45
< 	transient private DrawingView     fView;
< 	transient private ToolButton      fDefaultToolButton;
< 	transient private ToolButton      fSelectedToolButton;
---
> 	private transient DrawingView     fView;
> 	private transient ToolButton      fDefaultToolButton;
> 	private transient ToolButton      fSelectedToolButton;
47,48c47,48
< 	transient private boolean         fSimpleUpdate;
< 	transient private JButton          fUpdateButton;
---
> 	private transient boolean         fSimpleUpdate;
> 	private transient JButton          fUpdateButton;
50,54c50,54
< 	transient private JComboBox          fFrameColor;
< 	transient private JComboBox          fFillColor;
< 	transient private JComboBox          fTextColor;
< 	transient private JComboBox          fArrowChoice;
< 	transient private JComboBox          fFontChoice;
---
> 	private transient JComboBox          fFrameColor;
> 	private transient JComboBox          fFillColor;
> 	private transient JComboBox          fTextColor;
> 	private transient JComboBox          fArrowChoice;
> 	private transient JComboBox          fFontChoice;
56c56
< 	transient private Thread          fSleeper;
---
> 	private transient Thread          fSleeper;
57a58
> 	private transient 			UndoManager myUndoManager;
67a69,71
> 		getVersionControlStrategy().assertCompatibleVersion();
> 		setUndoManager(new UndoManager());
> 		
92a97,102
> 	public void addViewChangeListener(ViewChangeListener vsl) {
> 	}
> 
> 	public void removeViewChangeListener(ViewChangeListener vsl) {
> 	}
> 
137,140c147,150
< 		choice.addItem(new ChangeAttributeCommand("none",     "ArrowMode", new Integer(PolyLineFigure.ARROW_TIP_NONE),  view()));
< 		choice.addItem(new ChangeAttributeCommand("at Start", "ArrowMode", new Integer(PolyLineFigure.ARROW_TIP_START), view()));
< 		choice.addItem(new ChangeAttributeCommand("at End",   "ArrowMode", new Integer(PolyLineFigure.ARROW_TIP_END),   view()));
< 		choice.addItem(new ChangeAttributeCommand("at Both",  "ArrowMode", new Integer(PolyLineFigure.ARROW_TIP_BOTH),  view()));
---
> 		choice.addItem(new ChangeAttributeCommand("none",     "ArrowMode", new Integer(PolyLineFigure.ARROW_TIP_NONE),  this));
> 		choice.addItem(new ChangeAttributeCommand("at Start", "ArrowMode", new Integer(PolyLineFigure.ARROW_TIP_START), this));
> 		choice.addItem(new ChangeAttributeCommand("at End",   "ArrowMode", new Integer(PolyLineFigure.ARROW_TIP_END),   this));
> 		choice.addItem(new ChangeAttributeCommand("at Both",  "ArrowMode", new Integer(PolyLineFigure.ARROW_TIP_BOTH),  this));
159c169
< 					view()
---
> 					this
173c183
< 			choice.addItem(new ChangeAttributeCommand(fonts[i], "FontName", fonts[i],  view()));
---
> 			choice.addItem(new ChangeAttributeCommand(fonts[i], "FontName", fonts[i],  this));
227c237
< 		button = new CommandButton(new DeleteCommand("Delete", view()));
---
> 		button = new CommandButton(new DeleteCommand("Delete", this));
230c240
< 		button = new CommandButton(new DuplicateCommand("Duplicate", view()));
---
> 		button = new CommandButton(new DuplicateCommand("Duplicate", this));
233c243
< 		button = new CommandButton(new GroupCommand("Group", view()));
---
> 		button = new CommandButton(new GroupCommand("Group", this));
236c246
< 		button = new CommandButton(new UngroupCommand("Ungroup", view()));
---
> 		button = new CommandButton(new UngroupCommand("Ungroup", this));
293c303
< 		return new SelectionTool(view());
---
> 		return new SelectionTool(this);
369a380,383
> 	public DrawingView[] views() {
> 		return new DrawingView[] { view() } ;
> 	}
> 
387a402,404
> 	public void viewSelectionChanged(DrawingView oldView, DrawingView newView) {
> 	}
> 
542a560,586
> 	protected void setUndoManager(UndoManager newUndoManager) {
> 		myUndoManager = newUndoManager;
> 	}
> 	
> 	public UndoManager getUndoManager() {
> 		return myUndoManager;
> 	}
> 
> 	protected VersionControlStrategy getVersionControlStrategy() {
> 		return new StandardVersionControlStrategy(this);
> 	}
> 
> 	/**
> 	 * Subclasses should override this method to specify to which versions of
> 	 * JHotDraw they are compatible. A string array is returned so it is possible
> 	 * to specify several version numbers of JHotDraw to which the application
> 	 * is compatible with.
> 	 *
> 	 * @return all versions number of JHotDraw the application is compatible with.
> 	 */
> 	public String[] getRequiredVersions() {
> 		String[] requiredVersions = new String[1];
> 		// return the version of the package we are in
> 		requiredVersions[0] = VersionManagement.getPackageVersion(DrawApplet.class.getPackage());
> 		return requiredVersions;
> 	}
> 
