Package org.itsnat.impl.core.doc

Examples of org.itsnat.impl.core.doc.ItsNatStfulDocumentImpl


        JSRenderMethodCallImpl.addCallMethodHTMLFormControlCode(getHTMLElement(),"click",itsNatDoc);
    }

    public void select()
    {
        ItsNatStfulDocumentImpl itsNatDoc = (ItsNatStfulDocumentImpl)getItsNatDocumentImpl();
        JSRenderMethodCallImpl.addCallMethodHTMLFormControlCode(getHTMLElement(),"select",itsNatDoc);
    }
View Full Code Here


        return compEditor;
    }

    public void setFocus()
    {
        ItsNatStfulDocumentImpl itsNatDoc = (ItsNatStfulDocumentImpl)compEditor.getItsNatDocument();
        Element elem = (Element)compEditor.getNode(); // S�lo admitimos elementos por ahora

        JSRenderMethodCallImpl render = JSRenderMethodCallImpl.getJSRenderMethodCall(elem);

        ClientDocumentStfulImpl[] allClient = itsNatDoc.getAllClientDocumentStfulsCopy();
        for(int i = 0; i < allClient.length; i++)
        {
            ClientDocumentStfulImpl clientDoc = allClient[i];
            Browser browser = clientDoc.getBrowser();
            if (clientDoc.isSendCodeEnabled() && !render.isFocusOrBlurMethodWrong("focus",elem,browser))
View Full Code Here

    public void normalEventReceived()
    {
        this.lastEventTime = System.currentTimeMillis();

        ItsNatStfulDocumentImpl itsNatDoc = getItsNatStfulDocument();
        itsNatDoc.normalEventReceived(this);
    }
View Full Code Here

    }

    public void startEventDispatcherThread(final Runnable task)
    {
        // El hilo que llama este m�todo debe ser un hilo asociado al request/response
        final ItsNatStfulDocumentImpl itsNatDoc = getItsNatStfulDocument();
        if (!Thread.holdsLock(itsNatDoc) || (itsNatDoc.getCurrentItsNatServletRequest() == null))
            throw new ItsNatException("Caller thread must be a normal browser-request thread",this);
        if (task instanceof Thread)
            throw new ItsNatException("Runnable object must not be a Thread",task);

        final Thread thread = new Thread()
        {
            public void run()
            {
                itsNatDoc.setEventDispatcherClientDocByThread(ClientDocumentStfulImpl.this);

                try
                {
                    // Al ser un hilo diferente el document no est� sincronizado (no debe estarlo, aunque dentro del hilo puntualmente necesitar� sincronizar para acceder al mismo)
                    task.run(); // Normalmente har� llamadas a EventTarget.dispatchEvent
                }
                finally
                {
                    itsNatDoc.setEventDispatcherClientDocByThread(null);
                    itsNatDoc.unlockThreads(); // la �ltima posible llamada a EventTarget.dispatchEvent deja bloqueado el �ltimo hilo request/response
                }
            }
        };

        thread.start(); // No importa que empiece el hilo antes de que se pare el hilo actual pues cualquier llamada a EventTarget.dispatchEvent necesita bloquear el documento, el cual est� ya bloqueado por este hilo request/response, y hasta que no termine este request/response y libere el documento deber� esperar

        long evtDispMaxWait = itsNatDoc.getEventDispatcherMaxWait();
        itsNatDoc.lockThread(evtDispMaxWait);
    }
View Full Code Here

        return dispatchEvent(target,evt,getCommMode(),getEventTimeout());
    }

    public boolean dispatchEvent(EventTarget target,Event evt,int commMode,long eventTimeout) throws EventException
    {
        final ItsNatStfulDocumentImpl itsNatDoc = getItsNatStfulDocument();
        if (Thread.holdsLock(itsNatDoc))
            throw new ItsNatException("Document must be unlocked in this call",this);
        if (this != itsNatDoc.getEventDispatcherClientDocByThread())
            throw new ItsNatException("This thread is not an event dispatcher thread");

        ((EventInternal)evt).checkInitializedEvent();
        ((EventInternal)evt).setTarget(target);

        final long evtDispMaxWait = itsNatDoc.getEventDispatcherMaxWait();
        final boolean[] monitor = new boolean[1];

        synchronized(itsNatDoc)
        {
            JSRenderNodeImpl.addCodeDispatchEvent(target,evt,"res",this);

            EventListener listener = new EventListenerInternal()
            {
                public void handleEvent(Event evt)
                {
                    ItsNatContinueEvent contEvt = (ItsNatContinueEvent)evt;
                    // El hilo que ejecuta este m�todo es un hilo request/response
                    monitor[0] = Boolean.getBoolean((String)contEvt.getExtraParam("itsnat_res"));
                    synchronized(monitor)
                    {
                        monitor.notifyAll(); // Desbloquea el hilo dispatcher de eventos
                    }
                    itsNatDoc.lockThread(evtDispMaxWait); // Bloquea el hilo del request/response para una posible siguiente llamada a dispatchEvent
                }
            };
            CustomParamTransport param = new CustomParamTransport("itsnat_res","res");
            addContinueEventListener(null,listener,commMode,new ParamTransport[]{param},null,eventTimeout);

            itsNatDoc.notifyAll()// Desbloquea el hilo del request/response para que se env�e el c�digo al browser
        }

        synchronized(monitor)
        {
            // Bloqueamos el hilo dispatcher de eventos esperando la respuesta del navegador
View Full Code Here

                // si la carga del SVG es s�ncrona o por lo que sea se carga antes que el documento
                // padre del todo, el script de inicio de ItsNat no se ha ejecutado todav�a en el padre.
                // Hay que recordar que el documento padre es siempre Internet Explorer desktop


                ItsNatStfulDocumentImpl parentDoc = parent.getItsNatStfulDocument();
                ClientDocumentStfulImpl parentClientDoc = parentDoc.getClientDocumentStfulOwner();


                StringBuilder code = new StringBuilder();

                code.append("\n");
View Full Code Here

        super(response);
    }

    public static ResponseDelegateOtherNSLoadDocImpl createResponseDelegateOtherNSLoadDoc(ResponseLoadStfulDocumentValid responseParent)
    {
        ItsNatStfulDocumentImpl itsNatDoc = responseParent.getItsNatStfulDocument();
        if (itsNatDoc instanceof ItsNatSVGDocumentImpl)
            return ResponseDelegateSVGLoadDocImpl.createResponseDelegateSVGLoadDoc(responseParent);
        else if (itsNatDoc instanceof ItsNatXULDocumentImpl)
            return new ResponseDelegateXULLoadDocImpl(responseParent);
        return null; // Nunca ocurre
View Full Code Here

        return null;
    }

    public void syncServerBeforeDispatch(ParamTransport param, RequestNormalEventImpl request,ClientItsNatNormalEventImpl event)
    {
        ItsNatStfulDocumentImpl itsNatDoc = event.getItsNatStfulDocument();

        MutationEvent mutEvent = (MutationEvent)event;
        String type = mutEvent.getType();

        if (type.equals("DOMNodeInserted"))
        {
            Element parent = (Element)mutEvent.getRelatedNode();
            W3CMutationEventImpl w3cMutEvent = (W3CMutationEventImpl)mutEvent;
            Node refNode = w3cMutEvent.getRefChild();

            /* El target deber�a ser el nuevo nodo pero en este caso el nodo se obtiene a partir del node path
             obtenido en el cliente a partir del nuevo nodo, si se us� un insertBefore el nuevo nodo ocupar�
             el lugar (respecto al orden) del nodo usado como referencia al insertar (el refNode), por ello el servidor con dicho path
             obtenemos el nodo de referencia lo cual es genial pues sabemos donde insertar.
             Si se us� appendChild el path del nuevo nodo no existe en el servidor y el refNode ser� nulo, as� sabemos que se us� appendChild
             (o insertBefore con referencia nula).
             Este tipo de cosas son las usadas para formar el path enviado por el cliente y usado en getRefChild()
             */

            // http://webfx.eae.net/dhtml/ieemu/htmlmodel.html
            // Con getNewValue() obtenemos el markup como string del nuevo nodo, esto no es est�ndar pero nos vale.
            String newValue = mutEvent.getNewValue();
            DocumentFragment newNodeFragment = itsNatDoc.getItsNatDocumentTemplateVersion().parseFragmentToDocFragment(newValue,itsNatDoc);
            Node newNode = newNodeFragment.getFirstChild();
            parent.insertBefore(newNode,refNode); // refNode puede ser null
            w3cMutEvent.setTargetNodeInserted((EventTarget)newNode); // De esta manera el usuario ver� el target de una forma est�ndar
        }
        else if (type.equals("DOMNodeRemoved"))
View Full Code Here

        // Haremos por tanto dos "revertimientos" (en cierto modo es ejecutarlo dos veces):
        // 1) Los cambios hechos por el usuario al cargar, como en los dem�s navegadores (con el fin de que el comportamiento sea el mismo que en los dem�s)
        // 2) Los cambios hechos por el autofill de Opera tras el load.

        ItsNatStfulDocumentImpl itsNatDoc = getItsNatStfulDocument();
        Document doc = itsNatDoc.getDocument();
        AbstractView view = ((DocumentView)doc).getDefaultView();

        EventListener listener = new RewriteClientUIControlPropsOperaLoadListenerImpl(clientDoc);

        int commMode;
View Full Code Here

        // El c�digo devuelto debe ser enviado al cliente y ejecutado pues puede llevar informaci�n de cacheado y haber sido cacheado ahora en el servidor
        if (node == null)
            if (errIfNull) throw new ItsNatException("No specified node");
            else return "null";

        ItsNatStfulDocumentImpl itsNatDoc = clientDoc.getItsNatStfulDocument();
        Document doc = itsNatDoc.getDocument();
        if (node == ((DocumentView)doc).getDefaultView())
            return "itsNatDoc.win";
        else if (node == doc)
            return "itsNatDoc.doc";
        else if (node == doc.getDoctype())
View Full Code Here

TOP

Related Classes of org.itsnat.impl.core.doc.ItsNatStfulDocumentImpl

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.