Skip to content
Snippets Groups Projects
Select Git revision
  • fa8b0999600997305f4e16b71071e716a990cb29
  • master default
  • dev
3 results

MSetupMenuView.js

Blame
  • ContextMenu.js 2.03 KiB
    /**
     * Created by aghassaei on 10/23/15.
     */
    
    
    define(['jquery', 'underscore', 'backbone', 'text!menus/contextMenu/MaterialsContextMenu.html'],
        function($, _, Backbone, template){
    
        if (document.addEventListener) {
            document.addEventListener('contextmenu', function(e) {
                var type = getContextMenuType(e);
                if (type) {
                    e.preventDefault();
                    handleContextMenuEvent(e, type);
                }
            }, false);
        } else {
            document.attachEvent('oncontextmenu', function() {
                var type = getContextMenuType(window.event);
                if (type) {
                    window.event.returnValue = false;
                    handleContextMenuEvent(e, type);
                }
            });
        }
    
        var $wrapper = $("#contextMenuWrapper");
    
        var ContextMenu = Backbone.View.extend({
    
            el: '#contextMenu',
    
            object: null,
    
            initialize: function(){
            },
    
            renderMaterialsMenu: function(e){
                this.object = $(e.target).parents("label.colorSwatches").children("input").val();
                var templateJSON = {};
                this.$el.html(_.template(template)(templateJSON));
                this.showMenu(e);
            },
    
            showMenu: function(e){
                var padding = parseInt($wrapper.css("padding"));
                var left = e.pageX-padding;
                if ($('body').width()-200 < left) left -= 200;
                $wrapper.css({left:left, top: e.pageY-padding});
                $wrapper.show();
            },
    
            hideMenu: function(){
                $wrapper.hide();
            }
    
        });
    
        var contextMenu = new ContextMenu();
    
        $wrapper.mouseleave(function(){
            contextMenu.hideMenu();
        });
    
        function getContextMenuType(e){
            var $target = $(e.target);
            var elem = $target.get(0);
            if ($target.parents("label.colorSwatches").length == 1){
                return "materials";
            }
            return null;
        }
    
        function handleContextMenuEvent(e, type){
            if (type == "materials") contextMenu.renderMaterialsMenu(e);
        }
    
    });