I think my _holder
and/or _gooseAction
is null
.... Here are the relevant code/classes where _holder
and _gooseAction
are instantiated:
Goose.java
public class Goose {
//Goose class
private ActionHolder _holder;
private gooseAction _gooseAction;
public Goose (JPanel container, GooseAction action, ActionHolder holder) {
super(container);
_holder = holder;
_gooseAction = _holder.getAction();
_gooseAction = action;
}
public void react() {
_gooseAction.stop();
_holder.getAction();
_gooseAction = _holder.getAction();
_gooseAction.setObjective(this);
_gooseAction.start();
}
ControlPanel.java
public class ControlPanel {
//top level class
public ControlPanel() {
super();
_holder = new ActionHolder(_moveAction);
_drawingPanel = new DrawingPanel(_holder);
_gooseAction = new GooseAction();
_doNothing = new StopBehavior();
_kingGoose = new FollowBehavior(_kingGoose);
}
private GooseAction _gooseAction;
private ActionHolder _holder;
public class ActionHolder {
private GooseAction _GooseAction;
public ActionHolder(GooseAction Action) {
_gooseAction = Action;
}
public void setAction(GooseAction GooseAction) {
_gooseAction = GooseAction;
}
public GooseAction getAction() {
return _gooseAction.copy();
}
}
public class ActionButton extends JButton {
public ActionButton(String string, boolean b, GooseAction action, ActionHolder holder) {
super(string, b);
_holder = holder;
_gooseAction = action;
}
}
private class ActionListener implements ChangeListener {
public ActionListener(GooseAction action) {
}
public void stateChanged(ChangeEvent e) {
_holder.setAction(_gooseAction);
}
}