//
// @(#)AbstractCFPListener.java 12/2003
//
// Copyright 2003 Zachary DelProposto. All rights reserved.
// Use is subject to license terms.
//
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
// Or from http://www.gnu.org/
//
package dip.gui;
import dip.world.World;
import dip.world.TurnState;
import dip.world.Power;
import dip.order.Orderable;
import dip.gui.map.MapMetadata;
import dip.order.ValidationOptions;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeEvent;
/**
* An Abstract ClientFrame PropertyChangeListener.
* <p>
* The advantage of using this class is cleaner code, and easier
* subclassing. Errors are reduced, because only appropriate
* and type-correct arguments are passed to the handler methods.
* <p>
* The propertyChange() method is final; it dispatches
* property change events to the handler methods; there should be no need to
* override this method in subclasses.
* <p>
* All handler methods do nothing by default.
*/
public abstract class AbstractCFPListener implements PropertyChangeListener
{
/** Process PropertyChangeEvents into appropriate sub-methods. Marked final for safety. */
public final void propertyChange(PropertyChangeEvent evt)
{
final String name = evt.getPropertyName();
if(name == ClientFrame.EVT_WORLD_CREATED)
{
final World w = (World) evt.getNewValue();
actionWorldCreated(w);
}
else if(name == ClientFrame.EVT_WORLD_DESTROYED)
{
final World w = (World) evt.getOldValue();
actionWorldDestroyed(w);
}
else if(name == ClientFrame.EVT_MODIFIED_STATE)
{
actionStateModified();
}
else if(name == ClientFrame.EVT_TURNSTATE_CHANGED)
{
final TurnState ts = (TurnState) evt.getNewValue();
actionTurnstateChanged(ts);
}
else if(name == ClientFrame.EVT_TURNSTATE_ADDED)
{
final TurnState ts = (TurnState) evt.getNewValue();
actionTurnstateAdded(ts);
}
else if(name == ClientFrame.EVT_TURNSTATE_REMOVED)
{
actionTurnstateRemoved();
}
else if(name == ClientFrame.EVT_TURNSTATE_RESOLVED)
{
final TurnState ts = (TurnState) evt.getNewValue();
actionTurnstateResolved(ts);
}
else if(name == ClientFrame.EVT_MODE_CHANGED)
{
final String mode = (String) evt.getNewValue();
actionModeChanged(mode);
}
else if(name == ClientFrame.EVT_VALOPTS_CHANGED)
{
final ValidationOptions options = (ValidationOptions) evt.getNewValue();
actionValOptsChanged(options);
}
else if(name == ClientFrame.EVT_MMD_READY)
{
final MapMetadata mmd = (MapMetadata) evt.getNewValue();
actionMMDReady(mmd);
}
else if(name == ClientFrame.EVT_ORDER_CREATED)
{
final Orderable order = (Orderable) evt.getNewValue();
actionOrderCreated(order);
}
else if(name == ClientFrame.EVT_ORDER_DELETED)
{
final Orderable order = (Orderable) evt.getOldValue();
actionOrderDeleted(order);
}
else if(name == ClientFrame.EVT_MULTIPLE_ORDERS_CREATED)
{
final Orderable[] orders = (Orderable[]) evt.getNewValue();
actionOrdersCreated(orders);
}
else if(name == ClientFrame.EVT_MULTIPLE_ORDERS_DELETED)
{
final Orderable[] orders = (Orderable[]) evt.getOldValue();
actionOrdersDeleted(orders);
}
else if(name == ClientFrame.EVT_DISPLAYABLE_POWERS_CHANGED)
{
final Power[] newPowers = (Power[]) evt.getNewValue();
final Power[] oldPowers = (Power[]) evt.getOldValue();
actionDisplayablePowersChanged(oldPowers, newPowers);
}
else if(name == ClientFrame.EVT_ORDERABLE_POWERS_CHANGED)
{
final Power[] newPowers = (Power[]) evt.getNewValue();
final Power[] oldPowers = (Power[]) evt.getOldValue();
actionOrderablePowersChanged(oldPowers, newPowers);
}
}// propertyChange()
/** Invoked when a World is created */
public void actionWorldCreated(World w) {}
/** Invoked when a World is destroyed */
public void actionWorldDestroyed(World w) {}
/** Invoked when state changes from saved state */
public void actionStateModified() {}
/** Invoked when a TurnState changes */
public void actionTurnstateChanged(TurnState ts) {}
/** Invoked when a TurnState is added to the World */
public void actionTurnstateAdded(TurnState ts) {}
/** Invoked when a TurnState is removed from the World */
public void actionTurnstateRemoved() {}
/** Invoked when a TurnState has been resolved */
public void actionTurnstateResolved(TurnState ts) {}
/** Invoked when Validation Options have changed */
public void actionValOptsChanged(ValidationOptions options) {}
/** Invoked when the Mode has changed (see ClientFrame) */
public void actionModeChanged(String mode) {}
/** Invoked when MapMetadata information is ready/not ready */
public void actionMMDReady(MapMetadata mmd) {}
/** Invoked when an Order is created */
public void actionOrderCreated(Orderable order) {}
/** Invoked when an Order is deleted */
public void actionOrderDeleted(Orderable order) {}
/** Invoked when multiple Orders are created */
public void actionOrdersCreated(Orderable[] orders) {}
/** Invoked when multiple Orders are deleted */
public void actionOrdersDeleted(Orderable[] orders) {}
/** Invoked when the orderable Powers have changed */
public void actionOrderablePowersChanged(Power[] oldPowers, Power[] newPowers) {}
/** Invoked when the displayable Powers have changed */
public void actionDisplayablePowersChanged(Power[] oldPowers, Power[] newPowers) {}
}// class AbstractCFPListener