Twister's blog

Aller au contenu | Aller au menu | Aller à la recherche

mercredi, juin 3 2009

Firefox + Applet Java + CSS Resize

Salut à tous, aujourd'hui un peu de technique. J'ai récemment eu à intégrer une applet Java dans une application Web. Le client voulait pouvoir passer l'applet en full screen avec un bouton.

J'ai été très surpris par le comportement de Firefox vis à vis de cela. En effet sous Internet Explorer pas de problèmes, on met l'applet dans un div avec des paramètres de tailles à 100% et lorsque l'on retaille le DIV l'applet suit les changements sans problèmes. Avec Firefox ca a été une autre paire de manches.

Ok l'applet était bien retaillée sous Firefox mais malheureusement celle ci était rechargée. En effet Firefox détruit et recréé une nouvelle instance de l'applet pour l'afficher à la nouvelle taille. Dans beacoup de cas cela ne sera pas un problème mais dans mon cas c'en était un gros. L'applet en question est JxCell qui est une applet (très bien faite d'ailleurs) permettant l'édition de fichier Excel en ligne. Résultat le retaillage du div provoquait le rechargement du fichier Excel et donc la perte des modifications effectuées avant le passage en full screen... ... ...

Bref il a fallut ruser un maximum. Ce qu'il faut savoir c'est qu'il ne faut surtout pas toucher au conteneur de l'applet alors que vous pouvez toucher à l'applet elle même.

Voici comment j'ai procédé : 1. Mettre l'applet au plus au niveau du HTML (directement dans le BODY) 2. Mettre un DIV à l'endroit où l'applet doit apparaître sous sa petite forme. Ce div doit avoir la taille que devra avoir l'applet. 3. Au chargement de la page déplacer l'applet par dessus le DIV afin de le recouvrir. 4. Pour passer en fullScreen il suffit de changer la taille de l'applet 5. Pour repasser en mode normal il suffit de rechanger la taille de l'applet pour recouvrir à nouveau le DIV.

Voici les bouts de codes nécessaires à la manip :

Dans le code le DIV de placement s'appelle appletDivPlace

JavaScript :

function getSize(objName) {
    var obj = document.getElementById(objName);
    return \[obj.offsetWidth, obj.offsetHeight\];
}

function getOffset(objName) {
    var obj = document.getElementById(objName);
    var curleft = 0;
    var curtop = 0;
    do {
	curleft += obj.offsetLeft;
	curtop += obj.offsetTop;
    } while (obj = obj.offsetParent);
    return \[curleft, curtop\];
}

function getWindowHeight()
{
    var myWidth = 0, myHeight = 0;
    if( typeof( window.innerWidth ) == 'number' )
	{ //Non-IE
	    myHeight = window.innerHeight;
	}
    else
	{
	    if ( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) )
		{ //IE 6+ in 'standards compliant mode'
		    myHeight = document.documentElement.clientHeight;
		}
	    else
		{
		    if ( document.body && ( document.body.clientWidth || document.body.clientHeight ) )
			{ //IE 4 compatible
			    myHeight = document.body.clientHeight;
			}
		}
	}
    return myHeight;
}

function fullScreen(editable) {
    var applet = document.Applet;
    var appletDivPlace = window.document.getElementById("appletDivPlace");

    var height = getWindowHeight() - 50 + "px";
    var width = document.body.parentNode.scrollWidth - 50 + "px"; 

    applet.width = width;
    applet.height = height;
    applet.style.top = "20px";
    applet.style.left = "0px";
}

function initApplet() {
    // move the applet over the div representing the position of the applet
    var applet = document.Applet
    var offset = getOffset("appletDivPlace");
    var size = getSize("appletDivPlace");

    applet.style.left = offset[0];
    applet.style.top = offset[1] + 20;
    applet.width = size[0];
    applet.height = size[1];
}

HTML:

<HTML>
<HEAD><TITLE>Applet</TITLE></HEAD>
<BODY onLoad="javascript:initApplet">
<APPLET id="applet" name="applet" .... />
...
...
           <DIV id="appletDivPlace" style="width:200px; height:200px"></DIV>
           <A HREF="#" onClick="javascript:fullScreen();">Fullscreen</a>
...
...
</BODY>
</HTML>

jeudi, mars 12 2009

Microsoft

Houlà, ça fait un moment que je n'ai rien posté. Il n'y a pas à dire, mon blog tombe en ruine :)

Bon, une fois n'est pas coutume, je fais faire de la propagande Microsoftienne !!! Et oui, je ne râle pas toujours contre eux!

J'ai passé pas mal de temps ces derniers jours à mettre en place un joli domaine à Concept sous Windows Serveur 2008 et je dois dire que j'ai été assez sidéré des progrès effectués par Microsoft depuis Serveur 2003!

En effet l'installation de 2008 se passe simplement, l'ajout des rôles du serveur pareil. C'est tout juste si l'on se rend compte de la création de l'arbre active directory lorsque l'on crée le domaine. Bref tout se configure simplement et en quelques cliques. Et pour une fois ça marche vraiment. Les actions sont bien prises en compte sans erreurs cachées à droite et à gauche, sans avoir 15 manipes à faire sous le manteau pour que ça passe.

La gestion du serveur est vraiment devenue simplissime, tout est intégré dans une console de gestion unique (DNS, DHCP, AD, Policies, ...). Le seul truc non intégré est la console de Exchange qui reste encore à part. Normal dira-t-on, Exchange 2007 est sorti avant Serveur 2008. Les fonctions de 2008 sont vraiment complète, les GPOs permettent une administration des droits utilisateurs de manière globale ou finement (groupes, domaines, ...). Le roaming est ENFIN pratique à utiliser et configurable de manière logique. C'est à dire que l'on est pas obligé le de roamer le dossier photo de tous les utilisateurs ou bien le dossier Téléchargement. On décide vraiment le QUOI et le OU du roaming, ça fait plaisir. Seul petit point noir, pour vraiment tirer parti de tout ça il faut avoir un Vista ou un 7... Résultat je me retrouve finalement avec un Vista 64Bits SP1 sur mon portable :/.

Donc voilà, pour une fois, bravo Microsoft, vous avez fait un bel OS là. A quelques bugs chiants prêts (comme être obligé d'avoir l'IPv6 d'activée pour pouvoir installer Exchange sans crash... pffff)

Pour les lecteurs, je vous tiendrai au courant de mes futurs déboires avec ce serveur. Car je suis certain qu'il y en aura. Faut pas rêver (et pas être trop gentil avec Krosoft ;)).

mardi, septembre 16 2008

Google Chrome II

Bon, comme certains me l'ont justement fait remarqué je n'ai pas donné de suite au billet sur Google Chrome. Il y a une raison à cela : j'ai été réellement déçu. En effet sur 2 de mes machines il est d'une lenteur incommensurable et sur l'autre il crash régulièrement. La lenteur est due au fait qu'il mette 15 à 30 secondes à commencer à charger la moindre page, il reste bloqué sur la résolution DNS. J'ai tout d'abord mis en cause mes serveurs DNS mais je l'ai testé sur 3 réseaux différents et donc 3 serveurs DNS différents, le problème a été le même à chaque fois. Finalement j'ai trouvé : il faut que je désactive tous les services annexes que j'ai sur mes cartes réseaux (VPN, cryptage et autre)... Ceci n'était pas envisageable puisque ces services me servent tous les jours pour le travail... Ensuite les crashs sont (comme pour firefox) dûs à l'utilisation de contenus embarqués (vidéos, pdf, ...)... Résultat j'ai tout désinstallé et je continue sur Firefox... Pour le moment...

mardi, septembre 2 2008

Google Chrome

Oui, je sais, cela fait des mois que je n'ai rien posté... et alors, en y'a qui ont un métier :p.

Bon je voulais juste vous prévenir de la sortie imminente de Google Chrome (dans la journée normalement). En attendant, au lieu que je vous fasse un gros discours dessus allez plutôt lire la BD que Google a réalisé à son propos : ICI

Bon allez, à plus tard (dès que j'aurais récupéré une version de Google Chrome :-) )

lundi, juin 2 2008

iMac Part II

Bon, voici 7 jours que j'ai mon iMac, alors petit point.

Franchement c'est une belle machine, je ne regrette pas. Le temps de copier les données de mon PC j'avais les deux côte à côte et le PC n'a pas tenu la comparaison...

Premièrement niveau bruit. Même avec le minimum vital mon PC fait 100 fois plus de bruit que l'iMac pour une puissance moindre, bon ok mon PC n'était pas équipé de tout ce qu'il faut pour faire moins de bruit. Cela dit c'est justement l'interêt de l'iMac, ne pas se prendre la tête. Il ne fait pas de bruit d'usine.

Deuxièmement, niveau utilisation. C'est quand même un OS assez agréable à utiliser une fois que l'on a compris deux ou trois principes. Ce que j'adore par dessus tout c'est la mise en veille et le réveille en 2 secondes, ça fait plaisir. Ensuite l'OS regorge de petits outils qu'il me manquait cruellement sous windows. J'étais obligé de passé ma vie connecté en PuTTY à un de mes Linux. Je parle de tout ce qui est outils ip/dns/... tout ce qui fait que windows est un OS BUREAUTIQUE et JEUX et les unix des OS professionnels. De plus Léopard vient avec une peuplade d'outils plutôt orienté 'for dummies' qui font que son utilisation d'usine est quand même très complète. Je pense nottament à tous les logiciels de la gamme iLife, la gestion des photos, des films et tout le tintouin devient vraiment facile.

Dernièrement, le rangement. Avant j'avais un bureau surpeuplé de bordel, des câbles partout qui retenaient la poussières. Des disques dur qui regorgeaient de drivers dont je ne savais plus quelle était la dernière version à force... Maintenant j'ai un bureau avec un clavier, une souris et un écran, des disques durs avec de VRAIES données utilisateurs, et non systèmes... Bref de l'ordre...

Je pourrais en rajouter des tonnes mais je pense que je vais en rester là pour ce soir :)

J'oubliais la preuve en image : Nouveau bureau

- page 3 de 11 -