 Maslosoft Framework Documentation
	Maslosoft Framework Documentation
		Flexible Application Foundation
	
Settings Tabs
	This is a helper base class to create tabbed sub-settings. This will create
	tabs out of array of provided widgets. It is meant to be used with
	application settings infrastructure. This will add tab with @Label
	label.
Implementation
	First requirement is label. The @Label must be placed on
	class extending from SettingsTabs.
	SettingsTabs require only one method getWidgets(), which
	should return array of widgets of type WidgetInterface.
	Each widget should implement ModelAwareInterface which should return working model.
Each of widget is responsible for assiging model to it's form.
	Each of the widget must also have @Label annotation, which
	will be used as a tab title.
Example:
In this example, there is no live demo
/**
 * @Label('Content')
 */
class SettingsWidget extends SettingsTabs
{
	public function getWidgets()
	{
		return [
			new ImageSettings,
			new BrandSettings,
			new ThemeSettings
		];
	}
}
	Each of widget returned by getWidgets() is self-contained
	model editing entity.
Example sub-widget
/**
 * @Label('Images')
 */
class ImageSettings extends MsWidget implements AnnotatedInterface,
		ModelAwareInterface,
		WidgetInterface
{
	use ModelAware;
	public function init()
	{
		$this->setModel(new ImageSettingsModel());
	}
	public function run()
	{
		$model = $this->getModel();
		$model->load();
		$html = [];
		$html[] = (string) $form = new ActiveForm([
			'model' => $model
		]);
		$html[] = $form->renderFields();
		$html[] = $form->close();
		return implode("\n", $html);
	}
}
The Outcome of Implementation
	Example image of result of implementing SettingsTabs like in example above:
	 
