KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > cve > osservatori > OACesec


1 package cve.osservatori;
2
3 import cve.staticLayout.*;
4 import cve.core.elementEEL.*;
5
6 import cve.esecutori.*;
7 import cve.esecutori.components.specificaLV.*;
8 import cve.esecutori.servizioEACesec.*;
9
10 import cve.osservatori.servizioOACesec.*;
11
12 import interactionHandler.*;
13 import interactionGraphics.*;
14
15 import cve.util.ConfigurationRead;
16
17 import java.io.File JavaDoc;
18 import java.io.IOException JavaDoc;
19 import java.io.*;
20
21 import java.awt.*;
22 import java.awt.event.*;
23 import java.util.*;
24
25 //swing classes
26
import javax.swing.text.*;
27 import javax.swing.*;
28 import javax.swing.event.*;
29
30 import org.apache.log4j.Logger;
31 import cve.staticLayout.Cve;
32
33 import wippog.*;
34
35 /**
36  * Osservatore cve finalizzato alla gestione del modello che descrive gli aspetti
37  * visuali di un linguaggio visuale. Vengono svolte 4 macro attivita':
38  * 1) Manipolazione degli attributi legati ad aspetti visuali della sentenza
39  * (coordinate, colori, dimensioni,...)
40  * 2)Gestione della mappatura fra l'alfabeto dei gesti eseguiti dall'utente con l'alfabeto delle azioni utente
41  * 3)Gestione della mappatura fra le azioni dell'utente e le attivita' eseguite dall'esecutore collegato
42  * 4) Definizione delle attivitą visuali associabili al Presenter collegato (java action)
43  * L'osservatore e' composta da:
44  * un controller di eventi (treeContr), 4 container visuali (TreeCve) ed infine il riferimento all'esecutore
45  * che implementa l'interfaccia SpecificationLanguage.
46  * Questo osservatore riceve eventi di tipo SpecificationEvent
47  *
48  * @author Domenico Ventriglia
49  * @version 1.0
50  *
51  */

52 public class OACesec extends Osservatore {
53     /**
54      * controller associato ad osservatore
55      */

56     private ControllerOACesec med;
57     
58     /**
59      * pulsanti afabeto
60      */

61     private HashMap buttonAlf=new HashMap();
62     
63     /**
64      * componente toolbar dell'osservatore
65      */

66     private IJTool tbar;
67     
68     /**
69     * componente canvas dell'osservatore
70     */

71     private IJCanvas canvas;
72     
73     /**
74     * per essere compatibile un esecutore deve rispettare interfaccia
75     */

76     private IEsecutionSentence eseGS;
77     
78     /**
79     * modalitą di interazione attiva di default
80     */

81     private String JavaDoc modality="Modality 1";
82     
83     /**
84     * reference all'istanza attiva della classe
85     */

86     private OACesec istOACesec=this;
87
88     private QueryFrame queryFrame;
89     private interactionHandler.MappingEventActivity mappingEventFrame;
90     
91     
92     /* ############# ACTION ###########################
93     ##################################################### */

94     
95     /**
96     * Apre box per scegliere un file contenete un automa,
97     * lancia esecutore.setLanguage, prende dall'esecutore la
98     * rappresentazione degli elementi dell'alfabeto
99     * crea bottoni alfabeto (action java)
100     */

101     public Action getLinguaggio = new AbstractAction("") {
102         public void actionPerformed(ActionEvent e) {
103               Cve.errLog.debug("");
104             File JavaDoc current=new File JavaDoc(ConfigurationRead.getCveRoot()+"/VisualLanguage/SpecificheWippog");
105             String JavaDoc fileAut=Osservatore.getFileXml(current);
106             
107             if (fileAut.equals("")==false ){
108                setLanguage(fileAut);
109                getLinguaggio.setEnabled(false);
110                cancLinguaggio.setEnabled(true);
111                cancSentenza.setEnabled(true);
112                repaint();
113                repaintAll();
114             }
115         }
116      };
117     
118     /**
119     * Cancello elementi in tbar e canvas (cancello elementi in drawings). (action java)
120     */

121     public Action cancLinguaggio = new AbstractAction("") {
122         public void actionPerformed(ActionEvent e) {
123             // cancello elementi alfabeto toolbar
124
// removeElementTool();
125
// per essere compatibile esecutore deve rispettare interfaccia
126
//eseGS=(IEsecutionSentence)getEsecutore();
127
Cve.errLog.debug("");
128             clearLanguage();
129             cancLinguaggio.setEnabled(false);
130             cancSentenza.setEnabled(false);
131             getLinguaggio.setEnabled(true);
132             repaint();
133             repaintAll();
134             }
135         };
136     
137     /**
138     * Cancello elementi in tbar e canvas (cancello elementi in drawings).(action java)
139     */

140     public Action cancSentenza = new AbstractAction("") {
141         public void actionPerformed(ActionEvent e) {
142             // per essere compatibile esecutore deve rispettare interfaccia
143
//eseGS=(IEsecutionSentence)getEsecutore();
144
Cve.errLog.debug("");
145             clearSentence();
146             cancLinguaggio.setEnabled(true);
147             getLinguaggio.setEnabled(false);
148             cancSentenza.setEnabled(false);
149             repaint();
150             repaintAll();
151             }
152         };
153     
154     /**
155     * Cancello elementi in tbar e canvas (cancello elementi in drawings).(action java)
156     */

157     public Action colorSelect = new AbstractAction("") {
158         public void actionPerformed(ActionEvent e) {
159               Cve.errLog.debug("");
160             ViewLog.writeInLog(" #O# Eseguita attivita' (action) colorSelect"+"\n");
161             canvas.setColorSelected();
162             }
163         };
164     
165     /**
166     * Carattersitiche avanzate(action java)
167     */

168     public Action advancedFeature = new AbstractAction("") {
169         public void actionPerformed(ActionEvent e) {
170             canvas.advanced();
171             }
172         };
173     
174     /**
175     * Cambiamento lingua (italiano inglese)(action java)
176     */

177     public Action cambiaLingua = new AbstractAction("") {
178         public void actionPerformed(ActionEvent e) {
179               Cve.errLog.debug("");
180             // da implementare
181
}
182         };
183     
184     /**
185     * Cancello elementi in tbar e canvas (cancello elementi in drawings)(action java)
186     */

187     public Action colorDummy = new AbstractAction("") {
188         public void actionPerformed(ActionEvent e) {
189               Cve.errLog.debug("");
190             ViewLog.writeInLog(" #O# Eseguita attivita' (action) colorDummy"+"\n");
191             canvas.setColorDummy();
192             }
193         };
194     
195     /**
196     * Cancello elementi in tbar e canvas (cancello elementi in drawings)(action java)
197     */

198     public Action changeEventAction = new AbstractAction("") {
199         public void actionPerformed(ActionEvent e) {
200             Cve.errLog.debug("");
201             //Nuova Gestione Configurazione EVENTI-AZIONI Utente
202
openMappingFrame();
203             //MappingEventActivity mEventAction=new MappingEventActivity(istOACesec);
204
}
205         };
206
207
208     /**
209     * Salvataggio Sentenza.(action java)
210     */

211     public Action saveSentence = new AbstractAction("") {
212         public void actionPerformed(ActionEvent e) {
213               Cve.errLog.debug("");
214             //DA IMPLEMENTARE
215
}
216         };
217          
218     /**
219     * CAricamento Sentenza.(action java)
220     */

221     public Action loadSentence = new AbstractAction("") {
222         public void actionPerformed(ActionEvent e) {
223              Cve.errLog.debug("");
224            //DA IMPLEMENTARE
225
}
226         };
227
228     
229     /* ######## METODI PUBLICI ########################
230     #####################################################*/

231     
232     /**
233     * Creazione dell'osservatore( assegnazione del controller)
234     */

235     public OACesec(){
236           Cve.errLog.debug("");
237         med = new ControllerOACesec(this);
238         setMediator(med);
239         
240         //Impostazione Flag MappingEvent aperta
241
setMappingFrameOpen(false);
242         setQueryElementOpen(false);
243         }
244     
245     /**
246     * Cambio modalitą di interazione corrente
247     * @param fileScelto mod modalita' scelta
248     */

249     /*
250     public void setModality(String mod){
251         modality = mod;
252         System.out.println(" modalit vale "+modality);
253         if (modality.equals("Modality 1")){
254             //StateLeft stateL=new StateLeft(med);
255             //med.setEventManager(stateL);
256             StateDefault stateD=new StateDefault(med);
257             med.setEventManager(stateD);
258             }
259         if (modality.equals("Modality 2")){
260             //StateDefault stateD=new StateDefault(med);
261             //med.setEventManager(stateD);
262             StateLeft stateL=new StateLeft(med);
263             med.setEventManager(stateL);
264             }
265         if (modality.equals("Modality 3")){
266             State3 stateD3=new State3(med);
267             med.setEventManager(stateD3);
268             }
269         if (modality.equals("Modality 4")){
270             StatePoint statePoint=new StatePoint(med);
271             med.setEventManager(statePoint);
272             }
273         }
274     */

275     
276     /**
277     * Modalita di interazione corrente
278     */

279     /*
280     public String getModality(){
281         return modality;
282         }
283     */

284     
285     /**
286     *Nel descrittore, all'interno di param, vi sono indicati
287     * i componets dell'osservatore.Associo ad un osservatore le istanze dei suoi componenti
288     * @param param componenti visuali dell'osservatore
289     */

290     public void setComponents (Collection param){
291           Cve.errLog.debug("");
292         Iterator itParam=param.iterator();
293         while (itParam.hasNext()){
294             Object JavaDoc component=itParam.next();
295             if (component instanceof IJCanvas){
296                 canvas=(IJCanvas)component;
297                 }
298             if (component instanceof IJTool){
299                 tbar=(IJTool)component;
300                 }
301             }
302         // associo ai componeti il controller
303
canvas.setController(med);
304         tbar.setController(med);
305         // imposto il layout
306
cveCont.setLayout(new BorderLayout());
307         cveCont.add("Center",(Component)canvas);
308         cveCont.add("East",(Component)tbar);
309         impostaComandi();
310         }
311     
312     /**
313     *Restituisce il controller
314     *
315     */

316     public Controller getMediator() {
317           Cve.errLog.debug("");
318         return med;
319         }
320     
321     /**
322      * Comunica il linguaggio scelto all'esecutore
323      * @param fileAut file contenete istanza automa
324      *
325      */

326     public void setLanguage(String JavaDoc fileAut) {
327           Cve.errLog.debug("");
328         eseGS=(IEsecutionSentence)getEsecutore();
329         if (eseGS!=null){
330             eseGS.setLanguage(fileAut);
331             }
332         }
333     
334     /**
335     * Comunica all'esecutore di cancellare il linguaggio scelto
336     */

337     private void clearLanguage() {
338           Cve.errLog.debug("");
339         eseGS=(IEsecutionSentence)getEsecutore();
340         // cancellazione sentenza e alfabeto
341
eseGS.clearLanguage();
342         }
343     
344     /**
345     * Comunica all'esecutore di cancellare il linguaggio scelto
346     */

347     private void clearSentence() {
348           Cve.errLog.debug("");
349         eseGS=(IEsecutionSentence)getEsecutore();
350         // cancellazione sentenza e alfabeto
351
eseGS.clearSentence();
352         }
353     
354     /**
355     * Metodo adapter che lancia metodo l'omonimo metodo del modello computazionale associato
356     * (esecutore collegato)
357     * Questo metodo viene invocato come conseguenza dell'azione utente "SELEZIONA ELEMENTO".
358     * Il container visuale (ad esempio canvas) comunica al mediator (mappatura gesto -azione) che e' stato "cliccato" in un
359     * pattern caratteristico.
360     * @param id
361     * @param idIstanza
362     * @param select
363     */

364     public void inputSelected(String JavaDoc id,String JavaDoc idIstanza, boolean selected){
365           Cve.errLog.debug("");
366         eseGS=(IEsecutionSentence)getEsecutore();
367         eseGS.inputSelected(id,idIstanza,selected);
368
369         //((EACesec)refEse).inputSelected(id,idIstanza,selected);
370
}
371     
372     /**
373      * Metodo adapter che lancia metodo l'omonimo metodo del modello computazionale associato
374      * (esecutore collegato)
375      * Questo metodo viene invocato come conseguenza dell'azione utente "QUERY ELEMENTO".
376      * Il container visuale (ad esempio canvas) comunica al mediator (mappatura gesto -azione) che e' stato "cliccato" in un
377      * pattern caratteristico.
378      * @param idTipo
379      * @param idIstanza
380      */

381     public void query(String JavaDoc idTipo,String JavaDoc idIstanza){
382           Cve.errLog.debug("");
383         eseGS=(IEsecutionSentence)getEsecutore();
384         eseGS.inputQuery(idTipo,idIstanza);
385         
386         //((EACesec)refEse).inputQuery(idTipo,idIstanza);
387
}
388     
389     /**
390      * Gestisce l'abilitazione o disabiltazione
391      * @param disab contiene la lista degli id dei bottoni
392      * da disabilitare o abilitare
393      * @param enable se devo disabilitare o abilitare
394      */

395     public void setStateButton(Collection disab, boolean enable){
396           Cve.errLog.debug("");
397         System.out.println(" #O setStateButton flag: " + enable + " elenco pulsanti: " + disab.toString());
398         
399         // prima abilito tutti
400
Vector allButton=new Vector (buttonAlf.values());
401         /*
402         for (int i=0;i<allButton.size();i++){
403             AlfButton ref=(AlfButton)allButton.elementAt(i);
404             ref.setEnabled(true);
405             }
406             */

407         // poi disabilito abilito quelli presenti nella lista
408
Iterator disabIt=disab.iterator();
409         while (disabIt.hasNext()){
410             // prendo id bottone
411
Object JavaDoc idButton=disabIt.next();
412             // prendo il ref al button identificato dall'id
413
String JavaDoc idButtonS=idButton.toString();
414             System.out.println(" #O setStateButton: pulsante : " + idButton);
415             AlfButton refButton=(AlfButton)buttonAlf.get(idButtonS);
416             if (enable)
417                 refButton.setEnabled(true);
418             else
419                 refButton.setEnabled(false);
420             }
421             
422         repaint();
423         System.out.println(" #O setStateButton: dopo repaint");
424         }
425     
426     /**
427     * Metodo adapter che lancia il metodo inputTrigger del modello computazionale associato
428     * (esecutore collegato)
429     * Questo metodo viene invocato come conseguenza dell'azione utente "CREA ELEMENTO".
430     * L'esecutore aggiorna di conseguenza il model (drawings).
431     * Il container visuale (ad esempio una canvas) prende il model e si occupa del calcolo delle coordinate degli
432     * elementi
433     * @param idTipo
434     */

435     public void trigger(String JavaDoc idTipo){
436           Cve.errLog.debug("");
437         if (eseGS!=null) {
438             eseGS.inputTrigger(idTipo);
439             }
440         }
441
442
443     /* ################# METODI PROTETTI ####################
444     ####################################################### */

445     
446     /**
447     * Logica: L'esecutore lancia notify per segnalare che il modello
448     * e' cambiato (esecutore collegato)
449     * @param o oggetto osservabile
450     * @param arg evento scaturito
451     */

452     protected void react(Observable o, Object JavaDoc arg){
453           Cve.errLog.debug("");
454         if (arg instanceof SentenceEvent ){
455             SentenceEvent sentEv=(SentenceEvent)arg;
456             String JavaDoc action=sentEv.getActionUser();
457
458             ViewLog.writeInLog(" #O# Sono in react osservatore ("+action+")"+"\n");
459             System.out.println(" #O# Sono in react osservatore ("+action+")");
460
461             
462             if (action.equals("clearSentence")){
463                 eseGS=(IEsecutionSentence)getEsecutore();
464                 canvas.clear();
465                 //canvas.setSentence((Collection)eseGS.getSentence());
466
//removeElementTool()
467
}
468             if (action.equals("clearLanguage")){
469                 eseGS=(IEsecutionSentence)getEsecutore();
470                 canvas.clear();
471                 //canvas.setSentence((Collection)eseGS.getSentence());
472
removeElementTool();
473                 }
474             if (action.equals("trigger")){
475                 eseGS=(IEsecutionSentence)getEsecutore();
476                 Vector sentence=new Vector((Collection)eseGS.getSentence());
477                 System.out.println("dentro react trigger -->"+sentence.size());
478                 //canvas.setSentence((Collection)eseGS.getSentence());
479
canvas.computeCoordinate(sentence);
480                 }
481             if (action.equals("selected")){
482                 eseGS=(IEsecutionSentence)getEsecutore();
483                 String JavaDoc stateError=eseGS.getStateError();
484                 if (stateError.equals("")){
485                    Vector sentence=new Vector((Collection)eseGS.getSentence());
486                    //canvas.setSentence((Collection)eseGS.getSentence());
487
canvas.setSentence(sentence);
488                 }else{
489                    //Apertura Messaggio di Avviso Errrore Selezione
490
openStateError(stateError);
491                 }
492                 }
493             if (action.equals("query")){
494                 eseGS=(IEsecutionSentence)getEsecutore();
495                 IResource item=eseGS.getQueryItem();
496                 //Apertura Maschera di Visualizzazione Query
497
viewQuery(item);
498                 
499                 
500                 }
501             if (action.equals("language")){
502                 eseGS=(IEsecutionSentence)getEsecutore();
503                 Map rap=eseGS.getRappresentations();
504                 Collection rappre=rap.values();
505                 setAlfabet(rappre);
506                 tbar.repaint();
507                 }
508             if (action.equals("deselectButton")){
509                 eseGS=(IEsecutionSentence)getEsecutore();
510                 //Map rap=eseGS.getRappresentations();
511
//Collection rappre=rap.values();
512
Collection buttonS=eseGS.getDisableButton();
513                 setStateButton(buttonS,false);
514                 tbar.repaint();
515                 }
516             if (action.equals("selectButton")){
517                 eseGS=(IEsecutionSentence)getEsecutore();
518                 //Map rap=eseGS.getRappresentations();
519
//Collection rappre=rap.values();
520
//prendo gli id dei bottoni che devono essere selezionati
521
Collection buttonS=eseGS.getEnableButton();
522                 setStateButton(buttonS,true);
523                 tbar.repaint();
524                 }
525             repaintAll();
526             }
527         }
528     
529     /* ############# METODI PRIVATI ##################
530     ################################################# */

531     private void repaint(){
532         Cve.errLog.debug("");
533       canvas.repaint();
534     }
535
536     /**
537     * Apertura Messaggio di Errore
538     */

539     private void openStateError(String JavaDoc state){
540        Cve.errLog.debug("");
541        JOptionPane.showMessageDialog(null,"Utente non abilitato allo stato: " + state,"ATTENZIONE",JOptionPane.WARNING_MESSAGE);
542     }
543
544     /**
545     * Viene aggiunto alla toolbar un bottone corrispondente ad un elemento
546     * dell'alfabeto
547     */

548     private void setButtonAlf(String JavaDoc pathIcon,String JavaDoc id,String JavaDoc tip){
549           Cve.errLog.debug("");
550         ImageIcon icon=new ImageIcon(pathIcon);
551         AlfButton but=new AlfButton (med,icon,id,tip);
552         // memorizzo il bottone la chiave e' l'id, il campo e' il ref al bottone
553
buttonAlf.put(id,but);
554         tbar.addCve(but);
555     }
556     
557     /**
558     * Configurazione iniziale delle action
559     *
560     */

561     private void impostaComandi(){
562           Cve.errLog.debug("");
563         getLinguaggio.setEnabled(true);
564         cancLinguaggio.setEnabled(false);
565         cancSentenza.setEnabled(false);
566         //da implementare
567
cambiaLingua.setEnabled(false);
568     }
569     
570     /**
571     * Viene lanciata da setButtonAlf che crea i bottoni corrispondenti
572     * agli elementi dell'alfabeto
573     * @param: collezione delle istanze Representation
574     *
575     */

576     private void setAlfabet(Collection rappre) {
577         // prendo tutte le istanze della classe Rappresentation
578
Cve.errLog.debug("");
579         removeElementTool();
580         if (rappre!=null){
581             String JavaDoc path=ConfigurationRead.getCveRoot()+"/";
582             Iterator itRappre=rappre.iterator();
583             while (itRappre.hasNext()) {
584                 Representation istRap=(Representation)itRappre.next();
585                 setButtonAlf(path+istRap.getAttribute("icon"),istRap.getAttribute("name"),istRap.getAttribute("name"));
586                 }
587             }
588         repaintAll();
589     }
590     
591     private void removeElementTool(){
592           Cve.errLog.debug("");
593         tbar.removeAll();
594         tbar.repaint();
595     }
596
597     /**
598     * Comunica all'esecutore l'apertura del Pannelo di Configurazione
599     */

600     private void openMappingFrame(){
601        Cve.errLog.debug("");
602        if (getMappingFrameOpen()){
603          try{
604             mappingEventFrame.setSelected(true);
605          } catch (Exception JavaDoc e){
606            Cve.errLog.error(e.toString());
607          }
608        }else{
609          
610          //Apertura Editor Regole
611
mappingEventFrame = new interactionHandler.MappingEventActivity("Mapping Event-Activity","/resource/INTERACTION.GIF");
612        
613          //Impostazioni Frame
614
mappingEventFrame.setOAC(this);
615          mappingEventFrame.init();
616        
617          //Visualizzazione
618
JDesktopPane desktop;
619          desktop =Cve.getDesktop();
620          desktop.add(mappingEventFrame);
621
622          try{
623             mappingEventFrame.setSelected(true);
624          } catch (Exception JavaDoc e){
625               Cve.errLog.error(e.toString());
626          }
627          
628          setMappingFrameOpen(true);
629        }
630      }
631
632     /**
633     * Apertura Maschera Visualizzazione Query Element
634     *
635     * @param item Risorsa Wippog in Query
636     */

637     private void viewQuery(IResource item){
638
639        Cve.errLog.debug("");
640        if (getQueryElementOpen()){
641          try{
642             queryFrame.setSelected(true);
643          } catch (Exception JavaDoc e){
644               Cve.errLog.error(e.toString());
645          }
646        }else{
647          //Apertura Maschera Visualizzazione Informazioni
648
queryFrame = new QueryFrame("Query Item","/resource/QueryView.GIF");
649          setQueryElementOpen(true);
650      
651          //Impostazioni Frame
652
queryFrame.setOAC(this);
653          queryFrame.init(item);
654                  
655          //Visualizzazione
656
JDesktopPane desktop;
657          desktop =Cve.getDesktop();
658          desktop.add(queryFrame);
659          try{
660             queryFrame.setSelected(true);
661          } catch (Exception JavaDoc e){
662               Cve.errLog.error(e.toString());
663          }
664        }
665     }
666  }
Popular Tags