/*
    ------------------------------------------------------------------

    This file is part of the Open Ephys GUI
    Copyright (C) 2012 Open Ephys

    ------------------------------------------------------------------

    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 3 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, see <http://www.gnu.org/licenses/>.

*/

#ifndef __ACCESSCLASS_H_CE1DC2DE__
#define __ACCESSCLASS_H_CE1DC2DE__

#include "../JuceLibraryCode/JuceHeader.h"

class UIComponent;
class EditorViewport;
class ProcessorList;
class DataViewport;
class ProcessorGraph;
class MessageCenter;
class ControlPanel;
class AudioComponent;

/**
  
  Allows subclasses to access important pointers within the application.

  @see UIComponent

*/

class AccessClass : public ActionBroadcaster
{
public:

	AccessClass() { }
	~AccessClass() { }
	
	void setUIComponent(UIComponent*);

	virtual void updateChildComponents() {}

	EditorViewport* getEditorViewport() {return ev;}
	DataViewport* getDataViewport() {return dv;}
	ProcessorList* getProcessorList() {return pl;}
	ProcessorGraph* getProcessorGraph() {return pg;}
	ControlPanel* getControlPanel() {return cp;}
	MessageCenter* getMessageCenter() {return mc;}
	UIComponent* getUIComponent() {return ui;}
	AudioComponent* getAudioComponent() {return ac;}

private:

	UIComponent* ui;
	EditorViewport* ev;
	ProcessorList* pl;
	DataViewport* dv;
	ProcessorGraph* pg;
	ControlPanel* cp;
	MessageCenter* mc;
	AudioComponent* ac;

};


#endif  // __ACCESSCLASS_H_CE1DC2DE__