Mostrando postagens com marcador Flex. Mostrar todas as postagens
Mostrando postagens com marcador Flex. Mostrar todas as postagens

domingo, 21 de fevereiro de 2010

Relatorio em flex usando IReport com Jasper4Flex

Recentemente por uma iniciativa de Teodor Danciu, foi desenvolvido mais uma opção de renderização de relatórios feitos em jasper, so que desta vez em swf, ou seja, para desenvolvimento Flex, conhecido como Jasper4Flex, o mesmo possui algumas peculiaridades em relação ao FlexReport, pois constitui base jasper server-side, então toda a geração do relatório ocorre no servidor jasper seguido de um parser Jasper4Flex, feito por um servlet registrado no deploy descriptor:
web.xml
….
<servlet>
<servlet-name>SwfServletservlet-name>
<servlet-class>net.sf.jasperreports.j2ee.servlets.SwfServletservlet-class>
servlet>
<servlet-mapping>
<servlet-name>SwfServletservlet-name>
<url-pattern>/servlets/swfurl-pattern>
servlet-mapping>
……
Em poucas linhas podemos fazer nossa chamada apartir de um servlet.


JasperPrint impressao = JasperFillManager.
fillReport("Report_exemplo.jasper", parametros,conn);
HttpSession session = request.getSession();
session.
setAttribute(BaseHttpServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, impressao);
response.sendRedirect("servlets/swf");


Neste caso foi criado um servlet para testar o exemplo. O código, não tem muito mistério a única diferença está, em como esse servlet vai responder essa requisição direcionando ’servlets/swf’. O resto o jasper4Flex se encarrega de fazer. Estou ate satisfeito com os testes que tenho feito ate agora. Mais o projeto é muito recente? Sim, eu sei mais a comunidade esta ai pra isso, testar, motivar e colaborar. Vejo isso como mais um incentivo a desenvolvedores que querem usar projetos Java em front-end Flex. Os exemplos podem ser baixados aqui no site do projeto.

quarta-feira, 17 de fevereiro de 2010

DecimalInput - Máscara de entrada para valor decimal

Estava fazendo um sistema aki em casa .. e me deparei c um problema q acho q muitos ja se depararam .... o maldito "Decimal" .. q no flex eh encarado como Number666 ... heheheheh uma santa pessoa desenvolvel a solucao para o problema .. e eu gostei por de mais ... chama-se DecimalInput :D  saca só a carinha da coisa :p



 
Para ver um exemplo do componente clique aqui.

Para baixar o componente clique aqui.

Propriedades

currencyFormat : String (br | us)
Determina o formato da máscara de entrada
Padrão : us

precision : int
Determina a quantidade de casas decimais
Padrão : 2

useThousandsSeparator : Boolean (true | false)
Determina se os separadores de milhar devem aparecer na máscara
Padrão : true

Métodos

decimalText : String
Retorna o valor em formato decimal sem os separadores de milhar
Ex.: 1.234.456,78 retorna 132456,78

unformatedText : String
Retorna o valor sem formato
Ex.: 1.234.456,78 retorna 13245678 

O autor do componente ainda fala ... SE ACAREM ALGUM BUG ... COMENTEM E EU RESOLVO !! ... digo o mesmo .. comentem e eu repasso a informação !!

Sem mais  !

domingo, 7 de fevereiro de 2010

Como acessar variaveis publicas do Application

Esses dias atraz ... eu tive uma duvida simples ... como acessar variaveis do application ... bom ... consegui resolver , segue o codigo :

Applicatio.application.nomedavariavel

Simples né ??? hehehhehehe

Sem mais !

sexta-feira, 6 de novembro de 2009

Sistema com ambientes para o usuario usar como desktop

Pessoal .. outro dia estava me perguntando ... pq nao criar um sistema .. como c fosse um desktop online ... e a resposta foi : PQ EH MTO DIFICIL ! aaaa ... e eu ando meio sem tempo hauehusahaue ... mas blz ... enfim ... surgiu a oportunidade aki na empresa onde eu trabalho para estudar e criar um prototipo para servir de base para outros sistemas ... e eu ñ pude deixar de aproveitar a oportunidade ... e brincar um pouco ! auehuaehuae ...
Ai eu fiz um esquema para o usuario utilizar o sistema como c fosse akeles ambientes q o linux tem ... ( Usuarios windows ñ tao acostumados ... mas quebra um galhão !! )... estou postando o codigo .. fiz em flex , mais p frente eu posto o prototipo q eu fiz ... com Java( Hibernate )+Flex ! vlw !!!

<?xml version="1.0" encoding="utf-8"?>
<mx:Application
    xmlns:mx="http://www.adobe.com/2006/mxml"
    layout="vertical"
    creationComplete="init();"
    horizontalAlign="center"
    verticalAlign="top"
    width="100%"
    height="100%"
    paddingLeft="0" paddingRight="0" paddingBottom="0" paddingTop="0"
    xmlns:flexmdi="flexmdi.containers.*"
    backgroundImage="@Embed('./imagens/abstract2.jpg')"
    >
    <mx:Script>
        <![CDATA[
            import view.configuracao.cadastros.cadastrodaclassedeequipamento.CadastroClasseEquipamento;
            import model.Usuario;
            import mx.events.CloseEvent;
            import mx.managers.PopUpManager;
            import view.login.Login;
            import view.configuracao.administrativo.cadastrodeusuario.CadastroUsuario;
            import view.configuracao.administrativo.cadastrodetipodeusuario.CadastroTipoUsuario;
            import flexmdi.managers.MDIManager;
            import flash.utils.getTimer;
            import mx.controls.Label;
            import view.configuracao.administrativo.cadastrodeusuario.CadastroUsuario;
            import view.configuracao.administrativo.cadastrodetipodeusuario.CadastroTipoUsuario;
            import flexmdi.effects.effectsLib.MDIVistaEffects;
            import flexmdi.containers.MDIWindow;
            import mx.events.MenuEvent;
            import flexmdi.containers.MDICanvas;
            import mx.controls.TextInput;
            import mx.controls.Text;
            import mx.controls.Alert;
            import mx.controls.Button;
            import mx.collections.ArrayCollection;
            import mx.controls.List;
            import mx.containers.Canvas;
   
            private const MIN_MASK:String = "00";
            private const SEC_MASK:String = "00";
            private const HR_MASK:String = "00";
       
            private var ambienteAtual:MDICanvas;
            private var qtdeAmbientes:int;
            private var prefixoIdCanvas:String = "canvas";
            private var prefixoIdBotao:String = "BTN_AMBIENTE";
            public var iniciar:Class = Imagens.iniciar;
           
            private var baseTimer:int;

            private var timer:Timer = null;

            private var LBL_HORA:Label = new Label();
       
            public var usuarioLogado:Usuario = null;
       
            private function init():void{
                var login:Login = PopUpManager.createPopUp(this , Login , true) as Login;
                disableAplicacao();
                login.addEventListener(CloseEvent.CLOSE,loginCloseEvent,false,0,false);
                PopUpManager.centerPopUp(login);
            }
           
            public function loginCloseEvent(evt:CloseEvent):void{
                var login:Login = evt.currentTarget as Login;
                this.usuarioLogado = login.usuarioLogado;
                if (this.usuarioLogado != null){
                    initAfterLoginOk();
                    enableAplicacao();
                }
            }
           
            private function disableAplicacao():void{
                this.ACB_TASKBAR.visible = false;
                this.canvasAmbientes.visible = false;
            }
           
            private function enableAplicacao():void{
                this.ACB_TASKBAR.visible = true;
                this.canvasAmbientes.visible = true;
            }
           
            private function initAfterLoginOk():void{
                qtdeAmbientes = 1;
                criaAmbientes();
                ativaCanvas(1);
                timer = new Timer(10);
                timer.addEventListener(TimerEvent.TIMER, updateTimer);
                timer.start();
            }
           
            public function updateTimer(event:TimerEvent):void {
                var d:Date = new Date();
                var min:String = (MIN_MASK + d.minutes).substr(-MIN_MASK.length);
                var sec:String = (SEC_MASK + d.seconds).substr(-SEC_MASK.length);
                var hr:String = (HR_MASK + d.hours).substr(-HR_MASK.length);
                LBL_HORA.text = String(hr + ":" +min + ":" + sec );
            }
           
            private function criaAmbientes():void{
                for(var indice:int = 1 ; indice <= qtdeAmbientes ; indice++ ){
                    var canvasNovo:MDICanvas = new MDICanvas();
                    var botaoAmbiente:Button = new Button();
                    var stringIndice:String = String(indice);
                    if (qtdeAmbientes > 1){
                        botaoAmbiente.id=prefixoIdBotao+stringIndice;
                        botaoAmbiente.label = stringIndice;
                        botaoAmbiente.addEventListener(MouseEvent.CLICK,onBtnAmbienteClick,false,0,false);
                        ACB_TASKBAR.addChild(botaoAmbiente);
                    }
                    canvasNovo.setVisible(false);
                    canvasNovo.id = prefixoIdCanvas+stringIndice;
                    canvasNovo.percentWidth = 100;
                    canvasNovo.percentHeight = 100;
                    canvasNovo.effectsLib = MDIVistaEffects;
                    canvasAmbientes.addChild(canvasNovo);
                }
                LBL_HORA.setStyle("color","#FFFFFF");
                LBL_HORA.text = "00:00:00";
                ACB_TASKBAR.addChild(LBL_HORA);
            }
                      
            private function addTelaAmbienteSelecionado(objeto:DisplayObject):void{
                var objetoProcurado:MDIWindow = MDIWindow(objeto);
                var objetoLocalizado:MDIWindow = null;
                for (var obj:Object in ambienteAtual.getChildren()){
                    var objMDI:MDIWindow = MDIWindow(ambienteAtual.getChildAt(int(obj)));
                    if (objetoProcurado.title == objMDI.title){
                        objetoLocalizado = objMDI;
                    }
                }
                if (objetoLocalizado == null){
                    ambienteAtual.windowManager.add(MDIWindow(objeto));
                }else{
                    if (objetoLocalizado.minimized){
                        objetoLocalizado.restore();
                        objetoLocalizado.showControls = true;
                    }else{
                        objetoLocalizado.getFocus();
                    }
                }
            }
           
            private function getCanvasById(id:String):MDICanvas{
                for each (var childAtual:Object in canvasAmbientes.getChildren()){
                    if (MDICanvas(childAtual).id == id){
                        return MDICanvas(childAtual);
                    }
                }
                return null;
            }
           
            private function ativaCanvas(indice:int):void{
                var canvasSelecionado:MDICanvas = getCanvasById(prefixoIdCanvas+String(indice));
                if (canvasSelecionado != null){
                    for each (var canvasIndice:MDICanvas in canvasAmbientes.getChildren()){
                        if (canvasIndice.id != canvasSelecionado.id){
                            canvasIndice.setVisible(false);
                        }else{
                            ambienteAtual = canvasSelecionado;
                            canvasIndice.setVisible(true);
                        }
                    }
                }
            }
           
            private function onBtnAmbienteClick(evt:Event):void{
                var botaoClicado:Button = evt.currentTarget as Button;
                var ambienteSelecionado:int = int(botaoClicado.id.replace(prefixoIdBotao,""));
                ativaCanvas(ambienteSelecionado);
            }
           
            private function menuBarItemClick(event:MenuEvent):void
            {
                if (event.item.@data == "confAdmCadTipoUsuario"){
                    addTelaAmbienteSelecionado(new CadastroTipoUsuario());
                }else if (event.item.@data == "confAdmCadUsuario"){
                    addTelaAmbienteSelecionado(new CadastroUsuario());
                }else if (event.item.@data == "confCadCadClasseEquip"){
                    addTelaAmbienteSelecionado(new CadastroClasseEquipamento());
                }
            }
           
        ]]>
    </mx:Script>
    <mx:XMLList id="menuList">
        <menuitem icon="iniciar" label="">
            <menuitem label="Configuração">
                <menuitem label="Administrativo">
                    <menuitem label="Cadastro de Usuários"  data="confAdmCadUsuario"/>
                </menuitem>
            </menuitem>
        </menuitem>
    </mx:XMLList>
    <mx:ApplicationControlBar id="ACB_TASKBAR" height="0%" width="100%">
        <mx:MenuBar id="MB_MENU"
            labelField="@label"
            iconField="@icon"
            cornerRadius="20"
            dataProvider="{menuList}"
            itemClick="menuBarItemClick(event);"
            >
        </mx:MenuBar>
        <mx:Spacer width="100%" />
        <mx:Image click="ambienteAtual.windowManager.tile(true)" source="imagens/titleiconpqn.png" scaleContent="true" autoLoad="true"/>
        <mx:Image click="ambienteAtual.windowManager.cascade()" width="27" height="26.25" source="imagens/cascatapqn.png" scaleContent="true" autoLoad="true"/>
    </mx:ApplicationControlBar>
    <flexmdi:MDICanvas id="canvasAmbientes" height="100%" width="100%">
    </flexmdi:MDICanvas>
</mx:Application>