package com.limegroup.gnutella.gui.options;
import java.awt.Container;
import java.io.IOException;
import com.limegroup.gnutella.gui.options.panes.PaneItem;
/**
* An object that defines the basic functionality of an <i>OptionsPane</i>,
* or one panel specifying a set of options in the options window.<p>
*
* Each <tt>OptionsPane</tt> has a unique identifying name that allows it
* to be displayed in the <tt>CardLayout</tt>.
*/
//2345678|012345678|012345678|012345678|012345678|012345678|012345678|012345678|
public interface OptionsPane {
/**
* Returns the name of this <tt>OptionsPane</tt>.
*
* @return the name of this <tt>OptionsPane</tt>
*/
String getName();
/**
* Returns the <tt>Container</tt> instance that holds the different
* elements of this <tt>OptionsPane</tt>.
*
* @return the <tt>Container</tt> associated with this <tt>OptionsPane</tt>
*/
Container getContainer();
/**
* Adds a new option item to this pane.
*
* @param item the <tt>PaneItem</tt> instance to add to this
* <tt>OptionsPane</tt>
*/
void add(PaneItem item);
/**
* Sets the options for the fields in this <tt>OptionsPane</tt> when
* the window is shown.
*/
void initOptions();
/**
* Applies the currently selected options in this options pane to get
* stored to disk. Returns true if LimeWire must be restarted for the
* option to fully take effect, false otherwise.
*
* @throws IOException if the options could not be fully applied
* @return a boolean indicating whether or not a restart is required.
*/
boolean applyOptions() throws IOException;
/**
* Determines if any of the PaneItems in this OptionPane require saving.
*/
boolean isDirty();
}