Ricardo,do que percebi, não tens verdadeiro MVC ao nível aplicacional. Do que percebi tens a view separada em duas camadas - lógica de view e a skin.
Para obteres MVC precisas de isolar completamente as regras de negócio na tua aplicação (controller) da camada de apresentação (view), e dos dados (model).
O model consiste numa ou várias classes que possui instâncias que contêm os dados que são usados na tua aplicação, e ainda nas classes "Data objects" (VO's, DTO's, DO's). A view deverá bindar a estes dados de alguma forma - 1-directamente, sendo o model um solitão (não recomendável) 2- colocando uma instância do model na Aplicacão que depois propaga para as views subsequentes (não recomendável/tiro nos c*rnos) 3- por injecção (recomendável, e Swiz é uma boa solucão).
linkedIn <http://pt.linkedin.com/in/jsaleiro> João Saleiro Chief Technology Officer Tel: 00351 916 077 097 Email: [email protected] <mailto:[email protected]> Skype: joao.saleiro <callto://joao.saleiro>Webfuel Solutions <http://www.webfuel.pt> www.webfuel.pt <http://www.webfuel.pt>
Lisbon, Portugal On 20-06-2011 12:33, Ricardo Araújo wrote:
Viva, Neste momento tenho o design todo nas skins e a lógica nos SkinnableComponnents e afins. Basicamente tenho dois estados do modelo MVC. Tenho o View e o control ... Onde coloco agora o Model? Espero não estar a dizer asneiras... mas por exemplo... usando WebServices o próprio Builder cria-me as classes todas... posso considerar isso o Model? Experimentei colocar todas as classes geradas dum webservice pelo flash numa Library Project mas apesar de funcionar depois de importar os devidos swc não tenho as mesmas funcionalidades de "refresh" que aparecem num projecto normal! On Jun 17, 4:36 pm, Ricardo Araújo<[email protected]> wrote:Se eu tiver no mesmo projecto todos os conjuntos de skins de cada cliente e se pretender fazer um release apenas para um determinado cliente, aplico a skin e compilo. A minha pergunta é se as skins que não foram utilizadas são simplesmente ignoradas e não são colocadas no swf final! correcto? já agora... about Swiz, é só incluir o swc? ainda não tive oportunidade de experimentar... aquilo inclui componentes novos "pré feitos"? Ou só está relacionado com "comunicação"? Mais uma vez, Obrigado pelas preciosas dicas. On Jun 17, 2:27 pm, João Saleiro<[email protected]> wrote:O Inject � do Swiz (a framework que n�s usamos actualmente). Podes ignorar, s� deixei a� no post para servir de exemplo. linkedIn<http://pt.linkedin.com/in/jsaleiro> Jo�o Saleiro Chief Technology Officer Tel: 00351 916 077 097 Email: [email protected]<mailto:[email protected]> Skype: joao.saleiro<callto://joao.saleiro> Webfuel Solutions<http://www.webfuel.pt> www.webfuel.pt <http://www.webfuel.pt> Lisbon, Portugal On 17-06-2011 14:26, Ricardo Ara�jo wrote::) muito porreiro... funciona da mesma forma como se fosse o currentState... mas fiquei sem perceber para que serve o Inject ... e o que � o appSatateModel.base ... e o bind deve ser pra ser Bindable! Obrigado On Jun 17, 12:10 pm, Jo�o Saleiro<[email protected]> wrote:1- Cria uma propriedade que vais usar como holder do state: private var _currentViewState:String; 2- Cria um m�todo ou setter para mudares o view state que faz invalidate ao Skin state: [Inject("appStateModel.base", bind="true")] public function set currentViewState(value:String):void { if (_currentViewState != value) { _currentViewState = value; invalidateSkinState(); } } 3- Faz override ao getCurrentSkinState(), um m�todo protegido que o Flex usa para decidir qual � que � o estado actual da Skin: override protected function getCurrentSkinState():String { return _currentViewState; } Se n�o quiseres, n�o tens que usar o getter (passo 2), ou a propriedade (passo 1) - basta fazeres o invalidateSkinState e depois no getCurrentSkinState fazes a tua l�gica para decidir qual � o estado da Skin. Por�m, n�s preferimos fazer assim porque n�s usamos um g�nero de m�quina de estados ao n�vel da aplicac�o, � qual todas as Views da aplicac�o est�o "bindadas" (v� o Inject - isto � Swiz). Desta forma, quando queremos saltar do ecr� A para o C, mudamos o "appStateModel" que ir� provocar com que as views invalidem o seu skin state alterando assim os estados (e criando a percepc�o de navegac�o). linkedIn<http://pt.linkedin.com/in/jsaleiro> Jo�o Saleiro Chief Technology Officer Tel: 00351 916 077 097 Email: [email protected]<mailto:[email protected]> Skype: joao.saleiro<callto://joao.saleiro> Webfuel Solutions<http://www.webfuel.pt> www.webfuel.pt <http://www.webfuel.pt> Lisbon, Portugal On 17-06-2011 12:02, Ricardo Ara�jo wrote:mais uma pergunta r�pida, na skin tenho varios states, e quero os controlad apartir do HostComponent... tentei atrav�s do currentState = "novoState"; mas rebenta!!! On Jun 16, 6:23 pm, Jo�o Saleiro<[email protected]> wrote:Ricardo (e restantes), infelizmente (e j� me "queixei" disso � Adobe) o includeIn aparentemente redesenha as views sempre que se entra num estado. Isto �, da nossa experi�ncia quando o utilizador entra na view a primeira vez o utilizador sente uns millisegundos de tempo de espera. Quando entra a segunda vez, volta a sentir esses millisegundos - que n�o deviam acontecer. A quest�o � que aparentemente a view j� est� instanciada, mas o SDK volta a executar o c�digo da layouting (?). Fizemos testes e mudamos para o visible e includeInLayout em vez do includeIn. O resultado � que a aplicac�o demora mais a arrancar (a instanciac�o das views � passada para o arranque), mas a partir da� a experi�ncia com o utilizador � substancialmente superior, com reac��es imediatas na navega��o. Isto s� se nota em views muito complexas, sobretudo quando se utilizam Forms, Datagrid e/ou muitos item renderers em liquid layout. Curiosamente, tenho que voltar a testar o includeIn para ver se na �ltima actualizac�o do SDK j� houveram melhorias neste t�pico. linkedIn<http://pt.linkedin.com/in/jsaleiro> Jo�o Saleiro Chief Technology Officer Tel: 00351 916 077 097 Email: [email protected]<mailto:[email protected]> Skype: joao.saleiro<callto://joao.saleiro> Webfuel Solutions<http://www.webfuel.pt> www.webfuel.pt <http://www.webfuel.pt> Lisbon, Portugal On 16-06-2011 18:05, Ricardo Ara�jo wrote:(nota: n�s usamos o includeInLayout e o visible neste caso em vez de States por quest�es de performance. Mas isso � outra discuss�o...). btw, qual a diferen�a ent�o entre usar o includeInLayout+visible ou o includeIn? usas na mesma os states... e quando o componente � criado no includeIn depois continua em memoria!!! ... On Jun 16, 5:38 pm, Ricardo Ara�jo<[email protected]> wrote:J� percebi ... ... desculpa J.Fernandes, n�o estava a entender.... acaba por ser o mesmo m�todo que o J.Salgueiro me indicou... Obrigado ... fico-vos eternamente agradecido ;) On Jun 16, 5:27 pm, Ricardo Ara�jo<[email protected]> wrote:JF, j� me tinha passado pela cabe�a... mas depois a minha class m�e onde estaria o principal c�digo estaria dentro de um componente que estende de SkinnableComponent! Seria isto correcto!? penso que isso traz-me outro problema... se quiser colocar as atribui��es de skins num css para que possa mudar facilmente o c�digo que estava dentro da skinnablecomponent ter� que ser duplicado para outros grupos de skins! On Jun 16, 5:19 pm, Jo�o Fernandes <[email protected]> wrote:Podes fazer exactamente isso, criar um custom component onde defines novos skinParts e depois � s� associares uma skin ao mesmo. Se quizeres para o mesmo custom component v�rios aspectos s� ter�s de definir uma nova skin e meteres as skinParts onde bem entenderes. Jo�o Fernandes 2011/6/16 Ricardo Ara�jo<[email protected]>Ajudou, mas ainda tenho umas d�vidas.... por exemplo: crio um projecto novo, e na WindowedApplication coloco-lhe dois bot�es normais<s:Button /> ... depois como � que eu na skin que aplicar ao WindowedApplication posso definir por exemplo posi��es para cada bot�o? (se fosse um SkinnableComponent diria que aquele bot�o era uma SkinPart) On Jun 16, 4:57 pm, Jo�o Saleiro<[email protected]> wrote:Ricardo, n�o percebi bem a tua quest�o. N�s aqui resolvemos a quest�o do multi-skinning com facilidade, usando stylesheets CSS. Cada theme tem o seu pr�prio CSS que define o aspecto gr�fico de*todose quaisquer* componentes visuais. A t�tulo de exemplo: s|Application { skin-class: ClassReference("com.airgile.crm.skins.petro.views.core.ApplicationSkin"); } view3|NotificationBox { skin-class:ClassReference("pt.webfuel.core.ui.notification.view.skin.NotificationBoxSk in");} core|AirgileView { skin-class: ClassReference("com.airgile.crm.skins.petro.views.core.AirgileViewSkin"); } s|TextArea { skin-class:ClassReference("com.airgile.skins.petro.components.textarea.TextAreaSkin");focus-alpha: 0; } Quando queres mudar o theme, simplesmente trocas o CSS (usando ou n�o Runtime CSS). Espero que ajude. linkedIn<http://pt.linkedin.com/in/jsaleiro> Jo�o Saleiro Chief Technology Officer Tel: 00351 916 077 097 Email: [email protected]<mailto:[email protected]> Skype: joao.saleiro<callto://joao.saleiro> Webfuel... read more »
-- Recebeu esta mensagem porque está inscrito no grupo "Mailing List da Comunidade Portuguesa de Rich Internet Applications - www.riapt.org" dos Grupos do Google. Para publicar uma mensagem neste grupo, envie um e-mail para [email protected]. Para anular a inscrição neste grupo, envie um e-mail para [email protected]. Para ver mais opções, visite este grupo em http://groups.google.com/group/riapt?hl=pt-PT.
<<inline: LinkedIn.gif>>
<<inline: Webfuel.gif>>
