Package org.jdesktop.wonderland.client.input

Examples of org.jdesktop.wonderland.client.input.InputManager


        // Note: this also creates the view manager.
        // TODO: low bug: we would like to initialize the input manager BEFORE
        // frame.setVisible. But if we create the camera before frame.setVisible
        // the client window never appears.
        CameraComponent cameraComp = viewManager.getCameraComponent();
        InputManager inputManager = ClientContext.getInputManager();
        inputManager.initialize(frame.getCanvas(), cameraComp);

        // Default Policy: Enable global key and mouse focus everywhere
        // Note: the app base will impose its own (different) policy later
        inputManager.addKeyMouseFocus(inputManager.getGlobalFocusEntity());

        /* For Testing FocusEvent3D
        InputManager3D.getInputManager().addGlobalEventListener(
        new EventClassListener () {
        private final Logger logger = Logger.getLogger("My Logger");
View Full Code Here


   
    /**
     * Provides a raw input event to process
     */
    protected void inputEvent(Event event) {
        InputManager inputManager = InputManager.inputManager();       
        Entity entity = event.getEntity();
                       
        // Implement hover. We check if the event interrupts hover and we
        // restart the timer. If we kill a timer, there may be an executing
        // hover task run() method. This may lead to a race condition where
        // the run() method has been called at the same time a hover interrupt
        // event happens. To fix this, we keep track of when we kicked off
        // the last timer event.
        if (policy.isHoverInterrupt(event) == true) {
            synchronized(this) {
                // Cancel the current timer (although a run() method of the timer
                // may still happen as a race condition
                if (hoverTimer != null) {
                    hoverTimer.cancel();
                }
               
                // If there is a currently hovering entity, then send a stop
                // event
                MouseEvent mouseEvent = (MouseEvent) ((MouseEvent3D) event).getAwtEvent();
                if (hoverEntity != null) {
                    inputManager.postEvent(new HoverEvent(hoverEntity, false, mouseEvent));
                    hoverEntity = null;
                }
               
                // Update the hover start time. This will cause any remaining
                // timer tasks that may have been run to ignore themselves
                hoverStartTime = System.currentTimeMillis();
               
                // Launch a new timer task, but not unless we are actually over
                // a non-null entity
                if (entity != null) {
                    HoverTimerTask task = new HoverTimerTask(entity, hoverStartTime, mouseEvent);
                    hoverTimer = new Timer();
                    hoverTimer.schedule(task, policy.getHoverDelay());
                }
            }
        }
       
        if (policy.isClearedSelection(event) == true) {
            // If we wish to clear the selection, then simply clear out the
            // list and fire an event
            selectedEntityList.clear();
            inputManager.postEvent(new SelectionEvent(new LinkedList(selectedEntityList)));
            return;
        }
        else if (policy.isSingleSelection(event) == true) {
            // issue #1115: ignore the event if it is selecting an object that
            // is already selected
            if (selectedEntityList.contains(entity) == true) {
                // OWL issue #177: send an empty context event to ensure that
                // any visible context menus are hidden in this case
                MouseEvent mouseEvent = (MouseEvent) ((MouseEvent3D) event).getAwtEvent();
                inputManager.postEvent(new ContextEvent(new LinkedList(), mouseEvent));
               
                return;
            }

            // Clear out the list, add the new Entity and fire an event
            selectedEntityList.clear();
            selectedEntityList.add(entity);
            inputManager.postEvent(new SelectionEvent(new LinkedList(selectedEntityList)));
            return;
        }
        else if (policy.isMultiSelection(event) == true) {
            // If the Entity is already selected, then remove it from the
            // selection list. If not already present, then add it
            // Reset the selection possible. If the entity is not selected,
            // then select it (only). If the entity is selected, then do
            // nothing (if it is part of a group of selected entities)
            if (selectedEntityList.contains(entity) == false) {
                selectedEntityList.add(entity);
            }
            else {
                selectedEntityList.remove(entity);
            }
            inputManager.postEvent(new SelectionEvent(new LinkedList(selectedEntityList)));
            return;
        }
        else if (policy.isEnter(event) == true) {
            enterEntity = entity;
            inputManager.postEvent(new EnterExitEvent(entity, true));
        }
        else if (policy.isExit(event) == true) {
            Entity eventEntity = enterEntity;
            enterEntity = null;
            inputManager.postEvent(new EnterExitEvent(eventEntity, false));
        }
        else if (policy.isActivation(event) == true) {
            inputManager.postEvent(new ActivatedEvent(entity));
        }
        else if (policy.isContext(event) == true) {
            // We use the context event to clear the selected entity list first
            selectedEntityList.clear();

            // If there is an entity for the mouse event, then add the entity to
            // the list and pass a Selection event too.
            if (entity != null) {
                selectedEntityList.add(entity);
                LinkedList entityList = new LinkedList(selectedEntityList);
                inputManager.postEvent(new SelectionEvent(entityList));
            }

            // Pass the mouse event for now so we know where the event was
            // fired. We sent this even if the entity is null, so the context
            // menu can be cleared.
            LinkedList entityList = new LinkedList(selectedEntityList);
            MouseEvent mouseEvent = (MouseEvent) ((MouseEvent3D) event).getAwtEvent();
            inputManager.postEvent(new ContextEvent(entityList, mouseEvent));
        }
    }
View Full Code Here

     * manager for others to handle.
     *
     * @param event The scene event to post to the system
     */
    public void postEvent(SceneEvent event) {
        InputManager inputManager = InputManager.inputManager();
        Entity entity = ((SceneEvent)event).getPrimaryEntity();

        // Much of this code duplicates the inputEvent() method -- there seems
        // to be no way around this duplication for now.
       
        // Implement hover. We check if the event interrupts hover and we
        // restart the timer. If we kill a timer, there may be an executing
        // hover task run() method. This may lead to a race condition where
        // the run() method has been called at the same time a hover interrupt
        // event happens. To fix this, we keep track of when we kicked off
        // the last timer event.
        if (event instanceof HoverEvent) {
            synchronized(this) {
                // Cancel the current timer (although a run() method of the timer
                // may still happen as a race condition
                if (hoverTimer != null) {
                    hoverTimer.cancel();
                }

                // If there is a currently hovering entity, then send a stop
                // event
                MouseEvent mouseEvent = (MouseEvent) ((HoverEvent) event).getMouseEvent();
                if (hoverEntity != null) {
                    inputManager.postEvent(new HoverEvent(hoverEntity, false, mouseEvent));
                    hoverEntity = null;
                }

                // Update the hover start time. This will cause any remaining
                // timer tasks that may have been run to ignore themselves
                hoverStartTime = System.currentTimeMillis();

                // Launch a new timer task, but not unless we are actually over
                // a non-null entity
                if (entity != null) {
                    HoverTimerTask task = new HoverTimerTask(entity, hoverStartTime, mouseEvent);
                    hoverTimer = new Timer();
                    hoverTimer.schedule(task, policy.getHoverDelay());
                }
            }
        }

        // If a selection event, then set the list of entities and re-post the
        // event.
        if (event instanceof SelectionEvent) {
            // If a selection event, then set the list of entities and re-port
            // the event
            selectedEntityList.clear();
            selectedEntityList.addAll(event.getEntityList());
            inputManager.postEvent(new SelectionEvent(new LinkedList(selectedEntityList)));
            return;
        }

        // If an enter/exit event, then note the Entity we are entering or
        // exiting and repost the event.
        if (event instanceof EnterExitEvent) {
            if (((EnterExitEvent)event).isEnter() == true) {
                enterEntity = entity;
                inputManager.postEvent(new EnterExitEvent(entity, true));
            }
            else {
                Entity eventEntity = enterEntity;
                enterEntity = null;
                inputManager.postEvent(new EnterExitEvent(eventEntity, false));
            }
            return;
        }

        // If an activation event, the simply repost the event
        if (event instanceof ActivatedEvent) {
            inputManager.postEvent(new ActivatedEvent(entity));
            return;
        }

        // If a context event, then set the list of entities associated with
        // the context and re-post the event.
        if (event instanceof ContextEvent) {
            Logger.getLogger(SceneManager.class.getName()).warning("RECEIVED CONTEXT EVENT " +
                    entity.getName());
            // We use the context event to clear the selected entity list first
            selectedEntityList.clear();

            // If there is an entity for the mouse event, then add the entity to
            // the list and pass a Selection event too.
            if (entity != null) {
                selectedEntityList.add(entity);
                LinkedList entityList = new LinkedList(selectedEntityList);
                inputManager.postEvent(new SelectionEvent(entityList));
            }

            // Pass the mouse event for now so we know where the event was
            // fired. We sent this even if the entity is null, so the context
            // menu can be cleared.
            LinkedList entityList = new LinkedList(selectedEntityList);
            MouseEvent mouseEvent = (MouseEvent) ((ContextEvent) event).getMouseEvent();
            inputManager.postEvent(event);
            return;
        }
    }
View Full Code Here

TOP

Related Classes of org.jdesktop.wonderland.client.input.InputManager

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.