<!DOCTYPE html>
<!--
Copyright (c) 2013 The Chromium Authors. All rights reserved.
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->

<link rel="import" href="/base/extension_registry.html">
<link rel="import" href="/base/ui.html">

<script>
'use strict';

tr.exportTo('tr.c.analysis', function() {
  var ObjectInstanceView = tr.b.ui.define('object-instance-view');

  ObjectInstanceView.prototype = {
    __proto__: HTMLUnknownElement.prototype,

    decorate: function() {
      this.objectInstance_ = undefined;
    },

    get requiresTallView() {
      return true;
    },

    set modelEvent(obj) {
      this.objectInstance = obj;
    },

    get modelEvent() {
      return this.objectInstance;
    },

    get objectInstance() {
      return this.objectInstance_;
    },

    set objectInstance(i) {
      this.objectInstance_ = i;
      this.updateContents();
    },

    updateContents: function() {
      throw new Error('Not implemented');
    }
  };

  var options = new tr.b.ExtensionRegistryOptions(
      tr.b.TYPE_BASED_REGISTRY_MODE);
  options.mandatoryBaseClass = ObjectInstanceView;
  options.defaultMetadata = {
    showInTrackView: true
  };
  tr.b.decorateExtensionRegistry(ObjectInstanceView, options);

  return {
    ObjectInstanceView: ObjectInstanceView
  };
});
</script>
