/* Copyright (C) 2001, 2007 United States Government as represented by
the Administrator of the National Aeronautics and Space Administration.
All Rights Reserved.
*/
package gov.nasa.worldwind.util.wizard;
import javax.swing.*;
import java.util.Map;
import java.util.HashMap;
import java.beans.PropertyChangeSupport;
import java.beans.PropertyChangeListener;
/**
* @author dcollins
* @version $Id: WizardModel.java 4529 2008-02-20 03:27:48Z dcollins $
*/
public class WizardModel extends WizardProperties
{
private Map<Object, WizardPanelDescriptor> panels;
public static final String CURRENT_PANEL_DESCRIPTOR = "wizard.CurrentPanelDescriptor";
public static final String BACK_BUTTON_TEXT = "wizard.BackButtonText";
public static final String NEXT_BUTTON_TEXT = "wizard.NextButtonText";
public static final String CANCEL_BUTTON_TEXT = "wizard.CancelButtonText";
public static final String BACK_BUTTON_ENABLED = "wizard.BackButtonEnabled";
public static final String NEXT_BUTTON_ENABLED = "wizard.NextButtonEnabled";
public static final String CANCEL_BUTTON_ENABLED = "wizard.CancelButtonEnabled";
public static final String BACK_BUTTON_ICON = "wizard.BackButtonIcon";
public static final String NEXT_BUTTON_ICON = "wizard.NextButtonIcon";
public static final String CANCEL_BUTTON_ICON = "wizard.CancelButtonIcon";
public WizardModel()
{
this.panels = new HashMap<Object, WizardPanelDescriptor>();
}
public WizardPanelDescriptor getWizardPanel(Object id)
{
return this.panels.get(id);
}
public void registerWizardPanel(Object id, WizardPanelDescriptor panel)
{
if (id != null && panel != null)
{
this.panels.put(id, panel);
}
}
public WizardPanelDescriptor getCurrentPanel()
{
Object value = getProperty(CURRENT_PANEL_DESCRIPTOR);
return (value != null && value instanceof WizardPanelDescriptor) ? (WizardPanelDescriptor) value : null;
}
public boolean setCurrentPanel(Object id)
{
boolean success = false;
WizardPanelDescriptor newPanel = this.panels.get(id);
if (newPanel != null)
{
WizardPanelDescriptor oldPanel = getCurrentPanel();
if (oldPanel != newPanel)
{
setProperty(CURRENT_PANEL_DESCRIPTOR, newPanel);
firePropertyChange(CURRENT_PANEL_DESCRIPTOR, oldPanel, newPanel);
}
success = true;
}
return success;
}
public String getBackButtonText()
{
return getStringProperty(BACK_BUTTON_TEXT);
}
public void setBackButtonText(String newText)
{
setProperty(BACK_BUTTON_TEXT, newText);
}
public String getNextButtonText()
{
return getStringProperty(NEXT_BUTTON_TEXT);
}
public void setNextButtonText(String newText)
{
setProperty(NEXT_BUTTON_TEXT, newText);
}
public String getCancelButtonText()
{
return getStringProperty(CANCEL_BUTTON_TEXT);
}
public void setCancelButtonText(String newText)
{
setProperty(CANCEL_BUTTON_TEXT, newText);
}
public Boolean isBackButtonEnabled()
{
return getBooleanProperty(BACK_BUTTON_ENABLED);
}
public void setBackButtonEnabled(Boolean newValue)
{
setProperty(BACK_BUTTON_ENABLED, newValue);
}
public Boolean isNextButtonEnabled()
{
return getBooleanProperty(NEXT_BUTTON_ENABLED);
}
public void setNextButtonEnabled(Boolean newValue)
{
setProperty(NEXT_BUTTON_ENABLED, newValue);
}
public Boolean isCancelButtonEnabled()
{
return getBooleanProperty(CANCEL_BUTTON_ENABLED);
}
public void setCancelButtonEnabled(Boolean newValue)
{
setProperty(CANCEL_BUTTON_ENABLED, newValue);
}
public Icon getBackButtonIcon()
{
return getIconProperty(BACK_BUTTON_ICON);
}
public void setBackButtonIcon(Icon newIcon)
{
setProperty(BACK_BUTTON_ICON, newIcon);
}
public Icon getNextButtonIcon()
{
return getIconProperty(NEXT_BUTTON_ICON);
}
public void setNextButtonIcon(Icon newIcon)
{
setProperty(NEXT_BUTTON_ICON, newIcon);
}
public Icon getCancelButtonIcon()
{
return getIconProperty(CANCEL_BUTTON_ICON);
}
public void setCancelButtonIcon(Icon newIcon)
{
setProperty(CANCEL_BUTTON_ICON, newIcon);
}
public Icon getIconProperty(String propertyName)
{
Object value = getProperty(propertyName);
return (value != null && value instanceof Icon) ? (Icon) value : null;
}
}