diff --git a/platform/commonUI/general/src/controllers/TreeNodeController.js b/platform/commonUI/general/src/controllers/TreeNodeController.js index b25d58a025..518ae4f99f 100644 --- a/platform/commonUI/general/src/controllers/TreeNodeController.js +++ b/platform/commonUI/general/src/controllers/TreeNodeController.js @@ -19,7 +19,7 @@ * this source code distribution or the Licensing information page available * at runtime from the About dialog for additional information. *****************************************************************************/ -/*global define,Promise,window*/ +/*global define,Promise*/ /** * Module defining TreeNodeController. Created by vwoeltje on 11/10/14. @@ -77,7 +77,7 @@ define( ((navPath[index] === nodePath[index]) && checkPath(nodePath, navPath, index + 1)); } - + // Consider the currently-navigated object and update // parameters which support display. function checkSelection() { @@ -176,20 +176,19 @@ define( TreeNodeController.prototype.isSelected = function () { return this.isSelectedFlag; }; - + // Sets the selected object in the tree, to be the // currently represented object. If the user is on phone // and in portrait mode, than, hide the tree menu TreeNodeController.prototype.setObject = function (ngModel, domainObject) { ngModel.selectedObject = domainObject; - if (this.agentService.getOrientation(window.innerWidth, window.innerHeight) === "portrait" && - this.agentService.isPhone(navigator.userAgent)) { + if (this.agentService.isPhone() && this.agentService.isPortrait()) { this.$scope.$emit('select-obj'); } }; - + TreeNodeController.prototype.checkMobile = function () { - return this.agentService.isMobile(navigator.userAgent); + return this.agentService.isMobile(); }; return TreeNodeController; diff --git a/platform/commonUI/inspect/src/gestures/InfoButtonGesture.js b/platform/commonUI/inspect/src/gestures/InfoButtonGesture.js index 9dd3cf251c..9ef0222e54 100644 --- a/platform/commonUI/inspect/src/gestures/InfoButtonGesture.js +++ b/platform/commonUI/inspect/src/gestures/InfoButtonGesture.js @@ -58,11 +58,11 @@ define( dismissBubble(); dismissBubble = undefined; } - + // Detaches body touch listener body.off('touchstart', hideBubble); } - + // Displays the bubble by tracking position of // touch, using infoService to display the bubble, // and then on any body touch the bubble is dismissed @@ -77,7 +77,7 @@ define( domainObject.useCapability('metadata'), touchPosition ); - + // On any touch on the body, default body touches/events // are prevented, the bubble is dismissed, and the touchstart // body event is unbound, reallowing gestures @@ -87,12 +87,12 @@ define( body.unbind('touchstart'); }); } - + // Checks if you are on a mobile device, if the device is // mobile (agentService.isMobile() = true), then - // the a click on something (info button) brings up + // the a click on something (info button) brings up // the bubble - if (agentService.isMobile(navigator.userAgent)) { + if (agentService.isMobile()) { element.on('click', showBubble); } diff --git a/platform/commonUI/inspect/src/gestures/InfoGesture.js b/platform/commonUI/inspect/src/gestures/InfoGesture.js index 1eb9b595c8..09740841e4 100644 --- a/platform/commonUI/inspect/src/gestures/InfoGesture.js +++ b/platform/commonUI/inspect/src/gestures/InfoGesture.js @@ -65,11 +65,11 @@ define( this.infoService = infoService; this.delay = delay; this.domainObject = domainObject; - + // Checks if you are on a mobile device, if the device is // not mobile (agentService.isMobile() = false), then // the pendingBubble and therefore hovering is allowed - if (!agentService.isMobile(navigator.userAgent)) { + if (!agentService.isMobile()) { // Show bubble (on a timeout) on mouse over element.on('mouseenter', this.showBubbleCallback); } @@ -99,7 +99,7 @@ define( // arrays allocated while user mouses over things this.mousePosition = undefined; }; - + InfoGesture.prototype.showBubble = function (event) { var self = this; @@ -132,7 +132,7 @@ define( this.element.on('mouseleave', this.hideBubbleCallback); }; - + /** * Detach any event handlers associated with this gesture. diff --git a/platform/commonUI/mobile/src/MobileBrowseTreeController.js b/platform/commonUI/mobile/src/MobileBrowseTreeController.js index a3c3e60ed0..ca1abeb50a 100644 --- a/platform/commonUI/mobile/src/MobileBrowseTreeController.js +++ b/platform/commonUI/mobile/src/MobileBrowseTreeController.js @@ -31,17 +31,20 @@ define( "use strict"; function MobileBrowseTreeController($scope, navigationService, agentService) { - var object = navigationService.getNavigation(); + var object = navigationService.getNavigation(), + self = this; // Collapse tree when navigation changes function changeObject(newObject) { - if (newObject !== object) { + if (newObject !== object && agentService.isPortrait()) { object = newObject; - this.state = false; + self.state = false; } } - navigationService.listen(changeObject); + if (agentService.isMobile()) { + navigationService.listen(changeObject); + } this.state = true; } diff --git a/platform/representation/src/actions/ContextMenuAction.js b/platform/representation/src/actions/ContextMenuAction.js index fec5938c61..56e5fa33f9 100644 --- a/platform/representation/src/actions/ContextMenuAction.js +++ b/platform/representation/src/actions/ContextMenuAction.js @@ -71,6 +71,7 @@ define( scope = $rootScope.$new(), goLeft = eventCoors[0] + menuDim[0] > winDim[0], goUp = eventCoors[1] + menuDim[1] > winDim[1], + initiatingEvent = this.agentService.isMobile() ? 'touchstart' : 'mousedown', menu; // Remove the context menu @@ -107,27 +108,16 @@ define( body.append(menu); // Stop propagation so that clicks or touches on the menu do not close the menu - if (!(this.agentService.isMobile(navigator.userAgent))) { - menu.on('mousedown', function (event) { - event.stopPropagation(); - }); - } else if ((this.agentService.isMobile(navigator.userAgent))) { - menu.on('touchstart', function (event) { - event.stopPropagation(); - }); - } + menu.on(initiatingEvent, function (event) { + event.stopPropagation(); + }); // Dismiss the menu when body is clicked/touched elsewhere // ('mousedown' because 'click' breaks left-click context menus) // ('touchstart' because 'touch' breaks context menus up) - if (!(this.agentService.isMobile(navigator.userAgent))) { - body.on('mousedown', dismiss); - // NOTE: Apply to mobile? - menu.on('click', dismiss); - } else if (this.agentService.isMobile(navigator.userAgent)) { - body.on('touchstart', dismiss); - } - + body.on(initiatingEvent, dismiss); + // NOTE: Apply to mobile? + menu.on('click', dismiss); // Don't launch browser's context menu actionContext.event.preventDefault(); diff --git a/platform/representation/src/gestures/ContextMenuGesture.js b/platform/representation/src/gestures/ContextMenuGesture.js index 4de40586dd..e7c0c7ba9f 100644 --- a/platform/representation/src/gestures/ContextMenuGesture.js +++ b/platform/representation/src/gestures/ContextMenuGesture.js @@ -22,7 +22,7 @@ /*global define,Promise*/ /** - * Module defining ContextMenuGesture. + * Module defining ContextMenuGesture. * Created by vwoeltje on 11/17/14. Modified by shale on 06/30/2015. */ define( @@ -44,7 +44,7 @@ define( function ContextMenuGesture($timeout, agentService, element, domainObject) { var isPressing, longTouchTime = 500; - + function showMenu(event) { domainObject.getCapability('action').perform({ key: 'menu', @@ -52,20 +52,20 @@ define( event: event }); } - - // When context menu event occurs, show object actions instead - if (!agentService.isMobile(navigator.userAgent)) { - + + // When context menu event occurs, show object actions instead + if (!agentService.isMobile()) { + // When context menu event occurs, show object actions instead element.on('contextmenu', showMenu); - } else if (agentService.isMobile(navigator.userAgent)) { - + } else if (agentService.isMobile()) { + // If on mobile device, then start timeout for the single touch event // during the timeout 'isPressing' is true. element.on('touchstart', function (event) { if (event.touches.length < 2) { isPressing = true; - + // After the timeout, if 'isPressing' is // true, display context menu for object $timeout(function () { @@ -75,7 +75,7 @@ define( }, longTouchTime); } }); - + // Whenever the touch event ends, 'isPressing' is false. element.on('touchend', function (event) { isPressing = false;