<?php
/**
 * Main plugin class.
 *
 * @package BW_Admin_Column
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

class BW_Admin_Column {

	/**
	 * Singleton instance.
	 *
	 * @var BW_Admin_Column|null
	 */
	private static $instance = null;

	/**
	 * Get singleton instance.
	 *
	 * @return BW_Admin_Column
	 */
	public static function get_instance() {
		if ( null === self::$instance ) {
			self::$instance = new self();
		}
		return self::$instance;
	}

	/**
	 * Constructor.
	 */
	private function __construct() {
		$this->bw_load_dependencies();
		$this->bw_init_hooks();
	}

	/**
	 * Load required class files.
	 */
	private function bw_load_dependencies() {
		require_once BW_ADMIN_COLUMN_PATH . 'includes/class-bw-admin-column-settings.php';
		require_once BW_ADMIN_COLUMN_PATH . 'includes/class-bw-admin-column-columns.php';
		require_once BW_ADMIN_COLUMN_PATH . 'includes/class-bw-admin-column-ajax.php';
	}

	/**
	 * Initialize sub-classes in admin context.
	 */
	private function bw_init_hooks() {
		if ( is_admin() ) {
			BW_Admin_Column_Settings::get_instance();
			BW_Admin_Column_Columns::get_instance();
			BW_Admin_Column_Ajax::get_instance();
		}
	}
}
