From 488e40e635fc7b86946c518d4b97ea278c196a83 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 25 Mar 2015 18:17:03 -0700 Subject: [PATCH] Add 1.0 preview mode bridge Model class --- src/atom.coffee | 8 +++++--- src/model.coffee | 27 +++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 src/model.coffee diff --git a/src/atom.coffee b/src/atom.coffee index 463f5a7bf..427811162 100644 --- a/src/atom.coffee +++ b/src/atom.coffee @@ -8,7 +8,6 @@ shell = require 'shell' _ = require 'underscore-plus' {deprecate, includeDeprecations} = require 'grim' {CompositeDisposable, Emitter} = require 'event-kit' -{Model} = require 'theorist' fs = require 'fs-plus' {convertStackTrace, convertLine} = require 'coffeestack' @@ -16,13 +15,16 @@ fs = require 'fs-plus' WindowEventHandler = require './window-event-handler' StylesElement = require './styles-element' -SuperClass = if includeDeprecations then Model else Object +if includeDeprecations + {Model} = require 'theorist' +else + Model = require './model' # Essential: Atom global for dealing with packages, themes, menus, and the window. # # An instance of this class is always available as the `atom` global. module.exports = -class Atom extends SuperClass +class Atom extends Model @version: 1 # Increment this when the serialization format changes # Load or create the Atom environment in the given mode. diff --git a/src/model.coffee b/src/model.coffee new file mode 100644 index 000000000..b590082a5 --- /dev/null +++ b/src/model.coffee @@ -0,0 +1,27 @@ +PropertyAccessors = require 'property-accessors' + +nextInstanceId = 1 + +module.exports = +class Model + PropertyAccessors.includeInto(this) + + @resetNextInstanceId: -> nextInstanceId = 1 + + constructor: (params) -> + @assignId(params?.id) + + assignId: (id) -> + @id ?= id ? nextInstanceId++ + + @::advisedAccessor 'id', + set: (id) -> nextInstanceId = id + 1 if id >= nextInstanceId + + destroy: -> + return unless @isAlive() + @alive = false + @destroyed?() + + isAlive: -> @alive + + isDestroyed: -> not @isAlive()