public class PaletteStackEditPart {

// listen to changes in palette layout.
private PropertyChangeListener paletteLayoutListener = new PropertyChangeListener() {};

// listen to changes in stack
private PropertyChangeListener stackListener = new PropertyChangeListener() {
	};
		}
	}
};

// listen to changes of clickable tool figure
private ChangeListener clickableListener = new ChangeListener() {};

}