public Mission()
        {
            TreeViewNodes = null;
            TreeViewStatements = null;
            FlowLayoutPanelMain = null;
            FormMain = null;
            LabelMain = null;
            StatusStripMain = null;
            ToolStripObjectsTotal = null;
            ContextMenuStripForLabels = null;

            AssignFlowPanel();
            AssignNodeTreeView();
            AssignStatementTreeView();
            AssignForm();
            AssignLabel();
            AssignStatusToolStrip();
            AssignContextMenuStripForLabels();

            Dependencies = new DependencyGraph();

            AmountOfMissionEndStatements = 0;
            AmountOfCreatePlayerStatements = 0;
            VariableSetNames = new List<string>();
            VariableCheckNames = new List<string>();
            VariableCheckLocations = new Dictionary<string, List<MissionNode>>();
            TimerSetNames = new List<string>();
            TimerCheckNames = new List<string>();
            AllCreatedObjectNames = new List<string>();
            VariableNames = new List<string>();
            VariableNameHeaders = new List<string>();
            TimerNames = new List<string>();
            TimerNameHeaders = new List<string>();
            NamedObjectNames = new Dictionary<string,List<string>>();
            NamedObjectNames.Add("anomaly", new List<string>());
            NamedObjectNames.Add("blackHole", new List<string>());
            NamedObjectNames.Add("enemy", new List<string>());
            NamedObjectNames.Add("neutral", new List<string>());
            NamedObjectNames.Add("genericMesh", new List<string>());
            NamedObjectNames.Add("player", new List<string>());
            NamedObjectNames.Add("station", new List<string>());
            NamedObjectNames.Add("monster", new List<string>());
            NamedObjectNames.Add("whale", new List<string>());

            UndoStack = new Stack<MissionSavedState>();
            RedoStack = new Stack<MissionSavedState>();

            EventCount = 0;

            SuppressSelectionEvents = false;
            SupressSelectionEvents = false;
            SupressExpandCollapseEvents = false;
            UpdateSemaphoreCounter = 0;
        }
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            //MY INIT:
            if (!Settings.Load())
            {
                Settings.Current = new Settings();
                Settings.Save();
            }

            string missionFileName = null;
            string customVesselDataFileName = null;

            string[] argList = Environment.GetCommandLineArgs();
            if (argList.Length > 2 && argList[1] == "-v")
                customVesselDataFileName = argList[2];
            else if (argList.Length > 3 && argList[2] == "-v")
                customVesselDataFileName = argList[3];
            if (argList.Length > 1 && argList[1] != "-v")
                missionFileName = argList[1];

            FormLogInstance = new FormLog();
            FormMainInstance = new FormMain();
            FormSettingsInstance = new FormSettings();
            FormFindReplaceInstance = new   FormFindReplace();
            FormSearchResultsInstance = new   FormSearchResults();
            FormDependencyInstance  = new   FormDependency();
            FormHelpInstance	= new	FormHelp();
            FormMissionPropertiesInstance	= new	FormMissionProperties();
            FormNotepadInstance = new FormNotepad();

            AllOwnedForms = new List<Form>();
            AllOwnedForms.Add(FormSettingsInstance);
            AllOwnedForms.Add(FormSettingsInstance);
            AllOwnedForms.Add(FormFindReplaceInstance);
            AllOwnedForms.Add(FormSearchResultsInstance);
            AllOwnedForms.Add(FormDependencyInstance);
            AllOwnedForms.Add(FormHelpInstance);
            AllOwnedForms.Add(FormMissionPropertiesInstance);
            AllOwnedForms.Add(FormNotepadInstance);
            AllOwnedForms.Add(FormLogInstance);

            foreach (Form form in AllOwnedForms)
            {
                form.Owner = FormMainInstance;
                form.Deactivate +=  new EventHandler((object sender, EventArgs e) => { ((Form)sender).Opacity = Settings.Current.FormOpacity; });
                form.Activated += new EventHandler((object sender, EventArgs e) => { ((Form)sender).Opacity = 1.0; });
            }

            string currentVesselDataPathToLoad = customVesselDataFileName ?? Settings.Current.DefaultVesselDataPath;
            if (File.Exists(currentVesselDataPathToLoad))
                VesselData.Current.Load(currentVesselDataPathToLoad);

            if (File.Exists(missionFileName))
                Mission.Current.FromFile(missionFileName);

            //Start
            Application.Run(FormMainInstance);
        }
        /// <summary> Assign new form to the mission </summary>
        public void AssignForm(Forms.FormMain value = null)
        {
            if (FormMain != null)
            {
                FormMain.KeyDown -= _E_form_KeyDown;
            }
            FormMain = null;

            if (value == null)
                return;

            FormMain = value;
            FormMain.KeyDown += _E_form_KeyDown;
        }