old_contents: /**
   * Created by nuintun on 2015/11/19.
   */
  
  'use strict';
  
  var fs = require('fs');
  var path = require('path');
  var ipc = require('ipc-renderer');
  var Vue = require('../../vue/vue');
  
  require('../project-base');
  
  module.exports = Vue.component('app-configure', {
    template: fs.readFileSync(path.join(__dirname, 'app-configure.html')).toString(),
    props: {
      configure: {
        type: Object,
        twoWay: true,
        required: true
      },
      unique: {
        type: Object,
        required: true
      }
    },
    data: function (){
      return {
        name: '',
        path: '',
        showPopup: false
      }
    },
    methods: {
      appConfigure: function (command, configure){
        ipc.send('app-configure', command, configure);
      },
      hidePopup: function (){
        this.showPopup = false;
        // clean input
        var base = this.$refs.base;
  
        base.$emit('reset-input');
        base.$emit('reset-error');
      },
      add: function (){
        var base = this.$refs.base;
  
        if (base.isValid()) {
          this.showPopup = false;
  
          // add
          this.configure.projects.push({
            name: this.name,
            path: this.path,
            env: [],
            command: []
          });
  
          // active index
          var index = Math.max(0, this.configure.projects.length - 1);
  
          // clean
          base.$emit('reset-input');
          // send message
          this.$dispatch('change-active', index, true);
          this.$dispatch('save-configure');
        }
      }
    },
    created: function (){
      var context = this;
  
      document.addEventListener('click', function (event){
        var target = event.target;
        var popup = context.$els.popup;
        var trigger = context.$els.popupTrigger;
  
        if (trigger.contains(target) || popup.contains(target)) {
          context.showPopup = true;
        } else if (context.showPopup) {
          context.hidePopup();
        }
      });
    }
  });
  
new_contents: /**
   * Created by nuintun on 2015/11/19.
   */
  
  'use strict';
  
  var fs = require('fs');
  var path = require('path');
  var ipc = require('ipc-renderer');
  var Vue = require('../../vue/vue');
  
  require('../project-base');
  
  module.exports = Vue.component('app-configure', {
    template: fs.readFileSync(path.join(__dirname, 'app-configure.html')).toString(),
    props: {
      configure: {
        type: Object,
        twoWay: true,
        required: true
      },
      unique: {
        type: Object,
        required: true
      }
    },
    data: function (){
      return {
        name: '',
        path: '',
        showPopup: false
      }
    },
    methods: {
      appConfigure: function (command, configure){
        ipc.send('app-configure', command, configure);
      },
      hidePopup: function (){
        this.showPopup = false;
        // clean input
        var base = this.$refs.base;
  
        base.$emit('reset-input');
        base.$emit('reset-error');
      },
      add: function (){
        var base = this.$refs.base;
  
        if (base.isValid()) {
          // add
          this.configure.projects.push({
            name: this.name,
            path: this.path,
            env: [],
            command: []
          });
  
          // active index
          var index = Math.max(0, this.configure.projects.length - 1);
  
          // send message
          this.$dispatch('change-active', index, true);
          this.$dispatch('save-configure');
  
          // hide popup
          this.showPopup = false;
          // clean
          base.$emit('reset-input');
        }
      }
    },
    created: function (){
      var context = this;
  
      document.addEventListener('click', function (event){
        var target = event.target;
        var popup = context.$els.popup;
        var trigger = context.$els.popupTrigger;
  
        if (trigger.contains(target) || popup.contains(target)) {
          context.showPopup = true;
        } else if (context.showPopup) {
          context.hidePopup();
        }
      });
    }
  });
  
subject: update files