"use strict";

var Address = require("../wType/address");

var Vocabulary = require("./vocabulary");
var File = require("./file/file");

var ImagePane = Vocabulary.inherit({
    "className": "ImagePane",
    "constructor": function(addr) {
        Vocabulary.fn.constructor.call(this, addr);
        
        this._hasImage = false;
        this.image = null;
    },
    "addElement": function(key, element) {
        if (key === "image" && !this._hasImage) {
            this._hasImage = true;
            this.image = new File(new Address(["images", element.toString()]));
            this.addForeignController("Corax", this.image);
        }
        Vocabulary.fn.addElement.call(this, key, element);
    },
    "hasImage": function() {
        return this._hasImage;
    },
    "removeElement": function(key) {
        Vocabulary.fn.removeElement.call(this, key);
        
        if (key === "image" && this._hasImage) {
            this.removeForeignController(this.image);
            
            this._hasImage = false;
            this.image.destructor();
            this.image = null;
        }
    }
});

module.exports = ImagePane;