Archive for August, 2008

aaaby zainstalować komponent Google Maps we Flashu CS3

No nie umiałem i już. Kopiowałem plik SWC tu i tam, wg rozmaitych wskazówek na mądrych forach i nic. Tuzin razy restartowałem Flasha. Wreszcie przeczytałem, że ktoś zmontował MXP, czyli plik obsługiwany przez Extension Managera - i włala! A oto link: (kliknąć prawym, Zapisz jako, potem uruchomić z dysku)

plik instalacyjny z Google Maps do Extension Managera

aha - wyczytałem to tu: http://groups.google.com/group/google-maps-api-for-flash/

morizony, cluetrain i PR

Jest taka książka “Manifest Cluetrain”, wydana w polskiej wersji osiem lat temu (autorzy: R. Levine, Ch. Locke, D. Searls i D. Weinberger, tłumacz: Katarzyna Thomas i Małgorzata Cichy). Choć niezwykle wręcz przekonująca i bardzo humanistyczna mimo tematyki okołointernetowej, to jej przesłanie nie trafi do umysłów wielu szefów wielu firm przez wiele lat. Na pewno nie trafiło tam gdzie pracowałem do niedawna. Czemu się czepiam? Ano temu, że znalazłem przypadek przeciwny, dający otuchę i po prostu fajny. Do rzeczy: chodzi o język i sposób komunikowania się firmy ze światem. To, czego nie cierpię, to takie teksty: “prężnie rozwijającą się polska firma, przed którą rynek nie ma tajemnic tak w Polsce, jak i za granicą. Kompleksowe usługi i wszechstronność w działaniu wyróżnia X w branży.[...]” albo “Jesteśmy dynamicznie rozwijającą się firmą, działającą w najnowocześniejszych sektorach gospodarki. Przywiązujemy wielką wagę do bezpieczeństwa i wysokiej jakości swiadczonych usług…” Pierdu pierdu.

Dla kontrastu mam, jakby żywcem ze wspomnianego Manifestu wyjęty, blog pracowników firmy morizon.pl, nowego portalu nieruchomości. Szacunek za otwarty i swobodny sposób wyrażania się, za szerokie horyzonty i wreszcie gratulacje za sposób zarządzania współpracownikami, jaki opisują. Posty Moniki Rudnickiej czytam z przyjemnością i zainteresowaniem, nawet jeśli nie zawsze zgadzam się z Jej opinią (np. o nazwie morizon). Teksty Artura Jedlińskiego podobnie, zwłaszcza że akurat organizacja pracy zespołu to mój temat miesiąca. Oboje piszą we własnym imieniu i nie muszą podpierać się bełkotem pseudomarketingowym żeby dać odczuć w jak fajnej firmie pracują. Nie wiem czy ta firma fajna rzeczywiście jest - ale chodzi mi o jakość komunikatu, o to że wyraża prawdziwe emocje i zainteresowanie zamiast tępego tłuczenia “prężnością” i “dynamiką”.

set selectedItem w ComboBox Flexa

Kiedy z bazy danych pobieramy hm, dane, a któraś z kolumn przybiera wartości z pewnego niewielkiego zbioru (jak np. dla typu ENUM w MySQL), to w formularzu edycji rekordu chcielibyśmy zwykle użyć komponentu ComboBox do edycji tej kolumny. Problem polega na tym, że ComboBox nie ma prostej metody do ustawiania zadanej wartości. Można owszem ustawić selectedItem, ale tylko przekazując jeden z obiektów z dataProvidera Combo. Nie taki sam obiekt, ale ten sam. Tyle że wygodniej jest przekazać wartość, np. pobraną ze wspomnianej bazy. No i niech etykieta (label) Combo ustawi się sama. Oto rozszerzenie ComboBoksa, które robi co trzeba:

<?xml version="1.0" encoding="utf-8"?>
<mx:ComboBox xmlns:mx="http://www.adobe.com/2006/mxml">
    <!--
    komponent SmartComboBox z automatycznym ustawianiem selectedIndex
    na podaną wartość
    licencja: do swobodnego wykorzystania
    -->
    <mx:Script>
        <![CDATA[
            protected var _myDP:Object;
            [Bindable]
            public function set value(v:*):void
            {
                var found:Boolean = false;
                for(var i:int = 0; (i < dataProvider.length) && !found; i++) {
                    if(v == _myDP[i].data) {
                        selectedIndex = i;
                        found = true;
                    }
                }
                if(!found) throw(new Error("invalid value " + v + " for SmartComboBox.",99));
            }
            [Bindable]
            override public function set dataProvider(v:Object):void
            {
                _myDP = v;
                super.dataProvider = v;
            }
        ]]>
    </mx:Script>
</mx:ComboBox>